Formation IA pour développeurs · Atelier 2

Votre application en Vibe Coding

« Construisez l'outil que vous auriez aimé avoir la semaine dernière. »

Une idée à vous Le langage de votre choix Copilot Free, ou votre agent Une démo en fin de journée

La règle du jeu

Vous créez une application de zéro, en dialoguant avec un agent, dans l'IDE ou en CLI, au choix : Copilot en mode agent (configuré à l'atelier 1) ou Copilot CLI, tous deux gratuits avec Copilot Free. Si vous avez un abonnement, Claude Code, Codex ou Junie conviennent aussi.

Étapes 1 et 2 : l'agent seul, sans plugin. Pas de Superpowers, de Spec Kit, de grill-me ni d'autre méthode installée. Uniquement vos prompts et les fonctions natives de l'outil. Le but est de comprendre ce que ces outils automatisent, en le faisant à la main.

Étape 3 (bonus) : avec un plugin. Vous refaites une fonctionnalité avec Superpowers et vous comparez.

Si le temps manque, l'étape 1 suffit : elle vous donne une première version qui tourne. Les étapes 2 et 3 se font en fin de journée ou après la formation, avec cette fiche.

1Spec, plan, checklist
Idée → spec → plan → checklist → code. Vous construisez la première version.
2Bonnes pratiques de l'agent
Contexte, vérifications, garde-fous, pilotage. Vous ajoutez une fonctionnalité proprement.
3Bonus : Superpowers
Le même cycle, automatisé par un plugin. Vous comparez avec les étapes 1 et 2.

Avant de commencer

Étape 0 (facultative) · Un wireframe de votre écran principal

Si votre application a une interface, prenez 10 minutes pour en dessiner l'écran principal dans UX Pilot (offre gratuite) ou une alternative, puis faites une capture. Vous la joindrez au premier prompt de l'étape 1. Pour un outil en ligne de commande, écrivez plutôt un exemple de la sortie attendue.

Pas d'idée ? Un jeu façon Undercover

Un jeu d'ambiance à jouer à plusieurs sur un seul téléphone, qu'on se passe de main en main. Chaque joueur découvre en secret un mot. Les civils ont tous le même mot, l'imposteur reçoit un mot proche (« chat » et « tigre », par exemple). À tour de rôle, chacun donne un indice d'un mot, puis tout le monde vote pour éliminer un suspect. Les civils gagnent s'ils éliminent l'imposteur ; l'imposteur gagne s'il reste en jeu jusqu'au duel final.

Le sujet se prête bien à l'atelier : les règles sont claires, il y a une interface, un état à suivre (tours, votes, éliminations) et des règles à tester (égalité au vote, conditions de victoire). Il se découpe aussi naturellement en trois étapes :

  • Étape 1 : une partie complète, de la distribution des mots au vainqueur, avec une liste de paires de mots écrite à la main.
  • Étape 2 : un rôle de plus, le joueur sans mot qui doit deviner celui des civils s'il est éliminé, ou le départage des égalités au vote.
  • Étape 3 : les scores sur plusieurs manches, ou des paires de mots par thème.

Étape 1 · Spec, plan, checklist

Le principe : ne jamais demander « code-moi l'application ». On passe d'abord par trois documents écrits, puis on code par petites étapes.

ÉtapeCe qu'on faitFichier produit
1. Affiner l'idéeLe modèle vous interroge, une question à la fois—
2. SpécificationLe modèle compile vos réponses en une specspec.md
3. PlanLa spec devient une suite de prompts courts, qui s'enchaînentprompt_plan.md
4. ChecklistUne liste de tâches à cochertodo.md
5. ExécutionUn prompt du plan à la fois : on code, on teste, on commitele code

Tout se fait dans l'agent. On pourrait faire les étapes 1 à 4 dans un chat en ligne et ne passer à l'outil de code qu'à l'étape 5. Ici, vous faites tout dans votre agent, directement dans le dossier du projet : les fichiers sont écrits au bon endroit, et l'agent les relira plus tard.

1. Affiner l'idée

