Урок 19Автоматизация
Система хуков
События жизненного цикла
Что такое хуки
Хуки — это shell-команды, которые автоматически выполняются при определённых событиях в Claude Code.
Применения
- • Авто-форматирование после Edit
- • Валидация команд Bash
- • Уведомления в Slack
- • Логирование действий
Ограничения
- • Выполняются синхронно
- • Таймаут 60 секунд
- • Могут блокировать операции
События хуков
SessionStartПри запуске сессии Claude Code
SessionEndПри завершении сессии
PreToolUseПеред вызовом инструмента
PostToolUseПосле вызова инструмента
UserPromptSubmitКогда пользователь отправляет сообщение
NotificationПри уведомлениях от Claude
StopКогда Claude останавливается
Пример: авто-форматирование
Автоматическое форматирование файлов после редактирования:
// .claude/hooks/format-on-edit.json
{
"hooks": {
"PostToolUse": [
{
"name": "auto-format",
"match": {
"tool": "Edit",
"path": "**/*.{ts,tsx,js,jsx}"
},
"command": ["npx", "prettier", "--write", "{{path}}"]
}
]
}
}💡{{path}} заменяется на путь к файлу, который был отредактирован
Пример: блокировка опасных команд
PreToolUse может блокировать операции, возвращая exit code 1:
// Блокировка опасных команд
{
"hooks": {
"PreToolUse": [
{
"name": "block-dangerous-commands",
"match": {
"tool": "Bash"
},
"command": ["bash", "-c", "
if echo '{{command}}' | grep -qE 'rm -rf|drop database'; then
echo 'BLOCKED: Dangerous command detected' >&2
exit 1
fi
"]
}
]
}
}Exit code 0
Операция продолжается
Exit code 1
Операция блокируется
Конфигурация хуков
Хуки настраиваются в файлах .claude/hooks/*.json:
.claude/hooks/ ├── format.json # Auto-formatting hooks ├── security.json # Security validation hooks ├── notify.json # Notification hooks └── logging.json # Logging hooks
nameИмя хука для логированияmatchУсловия срабатывания (tool, path)commandКоманда для выполненияЛучшие практики хуков
- 1.Делайте хуки быстрыми — они блокируют основной поток
- 2.Используйте match для точного срабатывания
- 3.Логируйте ошибки хуков для отладки
- 4.Тестируйте хуки локально перед коммитом
Этот урок — часть структурированного курса по LLM.
Мой путь обучения