В прошлом уроке хук блокировал правку. Но хуки умеют не только запрещать. Вот три рецепта, которые окупаются с первого дня.
Рецепт 1. Прибраться после правки — PostToolUse
PostToolUse срабатывает после успешного вызова инструмента. Повесь его на Edit|Write, и после каждой правки файла запустится твой скрипт: форматтер, линтер или простая чистка лишних пробелов.
"PostToolUse": [
{
"matcher": "Edit|Write",
"hooks": [
{ "type": "command", "command": "${CLAUDE_PROJECT_DIR}/.claude/hooks/format-after-edit.sh", "args": [] }
]
}
]
Это убирает целый класс мелких правок «а теперь поправь форматирование»: файл приводится к стилю проекта сам.
Рецепт 2. Позвать тебя — Notification
Длинная задача, ты ушёл за чаем, а Claude давно ждёт подтверждения. Хук на событие Notification может показать системное уведомление или проиграть звук, когда Claude Code нужно твоё внимание.
Такой хук — про тебя, а не про проект: на Mac и Linux уведомления делаются по-разному. Поэтому регистрируй его в своём ~/.claude/settings.json, с путём туда, где у тебя лежит скрипт.
Рецепт 3. Проверить в конце — Stop
Stop срабатывает, когда Claude закончил отвечать. Это лучшее место для проверки всего рабочего дерева разом: не появились ли изменения в защищённых файлах, проходят ли быстрые тесты.
Граница, о которой забывают
Хук с matcher: "Edit|Write" видит только инструменты редактирования. Если Claude изменит файл командой оболочки — echo X >> .env, sed -i, rm, — этот хук ничего не заметит: команды идут через инструмент Bash.
Чтобы видеть всё, есть два пути:
- отдельный хук с
matcher: "Bash", который разбирает команду; - хук на
Stop, который в конце ответа проверяет рабочее дерево — ему всё равно, как сделано изменение.
Проверяй хук без Claude
Любой скрипт хука можно запустить руками, подав на вход тот JSON, который прислал бы Claude Code. Если скрипт нельзя проверить отдельно, ему нельзя и доверять: ошибка в хуке молча ломает каждую сессию.
Мини-проверка
Ты хочешь гарантировать, что после ответа Claude в проекте не изменился файл .env — как бы его ни меняли. Какой хук?
Осторожно
Хук выполняется на каждом событии. Медленный скрипт в PostToolUse — например, полный прогон тестов — замедлит каждую правку. В PostToolUse клади быстрое: форматирование, проверку одного файла. Тяжёлые проверки — в Stop, один раз на ответ.