CodexSpec-Anwendungsfall: Hinzufuegen einer PR-Beschreibungsgenerator-Funktion¶
Dieses Dokument protokolliert den vollstaendigen Prozess der Verwendung der CodexSpec-Toolkette zum Hinzufuegen einer neuen Funktion zum CodexSpec-Projekt selbst und zeigt die praktische Anwendung von Spec-Driven Development (SDD).
Ueberblick¶
Zielfunktion: Hinzufuegen des Befehls /codexspec:pr zum Generieren strukturierter GitHub PR / GitLab MR-Beschreibungen.
Entwicklungsprozess: specify → generate-spec → review-spec → clarify → spec-to-plan
Schluesselmerkmal: Waehrend der Entwicklung wurden Anforderungsprobleme entdeckt und durch den clarify-Befehl angepasst, was die Flexibilitaet von SDD zeigt.
Phase 1: Urspruengliche Anforderungsklaerung (/codexspec:specify)¶
Urspruengliche Benutzereingabe¶
Ich moechte dem Projekt eine Funktion hinzufuegen: Bereitstellung eines neuen Git-bezogenen Befehls zum Generieren genauer, detaillierter und konformer GitHub PR-Informationen (oder MR-Informationen, fuer GitLab). Hier sind zwei PR-Befehlsinhalte, die ich in anderen Projekten verwendet habe, als Referenz fuer Sie.
[Referenzbeispiel 1 - Strukturierte Beschreibung]
Jetzt spielen Sie bitte die Rolle des Projektbetreuers und schreiben basierend auf unserer bisherigen Arbeit eine klare Pull-Request-Beschreibung fuer diesen Commit.
Die PR-Beschreibung sollte sich an andere Teammitglieder richten und folgende Teile enthalten:
1. Kontext (Context)
2. Implementierung (Implementation)
3. Tests (Testing)
4. Manuelle Verifizierung (How to Verify)
[Referenzbeispiel 2 - Einfache Beschreibung]
Bitte erstellen Sie basierend auf dem Code-Unterschied zwischen dem aktuellen Branch und dem origin/main-Branch eine den Git-Konventionen entsprechende Merge-Request-Titel und -Beschreibung im Markdown-Format. (Verwendung deutscher Beschreibung)
Klaerungsprozess¶
F1: Ausgabesprache
- Optionen: Projekteinstellung folgen / Deutsch / Automatische Erkennung
- Benutzerauswahl: Projekteinstellung folgen (aktuell: en)
F2: Plattformunterstuetzung
- Optionen: GitHub und GitLab unterstuetzen / Nur GitHub / Plattform automatisch erkennen
- Benutzerauswahl: Plattform automatisch erkennen
F3: PR-Beschreibungsinhalt
- Optionen: Detaillierte strukturierte Beschreibung / Kurze Beschreibung / Anpassbare Vorlage
- Benutzerauswahl: Detaillierte strukturierte Beschreibung (empfohlen)
F4: Ausloeser
- Optionen: Aktueller Branch vs origin/main / Nicht gepushte Commits / Zielbranch angebbar
- Benutzerauswahl: Zielbranch angebbar
F5: Spec-Quelle
- Optionen: Bevorzugt spec.md verwenden / Nur Git-Informationen / Alle Quellen kombinieren
- Benutzerauswahl: Alle Quellen kombinieren (empfohlen)
F6: Benennung
- Optionen: codexspec.pr / codexspec.create-pr / codexspec.create-mr
- Benutzerauswahl: codexspec.pr (empfohlen)
F7: Behandlung ohne Spec
- Optionen: Weiter generieren, Kontext ueberspringen / Benutzer auffordern, zuerst Spec zu erstellen / Warnen und fortfahren
- Benutzerauswahl: Weiter generieren, Kontext ueberspringen
F8: Ausgabemodus
- Optionen: Terminalausgabe / In Datei speichern / Terminal + optionale Datei
- Benutzerauswahl: Terminal + optionale Datei (empfohlen)
F9: Standardabschnitte
- Optionen: Kontext, Implementierung, Tests, Verifizierung (alle auswaehlen)
- Benutzerauswahl: Alle vier Abschnitte
F10: Befehlsparameter
- Benutzerauswahl: Alle Parameter sind optionale Parameter
--target-branch: Standard origin/main--output: Standardmaessig nur Terminalausgabe--sections: Standardmaessig nach Standard--no-spec: spec.md-Dateisuche ueberspringen
Sprachkonfigurationskorrektur¶
Benutzerfeedback: Die Sprache sollte wie beim /commit-staged-Befehl primaer nach dem language.commit-Parameter in config.yml bestimmt werden. Wenn kein language.commit-Parameter gesetzt ist, dann nach language.output.
Aktualisierte Anforderungszusammenfassung:
Phase 2: Generierung des Spezifikationsdokuments (/codexspec:generate-spec)¶
Generierte Dokumentstruktur¶
Das generierte spec.md enthaelt folgende Teile:
- Ueberblick: Funktionsueberblick
- Ziele: 4 Ziele
- User Stories: 4 User Stories mit Akzeptanzkriterien
- Funktionale Anforderungen: 8 Anforderungen (REQ-001 bis REQ-008)
- Befehlsparameter: 4 Parameterdefinitionen
- Nicht-funktionale Anforderungen: 3 Anforderungen (Performance, Kompatibilitaet, Fehlerbehandlung)
- Akzeptanzkriterien (Testfaelle): 10 Testfaelle
- Randfaelle: 6 Randfaelle
- Ausgabeformatbeispiel: GitHub PR und GitLab MR Beispiele
- Nicht im Scope: Explizit ausgeschlossene Funktionen
- Abhaengigkeiten: Abhaengigkeiten
- Verwandte Befehle: Zugehoerige Befehle
Wichtige Anforderungsauszuege¶
### REQ-003: Sprachkonfiguration
Der Befehl soll die Ausgabesprache in folgender Prioritaetsreihenfolge bestimmen:
1. `language.commit` in `.codexspec/config.yml` (hoechste Prioritaet)
2. `language.output` in `.codexspec/config.yml` (Fallback)
3. Englisch (Standard bei fehlender Konfiguration)
Phase 3: Spezifikationsueberpruefung (/codexspec:review-spec)¶
Ueberpruefungsergebnisse¶
- Gesamtstatus: ✅ Bestanden
- Qualitaetsbewertung: 92/100
- Bereitschaftsstatus: Bereit fuer Planung
Gefundene Probleme¶
Warnungen (Should Fix):
- SPEC-001: Testdatei-Erkennungslogik nicht explizit angegeben
- SPEC-002: Bei mehreren spec.md-Dateien kann "zuletzt geaendert" ungenau sein
Vorschlaege (Nice to Have):
- Erwaegen Sie das Hinzufuegen eines
--title-Parameters - Hinzufuegen einer Ausgabeformat-Validierungsanforderung
- Erwaegen Sie die Unterstuetzung von GitHub Enterprise URL-Mustern
Speicherort des Ueberpruefungsberichts¶
.codexspec/specs/001-pr-description-generator/review-spec.md
Phase 4: Anforderungsklaerung und Anpassung (/codexspec:clarify) ⚠️ Kritischer Wendepunkt¶
Erkannte Probleme¶
Benutzerfeedback:
Ich habe realisiert, dass es ein Problem bei der Verwendung von spec.md gibt. Wenn ein Benutzer beispielsweise eine sehr kleine Aenderung vornimmt und nicht den standardisierten CodexSpec-Workflow specify->plan->tasks->implement verwendet, sondern direkte Gespraeche oder den in Claude Code integrierten Plan-Modus, und nach Abschluss der Aenderungen den CodexSpec-Befehl separat aufrufen moechte, um konforme PR-Informationen zu generieren. In diesem Fall koennte die standardmaessige Verwendung der zuletzt geaenderten spec.md eine fruehere, mit der aktuellen Aenderung unzusammenhaengende spec.md-Inhalte verwenden.
Klaerungs-QA-Prozess¶
F1: Spec-Auswahlstrategie
Kontext: EC-004 besagt "mehrere spec.md → zuletzt geaenderte verwenden". Aber wenn Benutzer kleine Aenderungen vornehmen, haben sie moeglicherweise nicht den SDD-Workflow verwendet, und die letzte spec.md koennte unzusammenhaengend mit der aktuellen Aenderung sein.
| Option | Beschreibung |
|---|---|
| A | Standardmaessig keine spec.md verwenden, es sei denn, Benutzer gibt --spec-Parameter explizit an |
| B | Basierend auf Branch-Namen abgleichen |
| C | Benutzer zur Auswahl auffordern |
| D | Basierend auf Dateiaenderungen abgleichen |
Benutzerauswahl: Option A
Begruendung: Falsche Referenzierung vermeiden, --spec-Parameter ermoeglicht Benutzern, die SDD-Integration benoetigen, explizit anzugeben.
F2: Spec-Inhaltsextraktionsstrategie
Kontext: Was passiert, wenn Benutzer --spec verwenden und die spec.md-Struktur unvollstaendig ist?
| Option | Beschreibung |
|---|---|
| A | Bestmoegliche Extraktion, fehlende Teile ueberspringen |
| B | Warnen und Kontext ueberspringen |
| C | Vollstaendige Struktur erfordern, sonst Fehler |
Benutzerauswahl: Option A Begruendung: Vermeidung, dass der Workflow aufgrund von Spec-Formatproblemen blockiert wird.
F3: Testdatei-Erkennung
Kontext: Wie werden Testdateien im Testing-Abschnitt erkannt?
| Option | Beschreibung |
|---|---|
| A | Haeufige Verzeichnismuster (tests/, test/) |
| B | Sprachunabhaengige Heuristik (Verzeichnis + Dateinamenmuster) |
| C | Keine aktive Erkennung, nur aus Commit-Nachrichten ableiten |
Benutzerauswahl: Option B Begruendung: Abdeckung verschiedener Projektstrukturen in mehreren Sprachen.
F4: PR-Titelgenerierung
Kontext: Wie sollte der PR-Titel generiert werden?
| Option | Beschreibung |
|---|---|
| A | Branch-Namen-Parsing bevorzugen |
| B | Erste Commit-Nachricht bevorzugen |
| C | Kombinierte Generierung (git diff + Branch-Name + Commit-Nachricht) |
Benutzerauswahl: Option C Benutzerbegruendung: Der erste Commit koennte nur ein kleiner Teil der Aenderungen sein; Branch-Namen erfordern hohe Namenskonventionen. Da viele Git-Informationen und Code-Aenderungen als Referenz zur Verfuegung stehen, ist eine kombinierte Analyse genauer.
F5: Verifizierungsbefehlsgenerierung
Kontext: Wie werden Verifizierungsbefehle im "How to Verify"-Abschnitt generiert?
| Option | Beschreibung |
|---|---|
| A | Allgemeine Vorlagen |
| B | Projekterkennung (pyproject.toml → pytest, package.json → npm test) |
| C | Aus Commit-Nachrichten ableiten |
Benutzerauswahl: Option B Begruendung: Projekterkennung kann nuetzlichere Verifizierungsbefehle generieren.
Zusammenfassung der Klaerungssitzung¶
| Frage | Entscheidung | Auswirkung |
|---|---|---|
| Spec-Auswahlstrategie | Opt-in via --spec |
REQ-007, EC-004, Parametertabelle |
| Spec-Inhaltsextraktion | Bestmoegliche Extraktion | REQ-005b, EC-004c |
| Testdatei-Erkennung | Sprachunabhaengige Heuristik | REQ-006b |
| PR-Titelgenerierung | Kombinierte Analyse | REQ-008a |
| Verifizierungsbefehlsgenerierung | Projektdatei-Erkennung | REQ-010 |
Wichtige Aenderung: Parameterlogik-Umkehr¶
Urspruengliches Design: --no-spec (spec ueberspringen)
Neues Design: --spec (spec aktivieren, opt-in)
Phase 5: Technischer Implementierungsplan (/codexspec:spec-to-plan)¶
Planueberblick¶
Implementierungsmethode: Markdown-Vorlagendatei (konsistent mit /codexspec:commit-staged)
Keine neuen Abhaengigkeiten - Funktion wird durch Slash-Command-Vorlage implementiert, erfordert keinen Python-Code.
Zusammenfassung der technischen Entscheidungen¶
| Entscheidung | Auswahl | Begruendung |
|---|---|---|
| Implementierungsmethode | Markdown-Vorlage | Konsistent mit bestehenden Befehlen, wartbar |
| Sprachprioritaet | commit > output > en | Konsistent mit /commit-staged-Befehl |
| Plattformerkennung | Remote-URL-Parsing | Einfach und zuverlaessig |
| Spec-Integration | Opt-in (--spec) |
Falsche Referenzierung vermeiden |
| Inhaltsextraktion | Bestmoegliche | Blockiert Workflow nicht |
| Test-Erkennung | Verzeichnis+Dateinamenmuster | Sprachunabhaengig |
| Titelgenerierung | Kombinierte Analyse | Am genauesten |
| Befehlserkennung | Projektdatei-Erkennung | Praktischer |
| Ausgabemodus | Terminal zuerst, optionale Datei | Flexibel |
Implementierungsphasen¶
- Phase 1: Vorlagenerstellung (YAML-Frontmatter, Sprachkonfiguration, Git-Kontext)
- Phase 2: Kernfunktionalitaet (Spec-Integration, Test-Erkennung, Befehlserkennung, Titelgenerierung)
- Phase 3: Randfallbehandlung
- Phase 4: Tests
- Phase 5: Dokumentationsaktualisierung
Dateiliste¶
Erstellen:
templates/commands/pr.md
Aendern:
CLAUDE.md- Befehlsbeschreibung hinzufuegenREADME.md- Befehl zur Liste hinzufuegen
Testen:
tests/test_pr_template.py
Vollstaendiges Flussdiagramm¶
┌─────────────────────────────────────────────────────────────────────────┐
│ CodexSpec SDD-Entwicklungsprozess │
└─────────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────┐
│ /codexspec:specify │
│ ├─ Anforderungen durch Q&A klaeren │
│ ├─ Benutzer hat Referenzbeispiele bereitgestellt │
│ └─ 10 Fragen, die Sprache, Plattform, Inhalt, Parameter abdecken │
└─────────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────┐
│ /codexspec:generate-spec │
│ ├─ Vollstaendige spec.md generieren │
│ ├─ 4 User Stories, 8 funktionale Anforderungen, 10 Testfaelle │
│ └─ Speichern unter .codexspec/specs/001-pr-description-generator/spec.md│
└─────────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────┐
│ /codexspec:review-spec │
│ ├─ Qualitaetsbewertung: 92/100 │
│ ├─ 2 Warnungen gefunden (Testdatei-Erkennung, Multi-Spec-Behandlung) │
│ └─ Status: Bestanden, kann in Planungsphase eintreten │
└─────────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────┐
│ /codexspec:clarify ⚠️ Kritische Anpassung │
│ ├─ Benutzer hat tatsaechliches Nutzungsproblem entdeckt │
│ ├─ 5 Klaerungsfragen, alle beantwortet │
│ ├─ Wichtige Aenderung: --no-spec → --spec (opt-in) │
│ └─ 5 neue Anforderungen (REQ-005b, 006b, 008a, 010, Update 007) │
└─────────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────┐
│ /codexspec:spec-to-plan │
│ ├─ Technischen Implementierungsplan aktualisieren │
│ ├─ 9 technische Entscheidungen, einschliesslich 5 neuer │
│ ├─ 5 Implementierungsphasen │
│ └─ Speichern unter .codexspec/specs/001-pr-description-generator/plan.md│
└─────────────────────────────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────────────────────────────┐
│ Nachste Schritte (in dieser Session nicht abgeschlossen) │
│ ├─ /codexspec:review-plan - Planqualitaet validieren │
│ ├─ /codexspec:plan-to-tasks - In ausfuehrbare Aufgaben aufteilen │
│ └─ /codexspec:implement-tasks - Implementierung ausfuehren │
└─────────────────────────────────────────────────────────────────────────┘
Wichtige Lektionen¶
1. Wert der Klaerungsphase¶
Dieser Fall zeigt die kritische Rolle des clarify-Befehls:
- Benutzer entdeckt tatsaechliche Probleme bei der Verwendung - Risiko der spec.md-Fehlverwendung bei kleinen Aenderungen
- Designfehler durch Klaerungs-Q&A loesen - Von automatischer Erkennung zu Opt-in-Modus geaendert
- Anforderungsaenderungen werden systematisch protokolliert - Alle Aenderungen im Clarifications-Abschnitt von spec.md gespeichert
2. Flexibilitaet des SDD-Prozesses¶
- Kein linearer Prozess, kann in jeder Phase zur Anpassung zurueckkehren
clarifykann nachreview-specund vorspec-to-planeingefuegt werden- Spezifikationsdokumente und technische Plaene werden aktualisiert, um Aenderungen widerzuspiegeln
3. Evolution des Parameterdesigns¶
Urspruengliches Design:
--no-spec: spec.md ueberspringen (standardmaessig verwenden)
Endgueltiges Design:
--spec: spec.md aktivieren (standardmaessig nicht verwenden)
Diese Aenderung spiegelt den Designwandel vom "Standard-SDD-Workflow" zur "Unterstuetzung nicht-SDD-Workflows" wider und macht das Werkzeug universeller.
4. Dokumentenausgabe¶
| Phase | Ausgabedatei | Inhalt |
|---|---|---|
| generate-spec | spec.md | Vollstaendiges Spezifikationsdokument |
| review-spec | review-spec.md | Qualitaetspruefungsbericht |
| clarify | (aktualisiert spec.md) | Klaerungsprotokoll + Anforderungs-Updates |
| spec-to-plan | plan.md | Technischer Implementierungsplan |
Anhang: Befehlsreferenz¶
# 1. Urspruengliche Anforderungsklaerung
/codexspec:specify
# 2. Spezifikationsdokument generieren
/codexspec:generate-spec
# 3. Spezifikationsqualitaet ueberpruefen
/codexspec:review-spec
# 4. Anforderungen klaeren/anpassen (optional, nach Problemendeckung verwenden)
/codexspec:clarify [Problembeschreibung]
# 5. Technischen Plan generieren
/codexspec:spec-to-plan
# 6. Planqualitaet ueberpruefen (optional)
/codexspec:review-plan
# 7. In Aufgaben aufteilen
/codexspec:plan-to-tasks
# 8. Implementierung ausfuehren
/codexspec:implement-tasks
Dieses Dokument wurde automatisch vom CodexSpec SDD-Workflow generiert und protokolliert den tatsaechlichen Entwicklungsgespraechsprozess.