SuperAPI AI 工具集

babysit-pr

编程与开发

查看项目

更新于 10-29 12:30

技能介绍

用途

babysit-pr 用于让一个 GitHub PR 持续向前推进,直到其 head commit 上通过所有必要检查、没有未解决的审查线程,并且相关审查者在该 head 上状态干净。它本质上是围绕 desplega:tackle-gh-comments 的一个循环:每轮读取状态、修复问题、推送一次、重新触发审查者,再等待下一个事件。

主要能力

每轮会执行快照读取、完成度判断、按需 rebase、运行本地检查、处理 CI 失败、处理审查发现、推送并重新触发审查者、启动等待。它可以:

  • 通过 snapshot 获取 state、head、base、checks、threads、findings、reviewers 和 gates 等事实。
  • 处理 CI 失败:定位失败检查的日志,对疑似基础设施性偶发失败执行一次重跑,若同一检查再次失败则视为真实失败。
  • 处理审查发现:遵循 tackle-gh-comments 的流程验证、修复、回复并解决线程;只修复目标范围内的真实问题,其余可写明理由拒绝并列为后续事项。
  • 在 gates.upToDate 为 false 时执行 rebase,并使用 range-diff 确认没有丢失 PR 的改动、也没有混入 base 的改动。
  • 推送后按审查者类型重新触发:正式请求的审查者用 rerequest,评论触发的审查者用 gh pr comment 发送触发语,人类审查者不发送评论触发。
  • 使用 wait 等待下一个事件(merged、closed、head-moved、check-failed、checks-done、review-activity、merge-state、timeout)。

使用方式

脚本路径通过 CLAUDE_PLUGIN_ROOT 引用:

  • STATE="${CLAUDE_PLUGIN_ROOT}/skills/babysit-pr/scripts/pr-state.ts"
  • COMMENTS="${CLAUDE_PLUGIN_ROOT}/skills/tackle-gh-comments/scripts/gh-pr-comments.ts"

常用命令:

  • bun $STATE snapshot
  • bun $STATE wait --since <head-oid> --round 2/6
  • bun $STATE rerequest --reviewer <login>
  • bun $COMMENTS list
  • bun $COMMENTS list --all

脚本从当前 checkout 推断仓库与 PR,可用 --repo owner/name 和 --pr N 覆盖。默认轮次上限为 6,可通过 --max-rounds N 调整。

适用场景

适合需要持续维护 PR 健康状态的开发流程:反复修复 CI、回应审查意见、保持分支与 base 同步、并在满足条件后准备合并。

限制与约束

未提供 --merge 时绝不合并;合并前须重新 fetch 并确认新快照在同一 head.oid 上满足完成定义。禁止使用 --admin 或绕过分支保护;未经询问不关闭 PR;不发无意义评论。遇到轮次上限、同一发现修复后重现、审查者指出目标或方案错误、PR 显得过时、rebase 冲突需判断、审查者连续忽略两次触发等情况时,应停止并向用户提问。无人值守的 Claude Code 运行默认 30 分钟后停止后台任务,可配合 --timeout 1500 使用。最终报告需包含 PR url、已用轮次、每轮修复与 commit sha、被拒绝的发现及理由、豁免检查及理由和最终状态。