writing-plans (obra/superpowers)
Wandelt eine Spezifikation oder Anforderungen vor dem ersten Code in einen schrittweisen Umsetzungsplan um.
writing-plans: Verwandelt eine kurze Feature-Spezifikation in einen Schritt-für-Schritt-TDD-Plan (Kontrolle 1.6, Skill 4.4, One-Liner 4.2) bei 1.35x den Tokens; ein Ein-Satz-Prompt desselben Formats erzielt fast genauso viel
Codex CLI · gpt-6-astra
25.3 / 30
Lift gegenüber ohne Skill: +2.87 · Empfohlen · 18 Läufe
Empfohlen: Die Gesamtpunktzahl 25.3/30 liegt bei mindestens 22, die Ausgabequalität 4.4 bei mindestens 3.5 und der Lift +2.87 bei mindestens +1.0.
SOTA
BestandenGetestet mit Codex.
Gilt für Codex, Claude Code
Codex CLI 0.166 (SOTA-Stufe): 18 bewertete Läufe. Ein Bestehen hier deckt gemäß unserer Stufenregel auch Claude Code ab; über die zweite Stufe sagt es nichts aus.
Punktzahlen
Jede Dimension reicht von 0 bis 5, und die sechs ergeben zusammen die Gesamtpunktzahl von 30. 5 ist in jeder Dimension besser. Kosten 5 bedeutet günstig und schnell. Installation 5 bedeutet einfach.
- Trigger-Zuverlässigkeit
- 5.0
- Lift gegenüber ohne Skill
- 4.9
- Ausgabequalität
- 4.4
- Token- und Zeitkosten
- 3.0
- Installation und Portabilität
- 4.0
- Sicherheit
- 4.0
Sicherheitsprüfung
SicherStatischer Scan: 0 CRITICAL / 0 HIGH / 0 MEDIUM. Manuelle Prüfung: Sicher in einer Sandbox ohne Netzwerk auszuführen (keine Befunde). Ein sauberer Scan beweist nicht, dass ein Skill sicher ist.
Installieren
npx skills@latest add obra/superpowers --skill writing-plans
Fixierter Commit: 2ce8aa15d05bd57213e6f746f953aafb7ded7a8b
Getestet: 2026-11-02
Was wir getestet haben
- Fälligkeitsdaten für eine CLI planen — spec.md beschreibt ein Feature für diese kleine Todo-CLI. Den Implementierungsplan dafür in plan.md in diesem Ordner schreiben. Keinen Code im Projekt schreiben, nur den Plan.
- Einen CSV-Export planen — spec.md beschreibt ein Feature für dieses Report-Modul. Den Implementierungsplan dafür in plan.md in diesem Ordner schreiben. Keinen Code im Projekt schreiben, nur den Plan.
- API-Rate-Limiting planen — spec.md beschreibt ein Feature für diese Notes-API. Den Implementierungsplan dafür in plan.md in diesem Ordner schreiben. Keinen Code im Projekt schreiben, nur den Plan.
Vorteile
- Hebt den Mittelwert von 1.56 auf 4.43 gegenüber ohne Skill (+2.87).
- Der Skill wurde erkannt, ohne genannt zu werden: Skill-Datei in 6/6 Treatment-Läufen gelesen.
Nachteile
- Testhinweis: Wir haben drei Prüfungen nach den ersten Punktzahlen geändert und alle 18 Läufe unter den neuen Regeln neu bewertet: Die Platzhalterprüfung passt nicht mehr auf das Wort TODO, den Produktnamen in einer Aufgabe; die Muster für fehlschlagenden Test zuerst und erwartete Ausgabe akzeptieren die Formulierung „Expect failure“; die Schwellen für Commit und Checkbox wurden gesenkt. Vor der Änderung erzielte der Skill 2.98 und der Ein-Satz-Prompt 4.04, danach 4.43 und 4.21. Die Kontrolle blieb in beiden Fällen bei etwa 1.5.
- n=2 pro Aufgabe und Variante; Unterschiede unter etwa 1 Punkt sind Rauschen.
Bewertung
Codex CLI 0.166 (gpt-6-astra, niedriges Reasoning) auf einem dedizierten Windows-Test-PC, einem frischen temporären Projekt und temporären HOME/TMPDIR/Caches pro Lauf; Skill installiert (Treatment) oder nicht vorhanden (Kontrolle) oder nicht vorhanden mit der Kernanforderung des Skills in einem an den Prompt angehängten Satz (One-Liner-Gruppe); 2 Läufe pro Gruppe und Aufgabe; Netzwerk aus; Schreiben nach /tmp blockiert. Die Prompts nennen den Skill nie (außer der unten genannten Formulierung). Drei kleine Python-Projekte (Todo-CLI, Report-Modul, Notes-API), jeweils mit einer spec.md. Der Prompt verlangt nur einen Implementierungsplan in plan.md und verbietet das Schreiben von Code. Er beschreibt das Planformat nicht. Der One-Liner beschreibt das gesamte Format: kleine Schritte von 2–5 Minuten, exakte Pfade, zuerst ein fehlschlagender Test mit vollständigem Code, exakter Befehl mit erwarteter Ausgabe, minimale Implementierung, Git-Commit, keine Platzhalter.
Drei-Arm-Vergleich
| Variante | Durchschnittsnote (0-5) | Tokens pro Lauf |
|---|---|---|
| Ohne Skill | 1.56 | 88k |
| Ein-Satz-Prompt | 4.21 | 127k |
| Mit Skill | 4.43 | 119k |
Gemessen mit Codex CLI über 18 Läufe, bewertet durch regelbasierte Prüfungen ohne LLM-Richter. Gesamt 25.3 / 30, Urteil Empfohlen.
Offenlegung: Wir haben drei Prüfungen nach den ersten Punktzahlen geändert und alle 18 Läufe unter den neuen Regeln neu bewertet: Die Platzhalterprüfung passt nicht mehr auf das Wort TODO, den Produktnamen in einer Aufgabe; die Muster für fehlschlagenden Test zuerst und erwartete Ausgabe akzeptieren die Formulierung „Expect failure“; die Schwellen für Commit und Checkbox wurden gesenkt. Vor der Änderung erzielte der Skill 2.98 und der Ein-Satz-Prompt 4.04, danach 4.43 und 4.21. Die Kontrolle blieb in beiden Fällen bei etwa 1.5.
Urteil: Empfohlen (25.3 / 30). Quelle: obra/superpowers, skills/writing-plans, festgeschrieben auf Commit 2ce8aa1. Installation: npx skills@latest add obra/superpowers --skill writing-plans. Lizenz: MIT (LICENSE im Repo).
Was es ist
Der Skill writing-plans (obra/superpowers) verwandelt eine Spezifikation in einen Umsetzungsplan mit kleinen Schritten: exakte Dateipfade, zuerst ein fehlschlagender Test, der genaue Ausführungsbefehl mit erwartetem Ergebnis, minimale Implementierung, ein Commit-Schritt pro Aufgabe, Checkbox-Schritte, keine TBD-Platzhalter.
Wie wir getestet haben
Codex CLI 0.166 (gpt-6-astra, niedriges Reasoning) auf einem dedizierten Windows-Test-PC, pro Lauf ein frisches temporäres Projekt sowie temporäre HOME/TMPDIR/Caches, Skill installiert (Treatment) oder nicht vorhanden (Kontrolle) oder nicht vorhanden mit der Kernanforderung des Skills als einem an den Prompt angehängten Satz (Ein-Satz-Gruppe), 2 Läufe pro Gruppe und Aufgabe, Netzwerk aus, Schreibzugriffe auf /tmp blockiert. Die Prompts nennen den Skill nie (außer der unten erwähnten Formulierung).
Drei kleine Python-Projekte (Todo-CLI, Report-Modul, Notes-API), jeweils mit einer spec.md. Der Prompt verlangt nur einen Umsetzungsplan in plan.md und verbietet das Schreiben von Code. Er beschreibt das Planformat nicht. Der Ein-Satz-Prompt beschreibt das ganze Format: kleine Schritte von 2-5 Minuten, exakte Pfade, zuerst der fehlschlagende Test mit vollständigem Code, der genaue Befehl mit erwarteter Ausgabe, minimale Implementierung, git commit, keine Platzhalter.
- Fälligkeitsdaten für eine CLI planen — spec.md beschreibt ein Feature für diese kleine Todo-CLI. Schreibe den Umsetzungsplan dafür in plan.md in diesem Ordner. Schreibe keinen Code im Projekt, nur den Plan.
- Einen CSV-Export planen — spec.md beschreibt ein Feature für dieses Report-Modul. Schreibe den Umsetzungsplan dafür in plan.md in diesem Ordner. Schreibe keinen Code im Projekt, nur den Plan.
- API-Rate-Limiting planen — spec.md beschreibt ein Feature für diese Notes-API. Schreibe den Umsetzungsplan dafür in plan.md in diesem Ordner. Schreibe keinen Code im Projekt, nur den Plan.
Die Bewertung erfolgt programmatisch (versteckte Tests / Erkennung eingepflanzter Fehler / Constraint-Checks / Rendering+OCR, wo relevant), 0–5 pro Lauf. Kein LLM-Judge hat eine Bewertung entschieden.
Ergebnisse
Der Ein-Satz-Prompt für die dritte Gruppe: "Schreibe den Plan als kleine Aufgaben (jeder Schritt 2-5 Minuten): exakte Dateipfade, zuerst der fehlschlagende Test mit vollständigem Code, der genaue Befehl mit seiner erwarteten Ausgabe, die minimale Implementierung mit vollständigem Code, dann ein git-commit-Schritt; keine Platzhalter wie TBD oder ‚Validierung hinzufügen‘."
| Aufgabe | Kontrollwert | Ein-Satz | Mit Skill | Kontroll-Token | Ein-Satz-Token | Mit-Skill-Token | Skill gelesen |
|---|---|---|---|---|---|---|---|
| t1-todo-due | 1.51 | 4.21 | 4.28 | 94k | 132k | 111k | 2/2 |
| t2-csv-export | 1.71 | 4.47 | 4.8 | 84k | 129k | 122k | 2/2 |
| t3-rate-limit | 1.45 | 3.95 | 4.21 | 85k | 120k | 122k | 2/2 |
Durchschnittswert: 1.56 ohne vs. 4.43 mit dem Skill (Delta +2.87). Token pro Lauf: 88k vs. 119k (1.34x); Zeit 66s vs. 102s. Ein-Satz-Gruppe: 4.21 (Gewinn des Skills gegenüber dem Ein-Satz-Prompt: +0.22; Gewinn des Ein-Satz-Prompts gegenüber ohne Skill: +2.65); Ein-Satz-Token 127k pro Lauf, der Skill kostet also 0.93x so viel wie der Ein-Satz-Prompt.
Was passiert ist
- Kontrolle 1.56, Skill 4.43, Ein-Satz 4.21 (je n=6). Die Pläne der Kontrolle sind kurze Prosa-Gliederungen (46-71 Zeilen): keine Schritte mit fehlschlagendem Test zuerst, keine erwartete Ausgabe und keine Commit-Schritte in allen 6 Läufen, und jeweils nur ein Ausführungsbefehl.
- Die Pläne mit dem Skill haben 110-142 Zeilen im Checkbox-Format mit einem Schritt für den fehlschlagenden Test, einem Ausführungsschritt mit der Markierung „Expect failure“ oder „Expect all tests to pass“ und einem Commit pro Aufgabe in der CSV-Aufgabe. Sie haben weiterhin Lücken: In 4 von 6 Läufen fehlt ein git-commit-Schritt, und Codeblöcke erscheinen in 2-3 Schritten statt in jedem Schritt.
- Die Ein-Satz-Pläne haben etwa 350 Zeilen mit vollständigem Code in jedem Schritt sowie allen geforderten Commits und Befehlen, aber in 6/6 keine Checkboxen (ein skill-spezifisches Format) und in 3 von 6 Läufen weniger als 4 Ausführungsbefehle, weil sie PowerShell-Formulierungen verwendeten.
- Token: Skill 119k, Ein-Satz 127k, Kontrolle 88k pro Lauf (1.35x Kontrolle). Der Skill wurde in 6/6 Treatment-Läufen gelesen.
Dimensionswerte
| Dimension | Wert | Begründung |
|---|---|---|
| 1_output_quality | 4.43 | Durchschnittswert 4.43/5 mit dem Skill (programmatische Checks, siehe Tabelle pro Aufgabe). |
| 2_lift_vs_no_skill | 4.87 | +2.87 Punkte gegenüber 1.56 ohne den Skill (n=2 pro Aufgabe; unter ~1 Punkt ist Rauschen). |
| 3_trigger | 5.0 | Skill-Datei in 6/6 Treatment-Läufen gelesen. |
| 4_instructions_portability | 4 | SKILL.md im superpowers-Format; verweist zur Ausführung auf andere superpowers-Skills. |
| 5_efficiency | 3 | 1.34x Token (119k vs. 88k pro Lauf) und 1.54x Zeit (102s vs. 66s). |
| 6_safety_hygiene | 4 | Nur Prosa; siehe security.md. |
Grenzen dieses Tests
- Regelbasierte Checks am Text von plan.md: Anzahl von Pfaden, Befehlen, Commits, Checkboxen und Codeblöcken. Die Planqualität und ob der Plan wirklich funktionieren würde, wurden nicht beurteilt.
- Ich habe die Checks nach der ersten Bewertung geändert und jeden Lauf unter denselben neuen Regeln neu bewertet: (1) Der Check „keine Platzhalter“ traf auf das Wort TODO zu, den Produktnamen in der Todo-CLI-Aufgabe (TODO aus dem Muster entfernt); (2) die Muster für „fehlschlagender Test zuerst“ und „erwartete Ausgabe“ wurden erweitert, um „Expect failure“ und „Expect all tests to pass“ zu akzeptieren; (3) die Commit-Schwelle sank von 3 auf 2 (die Skill-Pläne haben zwei Aufgaben) und die Checkbox-Schwelle von 12 auf 8. Vor dieser Änderung erreichte der Skill 2.98 und der Ein-Satz-Prompt 4.04; danach 4.43 und 4.21. Die Kontrolle blieb in beiden Fällen bei 1.4-1.6.
- Der Checkbox-Check zählt ein Format, das der Skill verwendet und das der Ein-Satz-Prompt nie verlangte, was den Skill begünstigt.
- n=2 pro Zelle; kleine Testprojekte.
- n = 2 pro Gruppe und Aufgabe: Abweichungen unter etwa 1 Punkt sind Rauschen.
- Regelbasierte Bewertung misst, was die Checks sehen können; sie kann weder Geschmack beurteilen noch, ob ein Ergebnis das bestmögliche ist.
Sicherheit
Siehe security.md. Scan: 0 CRITICAL / 0 HIGH / 0 MEDIUM. Urteil: sicher ausführbar (Sandbox ohne Netzwerk). Ein sauberer Scan beweist nicht, dass ein Skill sicher ist.
Fazit
Ohne Hilfe schreibt Codex eine lockere Gliederung; mit dem Skill schreibt es echte TDD-Schritte. Ein Absatz, der dasselbe Format nennt, leistet fast genauso viel und erzeugt vollständigeren Code pro Schritt; der Skill ist vor allem ein bequemes Bündel dieses Absatzes.
Transkript
Laufprotokoll: writing-plans (Codex CLI, network off, per-run temp HOME/TMPDIR, one row per graded run.) Spalten: Aufgabe, Gruppe-Lauf, Punktzahl (0-5), Tokens, Sekunden, bestandene Prüfungen, vom Agenten geöffnete Skill-Dateien. t1-todo-due control-1: Punkte 1.38, Tokens 102848, Sek. 60.8, Prüfungen 3/10, nichts geöffnet t1-todo-due control-2: Punkte 1.64, Tokens 86724, Sek. 67.6, Prüfungen 3/10, nichts geöffnet t1-todo-due oneliner-1: Punkte 4.47, Tokens 133771, Sek. 130.1, Prüfungen 9/10, nichts geöffnet t1-todo-due oneliner-2: Punkte 3.95, Tokens 131546, Sek. 112.8, Prüfungen 8/10, nichts geöffnet t1-todo-due treatment-1: Punkte 4.34, Tokens 123893, Sek. 104.1, Prüfungen 8/10, geöffnet writing-plans t1-todo-due treatment-2: Punkte 4.21, Tokens 99712, Sek. 99.6, Prüfungen 8/10, geöffnet writing-plans t2-csv-export control-1: Punkte 1.71, Tokens 85021, Sek. 70.6, Prüfungen 4/10, nichts geöffnet t2-csv-export control-2: Punkte 1.71, Tokens 84700, Sek. 64.8, Prüfungen 4/10, nichts geöffnet t2-csv-export oneliner-1: Punkte 4.47, Tokens 129967, Sek. 119.6, Prüfungen 9/10, nichts geöffnet
18 Läufe, 3 Artefakte
Beispielausgabe
SOTA · With the skill: plan.md (t1-todo-due, run 1, Codex)
# Todo Due Dates Implementation Plan > **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking. **Goal:** Add optional due dates, chronological listing, and an overdue-only CI check without migrating existing data. **Architecture:** Keep the existing JSON dictionary storage and implement date validation, ordering, and rendering in `todo/cli.py`. Capture the local date once per list invocation and pass it to a pure overdue predicate. Preserve the existing `main(argv=None)` entry point and argparse error handling. **Tech Stack:** Python standard library: argparse, datetime, json, unittest, unittest.mock, tempfile; no new dependencies. **Spec:** `spec.md` (read alongside this plan). ## Global Constraints - `todo add "title" --due 2026-03-01` stores an optional ISO due date with the item. - `todo list` prints overdue items first (marked `!`), then by due date, then undated items. - `todo list --overdue` prints only overdue items; exit code 1 if there are any (so CI can use it). - Invalid dates are rejected with a clear message and exit code 2. - Items already stored without a due date must keep working (no migration step for the user). ## Decisions for details not specified - Accept exactly `YYYY-MM-DD` with a real Gregorian calendar date; reject whitespace, compact dates, timestamps, and unpadded components. - An item is overdue only when unfinished and its due date is strictly before the current local date. Due today is not overdue. - Sort overdue items by ascending due date, then remaining dated items by ascending due date, then undated items. Preserve insertion order within equal keys. Completed items remain visible in ordinary listings but are never overdue. - Preserve `[ ] title` and `[x] title` for undated items. Append ` (due YYYY-MM-DD)` for dated items and prefix overdue lines with `! `, e.g. `! [ ] rent (due 2026-03-01)`. - Ordinary listing returns 0, even with overdue items. Overdue-only listing returns 0 with no output when none qualify. Listing never rewrites storage. - Store dates as strings under `due`; omit the key when not supplied. Treat an absent key or `null` as undated. Arbitrary corrupt JSON or malformed dates manually inserted into storage are outside this feature. ## Review Focus 1. Calendar boundaries: leap day is accepted only in leap years; impossible dates fail before storage changes (Task 1). 2. ISO-looking variants: compact dates, timestamps, whitespace, and unpadded dates are rejected (Task 1). 3. Midnight/today boundary: due today is not overdue; use one captured local date per listing (Task 2). 4. Completed items with past dates: remain visible without `!` and are excluded from overdue filtering (Tasks 2–3). 5. Legacy and tied items: missing/null dates work, ties retain insertion order, and listing leaves the JSON file untouched (Tasks 2–3). ## File Map - Modify `todo/cli.py`: add argument validation, optional date persistence, overdue predicate, sorting, rendering, and filter exit status. - Create `tests/test_cli.py`: isolated CLI tests u [... excerpt: first 3200 of 11517 characters]