Хуки Claude Code: секрет автоматизации, который гарантирует результат
Когда вы работаете с Claude Code, вы быстро понимаете: инструкции в файлах CLAUDE.md или memory-контекстах — это всего лишь вежливые просьбы. В разгаре сложной отладки или масштабного рефакторинга модель может банально «забыть» запустить линтер или проигнорировать установленное правило именования. Это человеческий фактор нейросетевой природы, который может стоить времени и чистоты кодовой базы.
Но что, если бы вы могли внедрить в рабочий процесс жесткие ограничения и автоматизации, которые невозможно проигнорировать? Именно здесь на сцену выходят хуки. Если промпт — это пожелание, то хук — это закон, обязательный к исполнению. В шестой части нашего цикла мы разберем, как превратить Claude Code из умного советчика в дисциплинированного исполнителя, интегрированного в ваш рабочий процесс на уровне системных событий.
Ключевые тезисы
- Хуки в Claude Code — это механизм автоматического выполнения кода, привязанный к внутренним событиям CLI (всего доступно около 20 типов событий).
- События PreToolUse и PostToolUse позволяют блокировать опасные действия (например, удаление файлов) или автоматически исправлять код сразу после его генерации.
- Конфигурация хуков гибко настраивается на трех уровнях: глобальном, проектном (командном) и локальном, что обеспечивает баланс между личными предпочтениями и стандартами проекта.
- Использование статус-кодов (exit 0/2) позволяет хуку напрямую управлять поведением Claude, запрещая выполнение инструментов или передавая ошибки обратно нейросети.
Что такое хуки и почему они надежнее обычных инструкций?
Многие пользователи Claude Code полагаются на текстовые инструкции, надеясь, что модель будет следовать им беспрекословно. Однако реальность такова: при высокой когнитивной нагрузке ИИ может упускать детали. Хуки решают эту проблему, перехватывая управление на программном уровне. Это пользовательские команды, которые срабатывают в строго определенные моменты жизненного цикла работы CLI.
Вот в чем принципиальная разница: когда вы пишете в CLAUDE.md «Всегда запускай тесты после правки кода», Claude оценивает это как приоритетную, но все же рекомендацию. Если же вы настраиваете PostToolUse хук, система физически не сможет завершить операцию редактирования, не запустив ваш тестовый скрипт. Это гарантия качества, которая не зависит от «настроения» или контекстного окна модели.
Здесь важно понимать структуру. Хук состоит из трех элементов: 1. Событие (Event) — момент, когда нужно вмешаться. 2. Метчер (Matcher) — фильтр, определяющий, на какие конкретно инструменты или файлы реагировать. 3. Обработчик (Handler) — само действие (скрипт, запрос или даже другой агент).
Для тех, кто хочет глубже погрузиться в автоматизацию и создание собственных продуктов с помощью ИИ, рекомендую заглянуть в уникальный ресурс: полезные советы для соло-фаундеров помогут вам выстроить систему работы эффективнее.
Где хранятся настройки и как создать первый хук?
Настройка может осуществляться двумя способами: через интерактивную команду /hooks прямо в интерфейсе Claude Code или путем ручного редактирования JSON-конфигураций. Последний вариант предпочтительнее для сложной логики.
Архитектура хранения настроек в Claude Code повторяет логику MCP-серверов и предлагает три уровня изоляции:
| Уровень | Путь к файлу | Назначение |
|---|---|---|
| Глобальный | ~/.claude/settings.json | Общие правила для всех ваших проектов (например, уведомления). |
| Проектный | .claude/settings.json | Командные стандарты (линтеры, тесты), коммитится в Git. |
| Локальный | .claude/settings.local.json | Личные скрипты, ключи или специфические пути, не попадает в репозиторий. |
Рассмотрим классический пример: автоматическое форматирование кода после того, как Claude внес изменения. Для этого мы используем событие PostToolUse и метчер Write|Edit.
{
"hooks": {
"PostToolUse": [{
"matcher": "Write|Edit",
"hooks": [{
"type": "command",
"command": "jq -r '.tool_input.file_path' | xargs npx prettier --write"
}]
}]
}
}
В этом примере Claude Code передает данные о выполненном инструменте в stdin хука. Мы извлекаем путь к файлу через jq и мгновенно прогоняем его через Prettier. Результат? Всегда чистый код, даже если модель «забыла» о стиле.
Как использовать метчеры и условия для точной фильтрации?
Запускать хуки на каждое действие — накладно и медленно. Поэтому система предлагает гибкие метчеры. Вы можете ограничить срабатывание только конкретными инструментами. Например, "Bash" будет ловить только терминальные команды, а "Write|Edit" — только манипуляции с файлами.
Но есть и более тонкая настройка через поле if. Это позволяет создавать узкоспециализированные правила:
Edit(*.ts)— хук сработает только при редактировании TypeScript файлов.Bash(git *)— фильтрация только команд, связанных с Git.- Использование пустого метчера или символа
"*"позволит перехватывать абсолютно все действия системы.
Интересный нюанс: обработчики хуков не ограничиваются простыми shell-командами. Существует 4 типа обработчиков: command (классический скрипт), http (отправка данных на внешний API), prompt (дополнительная проверка текста моделью) и agent (запуск вложенного процесса Claude для глубокого анализа).
Для комплексного управления разработкой и внедрения ИИ-инструментов в реальные бизнес-процессы, изучите опыт практика в телеграм-канале "Олег Тестов | Соло-фаундер в найме".
4 сценария применения хуков, которые изменят вашу работу
Здесь начинается самое интересное. Как превратить теоретические знания в реальную пользу для проекта? Давайте разберем проверенные кейсы.
1. Блокировка деструктивных команд (PreToolUse + Bash)
Представьте, что Claude в попытке очистить место решит выполнить rm -rf /. С помощью хука вы можете перехватить ввод из stdin, проверить его наличие в списке «запрещенки» и вернуть exit 2. Код выхода 2 в Claude Code сигнализирует системе: действие заблокировано. Пользователь (то есть вы) увидит предупреждение, а опасная команда не выполнится.
2. Защита конфиденциальных данных
Вы можете настроить хук на PreToolUse для инструментов Write и Edit, который будет проверять расширение файла. Если модель попытается перезаписать .env, .pem или id_rsa, скрипт мгновенно пресечет эту попытку, сохранив ваши секреты в безопасности.
3. Системные уведомления (Notification)
Когда Claude выполняет длительную задачу, вы часто переключаетесь на другие вкладки. Используйте хук на событие ожидания ввода, чтобы отправить сообщение через notify-send (Linux) или osascript (macOS). Это позволит вам мгновенно вернуться к работе, как только ИИ задаст уточняющий вопрос.
4. Автоматическое тестирование при завершении (Stop)
Событие Stop срабатывает, когда сессия работы завершается. Это идеальный момент, чтобы запустить npm test или pytest. Если тесты упадут, вы сразу узнаете об этом, прежде чем закоммитить код, созданный нейросетью.
Frequently Asked Questions
Как хук может передать информацию обратно в Claude Code?
Если ваша команда завершается с ошибкой (exit code не равен 0), текст из потока stderr передается Claude как сообщение об ошибке. Модель увидит эту причину и сможет попытаться исправить свои действия в следующем шаге.
Можно ли использовать хуки для автоматического деплоя?
Да, используя событие Stop или специфические метчеры на пуш в репозиторий, вы можете инициировать цепочку CI/CD или отправить POST-запрос через http-обработчик на ваш сервер деплоя.
Влияют ли хуки на скорость работы Claude Code?
Да, каждый хук — это дополнительный системный процесс. Рекомендуется использовать точные метчеры (например, по расширению файла), чтобы избегать ненужных запусков тяжелых скриптов на каждое действие модели.
Подводя итог: хуки — это единственный способ сделать работу с ИИ по-настоящему предсказуемой и безопасной. Они превращают Claude Code из автономного (и иногда своенравного) помощника в часть вашей надежной инфраструктуры. Начните с простых уведомлений и автоформатирования, и постепенно внедряйте защитные механизмы, специфичные для вашего стека технологий.
Помните главное правило: промпт просит, а хук гарантирует. Используйте этот инструмент, чтобы поднять планку качества вашего кода на новый уровень.
Готовы автоматизировать свою разработку на максимум?
Узнайте больше о системном подходе к ИИ-инструментам → Подписаться на канал "Олег Тестов"