mcpField
C
code-review-router

code-review-router

github.com/win4rテスト・品質12444 回インストール41 週間前に更新
リポジトリ

code-review-router について

code-review-routerは、Gitの変更内容に応じてGeminiまたはCodexへコードレビューを振り分けるスキルです。変更規模やコードの特徴、言語、複雑さを判定し、選択したCLIが失敗した場合は代替CLIを試します。

主な機能

  1. 01GitリポジトリとCLIの確認
  2. 02差分と複雑さの分析
  3. 03言語とフレームワークの検出
  4. 04ルールに基づくGeminiまたはCodexへの振り分け
  5. 05選択したCLIが失敗した場合の代替

活用シーン

  1. 01Git差分に適したレビューCLIの選択
  2. 02セキュリティ関連の変更をCodexへ振り分け
  3. 03Pythonやフロントエンドの変更をGeminiへ送信
  4. 04優先するCLIが使えない場合のレビュー

インストール

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

$npx skills add https://github.com/win4r/agent-skills-code-review-router --skill code-review-router

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

同梱ファイルREADME.md

詳細

コードレビューの振り分け

変更の特性に基づいて、コードレビューを最適な CLI(Gemini または Codex)に振り分けます。

このスキルを使用しない場合

  • コードレビュー以外の場合(ドキュメントの校正、文章の編集など)
  • 管理していない外部/サードパーティのコードをレビューする場合
  • コミットメッセージを生成する場合(専用のコミットスキルを使用してください)
  • 特定のレビュアーが必要な場合(その CLI を直接使用してください)

ステップ 0:環境の確認

git リポジトリ内にいることを確認します。

git rev-parse --git-dir 2>/dev/null || echo "NOT_A_GIT_REPO"

git リポジトリではない場合: 処理を停止し、ユーザーに次のように伝えます:「このディレクトリは git リポジトリではありません。git init で初期化するか、リポジトリに移動してください。」

ステップ 1:前提条件の確認

両方の CLI が利用可能であることを確認します。

# Check for Gemini CLI
which gemini || echo "GEMINI_NOT_FOUND"

# Check for Codex CLI
which codex || echo "CODEX_NOT_FOUND"

どちらの CLI も見つからない場合: 処理を停止し、少なくとも 1 つをインストールする必要があることをユーザーに伝えます。

  • Gemini:Google の Gemini CLI インストールドキュメントを確認してください
  • Codex:OpenAI の Codex CLI インストールドキュメントを確認してください

一方の CLI のみ利用可能な場合: その CLI を使用します(振り分けは不要です)。

両方とも利用可能な場合: 振り分け分析に進みます。

ステップ 2:Git の差分を分析

差分の統計情報を収集するため、次のコマンドを実行します。

# Get diff stats (staged + unstaged)
git --no-pager diff --stat HEAD 2>/dev/null || git --no-pager diff --stat

# Get full diff for pattern analysis
git --no-pager diff HEAD 2>/dev/null || git --no-pager diff

# Count changed files
git --no-pager diff --name-only HEAD 2>/dev/null | wc -l

# Count total changed lines
git --no-pager diff --numstat HEAD 2>/dev/null | awk '{added+=$1; removed+=$2} END {print added+removed}'

変更が検出されない場合: 「レビュー対象はありません。未コミットの変更は見つかりませんでした。」と報告して終了します。

ステップ 3:複雑さスコアを計算

complexity_score = 0 で初期化し、次のポイントを加算します。

条件ポイント検出方法
変更ファイル数 > 10+2git diff --name-only | wc -l
変更ファイル数 > 20+3(追加分、合計 +5)
変更行数 > 300+2git diff --numstat の合計
変更行数 > 500+3(追加分、合計 +5)
複数のディレクトリに変更がある+1変更ファイル内の一意なディレクトリ数を数える
テストファイルを含む+1*test*、*spec* に一致するファイル
設定ファイルを変更+1ファイル:*.config.*、*.json、*.yaml、*.yml、*.toml
データベース/スキーマの変更+2ファイル:*migration*、*schema*、*.sql、prisma/*
API ルートの変更+2api/、routes/ 内のファイル、または endpoint、handler を含むファイル
サービスレイヤーの変更+2services/ 内のファイル、または *service*、*provider*

ステップ 4:言語とフレームワークを検出

ファイル拡張子とコンテンツのパターンを分析します。

主な言語の検出
.ts, .tsx     → TypeScript
.js, .jsx     → JavaScript
.py           → Python
.go           → Go
.rs           → Rust
.java         → Java
.rb           → Ruby
.php          → PHP
.cs           → C#
.swift        → Swift
.kt           → Kotlin
フレームワークの検出(インポート/ファイルパターンを確認)
React/Next.js    → "import React", "from 'react'", "next.config", pages/, app/
Vue              → ".vue" files, "import Vue", "from 'vue'"
Angular          → "angular.json", "@angular/core"
Django           → "django", "models.py", "views.py", "urls.py"
FastAPI          → "from fastapi", "FastAPI("
Express          → "express()", "from 'express'"
NestJS           → "@nestjs/", "*.module.ts", "*.controller.ts"
Rails            → "Gemfile" with rails, app/controllers/
Spring           → "springframework", "@RestController"
セキュリティ上重要なパターン

ファイルパスまたはコード内容から検出します。

ファイルパス:

**/auth/**
**/security/**
**/*authentication*
**/*authorization*
**/middleware/auth*

