Les hooks Claude Code
Les hooks sont des commandes exécutées automatiquement par Claude Code à des moments clés du workflow. Ils permettent d'automatiser la validation, le formatage, et les vérifications sans intervention manuelle.
Types de hooks disponibles
- PreToolCall : S'exécute avant qu'un outil soit appelé (ex: avant un Bash, avant un Edit)
- PostToolCall : S'exécute après l'appel d'un outil
- Notification : S'exécute quand Claude Code envoie une notification
- Stop : S'exécute quand Claude Code termine son tour
Configuration dans settings.json
Les hooks se configurent dans .claude/settings.json ou ~/.claude/settings.json :
{
"hooks": {
"PreToolCall": [
{
"matcher": "Bash(git commit.*)",
"hooks": [
{
"type": "command",
"command": "pnpm lint && pnpm test"
}
]
}
]
}
}Cas d'usage : validation pre-commit
Ce hook exécute le linter et les tests avant chaque commit :
{
"hooks": {
"PreToolCall": [
{
"matcher": "Bash(git commit.*)",
"hooks": [
{
"type": "command",
"command": "npm run lint:staged"
}
]
}
]
}
}Si le hook échoue (code de sortie non-zero), l'opération est bloquée et Claude Code voit l'erreur.
Cas d'usage : formatage post-edit
Formater automatiquement après chaque modification de fichier :
{
"hooks": {
"PostToolCall": [
{
"matcher": "Edit|Write",
"hooks": [
{
"type": "command",
"command": "prettier --write $CLAUDE_FILE_PATH"
}
]
}
]
}
}Bonnes pratiques
- Gardez les hooks rapides : Un hook lent ralentit tout le workflow
- Utilisez des matchers précis : Évitez les hooks trop larges qui se déclenchent inutilement
- Testez en isolation : Vérifiez que la commande fonctionne seule avant de la mettre en hook
- Combinez avec CLAUDE.md : Documentez vos hooks pour l'équipe
Debugging
Si un hook ne se déclenche pas, vérifiez : 1. La syntaxe du matcher (regex) 2. Que le fichier settings.json est bien chargé 3. Les permissions d'exécution de la commande