Открытый гайд · ИИ-офис

Хуки Claude Code:автоматизация рутины

Хуки заставляют Claude Code делать рутину автоматически: форматировать код после правок, гонять линт, блокировать опасные команды. Это не просьба к модели, а гарантированное действие на событие. Разберём, как настроить.

@kir.player
~12 минут
июнь 2026

Ты наверняка ловил это: просишь Claude «всегда форматируй код после правок» — и через десять сообщений он про это забывает. Инструкции в промте — это просьба, а не гарантия: модель может их проигнорировать, особенно в длинной сессии. Хуки решают проблему в корне. Это твои команды, которые Claude Code запускает сам в нужный момент, и они срабатывают всегда, независимо от внимания модели.

Что узнаешь из гайда

  • Что такое хуки и чем они надёжнее инструкций в промте
  • Какие события бывают и когда какое срабатывает
  • Как настроить хук в settings.json — по шагам
  • Готовые хуки: автоформат, линт, защита от опасных команд
  • Когда хук — перебор и лучше обойтись без него

Часть 1 · Понятие

Что такое хуки

Главное

Хук — это твоя команда, которую Claude Code запускает автоматически в определённый момент: до вызова инструмента, после правки файла, при старте сессии. Срабатывает гарантированно, а не «если модель вспомнит».

Слово «хук» (от английского hook — «зацепка») значит точку, к которой можно «прицепить» своё действие. В Claude Code такими точками служат события: агент собирается вызвать инструмент, агент правит файл, ты отправил промт, сессия закончилась. На каждое из этих событий можно повесить команду — обычную команду терминала, которую система запустит сама.

Инструкция в промте — это просьба. Хук — это гарантия.

В этом ключевое отличие. Когда ты пишешь в промте «форматируй код», Claude может это сделать, а может забыть. Хук PostToolUse, который запускает форматтер после каждой правки файла, сработает всегда — он не зависит от того, помнит модель про правило или нет.


Часть 2 · Смысл

Зачем нужны хуки

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

  1. Автоформат. После каждой правки файла прогоняется форматтер (Prettier, Black и любой другой) — код всегда причёсан, без напоминаний.
  2. Линт и проверки. После правок запускается линтер или типизация — ошибки ловятся сразу, а не на коммите.
  3. Защита от опасных команд. Перед вызовом инструмента хук проверяет команду и блокирует то, чего ты боишься (например, rm -rf).

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

Хуки хорошо дружат с субагентами и скилами: субагенты задают роли, скилы — навыки, хуки — гарантированные действия на события. Вместе они и превращают Claude Code в настроенную рабочую систему, а не просто умный чат.


Часть 3 · События

Какие события бывают

Хук привязывается к событию. Вот основные точки, к которым можно прицепиться:

СобытиеКогда срабатывает
PreToolUseПеред вызовом инструмента — можно заблокировать
PostToolUseПосле вызова инструмента (например, после правки файла)
UserPromptSubmitКогда ты отправил промт
StopКогда агент закончил ответ
SessionStart / SessionEndНачало и конец сессии
PreCompactПеред сжатием контекста

На практике 90% хуков висят на двух событиях: PostToolUse (что сделать после правки — формат, линт) и PreToolUse (что проверить до действия — защита). Остальные нужны под более тонкие сценарии вроде загрузки контекста при старте сессии.


Часть 4 · Настройка

Как настроить хук

Главное

Хуки описываются в файле settings.json в блоке hooks: событие → matcher (на какие инструменты реагировать) → command (что запустить). Личные — в ~/.claude/settings.json, проектные — в .claude/settings.json.

Вот рабочий хук, который запускает Prettier после каждой правки файла. Разберём по частям:

.claude/settings.json
{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "jq -r '.tool_input.file_path' | xargs npx prettier --write"
          }
        ]
      }
    ]
  }
}

Читается так: на событие PostToolUse (после действия), если инструмент — Edit или Write (правка файла), запусти команду. Команда здесь берёт путь к файлу из данных события (через jq) и прогоняет по нему Prettier. matcher — это фильтр: "Edit|Write" значит «реагируй только на эти инструменты, на остальные не трогай».

Где живёт файл

