Skills

Review PR

在 kimi-code 仓库里 review 一个 PR 时使用:按 PR 模板逐节核对描述与...

Install

npx skills add MoonshotAI/kimi-code --skill review-pr -g -a claude-code -y
Repository
MoonshotAI/kimi-code8.1k
Category
Git and review
Updated
3d ago
License
MIT
Context cost
Lightabout 1,082 tokens
Runs scripts
No, instructions only

What it does

在 kimi-code 仓库里 review 一个 PR 时使用:按 PR 模板逐节核对描述与 diff,并单独做一轮"回归与用户影响"评审,给出影响等级与评审摘要,评审摘要用用户当前使用的语言。

Review PR

这个仓库过去的回归大多不是逻辑错误,而是"改动相对于自身意图是对的,但悄悄改掉了某个现有人群依赖的行为":方言分支收窄、默认值翻转、删 system prompt 句子、重构或移植时丢掉旧路径的功能、修复引入启动时序变化。通用 review 会把这类"有意的功能变更"排除在 bug 之外,所以这里把它单列成一轮。

评审判据只有一条:改动前能工作的任何输入(配置键、环境变量、命令行参数、provider 响应形态、旧版本写的会话数据、客户端请求、hook 载荷)改动后必须行为不变,除非 PR 明确声明了这个变化并给出了退路。

工作流

  1. 拉 PR 元数据与描述:

    gh pr view <number> --json title,body,url,files,additions,deletions,baseRefName,headRefName
    
  2. 读完整 diff(大 PR 按文件分批读):

    gh pr diff <number>
    
  3. 读足够的周边代码来验证描述里的每个断言。只看 diff 看不出"改动前谁走到这个分支"。

  4. 第一遍:定性。 判断改动类型,决定第三遍的深度,见"第一遍:定性"。

  5. 第二遍:按模板逐节核对。 见"模板逐节核对"。

  6. 第三遍:回归与用户影响。 尽量用一个独立子 agent 跑:只给它 PR 号、base 与 head、两三句改动简介和 surfaces.md 的路径,不给它作者关于影响范围的结论,让它先从 diff 和代码独立列清单,回来后再与作者填的表对比。没有子 agent 能力时自己按同样顺序做:先列清单,再读作者的表。见"第三遍:回归与用户影响"。

  7. 用用户当前使用的语言写评审摘要,格式见"输出"。

第一遍:定性

改动类型第三遍深度
纯内部重构、测试、文档、测试 CI只需给出"没有可观测变化"的证据:哪些分支、默认值、契约文件没动
发布与打包:release、native 构建、VS Code 发布工作流,打包脚本,web 产物同步全做,人群按安装方式与平台分:npm 包、各平台 native 二进制、VS Code 市场、内置 web 产物
新增功能,不动既有路径只查新分支是否抢走了既有输入:新增条件是否排在旧条件之前
行为变更、默认值翻转、校验或权限收紧或放宽全做
prompt 文本变更:system prompt、工具描述、提醒、overlay、内置 skill全做,且每一句改动单独成行
移植、替换旧路径、大重构:v1 到 v2、runtime binding、协议替换全做,并要求作者给出旧路径功能清单
协议、磁盘格式、SDK 导出、hook 载荷、命令行契约变化全做,并点名仓库外的消费方
修复类改动改了启动顺序、生命周期、异步时序全做,重点看谁依赖原来的顺序

一个 PR 可以同时属于多类,按最重的那类处理。

第三遍:回归与用户影响

1. 行为变化清单

列出 diff 改变的每一个可观测行为,包括作者说"不变"的和作者认为"内部"的。内部包会打进 CLI 发布包,"内部"不等于用户无感。

每一行记录:行为、变化前、变化后、变化类型(新增 / 修改 / 删除 / 默认翻转 / 收紧 / 放宽)、证据(改动前后各一个 file:line,一侧不存在时给可达路径)。

读法:

  • 对每个被删除或被收窄的分支、条件、默认值、句子,问"改动前谁走到这里,改动后他们去哪了"。
  • 对每个新增的分支或条件,问"哪些既有输入现在会先命中新分支"。#3492 的回归就是这样产生的:数组字段存在时不再读字符串字段,而 OpenRouter 形态的网关两者同时发。
  • 测试里"把旧断言改成新行为"的改动是行为变化的直接证据,逐条对应到清单。
  • 先看 diff 文件列表有没有命中 surfaces.md 的"触发线索"。命中的 surface 必须在清单里有对应行,否则就是漏项。

2. 受影响人群

每一行对应到 surfaces.md 里的具体人群,写出人群名字和"这个人群存在"的证据:文档页、issue、配置示例、provider 载荷形态。找不到人群的,不进 finding,进"待作者确认"。

3. 影响等级

等级只由改动的事实决定,不看 changeset、文档、测试这些补救状态。三步判定:

Read the whole SKILL.md on GitHub

More in Git and review