Hooks: automatiseer je workflow
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
| Event | Wanneer | Typisch gebruik |
|---|---|---|
| PreToolUse | Vóór een tool-actie | Validatie, security checks |
| PostToolUse | Na een tool-actie | Linting, formatting, tests |
| Notification | Bij een notificatie | Telegram/Slack alerts |
| SessionStart | Bij sessie start/compact | Context 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"
}
]
}
]
}
}
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.
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:
| Feature | Wat het doet | Wanneer |
|---|---|---|
| Hooks | Automatisch bij events | Altijd, zonder nadenken |
| Slash commands | Handmatig activeren | Wanneer jij het wilt |
| Skills | Herbruikbare instructies | Complexe, 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.
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
matcherbepaalt wanneer een hook afgaat - Configuratie in
.claude/settings.json - Hooks draaien stil — test ze goed voordat je ze inzet