Claude Code hooks: start een vaste controle na een bewerking

Claude Code heeft een knoptekst aangepast. Het scherm ziet er goed uit, maar in de Engelse versie staat nu een lege knop. Je had gevraagd alle talen bij te werken. Zo'n afspraak wil je niet iedere keer opnieuw uitleggen. Je wilt een kleine controle die ontbrekende vertalingen aanwijst zodra er iets verandert.
Daar passen Claude Code hooks bij: je koppelt een controle aan een vast moment in het werk. Begin met één terugkerende fout die een programma eenduidig kan herkennen. Dat levert een begrijpelijker werkwijze op dan meteen een verzameling hooks voor je hele project bouwen.
Kies eerst wat de controle moet bewijzen
Neem een oefenproject: een app waarmee medewerkers zich inschrijven voor een interne training. De knoppen staan in Nederlandse en Engelse taalbestanden. Beide bestanden moeten dezelfde sleutels hebben. Als registration.cancel in het Nederlands bestaat, moet er ook een Engelse tekst voor zijn. Dat is een duidelijke, beperkte kwaliteitsregel.
Een automatische controle kan sleutels vergelijken en ontbrekende waarden melden. Hij kan niet betrouwbaar bepalen of de Engelse zin vriendelijk klinkt of dat de knop op de juiste plek staat. Voor die vragen blijft beoordeling nodig. Leg vooraf vast welk antwoord je van de controle verwacht, anders krijgt een groen resultaat ongemerkt een te grote betekenis.
Laat Claude eerst de bestaande projectopdracht zoeken die dit controleert. Ontbreekt die, vraag dan om een klein controleprogramma met een test voor een ontbrekende sleutel. Een hook is de aanleiding om dat programma te starten; de inhoudelijke controle zit in het programma zelf.
Koppel de controle aan een bewerking
De officiële hookhandleiding beschrijft hoe je commando's aan gebeurtenissen koppelt. Voor dit voorbeeld kiezen we PostToolUse: na een geslaagde toolaanroep. De matcher Edit|Write beperkt de aanleiding tot de twee genoemde bewerkingstools.
Stel dat dit npm-project al een script check:labels heeft. Dan kan dit onderdeel van .claude/settings.json worden:
{
"hooks": {
"PostToolUse": [{
"matcher": "Edit|Write",
"hooks": [{
"type": "command",
"command": "npm --prefix \"$CLAUDE_PROJECT_DIR\" run check:labels"
}]
}]
}
}Voeg de instelling samen met bestaande instellingen. Vervang niet het hele bestand. Dit voorbeeld gebruikt Bash-syntaxis en veronderstelt dat Node, npm en de projectafhankelijkheden beschikbaar zijn. Gebruik voor PowerShell de bijbehorende shell- en omgevingsvariabelensyntaxis uit de officiële hookreferentie. Gebruikt jouw project een andere pakketbeheerder, neem dan het bijbehorende projectcommando over.
De controle leest hier de vaste taalbestanden. We bouwen geen shellcommando van een doorgegeven bestandsnaam. Dit voorbeeld controleert de oorspronkelijke projectmap. Na het binnengaan van een worktree blijft CLAUDE_PROJECT_DIR naar die startmap wijzen. Laat het controleprogramma voor worktrees de actuele cwd uit de JSON-invoer van de hook gebruiken; het bovenstaande commando is daarvoor niet geschikt. Open daarna /hooks om de geregistreerde hook te bekijken.
Maak het oefenvoorbeeld bewust rood
Voeg in een werkbranch alleen de Nederlandse sleutel voor een annuleerknop toe. Vraag Claude de wijziging via de bewerkingstool te doen. De gewenste melding is concreet: de Engelse sleutel ontbreekt, met de naam van het taalbestand en de sleutel. Vervolgens voeg je de Engelse tekst toe en laat je de controle opnieuw draaien.
Kijk naar beide uitkomsten. Alleen een geslaagde uitvoering laat niet zien of de controle iets kan vinden. Met een bewust aangebrachte fout controleer je de foutdetectie én of de melding bruikbaar is. Een melding als 'validatie mislukt' vraagt te veel zoekwerk. 'Engelse vertaling registration.cancel ontbreekt' geeft een gerichte volgende stap.
Verander daarna een Nederlandse zin zonder een sleutel te verwijderen. De controle hoort dan te slagen. Daarmee voorkom je dat je een hook instelt die bij elke gewone tekstaanpassing onterecht alarm slaat.
Na een bewerking is de wijziging al gedaan
De hookreferentie maakt een belangrijk onderscheid: PostToolUse draait nadat de tool zijn werk heeft gedaan. Een foutmelding draait die bewerking niet terug. Bovendien gaat deze matcher niet af als een shellcommando dezelfde bestanden herschrijft. Voer de controle daarom ook uit als gewone projectcheck voordat je de wijziging samenvoegt.
Dat past bij het doel van deze hook: tijdens het werken vroeg feedback geven. Je voorkomt geen ongewenste toegang tot bestanden en je bewijst niet dat de hele app klopt. De fout is hier bovendien nog lokaal te herstellen; daar is een melding voldoende bruikbaar.
Wil je op een ander moment echt blokkeren, onderzoek dan het gekozen event en zijn uitvoercontract apart. Een willekeurige foutcode betekent niet bij elk event dat de actie wordt tegengehouden. Een filter op een woord in een shellcommando is ook geen complete beveiliging tegen andere manieren om dezelfde actie uit te voeren.
Houd de terugkoppeling klein
Een controle na elke bewerking moet weinig werk doen en een korte uitslag geven. Een volledige browsertest na iedere gewijzigde komma onderbreekt de bouw telkens. De vertaalcontrole past beter: hij controleert een paar bestanden, gebruikt geen externe dienst en heeft een begrensd antwoord.
Laat de hook in dit voorbeeld alleen lezen en rapporteren. Automatisch ontbrekende vertalingen invullen zou de fout kunnen verbergen met een tekst die niemand heeft beoordeeld. Je wilt weten dat er een keuze ontbreekt, zodat iemand die keuze bewust maakt.
Bespreek na een paar wijzigingen of de controle nog helpt. Wordt hij veel te vaak gestart voor ongerelateerde bestanden, verfijn dan pas de selectie. Voeg geen tweede en derde automatisering toe voordat de eerste een nuttige foutmelding oplevert.
Van afspraak naar vaste werkwijze
Schrijf in de projectuitleg wat de controle bewijst en hoe je hem handmatig draait. Dan kan ook een collega zonder deze hook dezelfde fout vinden. De uitleg over Claude Code hooks en de complete handleiding geven meer achtergrond.
Wil je leren hoe zulke controles passen bij agents en skills? In Claude Code voor gevorderden werk je aan die samenhang in je eigen werkwijze.
Bronnen en datum
Bijgewerkt op 27 oktober 2026. De productfeiten zijn gecontroleerd in de volgende officiële bronnen.
Zelf aan de slag met Vibe Coding?
Leer hoe je met AI-tools werkende apps bouwt. Onze praktische cursussen nemen je stap voor stap mee.
Blijf op de hoogte
Ontvang maandelijks de nieuwste tips over vibe coding, AI tools en exclusieve content.
Meer artikelen
Codex op Windows: kies bewust tussen native en WSL2
Je kunt Codex native op Windows gebruiken of binnen WSL2. Kies op basis van je project, en controleer apart waar de terminal en de agent draaien.
Copilot Home, Code en Autopilot: wat kun je ermee?
Microsoft brengt chat, agents en apps bouwen samen in Copilot. Ik leg uit wat Home, Code en Autopilot betekenen en hoe je een bruikbare eerste proef kiest.
Een MCP-server bouwen met één eenvoudige voorraadtool
Bouw een kleine MCP-server die fictieve voorraad uitleest. Je ziet het entrypoint, invoerschema, resultaat en foutgedrag zonder een bedrijfssysteem aan te sluiten.