Skip to content

BenBktech/Hooks-Claude-Code

Repository files navigation

Claude Code — 5 hooks à shipper aujourd'hui

Les 5 hooks présentés dans la vidéo, prêts à copier-coller.

⚠️ À lire avant d'utiliser

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.

Structure

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/

Installation rapide

  1. Choisis le hook que tu veux.
  2. 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 ton settings.json).
  3. Sur macOS / Linux, rends les scripts exécutables :
    chmod +x .claude/hooks/*.sh
  4. Relance Claude Code dans le projet.

Combiner plusieurs hooks

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.

Tout en un : les 5 hooks combinés

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.

Prérequis

  • Hook #1 : afplay (macOS, natif), paplay (Linux, paquet pulseaudio-utils), PowerShell (Windows, natif).
  • Hook #2 : bash.
  • Hook #3 : Prettier installé localement (pnpm add -D prettier, ou npm / 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.

Licence

Fais-en ce que tu veux. Mais sérieusement, relis les scripts avant de les lancer.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages