mcpField
R
repomix

repomix

github.com/samhvw8エージェントワークフロー1537 回インストール1 日前に更新
リポジトリ

repomix について

repomixは、LLM分析用のコードコンテキストを準備するAgent向けスキルです。ローカルまたはリモートのリポジトリを、ファイル選択やトークン数の集計、機密情報チェック付きでまとめます。

主な機能

  1. 01ローカル・リモートリポジトリのパッケージ化
  2. 02XML、Markdown、JSON、プレーンテキストで出力
  3. 03包含・除外パターンによるファイル選択
  4. 04トークン数の集計と機密情報の検出
  5. 05対応言語のコメント削除

活用シーン

  1. 01AIレビューや計画用のコードベース準備
  2. 02対象モジュールにまたがるバグ調査
  3. 03ドキュメント用リポジトリスナップショットの作成
  4. 04サードパーティリポジトリの監査

MCP 対応

READMEでは、AIアシスタント連携用のMCPサーバーが利用可能とされています。

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/samhvw8/dotfiles --skill repomix

インストール後、Claude Code で/repomixを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
configuration.md
usage-patterns.md
scripts/
dot_coverage
README.md
repomix_batch.py
repos.example.json
requirements.txt
scripts/tests/
test_repomix_batch.py

詳細

Repomix スキル

Repomix は、リポジトリ全体を AI が扱いやすい単一ファイルにまとめる強力なツールです。コードベースを大規模言語モデル(LLM)や、Claude、ChatGPT、Gemini などの AI ツールに渡す必要がある場合に最適です。

このスキルを使用する場面

次のような場合にこのスキルを使用します:

  • ユーザーが AI による分析のためにコードベースをまとめる必要がある場合
  • LLM で利用するリポジトリのコンテキストを準備する場合
  • ドキュメント作成用にコードベースのスナップショットを生成する場合
  • サードパーティーのライブラリやリポジトリを分析する場合
  • AI が扱いやすいコードプロジェクトの表現を作成する場合
  • 大規模なコードベース全体にわたってバグを調査する場合
  • リポジトリのセキュリティ監査を実施する場合
  • 実装計画用のコンテキストを生成する場合

主な機能

1. リポジトリのパッケージ化

Repomix は、リポジトリ全体を次の機能を備えた単一ファイルにまとめます:

  • 明確な区切りを備えた、AI に最適化された形式
  • 複数の出力形式(XML、Markdown、JSON、プレーンテキスト)
  • Git を考慮した処理(.gitignore を尊重)
  • LLM のコンテキスト管理に役立つトークン数のカウント
  • 機密情報のセキュリティチェック
2. リモートリポジトリのサポート

クローンせずにリモートリポジトリを処理できます:

  • 短縮形式:npx repomix --remote yamadashy/repomix
  • 完全な URL:npx repomix --remote https://github.com/owner/repo
  • 特定のコミット:npx repomix --remote https://github.com/owner/repo/commit/hash
3. コメントの削除

必要に応じて、サポート対象の言語からコメントを削除します:

  • 対応言語:HTML、CSS、JavaScript、TypeScript、Vue、Svelte、Python、PHP、Ruby、C、C#、Java、Go、Rust、Swift、Kotlin、Dart、Shell、YAML
  • --remove-comments または設定ファイルで有効化します

インストール

まずインストール済みか確認します:

repomix --version

お好みの方法でインストールします:

# npm
npm install -g repomix

# yarn
yarn global add repomix

# bun
bun add -g repomix

# Homebrew (macOS/Linux)
brew install repomix

基本的な使い方

現在のディレクトリをパッケージ化
# Basic packaging (generates repomix-output.xml)
repomix

# Specify output format
repomix --style markdown
repomix --style json
repomix --style plain

# Custom output path
repomix -o custom-output.xml
特定のディレクトリをパッケージ化
repomix /path/to/directory
リモートリポジトリをパッケージ化
# Shorthand format
npx repomix --remote owner/repo

