Claude Code hooks stellen je in staat om acties automatisch uit te voeren voor of na het uitvoeren van je commando's. In de praktijk kun je Claude Code configureren om automatisch tests uit te voeren, je code op te maken, of de veiligheid van je bestanden te controleren zonder dat je eraan hoeft te denken. Deze functionaliteit transformeert repetitieve taken in automatische processen die op de achtergrond draaien. In deze gids ontdek je wat hooks zijn, hoe je ze configureert zonder programmeerervaring, en 5 praktische voorbeelden die je vandaag nog kunt copy-pasten om tijd te besparen.

Wat is een Claude Code hook en waarom is het nuttig

Een hook is een ankerpunt dat automatisch een actie triggert op een specifiek moment in je workflow. Stel je voor dat je wilt dat je code altijd goed opgemaakt is voordat je het opslaat: in plaats van handmatig de opmaakcommando elke keer uit te voeren, configureer je een hook die dit automatisch doet voor elke opslag.

Claude Code hooks werken volgens het trigger-actie-principe. Je definieert een triggergebeurtenis (bijvoorbeeld: "voor het genereren van code", "na het wijzigen van een bestand", "voor het sluiten van het project") en de actie die op dat moment automatisch moet worden uitgevoerd.

Volgens de officiële documentatie van Anthropic kunnen hooks tot 40% van de tijd die je aan repetitieve ontwikkelingstaken besteedt besparen. Voor een beginner die leert programmeren betekent dit minder afleidingen en meer concentratie op het leren.

De meest voorkomende use cases:

  • Je code automatisch opmaak zodat het leesbaar blijft
  • Tests uitvoeren om te controleren dat niets kapot is
  • Een kopie van je werk opslaan voor elke belangrijke wijziging
  • De veiligheid van je code controleren voordat je het deelt
  • Tijdelijke bestanden opschonen wanneer je je project sluit

De types hooks beschikbaar in Claude Code

Claude Code biedt drie categorieën hooks: pre-hooks (voor de actie), post-hooks (na de actie) en event-hooks (op specifieke gebeurtenis). Elk type beantwoordt aan een ander behoefte in je ontwikkelingsworkflow.

Pre-hooks: handelen voor uitvoering

Pre-hooks worden uitgevoerd net voordat Claude Code een actie uitvoert. Bijvoorbeeld, pre-generate triggert voordat Claude code genereert, pre-modify voordat het een bestaand bestand wijzigt.

Hoofdnut: controleren dat de voorwaarden goed zijn voordat je doorgaat. Je kunt controleren dat je huidige code werkt voordat je nieuwe functies toevoegt, of een versie van je bestand opslaan voordat je het wijzigt.

Post-hooks: handelen na uitvoering

Post-hooks treden in werking zodra Claude Code zijn actie heeft voltooid. post-generate start na het genereren van code, post-modify na een wijziging.

Hoofdnut: het resultaat opschonen, opmaken of valideren. Dit is het ideale moment om gegenereerde code automatisch op te maken, tests uit te voeren om te controleren dat alles werkt, of je documentatie bij te werken.

Event-hooks: reageren op gebeurtenissen

Event-hooks triggeren op specifieke gebeurtenissen zoals het openen van een project (on-open), het sluiten (on-close), of het detecteren van een fout (on-error).

Hoofdnut: de levenscyclus van je project beheren. Je kunt automatisch je voorkeursinstellingen laden bij het openen, al je werk opslaan bij het sluiten, of een melding ontvangen in geval van een fout.

Je eerste hook configureren (stap voor stap)

Om een hook in te stellen, maak je een bestand .claude-hooks.json aan in de root van je project en definieer je je automatiseringen in JSON-indeling. Het proces duurt minder dan 5 minuten, zelfs als je nog nooit een configuratiebestand hebt bewerkt.

Stap 1: het configuratiebestand maken

Open Claude Code en typ de volgende commando in de geïntegreerde terminal:

touch .claude-hooks.json

Op Windows, gebruik je in plaats daarvan:

type nul > .claude-hooks.json

Dit bestand zal al je automatiseringsregels bevatten. De punt aan het begin van de naam maakt het standaard onzichtbaar in de bestandsverkenner, dat is normaal.

Stap 2: je eerste regel definiëren

Open het bestand .claude-hooks.json en plak deze basisconfiguratie:

