关于 code-review-router
code-review-router 是用于审查 Git 变更的技能,会根据改动规模、代码模式、语言和复杂度选择 Gemini 或 Codex,并在所选命令行工具失败时尝试备用工具。
主要功能
- 01检查 Git 仓库和命令行工具
- 02分析差异与复杂度
- 03检测语言和框架
- 04按规则路由至 Gemini 或 Codex
- 05所选工具失败时切换备用工具
适用场景
- 01为 Git 差异选择审查工具
- 02将安全敏感改动路由至 Codex
- 03将 Python 或前端改动交给 Gemini
- 04首选命令行工具不可用时进行审查
安装
复制下面的命令,在终端中运行。
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 都未找到: 停止并告知用户至少需要安装其中一个:
- Gemini:查看 Google 的 Gemini CLI 安装文档
- Codex:查看 OpenAI 的 Codex CLI 安装文档
如果只有一个 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 | +2 | git diff --name-only | wc -l |
| 更改文件数 > 20 | +3 | (额外加分,总计 +5) |
| 更改行数 > 300 | +2 | 对 git diff --numstat 求和 |
| 更改行数 > 500 | +3 | (额外加分,总计 +5) |
| 涉及多个目录 | +1 | 统计更改文件中的唯一目录数 |
| 包含测试文件 | +1 | 文件名匹配 *test*、*spec* |
| 更改了配置文件 | +1 | 文件:*.config.*、*.json、*.yaml、*.yml、*.toml |
| 数据库/架构更改 | +2 | 文件:*migration*、*schema*、*.sql、prisma/* |
| API 路由更改 | +2 | 位于 api/、routes/ 中,或包含 endpoint、handler 的文件 |
| 服务层更改 | +2 | 位于 services/ 中,或包含 *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 或行数 > 500 | Codex | 大规模更改集需要全面审查 |
| 数据库迁移或架构更改 | Codex | 存在架构风险 |
| API/服务层修改 | Codex | 后端架构更改 |
| 更改涉及 3 个或更多顶层目录 | Codex | 影响多个服务 |
| 复杂 TypeScript(泛型、类型工具) | Codex | 类型系统复杂 |
| 仅包含纯前端内容(jsx/tsx/vue/css/html) | Gemini | 审查更简单,侧重视觉 |
| Python 生态系统(py、Django、FastAPI) | Gemini | 对 Python 的支持强大 |
| 仅包含文档(md/txt/rst) | Gemini | 文本审查简单 |
优先级 2:复杂度分数(未匹配任何模式时)
| 分数 | 路由目标 | 原因 |
|---|---|---|
| ≥ 6 | Codex | 高复杂度需要深入分析 |
| < 6 | Gemini | 复杂度适中,优先考虑速度 |
优先级 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(管道传入)接收 diff,而 Codex 有专门的
review子命令,可直接读取 git 上下文。如果需要调试,请在运行 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 失败(退出码非零或输出错误):
-
报告失败:
[Primary CLI] failed: [error message] Attempting fallback to [other CLI]... -
尝试使用另一个 CLI
-
如果回退方案也失败:
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 视图更新 | Gemini | Python 生态系统 |
| 少于 50 行的单个错误修复 | Gemini | 简单更改 |
| 新 API 端点 + 测试 | Codex | 架构性更改 |
| 身份验证系统更改 | Codex | 安全敏感 |
| 数据库迁移 | Codex | 架构更改 |
| 多服务重构 | Codex | 复杂度高 |
| TypeScript 类型全面调整 | Codex | 类型复杂 |