# Recettes d'agents Livrable du point 1.8 de **#426**. Ce document dit ce que le dépôt offre pour travailler avec un agent : les agents disponibles, les hooks qui les contraignent, et les scripts d'appui. Il existe parce que `.claude/README.md` décrivait un répertoire `templates/` inexistant tout en taisant seize agents et huit hooks. Une configuration qu'on ne peut pas trouver ne sert à personne. --- ## 1. Les huit hooks, et ce qu'ils empêchent vraiment Un hook qui « avertit » et un hook qui « bloque » ne se remplacent pas. La colonne compte autant que le nom. | Hook | Moment | Bloque ? | |---|---|---| | `pretool-deny-prod-action.sh` | avant l'outil | **oui** — commandes Bash dangereuses | | `pretool-deny-secret-write.sh` | avant l'outil | **oui** — écriture dans un fichier porteur de secret | | `pretool-warn-sensitive-edit.sh` | avant l'outil | non — avertit sur une modification sensible | | `posttool-format.sh` | après l'outil | non — formate le fichier édité | | `posttool-warn-unwrap.sh` | après l'outil | non — signale un `unwrap` introduit | | `stop-leak-scan.sh` | à l'arrêt | **oui** — secrets dans les changements en attente | | `session-start.sh` | au démarrage | non — vérifie les dépendances, alerte sur branche protégée | | `userprompt-inject-rules.sh` | à chaque message | non — injecte les règles critiques dans le contexte | **Trois bloquent, cinq informent.** Confondre les deux catégories, c'est croire protégé ce qui est seulement commenté — le défaut le plus fréquent de ce dépôt, retrouvé six fois le 2026-09-07 dans les gardes de CI. ## 2. Les seize agents `.claude/agents/` contient huit agents, chacun avec son fichier de mémoire : | Agent | Domaine | |---|---| | `rust-expert` | backend, domaine, hexagonal | | `astro-svelte-expert` | frontend, Svelte 5, Astro | | `code-reviewer` | revue | | `devops-engineer` | CI, conteneurs | | `platform-engineer` | plateforme | | `sre-platform` | exploitation, incidents | | `csi-analyst` | amélioration continue | | `support-agent` | support utilisateur | Le fichier `*.memory.md` de chacun conserve ce qu'il a appris. Le lire avant de lancer l'agent évite de refaire une enquête déjà menée. ## 3. Les scripts d'appui `.claude/scripts/` — quatre scripts, dont le rôle n'est pas devinable au nom : - `sync-playwright-videos.sh` et `copy-videos.sh` — récupèrent les enregistrements de la documentation vivante ; - `generate-video-rst.py` — en produit les pages ; - `sync-docs-structure.sh` — aligne l'arborescence documentaire. `slow-down-tests.sh` et `restore-test-speed.sh` **ne sont plus là** : ils ralentissaient les parcours en **modifiant les fichiers du gate**, ce que la Méthode Foyer nomme comme l'anti-patron de la documentation vivante (#876). La cadence est désormais une constante d'un harnais séparé — `make vitrine`. ## 4. Les gardes du dépôt, et ce qu'elles gardent Ce sont des tests, pas des hooks : ils s'exécutent en CI et échouent. | Garde | Ce qu'elle refuse | |---|---| | `garde-data-testid` | la disparition d'un identifiant de test (#802) | | `garde-couverture-testid` | l'aggravation de la dette d'ancrage (#803) | | `garde-messages-en-dur` | un message de toast non traduit (#833) | | `garde-libelles-en-dur` | l'aggravation des libellés non traduits (#834) | | `garde-roles` | un rôle serveur sans menu ni registre (#814) | | `garde-roles-non-travestis` | un rôle remplacé par un autre (#836) | | `garde-classes-tailwind` | une classe assemblée à l'exécution (#788) | | `garde-secrets-console` | un secret écrit dans la console | | `garde_ecriture`, `garde_lecture` | l'aggravation de la dette d'identité (#772) | | `garde_perimetre_wbs` | une issue du périmètre absente du WBS | | `garde_classement_par_souschaines` | l'aggravation du tri d'erreurs par sous-chaîne (#762) | | `check-no-f64-money.sh` | un montant en `f64`, dans `src/` **et** dans `tests/` (#443) | **La plupart sont des cliquets** : ils bornent une dette sans exiger sa disparition immédiate. Celui qui touche un écran le laisse mieux ancré et mieux traduit qu'il ne l'a trouvé. ## 5. La règle qui vaut plus que les autres > Jouer les suites, adapter les spécifications, ajouter les tests manquants > **dans le même commit que le changement** — pas en passe de nettoyage après > coup. Et sa conséquence directe : **vérifier une garde neuve par témoin.** On réintroduit le défaut, on s'assure que le test échoue, on le retire. Sans ce geste, on ne sait pas si la garde garde. Six gardes ont été trouvées inopérantes le 2026-09-07 — l'une affichait sans bloquer, une autre comptait la mauvaise porte, une troisième éprouvait un chemin que la production n'emprunte pas, une quatrième regardait le mauvais répertoire. Aucune n'avait été vérifiée par témoin.