Hooks: automatiseer je workflow

12 min Gevorderd Pro

Hooks: automatiseer je workflow

Hooks zijn shell commando’s die automatisch draaien wanneer er iets gebeurt in Claude Code. Denk aan een alarmsysteem: je stelt het in, en het gaat vanzelf af als er iets gebeurt.

Wat zijn hooks?

Een hook is een script dat Claude Code uitvoert bij een specifiek event. Bijvoorbeeld:

  • Voor elke bestandswijziging: lint check draaien
  • Na een succesvolle test: automatisch committen
  • Bij een notificatie: een Telegram-bericht sturen
  • Bij sessiestart: context opnieuw laden

Je configureert hooks in .claude/settings.json en ze draaien zonder dat je er iets voor hoeft te doen.

De vier hook events

EventWanneerTypisch gebruik
PreToolUseVóór een tool-actieValidatie, security checks
PostToolUseNa een tool-actieLinting, formatting, tests
NotificationBij een notificatieTelegram/Slack alerts
SessionStartBij sessie start/compactContext herladen

Praktijkvoorbeeld 1: Lint check bij elke edit

Je wilt dat elke bestandswijziging automatisch door ESLint gaat:

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "npx eslint --fix $FILEPATH 2>/dev/null || true"
          }
        ]
      }
    ]
  }
}

Wat gebeurt er? Na elke Edit of Write actie draait ESLint automatisch. Fouten worden direct gefixt. Je hoeft er niet aan te denken.

Praktijkvoorbeeld 2: Auto-commit na tests

Na elke succesvolle test run wil je automatisch committen:

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Bash",
        "hooks": [
          {
            "type": "command",
            "command": "if echo $TOOL_INPUT | grep -q 'npm test'; then git add -A && git commit -m 'auto: tests passing' 2>/dev/null; fi"
          }
        ]
      }
    ]
  }
}
Tip

De matcher bepaalt bij welke tool de hook afgaat. Gebruik Edit|Write voor bestandswijzigingen, Bash voor terminal commando’s, of een specifieke toolnaam.

Praktijkvoorbeeld 3: Telegram notificatie

Wil je een berichtje op je telefoon als Claude klaar is met een grote taak?

{
  "hooks": {
    "Notification": [
      {
        "matcher": "",
        "hooks": [
          {
            "type": "command",
            "command": "curl -s 'https://api.telegram.org/bot<JOUW_TOKEN>/sendMessage' -d 'chat_id=<JOUW_ID>' -d 'text=Claude is klaar!'"
          }
        ]
      }
    ]
  }
}

Een lege matcher bij Notification betekent: bij elke notificatie. Perfect voor als je even koffie haalt terwijl Claude doorwerkt.

Praktijkvoorbeeld 4: Context herladen na compact

Als je sessie lang wordt, comprimeert Claude de context met /compact. Maar daarbij kan belangrijke info verloren gaan. Met een SessionStart hook laad je die opnieuw:

{
  "hooks": {
    "SessionStart": [
      {
        "matcher": "compact",
        "hooks": [
          {
            "type": "command",
            "command": "echo 'Herinnering: gebruik TypeScript strict mode. Test met npm test. Deploy nooit naar main zonder review.'"
          }
        ]
      }
    ]
  }
}

De output van het commando wordt als context aan Claude meegegeven. Slim om hier je belangrijkste projectregels te herhalen.

Hooks configureren

Hooks komen in .claude/settings.json. De structuur is altijd:

{
  "hooks": {
    "<EventNaam>": [
      {
        "matcher": "<welke tool of trigger>",
        "hooks": [
          {
            "type": "command",
            "command": "<shell commando>"
          }
        ]
      }
    ]
  }
}

Je kunt meerdere hooks per event instellen, en meerdere events tegelijk.

Let op

Hooks draaien automatisch en stil. Test ze goed voordat je ze in je dagelijkse workflow zet. Een kapotte hook kan je hele sessie vertragen.

Hooks vs slash commands vs skills

Drie manieren om Claude te automatiseren — maar ze doen verschillende dingen:

FeatureWat het doetWanneer
HooksAutomatisch bij eventsAltijd, zonder nadenken
Slash commandsHandmatig activerenWanneer jij het wilt
SkillsHerbruikbare instructiesComplexe, herhaalbare taken

Hooks zijn de enige die zonder jouw actie draaien. Dat maakt ze perfect voor quality gates en notificaties.

Beginners setup

Wil je snel starten? Kopieer dit naar .claude/settings.json:

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Edit|Write",
        "hooks": [
          {
            "type": "command",
            "command": "echo 'Bestand gewijzigd — overweeg een git commit'"
          }
        ]
      }
    ]
  }
}

Dit geeft een zachte herinnering na elke bestandswijziging. Simpel, maar effectief.

Checkpoint bereikt!

Wat je nu moet kunnen:

Je weet nu:

  • Hooks zijn automatische shell commando’s bij Claude Code events
  • Vier events: PreToolUse, PostToolUse, Notification, SessionStart
  • De matcher bepaalt wanneer een hook afgaat
  • Configuratie in .claude/settings.json
  • Hooks draaien stil — test ze goed voordat je ze inzet
Pro

Premium les

Upgrade naar Pro om "Hooks: automatiseer je workflow" volledig te bekijken.

Maak een account