Alle Skills

systematic-debugging (obra/superpowers)

Untersucht Bugs, Testfehler und unerwartetes Verhalten systematisch, bevor Fixes vorgeschlagen werden.

superpowers systematic-debugging: Kein messbarer Gewinn bei drei kleinen Bugs, etwa 1.3x die Tokens

SituativSicher

Codex CLI · gpt-6-astra

22.4 / 30

Lift gegenüber ohne Skill: +0.00 · Situativ · 18 Läufe

Situativ: der Lift +0.00 liegt unter +1.0. Für „Empfohlen“ sind insgesamt 22/30, eine Ausgabequalität von 3.5 und ein Lift von +1.0 nötig.

SOTA

Bestanden

Getestet 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
2.0
Ausgabequalität
4.5
Token- und Zeitkosten
3.0
Installation und Portabilität
4.0
Sicherheit
4.0

Sicherheitsprüfung

Sicher

Statischer 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 systematic-debugging

Quelle

Fixierter Commit: 2ce8aa15d05bd57213e6f746f953aafb7ded7a8b

Getestet: 2026-11-02

Was wir getestet haben

  • Off-by-one in einer kleinen Funktion — moving_average in movavg.py liefert falsche Zahlen: moving_average([2, 4, 6, 8, 10], 3) sollte [2, 3, 4, 6, 8] sein, aber die späteren Werte kommen falsch heraus. Ursache finden und beheben. Tests: python3 -m unittest.
  • Dateiübergreifender Datumsfehler — Unsere Wochenbericht-Kopfzeilen zeigen um den Jahreswechsel falsche Daten, z. B. sollte header('2026-W01') 'Week 2026-W01: Dec 29 - Jan 04, 2026' sein. Ursache finden und beheben.
  • Reihenfolgeabhängiger Testfehler — Tests in tests/test_settings.py bestehen einzeln, aber test_b schlägt fehl, wenn die ganze Datei läuft, und Konfigurationen scheinen Tags aus früheren Aufrufen zu tragen. Diagnostizieren und beheben.

Vorteile

  • Der Skill wurde erkannt, ohne genannt zu werden: Skill-Datei in 6/6 Treatment-Läufen gelesen.

Nachteile

  • Kein messbarer Lift gegenüber ohne Skill (+0.00, im Rauschen).
  • Ein Ein-Satz-Prompt erzielte 4.86 gegenüber 4.45 mit dem Skill (-0.42).
  • Testhinweis: Der Ein-Satz-Arm (6 Läufe) wurde später auf einem anderen Rechner als Kontroll- und Treatment-Arm ergänzt.
  • 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 Mac-Testrechner, 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). Die Prompts nennen den Skill nie. Die Bewertung ist programmatisch (versteckte Tests / Trefferquote eingebauter Probleme / Constraint-Prüfungen / Rendern+OCR wo relevant), 0–5 pro Lauf. Keine Punktzahl wurde von einem LLM-Richter vergeben.

Drei-Arm-Vergleich

VarianteDurchschnittsnote (0-5)Tokens pro Lauf
Ohne Skill4.4575k
Ein-Satz-Prompt4.8698k
Mit Skill4.4599k

Gemessen mit Codex CLI über 18 Läufe, bewertet durch regelbasierte Prüfungen ohne LLM-Richter. Gesamt 22.4 / 30, Urteil Situativ.

Offenlegung: Der Ein-Satz-Arm (6 Läufe) wurde später auf einem anderen Rechner als Kontroll- und Treatment-Arm ergänzt.

Urteil: Situationsabhängig (22.4 / 30). Quelle: obra/superpowers, skills/systematic-debugging, festgeschrieben auf Commit 2ce8aa1. Installation: npx skills@latest add obra/superpowers --skill systematic-debugging. Lizenz: MIT (LICENSE im Repo).

Was es ist

