code2prompt について
code2promptは、CLIで選択したファイルをマップし、関連するソースとテストをまとめて読むコーディングエージェント向けのコードベース探索スキルです。範囲を絞ってコンテキストを再利用し、コードベース全体の反復スキャンを避けます。
主な機能
- 01コードベースのマップとファイル選択
- 02オプション機能によるエンティティマップ
- 03ソースとテストの一括読み込み
- 04コンテキスト量に応じたワークフロー
活用シーン
- 01不慣れなコード領域の探索
- 02関連テストと実装の確認
- 03対象を絞ったレビュー用のファイル選択
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ mufeedvh/ code2prompt --skill code2promptインストール後、Claude Code で/code2promptを入力して読み込まれたか確認します。
同梱ファイルassets/code-map.hbs
詳細
Code2Prompt
code2prompt を使って、リポジトリのコンテキストをローカルで走査、絞り込み、解析、組み立てます。
コンパクトな構造マップで関連ファイルを選び、その実装とテストを一緒に読みます。広範囲を調べる際に find、rg --files、個別ファイルの読み取りを繰り返すより、この方法を優先してください。
最短で役立つワークフローを選びます。
- 関連するパスが分かっている場合は、グループ化したソースの読み取りに直接進みます。
- 不慣れな領域の場合は、エンティティマップを一度作成し、そこにあるパスとシンボルを使ってグループ化した読み取り対象を選びます。関連するソースファイルが変わるまでは、同じマップを再利用します。
- 対象範囲が小さい場合は、マップを作るよりソースを直接読むほうが効率的なことがあります。
- エンティティ抽出を利用できない場合は、代わりにディレクトリマップを使います。
タスクとコンテキストの予算に合わせて範囲を調整します。質問のたびにリポジトリ全体を再スキャンしたり、関連領域を特定する前にすべてのソースを出力したりしないでください。
CLI のインストール
読み取りのたびではなく、環境ごとに一度だけ利用可能か確認してください。
code2prompt --version
code2prompt --help
sem を利用したエンティティマップには、オプションの entity-map 機能を有効にしてビルドした CLI を使用します。Rust/Cargo を利用できる場合は、code2prompt リポジトリからビルドしてください。
cargo install --git https://github.com/mufeedvh/code2prompt \
--locked --features entity-map code2prompt
通常のディレクトリマップとソースの読み取りには、標準インストールで十分です。
# Choose one available package manager:
cargo install code2prompt --locked
brew install code2prompt
既存の CLI は、機能なしでビルドされていてもヘルプに --entity-map を表示することがあります。その場合、抽出結果は空になります。この機能を有効にしたビルドができない場合やタスクに不要な場合は、通常のソース読み取りを続けてください。設定が必要な別個の sem 実行ファイルやサービスはありません。code2prompt は内部で sem-core を使用します。
GitHub リリースから、ビルド済みバイナリを入手できます。
このスキルをインストールすると手順が追加されます。CLI は別途インストールしてください。
pip install code2prompt-rs でインストールされるのは Python SDK であり、CLI ではありません。
不慣れな領域のマッピング
調査対象のリポジトリから実行します。以下の例のパスとパターンは、実際のレイアウトに置き換えてください。CODE2PROMPT_SKILL_DIR には、インストール済みの SKILL.md があるディレクトリの絶対パスを設定します。バンドルされているテンプレートは assets/code-map.hbs です。これはスキルのリソースであり、分析対象のリポジトリにあるファイルではありません。
ソース領域とそのテストの場合:
code2prompt . --include 'src/**' --include 'tests/**' \
--exclude '**/*.snap' --entity-map \
--template "$CODE2PROMPT_SKILL_DIR/assets/code-map.hbs" \
--output-file - --quiet
レイアウトが分からない場合は、include を省略して生成物やベンダーのパスを除外するか、先にディレクトリマップを作成します。テンプレートには、選択したファイルのパスと、抽出したエンティティ(名前、種類、宣言スニペット、親の名前、行の範囲)が一覧表示されます。ファイルの内容全体は出力されません。デフォルトのテンプレートで --entity-map を指定した場合は出力されます。宣言スニペットはエンティティの最初の行で、インラインコードを含むことがあります。マップを有用な状態に保つため、生成ファイルや最小化ファイルは除外してください。
エンティティ抽出と --exclude '**' または --deselected を組み合わせないでください。code2prompt が解析するには、ファイルが選択されている必要があります。
(no extracted entities) は、抽出結果がなかったか、バイナリに機能がないことを示します。ファイルによっては宣言ではなく汎用の chunk エントリが生成されます。この場合、テンプレートには内容のスニペットなしで行の範囲が表示されます。いずれの場合も、そのファイルが無関係であることを意味するわけではありません。必要に応じて、マニフェストやドキュメントなどのファイルを直接読んでください。このマップは依存関係グラフでも意味検索でもありません。
ファイルの内容を含めない、代替のディレクトリマップ:
code2prompt . --full-directory-tree --exclude '**' --output-file - --quiet
完全なツリーでは、除外したパスも表示されます。ただし、ignore ルールに従い、デフォルトでは隠しエントリをスキップします。このツリーを縮小するには、サブディレクトリを分析してください。include/exclude パターンでは、完全なディレクトリツリーを刈り込めません。
選択したコンテキストをまとめて読む
関連する実装とテストを、行番号付きで読み込みます:
code2prompt . --include 'src/auth/**' --include 'tests/auth/**' \
--exclude '**/*.snap' --line-numbers --output-file - --quiet
パスが分かっている特定のファイルを少数だけ読み込みます:
code2prompt . --include 'README.md' --include 'src/auth/session.ts' \
--line-numbers --output-file - --quiet
マップを使って、実装候補、その呼び出し元やインターフェース、関連するテストを1回のリクエストで収集します。返されたソースから依存関係の不足が判明した場合や、具体的な疑問が未解決のまま残る場合にのみ、別のバッチを追加します。出力が大きすぎる場合や途中で切り詰められた場合は、選択範囲を絞ります。
大きなファイル内の完全一致や短い行範囲を対象にする場合は、適切なテキスト検索ツールまたはファイル読み取りツールを使います。code2prompt はパスでファイル全体を選択します。シンボル検索や行範囲を指定する CLI セレクターはありません。
便利な設定
- シェルによる展開を避けるため、glob パターンは引用符で囲みます。パターンは解析対象のディレクトリを基準とします。複数のパターンを指定する場合は、
--includeと--excludeを繰り返し使います。言語を指定するには**/*.rs、サブツリーを指定するにはsrc/**を使います。 - 設定でクリップボード出力が既定になっている場合も含め、プロンプトを標準出力に明示的に送るには
--output-file -を使います。進行状況と概要のメッセージを抑制するには--quietを使います。自動化されたエージェントのワークフローでは--tuiを避けてください。 - 構造化出力にするには
--output-format jsonを追加します。結果が大きい場合は、--output-fileで解析対象ディレクトリの外にある一時ファイルへ出力し、そのファイルを読み込みます。標準エラーに推定トークン数を表示するには、--quietを省略します。現在の推定値は、本文を省略するテンプレートを使う場合も、選択されたファイルの内容を含みます。これをコンパクトなマップの実際のトークン数と解釈しないでください。 - 隠しファイルには
--hiddenが必要です。無視対象のファイルには--no-ignoreが必要です。通常の調査では既定の無視動作を維持し、追加のファイルは include パターンで明示的に対象にしてください。 - 出力が要求した範囲と異なる場合は、どの設定が読み込まれたかを確認するため、
--quietを付けずに再実行します。CLI は作業ディレクトリから.c2pconfigを読み込み、見つからない場合はプラットフォームのユーザー設定ディレクトリを参照します。CLI で include または exclude パターンを指定すると、設定済みの両方のパターンリストが置き換えられます。また、設定のpathによって、位置引数で指定したディレクトリが上書きされる場合があります。
その他のオプションについては、CLI ガイドを参照してください。