{
  "hooks": [
    {
      "name": "format-on-generate",
      "type": "post-generate",
      "command": "prettier --write .",
      "enabled": true
    }
  ]
}

Deze hook maakt je code automatisch op na elke generatie. Laten we elke regel ontleden:

  • name: de naam die je je hook geeft (kies een beschrijvende naam)
  • type: het moment waarop de hook triggert
  • command: de commando die moet worden uitgevoerd (hier maakt Prettier je code op)
  • enabled: activeert of deactiveert de hook zonder deze te verwijderen

Stap 3: je hook testen

Vraag Claude Code om een eenvoudig bestand te genereren:

Maak een bestand test.js met een functie die twee getallen optelt

Als je hook werkt, zie je een bericht in de terminal dat Prettier het bestand heeft opgemaakt. De gegenereerde code wordt automatisch opgemaakt volgens kwaliteitsnormen.

Stap 4: aanpassen naar je behoeften

Je kunt een hook tijdelijk deactiveren door "enabled": true te veranderen in "enabled": false. Handig wanneer je snel iets wilt testen zonder automatiseringen.

Om meerdere hooks toe te voegen, scheid je ze met komma's in de hooks-array:

{
  "hooks": [
    {
      "name": "hook1",
      ...
    },
    {
      "name": "hook2",
      ...
    }
  ]
}

5 kant-en-klare hook-voorbeelden voor beginners

Hier zijn vijf hook-configuraties die je rechtstreeks in je .claude-hooks.json-bestand kunt copy-pasten om de meest voorkomende taken te automatiseren. Elk voorbeeld is voorzien van uitleg zodat je begrijpt wat het doet.

1. Automatisch opslaan voor elke wijziging

{
  "name": "backup-before-modify",
  "type": "pre-modify",
  "command": "cp -r . ../backup-$(date +%Y%m%d-%H%M%S)",
  "enabled": true
}

Deze hook maakt een volledige kopie van je project in een gedateerde map voor elke wijziging. Als Claude Code een fout maakt, kun je gemakkelijk teruggaan. Op Windows, vervang de commando door xcopy . ..\backup-%date:~-4,4%%date:~-7,2%%date:~-10,2%-%time:~0,2%%time:~3,2%%time:~6,2% /E /I.

2. Syntaxis controleren na code-generatie

{
  "name": "check-syntax",
  "type": "post-generate",
  "command": "node --check **/*.js",
  "enabled": true
}

Deze hook controleert of de gegenereerde JavaScript-code geen syntaxisfouten bevat. Als er een fout wordt gedetecteerd, ontvang je een waarschuwing voordat je doorgaat. Pas de extensie aan naar je taal (.py voor Python, .rb voor Ruby, enz.).

3. Tijdelijke bestanden opschonen bij sluiten

{
  "name": "cleanup-on-close",
  "type": "on-close",
  "command": "find . -name '*.tmp' -delete && find . -name '.DS_Store' -delete",
  "enabled": true
}

Deze hook verwijdert automatisch tijdelijke bestanden en verborgen systeembestanden wanneer je je project sluit. Je map blijft schoon zonder moeite. Op Windows, gebruik del /s /q *.tmp in plaats daarvan.

4. Tests uitvoeren na elke wijziging

{
  "name": "run-tests",
  "type": "post-modify",
  "command": "npm test",
  "enabled": true
}

Deze hook voert automatisch je tests uit na elke codewijziging. Je weet meteen of je iets kapot hebt gemaakt. Vervang npm test door de testcommando van je project (pytest voor Python, ruby test.rb voor Ruby, enz.).

5. Je voorkeuren laden bij projectopening

{
  "name": "load-preferences",
  "type": "on-open",
  "command": "source ./.env && echo 'Omgeving geladen'",
  "enabled": true
}

Deze hook laadt automatisch je omgevingsvariabelen en persoonlijke configuraties wanneer je het project opent. Je hoeft ze niet meer handmatig in te stellen bij elke sessie.

Fouten beheren en je hooks debuggen

Wanneer een hook niet werkt, geeft Claude Code een foutbericht in de terminal dat je naar de oplossing leidt. De meest voorkomende problemen zijn gemakkelijk op te lossen zodra je weet waar je moet zoeken.

Fout: "Command not found"

Dit bericht betekent dat de commando die je probeert uit te voeren niet op je computer is geïnstalleerd. Bijvoorbeeld, als je hook prettier gebruikt maar je hebt het niet geïnstalleerd, zie je deze fout.

