<< All versions

Skill v1.0.0

currentAutomated scan100/100
bwkw/dotagents/da-investigate
──Details
PublishedSeptember 26, 2026 at 06:11 PM
Content Hashsha256:de2d7d902a44eee5...
Git SHA
──Files
Files (1 file, 7.2 KB)
SKILL.md7.2 KBactive
SKILL.md · 132 lines · 7.2 KB

version: "1.0.0" name: da-investigate description: 変更が何に波及するかを洗い出す、または実際の動き方を追う。どこにあるか、何が依存しているか、何が壊れるかを聞かれた時に使う。決まった探索予算の中で file:line の根拠つきで答え、確かめられなかったことも明示する。読み取り専用。 argument-hint: "答えてほしい問い" allowed-tools: Task, Read, Grep, Glob, Bash(git:), Bash(rg:), Bash(gh:*) metadata: source: bwkw/dotagents


/da-investigate — 問いに答えて止まる

調査の失敗は 2 つある。もっともらしい推測で早く止まることと、境界なく読み続けて作業前にコンテキストを埋めることである。 前者は読む前に宣言するスコープ契約で、後者は答えが揃わなくても探索を終わらせる数値の予算で防ぐ。

このスキルは何も変更しない。読み取り専用で、読んで報告するだけ。

実行条件

条件満たさない場合
答えるべき具体的な問いがある止まる。「認証モジュールを調べて」は問いではない。答えが何の判断に使われるかを聞く(それが止めどきを決める)

ワークフロー上の位置

上流このスキル下流
問い、または計画の開始/da-investigate/grilling, /writing-plans, /da-design-review

読むファイル

常に読む

ファイル理由
${CLAUDE_SKILL_DIR}/reference/evidence-rules.md見つけたこと・見なかったことの報告の仕方

条件つきで読む

ファイル条件
CLAUDE.md, AGENTS.md問いが仕組みではなくプロジェクトの規約に関わる時

レポートはユーザーが書いている言語で書く(不明なら日本語)。パス・識別子・コマンド・コード片・ログは原文のまま残す。

Step 1. スコープ契約を宣言する(何か読む前に)

次をユーザーに示す。

  • 問いを正確に言い直したもの
  • 答えが使われる判断。これが「十分」の基準になる。「テナントの絞り込みはどこで掛かるか」は、セキュリティレビューなら全箇所、概観なら代表 1 箇所でよい
  • 答えるために読むものと、おおよその量
  • 意図して読まないもの

問いが実は複数なら、そう言ってどれが重要かを聞く。黙って全部に答えない。

Step 2. 広く安いものから探す

段を順に上げる。最も高い段から始めない。

段道具答えること
1完全一致の文字列・シンボル・識別子を rgこの文字列はどこにあるか
2構造パターンの rg、あれば ast-grepこの形のコードはどこにあるか
3LSP / 定義ジャンプ(環境にあれば)本当に誰が呼び、誰が実装しているか
4ファイル全体を読む実際どう動くか

たいていの問いは 1〜2 段で答えが出る。ファイルを読むのは最後の段。「X はどこか」のために 5 つ目のファイルを開いているなら、悪いのは予算ではなく検索語である。

独立した部分を持つ広い問いは、部分ごとに x-codebase-explorer サブエージェントを並列で起動し(1 メッセージで同時に)、結果を統合する。各サブエージェントに予算を割り振る。読んだ中身はサブエージェント側に残り結論だけが戻るので、調査はサブエージェントの最良の使い道である。x-codebase-explorer はこのツールキットがグローバルに入れており、読み取り専用の制約と「確認済み / 推論 / 未確認」の区別を自分の定義に持つ。

否定を報告する前に、反証を試みる

「これに依存するものは無い」「呼び出し元はここだけ」「この値はどこでも使われていない」。否定は最も間違えやすく、それを根拠に変更が入るので害も最も大きい。断言する前に、別の語彙でもう一度探す。

  • シンボルの別名 — エイリアス、再エクスポート、改名された import
  • 間接的な到達 — 動的ディスパッチ、リフレクション、レジストリ、文字列キー、DI
  • 文字列から組み立てる参照 — 連結、テンプレートリテラル、実行時に組み立てる名前
  • コード以外の呼び出し元 — 設定、マイグレーション、シード、CI ワークフロー、IaC テンプレート

そのうえで試した語彙を書く。書かなければ「証拠が無い」を「無いことの証拠」として報告したことになる。追加 1 ラウンドで済み、予算の中で最も価値の高い使い方である。

Step 3. 予算を守る

ファイル読み 25 回、検索の絞り込み 3 ラウンド。サブエージェントを含めた 1 調査あたり。

使い切ったら止まって報告する。黙って続けない。未検証のものと、次の 25 回で何を読むべきかを書く。境界が分かっている部分回答は使えるが、黙って途切れた回答は使えない。

予算を上げるのはユーザーが求めた時だけで、上げたことを明示する。

Step 4. 報告する

${CLAUDE_SKILL_DIR}/reference/evidence-rules.md に従う。

markdown
## <問い>
### 答え
最初に、直接。2〜5 文。探した経緯の説明ではない。
### 根拠
| 主張 | 場所 | 確認 |
|---|---|---|
| テナントの絞り込みは Repository 層で掛かっている | `src/foo/bar.repository.ts:L42` | 直接読んだ |
| バッチの経路も同じ絞り込みを通る | `src/batch/sync.ts:L88` | 直接読んだ |
| 管理画面の経路も同じ | — | **未確認** —— 予算に達した |
### 確認していないこと
-暗に済ませず、名前を挙げる。「X は見ていない」は情報で、黙っていることは情報にならない。
### 確度
何が事実で、何が推論か。残りを確かめるには何が要るか。

完了条件

  • [ ] 答えが最初にあり、聞かれた問いに答えている
  • [ ] すべての主張に file:line があるか、未確認と明示されている
  • [ ] 調べていない範囲が名指しされている
  • [ ] 事実と推論が見て分かる形で分かれている
  • [ ] すべての否定の主張に、断言前に試した語彙が書かれている

アンチパターン

網羅した気になるために読む。そのファイルがどの主張を支えるか言えないなら開かない。

聞かれたより大きな問いに答える。1 行の変更に波及範囲の地図は無駄。スコープ契約はこれを防ぐためにあるので、正直に書く。

穴をぼかした文で隠す。「絞り込みはおそらく掛かっているようだ」は「未確認: 管理画面の経路は読んでいない」より悪い。ぼかしは答えに見えて答えではない。

All versions