Spec-Driven Development
En développement assisté par agents IA, le Spec-Driven Development (SDD) fait d'une spécification structurée et versionnée avec le code, la référence à partir de laquelle les agents planifient, produisent et vérifient le code. Le prompt libre est remplacé par un contrat écrit, relu et validé par un humain avant toute génération.
Le problème que le SDD cherche à résoudre
Les modèles génératifs sont non déterministes : le même prompt ne donne pas deux fois le même code, et ils peuvent produire avec assurance des éléments faux, comme par exemple des API qui n'existent pas. Tant que l'usage se limite à des compléments de code ou à de petites tâches, ces défauts se corrigent à la main. Ils deviennent structurels dès que l'on confie à un agent des travaux longs. Les principales difficultés viennent du fait que l'agent ne se souvient pas des décisions prises dans une session précédente (d'où l'expression « session amnesia »), ses performances se dégradent à mesure que son contexte de travail s'allonge (on parle de « context rot »), et le code s'éloigne progressivement de l'architecture voulue (« architectural drift »).
Le terme « vibe coding » (popularisée par Andrej Karpathy en février 2025) désigne cette pratique du prompt conversationnel sans cadre : efficace pour un prototype, fragile sur un système qui doit durer. L'expression « spec-driven development » est plus ancienne, mais elle s'est imposée dans le contexte des agents IA au second semestre 2025, avec la sortie de frameworks par des grands industriels du digital (Kiro de AWS en juillet et Spec Kit de GitHub en septembre), comme réponse outillée à cette fragilité.
La spécification comme contrat
Le développeur, ou le PO avec lui, rédige un fichier de spécification (le plus souvent en Markdown) qui contient les récits utilisateurs, les critères d'acceptation, les contraintes du système et, selon les outils, des règles invariantes du projet, que certains outils appellent « constitution ». Cette spécification est relue, validée, puis versionnée avec le code. Elle fait autorité : quand code et spécification divergent, c'est la spécification que l'on corrige d'abord, puis le code.
Ce n'est pas un cahier des charges au sens classique. Elle est écrite pour être lue par un humain et consommée par un agent, et elle reste vivante tant que la fonctionnalité existe.
Le cycle en quatre phases
Les outils de SDD convergent vers un même enchaînement, en trois ou quatre phases selon le découpage retenu. Le nom des phases varie, pas leur logique. Le cycle est structuré et rejouable, mais pas déterministe : ce sont les points de validation humaine qui compensent la variabilité des modèles.
- Specify (Spécifier) : un humain définit le « quoi », comportements attendus et critères d'acceptation, sans choix technique.
- Plan (Planifier) : l'agent dérive de la spécification un plan technique (architecture, modèles de données, interfaces, dépendances). Ce plan est relu et approuvé avant d'aller plus loin : c'est le point de contrôle le plus important du cycle.
- Tasks (Découper) : le plan est découpé en tâches courtes, ordonnées par dépendance, chacune rattachée à un ou plusieurs critères d'acceptation. Ce découpage permet de confier à un agent un périmètre qui tient dans sa fenêtre de contexte.
- Implement (Implémenter) : les agents produisent code et tests, tâche par tâche. Les tests automatisés vérifient ce que les critères d'acceptation ont permis d'encoder. La conformité à l'intention reste vérifiée par une relecture humaine (normalement) avant fusion (merge).
Principe général
graph TD
A[Besoins] --> B[Specify : le quoi]
B --> C[Plan : le comment]
C --> D[Tasks : découpage]
D --> E[Implement : code et tests par l'agent]
E --> F[Tests automatisés]
F -- Échec --> E
F -- Succès --> G[Relecture humaine]
G -- Écart avec l'intention --> B
G -- Conforme --> H[Fusion]
Trois niveaux de SDD
Birgitta Böckeler distingue trois niveaux, selon le sort réservé à la spécification une fois la tâche terminée :
- spec-first : la spécification est écrite avant la tâche et guide l'implémentation. Elle peut être abandonnée ensuite. C'est le niveau décrit ci-dessus et le plus courant.
- spec-anchored : la spécification est conservée et mise à jour pour faire évoluer la fonctionnalité. Elle devient la documentation de référence.
- spec-as-source : seule la spécification est éditée par l'humain, le code est régénéré à chaque changement. Ce niveau reste expérimental.
Limites et critiques
Le SDD ne fait pas consensus. En janvier 2026, Kent Beck a relevé que les descriptions du SDD supposent que l'on n'apprendra rien qui pourrait modifier la spécification pendant l'implémentation, hypothèse qu'il juge étrange. Martin Fowler a repris et enrichi cette critique, en rappelant que la boucle de feedback courte est au cœur de l'agilité. La critique vise la spécification figée avant de coder, pas la spécification en tant que telle. Le niveau spec-anchored, où la spécification évolue avec le code, y répond mieux que le spec-first.
Böckeler note pour sa part que les outils produisent parfois des quantitées de spécification disproportionnés pour de petits changements, donc difficiles à relire.
Trois écueils reviennent dans les retours de praticiens :
- la sur-spécification, quand la spécification devient du pseudo-code et bride l'implémentation
- la dérive, quand on modifie le code sous pression sans mettre à jour la spécification
- la fausse confiance : des tests qui passent prouvent que le code respecte la spécification, pas que la spécification est juste.
Ce que le SDD n'est pas
- Un prompt long. La spécification est relue, validée et versionnée alors qu'un prompt ne l'est pas.
- Un fichier d'instructions pour l'agent (AGENTS.md, CLAUDE.md). Ces fichiers relèvent de l'ingénierie de contexte : ils disent à l'agent comment travailler, pas quoi construire.
- Une nouveauté. Le SDD prolonge le BDD (Behaviour-Driven Development) et ses scénarios Gherkin, le design-first des API (OpenAPI) et les décisions d'architecture consignées (ADR). Ce qui change, c'est que la spécification est désormais consommée par une machine qui produit le code.
Sources
- Birgitta Böckeler (Thoughtworks), « Understanding Spec-Driven-Development: Kiro, spec-kit, and Tessl », martinfowler.com, 15 octobre 2025. Définition et trois niveaux. https://martinfowler.com/articles/exploring-gen-ai/sdd-3-tools.html
- GitHub, Spec Kit, dépôt et documentation, septembre 2025. Cycle Specify / Plan / Tasks / Implement et notion de constitution. https://github.com/github/spec-kit
- Kent Beck, publication LinkedIn, janvier 2026, reprise et commentée par Martin Fowler, « Fragments: January 8 », martinfowler.com, 8 janvier 2026. https://martinfowler.com/fragments/2026-01-08.html
| Provenance | manual éditorial |
| Établie le | 2026-09-10 |
Cet en-tête est saisi à la main, comme toute cette page : elle est rédigée de bout en bout, et ne porte aucun bloc calculé.