⚡ Активация

💭 в уме · писать не нужно

Вспомни рутину, которую ты повторяешь после каждого ответа агента — или перед каждым заданием.

Не представляй это как «ручную операцию». Представь спусковой механизм часов: анкер щёлкает — и шестерня проворачивается ровно на один зуб, не больше, не меньше. Щелчок происходит сам — не потому что кто-то дёрнул за рычаг. Прокрути в голове: что у тебя сейчас требует ручного «щелчка»?

Какой триггер ты бы хотел автоматизировать первым?

👁 Рефлексия

💭 в уме · писать не нужно

Если ты делаешь что-то после каждого действия агента — это Hook.

Не думай об этом как о «скрипте». Представь цепочку домино: ты толкаешь первую костяшку — и весь ряд проходит сам, одна за другой, без твоего участия. Событие в Claude Code — первая костяшка; Hook — это весь последующий ряд.

Разгляди в голове свою цепочку: сколько «костяшек» сейчас требуют, чтобы ты их толкал по одной?

💡 Концепция

События для Hooks

Событие Когда срабатывает
PreToolUse До того как агент использует инструмент
PostToolUse После того как агент использует инструмент (после каждого вызова)
Notification Когда агент хочет привлечь внимание
Stop Когда агент завершил работу над ответом (конец хода)
SessionEnd Когда сессия заканчивается

По часам ни одно из этих событий не наступает. Pipeline по расписанию из модуля 06 запускает планировщик ОС, а не hook. Но hooks срабатывают и в запуске claude -p из твоего run.sh. Hook на Stop может, например, прислать уведомление, что утренний разбор готов.

Конфигурация Hook

В .claude/settings.json:

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Write",
        "hooks": [
          {
            "type": "command",
            "command": "echo \"Файл записан: $(date)\" >> ~/claude-log.txt"
          }
        ]
      }
    ]
  }
}

Перенаправление >> здесь обязательно: без него echo пишет не в лог, а в стандартный вывод, который разбирает сам Claude Code.

Практические примеры