debugging について
原因が不明なバグや再発するバグ、複数箇所に及ぶ問題に取り組むコーディングエージェント向けのデバッグスキルです。根本原因の分析、検証可能な仮説、最小限の修正とテストを重視します。
主な機能
- 01再現手順と範囲の記録
- 02障害経路の切り分け
- 03根本原因の分析
- 04仮説に基づくテスト
- 05修正と回帰の検証
活用シーン
- 01再発するバグの調査
- 02不明瞭なエラーの追跡
- 03複数ファイルに及ぶ修正の確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ ratacat/ claude-skills --skill debuggingインストール後、Claude Code で/debuggingを入力して読み込まれたか確認します。
同梱ファイルreference/antipatterns.mdreference/root-cause-framework.md
詳細
デバッグ
クイックスタート
- 正確な再現手順、影響範囲、最近の変更を記録します
- コンポーネントやファイルを切り分け、障害に至る経路を追跡します
- 正確なエラーを調査し、公式ドキュメントを確認します
- 失敗するパターンと正常に動作するパターンを比較し、検証可能な仮説を立てます
- 最小限のテストで検証し、すべての該当箇所に最小限の修正を適用して、動作を確認します
このスキルを使用する場面
次の場合はデバッグを使用します:
- バグの原因が明らかでない、または以前「修正」されたものの再発した
- エラーメッセージが不明瞭、または誤解を招く
- 試した複数の修正が失敗した
- 問題がコードベース内の複数箇所に影響する可能性がある
- 適切に解決するために根本原因の理解が不可欠である
次の場合はこのスキルを使用しません:
- 明らかな修正方法がある単純な構文エラー
- 些細なタイプミスやインポート漏れ
- 解決策が明確で、影響範囲が限定された既知のバグ
避けるべき主なアンチパターン
AI によるデバッグで記録された失敗を踏まえ、次のことを明示的に避けてください:
- 循環論法:失敗した理由を把握せずに、同じ修正を二度提案しないでください
- 早まった成功宣言:修正が実際に実装され、動作することを必ず確認してください
- パターンの失念:セッションを通じて、確立されたコードパターンを常に意識してください
- コンテキストの過負荷:50% ルールを適用し、コンテキストが 50% に達したら会話を再開してください
- 症状の追跡:根本原因を理解せずにエラーメッセージだけを修正することは避けてください
- 理解する前の実装:既存のパターンを調べる前にコード変更に取りかからないでください
理解する(10 項目のチェックリスト)
- 理解する:正確な再現手順、影響範囲、最近の変更を記録します
- 絞り込む:コンポーネントやファイルを切り分け、障害に至る経路を追跡します
- 調べる:正確なエラーを調査します(WebSearch → Parallel Search、Context7:get-library-docs)
- 確認する:コードベース内の既知の正常なパターンと比較します
- 推論する:SequentialThinking:process_thought と 5 Whys を使って根本原因にたどり着きます
- 統合する:予測を伴う反証可能な仮説を記述します
- テストする:ログやテストを追加して仕組みを確認します
- 適用する:パターンに従い、すべての該当箇所に根本原因への最小限の修正を適用します
- 記録する:知見、警告、決定事項を記録します
- ドキュメント化する:必要に応じてコメント、ドキュメント、テストを更新します
TodoWrite による進捗管理
TodoWrite を使って、UNDERSTAND チェックリストに沿ったデバッグの進捗を管理します:
-
開始時:該当する各ステップの ToDo を作成します:
☐ U - Capture exact repro and scope ☐ N - Isolate failing component ☐ D - Research error message ☐ E - Compare with working patterns ☐ R - Root cause analysis (5 Whys) ☐ S - Write falsifiable hypothesis ☐ T - Verify with minimal test ☐ A - Apply fix across all occurrences ☐ N - Record insights ☐ D - Update docs/tests -
デバッグ中:作業を進めながら、ステップを in_progress → completed に更新します
-
行き詰まったとき:TodoWrite を使うと、どのステップがブロックされているかが分かります。ステップを飛ばしていないか、同じところを回っていないかを見極めるのに役立ちます
-
ステップを省略できるのは次の場合のみ:バグが単純で、チェックリストが過剰となる場合(上記の「次の場合はこのスキルを使用しません」を参照)
ツールの判断フロー
- 正確なテキストや記号が分かっている? → grep
- 概念的・意味的な位置を知りたい? → codebase_search
- ファイル全体のコンテキストが必要? → read_file
- 慣れていないエラーや動作がある? → Context7:get-library-docs、次に WebSearch → Parallel Search
- 複雑で複数の仮説を伴う分析が必要? → SequentialThinking:process_thought
コンテキスト管理
- 推論の質が低下しないよう、コンテキスト使用量が約 50% に達したら再開します
- 再開する前に、事実、仮説、否定した可能性、次のステップを要約します
- その要約だけを使って新しいチャットを開始し、作業を続けます
判断フレームワーク
IF 同じ修正を二度提案した → 停止し、SequentialThinking:process_thought を使用します IF エラーが不明瞭である → WebSearch → Parallel Search で調査し、ドキュメントで確認します IF その領域に慣れていない → codebase_search で調べ、推測しないでください IF 修正が簡単すぎるように思える → 症状ではなく根本原因に対処していることを確認します IF コンテキストが散らかっている → 要約を作成し、50% の時点で再開します IF 複数の仮説がある → それぞれを明示的に評価します(裏付ける証拠/反証する証拠) IF 類似コードが動作している → codebase_search/read_file で該当箇所を見つけて差分を確認します IF 成功を宣言する → 変更した行を示し、修正前は失敗し修正後は成功することをテストします IF 修正が複数ファイルにまたがる → 該当箇所をすべて検索し、修正します IF ライブラリの動作を前提としている → Context7:get-library-docs で確認します
完了前の品質チェック
バグの修正を宣言する前に、次の点を確認してください。
- 根本原因を特定し、文書化している
- 症状ではなく原因に対処する修正になっている
- すべての該当箇所を修正している(プロジェクト全体を検索済み)
- 既存のコードパターンに従っている
- 元の症状が解消されている
- リグレッションが発生していない
- 関連する条件下でテストやログにより検証している
- ドキュメントやテストを更新している(コメント、ドキュメント、リグレッションテスト)
参考資料
reference/root-cause-framework.mdreference/antipatterns.md