mcpField
D
debugging

debugging

github.com/poteto開発571252 回インストール32 週間前に更新
リポジトリ

debugging について

ソフトウェア開発者向けのデバッグスキルです。エラーの再現から修正の検証までを導き、根本原因の特定を重視します。Noodle のインフラ障害向け診断項目も含みます。

主な機能

  1. 01エラーの再現と出力全体の確認
  2. 02永続状態と環境の調査
  3. 03問題範囲の段階的な絞り込み
  4. 04根本原因の修正と検証
  5. 05再発パターンの検索と解消
  6. 06Noodle 固有の診断項目

活用シーン

  1. 01再現しにくいエラーの調査
  2. 02再起動後に起きる状態問題の診断
  3. 03修正の検証と類似コードの確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/poteto/noodle --skill debugging

インストール後、Claude Code で/debuggingを入力して読み込まれたか確認します。

詳細

デバッグ

開始する前に[[principles/fix-root-causes]]を読んでください。すべてのデバッグセッションでこの原則に従います。根本原因を追跡し、症状を取り繕うだけの対応はしません。

プロセス

  1. 再現します。 正確なエラーを確認します。失敗するコマンドを実行し、出力全体を読みます。再現できなければ、修正を検証できません。

  2. エラーを読みます。 エラーメッセージ、スタックトレース、行番号はデータです。仮説を立てる前に、すべて読みます。多くのバグは、どこに問題があるかを正確に示しています。

  3. コードより先に状態を疑います。 コードをデバッグする前に、永続状態を確認します。特に、再起動時のバグや環境のずれがある場合は確認してください。[[principles/fix-root-causes]]を参照してください。

    • Noodle の状態:.noodle/orders.json(古い項目はないか?)、.noodle/sessions/(孤立したセッションはないか?)、.noodle.toml(有効か?)
    • 環境:tmux セッション(tmux ls)、ロックファイル、キャッシュ済みの成果物
    • 設定:.noodle.toml の検証(noodle start で診断結果を報告)、スキルのフロントマター解析エラー
    • 永続ファイル:brain/ のメモ、プランファイル、TODO。破損や古い参照がないか確認します
  4. 切り分けます。 範囲を絞り込みます。どのファイルか? どの関数か? どの行か? 二分探索を使います。半分をコメントアウトして、まだ失敗するか確認し、これを繰り返します。

  5. 根本原因を見つけます。 最初に思いつく「修正」は、たいてい症状への対処です。実際の原因にたどり着くまで「なぜ?」と問い続けます。

    • テストが失敗する → モックが間違っている → インターフェースが変わった → 型が実行時の形状と一致しない → 型を修正する
    • ビルドが失敗する → インポートエラー → 循環依存 → モジュールを再構成する
    • 実行時にクラッシュする → 値が undefined → null チェックがない → データソースが空の場合に null を返す → データソース側で空のケースを処理する
  6. 修正して検証します。 症状ではなく、根本原因を修正します。その後、テストを実行し、ビルドを実行し、機能の経路を実際に試して検証します。「コンパイルできる」だけでは検証になりません。

  7. 同じパターンがないか確認します。 バグが一か所にあった場合、同じパターンがほかにもないか grep で検索します。すべての該当箇所を修正するか、構造上発生しないようにします。

Noodle 固有の診断

Noodle のインフラストラクチャ障害をデバッグする際は、次を確認してください。

症状最初に確認する項目
Cook が起動しないtmux ls、.noodle/orders.json の妥当性、スキルリゾルバーのパス
注文が止まったまま.noodle/orders.json に古い項目がないか、.noodle.toml のアダプター設定
スキルが見つからない.noodle.toml の [skills] パス、.agents/skills/<name>/SKILL.md が存在するか
mise が古い.noodle/mise.json の generated_at タイムスタンプ、バックログ同期スクリプト
セッションが孤立している.noodle/sessions/<id>/meta.json の状態、ゾンビセッションがないか tmux ls

行き詰まったとき

  • 推測せず、計測します。 重要な箇所にログを追加し、実際の値を確認します。実際の状態を読み取ってください([[principles/prove-it-works]])。
  • 変更点を比較します。 git diff、git log、git bisect を使います。ほとんどのバグは最近発生したものです。
  • 単純化します。 失敗するケースを最小限の再現例にします。無関係なものをすべて取り除きます。
  • 一度に一つだけ変更します。 複数の変更を同時に行うと、何が修正(または悪化)させたのか分からなくなります。
  • 前提を確認します。 バグは、正しいと確信している部分にあることがよくあります。すべてを検証してください。

アンチパターン

  • 回避フラグ(--no-verify、--force、SKIP_CHECK=true)は、原因を修正せずに症状を隠します。
  • 再試行ループは、断続的なバグを確率の陰に隠します。
  • 手当たり次第のデバッグ――「効果があるか見る」ために三つのことを変更する――は、因果関係を見えにくくします。
  • x が undefined である理由を問わずに、ガード(if (x !== undefined))を追加します。

修正後

このバグが再発する可能性がある場合、または理解に影響した場合は、得られた教訓を記録します。brain のメモを書く、スキルを更新する、または TODO を追加してください。バグが起きるたびに、システムが賢くなるべきです。[[principles/encode-lessons-in-structure]]を参照してください。

コメント