Как настроить хуки Claude Code для проверок и форматирования
Хуки Claude Code позволяют запускать проверки и форматирование без повторных просьб к модели. Это пользовательские shell-команды, которые выполняются при заданных событиях: запуск не зависит от того, решит ли модель вызвать проверку, пишет Anthropic в документации.
Для автоформатирования в settings.json нужен блок hooks с событием PostToolUse, полем matcher со значением Edit|Write и полем type со значением command. Команда хука получает путь изменённого файла и передаёт его форматтеру; в примере Anthropic используется Prettier. Если hooks уже существует, событие добавляется внутрь него, иначе можно затереть прежние настройки.
Я бы начала с такого узкого matcher: форматирование привязано к успешному вызову Edit или Write. Но перезапись файла через Bash этот вариант не покрывает. Если нужна реакция на изменение конкретного файла независимо от инструмента, подходит FileChanged. У него matcher содержит буквальные имена файлов через |, а не регулярное выражение.
Для запрета правки нужен PreToolUse, который срабатывает до вызова инструмента. В примере защиты скрипт сверяет путь с защищёнными шаблонами и завершает работу с кодом 2, чтобы запретить редактирование. Claude получает сообщение скрипта как обратную связь. Проверку запрета я бы ставила здесь: PostToolUse запускается уже после успешного действия.
Скрипты должны быть исполняемыми. Подходящие хуки одного события запускаются параллельно, поэтому я бы не строила цепочку, в которой одна проверка ждёт результат соседней.
Первым шагом достаточно настроить PostToolUse для Edit|Write и открыть /hooks, чтобы проверить регистрацию. Успешное автоформатирование ничего не выводит в разговор: подтверждением будет изменившееся форматирование файла.