迭代PR技能Skill iterate-pr

这个技能用于自动化GitHub PR的迭代过程,通过持续监控CI检查状态、处理评审反馈和修复失败,直到所有检查通过,提高开发效率和代码质量。关键词:PR迭代、CI/CD、自动化、GitHub、反馈处理、DevOps。

DevOps 0 次安装 0 次浏览 更新于 3/17/2026

名称: 迭代PR 描述: 在PR上迭代直到CI通过。使用当您需要修复CI失败、地址评审反馈或持续推送修复直到所有检查变绿时。自动化反馈-修复-推送-等待循环。

在PR上迭代直到CI通过

持续迭代当前分支直到所有CI检查通过并评审反馈被地址。

要求: GitHub CLI (gh) 已认证。

重要: 所有脚本必须从仓库根目录运行(.git所在位置),而不是从技能目录。通过 ${CLAUDE_SKILL_ROOT} 使用脚本的完整路径。

捆绑脚本

scripts/fetch_pr_checks.py

获取CI检查状态并从日志中提取失败片段。

uv run ${CLAUDE_SKILL_ROOT}/scripts/fetch_pr_checks.py [--pr NUMBER]

返回JSON:

{
  "pr": {"number": 123, "branch": "feat/foo"},
  "summary": {"total": 5, "passed": 3, "failed": 2, "pending": 0},
  "checks": [
    {"name": "tests", "status": "fail", "log_snippet": "...", "run_id": 123},
    {"name": "lint", "status": "pass"}
  ]
}

scripts/fetch_pr_feedback.py

使用LOGAF scale获取并分类PR评审反馈。

uv run ${CLAUDE_SKILL_ROOT}/scripts/fetch_pr_feedback.py [--pr NUMBER]

返回JSON,反馈分类为:

  • high - 合并前必须地址(h:、阻塞、变更请求)
  • medium - 应该地址(m:、标准反馈)
  • low - 可选(l:、细节、样式、建议)
  • bot - 信息性自动化评论(Codecov、Dependabot等)
  • resolved - 已解决线程

评审机器人反馈(来自Sentry、Warden、Cursor、Bugbot等)出现在high/medium/low中,带有review_bot: true — 它不放在bot桶中。

工作流

1. 识别PR

gh pr view --json number,url,headRefName

如果当前分支没有PR,则停止。

2. 收集评审反馈

运行 ${CLAUDE_SKILL_ROOT}/scripts/fetch_pr_feedback.py 获取已发布的分类反馈。

3. 按LOGAF优先级处理反馈

自动修复(无提示):

  • high - 必须地址(阻塞、安全、变更请求)
  • medium - 应该地址(标准反馈)

这包括评审机器人反馈(带有review_bot: true的项目)。像处理人类反馈一样处理:

  • 真实问题找到 → 修复它
  • 误报 → 跳过,但简要评论解释原因
  • 从不静默忽略评审机器人反馈 — 始终验证发现

提示用户选择:

  • low - 呈现编号列表并询问哪些要地址:
找到3个低优先级建议:
1. [l] "考虑重命名这个变量" - @reviewer 在 api.py:42
2. [nit] "可以使用列表推导" - @reviewer 在 utils.py:18
3. [style] "添加文档字符串" - @reviewer 在 models.py:55

您想地址哪些?(例如,"1,3" 或 "all" 或 "none")

静默跳过:

  • resolved 线程
  • bot 评论(仅信息性 — Codecov、Dependabot等)

4. 检查CI状态

运行 ${CLAUDE_SKILL_ROOT}/scripts/fetch_pr_checks.py 获取结构化失败数据。

如果待处理则等待: 如果评审机器人检查(sentry、warden、cursor、bugbot、seer、codeql)仍在运行,等待再继续—它们发布可操作的反馈,必须评估。信息性机器人(codecov)不值得等待。

5. 修复CI失败

对于脚本输出中的每个失败:

  1. 阅读 log_snippet 以理解失败
  2. 在更改之前阅读相关代码
  3. 用最小化、针对性的更改修复问题

不要仅基于检查名称假设失败原因—始终阅读日志。

6. 提交和推送

git add <文件>
git commit -m "fix: <描述性消息>"
git push

7. 等待CI

gh pr checks --watch --interval 30

8. CI后重新检查反馈

评审机器人通常在CI检查完成后几秒钟发布反馈。短暂等待,然后再次检查:

sleep 10
uv run ${CLAUDE_SKILL_ROOT}/scripts/fetch_pr_feedback.py

以与步骤3相同的方式地址任何新的高/中反馈。如果新反馈需要代码更改,返回到步骤6以提交和推送。

9. 重复

如果CI失败或步骤8中出现新反馈,返回到步骤2。

退出条件

成功: 所有检查通过,CI后反馈重新检查干净(没有新的未地址高/中反馈,包括评审机器人发现),用户已决定低优先级项目。

请求帮助: 3次尝试后相同失败,反馈需要澄清,基础设施问题。

停止: 没有PR存在,分支需要变基。

回退

如果脚本失败,直接使用 gh CLI:

  • gh pr checks --json name,state,bucket,link
  • gh run view <run-id> --log-failed
  • gh api repos/{owner}/{repo}/pulls/{number}/comments