Hooks SmartStackSmartStack Hooks

SmartStack CLI déploie un ensemble de hooks Claude Code qui agissent en garde-fous pendant les sessions de développement assisté par IA. SmartStack CLI deploys a set of Claude Code hooks that act as guard rails during AI-assisted development sessions.

Les hooks sont installés dans /.claude/hooks/ et déclenchés par les évènements Claude Code (PreToolUse, PostToolUse, Stop, etc.) selon la configuration de /.claude/settings.json. Hooks live in /.claude/hooks/ and are triggered by Claude Code events (PreToolUse, PostToolUse, Stop, …) per the /.claude/settings.json configuration.

Hooks déployésDeployed hooks

Hook DéclencheurTrigger RôleRole
git-guard.cjs PreToolUse (Bash) Bloque le git commit brut en shell — les commits passent par le chemin sanctionné /gitflow commit, qui applique les gardes (validation EF Core, message conventionnel)Blocks raw shell git commit — commits go through the sanctioned /gitflow commit path, which enforces the guards (EF Core validation, conventional message)
ef-guard.cjs PreToolUse (Bash) Bloque le dotnet ef brut en shell — les migrations passent par /efcore (politique de risque 3 paliers)Blocks raw shell dotnet ef — migrations go through /efcore (3-tier risk policy)
ba-audit-guard.cjs PreToolUse (Task) Bloque le lancement d'un sous-agent chargé d'appliquer À LA MAIN les règles d'audit BA sur le corpus .smartstack/ba/ (le scénario à 394 M tokens) — l'audit mécanique passe par le CLI déterministe /ba-audit-run ; les prompts qui citent le moteur passent. Débrayable via BA_AUDIT_GUARD_OFF=1 (utilisateur uniquement)Blocks launching a subagent asked to apply the BA audit rules BY HAND over the .smartstack/ba/ corpus (the 394M-token scenario) — mechanical auditing goes through the deterministic /ba-audit-run CLI; prompts citing the engine pass. Disable with BA_AUDIT_GUARD_OFF=1 (user-only)
appsettings-guard.sh PreToolUse (Write) Bloque l'écriture de secrets dans appsettings..json (les secrets vont dans appsettings.Local.json, gitignoré)Blocks writing secrets into appsettings..json (secrets belong in the gitignored appsettings.Local.json)
wsl-dotnet-cleanup.sh PostToolUse (Bash) Nettoie les processus dotnet orphelins sous WSL après les commandes shellCleans up orphaned dotnet processes on WSL after shell commands

Le câblage évènement → hook est livré dans hooks.json et fusionné dans /.claude/settings.json par ss install. Les gardes git-guard/ef-guard/ba-audit-guard ne bloquent que le chemin brut : le chemin sanctionné (/gitflow, /efcore, /ba-audit-run) reste entièrement fonctionnel. The event → hook wiring ships in hooks.json and is merged into /.claude/settings.json by ss install. The git-guard/ef-guard/ba-audit-guard guards only block the raw path: the sanctioned path (/gitflow, /efcore, /ba-audit-run) remains fully functional.

Personnaliser un hookCustomising a hook

Ne modifiez jamais directement les fichiers de /.claude/hooks/ — ils sont écrasés à la prochaine mise à jour. Forkez le hook depuis templates/hooks/ du repo CLI, ou ajoutez un hook complémentaire dans /.claude/settings.local.json. Never edit the files in /.claude/hooks/ directly — they are overwritten on the next update. Fork the hook from templates/hooks/ in the CLI repo, or add a complementary hook in /.claude/settings.local.json.

DiagnosticDiagnostics

ss doctor             # vérifie hooks + skills + settings
ss doctor --json      # sortie machine