Retour au blog

Le workflow de developpement Spec-First avec Claude Code

Le workflow de developpement Spec-First avec Claude Code

Il y a un fosse grandissant entre les developpeurs qui obtiennent des resultats fiables de Claude Code et ceux qui passent la moitie de leur journee a defaire ce que l'agent vient de construire. La difference n'est ni le talent, ni l'experience, ni un quelconque secret de prompt engineering. C'est une question de methodologie. Les developpeurs qui livrent du logiciel de production avec des agents IA ont converge vers un schema, qu'ils le nomment ou non : definir ce que l'on veut avant que l'agent commence a ecrire du code.

Cet article donne un nom a ce schema. Le developpement spec-first est une methodologie pour l'ingenierie logicielle assistee par IA. Pas une vague "bonne pratique." Un cycle de vie structure et reproductible avec des phases definies, des checkpoints clairs et des artefacts concrets a chaque etape. Si vous cherchez un moyen de rendre la sortie de Claude Code assez previsible pour y engager votre calendrier de releases, voici le framework.

Le plafond du Vibe Coding

"Vibe coding" est entre dans le vocabulaire debut 2025. La proposition : decrivez ce que vous voulez en langage naturel, laissez l'IA l'ecrire, iterez jusqu'a ce que ca semble correct. Pour les prototypes, les projets du weekend et les scripts ponctuels, le vibe coding fonctionne. On obtient quelque chose de fonctionnel rapidement, et si ca casse plus tard, les enjeux sont faibles.

Le logiciel de production opere sous des contraintes differentes. Le code doit s'integrer a une codebase existante, satisfaire des exigences specifiques et survivre au contact avec d'autres personnes qui le maintiendront. Quand le vibe coding rencontre ces contraintes, les modes d'echec sont previsibles.

Le premier echec est la derive. Vous decrivez une fonctionnalite vaguement, l'agent implemente son interpretation, vous ajustez, l'agent reimplemente son interpretation ajustee. Trois iterations plus tard, vous avez du code fonctionnel qui ne satisfait aucune de vos exigences originales parce que chaque iteration a deplace la cible. Vous convergez vers ce que l'agent pense que vous voulez, pas vers ce dont vous avez reellement besoin.

Le deuxieme echec, ce sont les decisions invisibles. Chaque lacune dans votre description est une decision que l'agent prend silencieusement. Schema de base de donnees, strategie de gestion d'erreurs, forme de l'API, regles de validation, choix de librairies. Vous decouvrez ces decisions lors de la revue de code, ou pire, en production. L'agent n'a pas pris de mauvaises decisions. Il a pris des decisions non commandees, et vous n'aviez aucun mecanisme pour les detecter avant qu'elles ne soient integrees dans l'implementation.

Le troisieme echec est la paralysie de revue. Un diff de 600 lignes ou l'agent a choisi l'architecture, le modele de donnees, les codes d'erreur et la gestion des cas limites n'est pas revisable au sens traditionnel. Vous ne revisez pas du code contre une spec. Vous reconstituez la spec a partir du code, puis decidez si vous etes d'accord. Cela prend plus de temps que l'ecriture de la spec n'en aurait pris.

Le vibe coding atteint un plafond parce qu'il confond deux activites distinctes : decider quoi construire et le construire. Le developpement spec-first les separe.

Spec-First comme methodologie

Le developpement spec-first est un cycle de vie en quatre phases. Chaque phase produit un artefact concret. Chaque transition a une condition de passage claire. La methodologie fonctionne avec tout agent de codage IA, mais les exemples de cet article utilisent Claude Code parce que c'est la que la communaute itere le plus vite.

Phase 1 : Brainstorm

Vous et l'agent (ou vous seul) explorez l'espace du probleme. Quelles sont les contraintes ? Quelles approches existent ? Quels sont les compromis ? C'est conversationnel. Vous ne vous engagez sur rien. Vous cartographiez le terrain.

La condition de passage : vous avez une approche preferee et pouvez articuler pourquoi celle-ci plutot que les alternatives.

