Automatyzacja kontroli za pomocą hooków

Tworzenie oprogramowania z Claude Code

Dani Zysman

AI Curriculum Manager @ DataCamp

Problem ręcznej pracy

recraft: half: Zmęczony programista przy biurku, ręcznie uruchamiający to samo polecenie w kółko

  • Hooki uruchamiają się, gdy Claude wykonuje konkretną akcję
  • Hooki działają automatycznie: świetne do powtarzalnych zadań
  • Hooki zapobiegają pomijaniu kroków w procesie
Tworzenie oprogramowania z Claude Code

Czym są hooki?

  • Narzędzia:
    • Odczyt/zapis plików
    • Uruchamianie poleceń
  • Hooki:

    • Zdefiniowane przez użytkownika polecenia powłoki, które uruchamiają się automatycznie
    • Konfigurowane w .claude/settings.json
    • Traktuj je jak zasadę „jeżeli to, wtedy tamto" dla Claude Code

    Użyj /hooks, aby zobaczyć aktywne hooki

Tworzenie oprogramowania z Claude Code

Projekt do tej pory

music-analytics-api/
  app.py
  routes.py
  test_routes.py    
  CLAUDE.md
  .claude/
    agents/
    skills/
    settings.json    # <- Hook configuration
Tworzenie oprogramowania z Claude Code

Typy hooków i przepływ pracy

Diagram przepływu pracy hooków

PreToolUse: uruchamia się przed wykonaniem narzędzia → użyj go, aby sprawdzić lub zablokować niebezpieczne operacje

PostToolUse: uruchamia się po zakończeniu działania narzędzia → użyj go do uruchamiania testów, sprawdzania jakości kodu lub zapisywania wyników

Tworzenie oprogramowania z Claude Code

Konfigurowanie hooka

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Write|Edit",
        "hooks": [
          {
            "type": "command",
            "command": "cd $CLAUDE_PROJECT_DIR && python -m pytest --tb=short -q"
          }
        ]
      }
    ]
  }
}
Tworzenie oprogramowania z Claude Code

Przechwytywanie wyników hooka

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")
Tworzenie oprogramowania z Claude Code

Dziennik wyników hooka

[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!

Tworzenie oprogramowania z Claude Code

Kiedy używać hooków?

Schemat decyzyjny: kiedy używać hooków

  • Dobre zastosowania:
    • Testy po edycji plików
    • Sprawdzanie jakości kodu
    • Blokady bezpieczeństwa
Tworzenie oprogramowania z Claude Code

Podsumowanie rozdziału 2

Funkcja Wywołanie Lista Ścieżka konfiguracji
Agenci @agent-name /agents .claude/agents/name.md
Umiejętności /skill-name /skills .claude/skills/name/SKILL.md
Hooki (automatycznie) /hooks .claude/settings.json
Tworzenie oprogramowania z Claude Code

Czas na praktykę!

Tworzenie oprogramowania z Claude Code

Preparing Video For Download...