IA Agent Débutant
OpenSpec, développer avec des spécifications
Cadrer, spécifier et valider les changements d'un projet assisté par IA avant l'implémentation grâce à OpenSpec.
openspecspécificationsdéveloppement-assistéagents-iasdd
Définition
OpenSpec est un standard ouvert et un outil en ligne de commande pour le Spec-Driven Development (SDD, ou développement piloté par les spécifications) assisté par agents IA.
Plutôt que de laisser un agent deviner l’architecture ou coder à partir d’un prompt vague, OpenSpec force une séparation nette en deux temps :
- La phase de spécification : l’agent formalise l’intention, les exigences fonctionnelles et la liste ordonnée des tâches, que le développeur relit et affine.
- La phase d’implémentation : l’agent applique les tâches pas-à-pas sur une base validée, puis archive le changement pour actualiser la documentation vivante du projet.
Le cycle de travail en 5 étapes
Le flux de travail OpenSpec s’articule autour d’une boucle courte et maîtrisée :
- Explorer (
openspec explore) (facultatif) : clarifier une idée, poser des questions et évaluer plusieurs approches techniques avant d’engager du travail. - Proposer (
openspec propose <nom>) : créer un dossier de changement isolé contenant la proposition, les spécifications delta et le plan de tâches. - Relire (Validation humaine) : étape critique où le développeur examine les artéfacts créés, corrige les choix techniques et ajuste les critères de succès avant toute modification de code.
- Appliquer (
openspec apply) : l’agent implémente les tâches une par une, exécute les tests et coche les cases d’avancement danstasks.md. - Archiver (
openspec archive) : les spécifications delta sont fusionnées dans la documentation pérenne (openspec/specs/) et le dossier de changement est archivé.
Mots-clés et artéfacts
| Artéfact / Dossier | Rôle |
|---|---|
openspec/specs/ | Spécifications pérennes décrivant le comportement actuel attendu du système |
openspec/changes/<id>/ | Dossier isolé dédié à une évolution ou un correctif précis |
proposal.md | Résume le pourquoi, le périmètre, les contraintes et l’impact du changement |
specs/ (delta) | Décrit les exigences ajoutées, modifiées ou retirées par rapport aux specs actuelles |
tasks.md | Liste séquentielle et cochable des tâches techniques à réaliser |
design.md | Document optionnel détaillant les choix d’architecture ou les modèles de données |
Commandes principales
Dans le terminal ou via l’assistant IA (commandes slash selon l’outil) :
| Commande CLI | Commande assistant | Rôle |
|---|---|---|
openspec init | — | Initialise OpenSpec et crée la configuration du projet |
openspec propose <id> | /opsx:propose <id> | Rédige en une passe la proposition, les specs delta et les tâches |
openspec apply | /opsx:apply | Lance l’implémentation des tâches définies |
openspec sync | /opsx:sync | Synchronise les specs delta vers les specs principales sans archiver |
openspec archive | /opsx:archive | Fusionne les deltas dans les specs de référence et clôt le changement |
Exemple pratique de structure
Voici à quoi ressemble l’arborescence d’un projet utilisant OpenSpec :
mon-projet/
├── openspec/
│ ├── config.yaml # Configuration et règles du projet
│ ├── specs/ # Spécifications de référence
│ │ └── authentification/
│ │ └── spec.md
│ └── changes/
│ ├── archive/ # Historique des changements terminés
│ └── add-rate-limiting/
│ ├── proposal.md # Contexte et objectif
│ ├── design.md # Stratégie (ex. token bucket via Redis)
│ ├── tasks.md # Liste des étapes d'implémentation
│ └── specs/ # Delta par rapport à l'existant
│ └── authentification/
│ └── spec.md
Exemple d’un fichier tasks.md
Les tâches sont formulées de manière vérifiable pour guider l’agent sans ambiguïté :
# Tâches pour la limitation des requêtes
- [x] 1. Configurer le middleware de limitation de débit
- [x] 1.1 Installer la dépendance de stockage en mémoire
- [x] 1.2 Définir le seuil à 5 tentatives par minute
- [ ] 2. Gérer le dépassement de quota
- [ ] 2.1 Renvoyer un code HTTP 429 avec l'en-tête Retry-After
- [ ] 2.2 Ajouter un test unitaire simulant 6 requêtes consécutives
Deux cas d’usage : projet neuf vs projet existant
Selon la maturité de votre code, la stratégie d’adoption d’OpenSpec diffère :
Cas 1 : Projet partant de zéro (greenfield)
Dans un dossier vide ou fraîchement initialisé avec Git :
- Initialiser l’environnement : lancez
openspec inità la racine pour générer le dossieropenspec/et configurer votre assistant. - Éviter le piège de la méga-spécification : ne tentez pas de décrire toute l’application d’un coup. Le modèle SDD reste incrémental.
- Proposer le premier socle technique : demandez à l’assistant de proposer la fondation (
openspec propose setup-architectureouinit-backend). Utilisezopenspec exploresi les choix technologiques nécessitent une discussion préalable. - Valider et appliquer : relisez
proposal.md, vérifiez que les dépendances et la configuration sont cohérentes, appliquez les tâches (openspec apply), puis archivez (openspec archive). - Enchaîner par incréments : chaque nouvelle fonctionnalité s’appuie désormais sur les spécifications enregistrées lors de l’étape précédente.
Cas 2 : Projet déjà bien avancé (brownfield)
Sur une base de code existante comportant déjà de nombreux fichiers, composants ou API :
- Initialiser sans tout rétro-documenter : lancez
openspec init. Le dossieropenspec/specs/démarre vide, ce qui est tout à fait normal. Il est inutile et contre-productif de passer des semaines à rétro-spécifier le code historique. - Spécifier au fil de l’eau (Just-In-Time) : adoptez OpenSpec dès le prochain besoin concret (ajout d’une fonctionnalité, refactorisation d’un module ou correction d’un bug critique).
- Cibler le delta : l’agent analyse le code et les tests existants pour formuler sa proposition. Les spécifications delta ne décrivent que le comportement attendu sur le périmètre touché.
- Appliquer et archiver : une fois le travail vérifié et validé,
openspec archivereporte les spécifications du module dansopenspec/specs/. - Croissance organique de la documentation : au fil des semaines, la documentation vivante de votre projet se constitue naturellement sans jamais ralentir le rythme des livraisons.
Bonnes pratiques et pièges à éviter
- Ne jamais sauter la relecture : La force du modèle repose sur la relecture de
proposal.mdettasks.mdavant l’écriture du premier fichier source. - Découper en changements atomiques : Éviter les changements monstres qui touchent dix fonctionnalités à la fois. Un changement OpenSpec doit avoir un périmètre unitaire.
- Ne pas éditer manuellement
specs/en cours de route : Toutes les modifications doivent passer par un delta de changement danschanges/, puis être intégrées automatiquement lors de l’archivage.