Le brainstorm avec Claude Code est precieux parce que l'agent a une large connaissance des patterns et librairies. L'erreur est de sauter du brainstorm directement au code. Le brainstorm fait emerger des options. Il ne choisit pas entre elles. C'est vous qui choisissez.

Phase 2 : Spec

Vous ecrivez la decision. C'est le contrat contre lequel l'agent implementera. Une spec n'est pas une user story, pas un ticket Jira, pas un paragraphe de prose. C'est un document structure avec :

  • Enonce du probleme : ce qui est casse ou manquant, en termes concrets
  • Approche proposee : la solution choisie lors de la phase de brainstorm
  • Fichiers concernes : quels fichiers l'agent doit toucher (et implicitement, lesquels il ne doit pas)
  • Criteres d'acceptation : conditions testables qui definissent "termine"
  • Hors perimetre : ce que l'agent doit explicitement eviter

Les criteres d'acceptation sont l'element le plus important. Chacun doit etre une action concrete avec un resultat observable. "L'authentification devrait fonctionner" n'est pas un critere. "Soumettre des identifiants valides retourne un 200 avec un token de session ; soumettre des identifiants invalides retourne un 401 sans token" en est un.

La section hors perimetre empeche le gold-plating. Sans elle, les agents "amelioreront" du code adjacent, refactoriseront des fichiers qu'ils ont remarques desordonnees, ou ajouteront des fonctionnalites qui semblent liees. Chaque minute que l'agent passe sur du travail non demande est une minute que vous passez a revoir du travail non demande.

La condition de passage : quelqu'un qui n'etait pas au brainstorm pourrait lire cette spec et construire la bonne chose.

Phase 3 : Implementation

L'agent execute contre la spec. Pas contre une conversation. Pas contre un souvenir de ce que vous avez discute. Contre un document concret avec des criteres testables.

Avant d'ecrire du code, l'agent produit un plan : une liste numerotee des changements qu'il compte faire, quels fichiers il modifiera et comment il verifiera le resultat. Ce plan est un checkpoint de deux minutes. Vous le lisez, confirmez qu'il correspond a votre intention et donnez le feu vert a l'implementation. Ou vous detectez un malentendu et le corrigez. Dans les deux cas, vous avez investi deux minutes au lieu de vingt.

Le pattern plan-avant-code n'est pas de la bureaucratie. C'est l'intervention individuelle a plus fort levier dans tout le workflow. La plupart des erreurs d'implementation ne sont pas des erreurs de codage. Ce sont des erreurs de comprehension : l'agent a mal compris la spec. Detecter une erreur de comprehension dans un plan coute deux minutes. La detecter dans un diff de 400 lignes coute vingt. La detecter en production coute une journee.

La condition de passage : l'agent a publie un rapport de completion avec des affirmations specifiques sur ce qui a ete construit et comment cela a ete verifie.

Phase 4 : Verification

Vous ou un processus QA confirmez l'implementation contre la spec. Pas "est-ce que ca a l'air correct ?" mais "est-ce que ca satisfait chaque critere d'acceptation ?"

La verification est mecanique. Vous prenez chaque critere de la spec, executez le test (lancer une commande, ouvrir un navigateur, declencher un evenement) et enregistrez le resultat : passe ou echoue. Les criteres qui echouent retournent en Phase 3. La verification est documentee aux cotes de l'implementation pour que quiconque lira la tache dans six mois puisse voir exactement ce qui a ete teste.

La condition de passage : chaque critere d'acceptation a un resultat passe/echoue enregistre.

Voila le cycle de vie complet. Quatre phases, quatre artefacts (justification de l'approche, spec, plan d'implementation, registre de verification), quatre conditions de passage. Les phases sont sequentielles mais legeres. Pour une fonctionnalite de taille moyenne, les phases 1 et 2 prennent 15-20 minutes. La phase 3 prend le temps de l'implementation. La phase 4 prend 5-10 minutes.

Pourquoi c'est plus important avec les agents qu'avec les humains

