1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Qiita100万記事感謝祭!記事投稿キャンペーン開催のお知らせ

「reprom」: 複数ファイルをまとめてAIに渡すための小さなCLIツール

Last updated at Posted at 2025-01-21

はじめに

最近、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等で教えていただけると助かります。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?