Eine neue Änderung vorschlagen – die Änderung erstellen und alle Artefakte in einem Schritt generieren.
Ich werde eine Änderung mit Artefakten erstellen:
- proposal.md (Was & Warum)
- design.md (Wie)
- tasks.md (Implementierungsschritte)
Wenn die Implementierung bereit ist, führe /opsx:apply aus.
Store-Auswahl: Wenn der Benutzer einen Store nennt (ein Store ist ein eigenständiges OpenSpec-Repository, das auf diesem Rechner registriert ist) oder die Arbeit in einem solchen lebt, 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 übernehmen das Flag nicht. Hinweise, die von Befehlen ausgegeben werden, enthalten das Flag bereits; behalte es in Folgeschritten bei. Ohne einen Store arbeiten die Befehle mit dem nächstgelegenen lokalen openspec/-Verzeichnis.
Eingabe: Die Anfrage des Benutzers sollte einen Änderungsnamen (kebab-case) ODER eine Beschreibung dessen enthalten, was gebaut werden soll.
Schritte
-
Wenn keine klare Eingabe erfolgt, frage, was gebaut werden soll
Verwende das AskUserQuestion-Tool (offen, ohne voreingestellte Optionen), um zu fragen:
"An welcher Änderung möchtest du arbeiten? Beschreibe, was du bauen oder reparieren möchtest."
Leite aus der Beschreibung einen kebab-case-Namen ab (z.B. "Benutzerauthentifizierung hinzufügen" →
add-user-auth).WICHTIG: Fahre NICHT fort, ohne zu verstehen, was der Benutzer bauen möchte.
-
Erstelle das Änderungsverzeichnis
openspec new change "<name>"Dies erstellt eine eingerüstete Änderung im von der CLI aufgelösten Planungsverzeichnis mit
.openspec.yaml. -
Rufe die Artefakt-Baureihenfolge ab
openspec status --change "<name>" --jsonAnalysiere das JSON, um zu erhalten:
applyRequires: Array von Artefakt-IDs, die vor der Implementierung benötigt werden (z.B.["tasks"])artifacts: Liste aller Artefakte mit ihrem Status und AbhängigkeitenplanningHome,changeRoot,artifactPathsundactionContext: Pfad- und Bereichskontext. Verwende diese anstelle von repo-lokalen Pfaden.
-
Erstelle Artefakte nacheinander, bis sie anwendungsbereit sind
Verwende das TodoWrite-Tool, um den Fortschritt durch die Artefakte zu verfolgen.
Durchlaufe die Artefakte in Abhängigkeitsreihenfolge (Artefakte ohne ausstehende Abhängigkeiten zuerst):
a. Für jedes Artefakt, das
readyist (Abhängigkeiten erfüllt):- Rufe Anweisungen ab:
openspec instructions <artefakt-id> --change "<name>" --json - Das Anweisungs-JSON enthält:
context: Projekthintergrund (Einschränkungen für dich – NICHT in die Ausgabe aufnehmen)rules: Artefaktspezifische Regeln (Einschränkungen für dich – NICHT in die Ausgabe aufnehmen)template: Die Struktur, die für die Ausgabedatei verwendet werden sollinstruction: Schemaspezifische Anleitung für diesen ArtefakttypresolvedOutputPath: Aufgelöster Pfad oder Muster, wohin das Artefakt geschrieben werden solldependencies: Abgeschlossene Artefakte, die für den Kontext gelesen werden sollen
- Lese alle abgeschlossenen Abhängigkeitsdateien für den Kontext
- Erstelle die Artefaktdatei mit
templateals Struktur und schreibe sie inresolvedOutputPath - Wende
contextundrulesals Einschränkungen an – kopiere sie jedoch NICHT in die Datei - Zeige kurzen Fortschritt: " erstellt"
b. Fahre fort, bis alle
applyRequires-Artefakte abgeschlossen sind- Führe nach dem Erstellen jedes Artefakts erneut
openspec status --change "<name>" --jsonaus - Überprüfe, ob jede Artefakt-ID in
applyRequiresim Artefakt-Array den Status"done"hat - Stoppe, wenn alle
applyRequires-Artefakte abgeschlossen sind
c. Wenn ein Artefakt Benutzereingaben erfordert (unklarer Kontext):
- Verwende das AskUserQuestion-Tool zur Klärung
- Fahre dann mit der Erstellung fort
- Rufe Anweisungen ab:
-
Zeige den endgültigen Status an
openspec status --change "<name>"
Ausgabe
Nach Abschluss aller Artefakte zusammenfassen:
- Änderungsname und -ort
- Liste der erstellten Artefakte mit kurzen Beschreibungen
- Was bereit ist: "Alle Artefakte erstellt! Bereit für die Implementierung."
- Aufforderung: "Führe
/opsx:applyaus oder bitte mich um die Implementierung, um mit den Aufgaben zu beginnen."
Richtlinien zur Artefakterstellung
- Befolge das Feld
instructionausopenspec instructionsfür jeden Artefakttyp - Das Schema definiert, was jedes Artefakt enthalten soll – folge ihm
- Lese Abhängigkeitsartefakte für den Kontext, bevor du neue erstellst
- Verwende
templateals Struktur für die Ausgabedatei – fülle seine Abschnitte aus - WICHTIG:
contextundrulessind Einschränkungen für DICH, kein Inhalt für die Datei- Kopiere die Blöcke
<context>,<rules>,<project_context>NICHT in das Artefakt - Sie leiten an, was du schreibst, sollten aber niemals in der Ausgabe erscheinen
- Kopiere die Blöcke
Absicherungen
- Erstelle ALLE für die Implementierung erforderlichen Artefakte (gemäß den
apply.requiresdes Schemas) - Lese vor dem Erstellen eines neuen Artefakts immer die Abhängigkeitsartefakte
- Wenn der Kontext kritisch unklar ist, frage den Benutzer – ziehe es jedoch vor, vernünftige Entscheidungen zu treffen, um den Schwung zu halten
- Wenn eine Änderung mit diesem Namen bereits existiert, frage, ob der Benutzer sie fortsetzen oder eine neue erstellen möchte
- Überprüfe nach dem Schreiben, ob jede Artefaktdatei existiert, bevor du mit der nächsten fortfährst