Archiviere eine abgeschlossene Änderung im experimentellen Workflow.
Store-Auswahl: Wenn der Benutzer einen Store nennt (ein Store ist ein eigenständiges OpenSpec-Repo, das auf diesem Rechner registriert ist) oder die Arbeit in einem solchen liegt, führe openspec store list --json aus, um registrierte Store-IDs zu ermitteln, und übergib dann --store <id> bei den Befehlen, die Spezifikationen und Änderungen lesen oder schreiben (new change, status, instructions, list, show, validate, archive, doctor, context). Andere Befehle verwenden das Flag nicht. Hinweise, die von Befehlen ausgegeben werden, enthalten das Flag bereits; behalte es bei Folgefragen bei. Ohne einen Store arbeiten die Befehle im nächstgelegenen lokalen openspec/-Stammverzeichnis.
Eingabe: Optional kann ein Änderungsname angegeben werden. Wenn nicht angegeben, prüfe, ob er aus dem Gesprächskontext abgeleitet werden kann. Bei Unklarheit oder Mehrdeutigkeit MUSST du nach verfügbaren Änderungen fragen.
Schritte
-
Wenn kein Änderungsname angegeben wird, zur Auswahl auffordern
Führe
openspec list --jsonaus, um verfügbare Änderungen zu erhalten. Verwende das AskUserQuestion-Tool, um den Benutzer auswählen zu lassen.Zeige nur aktive Änderungen (noch nicht archiviert) an. Füge, falls verfügbar, das verwendete Schema für jede Änderung hinzu.
WICHTIG: Rate nicht und wähle keine Änderung automatisch aus. Lasse den Benutzer immer wählen.
-
Abschlussstatus der Artefakte prüfen
Führe
openspec status --change "<name>" --jsonaus, um den Abschlussstatus der Artefakte zu prüfen.Analysiere das JSON, um Folgendes zu verstehen:
schemaName: Der verwendete WorkflowplanningHome,changeRoot,artifactPathsundactionContext: Pfad- und Bereichskontextartifacts: Liste der Artefakte mit ihrem Status (doneoder andere)
Wenn Artefakte nicht
donesind:- Zeige eine Warnung mit der Liste der unvollständigen Artefakte an
- Verwende das AskUserQuestion-Tool, um zu bestätigen, dass der Benutzer fortfahren möchte
- Fahre fort, wenn der Benutzer bestätigt
-
Abschlussstatus der Aufgaben prüfen
Lese die Aufgabendatei (normalerweise
tasks.md), um nach unvollständigen Aufgaben zu suchen.Zähle Aufgaben, die mit
- [ ](unvollständig) vs.- [x](abgeschlossen) markiert sind.Wenn unvollständige Aufgaben gefunden werden:
- Zeige eine Warnung mit der Anzahl unvollständiger Aufgaben an
- Verwende das AskUserQuestion-Tool, um zu bestätigen, dass der Benutzer fortfahren möchte
- Fahre fort, wenn der Benutzer bestätigt
Wenn keine Aufgabendatei vorhanden ist: Fahre ohne aufgabenbezogene Warnung fort.
-
Delta-Spezifikations-Synchronisationsstatus bewerten
Verwende
artifactPaths.specs.existingOutputPathsaus dem Status-JSON, um nach Delta-Spezifikationen zu suchen. Wenn keine vorhanden sind, fahre ohne Synchronisationsaufforderung fort.Wenn Delta-Spezifikationen vorhanden sind:
- Vergleiche jede Delta-Spezifikation mit ihrer entsprechenden Hauptspezifikation unter
openspec/specs/<capability>/spec.md - Bestimme, welche Änderungen angewendet würden (Hinzufügungen, Änderungen, Löschungen, Umbenennungen)
- Zeige eine kombinierte Zusammenfassung vor der Aufforderung an
Aufforderungsoptionen:
- Wenn Änderungen erforderlich: "Jetzt synchronisieren (empfohlen)", "Ohne Synchronisierung archivieren"
- Wenn bereits synchronisiert: "Jetzt archivieren", "Trotzdem synchronisieren", "Abbrechen"
Wenn der Benutzer Synchronisierung wählt, verwende das Task-Tool (subagent_type: "general-purpose", prompt: "Verwende das Skill-Tool, um openspec-sync-specs für die Änderung '' aufzurufen. Delta-Spezifikationsanalyse: <füge die analysierte Delta-Spezifikationszusammenfassung ein>"). Fahre unabhängig von der Wahl mit der Archivierung fort.
- Vergleiche jede Delta-Spezifikation mit ihrer entsprechenden Hauptspezifikation unter
-
Archivierung durchführen
Erstelle ein
archive-Verzeichnis unterplanningHome.changesDir, falls es nicht existiert:mkdir -p "<planningHome.changesDir>/archive"Generiere den Zielnamen mit dem aktuellen Datum:
JJJJ-MM-TT-<Änderungsname>Prüfe, ob das Ziel bereits existiert:
- Wenn ja: Fehler melden, vorschlagen, das vorhandene Archiv umzubenennen oder ein anderes Datum zu verwenden
- Wenn nein: Verschiebe
changeRootin das Archivverzeichnis
mv "<changeRoot>" "<planningHome.changesDir>/archive/JJJJ-MM-TT-<name>" -
Zusammenfassung anzeigen
Zeige eine Zusammenfassung des Archivierungsabschlusses an, einschließlich:
- Änderungsname
- Verwendetes Schema
- Archivort
- Ob Spezifikationen synchronisiert wurden (falls zutreffend)
- Hinweis auf etwaige Warnungen (unvollständige Artefakte/Aufgaben)
Ausgabe bei Erfolg
## Archivierung abgeschlossen
**Änderung:** <Änderungsname>
**Schema:** <Schemaname>
**Archiviert in:** den Archivpfad abgeleitet von `planningHome.changesDir`/JJJJ-MM-TT-<name>/
**Spezifikationen:** ✓ Mit Hauptspezifikationen synchronisiert (oder "Keine Delta-Spezifikationen" oder "Synchronisierung übersprungen")
Alle Artefakte vollständig. Alle Aufgaben vollständig.
Schutzmaßnahmen
- Immer zur Auswahl der Änderung auffordern, wenn keine angegeben ist
- Artefaktgraphen (openspec status --json) für die Abschlussprüfung verwenden
- Archivierung nicht bei Warnungen blockieren – nur informieren und bestätigen
.openspec.yamlbeim Verschieben ins Archiv erhalten (es wird mit dem Verzeichnis verschoben)- Klare Zusammenfassung des Geschehenen anzeigen
- Wenn Synchronisierung angefordert wird, den openspec-sync-specs-Ansatz verwenden (agentengesteuert)
- Wenn Delta-Spezifikationen vorhanden sind, immer die Synchronisierungsbewertung durchführen und die kombinierte Zusammenfassung vor der Aufforderung anzeigen