Remplacez la dernière ligne par votre idée, en une ou deux phrases. Si vous avez fait l'étape 0, joignez la capture du wireframe au prompt : l'agent s'en servira pour la spécification. Répondez aux questions jusqu'à ce que l'agent n'en ait plus, ou jusqu'à ce que vous estimiez en avoir assez dit.

Prompt 1 · Affiner l'idée
Pose-moi une seule question à la fois pour que nous construisions ensemble une spécification complète et détaillée de cette idée. Chaque question doit s'appuyer sur mes réponses précédentes. L'objectif final est une spécification assez précise pour être confiée à un développeur. Avançons pas à pas et creusons chaque point important. Ne code rien pour l'instant.
Rappel : une seule question à la fois.

Voici l'idée : [VOTRE IDÉE]

2. La spécification

Prompt 2 · Compiler la spec
Nous avons fini le brainstorming. Compile tout ce que nous avons décidé en une spécification complète, prête pour un développeur : besoins fonctionnels, choix d'architecture et de stack, données manipulées, gestion des erreurs, et plan de tests. Un développeur doit pouvoir commencer à coder immédiatement à partir de ce document.
Écris-la dans spec.md.

Relisez spec.md. Corrigez ce qui ne vous convient pas, à la main ou en le demandant. C'est le dernier moment où changer d'avis ne coûte rien.

3. Le plan

Deux variantes. Choisissez la variante TDD si vous voulez des tests dès la première étape (recommandé), la variante sans TDD pour un prototype rapide.

Prompt 3a · Plan, variante TDD
À partir de spec.md, rédige un plan de construction détaillé, étape par étape.
Découpe ensuite ce plan en petits morceaux qui s'appuient les uns sur les autres. Repasse sur ces morceaux pour les découper encore. Vérifie que chaque étape est assez petite pour être implémentée sans risque, avec de vrais tests, mais assez grande pour faire avancer le projet. Recommence jusqu'à ce que la taille des étapes soit juste.
Transforme enfin chaque étape en un prompt destiné à un agent de code, qui implémente l'étape en TDD : test d'abord, puis le code.
Contraintes : bonnes pratiques, progression incrémentale, tests le plus tôt possible, aucun saut de complexité. Chaque prompt s'appuie sur les précédents et se termine en branchant le nouveau code sur l'existant : pas de code orphelin.
Sépare chaque prompt dans sa propre section, en Markdown, et place le texte de chaque prompt dans un bloc de code.
Écris le résultat dans prompt_plan.md.
Prompt 3b · Plan, variante sans TDD
À partir de spec.md, rédige un plan de construction détaillé, étape par étape.
Découpe ensuite ce plan en petits morceaux qui s'appuient les uns sur les autres. Repasse sur ces morceaux pour les découper encore, jusqu'à ce que chaque étape soit assez petite pour être faite sans risque, mais assez grande pour faire avancer le projet.
Transforme enfin chaque étape en un prompt destiné à un agent de code.
Contraintes : bonnes pratiques, progression incrémentale, aucun saut de complexité. Chaque prompt s'appuie sur les précédents et se termine en branchant le nouveau code sur l'existant : pas de code orphelin.
Sépare chaque prompt dans sa propre section, en Markdown, et place le texte de chaque prompt dans un bloc de code.
Écris le résultat dans prompt_plan.md.

4. La checklist

Prompt 4 · todo.md
À partir de prompt_plan.md, crée un todo.md que je peux utiliser comme checklist, avec une case à cocher par tâche. Sois exhaustif.

Commitez les trois fichiers : spec.md, prompt_plan.md, todo.md. Ils sont la mémoire du projet : si vous fermez la session, l'agent repart d'eux.

5. L'exécution

Ouvrez une nouvelle session (bouton + du chat ; dans Claude Code, /clear). Le brainstorming n'a plus besoin d'être dans le contexte, tout est dans les fichiers. Puis bouclez :

  1. Envoyez le prompt de l'étape suivante.
  2. Laissez l'agent coder et lancer les tests.
  3. Lancez l'application vous-même et regardez ce qui a changé.
  4. Si ça marche : cochez la case dans todo.md et commitez. Sinon : corrigez avant de passer à la suite.