Der Skill systematic-debugging aus obra/superpowers: „Verwenden bei jedem Bug, Testfehler oder unerwarteten Verhalten, bevor Fixes vorgeschlagen werden“. Vier Phasen (Ursache untersuchen, Muster finden, Hypothese, Fix), eine Regel gegen das Stapeln von Fixes und Begleitnotizen (Ursachenverfolgung, Defense in Depth, bedingungsbasiertes Warten) plus Szenarien unter Testdruck sowie ein Shell-Skript (find-polluter.sh, eine lokale Bisektion über Testdateien).

Wie wir getestet haben

Codex CLI 0.166 (gpt-6-astra, niedriges Reasoning) auf einem Mac-Testgerät, 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.

  1. Off-by-one in einer kleinen Funktion — moving_average in movavg.py liefert falsche Zahlen: moving_average([2, 4, 6, 8, 10], 3) sollte [2, 3, 4, 6, 8] sein, aber die späteren Werte kommen falsch heraus. Finde die Ursache und behebe sie. Tests: python3 -m unittest.
  2. Dateiübergreifender Datumsfehler — Unsere Wochenbericht-Kopfzeilen zeigen um den Jahreswechsel falsche Daten, z. B. sollte header('2026-W01') „Week 2026-W01: Dec 29 - Jan 04, 2026“ sein. Finde die Ursache und behebe sie.
  3. Reihenfolgeabhängiger Testfehler — Die Tests in tests/test_settings.py laufen einzeln durch, aber test_b schlägt fehl, wenn die ganze Datei läuft, und Konfigurationen scheinen Tags aus früheren Aufrufen mitzunehmen. Diagnostiziere und behebe das.

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: "Debugge systematisch: Reproduziere zuerst den Fehler, untersuche die Ursache und bilde mit Belegen jeweils eine Hypothese, bevor du Code änderst, mache den kleinsten Fix für die Ursache (keine gestapelten Vermutungen) und verifiziere mit den Tests."

AufgabeKontrollwertEin-SatzMit SkillKontroll-TokenEin-Satz-TokenMit-Skill-TokenSkill gelesen
t1-moving-average4.174.584.5860k62k69k2/2
t2-weekly-dates4.175.04.1778k104k109k2/2
t3-shared-state5.05.04.5885k127k118k2/2

Durchschnittswert: 4.45 ohne vs. 4.45 mit dem Skill (Delta +0.0). Token pro Lauf: 75k vs. 99k (1.33x); Zeit 34s vs. 45s. Ein-Satz-Gruppe: 4.86 (Gewinn des Skills gegenüber dem Ein-Satz-Prompt: -0.42; Gewinn des Ein-Satz-Prompts gegenüber ohne Skill: +0.42); Ein-Satz-Token 98k pro Lauf, der Skill kostet also 1.01x so viel wie der Ein-Satz-Prompt.

Was passiert ist

  • Ergebnis: Die versteckten Tests liefen in jedem Lauf beider Gruppen durch, die Korrektheit unterschied sich also nicht.
  • Prozessprüfung „die Tests vor dem Ändern des Codes ausgeführt“ (zuerst reproduzieren): Die Kontrolle verfehlte ihn in 4/6 Läufen, das Treatment in 4/6 Läufen. Die erste Phase des Skills heißt „reproduzieren“, aber die Agenten mit dem Skill änderten den Code trotzdem oft, bevor sie etwas ausführten.
  • Der Skill wurde in 6/6 Treatment-Läufen gelesen, die Auslösung ist also nicht das Problem; er änderte das Verhalten bei diesen kleinen Bugs schlicht nicht (die Bugs waren durch Lesen des Codes zu finden).
  • Kosten: etwa 1.3x Token pro Lauf (89k vs. 67k).
  • Ein-Satz-Version (zuerst reproduzieren, jeweils eine Hypothese, kleinster Fix, verifizieren): Durchschnitt 4.86 gegenüber 4.45 für die Kontrolle und 4.45 für den Skill, bei 98k Token pro Lauf gegenüber 75k (1.3x) und 99k für den Skill (1.0x).
  • Der Unterschied liegt im Ausführen der Tests vor dem Ändern: 5 von 6 Ein-Satz-Läufen taten das, gegenüber 2 von 6 Kontroll-Läufen und 2 von 6 Skill-Läufen. Der Skill änderte dieses Verhalten nicht; der Satz, der es benennt, schon. Jede Gruppe erklärte in allen Läufen die Ursache und bestand jeden versteckten Test, mit kleinen Diffs.

