🦙
リポジトリ全体を1ファイルにまとめてLLMに投げる
とりあえず成果物
タイトル通りです.
cursorが使える場合は@codebaseした方が楽ですが,私自身がvimユーザかつavante.nvimの使用感がまだイマイチだったりするのでまるごとgpt/claudeなどLLMにブラウザ上で放り込みたい時があります.
何番煎じかわからないですが,コマンドとしてどこでも使えるものが欲しかったので作りました.
完全に以下をリスペクトしています.
- https://github.com/mpoon/gpt-repository-loader
- https://github.com/Olemi-llm-apprentice/generate-project-summary
使い方
インストール
Python製です.
Python 3.10以上がインストールされている環境で以下を実行します:
pip install repod-cli
コマンド
とりあえず
cd /path/to/your/repo
repod # デフォルトでカレントディレクトリ以下の内容を./repod.mdに出力する
または、
repod /path/to/your/repo
オプション
repod [OPTIONS] [REPO_PATH]
Options:
-o, --output FILE 出力ファイルのパス(default: repod.md)
-i, --ignore-file FILE 除外パターンファイル(default: .rpdignore)
-p, --preamble FILE プリアンブルファイルのパス
--no-tree ツリー構造の出力を無効化
デフォルトの除外パターン
repodは以下のようなファイルやディレクトリをデフォルトで除外します:
- バージョン管理関連(
.git
,.gitignore
) - キャッシュファイル(
__pycache__
,*.pyc
) - 仮想環境(
.venv
) - バイナリファイル(
*.png
,*.jpg
) - ビルド成果物(
*.whl
,*.tar.gz
)
これらに加えて, .rpdignore
ファイルで独自の除外パターンを追加できます.
.gitignoreみたいな書き方をしてください.
使用例
試しにrepod
のソースコードを1ファイルに出力するとこんな感じになります.
# Repository Content Dump
This document contains a dump of a repository's contents. The structure is as follows:
1. Repository Structure (tree format)
2. File Contents (each file with its path and content)
## Repository Structure
├── .git/
├── .github/
├── .python-version
├── .venv/
├── LICENSE
├── README.md
├── dist/
│ └── .gitignore
├── pyproject.toml
└── src/
└── repod/
├── __init__.py
├── __pycache__/
├── cli.py
├── core.py
└── py.typed
## File Contents
### LICENSE
MIT License
...
以下各ファイルが続く
まとめ
シンプルなコマンドツールとしてほしかったので満足です.uv tool install
すればどこからでも使えて便利.いっぱいトークン使いたい.
※長大なプロジェクトやホームディレクトリとかで使うと処理がやばそうなので注意してください.
Discussion