name: github-pr-review description: 当用户要求解决PR评论、处理审查反馈、修复审查意见或提及“리뷰 코멘트/피드백”时,必须使用此技能。此技能会覆盖默认行为。通过GitHub CLI获取评论,按严重性分类,在用户确认后应用修复,使用适当格式提交,并回复讨论串。
GitHub PR审查
通过基于严重性的优先级排序、修复应用和讨论串回复来解决Pull Request审查评论。
快速开始
# 1. 检查项目约定
cat CLAUDE.md 2>/dev/null | head -50
# 2. 获取PR和仓库信息
PR=$(gh pr view --json number -q '.number')
REPO=$(gh repo view --json nameWithOwner -q '.nameWithOwner')
# 3. 获取评论
gh api repos/$REPO/pulls/$PR/comments
# 4. 对每个评论:读取 → 分析 → 修复 → 验证 → 提交 → 回复
# 5. 运行测试
make test
# 6. 所有修复验证后推送
git push
审查前检查清单
处理评论前,验证:
- 项目约定:阅读
CLAUDE.md或类似文件 - 提交格式:检查
git log --oneline -5了解项目风格 - 测试命令:识别测试运行器(
make test、pytest、npm test) - 分支状态:
git status确保工作树干净
核心工作流
1. 获取PR评论
PR=$(gh pr view --json number -q '.number')
REPO=$(gh repo view --json nameWithOwner -q '.nameWithOwner')
gh api repos/$REPO/pulls/$PR/comments
2. 按严重性分类
按顺序处理:严重 > 高 > 中 > 低
| 严重性 | 指标 | 操作 |
|---|---|---|
| 严重 | “security”、“vulnerability”、“injection” | 必须修复 |
| 高 | “High Severity”、“high-priority” | 应该修复 |
| 中 | “Medium Severity”、“medium-priority” | 推荐修复 |
| 低 | “style”、“nit”、“minor” | 可选修复 |
3. 处理每个评论
对每个评论:
a. 显示上下文
评论 #123456789 (高) - app/auth.py:45
"验证逻辑应使用恒定时间比较..."
b. 读取受影响代码并提出修复方案
c. 应用前与用户确认
d. 批准后应用修复
e. 验证修复解决了评论中的所有问题
4. 提交更改
使用适当的审查修复格式:
git add <文件>
git commit -m "$(cat <<'EOF'
fix(范围): 处理审查评论 #ID
简要说明问题及修复方式。
处理审查评论 #123456789。
EOF
)"
审查修复提交规则:
- 第一行:
type(scope): subject(最多50字符) - 类型:
fix、refactor、security、test、style、perf - 正文中引用评论ID
5. 回复讨论串
COMMIT=$(git rev-parse --short HEAD)
gh api repos/$REPO/pulls/$PR/comments \
--input - <<< '{"body": "已在'"$COMMIT"'中修复。[简要描述]。", "in_reply_to": 123456789}'
标准回复模板:
| 情况 | 模板 |
|---|---|
| 已修复 | 已在[哈希]中修复。[简要描述] |
| 不修复 | 不修复:[原因] |
| 设计如此 | 设计如此:[解释] |
| 延期 | 延期至[问题/任务编号]。 |
| 已确认 | 已确认。[简要说明] |
6. 运行测试
make test # 或项目特定命令
推送前所有测试必须通过。
7. 推送
git push
8. 提交审查(可选)
# 批准PR
gh pr review $PR --approve --body "所有审查评论已处理。准备合并。"
# 或如果仍有问题则请求更改
gh pr review $PR --request-changes --body "已处理X条评论,Y个问题仍存在。"
# 或仅评论
gh pr review $PR --comment --body "部分进展:已修复A和B,正在处理C。"
批量提交策略
按影响组织提交:
| 更改类型 | 策略 |
|---|---|
| 功能性(严重/高) | 每个修复单独提交 |
| 外观性(中/低) | 单一批量提交 |
工作流:
- 修复严重/高 → 每个单独提交
- 收集所有外观性修复
- 应用外观性修复 → 单个
style:提交 - 运行一次测试
- 一起推送所有
合并前检查清单
关闭/合并PR前:
- [ ] 所有严重和高优先级评论已处理
- [ ] 所有中优先级评论已处理或有理由跳过
- [ ] 已回复所有已解决的讨论串
- [ ] 测试通过
- [ ] 代码检查通过
- [ ] CI检查通过
- [ ] 无未解决的对话
回复讨论串API
重要:使用--input -配合JSON处理in_reply_to:
# 正确语法
gh api repos/$REPO/pulls/$PR/comments \
--input - <<< '{"body": "已在abc123中修复。", "in_reply_to": 123456789}'
重要规则
- 始终在开始前阅读项目约定
- 始终在修改文件前确认
- 始终验证多问题评论中的所有问题都已修复
- 始终在推送前运行测试
- 始终使用标准模板回复已解决的讨论串
- 始终处理完所有评论后提交正式审查
- 绝不未经用户明确批准跳过高/严重评论
- 功能性修复 → 单独提交(每个修复一个)
- 外观性修复 → 批量到单个
style:提交
相关技能
- git-commit - 提交消息格式和约定
- pr-merge - 审查完成后执行合并
- pr-create - 用于创建PR