はじめに
最近、ChatGPTなどの対話型AIにソースコードをレビューしてもらったり、質問を投げたりする場面が増えています。
しかし、複数ファイルにまたがるコードをまとめてAIに共有するには、なかなか手間がかかるものです。
「reprom」は、その手間を少しでも減らす目的で作った小さなCLIツールです。
プロジェクトのディレクトリツリーとファイル内容を一括でMarkdownに出力してくれるので、AIへの共有がしやすくなります。
名前の由来は、「repository」と「prompt」を掛け合わせたものです。
GitHub: KeisukeNagakawa/reprom
どんなときに役立つか
- AIにコードレビューを依頼したいけれど、ファイルが分散していてコピー&ペーストが面倒
- ディレクトリ構成と主要なソースをまとめて見せたいとき
- 人に見せる際にも、構成を整理して一つの資料にできる
インストール
プロジェクト配下でインストールするケースが多いと思います。グローバルでも動きますが、バージョン管理の観点からローカルに入れる方が個人的にはおすすめです。
npm install --save-dev reprom
あるいは
yarn add --dev reprom
使い方
1. 設定ファイル(YAML)の作成
ルートディレクトリなどに reprom.config.yaml
を用意します。
最低限、出力するファイルの範囲や出力先を設定します。
configs:
- name: "sample"
preText: |
これはサンプル設定で出力したMarkdownです。
postText: |
以上で出力は終わりです。もし何か質問があればお知らせください。
targets:
include:
- "src"
- "bin"
exclude:
- "**/node_modules"
filePatterns:
- "**/*.ts"
- "**/*.js"
tree:
maxDepth: 5
directoriesOnly: false
output: "file"
設定内容の例
-
configs
: 設定を複数書いておける -
name
: CLI実行時に使う識別子 -
preText
/postText
: 出力の頭と末尾に挿入する任意のテキスト -
targets
:-
include
: 取り込みたいディレクトリ・パス -
exclude
: 除外したいパス -
filePatterns
: 対象とするファイルのパターン(例:**/*.ts
など)
-
-
tree
:-
maxDepth
: ディレクトリツリーの表示を何階層までにするか -
directoriesOnly
: trueにするとディレクトリだけ表示する(ファイルを非表示)
-
-
output
:"file"
または"clipboard"
-
"file"
: Markdownファイルとして出力 -
"clipboard"
: クリップボードにコピーして終わる(ファイル生成なし)
-
2. CLI実行
設定ファイルを読み込み、適切な設定を呼び出して実行します。
npx reprom --config=reprom.config.yaml --name=sample
コマンドのオプション:
-
--config
: YAMLファイルのパス。指定しなければreprom.config.yaml
を探しにいく -
--name
: 上で定義した設定名 (例:"sample"
)
3. 出力を確認
-
output: "file"
の場合、たとえばreprom-sample.md
といったファイルが生成されます。 -
output: "clipboard"
の場合はファイルが作られず、Markdownがそのままクリップボードにコピーされます。
動作イメージ
ファイル出力例
npx reprom --config=reprom.config.yaml --name=sample
コンソールには合計文字数と出力先が表示されます。
Total characters: 8541
Exported to reprom-sample.md for configuration "sample"
生成された reprom-sample.md
の中身は以下のようになります:
これはサンプル設定で出力したMarkdownです。
# Directory Structure
src
├── index.ts
└── utils
└── helper.ts
bin
└── reprom.js
# File Contents
## src/index.ts
(実際のコード)
## src/utils/helper.ts
(実際のコード)
(該当するファイルが続く…)
以上で出力は終わりです。もし何か質問があればお知らせください。
クリップボード出力例
npx reprom --config=reprom.config.yaml --name=review
Total characters: 12004
Markdown has been copied to your clipboard for configuration "review".
あとはペーストすると、ディレクトリ構成とファイル内容のMarkdownがそのまま貼り付けられます。
特にChatGPTのようなAIにコードを見せるときに便利です。
もう少し込み入った使い方
- 複数の
configs
を同一YAML内に書いておいて、用途(コードレビュー用、ドキュメント用など)で使い分け- これはかなり便利。monorepoでコード量が多い場合に、レビューしたい観点だけで絞り込むことができます。
-
filePatterns
を拡張して**/*.json
や**/*.yaml
なども取り込み、設定ファイルまでまとめて投げる
まとめ
repromは、repositoryのコードをprompt用のMarkdownとしてまとめる、小さなCLIツールです。
複数ファイルをAIに共有する際の手間をいくらか省くことが目的で、基本的には簡素な作りになっています。
もし興味があれば下記リポジトリを覗いてみてください。
必要に応じて、ご自分のプロジェクトに合わせて設定をカスタマイズしてみてください。
何か不具合や要望があればIssue等で教えていただけると助かります。