Prompt 5 · Exécuter l'étape suivante
Lis spec.md, prompt_plan.md et todo.md. Implémente la prochaine étape non cochée de todo.md, en suivant son prompt dans prompt_plan.md. Lance les tests et montre-moi leur résultat. Quand ils passent, coche la case dans todo.md et propose un message de commit. Arrête-toi après cette étape.

Quand ça bloque

Avec un chat en ligne, qui ne voit pas votre projet, il faudrait regrouper tout le code dans un seul fichier (avec repomix, par exemple) et le lui renvoyer. Un agent de code lit déjà le dépôt : donnez-lui plutôt le message d'erreur exact et ce que vous attendiez. Si l'agent tourne en rond, revenez au dernier commit qui marchait et reformulez l'étape plus petite.

Une fois l'application commencée : les prompts « code existant »

Trois autres prompts, pour un projet qui existe déjà. Ils vous serviront en fin d'étape 1, sur votre propre code.

Prompt 6 · Revue de code
Tu es un développeur senior. Fais une revue complète de ce projet, comme si tu la préparais pour un collègue. Pour chaque remarque, indique le fichier, les numéros de ligne et le contexte. N'invente rien : ne signale que ce que tu vois réellement dans le code. Écris la revue en Markdown dans code-review.md.
Prompt 7 · Les problèmes principaux, en tickets
Tu es un développeur senior. Liste les principaux problèmes de ce projet : bugs, défauts de conception, code peu lisible. Rédige chacun comme un ticket GitHub : titre, description, fichier concerné, correction proposée. N'invente rien. Écris le résultat dans issues.md.
Prompt 8 · Les tests manquants
Tu es un développeur senior. Liste les cas de test qui manquent dans ce projet, en commençant par les plus risqués. Rédige chacun comme un ticket GitHub : ce qu'il faut tester, pourquoi, et le fichier concerné. Écris le résultat dans missing-tests.md.

Conseils

Fin de l'étape 1

  • Une première version de votre application démarre.
  • spec.md, prompt_plan.md et todo.md sont commités.
  • Les tests de la logique principale passent.
  • Vous avez noté dans PROMPTS.md les prompts que vous avez dû corriger.

Étape 2 · Les bonnes pratiques de l'agent

Source principale : la page Best practices for Claude Code d'Anthropic. Ses principes valent pour tout agent de code. Cette fiche les applique à Copilot en mode agent dans VS Code, l'outil gratuit de la journée ; les équivalents pour Claude Code et Junie sont en fin d'étape. Le point de départ de la documentation : dans la plupart des cas, un prompt simple dans une session neuve fait déjà la bonne chose. Les bonnes pratiques servent quand votre projet a des connaissances, des règles ou des contraintes que l'agent ne peut pas deviner en lisant le code.

Le travail de l'étape : appliquez ces pratiques à votre application, puis ajoutez une deuxième fonctionnalité en les utilisant.

En ping-pong TDD. Pour cette deuxième fonctionnalité, c'est vous qui gardez la définition de « correct » :

  1. Vous écrivez trois tests pour une règle de l'application.
  2. L'agent implémente le minimum pour qu'ils passent.
  3. L'agent propose trois cas limites ; vous choisissez et écrivez les tests.
  4. L'agent corrige ; vous refactorisez.

Des idées de règles : une échéance calculée sur des dates (créée un 31, elle révèle souvent un bug), le départage d'une égalité au vote pour le jeu façon Undercover, une entrée vide ou un argument invalide pour un outil en ligne de commande.

Quatre causes pour une session qui tourne mal, d'après la documentation :

  1. L'agent a construit autre chose que ce que vous vouliez : il lui manquait une information. → Lui dire ce qu'il ne voit pas.
  2. L'agent a dit « c'est fini » et ce n'était pas tout à fait vrai : il n'avait aucun moyen de vérifier. → Lui donner une vérification.
  3. L'agent a fait ce qu'il ne fallait jamais faire, ou sauté une étape obligatoire. → Imposer les règles sans exception.
  4. Le résultat est bon, mais il a coûté trop de temps ou de quota. → Changer un réglage.