Личные настройки — ~/.claude/settings.json (работают во всех проектах). Командные — .claude/settings.json внутри репозитория (едут в гит, у всей команды одинаковые хуки). Та же логика, что у скилов и субагентов: личное в домашней папке, командное — в проекте.


Часть 5 · Примеры

Полезные хуки на копипаст

Кроме автоформата выше, два частых хука: линт после правок и защита от опасных действий.

Линт после каждой правки

Тот же PostToolUse, но вместо форматтера — твой скрипт проверки:

.claude/settings.json · линт
{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "/path/to/lint-check.sh"
          }
        ]
      }
    ]
  }
}

Защита от опасных команд

Для запретов есть два пути. Простой — список deny в правах доступа: Claude просто не сможет выполнить команду из чёрного списка.

.claude/settings.json · права доступа
{
  "permissions": {
    "allow": [
      "Bash(npm test *)",
      "Bash(npm run *)"
    ],
    "deny": [
      "Bash(rm -rf *)"
    ]
  }
}

Более гибкий путь — хук на событие PreToolUse: он срабатывает перед вызовом инструмента и может проверить команду своим скриптом. Если скрипт завершится с кодом 2, действие блокируется — Claude не выполнит то, что ты запретил. Это полезно для сложных проверок, которые не выразить простым списком.

Коротко

  • Автоформат и линт — хук PostToolUse с matcher: "Edit|Write".
  • Простой запрет — список deny в permissions.
  • Сложная проверка — хук PreToolUse, выход с кодом 2 блокирует действие.

Часть 6 · Граница

Когда хук — перебор

Минимальный набор

Большинству хватает двух хуков: автоформат после правок и линт. Защиту от опасных команд проще закрыть списком deny в правах, а не отдельным скриптом. Начни с этого минимума — он закрывает 90% рутины, и не плоди хуки, пока реально не упрёшься в потребность.

Когда хук не нужен

Если правило гибкое и зависит от ситуации — это не хук, а инструкция в CLAUDE.md. Хук хорош для жёсткого «всегда делай так»: формат, линт, запрет. Стиль кода, тон, архитектурные предпочтения — это контекст, его не автоматизируешь командой. И не вешай тяжёлые команды на частые события: хук на каждую правку, который идёт пять секунд, замедлит всю работу.

Коротко

  • Хук — гарантированная команда на событие, не просьба к модели.
  • Настройка — блок hooks в settings.json: событие, matcher, command.
  • Для жёстких правил (формат, линт, запрет), не для гибкого контекста.

Вопросы

Частые вопросы

Что такое хуки в Claude Code?

Хук — это твоя команда, которую Claude Code запускает автоматически в определённый момент работы: до вызова инструмента, после правки файла, при отправке промта и так далее. В отличие от инструкции в промте, хук срабатывает гарантированно, а не «если модель вспомнит». Это способ автоматизировать рутину вроде форматирования кода после каждой правки или блокировки опасных команд.

Как настроить хук в Claude Code?

Хуки описываются в файле settings.json в блоке hooks: указываешь событие (например, PostToolUse), matcher (на какие инструменты реагировать) и command — команду, которую запустить. Файл живёт в ~/.claude/settings.json для личных настроек или .claude/settings.json в проекте для командных. После сохранения хук начинает срабатывать сам, без отдельного запуска.

Какие события бывают у хуков?

Основные события: PreToolUse (перед вызовом инструмента), PostToolUse (после), UserPromptSubmit (когда ты отправил промт), Stop (когда агент закончил), SessionStart и SessionEnd, PreCompact (перед сжатием контекста). Самые ходовые — PreToolUse для защиты от опасных действий и PostToolUse для автоформата и линта после правок.

Чем хук отличается от скила или инструкции в CLAUDE.md?

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

Читать дальше

Соседние гайды

Маркетплейс · бесплатно
1300+ готовых скилов для Claude Code

Хуки автоматизируют рутину, скилы дают навыки. В маркетплейсе ИИ-офиса собраны готовые навыки для Claude Code: разработка, дизайн, контент, автоматизация. Каждый с описанием и установкой — ставь и пользуйся.

Открыть маркетплейс скилов

А разборы, эфиры и живое сообщество вайбкодеров — в Telegram ИИ-офиса.