Archiver une modification terminée dans le workflow expérimental.
Sélection du store : Si l'utilisateur nomme un store (un store est un dépôt OpenSpec autonome enregistré sur cette machine) ou si le travail réside dans un store, exécutez openspec store list --json pour découvrir les identifiants de store enregistrés, puis passez --store <id> sur les commandes qui lisent ou écrivent des specs et des changements (new change, status, instructions, list, show, validate, archive, doctor, context). Les autres commandes n'acceptent pas ce paramètre. Les indices affichés par les commandes portent déjà le paramètre ; conservez-le dans les suivis. Sans store, les commandes agissent sur la racine openspec/ locale la plus proche.
Entrée : Spécifiez éventuellement un nom de modification. S'il est omis, vérifiez s'il peut être déduit du contexte de la conversation. En cas de vague ou d'ambiguïté, vous DEVEZ demander les modifications disponibles.
Étapes
-
Si aucun nom de modification n'est fourni, demander une sélection
Exécutez
openspec list --jsonpour obtenir les modifications disponibles. Utilisez l'outil AskUserQuestion pour permettre à l'utilisateur de choisir.N'affichez que les modifications actives (non déjà archivées). Incluez le schéma utilisé pour chaque modification si disponible.
IMPORTANT : Ne devinez pas et ne sélectionnez pas automatiquement une modification. Laissez toujours l'utilisateur choisir.
-
Vérifier l'état d'achèvement des artefacts
Exécutez
openspec status --change "<nom>" --jsonpour vérifier l'achèvement des artefacts.Analysez le JSON pour comprendre :
schemaName: Le workflow utiliséplanningHome,changeRoot,artifactPathsetactionContext: contexte de chemin et de portéeartifacts: Liste des artefacts avec leur statut (doneou autre)
Si des artefacts ne sont pas
done:- Affichez un avertissement listant les artefacts incomplets
- Utilisez l'outil AskUserQuestion pour confirmer que l'utilisateur souhaite continuer
- Continuez si l'utilisateur confirme
-
Vérifier l'état d'achèvement des tâches
Lisez le fichier de tâches (généralement
tasks.md) pour vérifier les tâches incomplètes.Comptez les tâches marquées par
- [ ](incomplètes) par rapport à- [x](complètes).Si des tâches incomplètes sont trouvées :
- Affichez un avertissement montrant le nombre de tâches incomplètes
- Utilisez l'outil AskUserQuestion pour confirmer que l'utilisateur souhaite continuer
- Continuez si l'utilisateur confirme
Si aucun fichier de tâches n'existe : Continuez sans avertissement lié aux tâches.
-
Évaluer l'état de synchronisation des spécifications delta
Utilisez
artifactPaths.specs.existingOutputPathsdu JSON de statut pour vérifier les spécifications delta. Si aucune n'existe, continuez sans demande de synchronisation.Si des spécifications delta existent :
- Comparez chaque spécification delta avec sa spécification principale correspondante dans
openspec/specs/<capacité>/spec.md - Déterminez les modifications qui seraient appliquées (ajouts, modifications, suppressions, renommages)
- Affichez un résumé combiné avant de demander
Options de demande :
- Si des modifications sont nécessaires : "Synchroniser maintenant (recommandé)", "Archiver sans synchroniser"
- Si déjà synchronisé : "Archiver maintenant", "Synchroniser quand même", "Annuler"
Si l'utilisateur choisit la synchronisation, utilisez l'outil Task (subagent_type: "general-purpose", prompt: "Utiliser l'outil Skill pour invoquer openspec-sync-specs pour la modification ''. Analyse des spécifications delta : <inclure le résumé des spécifications delta analysé>"). Continuez vers l'archivage quel que soit le choix.
- Comparez chaque spécification delta avec sa spécification principale correspondante dans
-
Effectuer l'archivage
Créez un répertoire
archivesousplanningHome.changesDirs'il n'existe pas :mkdir -p "<planningHome.changesDir>/archive"Générez le nom cible en utilisant la date actuelle :
YYYY-MM-DD-<nom-de-la-modification>Vérifiez si la cible existe déjà :
- Si oui : Échouez avec une erreur, suggérez de renommer l'archive existante ou d'utiliser une date différente
- Si non : Déplacez
changeRootvers le répertoire d'archive
mv "<changeRoot>" "<planningHome.changesDir>/archive/YYYY-MM-DD-<nom>" -
Afficher le récapitulatif
Affichez le récapitulatif de fin d'archivage incluant :
- Nom de la modification
- Schéma utilisé
- Emplacement de l'archive
- Si les spécifications ont été synchronisées (le cas échéant)
- Note concernant les éventuels avertissements (artefacts/tâches incomplets)
Sortie en cas de succès
## Archivage terminé
**Modification :** <nom-modification>
**Schéma :** <nom-schéma>
**Archivée dans :** le chemin d'archive dérivé de `planningHome.changesDir`/YYYY-MM-DD-<nom>/
**Spécifications :** ✓ Synchronisées avec les spécifications principales (ou "Aucune spécification delta" ou "Synchronisation ignorée")
Tous les artefacts complets. Toutes les tâches complètes.
Garde-fous
- Toujours demander la sélection de la modification si elle n'est pas fournie
- Utiliser le graphe des artefacts (
openspec status --json) pour vérifier l'achèvement - Ne pas bloquer l'archivage sur des avertissements - simplement informer et confirmer
- Préserver
.openspec.yamllors du déplacement vers l'archive (il se déplace avec le répertoire) - Afficher un récapitulatif clair de ce qui s'est passé
- Si une synchronisation est demandée, utiliser l'approche openspec-sync-specs (pilotée par agent)
- Si des spécifications delta existent, toujours exécuter l'évaluation de synchronisation et afficher le résumé combiné avant de demander