Instruction ou configuration ?

La documentation distingue deux familles :

Par défaut, laissez l'agent décider. Réservez le déterministe à ce qui doit arriver toujours (ou jamais). Si vous ajoutez « IMPORTANT » à une ligne d'AGENTS.md et qu'elle est encore ignorée, elle devrait être un hook.

Une demande d'approbation ne bloque rien. Dans VS Code, une entrée à false dans chat.tools.terminal.autoApprove vous fait demander votre accord ; la documentation précise qu'elle n'empêche pas la commande. En niveau « Allow all » ou en Autopilot, ces règles ne sont même plus consultées. Pour interdire, il faut un hook.

1. Dire à l'agent ce qu'il ne voit pas

L'agent lit très bien un dépôt. Il ne peut pas connaître ce qui n'y est pas : une décision prise en réunion, une procédure qui est dans votre tête, une variable d'environnement. Avant d'écrire quelque chose pour lui, posez-vous deux questions : pourrait-il le trouver en lisant le code ? Irait-il vraiment chercher ? Si les deux réponses sont oui, ne l'écrivez pas.

Un prompt précis

Nommez le fichier, décrivez le symptôme, dites à quoi ressemble « réparé ».

Au lieu deEssayez
« corrige le bug de connexion »« la connexion échoue après l'expiration de la session. Regarde le rafraîchissement du jeton dans src/auth/, écris un test qui échoue et reproduit le bug, puis corrige-le »
« ajoute un widget calendrier »« suis le modèle de HotDogWidget.php et construis un widget calendrier qui permet de choisir un mois et de passer d'une année à l'autre. Aucune nouvelle bibliothèque »
Exemple · demander la version complète
Construis la page de paramètres à partir de la maquette. Sois ambitieux : états vide et erreur, enregistrement branché, navigation au clavier, pas seulement la mise en page.

Pour explorer plutôt que corriger, un prompt vague comme « qu'est-ce que tu améliorerais dans ce fichier ? » convient très bien.

Brainstormer d'abord : l'interview

C'est l'équivalent natif des prompts 1 et 2 de l'étape 1. Utilisez-le pour votre deuxième fonctionnalité, de préférence avec l'agent Plan :

Prompt · Interview avant une fonctionnalité
Je veux ajouter [VOTRE FONCTIONNALITÉ] mais je n'y ai pas encore bien réfléchi. Interroge-moi, une question à la fois, jusqu'à pouvoir écrire la spécification, puis écris-la dans SPEC.md.

Ensuite, ouvrez une nouvelle session (bouton + du chat) pour construire : le travail démarre avec un contexte propre et une définition écrite de « terminé ». Une session neuve consomme aussi moins de quota qu'une longue conversation.

Un AGENTS.md court

Vous avez écrit AGENTS.md à l'atelier 1. Il est chargé à chaque requête : chaque ligne prend un peu d'attention, sur chaque tâche. Relisez-le et n'y gardez que :

Exemple · AGENTS.md
# Commandes
- Installer : pnpm install
- Lancer un fichier de test : pnpm vitest run chemin/du/fichier.test.ts
- Typecheck : pnpm tsc --noEmit

# Conventions
- Utiliser les helpers d'erreur de src/lib/errors.ts, jamais de chaîne brute

# Pièges
- Les tests d'intégration ont besoin de DATABASE_URL, voir .env.example

2. Donner à l'agent une vérification à lancer

L'agent s'arrête quand le travail a l'air fini. Sans rien à lancer qui réponde « réussi » ou « échoué », c'est vous qui devenez la suite de tests. Avec une vérification, il boucle seul : il modifie, lance, lit l'erreur, corrige, relance.

La vérification peut être un fichier de test, le code de sortie d'un build, un linter, un script qui compare une sortie à une référence, ou une capture d'écran du navigateur à côté de la maquette.

NiveauComment
Dans le prompt« lance les tests d'authentification après, et continue jusqu'à ce qu'ils passent ». Aucune configuration.
Un relecteur neufUn agent personnalisé en lecture seule (ci-dessous), lancé dans une nouvelle session : il n'a pas vu le code s'écrire.
Un hook de finUn script lancé quand l'agent veut s'arrêter ; si les tests échouent, il le relance avec l'erreur. Imposé par l'outil. En aperçu dans VS Code.

