К содержимому
Claude Code с 0:полный курс
Уровень 2 · Настраиваем под себя 6 мин Проверено автором · 12 окт. 2026 г. Сверено с Claude Code v2.1.287 · 12 окт. 2026 г.

Рецепты хуков: автоформат, уведомления, проверка в конце

Три рабочих рецепта на хуках — привести файл в порядок после правки, получить уведомление, когда Claude ждёт тебя, и проверить всё рабочее дерево в конце ответа. И граница, о которой забывают.

Уровень 2 · 0 / 4 уроков0%

В этом уроке нет практического задания — просто прочитай и ответь на вопросы.

В прошлом уроке хук блокировал правку. Но хуки умеют не только запрещать. Вот три рецепта, которые окупаются с первого дня.

Рецепт 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, один раз на ответ.

Проверь себя

Отвечено 0/3
Режим:

Какое событие подходит, чтобы форматировать файл сразу после того, как Claude его изменил?

Куда регистрировать хук-уведомление «Claude ждёт ответа»?

Хук на Edit|Write не видит изменений, которые Claude делает командами. Как поймать всё?

Выполни задание в терминале и ответь на вопросы, чтобы завершить урок.

📝 Мои заметки

Сохраняется автоматически в этом браузере · видно на странице «Заметки».

Вопросы и ответы по уроку

Какое событие подходит, чтобы форматировать файл сразу после того, как Claude его изменил?

PostToolUse срабатывает после успешного вызова инструмента — самое время прибрать файл, который только что изменился.

Куда регистрировать хук-уведомление «Claude ждёт ответа»?

Уведомление — личная привычка, зависящая от твоей системы. Ей место в пользовательских настройках, а не в общих правилах проекта.

Хук на Edit|Write не видит изменений, которые Claude делает командами. Как поймать всё?

Команды идут через Bash, поэтому нужен свой matcher. А хук на Stop срабатывает в конце ответа и может проверить все изменения разом, как бы они ни были сделаны.

Ты хочешь гарантировать, что после ответа Claude в проекте не изменился файл .env — как бы его ни меняли. Какой хук?

Edit|Write не видит команд оболочки. Хук на Stop смотрит на итог, а не на способ изменения, поэтому ловит всё.

Листай уроки клавишами ← → · поиск по ⌘K