systematic-debugging (obra/superpowers)
バグ、テスト失敗、想定外の動作を、修正案を出す前に体系的に調べます。
superpowers 系統的デバッグ:3 つの小さなバグで有意な向上なし、トークンは約 1.3 倍
Codex CLI · gpt-6-astra
22.4 / 30
スキルなしに対するリフト:+0.00 · 状況次第 · 18 実行
状況次第:リフト +0.00 が +1.0 未満。推奨には合計 22/30、出力品質 3.5、リフト +1.0 が必要です。
SOTA
合格Codex でテスト済み。
カバー対象 Codex, Claude Code
Codex CLI 0.166(SOTA ティア):採点対象 18 実行。当ティアのルールでは、ここでの合格は Claude Code もカバーします。第2ティアについては何も述べません。
スコア
各ディメンションは 0〜5 点で、6 つの合計が 30 点満点の合計スコアになります。すべてのディメンションで 5 が最良です。コスト 5 は低コストで高速、インストール 5 は簡単であることを意味します。
- トリガーの信頼性
- 5.0
- スキルなしに対するリフト
- 2.0
- 出力品質
- 4.5
- トークンと時間のコスト
- 3.0
- インストールと移植性
- 4.0
- 安全性
- 4.0
セキュリティレビュー
安全静的スキャン:CRITICAL 0 / HIGH 0 / MEDIUM 0。手動レビュー:ネットワーク無効のサンドボックスで実行しても安全(指摘なし)。クリーンなスキャン結果はスキルの安全性を証明しません。
インストール
npx skills@latest add obra/superpowers --skill systematic-debugging
固定コミット: 2ce8aa15d05bd57213e6f746f953aafb7ded7a8b
テスト済み: 2026-11-02
テスト内容
- 小さな関数の off-by-one — movavg.py の moving_average が誤った数値を返します:moving_average([2, 4, 6, 8, 10], 3) は [2, 3, 4, 6, 8] になるべきですが、後半の値が間違っています。原因を見つけて修正してください。テスト:python3 -m unittest。
- 複数ファイルにまたがる日付バグ — 週次レポートのヘッダーが年始のあたりで誤った日付を表示します。例:header('2026-W01') は 'Week 2026-W01: Dec 29 - Jan 04, 2026' になるべきです。原因を見つけて修正してください。
- 実行順序に依存するテスト失敗 — tests/test_settings.py のテストは単独では通りますが、ファイル全体を実行すると test_b が失敗し、configs が以前の呼び出しのタグを引き継いでいるように見えます。診断して修正してください。
長所
- スキルは名前を出さずとも採用されました:スキルあり群 6/6 実行でスキルファイルが読み込まれました。
短所
- スキルなしに対する有意なリフトなし(+0.00、ノイズの範囲内)。
- 一文プロンプトは 4.86、スキルありは 4.45(-0.42)。
- テスト上の注意:一文プロンプト群(6 実行)は後から、対照群とスキルあり群とは別のマシンで追加されました。
- タスク・群ごとに n=2。1 ポイント未満の差はノイズです。
レビュー
Mac テストマシン上で Codex CLI 0.166(gpt-6-astra、低推論)、実行ごとに新規の一時プロジェクトと一時 HOME/TMPDIR/キャッシュを使用、スキルをインストール(スキルあり群)、スキルなし(対照群)、またはスキルの中核要件をプロンプト末尾に付けた一文に圧縮(一文プロンプト群)、タスクごとに各群 2 実行、ネットワーク無効、/tmp への書き込みはブロック。プロンプトはスキル名に一切言及しません。採点はプログラム的(隠しテスト/仕込み問題の検出/制約チェック/該当する場合はレンダリング+OCR)で、実行ごとに 0〜5 点。スコアはどの LLM 判定者も決めていません。
3群の比較
| 群 | 平均スコア(0〜5) | 1実行あたりのトークン |
|---|---|---|
| スキルなし | 4.45 | 75k |
| 一文プロンプト | 4.86 | 98k |
| スキルあり | 4.45 | 99k |
Codex CLI で 18 実行を計測し、LLM 判定なしのルールベースのチェックで採点。合計 22.4 / 30、判定は 状況次第。
開示事項 一文プロンプト群(6 実行)は、対照群・スキルあり群とは別のマシンで後から追加しました。
判定:状況次第(22.4 / 30)。 出典:obra/superpowers、skills/systematic-debugging、コミット 2ce8aa1 時点。インストール:npx skills@latest add obra/superpowers --skill systematic-debugging。ライセンス: MIT(リポジトリの LICENSE)。
概要
obra/superpowers の systematic-debugging スキル。「バグ、テスト失敗、想定外の挙動に遭遇したとき、修正を提案する前に使う」。4 つのフェーズ(根本原因の調査、パターンの特定、仮説、修正)、修正の積み重ねを禁じるルール、付属ノート(根本原因の追跡、多層防御、条件ベースの待機)に加え、テスト圧力のシナリオとシェルスクリプト 1 つ(find-polluter.sh、テストファイル群に対するローカルな二分探索)があります。
テスト方法
Mac テストマシン上で Codex CLI 0.166(gpt-6-astra、低推論)、実行ごとに新規の一時プロジェクトと一時 HOME/TMPDIR/キャッシュを使用、スキルをインストール(スキルあり群)、スキルなし(対照群)、またはスキルの中核要件をプロンプト末尾に付けた一文に圧縮(一文プロンプト群)、タスクごとに各群 2 実行、ネットワーク無効、/tmp への書き込みはブロック。プロンプトはスキル名に一切言及しません。
- 小さな関数でのオフバイワン — movavg.py の
moving_averageが誤った数値を返します。moving_average([2, 4, 6, 8, 10], 3) は [2, 3, 4, 6, 8] になるべきですが、後半の値が誤って出ます。原因を見つけて修正してください。テスト:python3 -m unittest。 - ファイルをまたぐ日付バグ — 週次レポートのヘッダーが年始前後に誤った日付を表示します。例:header('2026-W01') は 'Week 2026-W01: Dec 29 - Jan 04, 2026' になるべきです。原因を見つけて修正してください。
- 順序依存のテスト失敗 — tests/test_settings.py のテストは単独では合格しますが、ファイル全体を実行すると
test_bが失敗し、設定が以前の呼び出しのタグを引き継いでいるように見えます。診断して修正してください。
採点はプログラム的(隠しテスト/仕込み問題の検出/制約チェック/該当する場合はレンダリング+OCR)で、実行ごとに 0〜5 点。スコアはどの LLM 判定者も決めていません。
結果
第3群に与えた一文プロンプト:"体系的にデバッグする:まず失敗を再現し、コードを変更する前に根本原因を調査して、証拠に基づいて一度に 1 つの仮説を立て、根本原因に対する最小の修正を行い(推測の積み重ねはしない)、テストで検証する。"
| タスク | 対照群スコア | 一文プロンプト | スキルあり | 対照群トークン | 一文プロンプトトークン | スキルありトークン | スキル読込 |
|---|---|---|---|---|---|---|---|
| t1-moving-average | 4.17 | 4.58 | 4.58 | 60k | 62k | 69k | 2/2 |
| t2-weekly-dates | 4.17 | 5.0 | 4.17 | 78k | 104k | 109k | 2/2 |
| t3-shared-state | 5.0 | 5.0 | 4.58 | 85k | 127k | 118k | 2/2 |
平均スコア:スキルなし 4.45 対 スキルあり 4.45(差分 +0.0)。1 実行あたりのトークン:75k 対 99k(1.33 倍)、時間 34 秒 対 45 秒。一文プロンプト群:4.86(一文プロンプトに対するスキルの上乗せ:-0.42、スキルなしに対する一文プロンプト自身の上乗せ:+0.42)。一文プロンプトのトークンは 1 実行あたり 98k で、スキルのコストは一文プロンプトの 1.01 倍です。
何が起きたか
- 結果:隠しテストは両群の全実行で合格したため、正しさに差はありませんでした。
- プロセスチェック「コードを編集する前にテストを実行した」(まず再現する):対照群は 6 実行中 4 実行で未達、スキルありも 6 実行中 4 実行で未達。スキルの最初のフェーズは「再現」ですが、スキルを持つエージェントも、何も実行せずにパッチを当てることが多々ありました。
- スキルはスキルあり群 6/6 実行で読み込まれたため、トリガーが問題ではありません。これらの小さなバグでは、単に挙動を変えなかったのです(コードを読めば見つかるバグでした)。
- コスト:1 実行あたり約 1.3 倍のトークン(89k 対 67k)。
- 一文版(まず再現、一度に 1 つの仮説、最小の修正、検証):平均 4.86。対照群 4.45、スキルあり 4.45 に対してです。1 実行あたり 98k トークン(対照群 75k の 1.3 倍、スキルあり 99k の 1.0 倍)。
- 差は、編集前にテストを実行したかどうかにあります。一文プロンプトは 6 実行中 5 実行でそうしたのに対し、対照群は 6 実行中 2、スキルありも 6 実行中 2 でした。スキルはこの挙動を変えず、それに名指しで言及した一文が変えました。どの群も全実行で根本原因を説明し、小さな差分ですべての隠しテストに合格しました。
次元別スコア
| 次元 | スコア | 理由 |
|---|---|---|
| 1_output_quality | 4.45 | スキルありの平均スコア 4.45/5(プログラム的チェック。タスク別の 表を参照)。 |
| 2_lift_vs_no_skill | 2.0 | スキルなしの 4.45 に対して +0.00 ポイント(タスクごとに n=2。約 1 ポイント未満はノイズ)。 |
| 3_trigger | 5.0 | スキルあり群 6/6 実行でスキルファイルが読み込まれました。 |
| 4_instructions_portability | 4 | |
| 5_efficiency | 3 | トークン 1.33 倍(1 実行あたり 99k 対 75k)、時間 1.32 倍(45 秒 対 34 秒)。 |
| 6_safety_hygiene | 4 |
このテストの限界
- 小さな仕込みバグ 3 つ(オフバイワン、ファイルをまたぐ日付ロジック、順序依存のテスト汚染)。いずれも、ベースラインが修正できる程度には簡単です。
- スキルは、複数回の試行を要する難しいバグ向けに設計されています。それらはテストしていません。
find-polluter.shは試していません。- タスク・群ごとに n=2。1 ポイント未満の差はノイズです。
- ルールベースの採点はチェックで見えるものだけを測ります。センスや、その結果が可能な限り最良かどうかは判定できません。
セキュリティ
security.md を参照。スキャン:0 CRITICAL / 0 HIGH / 0 MEDIUM。判定:実行しても安全(ネットワーク無効のサンドボックス)。クリーンなスキャン結果はスキルの安全性を証明しません。
まとめ
3 つの小さなバグでは、スキルは約 1.3 倍のトークンを加えただけで、測定できる変化はありませんでした。対照群とスキルありはどちらも 4.45 で、編集前にテストを実行したのもどちらも 6 実行中 2 実行だけでした。「まず再現する」と述べた一文版はより良い結果でした(4.86、6 実行中 5 実行)。テストしていない、より難しいバグでは役立つかもしれません。
トランスクリプト
実行ログ:systematic-debugging (Codex CLI, network off, per-run temp HOME/TMPDIR, one row per graded run.) 列:タスク、群-回、スコア(0-5)、トークン、秒、合格したチェック、エージェントが開いたスキルファイル。 t1-moving-average control-1: スコア 4.17, トークン 60337, 秒 30.6, チェック 3/4, 開いたファイルなし t1-moving-average control-2: スコア 4.17, トークン 60293, 秒 24.1, チェック 3/4, 開いたファイルなし t1-moving-average oneliner-1: スコア 4.17, トークン 62543, 秒 30.2, チェック 3/4, 開いたファイルなし t1-moving-average oneliner-2: スコア 5.0, トークン 62033, 秒 32.0, チェック 4/4, 開いたファイルなし t1-moving-average treatment-1: スコア 5.0, トークン 69716, 秒 31.0, チェック 4/4, 開いたファイル systematic-debugging t1-moving-average treatment-2: スコア 4.17, トークン 69385, 秒 26.6, チェック 3/4, 開いたファイル systematic-debugging t2-weekly-dates control-1: スコア 4.17, トークン 78575, 秒 38.8, チェック 3/4, 開いたファイルなし t2-weekly-dates control-2: スコア 4.17, トークン 78005, 秒 39.5, チェック 3/4, 開いたファイルなし t2-weekly-dates oneliner-1: スコア 5.0, トークン 96141, 秒 41.5, チェック 4/4, 開いたファイルなし
18 実行、3 成果物
サンプル出力
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