Demandez toujours des preuves : la commande lancée et sa sortie, ou la capture. « Tous les tests passent », seul, ne dit presque rien.

Un relecteur qui ne peut rien modifier

.github/agents/relecteur.agent.md
---
description: Relit les fichiers modifiés par rapport à la spec dont ils sont issus. À utiliser après une fonctionnalité, avant le commit.
tools: ['search', 'read']
---
Tu relis du code que tu n'as pas écrit. Compare les fichiers modifiés à la spec fournie,
vérifie que chaque exigence est implémentée et que les cas limites listés ont des tests,
et ne signale que les écarts qui touchent à la correction. Ignore le style.
Tu ne modifies aucun fichier.
Avec Claude Code · .claude/agents/reviewer.md
---
name: reviewer
description: Relit les fichiers modifiés par rapport à la spec dont ils sont issus. À utiliser après avoir implémenté une fonctionnalité, avant d'ouvrir la PR.
tools: Read, Grep, Glob
---
Tu relis du code que tu n'as pas écrit. Compare les fichiers modifiés à la spec fournie,
vérifie que chaque exigence est implémentée et que les cas limites listés ont des tests,
et ne signale que les écarts qui touchent à la correction. Ignore le style.

Avec Claude Code, demandez : « Utilise le sous-agent reviewer pour relire le diff de [FONCTIONNALITÉ] par rapport à SPEC.md. » /code-review fait une relecture comparable sans configuration.

Avec Copilot, ouvrez le fichier : le bouton Configurer les outils au-dessus de l'en-tête permet de vérifier que seuls des outils de lecture sont cochés. Puis, dans une nouvelle session, choisissez l'agent relecteur dans le sélecteur et envoyez :

Prompt · Revue contre la spec
Relis les modifications de [FONCTIONNALITÉ] (git diff) par rapport à SPEC.md : vérifie que chaque exigence est implémentée et que les cas limites listés ont des tests. Ne signale que les écarts qui touchent à la correction du code, ignore le style.

Gardez « ignore le style » : un relecteur à qui l'on demande des problèmes en trouvera toujours. Tout corriger mène à des couches d'abstraction en trop et à des tests de cas impossibles.

Exemple de hook de fin (aperçu)

Les hooks de VS Code sont en aperçu : le format peut changer, testez-le sur votre version. Ce script demande Node.js ; remplacez npm test par votre commande (pytest, cargo test, mvn -q test…).

.github/hooks/verifier.json
{
  "version": 1,
  "hooks": {
    "agentStop": [
      { "type": "command", "command": "node .github/hooks/verifier.cjs", "timeoutSec": 120 }
    ]
  }
}
.github/hooks/verifier.cjs
const { execSync } = require('node:child_process');

let entree = '';
process.stdin.on('data', (morceau) => (entree += morceau));
process.stdin.on('end', () => {
  // Déjà relancé une fois par ce hook : on laisse l'agent s'arrêter.
  if (/"stop_hook_active"\s*:\s*true/.test(entree)) return;
  try {
    execSync('npm test', { stdio: 'pipe' });
  } catch (erreur) {
    const sortie = String(erreur.stdout || '') + String(erreur.stderr || '');
    console.log(JSON.stringify({
      decision: 'block',
      reason: 'Les tests échouent. Corrige-les avant de terminer :\n' + sortie.slice(-2000)
    }));
  }
});

Le champ stop_hook_active évite une boucle sans fin quand les tests ne peuvent jamais passer : ici, l'agent est relancé une seule fois. Si le hook ne se déclenche pas sur votre version, la vérification dans le prompt suffit pour l'atelier.

3. Imposer les règles sans exception

« Ne jamais lire .env », « toujours formater après une modification », « ne pas toucher aux migrations » : l'agent les suit presque toujours. Quand « presque » ne suffit pas, sortez-les d'AGENTS.md.

Un hook qui interdit

