~/VibeHandbook

Агентные инструменты

docs.claude.com

Hooks

Что это

Хук (hook) — это ваша собственная команда, которая запускается автоматически в определённый момент жизненного цикла агента — перед выполнением shell-команды, после редактирования файла, при старте сессии и так далее. Хуки позволяют наблюдать за действиями агента и контролировать их с помощью обычных скриптов, а не полагаться на то, что он сам вспомнит правило. Это уровень принуждения в обвязке (harness) для написания кода.

Сильные стороны

  • Детерминированность: хук срабатывает каждый раз, поэтому правило нельзя забыть или обойти уговорами.
  • Пишутся как обычный shell или скрипты, так что вы можете сделать всё, на что способна ваша машина.
  • Могут заблокировать действие, а не только залогировать его — хук перед командой может отклонить опасную команду.
  • Отлично подходят для предохранителей: форматирование при сохранении, запуск тестов после правок, поиск секретов перед коммитом.

Компромиссы

  • Хук — это реальный код, который запускается автоматически, поэтому ошибочный хук может сломать рабочий процесс.
  • Медленные хуки добавляют задержку к каждому запускающему их событию.
  • Они срабатывают по шаблонам, поэтому слишком широкий хук может помешать легитимным действиям.
  • Больше настройки и ещё одно место, куда нужно заглянуть, когда что-то ведёт себя неожиданно.

Когда использовать

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

Подходит для вайб-кодинга

Хуки — это то, как вы держите агента в безопасности, позволяя ему при этом двигаться быстро. Агент предлагает; хук принуждает. Хук «перед запуском», блокирующий rm -rf, или хук «после правки», запускающий проверку типов, превращает вольный ассистент в такой, который физически не может пропустить ваши предохранители.

// запускать форматтер после каждой правки файла
{
  "hooks": {
    "PostToolUse": [
      { "matcher": "Edit", "command": "npx prettier --write $FILE" }
    ]
  }
}