Dimensionswerte

DimensionWertBegründung
1_output_quality4.45

Durchschnittswert 4.45/5 mit dem Skill (programmatische Checks, siehe Tabelle pro Aufgabe).

2_lift_vs_no_skill2.0

+0.00 Punkte gegenüber 4.45 ohne den Skill (n=2 pro Aufgabe; unter ~1 Punkt ist Rauschen).

3_trigger5.0Skill-Datei in 6/6 Treatment-Läufen gelesen.
4_instructions_portability4
5_efficiency31.33x Token (99k vs. 75k pro Lauf) und 1.32x Zeit (45s vs. 34s).
6_safety_hygiene4

Grenzen dieses Tests

  • Drei kleine eingepflanzte Bugs (Off-by-one, dateiübergreifende Datumslogik, reihenfolgeabhängige Testverschmutzung) — alle einfach genug, dass die Baseline sie behebt.
  • Der Skill ist für schwierige Bugs mit mehreren Versuchen gedacht; solche haben wir nicht getestet.
  • find-polluter.sh wurde nicht ausprobiert.
  • 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

Bei drei kleinen Bugs kostete der Skill etwa 1.3x Token und brachte keine messbare Änderung: Kontrolle und Skill erreichten beide 4.45 und führten beide nur in 2 von 6 Läufen die Tests vor dem Ändern aus. Die Ein-Satz-Version mit „zuerst reproduzieren“ war besser (4.86, 5 von 6). Bei schwierigeren Bugs könnte er sich auszahlen — die haben wir nicht getestet.

Transkript

Laufprotokoll: systematic-debugging (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-moving-average control-1: Punkte 4.17, Tokens 60337, Sek. 30.6, Prüfungen 3/4, nichts geöffnet
t1-moving-average control-2: Punkte 4.17, Tokens 60293, Sek. 24.1, Prüfungen 3/4, nichts geöffnet
t1-moving-average oneliner-1: Punkte 4.17, Tokens 62543, Sek. 30.2, Prüfungen 3/4, nichts geöffnet
t1-moving-average oneliner-2: Punkte 5.0, Tokens 62033, Sek. 32.0, Prüfungen 4/4, nichts geöffnet
t1-moving-average treatment-1: Punkte 5.0, Tokens 69716, Sek. 31.0, Prüfungen 4/4, geöffnet systematic-debugging
t1-moving-average treatment-2: Punkte 4.17, Tokens 69385, Sek. 26.6, Prüfungen 3/4, geöffnet systematic-debugging
t2-weekly-dates control-1: Punkte 4.17, Tokens 78575, Sek. 38.8, Prüfungen 3/4, nichts geöffnet
t2-weekly-dates control-2: Punkte 4.17, Tokens 78005, Sek. 39.5, Prüfungen 3/4, nichts geöffnet
t2-weekly-dates oneliner-1: Punkte 5.0, Tokens 96141, Sek. 41.5, Prüfungen 4/4, nichts geöffnet

18 Läufe, 3 Artefakte

Beispielausgabe

SOTA · With the skill: movavg.py (t1-moving-average, run 1, Codex)

def moving_average(values, window): """Trailing moving average. Output i is the mean of the last `window` values ending at index i. For i < window - 1 only the values available so far are used. Raises ValueError if window < 1. """ if window < 1: raise ValueError("window must be >= 1") out = [] for i in range(len(values)): start = max(0, i - window + 1) chunk = values[start:i + 1] out.append(sum(chunk) / len(chunk)) return out

Pro ansehen