本文へ移動
cccskills
無料GitHub で公開

systematic-debugging

バグ・エラー・テスト失敗・ビルド失敗・予期しない挙動のうち、最初の修正で直らなかった時、または原因を1行で説明できない時に使う根本原因調査の規律(根本原因調査→パターン分析→仮説検証→実装の4フェーズ)。症状への場当たり修正を防ぐ。境界: 原因特定後の修正実装は writing-code、提出前の diff 確認は self-review。

インストール方法を見る

含まれるファイル(2)

  • SKILL.md7.0 KB
  • references/techniques.md2.3 KB

SKILL.md(原文)

インストールする前に、エージェントに与えられる指示の中身を確認できます。

Systematic Debugging

当てずっぽうの修正は時間を浪費し、新しいバグを生む。Core principle: 修正を試みる前に、必ず根本原因を特定する。症状への修正は失敗である。

The Iron Law

NO FIXES WITHOUT ROOT CAUSE INVESTIGATION FIRST

Phase 1を完了していないなら、修正を提案できない。ルールの文言をすり抜けることは、ルールの精神に違反することと同じ(「今回は事情が違うから」は成立しない)。

緊急時・「すぐ直せそう」に見える時・既に何度か修正を試した後こそ、このプロセスを使う。体系的なデバッグは、guess-and-checkの試行錯誤より速い。

The Four Phases

各フェーズを完了してから次へ進む。

Phase 1: 根本原因調査

  1. エラーメッセージを精読する — スタックトレースを最後まで読む。行番号・ファイルパス・エラーコードを控える。エラーメッセージはしばしば解決策そのものを含む
  2. 確実に再現する — 確実に発火させる手順を確立する。再現できないなら、修正でなくデータ収集を続ける
  3. 直近の変更を確認する — git diff・最近のコミット・依存やconfigの変更・環境差分
  4. 原因を一次情報で特定する — エラーの原因を公式ドキュメント(context7 / WebSearch)で確認する(グローバル規約「推測禁止・調査先行」と同一。推測での修正着手は禁止)
  5. 複数コンポーネント系では境界に診断ログを仕込む — 各コンポーネント境界で入る値・出る値・環境変数の伝播を記録し、一度実行してどの層で値が不正になるかの証拠を取ってから、その層を調べる
  6. データフローを遡る — エラーが出た場所ではなく、不正な値の発生源を突き止める(references/techniques.md のroot-cause-tracing)

Phase 2: パターン分析

  1. 同じコードベースで動いている類似コードを探す
  2. リファレンス実装・公式サンプルがあるなら全行読む(斜め読みで「パターンだけ真似る」ことが部分理解バグを生む)
  3. 動くものと動かないものの差分をすべて列挙する(「これは関係ないはず」と決めつけない)

Phase 3: 仮説検証

  1. 単一の仮説を明文化する — 「Xが根本原因だと考える。理由はY」と書き出す
  2. 最小の変更で検証する — 一度に1変数。複数の修正を同時に入れない(どの修正で直ったか切り分け不能になり、新しいバグを生む)
  3. 外れたら新しい仮説を立てる。修正を上に積まない
  4. 分からないなら「Xが分からない」と明言し、調査を続けるかユーザーに聞く。分かったふりをしない

Phase 4: 実装

  1. 失敗するテストケースを先に作る(最小の再現。フレームワークがなければ使い捨てスクリプトでよい)
  2. 単一の修正を実装する — 特定した根本原因だけを直す。「ついでの改善」やリファクタを混ぜない。修正コードを書く前に /writing-code を発動する(原則を記憶で思い出して書くのは不可。実際にスキルを読むこと)
  3. 検証する — テストが通り、他のテストが失敗しておらず、元の問題が実際に解消したことを確認してから完了を報告する
  4. 根本原因の修正後、必要なら多層の防御を追加する(references/techniques.md のdefense-in-depth)

停止条件: 修正3回失敗はアーキテクチャの問題

修正が失敗するたびに数える。3回失敗したら、4回目を試みる前に停止してアーキテクチャ自体を疑う。

兆候: 修正のたびに別の場所で新しい問題が出る / 修正に大規模リファクタが必要になる。これは外れた仮説ではなく、間違ったアーキテクチャのサイン。ユーザーと構造の議論をしてから先へ進む。

Red Flags — 内心にこれが浮かんだら停止してPhase 1へ

  • 「とりあえず暫定対応で、調査は後で」
  • 「試しにXを変えてみて動くか見よう」
  • 「複数まとめて変えてテストを回そう」
  • 「たぶんXだから、そこを直そう」
  • 「完全には理解していないが、これで動くかもしれない」
  • データフローを遡る前に解決策を提案している
  • 「もう1回だけ修正を試したい」(既に2回以上失敗している時)

