Proposer une nouvelle modification - créer la modification et générer tous les artefacts en une seule étape.
Je vais créer une modification avec les artefacts suivants :
- proposal.md (quoi et pourquoi)
- design.md (comment)
- tasks.md (étapes d'implémentation)
Lorsque vous serez prêt à implémenter, exécutez /opsx:apply
Sélection du magasin : Si l'utilisateur nomme un magasin (un magasin est un dépôt OpenSpec autonome enregistré sur cette machine) ou si le travail se trouve dans un magasin, exécutez openspec store list --json pour découvrir les identifiants de magasin enregistrés, puis passez --store <id> sur les commandes qui lisent ou écrivent des spécifications et des modifications (new change, status, instructions, list, show, validate, archive, doctor, context). Les autres commandes n'acceptent pas ce drapeau. Les indications imprimées par les commandes portent déjà le drapeau ; conservez-le dans les suivis. Sans magasin, les commandes agissent sur la racine openspec/ locale la plus proche.
Entrée : La demande de l'utilisateur doit inclure un nom de modification (en kebab-case) OU une description de ce qu'il souhaite construire.
Étapes
-
Si aucune entrée claire n'est fournie, demandez ce que l'utilisateur veut construire
Utilisez l'outil AskUserQuestion (question ouverte, sans options prédéfinies) pour demander :
« Sur quelle modification souhaitez-vous travailler ? Décrivez ce que vous voulez construire ou corriger. »
À partir de leur description, dérivez un nom en kebab-case (par exemple, « ajouter l'authentification utilisateur » →
ajouter-auth-utilisateur).IMPORTANT : Ne continuez pas sans comprendre ce que l'utilisateur veut construire.
-
Créez le répertoire de la modification
openspec new change "<nom>"Cela crée une modification échafaudée dans le répertoire racine de planification résolu par la CLI avec
.openspec.yaml. -
Obtenez l'ordre de construction des artefacts
openspec status --change "<nom>" --jsonAnalysez le JSON pour obtenir :
applyRequires: tableau des identifiants d'artefacts nécessaires avant l'implémentation (par exemple["tasks"])artifacts: liste de tous les artefacts avec leur statut et leurs dépendancesplanningHome,changeRoot,artifactPathsetactionContext: chemin et portée du contexte. Utilisez-les au lieu de supposer des chemins locaux au dépôt.
-
Créez les artefacts en séquence jusqu'à ce que la modification soit prête à être appliquée
Utilisez l'outil TodoWrite pour suivre la progression à travers les artefacts.
Parcourez les artefacts dans l'ordre des dépendances (artefacts sans dépendances en attente en premier) :
a. Pour chaque artefact qui est
ready(dépendances satisfaites) :- Obtenez les instructions :
openspec instructions <id-artefact> --change "<nom>" --json - Le JSON des instructions comprend :
context: Contexte du projet (contraintes pour vous - NE PAS inclure dans la sortie)rules: Règles spécifiques à l'artefact (contraintes pour vous - NE PAS inclure dans la sortie)template: La structure à utiliser pour votre fichier de sortieinstruction: Recommandations spécifiques au schéma pour ce type d'artefactresolvedOutputPath: Chemin ou motif résolu pour écrire l'artefactdependencies: Artefacts terminés à lire pour le contexte
- Lisez tous les fichiers de dépendance terminés pour le contexte
- Créez le fichier d'artefact en utilisant
templatecomme structure et écrivez-le dansresolvedOutputPath - Appliquez
contextetrulescomme contraintes - mais ne les copiez PAS dans le fichier - Affichez une brève progression : « Artefact créé »
b. Continuez jusqu'à ce que tous les artefacts
applyRequiressoient terminés- Après avoir créé chaque artefact, réexécutez
openspec status --change "<nom>" --json - Vérifiez si chaque identifiant d'artefact dans
applyRequiresastatus: "done"dans le tableau des artefacts - Arrêtez-vous lorsque tous les artefacts
applyRequiressont terminés
c. Si un artefact nécessite une saisie utilisateur (contexte peu clair) :
- Utilisez l'outil AskUserQuestion pour clarifier
- Puis continuez avec la création
- Obtenez les instructions :
-
Affichez le statut final
openspec status --change "<nom>"
Sortie
Après avoir terminé tous les artefacts, résumez :
- Nom et emplacement de la modification
- Liste des artefacts créés avec de brèves descriptions
- Ce qui est prêt : « Tous les artefacts créés ! Prêt pour l'implémentation. »
- Invite : « Exécutez
/opsx:applyou demandez-moi d'implémenter pour commencer à travailler sur les tâches. »
Directives de création d'artefacts
- Suivez le champ
instructiondeopenspec instructionspour chaque type d'artefact - Le schéma définit ce que chaque artefact doit contenir - respectez-le
- Lisez les artefacts de dépendance pour le contexte avant d'en créer de nouveaux
- Utilisez
templatecomme structure pour votre fichier de sortie - remplissez ses sections - IMPORTANT :
contextetrulessont des contraintes pour VOUS, pas du contenu pour le fichier- Ne copiez PAS les blocs
<context>,<rules>,<project_context>dans l'artefact - Ils guident ce que vous écrivez, mais ne doivent jamais apparaître dans la sortie
- Ne copiez PAS les blocs
Garde-fous
- Créez TOUS les artefacts nécessaires à l'implémentation (tels que définis par
apply.requiresdu schéma) - Lisez toujours les artefacts de dépendance avant d'en créer un nouveau
- Si le contexte est critique et peu clair, demandez à l'utilisateur - mais préférez prendre des décisions raisonnables pour maintenir la dynamique
- Si une modification avec ce nom existe déjà, demandez si l'utilisateur veut la continuer ou en créer une nouvelle
- Vérifiez que chaque fichier d'artefact existe après l'écriture avant de passer au suivant