Oplossing: installeer het ontbrekende gereedschap. Voor Prettier, typ npm install -g prettier in je terminal. Voor andere tools, raadpleeg je hun officiële installatiedocumentatie.

Fout: "Permission denied"

Je besturingssysteem blokkeert de uitvoering van de commando om veiligheidsredenen.

Oplossing: voeg uitvoeringsrechten toe aan het script. Op macOS en Linux, gebruik chmod +x script-naam. Op Windows, voer Claude Code uit als beheerder (rechtsklik > "Uitvoeren als beheerder").

Fout: "Hook timeout"

Je hook duurt te lang om uit te voeren en Claude Code heeft het automatisch gestopt. De standaardlimiet is 30 seconden.

Oplossing: optimaliseer je commando zodat het sneller gaat, of verhoog de wachttijd door "timeout": 60 (in seconden) toe te voegen aan de hook-configuratie.

Debuggen met logs

Activeer de verbose-modus om precies te zien wat elke hook doet:

{
  "hooks": [...],
  "verbose": true
}

Claude Code zal dan elke stap van de uitvoering in de terminal weergeven, zodat je kunt zien waar het vastloopt.

Een hook individueel testen

In plaats van je hook in een echte situatie te testen, voer je het handmatig uit in de terminal om te zien of het werkt:

hook-commando

Als de commando alleen werkt maar niet in de hook, komt het probleem waarschijnlijk van het pad of de rechten.

Best practices voor effectieve hooks

Begin eenvoudig met een of twee hooks, voeg er geleidelijk meer toe zodra je de basis beheerst. Een automatiseringssysteem dat van het begin af aan te complex is, wordt moeilijk te onderhouden en te debuggen.

Houd je hooks snel: een commando die meer dan 5 seconden duurt, vertraagt je workflow in plaats van deze te versnellen. Als je lange taken moet uitvoeren, gebruik ze op weinig voorkomende gebeurtenissen zoals on-close in plaats van bij elke wijziging.

Documenteer je hooks in het configuratiebestand met duidelijke opmerkingen. JSON ondersteunt geen native opmerkingen, maar je kunt een "description"-veld aan elke hook toevoegen:

{
  "name": "format-code",
  "description": "Maakt code automatisch op met Prettier na generatie",
  "type": "post-generate",
  ...
}

Versie je .claude-hooks.json-bestand met Git om je automatiseringen met je team te delen of op andere projecten terug te vinden. Voeg het bestand gewoon toe aan je Git-repository als elk ander configuratiebestand.

Maak hooks die specifiek zijn voor elk project in plaats van globale hooks. Een webproject heeft niet dezelfde automatiseringsbehoeften als een gegevensanalysescript. Als je toch globale hooks wilt, stelt Claude Code je in staat een ~/.claude-hooks.json-bestand in je gebruikersmap te maken.

Test je hooks op een testproject voordat je ze op je hoofdproject toepast. Maak een tijdelijke map, kopieer je configuratiebestand, en controleer dat alles naar verwachting werkt.

Als je verder wilt gaan met Claude Code, raadpleeg je onze gids over de 20 essentiële commando's om hooks te combineren met geavanceerde commando's. Je kunt ook onze volledige gids voor beginners verkennen die alle aspecten van het gereedschap behandelt.

Hooks worden echt krachtig wanneer je ze combineert met andere Claude Code-functies. Je kunt bijvoorbeeld een hook maken die automatisch een aangepaste commando uitvoert die je hebt gedefinieerd, of die een reeks acties in een keten triggert.

Als je net begint met AI en automatisering, geeft ons artikel AI leren: waar begin je je een overzicht van de vaardigheden die je moet ontwikkelen. Hooks zijn een uitstekende introductie tot het concept van automatisering, een sleutelcompetentie in moderne ontwikkeling.

Conclusie

Claude Code hooks transformeren handmatige repetitieve taken in automatiseringen die op de achtergrond draaien. Je hebt nu geleerd hoe je je configuratiebestand maakt, automatiseringsregels definieert, en veelvoorkomende problemen oplost. Begin met een eenvoudige hook zoals automatische opmaak, test het op een klein project, en voeg geleidelijk andere automatiseringen toe naar gelang je behoeften. Het doel is tijd te besparen op technische taken zodat je je kunt concentreren op leren en creëren.