RepoPilot について
RepoPilot は、マージ前に Git の変更を確認する開発者とチーム向けのローカル実行ツールです。構造的な根拠に基づいて PASS、REVIEW、BLOCK、NOT ASSESSED のいずれかの判定を示し、ソースコードを外部サービスへ送信せずに分析を行います。
主な機能
- 01Git 変更のローカルかつ決定的なレビュー
- 02弱体化されたテストと緩和された CI ゲートの検出
- 03セキュリティ境界と入力からシンクへの経路の指摘
- 04直接の依存先と広範なファイル影響の分析
- 05コンソール、Markdown、JSON、HTML、SARIF 形式のレポート
活用シーン
- 01マージ前にテストがスキップor弱体化されていないかを確認
- 02高信頼度のシグナルに基づいて CI でブランチレビューを制御
- 03スナップショット以降にコーディングエージェントが行った変更のレビュー
MCP 対応
RepoPilot はローカルの stdio MCP サーバーとして動作し、スキャンおよびレビューのツールをエージェントに提供します。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
6掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| base | string | いいえ | 比較対象のベース Git ref(例:"origin/main")。任意。既定では作業ツリーと HEAD を比較します。 |
| head | string | いいえ | Head Git ref。任意で、"base" と併用する場合のみ有効です。 |
| path | string | いいえ | レビューするリポジトリのパス。既定では現在の作業ディレクトリを使用します。 |
| limit | integer | いいえ | 返す指摘の最大数。 |
| scope | enum | いいえ | "changed" は変更されたファイル内の指摘のみを報告し、"full" はリポジトリの残りの部分の指摘も返します。changed | full |
| config | string | いいえ | 任意の repopilot.toml パス。既定ではリポジトリ内で検出されたファイルを使用します。 |
| detail | enum | いいえ | "compact" は指摘を最大 20 件、シグナルを最大 20 件返し、"full" はすべて返します。compact | full |
| intent | object | いいえ | 変更で対象とする内容(パス、契約ファミリー、重要なパス、検証 ID)を示す任意のインライン記述です。範囲外の逸脱はレポートに表示されます。メタデータのみであり、コマンドは実行できません。 |
| intent.paths | array | いいえ | |
| intent.summary | string | いいえ | |
| intent.version | integer | いいえ | |
| intent.verification | array | いいえ | |
| intent.critical_paths | array | いいえ | |
| intent.contract_families | array | いいえ | |
| offset | integer | いいえ | 指摘のゼロ始まりオフセット。 |
| verify | array | いいえ | レビュー対象リビジョンに対して実行を要求する、repopilot.toml で設定済みのチェック ID。各チェックには form-mode Elicitation による個別の一度限りのユーザー承認が必要です。未対応のクライアントではチェックがスキップされます。省略すると何も実行しません。 |
| filters | object | いいえ | 返す指摘を絞り込む任意のしきい値とルール ID。 |
| filters.rules | array | いいえ | |
| filters.min_priority | enum | いいえ | p0 | p1 | p2 | p3 |
| filters.min_severity | enum | いいえ | info | low | medium | high | critical |
| filters.min_confidence | enum | いいえ | low | medium | high |
| profile | enum | いいえ | 「default」ではシグナルの弱い提案が非表示になり、「strict」ではすべての検出結果が表示されます。default | strict |
| baseline | string | いいえ | 任意のベースラインファイル(`repopilot baseline create` で作成)。記録された検出結果は受け入れ済みの負債として扱われ、新しい検出結果とは別に扱われます。 |
| intent_path | string | いいえ | 変更対象の想定を記述する、任意のリポジトリルート基準の TOML ファイルです。範囲外の逸脱はレポートに示されます。これか `intent` のどちらか一方を指定してください。 |
| fail_on_review | enum | いいえ | ゲート対象となる definitely レベルのシグナルがある場合、「definitely」はレポートのゲートを失敗させます。「none」はゲートせずにシグナルを報告します。none | definitely |
詳細
RepoPilot
Git の変更をローカルで決定論的にレビューします。
RepoPilot は、マージ前に開発者やチームが変更を調査するのに役立ちます。セキュリティ境界、動作、ローカルのインポートとエクスポート、依存関係グラフを通じて影響を受けるファイルに関する構造的な根拠を報告します。同じレビューを、ターミナル、CI、エージェントとの統合を通じて実行できます。
分析は、実行を開始したマシンまたは CI ランナー上で行われます。ソースをホスト型サービスに送信したり、組み込みの言語モデルを呼び出したりすることはありません。検出事項はコードを指し、確認すべき内容を説明します。変更がアプリケーションにとって安全かどうかは、引き続きレビュー担当者が判断します。
例:自分のテストを弱める変更
この変更では、applyDiscount の範囲チェックが削除されています。同じ変更で、失敗するはずのテストをスキップし、別のテストからアサーションを削除し、CI のテストステップが失敗してもジョブ全体は失敗しないようにしています。実行されるチェックはすべて成功します。repopilot review . は、判定の直後にこれらを一覧表示します。
Decision: REVIEW (Change Proof: REVIEW)
...
Checks this change weakened (details under Review signals):
⚑ check gate relaxed — .github/workflows/ci.yml:10
⚑ assertions removed — src/pricing.test.ts:5
⚑ test skipped — src/pricing.test.ts:9
さらに下に進むと、各シグナルの説明が表示されます。
⚑ check gate relaxed — .github/workflows/ci.yml:10 check step `npm test` in job `test` now has `continue-on-error: true`
⚑ assertions removed — src/pricing.test.ts:5 "applyDiscount > takes a percentage off the total": assertions 2 → 1
⚑ test skipped — src/pricing.test.ts:9 `it.skip` added on "rejects a discount above 100%"; its result no longer fails the run
これらは 1 回の実行からの抜粋です(録画)。scripts/demo-weakened-tests.sh <empty-dir> で再生し、その後 repopilot review <empty-dir> を実行してください。
インストールとレビュー
cargo install repopilot
# or
npm install -g repopilot
repopilot review . --base origin/main
コミットしていない作業をレビューするには、repopilot review . を実行してください。最初の画面に、PASS、REVIEW、BLOCK、NOT ASSESSED のいずれかの判定、その理由、カバレッジの制限、次のアクションが表示されます。
レビューでは、次のような項目が明らかになることがあります。
- 認証、リクエストの信頼性、デプロイ、依存関係、シークレット設定への変更。
- ネットワーク呼び出し、サブプロセス、ファイルシステムへの書き込み、SQL、エラー処理など、追加または削除された動作。
- 入力からシンクへの経路、アルゴリズム構造、ローカルのインポート/エクスポート契約の変更。
- 変更によって実行されなくなったテストや弱められたテスト。コミット済みのフォーカスマーカー(
it.onlyなど)、新たにスキップされたテスト(it.skip、@pytest.mark.skip、t.Skip、#[ignore])、テストケースの削除や置き換え、アサーションが失われたテスト、新たな lint、型、カバレッジの抑制、緩和された CI やツールのゲート(continue-on-error、|| true、引き下げられたカバレッジしきい値、オフにされた厳格モード)。これにより、実行結果が成功していても問題が隠れないようにします。 - 直接の依存先と、変更されたファイルがもたらすより広範な影響。
シグナルは参考となる根拠です。たとえば、taint-lite シグナルは、認識された入力が変更されたソース内で認識されたシンクに到達し得ることを示します。アプリケーションの状況と設定済みのチェックに照らして、影響を確認してください。
例:画像処理の変更をレビューする
Wagtail の例では、1 ファイルだけの変更で認可チェックを削除し、リクエストデータをサブプロセスに渡しています。RepoPilot は、境界の変更と、入力からプロセスへのデータフローの両方を報告します。
固定されたテストリポジトリで例を再生してください。
python3 scripts/zoo.py clone --only wagtail
scripts/demo-agent-edit.sh .zoo/wagtail
repopilot review .zoo/wagtail
報告されたフローは、調査すべき経路です。RepoPilot は、それが悪用可能であることや、アプリケーションが安全であることを証明するものではありません。
チームでの使用
信頼度の高いシグナルを基準に、ブランチレビューをゲートします。
repopilot review . --base origin/main --fail-on-review definitely
レビューが VERIFIED となるのは、リポジトリに設定されたチェックが --verify で明示的に選択され、レビュー対象のリビジョンで合格した場合のみです。初期設定向けの提案を生成するには、
repopilot init --suggestions-output repopilot-suggestions.toml を実行します。このファイルは有効な設定とは別のものです。設定を参照してください。
リポジトリ全体を幅広く確認するには、repopilot scan . を実行します。新しい作業をゲートする前に既存の検出事項を採用するには、
repopilot baseline create . を使用します。
エージェントおよび CI との連携
同じレビューで、人間またはコーディングエージェントの作業を確認できます。開始地点を記録し、そこから行われた変更をレビューします。
repopilot snapshot
# Work happens here.
repopilot review --since-snapshot
作業ツリーがすでにダーティな場合、マーカーには未コミットのファイルのベースラインコミットも記録されます。そのため、後のレビューではスナップショット以降の変更のみが対象になります。誰が変更したかではなく、何が変更されたかを示します。 一般的なワークフローを参照してください。
Claude Code では、RepoPilot プラグインが各セッションでこのループを実行し、スキップ、対象を絞った変更、削除、または弱体化したテストについて説明がない限り、Claude が処理を完了できないようにします。
/plugin marketplace add MykytaStel/repopilot
/plugin install repopilot@repopilot
Codex では同じプラグインをインストールします(codex plugin marketplace add MykytaStel/repopilot、続いて codex plugin add repopilot@repopilot)。Gemini CLI では拡張機能としてインストールします(gemini extensions install https://github.com/MykytaStel/repopilot)。Cursor ではプロジェクトフックを通じて実行します。GitHub Copilot のコーディングエージェントやその他のエージェント向けに、RepoPilot はセットアップ手順、MCP エントリー、および AGENTS.md のスニペットを提供します。エージェントの実行を保護するを参照してください。
RepoPilot は、ローカルの stdio MCP サーバーと GitHub Action も提供します。MCP サーバーを使うと、エージェントはローカルのスキャンツールとレビューツールを利用できます。Action は Actions ランナーで RepoPilot を実行し、SARIF またはプルリクエストの要約を公開できます。エージェントの実行を保護する、MCP サーバー、GitHub 連携を参照してください。MCP Registry
名:mcp-name: io.github.MykytaStel/repopilot。
その他の機能
repopilot ai context .は、リポジトリの情報、検出事項、優先順位付きの計画を含むローカルの引き継ぎ資料を作成します。モデルへの呼び出しは行いません。repopilot initは、レビュー用の設定ファイルまたは連携ファイルを作成します。- レポートはコンソール、Markdown、JSON、HTML、SARIF 形式で利用できます。
ドキュメント
- インストール · 一般的なワークフロー · CLI リファレンス
- 現在のアーキテクチャ · レポートとスキーマ · セキュリティモデル
- 言語サポート · ルールリファレンス · ロードマップ
- 最新の安定版リリースノート · リリースの根拠資料 · メンテナー向けドキュメント
コントリビューションと開発環境のセットアップ:CONTRIBUTING.md。
ライセンス
ライセンスは、Apache License, Version 2.0 または MIT license のいずれかを選択できます。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。