investigation-notes について
バグ調査を行うコーディングエージェント向けの軽量なメモスキルです。注目点、仮説、コード読解やテストの結果を記録し、作業の重複や調査の脱線を抑えます。
主な機能
- 01注目点と仮説の記録
- 02コード読解とテスト結果の追跡
- 03同時に扱う仮説数の制限
- 04テストの作成と実行を優先
活用シーン
- 01複数の原因候補があるバグの調査
- 02テスト反復をまたいだ知見の記録
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ cloudflare/ workerd --skill investigation-notesインストール後、Claude Code で/investigation-notesを入力して読み込まれたか確認します。
詳細
調査メモ
概要
バグを調査する際は、外部メモとして軽量な作業用ドキュメントを維持してください。これにより、すでに分析したコードを読み直したり、検証中の仮説を見失ったり、知らないうちに寄り道へ逸れたりするのを防げます。
基本原則: 一度書き留めて、後から参照します。1行のメモを読み直すほうが、ソースコード200行を読み直すより速いです。
現在の作業対象、仮説、コードの読み取りやテストから得た知見を、常にドキュメントに反映してください。
コードを読み直したり新しい仮説を立てたりする前に、必ずドキュメントを参照してください。情報が記載されていれば、それを使います。不十分であればコードを読み、その後、より適切なメモを書きます。
ドキュメントの更新を、テストの作成や実行より優先してはいけません。 メモの更新とテストの作成で迷ったら、テストを書いてください。メモはその後に更新します。
ドキュメント
/investigate のステップ2(状況把握)で、~/tmp/investigate-<short-name>.md を作成します。
短い名前は、調査内容を特定できる程度に具体的なものにしてください(例:
investigate-concurrent-write.md、investigate-pipe-zombie-state.md)。
作成したらユーザーに知らせ、エディターで開けるようファイルパスを提示してください。
書式
# Investigation: <one-line bug description>
## Error
<assertion/crash message, file:line — written once, never changes>
## Current Focus
<single sentence: what you are doing RIGHT NOW>
## Hypotheses
1. [TESTING] <one sentence> — test: <test name or "not yet written">
2. [REJECTED] <one sentence> — disproved by: <one sentence>
3. [CONFIRMED] <one sentence> — evidence: <test name + result>
## Code Read
- `file:line-range` — <what you learned, short paragraph or bullet>
## Tests
- `file:line` "test name" — <result + what it means, one sentence>
## Ruled Out
- <thing you investigated and eliminated, one sentence why>
## Next
1. <concrete next action>
2. <fallback>
作成
次の場合はドキュメントを作成してください。
- 追跡する仮説が複数ある
- 3つを超えるファイルや関数を読んだ
- すでに読んだコードを読み直そうとしている
- テストの作成と実行を複数回繰り返す調査になる
作成時には、Error、Current Focus、現在の仮説、すでに得た知見を記入してください(これまでに行った作業に基づき、「Code Read」と「Tests」も補完してください)。
ルール
- 新しい作業に着手する前に、必ず「Current Focus」を更新してください
- 作業内容に対する仮説を必ず追加してください
- 重要なアクションの後は、必ずドキュメントを更新してください。
- 関数やファイルの一部を読んだ後 → 「Code Read」に追加します
- 仮説を立てたり棄却したりした後 → 「Hypotheses」を更新します
- テストを実行した後 → ほかの作業に着手する前に更新してください。 実行したテスト、その結果、現在の仮説に対する意味を記録します。これは譲れないルールです。30秒ほどの作業で、複数のテストを実行して何が証明されたかを見失い、コードを読むだけに戻ってしまう流れを防げます。
- 新しい作業に着手した後 → 「Current Focus」を更新します
- ドキュメントに大量のコードを貼り付けないでください。代わりに
file:lineで参照してください。 - ドキュメントの再構成や書式の変更はしないでください。これは報告書ではなく、作業用メモです。
- 理解や記憶に役立つ場合は、簡潔でシンプルな図を含めてもかまいません。
仮説の上限
- 同時に有効にできる仮説は最大3つです。4つ目を追加する場合は、先にいずれかを棄却するか、統合してください。
[TESTING]にできる仮説は同時に1つまでです。1つに絞ってテストし、結論を出してから次に進んでください。- すべての仮説には、テストまたは具体的なテスト作成計画が必要です。「さらに調査が必要」は有効な状態ではありません。分析麻痺にラベルを貼っただけです。
有効なステータス:
[UNTESTED]— 仮説を立てたが、まだテストしていない状態。すみやかに[TESTING]または[REJECTED]にしてください。[TESTING]— 現在テスト中の状態。同時に1つだけです。[CONFIRMED]— テストで予測どおりにバグが再現した状態。[REJECTED]— テストで反証された、または証拠によって除外された状態。その理由も記載してください。[SUPERSEDED]— より具体的な仮説に置き換えられた状態。置き換え先も参照してください。