Common Rationalizations(言い訳と現実)

言い訳現実
「単純なissueだからプロセス不要」単純なバグにも根本原因がある。単純ならプロセスも速く終わる
「緊急なので時間がない」体系的デバッグはguess-and-checkの試行錯誤より速い
「まず試して、ダメなら調査する」最初の1手がその後のパターンを決める。最初から正しくやる
「複数の修正をまとめれば時間短縮」どの修正で直ったか切り分けられず、新しいバグを生む
「問題は見れば分かる」症状が見えること ≠ 根本原因を理解していること
「もう1回だけ」(2回以上失敗後)3回失敗はアーキテクチャの問題。同じ層で修正を重ねない

Gate Function — 修正を提案する前のチェック

  • エラーメッセージ・スタックトレースを最後まで読んだ
  • 再現手順を確立した(または再現不能と明記した)
  • 原因を一次情報(公式ドキュメント・実測した証拠)で特定した
  • 仮説を1文で明文化した(「Xが根本原因。理由はY」)
  • 提案する変更は1つで、根本原因に対応している(症状への対処ではない)

調査を尽くしても真に環境起因・タイミング起因・外部起因の場合は、調査内容を記録した上で適切なハンドリング(リトライ・タイムアウト・エラーメッセージ・監視)を実装する。ただし「根本原因なし」の大半は調査不足である。


出典: obra/superpowers(MIT License)を翻案。詳細はリポジトリルートのNOTICE.mdを参照。

レビュー

まだレビューはありません。使ってみた感想をお寄せください。

同じリポジトリのスキル

概要と使いどころ

codebase-review

無料日本語概要

コードベース全体のレビュー・監査。perf/sec/test/arch/cq/docs の6観点を並列委譲し、優先度付き issue ファイルと観点サマリをメモリディレクトリに生成する。コードベース全体の監査・定期レビュー・リリース前品質確認の依頼時、/codebase-review 実行時に使用。境界: PR 単位は pr-review、自ブランチの提出前確認は self-review。

ukwhatn/.claude42026年10月10日 更新

commit

無料日本語概要

変更をコミットする。/commit 実行時、「コミットして」「pushして」等の依頼時に使用。--push 引数または「pushして」の依頼で push も行う。

ukwhatn/.claude42026年10月10日 更新

create-draft-pr

無料日本語概要

PR を Draft で作成する。PR テンプレートを全セクション埋め、対象 repo の既存 PR の分量に合わせて書きすぎを削る。PR 作成の依頼時、実装が一段落して PR 化する時、/create-draft-pr 実行時に使用(gh pr create を直接実行しない)。引数でベースブランチを指定できる。境界: 個別レビューコメントへの対応は pr-comment。

ukwhatn/.claude42026年10月10日 更新

create-skill

無料日本語概要

スキルを新規作成する。「スキルを作って」「この手順をスキル化して」等の依頼時、/create-skill 実行時に使用。AGENTS.md・context・既存スキルと整合させ、重複・競合を避ける。境界: 既存スキル・指示ファイルの修正は update-inst、指示ファイル全体の監査は instructions-audit。

ukwhatn/.claude42026年10月10日 更新

design-feature

無料日本語概要

抽象的な要件・事業側の要求を深掘りし、既存実装との整合を確認して実装マスタとシステム要件書を作成する。「こういう機能を作りたい」「この要求を満たす機能を設計して」等の抽象要件の提示時、既存機能の拡張や Phase 分割の要件定義開始時、/design-feature 実行時に使用。境界: 要件確定後の実装計画書・PR 分割と実装進行は plan-feature-prs。

ukwhatn/.claude42026年10月10日 更新

designing-ui

無料日本語概要

画面の設計判断(ナビゲーション・重ね方・通知と空状態と読み込み・外枠とトークンと状態表現)の型を決定表で選び、アプリ内の全画面で揃える。画面・ページ・レイアウト・ナビゲーション・ダイアログ・コンポーネントを新しく作る・作り直す時、モックやダッシュボードを作る時、サイドバー・タブ・モーダル・シート・toast・バナー・空状態のどれを使うか決める時に使用。PJ に components.json があれば shadcn の部品とトークンへの対応も扱う。主要なデザインシステム(Material・HIG・Carbon・Primer・Atlassian・Fluent・GOV.UK・NN/g・WAI-ARIA APG・WCAG)の一致点を規則にし、食い違いの採否を定めてある。境界: 画面の文言は writing-ui-text、画面に何を出すかと提示前の完了基準は context/ui-artifact-standards.md、コードの実装原則は writing-code、shadcn 部品の API と組み立ては shadcn。

ukwhatn/.claude42026年10月10日 更新

ukwhatn のスキルをすべて見る

このスキルの問題を報告する