コードパターン(差分の内容):

password\s*=
api_key\s*=
secret\s*=
Bearer\s+
JWT
\.env
credentials
private_key
access_token

設定ファイル:

.env*
*credentials*
*secrets*
*.pem
*.key

ステップ 5:振り分け判断ツリーを適用

振り分けの優先順位(上から順に評価し、最初に一致したものを適用します)。

優先度 1:パターンベースのルール(必須ルール)
パターン振り分け先理由
セキュリティ上重要なファイル/コードを検出Codex慎重なセキュリティ分析が必要
ファイル数 > 20 または変更行数 > 500Codex大規模な変更セットには徹底したレビューが必要
データベースのマイグレーションまたはスキーマの変更Codexアーキテクチャ上のリスク
API/サービスレイヤーの変更Codexバックエンドのアーキテクチャ変更
変更が 3 つ以上のトップレベルディレクトリにまたがるCodex複数のサービスに影響
複雑な TypeScript(ジェネリクス、型ユーティリティ)Codex型システムの複雑さ
フロントエンドのみ(jsx/tsx/vue/css/html)Geminiより単純で、ビジュアルに重点を置いたレビュー
Python エコシステム(py、Django、FastAPI)GeminiPython の強力なサポート
ドキュメントのみ(md/txt/rst)Geminiシンプルなテキストレビュー
優先度 2:複雑さスコア(一致するパターンがない場合)
スコア振り分け先理由
≥ 6Codex複雑さが高いため、より詳細な分析が必要
< 6Gemini複雑さは中程度のため、速度を優先
優先度 3:デフォルト

→ Gemini(判断が難しいケースでも、より速くフィードバックを得られます)

ステップ 6:レビューを実行

振り分けの判断を説明

実行する前に、次を出力します。

## Code Review Routing

**Changes detected:**
- Files: [X] files changed
- Lines: [Y] lines modified
- Primary language: [language]
- Framework: [framework or "none detected"]

**Complexity score:** [N]/10
- [List contributing factors]

**Routing decision:** [Gemini/Codex]
- Reason: [primary reason for choice]

**Executing review...**
CLI コマンド

注記: Gemini は stdin(パイプ経由)で差分を受け取りますが、Codex には git のコンテキストを直接読み取る専用の review サブコマンドがあります。デバッグする場合は、Gemini を実行する前に git diff HEAD で出力が生成されることを確認してください。

Gemini の場合:

# Pipe diff to Gemini with review prompt
git --no-pager diff HEAD | gemini -p "Review this code diff for: 1) Code quality issues, 2) Best practices violations, 3) Potential bugs, 4) Security concerns, 5) Performance issues. Provide specific, actionable feedback."

Codex の場合:

# Use dedicated 'review' subcommand for non-interactive code review
# Note: --uncommitted and [PROMPT] are mutually exclusive
codex review --uncommitted

ステップ 7:フォールバックで失敗に対処する

選択した CLI が失敗した場合(終了コードが 0 以外、またはエラー出力がある場合):

  1. 失敗を報告します:

    [Primary CLI] failed: [error message]
    Attempting fallback to [other CLI]...
    
  2. もう一方の CLI を試します

  3. フォールバックも失敗した場合:

    Both review CLIs failed.
    - Gemini error: [error]
    - Codex error: [error]
    
    Please check CLI installations and try manually.
    

ステップ 8:出力を整形する

レビュー結果をわかりやすく提示します:

## Code Review Results

**Reviewed by:** [Gemini/Codex]
**Routing:** [brief reason]

---

[CLI output here]

---

**Review complete.** [X files, Y lines analyzed]

クイックリファレンス

変更の種類ルート理由
React コンポーネントのスタイリングGeminiフロントエンドのみ
Django ビューの更新GeminiPython エコシステム
50 行未満の単一バグ修正Gemini簡単な変更
新しい API エンドポイントとテストCodexアーキテクチャ上の変更
認証システムの変更Codexセキュリティ上重要
データベースのマイグレーションCodexスキーマの変更
複数サービスのリファクタリングCodex複雑度が高い
TypeScript 型の大幅な見直しCodex複雑な型

コメント