Automatisera kontroller med hooks

Mjukvaruutveckling med Claude Code

Dani Zysman

AI Curriculum Manager @ DataCamp

Det manuella problemet

recraft: half: A developer at a desk looking tired, manually running the same command over and over

  • Hooks utlöses när Claude kör en specifik åtgärd
  • Hooks körs automatiskt: perfekt för återkommande uppgifter
  • Hooks förhindrar att steg i en process hoppas över
Mjukvaruutveckling med Claude Code

Vad är hooks?

  • Verktyg:
    • Läsa/skriva filer
    • Köra ett kommando
  • Hooks:

    • Användardefinierade skalkommandon som körs automatiskt
    • Konfigureras i .claude/settings.json
    • Tänk på dem som "om detta, så det" för Claude Code

    Använd /hooks för att lista vad som är aktivt

Mjukvaruutveckling med Claude Code

Projektet hittills

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

Hook-typer och arbetsflöde

Flödesschema för hooks

PreToolUse: utlöses innan verktyget körs → Använd den för att granska eller blockera farliga åtgärder

PostToolUse: utlöses efter att verktyget är klart → Använd den för att köra tester, lintkontroller eller logga resultat

Mjukvaruutveckling med Claude Code

Konfigurera en hook

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

Fånga hook-utdata

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")
Mjukvaruutveckling med Claude Code

Logg för hook-utdata

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

Mjukvaruutveckling med Claude Code

När du ska använda hooks

Beslutsschema för när du bör använda hooks

  • Bra kandidater:
    • Tester efter filredigeringar
    • Lintkontroller
    • Säkerhetsspärrar
Mjukvaruutveckling med Claude Code

Sammanfattning av kapitel 2

Funktion Anropa Lista Konfigurationssökväg
Agents @agent-name /agents .claude/agents/name.md
Skills /skill-name /skills .claude/skills/name/SKILL.md
Hooks (automatisk) /hooks .claude/settings.json
Mjukvaruutveckling med Claude Code

Nu kör vi en övning!

Mjukvaruutveckling med Claude Code

Preparing Video For Download...