Claude Code
Делегирование задач по коду в Claude Code CLI (фичи, PR).
Метаданные навыка
| Источник | Встроенный (установлен по умолчанию) |
| Путь | skills/autonomous-ai-agents/claude-code |
| Версия | 2.2.0 |
| Автор | Hermes Agent + Teknium |
| Лицензия | MIT |
| Платформы | linux, macos, windows |
| Теги | Coding-Agent, Claude, Anthropic, Code-Review, Refactoring, PTY, Automation |
| Связанные навыки | codex, hermes-agent, opencode |
Справочник: полный SKILL.md
Ниже приведено полное определение навыка, которое Hermes загружает при его активации. Именно это агент видит в качестве инструкций, когда навык включён.
Claude Code — Руководство по оркестрации в Hermes
Делегируй задачи по коду Claude Code — автономному CLI-агенту для разработки от Anthropic — через терминал Hermes. Claude Code v2.x умеет читать файлы, писать код, выполнять команды оболочки, запускать субагентов и управлять git-рабочими процессами без участия человека.
Требования
- Установка:
npm install -g @anthropic-ai/claude-code - Авторизация: запусти
claudeодин раз для входа (OAuth через браузер для Pro/Max или задайANTHROPIC_API_KEY) - Консольная авторизация:
claude auth login --consoleдля биллинга по API-ключу - SSO-авторизация:
claude auth login --ssoдля Enterprise - Проверка статуса:
claude auth status(JSON) илиclaude auth status --text(в удобочитаемом виде) - Проверка установки:
claude doctor— проверяет автообновление и состояние установки - Проверка версии:
claude --version(требуется v2.x+) - Обновление:
claude updateилиclaude upgrade
Два режима оркестрации
Hermes взаимодействует с Claude Code двумя принципиально разными способами. Выбирай исходя из задачи.
Режим 1: Print Mode (-p) — неинтерактивный (ПРЕДПОЧТИТЕЛЬНЫЙ для большинства задач)
Print mode выполняет одну задачу, возвращает результат и завершает работу. PTY не нужен. Никаких интерактивных подтверждений. Это самый чистый способ интеграции.
terminal(command="claude -p 'Add error handling to all API calls in src/' --allowedTools 'Read,Edit' --max-turns 10", workdir="/path/to/project", timeout=120)
Когда использовать print mode:
- Разовые задачи (исправить баг, добавить фичу, провести рефакторинг)
- Автоматизация CI/CD и скриптинг
- Извлечение структурированных данных с
--json-schema - Обработка ввода через пайп (
cat file | claude -p "analyze this") - Любая задача, где не нужен многоходовой диалог
Print mode пропускает ВСЕ интерактивные диалоги — никакого подтверждения доверия к рабочей директории, никаких запросов разрешений. Идеальный вариант для автоматизации.
Режим 2: Интерактивный PTY через tmux — многоходовые сессии
Интерактивный режим даёт полноценный REPL, где можно отправлять последующие промпты, использовать слэш-команды и следить за работой Claude в реальном времени. Требует оркестрации через tmux.
# Запускаем tmux-сессию
terminal(command="tmux new-session -d -s claude-work -x 140 -y 40")
# Запускаем Claude Code внутри неё
terminal(command="tmux send-keys -t claude-work 'cd /path/to/project && claude' Enter")
# Ждём запуска и отправляем задачу
# (около 3–5 секунд на загрузку экрана приветствия)
terminal(command="sleep 5 && tmux send-keys -t claude-work 'Refactor the auth module to use JWT tokens' Enter")
# Следим за прогрессом, захватывая панель
terminal(command="sleep 15 && tmux capture-pane -t claude-work -p -S -50")
# Отправляем следующую задачу
terminal(command="tmux send-keys -t claude-work 'Now add unit tests for the new JWT code' Enter")
# Выходим по завершении
terminal(command="tmux send-keys -t claude-work '/exit' Enter")
Когда использовать интерактивный режим:
- Итеративная работа в несколько шагов (рефакторинг → ревью → фикс → тесты)
- Задачи, требующие решений от человека
- Исследовательские сессии разработки
- Когда нужны слэш-команды Claude (
/compact,/review,/model)
Обработка PTY-диалогов (КРИТИЧНО для интерактивного режима)
При первом запуске Claude Code показывает до двух диалогов подтверждения. Их НЕОБХОДИМО обрабатывать через tmux send-keys.
Диалог 1: Доверие к рабочей директории (первый заход в папку)
❯ 1. Yes, I trust this folder ← DEFAULT (just press Enter)
2. No, exit
Обработка: tmux send-keys -t <session> Enter — дефолтный выбор правильный.
Диалог 2: Предупреждение об обходе разрешений (только с —dangerously-skip-permissions)
❯ 1. No, exit ← DEFAULT (WRONG choice!)
2. Yes, I accept
Обработка: нужно сначала нажать Down, затем Enter:
tmux send-keys -t <session> Down && sleep 0.3 && tmux send-keys -t <session> Enter
Надёжный паттерн обработки диалогов
# Запускаем с обходом разрешений
terminal(command="tmux send-keys -t claude-work 'claude --dangerously-skip-permissions \"your task\"' Enter")
# Обрабатываем диалог доверия (Enter = дефолтное "Yes")
terminal(command="sleep 4 && tmux send-keys -t claude-work Enter")
# Обрабатываем диалог разрешений (Down, затем Enter = "Yes, I accept")
terminal(command="sleep 3 && tmux send-keys -t claude-work Down && sleep 0.3 && tmux send-keys -t claude-work Enter")
# Ждём, пока Claude работает
terminal(command="sleep 15 && tmux capture-pane -t claude-work -p -S -60")
Примечание: после первого подтверждения доверия к директории диалог больше не появляется. Диалог разрешений будет возникать каждый раз при использовании --dangerously-skip-permissions.
Субкоманды CLI
| Субкоманда | Назначение |
|---|---|
claude | Запустить интерактивный REPL |
claude "query" | Запустить REPL с начальным промптом |
claude -p "query" | Print mode (неинтерактивный, завершается после выполнения) |
cat file | claude -p "query" | Передать содержимое через stdin как контекст |
claude -c | Продолжить последний разговор в текущей директории |
claude -r "id" | Возобновить конкретную сессию по ID или имени |
claude auth login | Войти (добавь --console для биллинга по API, --sso для Enterprise) |
claude auth status | Проверить статус входа (возвращает JSON; --text — в удобочитаемом виде) |
claude mcp add <name> -- <cmd> | Добавить MCP-сервер |
claude mcp list | Список настроенных MCP-серверов |
claude mcp remove <name> | Удалить MCP-сервер |
claude agents | Список настроенных агентов |
claude doctor | Проверить установку и автообновление |
claude update / claude upgrade | Обновить Claude Code до последней версии |
claude remote-control | Запустить сервер для управления Claude из claude.ai или мобильного приложения |
claude install [target] | Установить нативную сборку (stable, latest или конкретную версию) |
claude setup-token | Настроить долгоживущий токен авторизации (требуется подписка) |
claude plugin / claude plugins | Управлять плагинами Claude Code |
claude auto-mode | Проверить конфигурацию классификатора auto mode |
Print Mode: подробно
Структурированный JSON-вывод
terminal(command="claude -p 'Analyze auth.py for security issues' --output-format json --max-turns 5", workdir="/project", timeout=120)
Возвращает JSON-объект с полями:
{
"type": "result",
"subtype": "success",
"result": "The analysis text...",
"session_id": "75e2167f-...",
"num_turns": 3,
"total_cost_usd": 0.0787,
"duration_ms": 10276,
"stop_reason": "end_turn",
"terminal_reason": "completed",
"usage": { "input_tokens": 5, "output_tokens": 603, ... },
"modelUsage": { "claude-sonnet-4-6": { "costUSD": 0.078, "contextWindow": 200000 } }
}
Ключевые поля: session_id — для возобновления сессии; num_turns — количество итераций цикла агента; total_cost_usd — затраты; subtype — результат (success, error_max_turns, error_budget).
Потоковый JSON-вывод
Для стриминга токенов в реальном времени используй stream-json с --verbose:
terminal(command="claude -p 'Write a summary' --output-format stream-json --verbose --include-partial-messages", timeout=60)
Возвращает JSON-события, разделённые переводами строк. Фильтруй через jq для живого текста:
claude -p "Explain X" --output-format stream-json --verbose --include-partial-messages | \
jq -rj 'select(.type == "stream_event" and .event.delta.type? == "text_delta") | .event.delta.text'
События потока включают system/api_retry с полями attempt, max_retries и error (например, rate_limit, billing_error).
Двунаправленный стриминг
Для стриминга ввода и вывода одновременно:
claude -p "task" --input-format stream-json --output-format stream-json --replay-user-messages
--replay-user-messages переотправляет сообщения пользователя в stdout для подтверждения.
Ввод через пайп
# Передать файл для анализа
terminal(command="cat src/auth.py | claude -p 'Review this code for bugs' --max-turns 1", timeout=60)
# Передать несколько файлов
terminal(command="cat src/*.py | claude -p 'Find all TODO comments' --max-turns 1", timeout=60)
# Передать вывод команды
terminal(command="git diff HEAD~3 | claude -p 'Summarize these changes' --max-turns 1", timeout=60)
JSON Schema для структурированного извлечения
terminal(command="claude -p 'List all functions in src/' --output-format json --json-schema '{\"type\":\"object\",\"properties\":{\"functions\":{\"type\":\"array\",\"items\":{\"type\":\"string\"}}},\"required\":[\"functions\"]}' --max-turns 5", workdir="/project", timeout=90)
Результат возвращается в поле structured_output JSON-ответа. Claude проверяет вывод по схеме перед возвратом.
Продолжение сессий
# Начать задачу
terminal(command="claude -p 'Start refactoring the database layer' --output-format json --max-turns 10 > /tmp/session.json", workdir="/project", timeout=180)
# Возобновить по session ID
terminal(command="claude -p 'Continue and add connection pooling' --resume $(cat /tmp/session.json | python3 -c 'import json,sys; print(json.load(sys.stdin)[\"session_id\"])') --max-turns 5", workdir="/project", timeout=120)
# Или возобновить последнюю сессию в той же директории
terminal(command="claude -p 'What did you do last time?' --continue --max-turns 1", workdir="/project", timeout=30)
# Форкнуть сессию (новый ID, история сохраняется)
terminal(command="claude -p 'Try a different approach' --resume <id> --fork-session --max-turns 10", workdir="/project", timeout=120)
Bare Mode для CI и скриптов
terminal(command="claude --bare -p 'Run all tests and report failures' --allowedTools 'Read,Bash' --max-turns 10", workdir="/project", timeout=180)
--bare пропускает хуки, плагины, обнаружение MCP и загрузку CLAUDE.md. Самый быстрый старт. Требует ANTHROPIC_API_KEY (OAuth пропускается).
Для выборочной загрузки контекста в bare mode:
| Что загрузить | Флаг |
|---|---|
| Дополнения к системному промпту | --append-system-prompt "text" или --append-system-prompt-file path |
| Настройки | --settings <file-or-json> |
| MCP-серверы | --mcp-config <file-or-json> |
| Кастомные агенты | --agents '<json>' |
Резервная модель при перегрузке
terminal(command="claude -p 'task' --fallback-model haiku --max-turns 5", timeout=90)
Автоматически переключается на указанную модель, если основная перегружена (только в print mode).
Полный справочник флагов CLI
Сессия и окружение
| Флаг | Эффект |
|---|---|
-p, --print | Неинтерактивный режим одной задачи (завершается после выполнения) |
-c, --continue | Возобновить последний разговор в текущей директории |
-r, --resume <id> | Возобновить конкретную сессию по ID или имени (интерактивный выбор без ID) |
--fork-session | При возобновлении создать новый session ID вместо повторного использования исходного |
--session-id <uuid> | Использовать конкретный UUID для разговора |
--no-session-persistence | Не сохранять сессию на диск (только в print mode) |
--add-dir <paths...> | Предоставить Claude доступ к дополнительным рабочим директориям |
-w, --worktree [name] | Запустить в изолированном git worktree по пути .claude/worktrees/<name> |
--tmux | Создать tmux-сессию для worktree (требует --worktree) |
--ide | Автоматически подключиться к IDE при запуске |
--chrome / --no-chrome | Включить/отключить интеграцию с браузером Chrome для веб-тестирования |
--from-pr [number] | Возобновить сессию, привязанную к конкретному PR на GitHub |
--file <specs...> | Файловые ресурсы для загрузки при старте (формат: file_id:relative_path) |
Модель и производительность
| Флаг | Эффект |
|---|---|
--model <alias> | Выбор модели: sonnet, opus, haiku или полное имя вроде claude-sonnet-4-6 |
--effort <level> | Глубина рассуждений: low, medium, high, max, auto |
--max-turns <n> | Ограничить число итераций цикла агента (только в print mode; предотвращает бесконечный цикл) |
--max-budget-usd <n> | Ограничить расходы на API в долларах (только в print mode) |
--fallback-model <model> | Автопереключение при перегрузке основной модели (только в print mode) |
--betas <betas...> | Beta-заголовки в API-запросах (только для пользователей с API-ключом) |
Разрешения и безопасность
| Флаг | Эффект |
|---|---|
--dangerously-skip-permissions | Автоматически одобрять ВСЕ действия инструментов (запись файлов, bash, сеть и т.д.) |
--allow-dangerously-skip-permissions | Включить обход разрешений как опцию, но не активировать по умолчанию |
--permission-mode <mode> | default, acceptEdits, plan, auto, dontAsk, bypassPermissions |
--allowedTools <tools...> | Список разрешённых инструментов (через запятую или пробел) |
--disallowedTools <tools...> | Список запрещённых инструментов |
--tools <tools...> | Переопределить встроенный набор инструментов ("" = никаких, "default" = все, или имена инструментов) |
Формат вывода и ввода
| Флаг | Эффект |
|---|---|
--output-format <fmt> | text (по умолчанию), json (один объект результата), stream-json (построчный JSON) |
--input-format <fmt> | text (по умолчанию) или stream-json (потоковый ввод в реальном времени) |
--json-schema <schema> | Принудительный структурированный JSON-вывод по схеме |
--verbose | Полный вывод по каждому ходу |
--include-partial-messages | Включать частичные чанки по мере поступления (stream-json + print) |
--replay-user-messages | Переотправлять сообщения пользователя в stdout (двунаправленный stream-json) |
Системный промпт и контекст
| Флаг | Эффект |
|---|---|
--append-system-prompt <text> | Добавить к стандартному системному промпту (встроенные возможности сохраняются) |
--append-system-prompt-file <path> | Добавить содержимое файла к стандартному системному промпту |
--system-prompt <text> | Заменить системный промпт целиком (обычно лучше использовать —append) |
--system-prompt-file <path> | Заменить системный промпт содержимым файла |
--bare | Пропустить хуки, плагины, обнаружение MCP, CLAUDE.md и OAuth (быстрейший старт) |
--agents '<json>' | Динамически задать кастомных субагентов в JSON |
--mcp-config <path> | Загрузить MCP-серверы из JSON-файла (можно указывать несколько раз) |
--strict-mcp-config | Использовать только MCP-серверы из --mcp-config, игнорируя все остальные конфиги |
--settings <file-or-json> | Загрузить дополнительные настройки из JSON-файла или inline JSON |
--setting-sources <sources> | Источники настроек через запятую: user, project, local |
--plugin-dir <paths...> | Загрузить плагины из директорий только для этой сессии |
--disable-slash-commands | Отключить все навыки и слэш-команды |
Отладка
| Флаг | Эффект |
|---|---|
-d, --debug [filter] | Включить отладочное логирование с опциональным фильтром по категориям (например, "api,hooks", "!1p,!file") |
--debug-file <path> | Писать отладочные логи в файл (неявно включает режим отладки) |
Командные агенты
| Флаг | Эффект |
|---|---|
--teammate-mode <mode> | Отображение командных агентов: auto, in-process или tmux |
--brief | Включить инструмент SendUserMessage для связи агента с пользователем |
Синтаксис имён инструментов для —allowedTools / —disallowedTools
Read # All file reading
Edit # File editing (existing files)
Write # File creation (new files)
Bash # All shell commands
Bash(git *) # Only git commands
Bash(git commit *) # Only git commit commands
Bash(npm run lint:*) # Pattern matching with wildcards
WebSearch # Web search capability
WebFetch # Web page fetching
mcp__<server>__<tool> # Specific MCP tool
Настройки и конфигурация
Иерархия настроек (от высшего приоритета к низшему)
- Флаги CLI — перекрывают всё
- Локальный проект:
.claude/settings.local.json(личный, в .gitignore) - Проект:
.claude/settings.json(общий, в git) - Пользователь:
~/.claude/settings.json(глобальный)
Разрешения в настройках
{
"permissions": {
"allow": ["Bash(npm run lint:*)", "WebSearch", "Read"],
"ask": ["Write(*.ts)", "Bash(git push*)"],
"deny": ["Read(.env)", "Bash(rm -rf *)"]
}
}
Иерархия файлов памяти (CLAUDE.md)
- Глобальный:
~/.claude/CLAUDE.md— применяется ко всем проектам - Проект:
./CLAUDE.md— контекст конкретного проекта (в git) - Локальный:
.claude/CLAUDE.local.md— личные переопределения для проекта (в .gitignore)
Используй префикс # в интерактивном режиме для быстрого добавления в память: # Always use 2-space indentation.
Интерактивная сессия: слэш-команды
Сессия и контекст
| Команда | Назначение |
|---|---|
/help | Показать все команды (включая кастомные и MCP-команды) |
/compact [focus] | Сжать контекст для экономии токенов; CLAUDE.md сохраняется после сжатия. Пример: /compact focus on auth logic |
/clear | Очистить историю разговора для чистого старта |
/context | Визуализировать использование контекста в виде цветной сетки с советами по оптимизации |
/cost | Показать использование токенов с разбивкой по моделям и cache-хитам |
/resume | Переключиться или возобновить другую сессию |
/rewind | Откатиться к предыдущей контрольной точке в разговоре или коде |
/btw <question> | Задать побочный вопрос без увеличения стоимости контекста |
/status | Показать версию, подключение и информацию о сессии |
/todos | Список отслеживаемых задач из разговора |
/exit или Ctrl+D | Завершить сессию |
Разработка и ревью
| Команда | Назначение |
|---|---|
/review | Запросить код-ревью текущих изменений |
/security-review | Провести анализ безопасности текущих изменений |
/plan [description] | Войти в режим планирования с автозапуском |
/loop [interval] | Запланировать повторяющиеся задачи внутри сессии |
/batch | Автоматически создать worktrees для масштабных параллельных изменений (5–30 worktrees) |
Конфигурация и инструменты
| Команда | Назначение |
|---|---|
/model [model] | Сменить модель в середине сессии (стрелками регулируй уровень усилий) |
/effort [level] | Задать глубину рассуждений: low, medium, high, max или auto |
/init | Создать файл CLAUDE.md для памяти проекта |
/memory | Открыть CLAUDE.md для редактирования |
/config | Открыть интерактивную конфигурацию настроек |
/permissions | Просмотреть и обновить разрешения инструментов |
/agents | Управлять специализированными субагентами |
/mcp | Интерактивный интерфейс для управления MCP-серверами |
/add-dir | Добавить дополнительные рабочие директории (полезно для монорепозиториев) |
/usage | Показать лимиты плана и статус rate limit |
/voice | Включить голосовой режим с функцией push-to-talk (20 языков; удерживай Space для записи, отпусти для отправки) |
/release-notes | Интерактивный выбор заметок о выпусках версий |
Кастомные слэш-команды
Создай .claude/commands/<name>.md (общий для проекта) или ~/.claude/commands/<name>.md (личный):
# .claude/commands/deploy.md
Run the deploy pipeline:
1. Run all tests
2. Build the Docker image
3. Push to registry
4. Update the $ARGUMENTS environment (default: staging)
Использование: /deploy production — $ARGUMENTS заменяется вводом пользователя.
Навыки (вызов на естественном языке)
В отличие от слэш-команд (вызываются вручную), навыки в .claude/skills/ — это markdown-инструкции, которые Claude активирует автоматически через естественный язык, когда задача подходит:
# .claude/skills/database-migration.md
When asked to create or modify database migrations:
1. Use Alembic for migration generation
2. Always create a rollback function
3. Test migrations against a local database copy
Интерактивная сессия: сочетания клавиш
Общее управление
| Клавиша | Действие |
|---|---|
Ctrl+C | Отменить текущий ввод или генерацию |
Ctrl+D | Завершить сессию |
Ctrl+R | Обратный поиск по истории команд |
Ctrl+B | Перевести текущую задачу в фоновый режим |
Ctrl+V | Вставить изображение в разговор |
Ctrl+O | Режим транскрипта — смотреть процесс размышления Claude |
Ctrl+G или Ctrl+X Ctrl+E | Открыть промпт во внешнем редакторе |
Esc Esc | Откатить разговор или состояние кода / создать резюме |
Переключение режимов
| Клавиша | Действие |
|---|---|
Shift+Tab | Циклически переключать режимы разрешений (Normal → Auto-Accept → Plan) |
Alt+P | Сменить модель |
Alt+T | Переключить режим размышления |
Alt+O | Переключить Fast Mode |
Многострочный ввод
| Клавиша | Действие |
|---|---|
\ + Enter | Быстрый перенос строки |
Shift+Enter | Перенос строки (альтернатива) |
Ctrl+J | Перенос строки (альтернатива) |
Префиксы ввода
| Префикс | Действие |
|---|---|
! | Выполнить bash напрямую, минуя AI (например, !npm test). ! без аргументов переключает в режим оболочки. |
@ | Ссылаться на файлы и директории с автодополнением (например, @./src/api/) |
# | Быстро добавить в память CLAUDE.md (например, # Use 2-space indentation) |
/ | Слэш-команды |
Совет: “ultrathink”
Используй слово “ultrathink” в промпте для максимальной глубины рассуждений на конкретном ходу. Запускает глубочайший режим размышления вне зависимости от текущей настройки /effort.
Паттерны ревью PR
Быстрое ревью (Print Mode)
terminal(command="cd /path/to/repo && git diff main...feature-branch | claude -p 'Review this diff for bugs, security issues, and style problems. Be thorough.' --max-turns 1", timeout=60)
Глубокое ревью (интерактивный режим + Worktree)
terminal(command="tmux new-session -d -s review -x 140 -y 40")
terminal(command="tmux send-keys -t review 'cd /path/to/repo && claude -w pr-review' Enter")
terminal(command="sleep 5 && tmux send-keys -t review Enter") # Trust dialog
terminal(command="sleep 2 && tmux send-keys -t review 'Review all changes vs main. Check for bugs, security issues, race conditions, and missing tests.' Enter")
terminal(command="sleep 30 && tmux capture-pane -t review -p -S -60")
Ревью PR по номеру
terminal(command="claude -p 'Review this PR thoroughly' --from-pr 42 --max-turns 10", workdir="/path/to/repo", timeout=120)
Claude Worktree с tmux
terminal(command="claude -w feature-x --tmux", workdir="/path/to/repo")
Создаёт изолированный git worktree по пути .claude/worktrees/feature-x и tmux-сессию для него. Использует нативные панели iTerm2, если доступны; добавь --tmux=classic для классического tmux.
Параллельные экземпляры Claude
Запускай несколько независимых задач Claude одновременно:
# Задача 1: фикс бэкенда
terminal(command="tmux new-session -d -s task1 -x 140 -y 40 && tmux send-keys -t task1 'cd ~/project && claude -p \"Fix the auth bug in src/auth.py\" --allowedTools \"Read,Edit\" --max-turns 10' Enter")
# Задача 2: написать тесты
terminal(command="tmux new-session -d -s task2 -x 140 -y 40 && tmux send-keys -t task2 'cd ~/project && claude -p \"Write integration tests for the API endpoints\" --allowedTools \"Read,Write,Bash\" --max-turns 15' Enter")
# Задача 3: обновить документацию
terminal(command="tmux new-session -d -s task3 -x 140 -y 40 && tmux send-keys -t task3 'cd ~/project && claude -p \"Update README.md with the new API endpoints\" --allowedTools \"Read,Edit\" --max-turns 5' Enter")
# Мониторинг всех сессий
terminal(command="sleep 30 && for s in task1 task2 task3; do echo '=== '$s' ==='; tmux capture-pane -t $s -p -S -5 2>/dev/null; done")
CLAUDE.md — файл контекста проекта
Claude Code автоматически загружает CLAUDE.md из корня проекта. Используй его для сохранения контекста:
# Project: My API
## Architecture
- FastAPI backend with SQLAlchemy ORM
- PostgreSQL database, Redis cache
- pytest for testing with 90% coverage target
## Key Commands
- `make test` — run full test suite
- `make lint` — ruff + mypy
- `make dev` — start dev server on :8000
## Code Standards
- Type hints on all public functions
- Docstrings in Google style
- 2-space indentation for YAML, 4-space for Python
- No wildcard imports
Будь конкретным. Вместо «Write good code» пиши «Use 2-space indentation for JS» или «Name test files with .test.ts suffix». Чёткие инструкции экономят циклы на правках.
Директория правил (модульный CLAUDE.md)
Для проектов с большим числом правил используй директорию правил вместо одного большого CLAUDE.md:
- Правила проекта:
.claude/rules/*.md— общие для команды, в git - Правила пользователя:
~/.claude/rules/*.md— личные, глобальные
Каждый .md-файл в директории правил загружается как дополнительный контекст. Это чище, чем пихать всё в один CLAUDE.md.
Автопамять
Claude автоматически сохраняет накопленный контекст проекта в ~/.claude/projects/<project>/memory/.
- Лимит: 25 КБ или 200 строк на проект
- Это отдельно от CLAUDE.md — собственные заметки Claude о проекте, накопленные за сессии
Кастомные субагенты
Определяй специализированных агентов в .claude/agents/ (проект), ~/.claude/agents/ (личный) или через флаг --agents CLI (сессия):
Приоритет расположения агентов
.claude/agents/— уровень проекта, общий для команды- Флаг
--agentsCLI — только для текущей сессии, динамический ~/.claude/agents/— уровень пользователя, личный
Создание агента
# .claude/agents/security-reviewer.md
---
name: security-reviewer
description: Security-focused code review
model: opus
tools: [Read, Bash]
---
You are a senior security engineer. Review code for:
- Injection vulnerabilities (SQL, XSS, command injection)
- Authentication/authorization flaws
- Secrets in code
- Unsafe deserialization
Вызов: @security-reviewer review the auth module
Динамические агенты через CLI
terminal(command="claude --agents '{\"reviewer\": {\"description\": \"Reviews code\", \"prompt\": \"You are a code reviewer focused on performance\"}}' -p 'Use @reviewer to check auth.py'", timeout=120)
Claude умеет оркестрировать несколько агентов: «Use @db-expert to optimize queries, then @security to audit the changes.»
Хуки — автоматизация по событиям
Настраивается в .claude/settings.json (проект) или ~/.claude/settings.json (глобально):
{
"hooks": {
"PostToolUse": [{
"matcher": "Write(*.py)",
"hooks": [{"type": "command", "command": "ruff check --fix $CLAUDE_FILE_PATHS"}]
}],
"PreToolUse": [{
"matcher": "Bash",
"hooks": [{"type": "command", "command": "if echo \"$CLAUDE_TOOL_INPUT\" | grep -q 'rm -rf'; then echo 'Blocked!' && exit 2; fi"}]
}],
"Stop": [{
"hooks": [{"type": "command", "command": "echo 'Claude finished a response' >> /tmp/claude-activity.log"}]
}]
}
}
Все 8 типов хуков
| Хук | Когда срабатывает | Типичное применение |
|---|---|---|
UserPromptSubmit | До обработки промпта пользователя | Валидация ввода, логирование |
PreToolUse | До выполнения инструмента | Шлюзы безопасности, блокировка опасных команд (exit 2 = блок) |
PostToolUse | После завершения инструмента | Автоформатирование кода, запуск линтеров |
Notification | При запросах разрешений или ожидании ввода | Десктопные уведомления, оповещения |
Stop | Когда Claude заканчивает ответ | Логирование завершения, обновление статуса |
SubagentStop | Когда субагент завершает работу | Оркестрация агентов |
PreCompact | До очистки памяти контекста | Резервное копирование транскриптов сессии |
SessionStart | При начале сессии | Загрузка контекста разработки (например, git status) |
Переменные окружения хуков
| Переменная | Содержимое |
|---|---|
CLAUDE_PROJECT_DIR | Путь к текущему проекту |
CLAUDE_FILE_PATHS | Изменяемые файлы |
CLAUDE_TOOL_INPUT | Параметры инструмента в JSON |
Примеры хуков безопасности
{
"PreToolUse": [{
"matcher": "Bash",
"hooks": [{"type": "command", "command": "if echo \"$CLAUDE_TOOL_INPUT\" | grep -qE 'rm -rf|git push.*--force|:(){ :|:& };:'; then echo 'Dangerous command blocked!' && exit 2; fi"}]
}]
}
Интеграция с MCP
Подключай внешние серверы инструментов для баз данных, API и сервисов:
# Интеграция с GitHub
terminal(command="claude mcp add -s user github -- npx @modelcontextprotocol/server-github", timeout=30)
# Запросы к PostgreSQL
terminal(command="claude mcp add -s local postgres -- npx @anthropic-ai/server-postgres --connection-string postgresql://localhost/mydb", timeout=30)
# Puppeteer для веб-тестирования
terminal(command="claude mcp add puppeteer -- npx @anthropic-ai/server-puppeteer", timeout=30)
Области видимости MCP
| Флаг | Область | Хранение |
|---|---|---|
-s user | Глобально (все проекты) | ~/.claude.json |
-s local | Этот проект (личный) | .claude/settings.local.json (в .gitignore) |
-s project | Этот проект (общий для команды) | .claude/settings.json (в git) |
MCP в Print/CI Mode
terminal(command="claude --bare -p 'Query database' --mcp-config mcp-servers.json --strict-mcp-config", timeout=60)
--strict-mcp-config игнорирует все MCP-серверы, кроме указанных в --mcp-config.
Ссылки на ресурсы MCP в чате: @github:issue://123
Лимиты и настройка MCP
- Описания инструментов: ограничение 2 КБ на сервер для описаний инструментов и инструкций сервера
- Размер результата: по умолчанию ограничен; аннотация
maxResultSizeCharsпозволяет расширить до 500 тыс. символов для больших выводов - Токены вывода:
export MAX_MCP_OUTPUT_TOKENS=50000— ограничивает вывод MCP-серверов, предотвращая переполнение контекста - Транспорты:
stdio(локальный процесс),http(удалённый),sse(server-sent events)
Мониторинг интерактивных сессий
Чтение статуса TUI
# Периодический захват для проверки — Claude работает или ждёт ввода
terminal(command="tmux capture-pane -t dev -p -S -10")
На что обращать внимание:
❯внизу — ожидание твоего ввода (Claude закончил или задаёт вопрос)- строки
●— Claude активно использует инструменты (читает, пишет, выполняет команды) ⏵⏵ bypass permissions on— строка статуса показывает режим разрешений◐ medium · /effort— текущий уровень усилий в строке статусаctrl+o to expand— вывод инструмента был обрезан (можно развернуть интерактивно)
Здоровье контекстного окна
Используй /context в интерактивном режиме для просмотра цветной сетки использования контекста. Ключевые пороги:
- < 70% — нормальная работа, полная точность
- 70–85% — точность начинает снижаться, рекомендуется
/compact - > 85% — риск галлюцинаций резко возрастает, используй
/compactили/clear
Переменные окружения
| Переменная | Эффект |
|---|---|
ANTHROPIC_API_KEY | API-ключ для авторизации (альтернатива OAuth) |
CLAUDE_CODE_EFFORT_LEVEL | Уровень усилий по умолчанию: low, medium, high, max или auto |
MAX_THINKING_TOKENS | Ограничить токены на размышление (задай 0 для полного отключения) |
MAX_MCP_OUTPUT_TOKENS | Ограничить вывод MCP-серверов (по умолчанию варьируется; задай, например, 50000) |
CLAUDE_CODE_NO_FLICKER=1 | Включить рендеринг alt-screen для устранения мерцания терминала |
CLAUDE_CODE_SUBPROCESS_ENV_SCRUB | Очищать учётные данные из дочерних процессов для безопасности |
Советы по стоимости и производительности
- Используй
--max-turnsв print mode, чтобы предотвратить зацикливание. Для большинства задач начни с 5–10. - Используй
--max-budget-usdдля ограничения расходов. Минимум — около $0.05 на создание кеша системного промпта. - Используй
--effort lowдля простых задач (быстрее и дешевле).highилиmax— для сложных рассуждений. - Используй
--bareв CI и скриптах, чтобы пропустить поиск плагинов и хуков. - Используй
--allowedTools— ограничивай только нужными инструментами (например,Readдля ревью). - Используй
/compactв интерактивных сессиях при разрастании контекста. - Передавай ввод через пайп вместо того, чтобы просить Claude читать файлы, когда нужен просто анализ известного контента.
- Используй
--model haikuдля простых задач (дешевле) и--model opusдля сложной многошаговой работы. - Используй
--fallback-model haikuв print mode для корректной обработки перегрузки модели. - Начинай новые сессии для разных задач — сессии живут 5 часов; свежий контекст эффективнее.
- Используй
--no-session-persistenceв CI, чтобы не накапливать сохранённые сессии на диске.
Подводные камни
- Интерактивный режим ТРЕБУЕТ tmux — Claude Code полноценное TUI-приложение.
pty=trueв терминале Hermes работает само по себе, но tmux даётcapture-paneдля мониторинга иsend-keysдля ввода, что необходимо для оркестрации. - Диалог
--dangerously-skip-permissionsпо умолчанию выбирает “No, exit” — нужно нажать Down, затем Enter для принятия. Print mode (-p) пропускает его полностью. - Минимум для
--max-budget-usd— около $0.05 — создание кеша системного промпта уже стоит столько. Меньшее значение вызовет ошибку немедленно. --max-turnsработает только в print mode — в интерактивных сессиях игнорируется.- Claude может использовать
pythonвместоpython3— на системах без симлинкаpythonbash-команды упадут при первой попытке, но Claude сам исправит это. - Продолжение сессии требует той же директории —
--continueищет последнюю сессию для текущей рабочей директории. --json-schemaтребует достаточного--max-turns— перед формированием структурированного вывода Claude должен прочитать файлы, а это занимает несколько ходов.- Диалог доверия появляется только один раз на директорию — только при первом заходе, затем кешируется.
- Фоновые tmux-сессии не исчезают сами — по завершении всегда удаляй их через
tmux kill-session -t <name>. - Слэш-команды (например,
/commit) работают только в интерактивном режиме — в режиме-pописывай задачу на естественном языке. --bareпропускает OAuth — требует переменную окруженияANTHROPIC_API_KEYилиapiKeyHelperв настройках.- Деградация контекста реальна — качество вывода ИИ заметно снижается при использовании контекстного окна выше 70%. Следи через
/contextи заблаговременно применяй/compact.
Правила для агентов Hermes
- Предпочитай print mode (
-p) для одиночных задач — чище, нет диалогов, структурированный вывод - Используй tmux для многоходовой интерактивной работы — единственный надёжный способ оркестрировать TUI
- Всегда задавай
workdir— держи Claude в нужной директории проекта - Задавай
--max-turnsв print mode — предотвращает бесконечные циклы и неконтролируемые расходы - Мониторь tmux-сессии — используй
tmux capture-pane -t <session> -p -S -50для проверки прогресса - Следи за приглашением
❯— означает, что Claude ждёт ввода (завершил или задаёт вопрос) - Удаляй tmux-сессии — по завершении работы, чтобы не было утечек ресурсов
- Сообщай результаты пользователю — после завершения кратко изложи, что Claude сделал и что изменилось
- Не убивай медленные сессии — Claude может выполнять многошаговую работу; сначала проверь прогресс
- Используй
--allowedTools— ограничивай возможности тем, что реально нужно для задачи