Un hook preToolUse est lancé avant chaque outil. S'il répond deny, l'outil n'est pas appelé, quel que soit le niveau de permission. Ici, toute action qui mentionne un fichier .env est refusée.

.github/hooks/proteger-env.json
{
  "version": 1,
  "hooks": {
    "preToolUse": [
      { "type": "command", "command": "node .github/hooks/proteger-env.cjs", "timeoutSec": 10 }
    ]
  }
}
.github/hooks/proteger-env.cjs
let entree = '';
process.stdin.on('data', (morceau) => (entree += morceau));
process.stdin.on('end', () => {
  if (/\.env\b/.test(entree)) {
    console.log(JSON.stringify({
      permissionDecision: 'deny',
      permissionDecisionReason: "Les fichiers .env sont interdits à l'agent."
    }));
  }
});

Testez : « Affiche le contenu de .env ». L'agent doit recevoir le refus et vous l'expliquer. Si le script plante, l'appel est refusé ; s'il dépasse son délai, les permissions normales s'appliquent.

Les approbations du terminal

.vscode/settings.json
{
  "chat.tools.terminal.autoApprove": {
    "/^git (status|diff|log)\\b/": true,
    "git push": false,
    "rm": false
  }
}

Les commandes à true passent sans demander, celles à false demandent toujours votre accord. Rappel : demander n'est pas interdire.

4. Changer un réglage

5. Piloter la session

Regardez la première minute. Arrêtez l'agent dès qu'il dérive. Après deux corrections ratées, une nouvelle session et un meilleur prompt plutôt qu'une troisième correction.

