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

Структурированный 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

Настройки и конфигурация

Иерархия настроек (от высшего приоритета к низшему)

  1. Флаги CLI — перекрывают всё
  2. Локальный проект: .claude/settings.local.json (личный, в .gitignore)
  3. Проект: .claude/settings.json (общий, в git)
  4. Пользователь: ~/.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)

  1. Глобальный: ~/.claude/CLAUDE.md — применяется ко всем проектам
  2. Проект: ./CLAUDE.md — контекст конкретного проекта (в git)
  3. Локальный: .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 (сессия):

Приоритет расположения агентов

  1. .claude/agents/ — уровень проекта, общий для команды
  2. Флаг --agents CLI — только для текущей сессии, динамический
  3. ~/.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_KEYAPI-ключ для авторизации (альтернатива 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Очищать учётные данные из дочерних процессов для безопасности

Советы по стоимости и производительности

  1. Используй --max-turns в print mode, чтобы предотвратить зацикливание. Для большинства задач начни с 5–10.
  2. Используй --max-budget-usd для ограничения расходов. Минимум — около $0.05 на создание кеша системного промпта.
  3. Используй --effort low для простых задач (быстрее и дешевле). high или max — для сложных рассуждений.
  4. Используй --bare в CI и скриптах, чтобы пропустить поиск плагинов и хуков.
  5. Используй --allowedTools — ограничивай только нужными инструментами (например, Read для ревью).
  6. Используй /compact в интерактивных сессиях при разрастании контекста.
  7. Передавай ввод через пайп вместо того, чтобы просить Claude читать файлы, когда нужен просто анализ известного контента.
  8. Используй --model haiku для простых задач (дешевле) и --model opus для сложной многошаговой работы.
  9. Используй --fallback-model haiku в print mode для корректной обработки перегрузки модели.
  10. Начинай новые сессии для разных задач — сессии живут 5 часов; свежий контекст эффективнее.
  11. Используй --no-session-persistence в CI, чтобы не накапливать сохранённые сессии на диске.

Подводные камни

  1. Интерактивный режим ТРЕБУЕТ tmux — Claude Code полноценное TUI-приложение. pty=true в терминале Hermes работает само по себе, но tmux даёт capture-pane для мониторинга и send-keys для ввода, что необходимо для оркестрации.
  2. Диалог --dangerously-skip-permissions по умолчанию выбирает “No, exit” — нужно нажать Down, затем Enter для принятия. Print mode (-p) пропускает его полностью.
  3. Минимум для --max-budget-usd — около $0.05 — создание кеша системного промпта уже стоит столько. Меньшее значение вызовет ошибку немедленно.
  4. --max-turns работает только в print mode — в интерактивных сессиях игнорируется.
  5. Claude может использовать python вместо python3 — на системах без симлинка python bash-команды упадут при первой попытке, но Claude сам исправит это.
  6. Продолжение сессии требует той же директории--continue ищет последнюю сессию для текущей рабочей директории.
  7. --json-schema требует достаточного --max-turns — перед формированием структурированного вывода Claude должен прочитать файлы, а это занимает несколько ходов.
  8. Диалог доверия появляется только один раз на директорию — только при первом заходе, затем кешируется.
  9. Фоновые tmux-сессии не исчезают сами — по завершении всегда удаляй их через tmux kill-session -t <name>.
  10. Слэш-команды (например, /commit) работают только в интерактивном режиме — в режиме -p описывай задачу на естественном языке.
  11. --bare пропускает OAuth — требует переменную окружения ANTHROPIC_API_KEY или apiKeyHelper в настройках.
  12. Деградация контекста реальна — качество вывода ИИ заметно снижается при использовании контекстного окна выше 70%. Следи через /context и заблаговременно применяй /compact.

Правила для агентов Hermes

  1. Предпочитай print mode (-p) для одиночных задач — чище, нет диалогов, структурированный вывод
  2. Используй tmux для многоходовой интерактивной работы — единственный надёжный способ оркестрировать TUI
  3. Всегда задавай workdir — держи Claude в нужной директории проекта
  4. Задавай --max-turns в print mode — предотвращает бесконечные циклы и неконтролируемые расходы
  5. Мониторь tmux-сессии — используй tmux capture-pane -t <session> -p -S -50 для проверки прогресса
  6. Следи за приглашением — означает, что Claude ждёт ввода (завершил или задаёт вопрос)
  7. Удаляй tmux-сессии — по завершении работы, чтобы не было утечек ресурсов
  8. Сообщай результаты пользователю — после завершения кратко изложи, что Claude сделал и что изменилось
  9. Не убивай медленные сессии — Claude может выполнять многошаговую работу; сначала проверь прогресс
  10. Используй --allowedTools — ограничивай возможности тем, что реально нужно для задачи
ESC