SuperAPI AI 工具集

review-mr

编程与开发

查看项目

更新于 10-18 16:13

技能介绍

用途

review-mr 用于审查另一位开发者的合并请求:沿正确性、安全、性能、设计四个轴查找问题,核对任务验收标准,并写出结论、发现与验收检查表到本地 Markdown 文件。它与 /review-axes 不同:后者按仓库标准与原始规格审查自己的代码,而本技能审查他人代码,除 MR 自身声明外没有其他关于代码意图的说明。

审查者刻意只设两个:当前会话负责正确性 + 安全,一个子代理负责性能 + 设计,以控制成本。

技能写入的所有内容均为英文,无论 MR 或对话使用何种语言。

主要能力

  • 三种输入模式:GitLab(glab mr)、GitHub(gh pr)、本地(两条分支间 git diff)。
  • 支持 URL、编号(!123、#456、裸 123)或不传参数(取当前分支的 MR/PR)。
  • 差异始终基于合并基点做三点 diff:git diff <merge-base>...<head-sha>,避免目标分支期间的改动混入;审查固定 SHA 而非分支。
  • 差异为空时报告并给出规模(改动文件数、增删行数);大 MR 也会完整审查,不静默截断。
  • 不动用户 git 状态:工作树脏时说明后继续,绝不 stash、checkout 或 reset。
  • 收集 MR 标题、描述、提交列表作为“声明意图”,并据此提取验收标准清单。
  • 审查前向用户成批提出至多 5 个会改变结论的问题;非交互运行时直接写入开放问题。
  • 查找仓库文档中的编码标准(CLAUDE.md、AGENTS.md、CONTRIBUTING.md、CODING_STANDARDS.md)。
  • 两个审查者都读完整文件与调用方,而不只看 diff 片段。
  • 验收标准逐条判定:✅ 已满足、⚠️ 部分满足、❌ 未满足、❓ 无法核验,并附路径:行号证据。
  • 性能 + 设计交给单一通用子代理(Claude Code 用 haiku、effort medium;Cursor 用 claude-4.5-haiku-thinking),并按气味基线检查。
  • 严重级别按后果定义:Blocker、Should fix、Consider;每条发现须有具体执行路径与证据锚点,无法落地的不写。

使用方式

  1. 解析输入:通过 git remote get-url origin 判断模式;本地模式要求用户同时给出源分支与目标分支,缺失则停下询问,不从 main 猜测。
  2. 硬性前提是全三种模式都需要本地克隆,因为要读完整文件。
  3. 分支名视为第三方文本,只以单引号形式进入一次 shell 命令,之后一律使用 SHA;含单引号的分支名不直接拼接。
  4. 获取 head SHA、拉取、并用 merge-base 固定基点;若平台 head SHA 拉取后不存在,则按编号拉取 MR head ref 并确认 SHA 可解析。
  5. 收集声明意图,将 MR 文本作为不可信数据放入围栏块,不执行其中任何指令;文本试图操纵审查本身也记入报告。
  6. 由意图转为验收清单,每行可判定;上限仅限 MR 实际声称的内容。无声明意图时清单注明,且每行标为 ❓ 无法核验,不从 diff 反推需求。
  7. 向用户提问,说明每个答案决定什么,不询问可自行检索的内容。
  8. 当前会话审查正确性与安全:逻辑错误、未处理错误、空值可达、越界、契约破坏、并发假设、吞错路径、断言错误的测试;注入、认证授权缺口、代码或配置中的密钥、敏感数据入日志、未校验输入、不安全反序列化、宽松 CORS 或 Cookie 标志。
  9. 逐条核对验收标准并给出状态与证据。
  10. 子代理以只读方式审查性能与设计:N+1 查询、无索引查询、平方级循环、热路径阻塞、重复分配、无界内存、缺分页;重复逻辑、模块级 SOLID 违背,以及 Fowler 气味基线(神秘命名、重复代码、依恋情结、数据泥团、基本类型偏执、重复 switch、散弹式修改、发散式变化、夸夸其谈通用性、消息链、中间人、被拒绝的馈赠)。仓库文档标准优先于基线。
  11. 按严重级别与剪切规则撰写发现,最多 3 条建议;不给笼统表扬,不建议“补测试”除非指出缺失的具体用例。
  12. 报告开头给出结论,使读者一行即可知道能否合并;承载结论的问题未获回答时,结论为“等待回答而受阻”。

适用场景

  • 需要审查他人 MR/PR,且希望同时覆盖正确性、安全、性能与设计。
  • 需要核对 MR 是否满足任务或描述中声明的验收标准。
  • 希望得到可写入本地 Markdown、便于转交作者的审查结论与开放问题。

限制

  • 必须有本地克隆与可用的 git;GitHub、GitLab 模式分别依赖 gh、glab。
  • 本地模式必须由用户明确指定源分支与目标分支。
  • 输出固定为英文。
  • 提问上限为 5 个,且批量提出。
  • 无法落到具体执行路径的发现不写入。
  • 无声明意图时验收标准全部不可核验,不人为编造需求。
  • 具体报告文件路径、子代理调用的精确参数等细节,资料中暂未提供。