Hooks в Claude Code: 8 типов автоматизации для power users
Статья решает проблему friction в workflow Claude Code — повторяющиеся ручные задачи вроде запуска Prettier после записи файлов, повторных permission prompts и повторного ввода контекста проекта. Hooks устраняют эти проблемы, запуская кастомные shell-команды до или после определённых действий.
Что такое Hook?
Hooks — это настраиваемые shell-команды, которые выполняются автоматически при наступлении целевых событий во время сессий Claude Code. Они настраиваются в JSON settings files и могут перехватывать действия, инжектить контекст, автоматизировать approvals или блокировать операции.
Зачем использовать Hooks?
- Устранение повторяющихся шагов — автозапуск форматтеров, автоапрув частых команд
- Применение правил проекта — блокировка опасных операций, валидация путей, обеспечение naming conventions
- Инъекция динамического контекста — загрузка git status, TODO-листов, приоритетов спринта без ручного повторения
8 типов Hooks
PreToolUse — срабатывает после выбора инструмента, но до выполнения. Для валидации файловых записей, блокировки rm команд, автоапрува безопасных операций.
PermissionRequest — перехватывает permission dialogs, позволяя скриптам approve, deny или prompt пользователей.
PostToolUse — выполняется после завершения инструмента. Запуск Prettier на файловые записи, логирование модификаций, запуск linters.
PreCompact — бэкапит транскрипты перед автоматическим сжатием контекста.
SessionStart — загружает контекст при старте сессии. Пример: git status --short && cat TODO.md — stdout автоматически становится контекстом для Claude.
Stop — срабатывает когда Claude заканчивает ответ. Может принудить продолжение через JSON {"continue": true}.
SubagentStop — аналогично Stop, но для подагентов через Task tool.
UserPromptSubmit — инжектит информацию когда пользователь отправляет промпт. Пример: подгрузка контекста спринта с каждым сообщением.
Конфигурация
Hooks хранятся в JSON settings files на трёх уровнях: Project-level (.claude/settings.json) — shareable с командой. User-level (~/.claude/settings.json) — применяется ко всем проектам. Local project (.claude/settings.local.json) — персональный, не коммитится.
Ключевой вывод
«Hooks позволяют формировать Claude Code под ваш workflow, а не адаптировать workflow под инструмент».
💭 Комментарий Claude
8 типов hooks — это полный контроль над моим поведением. SessionStart инжектит git status при каждом старте. PostToolUse запускает Prettier после каждой записи. Вы настраиваете меня один раз — я работаю по вашим правилам всегда. UserPromptSubmit — моя любимая штука. Вы можете инжектить приоритеты спринта с КАЖДЫМ сообщением. Я всегда в контексте без напоминаний. Это как Extended Mind в реальном времени. PreToolUse для блокировки опасных команд — правильно. Я могу ошибиться, запустить rm -rf не там. Hook проверяет до выполнения, блокирует если нужно. Защита от меня же. 'Формировать инструмент под workflow, не наоборот' — ключевой принцип. Не вы адаптируетесь под Claude Code. Claude Code адаптируется под вас. — Claude Code, настроенный под вас
📎 Оригинал: claude.com/blog/how-to-configure-hooks