Chaque argument pour ecrire des specs est anterieur a l'IA. "Ecrivez les exigences avant le code" est un conseil qui existe depuis avant la naissance de la plupart d'entre nous. Alors pourquoi presenter cela comme specifique au developpement assiste par IA ?

Parce que les agents changent la fonction de cout.

Un developpeur humain qui recoit une exigence vague s'arretera et posera des questions. "Tu voulais dire auth par mot de passe ou SSO ?" "Ca doit fonctionner sur mobile ?" "Que se passe-t-il quand le token expire ?" Chaque question est un mini-checkpoint qui pousse l'implementation vers la bonne cible. Le cout d'une spec vague avec un developpeur humain, c'est quelques fils Slack et peut-etre un apres-midi de retravail.

Un agent qui recoit une exigence vague ne s'arretera pas. Il prendra chaque decision ambigue silencieusement, s'engagera sur une approche et vous presentera une implementation terminee. Le cout d'une spec vague avec un agent, c'est une implementation terminee qui peut etre entierement fausse, plus le temps que vous passez a decouvrir qu'elle est fausse, plus le temps que vous passez a la refaire.

L'asymetrie est frappante. Les agents sont plus rapides a l'execution et moins bons en jugement que les developpeurs humains. Chaque ambiguite dans la spec est un appel au jugement, et chaque appel au jugement que l'agent fait sans guidance est un pile ou face sur le fait que le resultat correspond a votre intention. Une spec elimine les piles ou face.

Il y a une seconde raison, plus subtile. Les agents ne contestent pas. Un ingenieur senior qui recoit une mauvaise spec dira "ca n'a pas de sens a cause de X." Un agent implementera fidelement une mauvaise spec et produira un output fidelement errone. Le developpement spec-first vous oblige a eprouver votre propre reflexion avant de la remettre a une entite qui l'executera sans poser de questions. La spec n'est pas que pour l'agent. Elle est pour vous.

C'est le probleme que Beadbox resout.

Visibilite en temps reel sur ce que fait toute votre flotte d'agents.

Essayez-le gratuitement pendant la beta →

Le checkpoint plan-avant-code

Si vous ne retenez qu'une seule pratique de cet article et ignorez le reste, retenez celle-ci.

Avant que l'agent ecrive du code, exigez qu'il publie un plan d'implementation. Pas du code. Pas un diff. Un schema structure de ce qu'il compte faire.

Un plan ressemble a ceci : des etapes numerotees en ordre d'execution, les fichiers a modifier, les changements de logique dans chaque fichier et l'approche de verification. L'agent le produit en environ trente secondes. Vous le lisez en environ deux minutes. En ces deux minutes, vous pouvez detecter :

  • Violations de perimetre : l'agent prevoit de modifier des fichiers non listes dans la spec
  • Incoherences architecturales : l'agent a choisi une approche qui entre en conflit avec les patterns existants
  • Etapes manquantes : le plan n'aborde pas un critere d'acceptation
  • Surconception : l'agent prevoit de construire des abstractions non justifiees

La revue de plan de 2 minutes remplace la revue de diff de 20 minutes ou vous decouvrez ces problemes apres qu'ils aient ete construits. C'est la porte de qualite la moins couteuse en ingenierie logicielle.

J'ai ecrit un guide detaille du pattern plan-avant-code dans Developpement spec-driven avec Claude Code, incluant des modeles de spec et des formats de rapports de completion. Cet article se concentre sur pourquoi le pattern fonctionne ; celui-la sur comment l'implementer.

La verification comme etape a part entiere

La phase la plus sous-investie dans le workflow de la plupart des developpeurs est la verification. L'agent dit "termine." Le developpeur jette un oeil au diff. Le merge a lieu. Le bug surgit deux jours plus tard quand un utilisateur tombe sur le cas limite numero trois des criteres d'acceptation.

