Codebase exploration
未知・不慣れなコードベースを目的志向で効率よく理解するスキル。機能追加・バグ修正・レビューの前に全体構造と暗黙の規約を把握したいとき、または変更の影響範囲を事前に調査したいときに使う。From its SKILL.md
npx -y skills add tdyzzsp47/claude-skills --skill codebase-explorationAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
9.9 KB, ~3.8k tokens by cl100k_base, as published. Nobody here has run it
コードベース探索・理解
目的
- 「全部理解してから着手する」は不可能かつ不要。目的に応じた範囲を素早く深く理解する
- 暗黙の規約・設計上の前提を帰納的に抽出し、既存スタイルと一貫した変更を行えるようにする
- 調査結果を記録し、次の調査者(将来の自分を含む)の時間を節約する
使うタイミング
- 初めて触るリポジトリに着手するとき
- 機能追加・バグ修正の前に構造と規約を把握したいとき
- 変更が広範な影響を持つ可能性があり、事前に影響範囲を調べたいとき
- コードレビューで変更の文脈を理解したいとき
進め方
- 目的を定義する — 「何のために読むか」を一文で書く。目的なしに読み始めると端から全ファイルを読む罠に落ちる
- ドキュメントから始める(ただし鵜呑みにしない) — README・CLAUDE.md・docs/ を読む。コードとの乖離を前提に、仮説として受け取る
- ディレクトリ構成とパッケージ定義を読む —
package.json/go.mod/Cargo.toml等で技術スタック・依存ライブラリを把握。ディレクトリ名から層の分け方を読む - エントリポイントを辿る —
main.*・ルーティング定義・CLIコマンドの登録箇所を探し、アプリの全体像を掴む - データモデルを確認する — DBスキーマ・主要エンティティ・型定義を読む。アプリの語彙(ドメイン用語)はここに凝縮されている
- 代表的な1機能を縦に追う — リクエスト受付→バリデーション→ビジネスロジック→DB→レスポンスの流れを1本通しで追う
- 動かして確認する — セットアップしてテストを実行する。テストは最も正直なドキュメント。ログ・デバッガで実際の実行パスを確認する
- 規約を帰納する — 類似した実装を3つ探し、命名・層の分け方・エラー処理・テストの書き方の共通パターンを抽出する。1つだけ見ると例外かもしれない
- git履歴を参照する — 最近頻繁に変更されているファイルは重要か問題児。
git blameで「なぜこうなったか」のコミットを辿る - 調査メモを記録する — わかったこととわからないことリストを両方管理する([[session-handoff]])
変更前の影響調査
機能追加・修正・リファクタリングの前に必ず実施する。
- 呼び出し元を全件検索する — 変更対象の関数・型・定数・設定キーを
grep/ LSP の「参照を検索」で網羅的に列挙する - 公開インタフェースか内部実装かを区別する — 公開APIや共有ユーティリティ・型の変更は波及範囲が広い。内部の private 関数は影響が狭い
- テストの有無を確認する — 対象コードにテストがない場合は、変更前に特性テスト(現状の振る舞いを固定するテスト)を書く([[refactoring]])
- 依存方向を確認する — 変更先が他のモジュール・サービスに依存されていないか、インタフェース契約を壊さないかを確認する
- 影響ファイル一覧を成果物に含める — 調査メモの「影響範囲」セクションに列挙し、レビュアーと共有する
成果物テンプレート
# コードベース調査メモ
作成日: YYYY-MM-DD
調査目的: (例: ユーザー通知機能の追加前に通知周辺の構造を把握する)
## 技術スタック
- 言語/FW:
- 主要ライブラリ:
- DB:
- テストFW:
## ディレクトリ構成の要点
src/ api/ # ルーティング・ハンドラ domain/ # ビジネスロジック・エンティティ infra/ # DB・外部API接続 ...
## 主要データモデル
- User: id, email, role, created_at
- Order: id, user_id, status, items[]
- (ドメイン用語として重要な型を列挙)
## 追った機能フロー
例: 注文作成 POST /orders
1. api/orders.go → バリデーション
2. domain/order_service.go → 在庫チェック・価格計算
3. infra/order_repo.go → DBへINSERT
4. イベント発行 → 通知サービスへ非同期送信
## 抽出した規約
- 命名: エンティティはドメイン層、リポジトリは infra 層で定義
- エラー処理: domain はドメインエラー型を返す。api 層でHTTPステータスにマップ
- テスト: ユニットテストは *_test.go、モックは testify/mock
- その他:
## 影響範囲(変更前調査)
変更対象: `domain/user.go` の `UpdateEmail()`
呼び出し元:
- api/users.go:L42
- domain/auth_service.go:L89
- tests/user_test.go:L15
## リスク箇所・注意点
- OrderService が UserService に直接依存しており循環依存に近い
- 設定ファイルが複数環境で共有されている(変更時に全環境へ影響)
## わからないことリスト
- [ ] NotificationService が同期か非同期か不明
- [ ] staging 環境での email 送信がどこで抑制されているか未確認
- [ ] マイグレーションの実行タイミング(デプロイ前/後)
チェックリスト
- 調査目的を一文で定義した
- ドキュメントを「仮説」として読み、コードで検証した
- データモデル(スキーマ・主要エンティティ)を確認した
- 1機能をリクエストからレスポンスまで縦に追った
- 類似実装を3つ見て規約を帰納した
- テストを実行して動作を確認した
- git履歴で変更頻度の高いファイルを確認した
- 変更前に呼び出し元を全件検索した
- テストがない対象には特性テストを書いた
- 「わかったこと」と「わからないことリスト」を両方記録した
- 調査メモをCLAUDE.mdまたはREADMEに還元した
アンチパターン
- 端から全ファイルを読む: 目的なしに読み始めると無限に読み続ける。目的→スコープを先に決める
- READMEを鵜呑みにする: 陳腐化していることが多い。コードで検証するまでは仮説扱い
- 動かさずに読むだけ: 静的読解は誤読しやすい。テストを実行し、ログで実際の経路を確認する
- 調査結果をメモしない: 数日後に再調査する羽目になる。10分のメモで1時間を節約できる
- 1例だけ見て規約と思い込む: 例外かもしれない。3例見て共通パターンを抽出する
- 影響範囲を感覚で見積もる: grep せずに「ここしか使われていないだろう」と決め込むと見落とす
- 「わからないこと」を放置する: 曖昧なまま実装すると手戻りが大きい。リストに上げて早期に解消する
モデル委譲ガイド
共通原則は [[orchestration]] を参照。
| 役割 | タスク例 |
|---|---|
| 司令塔(メインモデル) | 調査目的の定義・調査範囲の判断・サブエージェントへの指示書作成・調査結果の統合と矛盾解消・調査メモの最終化 |
| Opus相当 | アーキテクチャ上の問題・設計意図の推察・複雑な依存関係の整理・リスク箇所の深堀り分析 |
| Sonnet相当 | コードベース調査の主力実働(ディレクトリ構成把握・機能フロー追跡・規約抽出・影響範囲調査) |
| Haiku相当 | ファイル検索・grep・依存グラフの収集・呼び出し元の列挙・git log/blame の実行 |
観点別ファンアウトの例
調査範囲が広い場合は以下の4観点でサブエージェントを並列起動し、司令塔が統合する。
# 司令塔が以下を並列起動する
Agent(API層担当, Sonnet相当):
「src/api/ 配下のルーティング定義・ハンドラ・バリデーション・エラーマップを調査し、
エンドポイント一覧と共通パターンを報告せよ。」
Agent(データ層担当, Sonnet相当):
「DBスキーマ・マイグレーションファイル・リポジトリ層の実装を調査し、
主要エンティティとCRUDパターンを報告せよ。」
Agent(テスト担当, Haiku相当):
「テストファイルの構成・テストヘルパー・モックの使い方を調査し、
テストの書き方の規約を報告せよ。」
Agent(設定・インフラ担当, Haiku相当):
「環境変数・設定ファイル・docker-compose・CI設定を調査し、
実行環境の構成と環境差異を報告せよ。」
# 全エージェント完了後、司令塔が統合
- 各層の規約・命名規則を横断的に確認し矛盾を解消する
- 「わからないことリスト」を集約し、優先度をつける
- 成果物テンプレートに従い調査メモを完成させる
関連スキル
- [[orchestration]] — 並列調査のファンアウト共通原則
- [[session-handoff]] — 調査メモの引き継ぎ・セッション間の知識継続
- [[documentation]] — 調査結果をCLAUDE.md・READMEに還元する
- [[refactoring]] — 変更前の特性テスト作成・技術的負債の把握
- [[debugging]] — バグ修正目的の調査で発見した問題箇所の深堀り
- [[code-review]] — レビュー文脈での変更意図の把握
- [[architecture-design]] — 把握した構造の設計上の評価
- [[implementation]] — 調査を経た上での機能追加・修正の実施
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.