# Full URL
npx repomix --remote https://github.com/owner/repo

# Specific commit
npx repomix --remote https://github.com/owner/repo/commit/abc123

コマンドラインオプション

ファイルの選択
# Include specific patterns
repomix --include "src/**/*.ts,*.md"

# Ignore additional patterns
repomix -i "tests/**,*.test.js"

# Disable .gitignore rules
repomix --no-gitignore

# Disable default ignore patterns
repomix --no-default-patterns
出力の設定
# Output format
repomix --style markdown  # or xml, json, plain

# Output file path
repomix -o output.md

# Remove comments
repomix --remove-comments

# Show line numbers
repomix --no-line-numbers  # disable line numbers
セキュリティと分析
# Run security checks
repomix --no-security-check  # disable security scanning

# Copy to clipboard
repomix --copy  # copy output to clipboard

# Verbose output
repomix --verbose
設定
# Use custom config file
repomix -c custom-config.json

# Initialize new config
repomix --init  # creates repomix.config.json

設定ファイル

プロジェクトのルートに repomix.config.json を作成します:

{
  "output": {
    "filePath": "repomix-output.xml",
    "style": "xml",
    "removeComments": false,
    "showLineNumbers": true,
    "copyToClipboard": false
  },
  "include": ["**/*"],
  "ignore": {
    "useGitignore": true,
    "useDefaultPatterns": true,
    "customPatterns": [
      "additional-folder",
      "**/*.log",
      "**/tmp/**"
    ]
  },
  "security": {
    "enableSecurityCheck": true
  }
}

除外パターン

.repomixignore ファイル

Repomix 専用の除外パターンを指定するには、.repomixignore を作成します(形式は .gitignore と同じです):

# Build artifacts
dist/
build/
*.min.js

# Test files
**/*.test.ts
**/*.spec.ts
coverage/

# Large files
*.mp4
*.zip

# Sensitive files
.env*
secrets/
優先順位
  1. CLI の除外パターン(-i フラグ)
  2. .repomixignore ファイル
  3. 設定ファイルのカスタムパターン
  4. .gitignore ファイル(有効な場合)
  5. デフォルトパターン(有効な場合)

出力形式

XML 形式(デフォルト)

構造化された AI での利用に最適です:

repomix --style xml
Markdown 形式

構文ハイライト付きで、人間が読みやすい形式です:

repomix --style markdown
JSON 形式

プログラムで処理する場合に適しています:

repomix --style json
プレーンテキスト

シンプルに連結した形式です:

repomix --style plain

活用例

1. コードレビューの準備
# Package feature branch for AI review
repomix --include "src/**/*.ts" --remove-comments -o feature-review.md --style markdown
2. セキュリティ監査
# Package third-party library for analysis
npx repomix --remote vendor/library --style xml -o audit.xml
3. ドキュメントの生成
# Package with docs and code
repomix --include "src/**,docs/**,*.md" --style markdown -o context.md
4. バグの調査
# Package specific modules
repomix --include "src/auth/**,src/api/**" -o debug-context.xml
5. 実装計画
# Full codebase context for planning
repomix --remove-comments --copy

トークンの管理

Repomix は次のトークン数を自動的にカウントします:

  • 個別のファイル
  • リポジトリ全体
  • 形式ごとの出力

トークン数を参考に、LLM のコンテキスト上限を管理します:

  • Claude:約 200K トークン
  • GPT-4:約 128K トークン
  • GPT-3.5:約 16K トークン

セキュリティに関する考慮事項

機密データの検出

Repomix は Secretlint を使用して、次の情報を検出します:

  • API キーとトークン
  • パスワードと認証情報
  • 秘密鍵
  • AWS のシークレット
  • データベース接続文字列

必要に応じて無効化します:

