Delta-Spezifikationen aus einer Änderung mit den Hauptspezifikationen abgleichen.
Dies ist eine agentengesteuerte Operation – du wirst Delta-Spezifikationen lesen und Hauptspezifikationen direkt bearbeiten, um die Änderungen anzuwenden. Dies ermöglicht ein intelligentes Zusammenführen (z.B. Hinzufügen eines Szenarios, ohne die gesamte Anforderung zu kopieren).
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 Store 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 akzeptieren dieses Flag nicht. Hinweise, die von Befehlen ausgegeben werden, enthalten das Flag bereits; behalte es bei Folgebefehlen bei. Ohne einen Store agieren die Befehle im nächstgelegenen lokalen openspec/-Verzeichnis.
Eingabe: Optional kann ein Änderungsname angegeben werden. Wenn nicht angegeben, prüfe, ob er aus dem Gesprächskontext abgeleitet werden kann. Bei vagen oder mehrdeutigen Angaben MUSST du nach verfügbaren Änderungen fragen.
Schritte
-
Wenn kein Änderungsname angegeben ist, 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 Änderungen an, die Delta-Spezifikationen haben (im Verzeichnis
specs/).WICHTIG: Du darfst keine Änderung raten oder automatisch auswählen. Lass den Benutzer immer wählen.
-
Kontext der Änderung auflösen
Führe aus:
openspec status --change "<name>" --json -
Delta-Spezifikationen finden
Verwende
artifactPaths.specs.existingOutputPathsaus dem Status-JSON als Liste der Delta-Spezifikationsdateien.Jede Delta-Spezifikationsdatei enthält Abschnitte wie:
## HINZUGEFÜGTE Anforderungen– Neue hinzuzufügende Anforderungen## GEÄNDERTE Anforderungen– Änderungen an bestehenden Anforderungen## ENTFERNTE Anforderungen– Zu entfernende Anforderungen## UMBENANNTE Anforderungen– Umzubenennende Anforderungen (VON:/NACH:-Format)
Wenn keine Delta-Spezifikationen gefunden werden, informiere den Benutzer und stoppe.
-
Für jede Delta-Spezifikation die Änderungen auf die Hauptspezifikationen anwenden
Für jeden repo-lokalen Delta-Spezifikationspfad, der vom CLI zurückgegeben wird:
a. Lese die Delta-Spezifikation, um die beabsichtigten Änderungen zu verstehen
b. Lese die Hauptspezifikation unter
openspec/specs/<capability>/spec.md(kann noch nicht existieren)c. Wende Änderungen intelligent an:
HINZUGEFÜGTE Anforderungen:
- Wenn die Anforderung in der Hauptspezifikation nicht existiert → füge sie hinzu
- Wenn die Anforderung bereits existiert → aktualisiere sie, um sie anzupassen (als implizite GEÄNDERTE behandeln)
GEÄNDERTE Anforderungen:
- Finde die Anforderung in der Hauptspezifikation
- Wende die Änderungen an – dies kann sein:
- Hinzufügen neuer Szenarien (bestehende müssen nicht kopiert werden)
- Ändern bestehender Szenarien
- Ändern der Anforderungsbeschreibung
- Behalte Szenarien/Inhalte bei, die in der Delta-Spezifikation nicht erwähnt werden
ENTFERNTE Anforderungen:
- Entferne den gesamten Anforderungsblock aus der Hauptspezifikation
UMBENANNTE Anforderungen:
- Finde die VON-Anforderung, benenne sie in die NACH-Anforderung um
d. Neue Hauptspezifikation erstellen, falls die Fähigkeit noch nicht existiert:
- Erstelle
openspec/specs/<capability>/spec.md - Füge einen Abschnitt „Zweck“ hinzu (kann kurz sein, als TBD markieren)
- Füge einen Abschnitt „Anforderungen“ mit den HINZUGEFÜGTEN Anforderungen hinzu
-
Zusammenfassung anzeigen
Nachdem alle Änderungen angewendet wurden, fasse zusammen:
- Welche Fähigkeiten aktualisiert wurden
- Welche Änderungen vorgenommen wurden (Anforderungen hinzugefügt/geändert/entfernt/umbenannt)
Referenz zum Delta-Spezifikationsformat
## HINZUGEFÜGTE Anforderungen
### Anforderung: Neue Funktion
Das System SOLL etwas Neues tun.
#### Szenario: Basisfall
- **WENN** Benutzer X tut
- **DANN** tut System Y
## GEÄNDERTE Anforderungen
### Anforderung: Bestehende Funktion
#### Szenario: Hinzuzufügendes neues Szenario
- **WENN** Benutzer A tut
- **DANN** tut System B
## ENTFERNTE Anforderungen
### Anforderung: Veraltete Funktion
## UMBENANNTE Anforderungen
- VON: `### Anforderung: Alter Name`
- NACH: `### Anforderung: Neuer Name`
Kernprinzip: Intelligentes Zusammenführen
Im Gegensatz zum programmatischen Zusammenführen kannst du Teilaktualisierungen anwenden:
- Um ein Szenario hinzuzufügen, füge dieses Szenario einfach unter GEÄNDERT ein – kopiere keine vorhandenen Szenarien
- Die Delta-Spezifikation stellt die Absicht dar, keinen vollständigen Austausch
- Verwende dein Urteilsvermögen, um die Änderungen sinnvoll zusammenzuführen
Ausgabe bei Erfolg
## Spezifikationen synchronisiert: <Änderungsname>
Aktualisierte Hauptspezifikationen:
**<Fähigkeit-1>**:
- Anforderung hinzugefügt: „Neue Funktion“
- Anforderung geändert: „Bestehende Funktion“ (1 Szenario hinzugefügt)
**<Fähigkeit-2>**:
- Neue Spezifikationsdatei erstellt
- Anforderung hinzugefügt: „Weitere Funktion“
Hauptspezifikationen sind jetzt aktualisiert. Die Änderung bleibt aktiv – archiviere sie, wenn die Implementierung abgeschlossen ist.
Leitplanken
- Lies sowohl die Delta- als auch die Hauptspezifikationen, bevor du Änderungen vornimmst
- Behalte vorhandene Inhalte bei, die nicht in der Delta-Spezifikation erwähnt werden
- Wenn etwas unklar ist, frage nach Klarstellung
- Zeige, was du gerade änderst, während du vorgehst
- Die Operation sollte idempotent sein – zweimaliges Ausführen sollte das gleiche Ergebnis liefern