Repo Snapshot for AI — プロジェクト構造を AI に渡す
tree / find / fd の出力を貼り付けると、AI コーディングアシスタント (Claude Code / Cursor / GPT 等) に渡しやすい整形済 Markdown に変換。除外パターン、ファイルサイズ・行数表示、拡張子別グルーピング、深さ制限、トークン数推定。
📋 入力の取り方 (シェルコマンド例)
# 王道: tree (推奨、見やすい) tree -L 3 -I 'node_modules|.git|dist' # tree が無いとき: find find . -type f -not -path '*/node_modules/*' -not -path '*/.git/*' | sort # rust 製の高速版: fd fd --type f --hidden --exclude node_modules --exclude .git # Mac/Linux 標準: ls -R ls -R # Windows PowerShell Get-ChildItem -Recurse -File | Select-Object FullName
📖 つまずきやすいポイント
tree や find の出力を貼り付けると、除外パターン・最大深さ・最大ファイル数を適用して、AI に渡しやすい Markdown に整形します。概算トークン数も表示され、処理はブラウザ内で完結します。ファイル一覧は「どこを見ればいいか」を尋ねるための材料であって、それ自体が答えを含んでいるわけではありません — ファイル名から中身は分からないので、構造だけを渡して具体的な実装の質問をしても、精度の高い答えは返ってきません。
| ケース | 何が起きるか | どうする |
|---|---|---|
| トークンを一覧だけで使い切る | 除外を設定しないまま tree を取ると、node_modules・.git・vendor・dist・.next が丸ごと入り、数十万トークンになります — それだけでコンテキストの上限を超えるので、肝心の質問と関連コードを入れる余地が無くなります。仮に収まったとしても状況は良くなりません — 関係の無いファイルが大量に混ざると、モデルが注目すべき箇所が薄まり、回答の精度がむしろ下がります。「全部渡せば全部考慮してくれる」というのは成り立たず、情報を増やすほど良くなるわけではありません。 |
除外パターンを最初に設定してください — node_modules・.git・dist・build・vendor・*.lock は、ほぼどのプロジェクトでも外して問題ありません。そのうえで、より効くのは「そもそも全体を渡さない」ことです — 質問が認証まわりなら src/auth/ と src/middleware/ の一覧だけで十分で、範囲を絞ったほうが回答の質も上がります。最大深さを 2〜3 に設定すると、ディレクトリの役割分担だけが見える一覧になります — 全体像を共有したいときはこれで足り、深い階層のファイル名は、そこを見ると決まってから改めて渡せば十分です。概算トークン数は、渡す前にこの判断をするために表示しています。 |
| 構造だけ渡して具体的な答えを期待する | ファイル名は、そのファイルが何をしているかを教えてくれません。utils.ts の中身は分かりませんし、UserService.php にどんなメソッドがあるかも分かりません。したがって「このバグの原因はどこですか」という質問に構造だけで答えることはできず、返ってくるのは「おそらくこのあたりでしょう」という推測になります。推測が具体的な断定の形で返ってくると、それを検証せずに信じてしまいやすいのがこの使い方の危うさで、存在しない関数名や、実際とは違う責務の説明が混ざることがあります。 |
構造は「どこを見るべきか」を尋ねるために使い、その答えを受けて該当ファイルの中身を渡してください — この 2 段階が、実際にいちばん精度が出る使い方です。1 回目の質問は「認証の流れを追うにはどのファイルを見ればよいですか」のような形にし、返ってきた候補のうち実在するものだけを開いて中身を渡します。構造だけで答えられる質問もあります — 「このディレクトリ構成はどの設計パターンに沿っていますか」「テストが置かれていないディレクトリはどれですか」「命名規則が揺れているのはどこですか」といった、ファイル名と配置そのものが答えになる問いです。質問がどちらの種類かを意識すると、構造だけを渡すべきか、中身も要るかが自然に決まります。 |
| ファイル名そのものが機密になっている | ディレクトリ構成は、コードの中身を出さなくても多くを語ります。acme-corp-migration/、2026-q3-layoff-tool/、client-nintendo/ といった名前は、それ自体が公開されていない事実を含んでいます。同じく、.env.production・credentials.json・id_rsa がリポジトリに存在するという情報は、それだけで攻撃者にとって有用です。さらに、tree の出力にはパスの先頭にユーザー名が含まれることがあります — /home/tanaka/projects/... や C:\Users\yamada\... という形で、個人名が混ざります。 |
貼り付ける前に、出力を上から下まで一度読んでください — 除外パターンは既知の名前しか消せないので、案件名やクライアント名は自分で見つけて置き換えるしかありません。実務的には、プロジェクトのルートで tree を取り、先頭のパスを削ってから貼るだけでユーザー名の問題は消えます。.env*・*.pem・*credential* は除外パターンに入れておいてください — 存在すること自体を伝える必要はまずありません。そして最も重要な確認として — AI に渡す前に、そのサービスの学習利用のポリシーと、自分の組織の規程を確認してください。有料の API 経由では通常は学習に使われませんが、無料の消費者向けサービスは設定次第で、社内コードの外部送信を禁じている組織は珍しくありません。 |
入力の取り方で結果が変わります。tree が最も読みやすく、罫線で階層が視覚的に分かるので AI にとっても人にとっても扱いやすい形です。tree が入っていない環境では find . -type f で代用できますが、この形式は 1 行が完全なパスになるため、階層が深いほど同じ文字列が繰り返され、トークンを余計に消費します — ファイル数が多い場合は、tree を導入するほうが結果的に安上がりです。fd を使うと .gitignore を自動的に尊重するので、除外パターンを書かなくても node_modules などが最初から入りません — これがいちばん手間が少ない方法です。最後に運用の助言を 1 つ — この一覧を毎回作り直すより、プロジェクトのルートに構造の説明を書いたファイル (ARCHITECTURE.md など) を置いておくほうが、長期的には効きます。ディレクトリの役割を 1 行ずつ書いた文書は、AI に渡すときにも、新しく参加した人にも、半年後の自分にも同じように役立ちます — そして、ファイル一覧と違って「なぜそう分かれているか」を書き残せます。
📖 使い方
-
1
シェルでツリーを取るtree / find / fd / ls -R などでプロジェクトのファイル一覧を出力してコピー
-
2
貼り付け + オプション調整除外パターン (node_modules 等)、最大深さ、最大ファイル数を設定
-
3
AI に貼って質問Claude Code / Cursor / GPT のチャットに整形済 markdown を貼って「このプロジェクトについて...」と質問
❓ よくある質問
tree が無い環境では?
ファイルが多すぎて貼れない
プライバシー?
トークン推定の精度は?
🐛 このツールで問題が発生しましたか?
完全無料・登録不要。再現手順だけでも結構です。届いたご報告は運営者に直接届き、修正の参考にします。
ご報告ありがとうございます!
運営者に届きました。改善の参考にさせていただきます。