.agents/skills/system/pr-change-analysis/SKILL.md
面向代码 reviewer,先从真实 diff 还原需求与实现边界,再判断是否有超出需求的改动、过度复杂的整理、测试与模块化风险、以及与相近代码不一致的风格。
git status --short,遇到未提交改动时先说明风险并让用户决定,不要自行 stash、reset 或 checkout 覆盖。gh pr view <pr> 获取 number,title,body,author,headRefName,baseRefName,files,additions,deletions,commits。gh pr checkout <pr> 切到该 PR 分支。git fetch upstream main,默认用 upstream/main...HEAD 做审查基准。baseRefName 不是 main,在报告里明确说明,并根据上下文决定是否同时补充 upstream/<baseRefName>...HEAD 的对比。git branch --show-current。git fetch upstream main。git diff upstream/main...HEAD 和相关统计作为审查基准。main 或 diff 为空:
优先用这些命令建立全局视角:
git status --short
git branch --show-current
git fetch upstream main
git diff --stat upstream/main...HEAD
git diff --name-status upstream/main...HEAD
git log --oneline --decorate upstream/main..HEAD
再按文件类型深入:
git diff upstream/main...HEAD -- <path>
git diff --word-diff=color upstream/main...HEAD -- <path>
rg -n "关键函数|关键类型|关键字段" <相关目录>
检查需求来源时优先读取:
需要用 reviewer 能快速理解的方式说明:
不要只列文件名。每个关键文件都要说明它承担的行为变化。
重点找这些信号:
结论要区分:
合理扩散:为了实现需求必须改的上下游。可疑越界:看起来和需求无关,需要作者拆分或解释。高风险越界:可能导致回归,应要求拆出或补测试。检查是否:
parseApiInput,共享 schema 应放在 packages/global/openapi 或相应共享层。评价质量时给出具体文件和函数,不要泛泛说“需要优化”。
对比相邻实现,而不是只按个人偏好判断:
t(`ns:key_${value}`)、t(prefix + value)、t(variableKey) 或 t(condition ? 'ns:a' : 'ns:b') 这类动态/表达式 key;有限枚举应拆成显式分支或静态映射,并在最终调用处保留 t('ns:literal_key') 形式。改动后要检查对应语言包 key 是否齐全,避免清理脚本误删或运行时裸显 key。对每个核心改动至少做一次“调用链闭环”:
git show upstream/main:<path> 或 git diff 确认不是误读。如果发现大规模重构,先识别“纯移动/纯重命名/格式化”和“真实行为改动”,避免把噪音当成需求。
最终报告优先用以下结构,按风险高低组织,不要写冗长总结报告:
## 需求变更
- ...
## 关键实现路径
- `path/to/file.ts`: ...
## 影响范围与越界判断
- 合理扩散: ...
- 可疑越界: ...
- 高风险越界: ...
## 代码质量
- [风险等级] `path/to/file.ts`: 问题、原因、建议。
## 代码风格一致性
- ...
## 测试与验证缺口
- ...
## 需要作者确认的问题
- ...
问题项必须尽量带文件路径和行号。没有发现问题时也要明确写“未发现明显越界/质量/风格问题”,并列出仍未覆盖的验证盲区。