Автоматизація перевірок за допомогою хуків

Розробка ПЗ з Claude Code

Dani Zysman

AI Curriculum Manager @ DataCamp

Проблема ручних дій

recraft: half: Розробник за столом, втомлений від багаторазового ручного запуску однієї й тієї самої команди

  • Хуки спрацьовують, коли Claude виконує певну дію
  • Хуки працюють автоматично — ідеально для повторюваних завдань
  • Хуки не дають пропускати кроки в процесі
Розробка ПЗ з Claude Code

Що таке хуки?

  • Інструменти:
    • Читання/запис файлів
    • Запуск команди
  • Хуки:

    • Користувацькі shell-команди, що виконуються автоматично
    • Налаштовуються в .claude/settings.json
    • Думайте про них як про «if this, then that» для Claude Code

    Використайте /hooks, щоб переглянути активні

Розробка ПЗ з Claude Code

Проєкт на цей момент

music-analytics-api/
  app.py
  routes.py
  test_routes.py    
  CLAUDE.md
  .claude/
    agents/
    skills/
    settings.json    # <- Hook configuration
Розробка ПЗ з Claude Code

Типи хуків і процес

Схема робочого процесу хуків

PreToolUse: спрацьовує до запуску інструменту → Використовуйте для перевірки або блокування ризикованих дій

PostToolUse: спрацьовує після завершення інструменту → Використовуйте для тестів, lint-перевірок або логування результатів

Розробка ПЗ з Claude Code

Налаштування хука

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Write|Edit",
        "hooks": [
          {
            "type": "command",
            "command": "cd $CLAUDE_PROJECT_DIR && python -m pytest --tb=short -q"
          }
        ]
      }
    ]
  }
}
Розробка ПЗ з Claude Code

Фіксація виводу хука

def pytest_terminal_summary(terminalreporter, exitstatus, config):
    passed = len(terminalreporter.stats.get('passed', []))
    failed = len(terminalreporter.stats.get('failed', []))

    if failed:
        title = "pytest FAILED"
        message = f"{failed} failed {passed} passed"
    else:
        title = "pytest PASSED"
        message = f"All {passed} tests passed!"

    with open("/tmp/pytest_results.log", "a") as f:
        f.write(f"{title}: {message}\n")
Розробка ПЗ з Claude Code

Журнал виводу хука

[23:07:35] pytest FAILED: ❌; 2 failed, 15 passed

[23:07:38] pytest PASSED: ✅ All 17 tests passed!

[23:08:09] pytest PASSED: ✅ All 17 tests passed!

[23:08:12] pytest PASSED: ✅ All 17 tests passed!

Розробка ПЗ з Claude Code

Коли використовувати хуки

Блок-схема прийняття рішення, коли використовувати хуки

  • Хороші сценарії:
    • Тести після редагування файлів
    • Lint-перевірки
    • Блокування небезпечних дій
Розробка ПЗ з Claude Code

Підсумок розділу 2

Можливість Виклик Список Шлях до конфігурації
Агенти @agent-name /agents .claude/agents/name.md
Навички /skill-name /skills .claude/skills/name/SKILL.md
Хуки (автоматично) /hooks .claude/settings.json
Розробка ПЗ з Claude Code

Давайте потренуємось!

Розробка ПЗ з Claude Code

Preparing Video For Download...