Hooks — это shell-команды, которые автоматически запускаются в ответ на события в Claude Code. Настраивают поведение без изменения промптов.
Хуки выполняются в определённые моменты работы Claude Code:
| Событие | Когда |
|---|---|
| PreToolUse | Перед каждым вызовом инструмента |
| PostToolUse | После вызова инструмента |
| PreCompact | Перед сжатием контекста |
| Stop | При завершении ответа агента |
| Notification | При уведомлениях |
В ~/.claude/settings.json или .claude/settings.json:
{
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write",
"hooks": [
{
"type": "command",
"command": "npm run lint --silent 2>&1 | head -20"
}
]
}
]
}
}
1. Автолинт после редактирования
{
"matcher": "Edit|Write",
"hooks": [{ "type": "command", "command": "npm run lint --fix 2>&1" }]
}
2. Автоформатирование (Prettier)
{
"matcher": "Write",
"hooks": [{ "type": "command", "command": "npx prettier --write $TOOL_INPUT_PATH 2>&1" }]
}
3. Проверка типов после изменений TS
{
"matcher": "Edit",
"hooks": [{ "type": "command", "command": "npx tsc --noEmit 2>&1 | head -30" }]
}
4. Запуск тестов для изменённого файла
{
"matcher": "Edit",
"hooks": [{ "type": "command", "command": "npm test -- --testPathPattern=$TOOL_INPUT_PATH --passWithNoTests 2>&1" }]
}
5. Уведомление о завершении (macOS)
{
"event": "Stop",
"hooks": [{ "type": "command", "command": "osascript -e 'display notification "Claude Code завершил задачу" with title "Claude Code"'" }]
}
6. Блокировка опасных команд
{
"matcher": "Bash",
"hooks": [{
"type": "command",
"command": "echo $TOOL_INPUT_CMD | grep -qE '^rm -rf|DROP TABLE' && echo 'BLOCKED' && exit 1 || exit 0"
}]
}
7. Логирование всех действий
{
"matcher": ".*",
"hooks": [{
"type": "command",
"command": "echo "$(date): $TOOL_NAME" >> ~/.claude/activity.log"
}]
}
8. Автообновление CLAUDE.md
{
"event": "Stop",
"hooks": [{
"type": "command",
"command": "git diff --name-only HEAD | grep -q 'package.json' && echo 'Напомни обновить CLAUDE.md' || true"
}]
}
$TOOL_NAME — имя инструмента (Edit, Bash, Read...)$TOOL_INPUT_PATH — путь файла (для Edit/Write)$TOOL_INPUT_CMD — команда (для Bash)Выбери 3 хука из урока, которые наиболее применимы к твоим задачам. Настрой их в .claude/settings.json.
Проверь каждый хук в реальной сессии и запиши: что он делает, насколько это полезно, нужны ли доработки.
Подсказки
Придумай и реализуй хук для задачи, которой нет в стандартном наборе. Например:
Подсказки