Les 5 hooks présentés dans la vidéo, prêts à copier-coller.
Ces hooks sont fournis à titre d'inspiration, pas comme une solution clé en main.
- Lis chaque script avant de l'installer. Un hook tourne avec les mêmes droits que ton shell — il peut lire, écrire, exécuter ce qu'il veut sur ta machine. Ne fais jamais tourner un script que tu n'as pas compris.
- À tes risques et périls. Aucune garantie. Si un hook bloque une commande légitime, casse ton flow ou laisse passer une commande dangereuse parce que ton cas d'usage n'était pas couvert, c'est à toi de l'ajuster.
- Adapte les patterns à ton projet. Les listes de commandes bloquées, de fichiers protégés, les chemins, les outils (Prettier vs Biome, pnpm vs npm vs yarn, etc.) — tout ça doit matcher ton stack, pas le mien.
- Teste avant de t'en remettre dessus. Mets le hook, lance volontairement un cas que tu veux voir bloqué, vérifie que ça bloque bien. Puis lance un cas légitime, vérifie que ça passe. Sinon tu vis avec une fausse impression de sécurité.
Bref : consulte ce repo pour l'inspiration, pour comprendre la mécanique des hooks, et pour partir d'une base. Pas pour copier-coller aveuglément en prod.
Chaque dossier contient un .claude/ prêt à être copié à la racine de ton projet :
hook-1-notification-sounds/ # Son quand Claude a fini ou attend
├── macos/.claude/
├── linux/.claude/
└── windows/.claude/
hook-2-block-destructive-commands/ # Bloque rm -rf, git push --force, DROP TABLE, etc.
└── .claude/
hook-3-auto-format/ # Prettier auto après chaque édition
└── .claude/
hook-4-protect-sensitive-files/ # Protège .env, lockfiles, .git/, secrets
└── .claude/
hook-5-session-context/ # Injecte branch + commits + diff au démarrage
└── .claude/
- Choisis le hook que tu veux.
- Copie le contenu du dossier
.claude/à la racine de ton projet (fusionne avec ton.claude/existant si tu en as déjà un — attention à ne pas écraser tonsettings.json). - Sur macOS / Linux, rends les scripts exécutables :
chmod +x .claude/hooks/*.sh - Relance Claude Code dans le projet.
Si tu installes plusieurs hooks, fusionne les settings.json manuellement — Claude Code ne mergera pas deux fichiers automatiquement. Les events (PreToolUse, PostToolUse, Stop, etc.) sont des tableaux : tu peux empiler plusieurs entrées dedans.
Voici le settings.json complet qui active les 5 hooks d'un coup (version macOS pour les sons — adapte la partie Notification / Stop selon ton OS) :
{
"hooks": {
"SessionStart": [
{
"hooks": [
{
"type": "command",
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/session-context.sh"
}
]
}
],
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [
{
"type": "command",
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/guard-bash.sh"
}
]
},
{
"matcher": "Edit|Write|MultiEdit|Bash",
"hooks": [
{
"type": "command",
"command": "$CLAUDE_PROJECT_DIR/.claude/hooks/protect-files.sh"
}
]
}
],
"PostToolUse": [
{
"matcher": "Write|Edit|MultiEdit",
"hooks": [
{
"type": "command",
"command": "pnpm exec prettier --write \"$CLAUDE_TOOL_INPUT_FILE_PATH\" 2>/dev/null || true"
}
]
}
],
"Notification": [
{
"hooks": [
{
"type": "command",
"command": "afplay /System/Library/Sounds/Glass.aiff"
}
]
}
],
"Stop": [
{
"hooks": [
{
"type": "command",
"command": "afplay /System/Library/Sounds/Hero.aiff"
}
]
}
]
}
}Copie ce JSON dans ton .claude/settings.json, puis place les trois scripts (guard-bash.sh, protect-files.sh, session-context.sh) dans .claude/hooks/ et rends-les exécutables avec chmod +x .claude/hooks/*.sh.
- Hook #1 :
afplay(macOS, natif),paplay(Linux, paquetpulseaudio-utils), PowerShell (Windows, natif). - Hook #2 : bash.
- Hook #3 : Prettier installé localement (
pnpm add -D prettier, ounpm/yarn). - Hook #4 : bash + Node.js (utilisé pour parser le JSON sans dépendre de
jq). - Hook #5 : bash + git.
Sur Windows, bash est dispo via Git Bash (livré avec Git for Windows) ou WSL.
Fais-en ce que tu veux. Mais sérieusement, relis les scripts avant de les lancer.