раздел 06
Hooks - фоновые автоматизации
Hooks - это shell-команды, которые Claude Code запускает автоматически на события: до правки файла, после правки, при остановке, при отправке вашего сообщения, при срабатывании инструмента. Hook видит происходящее и может разрешить, заблокировать или подменить действие.
Зачем
- Авто-формат после каждой правки:
prettier,black,gofmt. Никакого мусора в diff'ах. - Уведомления macOS, когда Claude закончил работу - можно идти за кофе и не сидеть пялиться в терминал.
- Защита от случайностей: блок на чтение
.env, блок наrm -rf, блок на push вmain. - Авто-тесты после изменений Python-файлов:
pytest -xв фоне. - Авто-коммиты после успешной задачи - чтобы не терять прогресс.
- Логирование всех команд Claude в файл - для аудита и отладки.
Hook - это не модель, это обычная shell-команда. Она бесплатная, мгновенная, и работает независимо от того, какую модель вы используете.
Минимальный пример
В ~/.claude/settings.json или .claude/settings.json проекта:
{
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write",
"hooks": [
{
"type": "command",
"command": "if echo \"$CLAUDE_FILE_PATHS\" | grep -q '\\.py$'; then black $CLAUDE_FILE_PATHS; fi"
}
]
}
],
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "osascript -e 'display notification \"Готово\" with title \"Claude Code\" sound name \"Glass\"'"
}
]
}
]
}
}
Что произойдёт:
- После каждой правки
.pyфайла - автоматически прогонитсяblack - Когда Claude закончил - на macOS появится баннер с уведомлением и звуком
События hooks
Полный набор:
| Событие | Когда срабатывает | Может блокировать? |
|---|---|---|
| PreToolUse | До запуска инструмента (Read, Edit, Bash, ...) | Да |
| PostToolUse | После успешного выполнения | Нет |
| UserPromptSubmit | Когда вы отправили сообщение | Да |
| Stop | Когда Claude закончил отвечать | Нет |
| Notification | Когда Claude хочет показать уведомление | Нет |
| SubagentStop | Когда субагент закончил | Нет |
| PreCompact | До авто-сжатия контекста | Нет |
| SessionStart | При старте сессии | Нет |
| SessionEnd | При закрытии сессии | Нет |
Что в этом разделе
Полезные ссылки
- Hooks reference - официальная дока со всеми событиями
- Hooks examples - готовые примеры
- Awesome Claude Code - hooks - hooks от сообщества