# Étude de cas : vérifier ce que les agents disent avoir terminé

> Une relecture a jugé 11 affirmations fausses dans ce que 39 agents ont écrit en moins de douze heures, et les relecteurs se sont trompés deux fois. Voyez comment, et rejouez les cinq commandes.

Canonical: https://bmad-plus.rochetta.fr/fr/docs/guides/case-study-rebuild-the-site/
Language: fr
BMAD+ version: 0.23.1
Documentation reviewed: 2026-10-19
Author: Laurent Rochetta
License: MIT

Documentation BMAD+ › [Guides](https://bmad-plus.rochetta.fr/fr/docs/guides/) › Étude de cas : vérifier ce que les agents disent avoir terminé

Si un agent IA vous a déjà dit « terminé » alors que ce n’était pas vrai, cette page est pour vous. Elle montre ce qui s’est passé quand 39 agents ont refait la landing, la documentation, les exemples et les vidéos de ce site en moins de douze heures, entre le soir du 2026-10-18 et le matin du 2026-10-19 : une relecture a jugé 11 affirmations fausses, les relecteurs se sont trompés deux fois, et une personne a décidé de ce qu’on garde. Vous verrez les cinq étapes, les chiffres avec leurs sources, les erreurs, et les commandes à rejouer sur votre propre projet. Si vous voulez seulement l’exécuter, passez à [À rejouer chez vous](#replay-it-yourself).

> **Remarque · Avant les chiffres : les défauts** À lire d’abord. Les agents ont été lancés par Claude Code avec son propre outil d’agents, chaque développeur dans son propre worktree git, et non par la commande `bmad-plus swarm` : cette commande distribue le travail, écrit les briefs, vérifie les réponses et en fait le décompte, et laisse le lancement à votre assistant. Les relecteurs sont aussi des modèles, et deux de leurs constats étaient faux. C’est une seule exécution, et personne n’a encore mesuré si les lecteurs trouvent le résultat plus clair. Le schéma est celui que livre BMAD+ (demander d’abord avec un intake, répartir sous un budget, relire de façon indépendante, s’arrêter aux portes). Chaque chiffre ci-dessous a été recompté le 2026-10-19 depuis le dépôt, les journaux ou les rapports de relecture ; un chiffre qui n’a pas pu être recompté n’est pas sur cette page.

<a id="video-case-study"></a>
Video: [L’IA a dit « terminé ». Vraiment ?](https://bmad-plus.rochetta.fr/media/case-study-fr.mp4) — Comment 39 agents ont refait ce site en moins de douze heures, ce que les relecteurs ont repéré, et les cinq étapes et commandes pour le rejouer vous-même.
[Sous-titres (WebVTT)](https://bmad-plus.rochetta.fr/media/case-study-fr.vtt)

Transcription:

> L’IA a dit « terminé ». Vraiment ? Trente-neuf agents ont refait un site en moins de douze heures. Des relecteurs y ont trouvé onze affirmations fausses. Ils se sont aussi trompés deux fois. Un « terminé » a déjà dû vous décevoir. Voici comment vérifier : cinq étapes, cinq commandes. Un. Comment éviter les faits inventés ? Écrivez d’abord les règles : de zéro, des faits tirés du code, le simulé est signalé. Deux. Que doit-il demander avant de commencer ? L’intake liste ce qui est connu et ce qui manque. Trois. Comment éviter que les agents se marchent dessus ? Un brief par page, une copie du dépôt chacun. BMAD+ distribue les briefs et plafonne chaque vague. Votre assistant lance les agents. Quatre. Qui vérifie le travail ? Cinq relecteurs qui n’ont rien écrit, qui rejouent des commandes sur un serveur propre. Et la porte dit non tant que chaque fichier n’est pas pris en compte. Une promesse de fichiers conservés. Une commande qui n’existait pas. Un compte faux d’une unité. Cinq. Corrigez, puis prouvez : dix-neuf commits de correction, 1 879 tests, zéro violation d’accessibilité. Un humain a gardé le dernier mot. Personne n’a encore mesuré si les lecteurs trouvent le site plus clair. Vous repartez avec cinq commandes, trois fichiers d’essaim, la porte de relecture et sept erreurs à éviter. Commencez par l’étape un. « Terminé » n’est qu’une affirmation. Rejouez-la.

Transcription avec description visuelle:

- **0:00** À l’écran : Un écran noir avec un halo ambre au centre. Le mot « Terminé. » claque à l’écran en grandes lettres blanches cerclées d’ambre, avec une coche ambre dessous. Puis la coche se brise en point d’interrogation : de fines fissures blanches partent de lui pendant que le mot tremble. Voix off : L’IA a dit « terminé ». Vraiment ?
- **0:02** À l’écran : Un champ sombre de grands monolithes de verre dans la brume ; la caméra avance vers l’un d’eux, dont le cœur ambre est allumé. Un grand « 39 » ambre claque, avec « agents » en blanc dessous, puis « moins de 12 heures » en ambre. Voix off : Trente-neuf agents ont refait un site en moins de douze heures.
- **0:05** À l’écran : Gros plan sur le cœur ambre d’un monolithe, la caméra toujours en approche. Un énorme « 11 » ambre frappe l’écran, avec « affirmations fausses » en blanc dessous et, plus petit, « dans une seule relecture ». Puis « eux aussi : deux erreurs » apparaît en ambre en bas. Voix off : Des relecteurs y ont trouvé onze affirmations fausses. Ils se sont aussi trompés deux fois.
- **0:10** À l’écran : Une fenêtre de terminal assombrie ; « sortie rejouée » est écrit en petit en haut à droite. Par-dessus, sur deux lignes : « Un « terminé » a déjà dû vous décevoir ». Le terminal tape npx bmad-plus review gate site; echo "exit code: $?" et affiche « site: incomplete — coverage 0/1 completed (0 waived), 0 open finding(s), 0 refuted », trois lignes de raisons (no coverage.json, no findings.json, un fichier sélectionné jamais pris en compte : site/contact/index.md) et « exit code: 2 ». Le mot « incomplete » est entouré d’orange et la vue zoome dessus. Puis un bandeau sombre apparaît avec « 5 étapes · 5 commandes » en grandes lettres ambre. Voix off : Un « terminé » a déjà dû vous décevoir. Voici comment vérifier : cinq étapes, cinq commandes.
- **0:15** À l’écran : Un empilement de dalles de verre sombres éclairé d’une lumière ambre, la caméra avance doucement. En haut à gauche, un grand « 1 » ambre et le titre « Écrire d’abord les règles ». Trois cartes suivent, à environ une seconde d’écart, chacune avec une fine barre ambre à gauche : « De zéro », « Des faits tirés du code » et « Simulé ? Signalé. » En bas, cinq courtes barres forment une ligne de progression ; la première est ambre. Voix off : Un. Comment éviter les faits inventés ? Écrivez d’abord les règles : de zéro, des faits tirés du code, le simulé est signalé.
- **0:23** À l’écran : Un terminal avec « sortie rejouée » en haut à droite. La commande npx bmad-plus install --yes --lang en --packs core,design,memory --tools claude-code est tapée. L’installateur affiche « BMAD+ Installer v0.23.0 », « Installing to: /home/dev/app », « Selected packs: Core, Memory, Design », « Detected IDEs: Claude Code », « Global brain created: /home/dev/.bmad-plus/brain », « 6 agents, 9 skills, 5 files copied », « 1 IDE(s) configured » et « Installation complete — Getting started ». Une ligne grise dit « getting-started box, 40 lines » à la place de l’encadré, et la dernière ligne, « BMAD+ is ready! Talk to Atlas to get started », est entourée d’orange. Un bandeau en haut indique « Une installation donne ses rôles à votre assistant ». La ligne de progression montre toujours une barre ambre.
- **0:27** À l’écran : Un terminal. La commande npx bmad-plus intake record est tapée avec le intake.yaml du pack Design, un fichier de réponses et trois réponses : surface_kind=landing, audience=« Urban professionals who buy coffee most days » et job=« Get a first-time visitor to open a loyalty card ». La sortie indique « Recorded surface_kind, audience, job in _bmad-output/design/intake.json. », puis « design-read (design): ready — 3 answered, 0 defaulted, 0 unknown, 10 not asked yet. » et « Ask next (at most 6 per message): » suivi des premières questions (brand_assets, design_system, aesthetic_family et d’autres). Des anneaux orange entourent « 3 answered », puis « 10 not asked yet », puis « at most 6 per message ». En bas à gauche, un grand « 2 » ambre et « D’abord, demander » ; la ligne de progression compte deux barres ambre. Voix off : Deux. Que doit-il demander avant de commencer ? L’intake liste ce qui est connu et ce qui manque.
- **0:33** À l’écran : Une dalle de verre se divise en dalles identiques qui se déploient en arc, chaque tranche soulignée d’un fin trait ambre, pendant que la caméra tourne autour. En haut à gauche, un « 3 » ambre et « Répartir ». Un grand compteur ambre monte de 1 à 39, avec « agents » en blanc dessous. Trois barres de la ligne de progression sont ambre. Voix off : Trois. Comment éviter que les agents se marchent dessus ? Un brief par page, une copie du dépôt chacun.
- **0:39** À l’écran : Un terminal avec « sortie rejouée » en haut à droite. La commande npx bmad-plus swarm init --definition swarm/page-fanout.json --units swarm/units.json est tapée ; la sortie indique « site-pages-20261019-g3ip: fanout of 3 units, budget 26, approval not-needed. », « Units listed, no seed. » et « Next: bmad-plus swarm briefs site-pages-20261019-g3ip ». Puis npx bmad-plus swarm briefs site-pages-20261019-g3ip affiche « 3 of 3 units need a sub-agent, in waves of 10. », avec « in waves of 10 » entouré d’orange, une première vague listant les briefs des pages about, pricing et contact, et une ligne qui commence par « Disclosure: » : « Each page was written by a separate sub-agent from the same brief; read them together before publishing. » À la fin, un bandeau sombre en bas montre « 39 agents », « 133 commits » et « 244 pages » en ambre, l’un après l’autre. Voix off : BMAD+ distribue les briefs et plafonne chaque vague. Votre assistant lance les agents.
- **0:46** À l’écran : Un champ sombre traversé de rayons de lumière orange. En haut à gauche, un « 4 » ambre et « Le faire attaquer par quelqu’un d’autre » sur deux lignes. Cinq fines lignes ambre se dessinent l’une après l’autre, chacune avec un mot au-dessus : « faits », « référence », « exemples », « langues » et « accessibilité ». Quatre barres de la ligne de progression sont ambre. Voix off : Quatre. Qui vérifie le travail ? Cinq relecteurs qui n’ont rien écrit, qui rejouent des commandes sur un serveur propre.
- **0:53** À l’écran : Une porte fermée en verre sombre et métal brossé, avec un faisceau ambre sur sa face ; la caméra avance lentement et la porte reste close. En lettres ambre à chasse fixe : « incomplete · code de sortie 2 », et dessous, en gris, « coverage 0/1 completed ». Voix off : Et la porte dit non tant que chaque fichier n’est pas pris en compte.
- **0:56** À l’écran : De fines dalles de verre dérivent dans le noir. Trois cartes apparaissent l’une après l’autre. « Vos fichiers sont conservés », entre guillemets, est barré d’un trait rouge et remplacé par « sauvegardés, puis remplacés » en ambre. « /animated » est barré et remplacé par « n’existe pas ». « 26 référentiels » est barré et remplacé par un grand « 27 » ambre. Voix off : Une promesse de fichiers conservés. Une commande qui n’existait pas. Un compte faux d’une unité.
- **1:02** À l’écran : Un cube de grille sombre aux fines lignes ambre. En haut à gauche, un « 5 » ambre et « Corriger, puis prouver ». Trois lignes comptent à la hausse, chacune suivie d’une coche verte : « 19 commits de correction », « 1 879 tests » et « 0 violation d’accessibilité ». Les cinq barres de la ligne de progression sont toutes ambre. Voix off : Cinq. Corrigez, puis prouvez : dix-neuf commits de correction, 1 879 tests, zéro violation d’accessibilité.
- **1:10** À l’écran : Un ciel sombre et terne. En grandes lettres blanches : « Un humain a gardé le dernier mot. » Puis, en gris, « Pas encore mesuré : » et, en ambre, « les lecteurs le trouvent-ils plus clair ? » Voix off : Un humain a gardé le dernier mot. Personne n’a encore mesuré si les lecteurs trouvent le site plus clair.
- **1:15** À l’écran : Des monolithes de verre sombres avec une lumière chaude sur le bord. Une liste se construit ligne après ligne, chacune avec un grand chiffre ambre et une étiquette blanche : « 5 commandes », « 3 fichiers d’essaim », « 1 porte de relecture » et « 7 erreurs à éviter ». Voix off : Vous repartez avec cinq commandes, trois fichiers d’essaim, la porte de relecture et sept erreurs à éviter.
- **1:20** À l’écran : Une brume bleu sombre. En lettres ambre à chasse fixe, « npx bmad-plus install », avec un soulignement ambre qui se dessine dessous ; puis « bmad-plus.rochetta.fr » en blanc et, plus petit et gris, « docs · guides · étude de cas ». Voix off : Commencez par l’étape un.
- **1:22** À l’écran : Les monolithes de verre de nouveau, la caméra qui recule. La phrase « Terminé » n’est qu’une affirmation. apparaît en blanc, « Terminé » entre guillemets, puis s’efface. Un grand point d’interrogation ambre apparaît avec des fissures blanches qui partent de lui, comme dans le premier plan, et l’image s’efface vers le bleu sombre. Voix off : « Terminé » n’est qu’une affirmation. Rejouez-la.

<a id="the-numbers"></a>
## Ce que ça a demandé, en chiffres

**Ce qu’a produit la refonte, et d’où vient chaque chiffre**

| Mesure | Valeur | D’où elle vient |
| --- | --- | --- |
| Agents, jusqu’à la branche intégrée | 39 | Le journal enregistré des sous-agents de la session |
| Commits sur la branche d’intégration | 133 (118 ordinaires, 15 fusions) | `git log` depuis `master` |
| Fichiers modifiés | 328 (72 665 lignes ajoutées, 650 retirées) | `git diff --shortstat` |
| Pages du site | 8 avant, 244 après, chacune avec son miroir Markdown | Le sitemap en ligne du 2026-10-18, puis la sortie du build |
| Pages de documentation | 52 par langue, en quatre langues | Le registre des pages |
| Exemples et transcriptions de terminal | 160 exemples ; 70 transcriptions, dont 19 simulées et signalées comme telles | Le registre des pages |
| Vidéos | 6, narrées en anglais et en français, 24 fichiers de sous-titres | Le manifeste des médias |
| Relecteurs indépendants | 5, avec un rapport écrit chacun | Les rapports de relecture du 2026-10-19 |
| Commits de correction après les relectures | 19, sur quatre branches | `git log` des quatre branches de correction |
| Tests et contrôles à la fin | 79 tests du site, 1 879 tests de la suite principale, 91 986 contrôles de recherche, 2 539 contrôles de release | Les exécutions des contrôles |
| Exécution navigateur | 976 cas de fenêtre, 300 exécutions d’accessibilité, 0 violation | Le journal du contrôle navigateur |
| Durée | 11 h 52 min de la demande à la branche intégrée, dont 3 h 21 min de pause | Les horodatages des commits et de la session |
| Crédits média | Environ 709 crédits pour 15 clips générés et la narration | Le registre des crédits |

<a id="the-method"></a>
## Cinq étapes à copier

1. **Écrivez d’abord les règles** Écrivez le but en une phrase et les règles qui ne plient jamais. Ici, le but était un site qui couvre toutes les possibilités de BMAD+ en quatre langues, avec des vidéos. Les règles : tout écrit de zéro, des faits tirés uniquement du dépôt, tout ce qui est simulé le dit, et rien ne tourne sur l’ordinateur du propriétaire (les builds et les tests ont tourné sur un serveur de test, dans des conteneurs).
2. **Laissez-le demander avant d’agir** Avant qu’un agent démarre, le travail a été listé : ce qui existait et ce qui manquait (les nouvelles commandes n’avaient ni exemple ni page de référence). Le propriétaire a ensuite élargi le périmètre. Dans BMAD+, cette étape est l’intake : il note ce qui est répondu, pris par défaut ou inconnu, et pose six questions au plus par message.

   ```sh
   npx bmad-plus intake plan --intake .agents/skills/pack-design/intake.yaml --answers _bmad-output/design/intake.json
   ```
3. **Donnez à chaque agent sa page et sa copie** Un agent a d’abord inventorié tout le produit. Puis la landing, la documentation, les enregistrements d’écran et les vidéos ont été construits en parallèle, chaque agent dans son propre worktree git et sa propre copie du projet sur le serveur de test, avec des périmètres qui ne se recouvrent pas pour que les branches puissent être fusionnées. Dans BMAD+, la même forme est une définition d’essaim avec une unité par page et des périmètres disjoints.

   ```sh
   npx bmad-plus swarm init --definition swarm/page-fanout.json --units swarm/units.json
   ```
4. **Faites-le attaquer par quelqu’un d’autre** Cinq relecteurs qui n’avaient rien écrit ont lu le résultat à un commit figé : l’un a vérifié les faits des pages packs, agents et concepts, un autre la référence, les guides, la sécurité, la FAQ et la landing, un troisième a rejoué les exemples, un quatrième a lu le français, l’espagnol et l’allemand, un cinquième a piloté un navigateur pour l’accessibilité. Ils ont rejoué les commandes sur un serveur propre au lieu de croire le texte. Dans BMAD+, la couche de preuve est `review` : elle scelle le périmètre et refuse un verdict tant que chaque fichier n’est pas pris en compte.

   ```sh
   npx bmad-plus review scope site --workspace --base HEAD
   npx bmad-plus review gate site
   ```
5. **Corrigez, puis prouvez** Sept groupes de correction et quatre passes ont corrigé ce que les relectures avaient trouvé (19 commits de correction sur quatre branches). Un intégrateur a fusionné 14 branches et relancé tous les contrôles : 79 tests du site, 1 879 tests, 91 986 contrôles de recherche, 2 539 contrôles de release et une exécution navigateur de 976 cas de fenêtre et 300 exécutions d’accessibilité sans aucune violation. Rien n’a été déployé avant l’accord du propriétaire.

<a id="what-went-wrong"></a>
## Ce que les relecteurs ont repéré, et là où ils se sont trompés

Vous vous attendez peut-être à ce que des agents qui ont lu le code disent des choses exactes. Ce n’était pas toujours le cas. Ces sept affirmations n’ont pas survécu au rejeu de la commande ou à la lecture du code, et chacune a été corrigée.

**Sept affirmations qui n’ont pas survécu à un rejeu**

| Ce que disait le brouillon | Ce qu’a trouvé le relecteur | La correction |
| --- | --- | --- |
| L’installateur préserve les fichiers d’instructions que vous avez écrits. | Avec `install --yes`, un `CLAUDE.md` que vous avez écrit est copié en `CLAUDE.md.bak` puis remplacé. La phrase figurait sur quatre pages. | Les pages disent : pas en silence. Les installations interactives et les mises à jour le préservent, `--yes` le sauvegarde d’abord, `--tools none` ne touche à aucune configuration d’outil. |
| Trois commandes de la landing, présentées comme exécutables. | Rejoué : `intake plan` exige `--answers`, `mem recall` avec classement par preuves exige un périmètre de projet, `swarm init` demandait `--context pitch=FICHIER`. | Les commandes portent les options manquantes et s’exécutent. |
| Une consigne qui commençait par `/animated`. | Aucune commande `/animated` n’existe dans le produit. | La consigne est la phrase que l’agent écoute : construire un site animé à partir d’une vidéo. |
| Un exemple Nexus qui affichait `verification=passed` juste après `create`. | Rejoué, `verify` juste après `create` échoue avec le code de sortie 1 : il lui faut un travail terminé, non accepté et réconcilié. | L’exemple démarre, enregistre et vérifie désormais une vraie tâche, avec une sortie rejouée. |
| Les commandes lancées après la première installation commencent par `npx --no-install`. | Dans un projet qui n’a jamais lancé `npm install --save-dev bmad-plus`, cette commande s’arrête avec « npx canceled due to missing packages ». | Les exemples utilisent `npx bmad-plus` ; la forme `--no-install` est expliquée là où elle apparaît, avec son prérequis. Les fichiers d’instructions que génère l’installateur disent encore `--no-install` : cela demande une release et n’est pas encore corrigé. |
| Deux clips vidéo de l’installateur montraient Shield avec 26 référentiels. | Le registre en compte 27, et toutes les autres pages disaient 27. | Les deux clips ont été enregistrés de nouveau avec l’installateur actuel. |
| Sous-titres : une réplique par phrase, et des sous-titres français qui reformulaient la narration. | Des lignes allant jusqu’à 79 caractères, des répliques allant jusqu’à 11 secondes ; les sous-titres français ne correspondaient pas aux mots prononcés. | Les 24 fichiers de sous-titres sont coupés à 2 lignes de 42 caractères et 6 secondes ; les français suivent la voix mot pour mot. |

> **Attention · Les relecteurs se sont aussi trompés** Deux constats ne tenaient pas. Une relecture affirmait que la 0.23.0 n’était pas sur npm ; elle y est, et les commandes de cette page l’installent. Une autre signalait des titres anglais incrustés dans les vidéos françaises ; le réalisateur des vidéos a revérifié les images : les incrustations étaient déjà en français et l’anglais restant est la vraie sortie du terminal, gardée exprès. Un relecteur est un second lecteur, pas un oracle : chaque constat a été vérifié avant d’être corrigé, et un humain a gardé le dernier mot.

<a id="who-decided-what"></a>
## Là où une personne a décidé

- De lancer, avec des essaims en parallèle, et d’élargir le périmètre à toutes les possibilités du produit et à des vidéos de présentation avec voix off.
- La voix de narration : la première a été refusée, une voix ElevenLabs (Celine) a été approuvée après écoute.
- De lancer la documentation, les exemples et la référence CLI en parallèle plutôt que l’un après l’autre.
- Qui est crédité pour quoi dans le README et la description npm.
- Une sauvegarde complète du site en ligne avant de le remplacer.
- La formulation de deux affirmations publiques : Dev Studio est décrit comme original, et la carte du pack SEO s’intitule « SEO / GEO ».
- Une pause pendant l’absence du propriétaire, et la reprise la même nuit.
- Que rien ne soit déployé avant que le propriétaire le dise.

<a id="replay-it-yourself"></a>
## À rejouer chez vous

Cinq commandes portent la méthode : `install`, `intake plan`, `swarm init`, `review scope` et `review gate`. Les blocs ci-dessous les exécutent, avec les quelques commandes autour qui les font fonctionner. Vous pouvez vous arrêter après n’importe quel bloc.

Il vous faut Node.js 20 ou plus et un projet Git avec au moins un commit. Les blocs ci-dessous sont de la sortie réelle du paquet publié 0.23.0. Là où des sous-agents écriraient leurs réponses, la partie essaim écrit à la main trois petits fichiers de réponse : aucun modèle ne tourne, donc le décompte compte des réponses de substitution et ne dit rien de vraies pages. La définition, le gabarit de brief et le fichier d’unités sont affichés sur la [page de l’essaim](https://bmad-plus.rochetta.fr/fr/docs/concepts/swarm/#file-units).

**Installer les packs**

```text
$ npx bmad-plus install --yes --lang en --packs core,design,memory --tools claude-code
# Sortie réduite à sa dernière ligne.
BMAD+ is ready! Talk to Atlas to get started 🚀
```

Sortie capturée lors d’une exécution réelle. Source: Rejoué le 2026-10-19 avec le paquet publié 0.23.0, lancé par npx, dans un conteneur Node 20 propre, dans un projet Git jetable

**Demander d’abord : noter les réponses, puis lister ce qui reste ouvert**

```text
$ npx bmad-plus intake record --intake .agents/skills/pack-design/intake.yaml --answers _bmad-output/design/intake.json --set surface_kind=landing --set "audience=Urban professionals who buy coffee most days" --set "job=Get a first-time visitor to open a loyalty card"
Recorded surface_kind, audience, job in _bmad-output/design/intake.json.
$ npx bmad-plus intake plan --intake .agents/skills/pack-design/intake.yaml --answers _bmad-output/design/intake.json
design-read (design): ready — 3 answered, 0 defaulted, 0 unknown, 10 not asked yet.
Ask next (at most 6 per message):
  - brand_assets [choice] Which brand assets exist already? None, a partial set (a logo and a colour or two), or a full kit (logo, palette, type, voice)? (choices: none, partial, full)
# Cinq autres questions suivent dans la sortie réelle.
```

Sortie capturée lors d’une exécution réelle. Source: Rejoué le 2026-10-19 avec le paquet publié 0.23.0, lancé par npx, dans un conteneur Node 20 propre, dans un projet Git jetable

**Répartir : un brief par page, puis vérifier et décompter les réponses**

```text
$ npx bmad-plus swarm init --definition swarm/page-fanout.json --units swarm/units.json
site-pages-20261019-kgoi: fanout of 3 units, budget 26, approval not-needed.
Units listed, no seed.
Next: bmad-plus swarm briefs site-pages-20261019-kgoi
$ npx bmad-plus swarm briefs site-pages-20261019-kgoi
site-pages-20261019-kgoi: 3 of 3 units need a sub-agent, in waves of 10.
Wave 1:
  about  /work/app/.bmad-plus/swarm/runs/site-pages-20261019-kgoi/briefs/about.md
  pricing  /work/app/.bmad-plus/swarm/runs/site-pages-20261019-kgoi/briefs/pricing.md
  contact  /work/app/.bmad-plus/swarm/runs/site-pages-20261019-kgoi/briefs/contact.md
Each sub-agent: Read the brief and follow it exactly; it is your whole instruction.
Disclosure: Each page was written by a separate sub-agent from the same brief; read them together before publishing.
# Ici, les trois fichiers de réponse ont été écrits à la main, là où chaque sous-agent écrirait le sien.
$ npx bmad-plus swarm check site-pages-20261019-kgoi
site-pages-20261019-kgoi: 3 of 3 valid answers.
$ npx bmad-plus swarm tally site-pages-20261019-kgoi
/work/app/.bmad-plus/swarm/runs/site-pages-20261019-kgoi/tally.md
3 of 3 units counted; 0 skipped.
Disclosure: Each page was written by a separate sub-agent from the same brief; read them together before publishing.
```

Sortie capturée lors d’une exécution réelle. Source: Rejoué le 2026-10-19 avec le paquet publié 0.23.0, lancé par npx, dans un conteneur Node 20 propre, dans un projet Git jetable

**Relire : sceller le périmètre, puis voir la porte refuser**

```text
$ npx bmad-plus review scope site --workspace --base HEAD
/work/app/_bmad-output/review/site/scope.json
1 file(s) to review, 1 changed lines, 1 unit(s) — scope 1ef2d235ea25
checklist: /work/app/_bmad-output/review/site/checklist.md
plan: medium effort, 2 pass(es), refutation pass
Every selected file must end in coverage.json as completed, failed or waived (with a reason).
$ npx bmad-plus review gate site
site: incomplete — coverage 0/1 completed (0 waived), 0 open finding(s), 0 refuted
  - no coverage.json: which files were reviewed is not established
  - no findings.json: write it even when there is nothing to report
  - 1 selected file(s) never accounted for: site/contact/index.md
# Code de sortie 2 : le verdict reste incomplet tant que le relecteur n’a pas écrit sa couverture et ses constats.
```

Sortie capturée lors d’une exécution réelle. Source: Rejoué le 2026-10-19 avec le paquet publié 0.23.0, lancé par npx, dans un conteneur Node 20 propre, dans un projet Git jetable

<a id="example-case-study-swarm-your-site"></a>
### Réécrire plusieurs pages en parallèle, puis les faire attaquer par un tiers

À utiliser quand plusieurs pages ou sections doivent changer en même temps sans que les agents s’écrasent, et que vous voulez un relecteur qui n’en a écrit aucune. Il faut les trois fichiers d’essaim du rejeu ci-dessus et un projet Git avec un commit.

**Dans votre assistant IA**

```text
Lance l’essaim site-pages depuis swarm/page-fanout.json et swarm/units.json : un sous-agent par page, chacun limité à son propre dossier, une vague à la fois. Quand les réponses sont là, lance swarm check et swarm tally et rapporte d’abord la mention de transparence. Puis, avec un autre sous-agent qui n’a écrit aucune des pages, lance review scope sur l’arbre de travail contre HEAD, lis chaque fichier modifié et rejoue chaque commande que montrent les pages. N’accepte pas une page dont une commande échoue, et dis-moi quelle affirmation le relecteur n’a pas pu vérifier.
```

**Ce que vous devriez obtenir** Les briefs sont écrits, les sous-agents répondent par vagues de 10 au plus, `swarm check` indique les réponses valides et `tally.md` s’ouvre par la mention de transparence. Le relecteur scelle un périmètre avec `review scope`, et `review gate` reste incomplet, avec le code de sortie 2, tant que chaque fichier modifié n’est pas couvert par un fichier de couverture et de constats écrit. Une commande qui échoue au rejeu est rapportée comme un constat, pas corrigée en silence.

<a id="limits"></a>
## Ce que cela ne prouve pas, pour que vous jugiez

- Un projet et une exécution : cela montre que la méthode peut attraper des erreurs, pas à quelle fréquence.
- Les relecteurs sont aussi des modèles. Un constat est une piste à vérifier, et deux d’entre eux étaient faux.
- Les décomptes montrés à l’écran et dans les exemples sont des démonstrations, et ils sont signalés comme tels.
- Personne n’a mesuré si le site est plus facile à comprendre. Les contrôles portent sur les faits, les règles d’accessibilité et la structure, pas sur la compréhension.
- Les textes français, espagnol et allemand ont été relus par un agent face à l’anglais et à un glossaire commun, pas par un correcteur natif.
- Les vidéos ont été vérifiées par des scripts et par un agent qui regarde des images. Leur son et leur rendu restent un jugement humain.

**Voir aussi**

- [Tutoriel : d’une idée à un essaim](https://bmad-plus.rochetta.fr/fr/docs/guides/idea-to-swarm/)
- [Les fichiers de l’essaim : définition, brief et unités](https://bmad-plus.rochetta.fr/fr/docs/concepts/swarm/#file-units)
- [bmad-plus review : périmètre, couverture et verdict](https://bmad-plus.rochetta.fr/fr/docs/reference/cli-review/)
- [Nexus : exécuter les tâches et vérifier chacune](https://bmad-plus.rochetta.fr/fr/docs/concepts/nexus-orchestration/)

[Documentation BMAD+](https://bmad-plus.rochetta.fr/fr/docs/) · [Guides](https://bmad-plus.rochetta.fr/fr/docs/guides/)

[Code sur GitHub](https://github.com/lrochetta/BMAD-PLUS)
