О чём урок
Помимо хуков PreToolUse и PostToolUse, рассмотренных в этом курсе, существуют и другие хуки:
- Notification - Запускается, когда Claude Code отправляет уведомление, что происходит, когда Claude требуется разрешение на использование инструмента или после 60 секунд бездействия Claude Code.
- Stop - Запускается, когда Claude Code завершил ответ.
- SubagentStop - Запускается, когда субагент (они отображаются как "Task" в пользовательском интерфейсе) завершил работу.
- PreCompact - Запускается перед операцией компактирования, будь то ручной или автоматической.
- UserPromptSubmit - Запускается, когда пользователь отправляет запрос, до того как Claude его обработает.
- SessionStart - Запускается при начале или возобновлении сессии.
- SessionEnd - Запускается при завершении сессии.
Вот что может сбить с толку:
- Входные данные stdin для ваших команд будут меняться в зависимости от типа выполняемого хука (PreToolUse, PostToolUse, Notification и т.д.)
- Содержащийся в них tool_input будет отличаться в зависимости от вызванного инструмента (в случае хуков PreToolUse и PostToolUse).
Например, вот образец входных данных stdin для хука, где хук — это PostToolUse, который отслеживал использование инструмента TodoWrite. Для справки, это инструмент, который Claude использует для отслеживания задач.
А для сравнения, вот пример входных данных для хука Stop:
Как вы видите, входные данные stdin для вашей команды будут значительно отличаться в зависимости от хука (PreToolUse, PostToolUse, Stop и т.д.) и используемого matcher (в случае PreToolUse и PostToolUse). Это может усложнить написание хуков — вы можете не знать точную структуру входных данных для вашей команды!
Чтобы справиться с этой проблемой, попробуйте создать вспомогательный хук следующим образом:
Обратите внимание на предоставленную команду. Она запишет входные данные для этого хука в файл post-log.json, что позволит вам точно проверить, что было бы передано вашей команде! Это значительно упрощает понимание того, какие данные должна проверять ваша команда.
План урока
- Another useful hook
- Что может сбить с толку
- Пример входных данных для хука PostToolUse
- Пример входных данных для хука Stop
- Создание вспомогательного хука
Урок входит в полный доступ. Полный текст и видео открываются после оплаты. Первые уроки каждого курса бесплатны.