repomix --no-security-check
ベストプラクティス
  1. 共有する前に、必ず出力を確認します
  2. 機密ファイルには .repomixignore を使用します
  3. 未知のコードベースではセキュリティチェックを有効にします
  4. .env ファイルのパッケージ化は避けます
  5. ハードコードされた認証情報がないか確認します

パフォーマンスの最適化

大規模なリポジトリ

Repomix は並列処理にワーカースレッドを使用します:

  • 大規模なコードベースを効率的に処理します
  • 例:facebook/react の処理が 29 倍高速化(123 秒 → 4 秒)
最適化のヒント
# Exclude unnecessary files
repomix -i "node_modules/**,dist/**,*.min.js"

# Process specific directories only
repomix --include "src/**/*.ts"

# Disable line numbers for smaller output
repomix --no-line-numbers

ワークフローへの統合

Claude Code との連携
# Package and analyze in one workflow
repomix --style markdown --copy
# Then paste into Claude for analysis
CI/CD との連携
# Generate codebase snapshot for releases
repomix --style markdown -o release-snapshot.md
Git フックとの連携
# Pre-commit hook to generate context
repomix --include "src/**" -o .context/latest.xml

よく使うパターン

リポジトリ全体のパッケージ化
repomix --remove-comments --style markdown -o full-repo.md
ソースコードのみ
repomix --include "src/**/*.{ts,tsx,js,jsx}" -i "**/*.test.*"
ドキュメントバンドル
repomix --include "**/*.md,docs/**" --style markdown
TypeScript プロジェクト
repomix --include "**/*.ts,**/*.tsx" --remove-comments --no-line-numbers
リモート分析
npx repomix --remote owner/repo --style xml -o analysis.xml

トラブルシューティング

問題:出力が大きすぎる
# Exclude unnecessary files
repomix -i "node_modules/**,dist/**,coverage/**"

# Process specific directories
repomix --include "src/**"
問題:ファイルが見つからない
# Disable .gitignore rules
repomix --no-gitignore

# Check ignore patterns
cat .repomixignore
問題:機密データに関する警告
# Review flagged files
# Add to .repomixignore
# Or disable checks: --no-security-check

実装ワークフロー

ユーザーからリポジトリのパッケージ化を依頼された場合:

  1. 要件を評価する

    • 対象のリポジトリ(ローカル/リモート)を特定する
    • 必要な出力形式を判断する
    • 機密データに関する懸念を確認する
  2. フィルターを設定する

    • 関連ファイルの包含パターンを設定する
    • 不要なファイルの除外パターンを追加する
    • コメントの削除を有効または無効にする
  3. パッケージ化を実行する

    • 適切なオプションを指定して repomix を実行する
    • トークン数を監視する
    • セキュリティチェックを確認する
  4. 出力を検証する

    • 生成されたファイルを確認する
    • 機密データが含まれていないことを確認する
    • 対象の LLM のトークン数制限を確認する
  5. コンテキストを提供する

    • パッケージ化したファイルをユーザーに提供する
    • トークン数の概要を含める
    • 警告や問題があれば記載する

ベストプラクティス

  1. デフォルトから始める:まず基本的な repomix を実行し、その後調整します
  2. .repomixignore を使用する:複雑なパターンには CLI フラグよりも適しています
  3. セキュリティチェックを有効にする:特にサードパーティ製コードで有効にします
  4. 適切な形式を選ぶ:AI 向けには XML、人間向けには Markdown を使用します
  5. トークン数を監視する:LLM の制限内に収めます
  6. コメントを削除する:ドキュメントよりもロジックを重視する場合に削除します
  7. 出力をバージョン管理する:.gitignore に追加し、必要に応じて再生成します
  8. パターンをテストする:包含/除外が想定どおりに機能することを確認します

関連ツール

  • Context7:最新のライブラリドキュメントを参照するため
  • Git:リポジトリの履歴を分析するため
  • Secretlint:セキュリティスキャンを行うため
  • トークンカウンター:LLM のコンテキストを管理するため

追加リソース

コメント