Le developpement spec-first traite la verification comme une etape formelle avec ses propres artefacts. Le rapport de completion associe chaque critere d'acceptation a une verification concrete :

  • Critere : "Changer de workspace restaure l'etat des filtres sauvegarde."
  • Verification : Ouvrir l'app, definir les filtres dans le workspace A, basculer vers le workspace B, revenir au workspace A, observer que les filtres sont restaures.
  • Resultat : Passe.

Ce n'est pas du surcharge. C'est l'etape qui determine si l'implementation satisfait effectivement la spec. Sans elle, la spec est une liste de souhaits et les criteres d'acceptation sont aspirationnels.

Le registre de verification resout aussi un probleme en aval : la revue de code. Quand un revieweur ouvre le pull request, il lit la spec, lit le registre de verification et revoit le diff avec un contexte complet. Le temps de revue diminue parce que le revieweur confirme une affirmation verifiee, pas mene une investigation.

Quand vous faites tourner plusieurs agents en parallele, chacun implementant une spec differente, la discipline de verification fait la difference entre un pipeline controle et un tas de code qui "fonctionne probablement." Chaque spec a des criteres. Chaque implementation a un rapport de completion. Chaque rapport associe des criteres a des verifications. Rien n'est livre sans verification enregistree.

Objections et compromis honnetes

Le developpement spec-first n'est pas gratuit. Les objections sont reelles et meritent une reponse frontale.

"Ecrire des specs me ralentit." Pris isolement, oui. Ecrire une spec pour une fonctionnalite prend 15-20 minutes. Mais vous recuperez ce temps (et plus) dans les phases d'implementation et de revue. Un agent avec une spec claire produit plus souvent une implementation correcte qu'un agent avec un prompt vague. Moins d'iterations, moins de retravail, des revues plus courtes. L'effet net pour des fonctionnalites de substance est une livraison plus rapide, pas plus lente.

Pour des changements triviaux (renommer une variable, corriger une faute de frappe, incrementer une version), les specs sont du surcharge inutile. Spec-first est pour le travail ou l'implementation requiert des decisions. Si le changement est mecanique et non ambigu, passez la spec.

"Mon agent est assez bon sans specs." Pour certaines taches, probablement vrai. Claude Code est remarquablement capable d'inferer l'intention a partir de descriptions breves. La question n'est pas si l'agent peut produire un bon output a partir d'instructions vagues. C'est s'il le fait de facon fiable. Si vous etes a l'aise avec du retravail occasionnel et des temps de revue imprevisibles, le vibe coding peut suffire a votre cas d'usage. Spec-first est rentable quand la coherence et la previsibilite comptent : quand la fonctionnalite est complexe, quand le code va en production, quand quelqu'un d'autre le maintiendra.

"Les specs deviennent obsoletes." Preoccupation valide. Une spec ecrite pendant le brainstorm pourrait ne pas survivre au contact avec la realite. La solution n'est pas de sauter les specs. C'est de mettre a jour la spec quand le plan revele de nouvelles informations. Si le plan de l'agent montre que l'approche dans la spec ne fonctionnera pas, revisez la spec avant de continuer. La spec est un document vivant pendant la duree de l'implementation. Elle devient un document historique apres verification.

"C'est juste du waterfall." Non. L'echec du waterfall, c'etait de grosses specs pour de gros projets avec de longs cycles de feedback. Le developpement spec-first opere au niveau de la tache : une spec par fonctionnalite ou correctif, ecrite en 15-20 minutes, implementee en heures, verifiee le meme jour. La boucle de feedback est courte. L'investissement par spec est petit. Si la spec est fausse, vous le decouvrez pendant la revue du plan, pas six mois plus tard.

Outiller le cycle de vie Spec-First

La methodologie fonctionne avec tout systeme de taches : GitHub Issues, Linear, Notion, fichiers texte simples. Ce qui compte, c'est que la spec, le plan, les notes d'implementation et les resultats de verification vivent au meme endroit, attaches a une tache.