Copilot (VS Code)Claude CodeEffet
Bouton Arrêter du chatEscArrête l'agent en cours d'action, garde le travail fait.
Restaurer le point de contrôle (au survol d'une requête)/rewind ou Esc deux foisRevient avant cette requête. Permet de tenter l'approche audacieuse d'abord.
Bouton + (nouvelle session)/clearRepart de zéro, sans les tentatives ratées dans le contexte.
Historique des sessions/rename puis claude --resumeReprendre une session plus tard.
Menu Copilot de la barre d'état/usageVoir la consommation.

Ne comptez pas sur les points de contrôle pour ce qu'une commande du terminal a modifié. Ils complètent git sans le remplacer : continuez à commiter.

Ce que vous pouvez arrêter de faire

Ancien conseilPourquoi il ne sert plus
Gérer le contexte de façon agressiveLes agents résument la conversation quand elle devient longue. Une nouvelle session entre deux tâches reste utile, et économise le quota.
Ajouter IMPORTANT ou des majusculesLes modèles actuels suivent une ligne simple ; l'insistance les fait sur-appliquer la règle.
Multiplier les sous-agentsGardez-les pour la relecture par un regard neuf.
« think hard », « be thorough »Ce n'est que du texte. Un prompt précis et une vérification à passer comptent davantage.
« continue jusqu'au bout, ne sois pas paresseux »Provoque plutôt du sur-travail. Donnez une vérification à passer ; si ça s'arrête, dites « continue ».
Décrire l'architecture dans AGENTS.mdL'agent lit le dépôt. N'écrivez que ce qui n'y est pas.

Avec un autre agent

Les principes restent les mêmes, seuls les noms changent.

Copilot (VS Code)Copilot CLIClaude CodeJunie
InstructionsAGENTS.mdAGENTS.md (lit aussi .github/copilot-instructions.md et CLAUDE.md)CLAUDE.md (avec @AGENTS.md).junie/AGENTS.md
Mode planAgent PlanShift+Tab, mode planShift+Tab, mode planPlan Mode
VérificationPrompt, hook agentStop (aperçu)Prompt, hook agentStop (mêmes fichiers .github/hooks/)Prompt, /goal, hook StopPrompt
Règles imposéesHook preToolUse, bac à sableHook preToolUse (décision deny), /sandboxRègles deny, hooks, /sandboxRéglages d'approbation
Relecteur.github/agents/*.agent.md.github/agents/*.agent.md, choisi avec /agent.claude/agents/*.md, /code-reviewUne nouvelle session
Retour arrièrePoints de contrôle/undo (alias /rewind), Esc deux fois/rewind, Esc deux foisGit
Le détail pour Claude Code (avec un abonnement)
  • /init génère un premier CLAUDE.md ; /context confirme qu'il est chargé. Vos préférences personnelles vont dans CLAUDE.local.md, ajouté au .gitignore.
  • /goal tous les tests de tests/auth passent et le lint est propre : un autre modèle vérifie la condition après chaque tour.
  • /code-review relit le diff dans un sous-agent qui n'a pas vu la conversation ; /verify fait construire, lancer et regarder l'application.
  • /effort low pour un premier jet, /effort high pour un bug difficile ; /usage montre la consommation ; /clear et /compact nettoient le contexte.
.claude/settings.json · hook Stop et permissions
{
  "hooks": {
    "Stop": [
      {
        "hooks": [
          { "type": "command", "command": "pnpm tsc --noEmit 1>&2 || exit 2" }
        ]
      }
    ]
  },
  "permissions": {
    "allow": ["Bash(pnpm tsc --noEmit)"],
    "ask": ["Bash(git push *)"],
    "deny": ["Read(./.env)", "Read(./.env.local)", "Read(./secrets/**)"]
  }
}

Si la vérification ne peut jamais passer, Claude Code relance l'agent jusqu'à huit fois de suite, puis rend la main avec un avertissement. Un script de hook peut lire stop_hook_active pour laisser Claude s'arrêter. Les règles deny s'appliquent dans tous les modes.

Fin de l'étape 2

  • Un AGENTS.md court, avec au moins la commande de test.
  • Une deuxième fonctionnalité, partie d'un SPEC.md obtenu par interview.
  • Une vérification que l'agent lance seul (dans le prompt, ou un hook de fin).
  • Une revue contre la spec par l'agent relecteur, et ses écarts corrigés.
  • Au moins une règle imposée par l'outil : le hook preToolUse (ou une règle deny dans Claude Code).

Étape 3 (bonus) · Avec un plugin : Superpowers

Superpowers (Jesse Vincent, licence MIT) est un ensemble de skills pour les agents de code. Il automatise une bonne partie de ce que vous venez de faire à la main : le brainstorming, le plan découpé en petites tâches, le TDD, la relecture. Les skills se déclenchent seules, au bon moment.

Installation avec Copilot (VS Code)

Superpowers ne documente officiellement, côté Copilot, que Copilot CLI (copilot plugin marketplace add obra/superpowers-marketplace, puis copilot plugin install superpowers@superpowers-marketplace) : c'est la voie la plus sûre si vous travaillez en CLI. Dans VS Code, deux voies, à tester avant de s'y fier.

Voie 1 · le plugin, avec les plugins d'agent de VS Code (fonction en aperçu ; VS Code lit le format de plugin de Claude Code, sans garantir que tous ses composants fonctionnent). Dans les réglages :

settings.json (utilisateur)
"chat.plugins.enabled": true,
"chat.plugins.marketplaces": ["obra/superpowers-marketplace"]

Puis installez Superpowers depuis la vue Extensions (filtre @agentPlugins) ou la commande « Chat: Plugins ». Autre possibilité : la commande « Chat: Install Plugin from Source », avec l'adresse https://github.com/obra/superpowers. Un plugin peut contenir des hooks qui exécutent du code sur votre machine : n'ajoutez que des sources que vous avez vérifiées.

Voie 2 · copier les skills (la plus simple, et la seule qui ne dépend d'aucune fonction en aperçu). Les skills de Superpowers suivent le format ouvert Agent Skills, que VS Code lit dans .github/skills/. Récupérez le dépôt à côté de votre projet, puis copiez ses skills :

Terminal · bash, macOS, Linux, WSL
git clone --depth 1 https://github.com/obra/superpowers ../superpowers
mkdir -p .github/skills
cp -r ../superpowers/skills/* .github/skills/
Terminal · PowerShell
git clone --depth 1 https://github.com/obra/superpowers ../superpowers
New-Item -ItemType Directory -Force .github/skills
Copy-Item -Recurse ../superpowers/skills/* .github/skills/

À tester avant de s'y fier. Dans les deux voies, le hook de démarrage du plugin (qui rappelle à l'agent d'utiliser ses skills) n'est pas garanti dans VS Code : commencez votre prompt par « Utilise la skill brainstorming ». Certaines skills supposent les outils de Claude Code (sous-agents, worktrees) : Copilot les adapte, avec des écarts. Ajoutez .github/skills/ au .gitignore si vous ne voulez pas les garder dans le projet.

Installation dans Claude Code (avec un abonnement)

Option 1 · marketplace officielle
/plugin install superpowers@claude-plugins-official
Option 2 · marketplace Superpowers
/plugin marketplace add obra/superpowers-marketplace
/plugin install superpowers@superpowers-marketplace

Le cycle de base

SkillQuandCe qu'elle faitÉquivalent à la main
brainstormingAvant de construirePose des questions sur ce que vous voulez et pourquoi, reformule, écrit un document de conceptionPrompts 1 et 2 · interview → SPEC.md
using-git-worktreesConception validéeCrée un espace isolé sur une nouvelle branche, vérifie que les tests passent au départUne branche à la main
writing-plansConception validéeDécoupe en tâches de 2 à 5 minutes, avec chemins de fichiers, code et vérificationsPrompts 3 et 4 · prompt_plan.md, todo.md
subagent-driven-development ou executing-plansPlan prêtUn sous-agent neuf par tâche avec relecture après chacune, ou tout en ligne avec une relecture finalePrompt 5, en boucle
test-driven-developmentPendant l'implémentationImpose le cycle rouge → vert → refactor ; supprime le code écrit avant son testVariante TDD du plan
requesting-code-reviewEntre les tâchesRelit par rapport au plan, classe les problèmes par gravité ; les critiques bloquentRevue contre la spec
finishing-a-development-branchTâches terminéesVérifie les tests, propose fusion, PR, conservation ou abandon, nettoieCommit et fusion à la main

La même idée, outillée autrement. GitHub Spec Kit (commandes /speckit.specify, /speckit.plan, /speckit.tasks, /speckit.implement, avec Copilot comme avec Claude Code), Kiro (l'IDE agentique d'AWS) et OpenSpec automatisent la démarche « spécification d'abord » de l'étape 1. À essayer après la formation.

Les autres skills : systematic-debugging, verification-before-completion, dispatching-parallel-agents, receiving-code-review, writing-skills, using-superpowers, diagnosing-superpowers.

Le travail de l'étape

  1. Installez les skills (ou le plugin) et ouvrez une nouvelle session.
  2. Décrivez une troisième fonctionnalité en une phrase, sans autre consigne. Laissez les skills se déclencher (avec Copilot, demandez d'abord la skill brainstorming).
  3. Comparez avec les étapes 1 et 2.

Questions pour comparer

  • Les questions de brainstorming étaient-elles meilleures que les vôtres ? Plus nombreuses ?
  • Le plan de writing-plans est-il plus fin que votre prompt_plan.md ?
  • Combien de temps et de quota (menu Copilot, ou /usage dans Claude Code) par rapport à l'étape 2 ?
  • Avez-vous gardé la main, ou avez-vous seulement validé ?
  • Sur votre prochain projet, laquelle des trois façons utiliseriez-vous ?

Les trois façons, côte à côte

Spec, plan, checklistBonnes pratiques de l'agentSuperpowers
CadrageUne question à la fois → spec.mdInterview → SPEC.md, mode planSkill brainstorming
Planprompt_plan.md + todo.mdPas de format imposéSkill writing-plans
VérificationTests à chaque étape, vous les lancezVérification lancée par l'agent, relecteur, hook de finTDD imposé, relecture entre les tâches
Garde-fousVos commitsHook preToolUse, approbations, bac à sableWorktree isolé, revues bloquantes
OutilN'importe quel LLMCopilot, Claude Code, Junie…Plugin à installer
Qui piloteVous, à chaque promptVous, avec des contrôles automatiquesLes skills, vous validez

Livrables et démo

Pour la démo d'une minute

  • Ce que fait votre application.
  • Le prompt qui vous a fait gagner le plus de temps.
  • La correction humaine qui était indispensable.