Recettes de hooks et settings.json
Des recettes prêtes à l'emploi pour settings.json, les permissions et les hooks. Adaptez les commandes à votre stack.
settings.json de départ pour un projet
.claude/settings.json (versionné, partagé par l'équipe) :
{
"permissions": {
"allow": [
"Read",
"Bash(npm run test:*)",
"Bash(npm run lint)",
"Bash(git status)",
"Bash(git diff:*)"
],
"ask": ["Bash(npm install:*)", "Write"],
"deny": ["Read(./.env)", "Read(./**/*.pem)", "Bash(git push --force:*)"]
}
}
Placez les surcharges personnelles ou propres à une machine dans .claude/settings.local.json (ignoré par git).
Formatage automatique après les modifications
{
"hooks": {
"PostToolUse": [
{
"matcher": "Edit|Write",
"hooks": [
{ "type": "command", "command": "npx prettier --write \"$CLAUDE_FILE_PATH\" 2>/dev/null || true" }
]
}
]
}
}
Contrôle qualité avant de terminer
Bloquez la « fin » tant que les tests ne passent pas (conceptuel — à brancher sur un événement Stop / pré-fin selon la documentation) :
{
"hooks": {
"Stop": [
{ "hooks": [ { "type": "command", "command": "npm test --silent" } ] }
]
}
}
Garde-fou de sécurité (bloquer l'édition des chemins protégés)
{
"hooks": {
"PreToolUse": [
{
"matcher": "Edit|Write",
"hooks": [
{ "type": "command", "command": "case \"$CLAUDE_FILE_PATH\" in *secrets*|*.env|*/vendor/*) echo 'blocked: protected path'; exit 1;; esac" }
]
}
]
}
}
:::tip Gardez les hooks rapides et idempotents Ils s'exécutent en permanence. Faites-les rapides, sûrs à relancer et bruyants uniquement en cas de vrai problème. :::