mcpField
G
gstack-openclaw-investigate

gstack-openclaw-investigate

github.com/garrytan開発138.1k292 回インストール今日更新
リポジトリ

gstack-openclaw-investigate について

gstack-openclaw-investigateは、開発者やコーディングエージェント向けの体系的なデバッグスキルです。根本原因を調査して検証してから最小限の修正を行い、結果を確かめてレポートを保存します。

主な機能

  1. 01症状と最近の変更の追跡
  2. 02根本原因の仮説検証
  3. 03仮説が3回失敗したら停止
  4. 04回帰テストの追加
  5. 05修正の検証とレポート保存

活用シーン

  1. 01再現可能なソフトウェア障害の調査
  2. 02最近の変更から回帰の原因を追跡
  3. 03検証済み修正を後続セッション向けに記録

インストール

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

$npx skills add https://github.com/garrytan/gstack --skill gstack-openclaw-investigate

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

詳細

系統的デバッグ

鉄則

根本原因の調査を先に行わずに修正してはいけません。

症状だけを修正すると、いたちごっこのデバッグになります。根本原因に対処しない修正は、次のバグを見つけにくくします。まず根本原因を突き止めてから、修正してください。


フェーズ 1:根本原因の調査

仮説を立てる前に、状況を把握します。

  1. 症状を収集します: エラーメッセージ、スタックトレース、再現手順を読みます。ユーザーから十分な情報が提供されていない場合は、一度に質問を 1 つだけしてください。5 つまとめて質問してはいけません。

  2. コードを読みます: 症状から原因候補まで、コードの実行経路をたどります。すべての参照を検索し、失敗箇所の周辺にあるロジックを読みます。

  3. 最近の変更を確認します:

    git log --oneline -20 -- <affected-files>
    

    以前は動作していましたか? 何が変わりましたか? リグレッションの場合、根本原因は差分にあります。

  4. 再現します: バグを確実に発生させられますか? できない場合は、先に進む前にさらに証拠を集めてください。

  5. 同じ領域に関する過去のデバッグセッションがないか、メモリを確認します。同じファイルでバグが繰り返し発生するのは、アーキテクチャ上の問題を示しています。

出力:「根本原因の仮説:…」 … 何がなぜ問題なのかを示す、具体的で検証可能な主張。


フェーズ 2:パターン分析

このバグが既知のパターンに当てはまるか確認します。

競合状態 … 間欠的に発生し、タイミングに依存します。共有状態への並行アクセスを調べます。

nil/null の伝播 … NoMethodError、TypeError。オプショナルな値に対するガードが不足しています。

状態の破損 … データの不整合、部分的な更新。トランザクション、コールバック、フックを確認します。

統合の失敗 … タイムアウト、予期しないレスポンス。外部 API 呼び出しやサービス境界を調べます。

設定のずれ … ローカルでは動作するが、ステージング/本番環境では失敗します。環境変数、機能フラグ、DB の状態を確認します。

古いキャッシュ … 古いデータが表示され、キャッシュをクリアすると直ります。Redis、CDN、ブラウザーキャッシュを確認します。

次も確認します:

  • 関連する問題について、プロジェクト内の既知の問題
  • 同じ領域で過去に修正が行われていないか、Git のログ。同じファイルでバグが繰り返し発生するのは偶然ではなく、アーキテクチャ上の問題です。

外部検索: バグが既知のパターンに当てはまらない場合は、エラーの種類をオンラインで検索します。先にサニタイズします: ホスト名、IP、ファイルパス、SQL、顧客データを削除します。生のメッセージではなく、エラーのカテゴリを検索してください。


フェーズ 3:仮説の検証

修正をひとつでも書く前に、仮説を検証します。

  1. 仮説を確認します: 根本原因と疑われる箇所に、一時的なログ出力、アサーション、またはデバッグ出力を追加します。再現手順を実行します。証拠は仮説と一致していますか?

  2. 仮説が間違っている場合: エラーを検索します(先に機密データをサニタイズします)。フェーズ 1 に戻り、さらに証拠を集めます。推測してはいけません。

  3. 3 回で打ち切るルール: 3 つの仮説が失敗したら、停止してください。ユーザーに次のように伝えます:

    「3 つの仮説を検証しましたが、どれも一致しません。単純なバグではなく、アーキテクチャ上の問題である可能性があります。」

    選択肢:

    • 新しい仮説で調査を続ける(仮説を説明する)
    • 人によるレビューにエスカレーションする(システムに詳しい人が必要です)
    • ログを追加して待つ(対象領域に計測を追加し、次回発生時に捕捉します)

危険信号 … 次のいずれかを見つけたら、慎重に進めてください:

  • 「とりあえずの簡易修正」 … 「とりあえず」はありません。正しく修正するか、エスカレーションしてください。
  • データの流れをたどる前に修正を提案する … 推測にすぎません。
  • 修正のたびに別の場所で新たな問題が見つかる … コードではなく、レイヤーが間違っています。

フェーズ 4:実装

根本原因が確認できたら:

  1. 症状ではなく、根本原因を修正します。 実際の問題を解消する、最小限の変更にします。

  2. 差分を最小限にします: 変更するファイルと行数をできるだけ少なくします。隣接するコードのリファクタリングは控えてください。

  3. リグレッションテストを書きます。テストは次の条件を満たす必要があります:

    • 修正なしでは失敗する(テストに意味があることを証明します)
    • 修正ありでは成功する(修正が機能することを証明します)
  4. テストスイート全体を実行します。 リグレッションは許されません。

  5. 修正が 5 ファイルを超える場合: 先に進む前に、影響範囲が広いことをユーザーに伝えてください。バグ修正としては大規模です。


フェーズ 5:検証とレポート

新たに検証する: 元のバグが発生した状況を再現し、修正されていることを確認してください。これは必須です。

テストスイートを実行してください。

構造化されたデバッグレポートを出力してください。

デバッグレポート

  • 症状: ユーザーが確認した現象
  • 根本原因: 実際に何が問題だったか
  • 修正: ファイルへの参照を含む変更内容
  • 証拠: テストの出力、修正が機能することを示す再現結果
  • 回帰テスト: 新しいテストの場所
  • 関連事項: 同じ領域の過去のバグ、アーキテクチャに関する注記
  • ステータス: DONE | DONE_WITH_CONCERNS | BLOCKED

今後のセッションで参照できるよう、今日の日付を付けてレポートを memory/ に保存してください。


重要なルール

  • 修正を 3 回以上試みて失敗した場合:作業を止め、アーキテクチャを見直してください。 仮説が間違っていたのではなく、アーキテクチャが間違っています。
  • 検証できない修正は適用しないでください。 再現して確認できない場合は、リリースしないでください。
  • 「これで修正されるはずです」とは絶対に言わないでください。 検証して証明してください。テストを実行してください。
  • 修正対象のファイルが 5 個を超える場合: 作業を進める前にユーザーに伝えてください。
  • 完了ステータス:
    • DONE ... 根本原因を特定し、修正を適用し、回帰テストを作成し、すべてのテストに合格
    • DONE_WITH_CONCERNS ... 修正済みだが、完全には検証できない(例:断続的に発生するバグ、ステージング環境が必要)
    • BLOCKED ... 調査しても根本原因が不明で、エスカレーション済み

コメント