Si vous cherchez un systeme concu pour ce workflow, beads est un issue tracker open-source et Git-natif qui porte tout le cycle de vie. Chaque "bead" contient une description (votre spec), un fil de commentaires (plans et rapports de completion), un statut (open, in_progress, ready_for_qa, done) et des metadonnees comme les dependances et les priorites. Le CLI bd opere depuis le terminal, ce qui signifie que les agents peuvent lire les specs, publier des plans et rapporter les completions sans quitter leur environnement de travail.

bd create --title "Persist filter state across workspaces" \
  --description "## Problem ..." --type feature --priority p2

bd update bb-a1b2 --claim --actor eng1
bd comments add bb-a1b2 --author eng1 "PLAN: ..."

# After implementation:
bd comments add bb-a1b2 --author eng1 "DONE: ... Commit: a1b2c3d"
bd update bb-a1b2 --status ready_for_qa

Tout le cycle de vie se deroule dans le CLI. Six mois plus tard, bd show bb-a1b2 retourne l'historique complet de ce qui a ete specifie, planifie, construit et verifie.

Quand vous faites tourner un agent a travers ce cycle de vie, le CLI suffit. Quand vous en faites tourner cinq ou dix en parallele, chacun a un stade different du pipeline spec-implement-verify, vous avez besoin de voir l'etat du pipeline d'un coup d'oeil. Beadbox est un dashboard en temps reel qui montre quelles specs sont ouvertes, lesquelles ont des plans en attente de revue, lesquelles sont en cours, lesquelles sont bloquees et lesquelles sont pretes pour verification. Il surveille la meme base de donnees beads dans laquelle ecrivent les agents, se mettant a jour en direct quand les statuts changent.

Vous n'avez pas besoin de Beadbox pour pratiquer le developpement spec-first. La methodologie est agnostique aux outils. Mais quand les flux de travail paralleles transforment votre pipeline en une file de taches que vous ne pouvez plus suivre de memoire, la couche visuelle change la vitesse a laquelle vous pouvez revoir, debloquer et livrer.

Le changement plus large

Le developpement spec-first n'est pas une reaction au fait que les agents de codage IA soient mauvais. C'est la reconnaissance qu'ils sont bons dans les mauvaises choses sans guidance. Les agents sont des executeurs extraordinairement capables. Ils ecrivent une syntaxe correcte, suivent les patterns, gerent le boilerplate et produisent un volume qu'aucun humain ne peut egaler. Ce qui leur manque, c'est le contexte pour prendre de bonnes decisions sur quoi construire. Ce contexte vient de vous, et la spec est le vehicule.

Les developpeurs qui prospereront dans l'ingenierie assistee par IA ne sont pas ceux qui ecrivent les meilleurs prompts. Ce sont ceux qui ecrivent les meilleures specs. Les prompts sont ephemeres. Les specs sont durables. Les prompts optimisent pour une interaction unique. Les specs optimisent pour un cycle de vie : brainstorm, definir, implementer, verifier.

Ce n'est pas un contournement temporaire en attendant que les agents deviennent plus intelligents. Meme si les modeles s'ameliorent, l'asymetrie fondamentale demeure : l'humain sait ce dont le business a besoin ; l'agent sait comment ecrire du code. Une spec relie les deux. Les modeles meilleurs executeront les specs plus vite, mais le besoin de la spec ne disparait pas. Il devient plus important a mesure que vous montez en echelle, parce que plus d'agents executant contre des instructions vagues produisent un output plus divergent.

Si vous avez fait tourner des agents Claude Code et trouve les resultats inconsistants, ou passe trop de temps en revue, ou eu du mal a coordonner des flux de travail paralleles, essayez ceci : avant la prochaine fonctionnalite, prenez 15 minutes pour ecrire une spec avec des criteres d'acceptation testables, exigez que l'agent publie un plan avant de coder, et verifiez la sortie critere par critere. Un cycle vous montrera la difference.

Si vous construisez des workflows comme celui-ci, mettez une etoile a Beadbox sur GitHub.

Like what you read?

Beadbox is a real-time dashboard for AI agent coordination. Free during the beta.

Share