用途
babysit-pr 是一个轻量的编排包装技能,用于持续照看一个 Pull Request,直到它达到可合并状态,然后在合并前询问用户。它自身不执行具体的修复工作,而是通过循环调用 pr-merge-prep 来推进 PR 的阻塞项,并负责监控与收尾。
主要能力
- 自动识别 PR:如果参数中提供了 PR 编号或 URL 则直接使用;否则通过当前分支执行
gh pr view --json number,url,title,isDraft来检测。 - 若未找到 PR,则报告并停止;若 PR 处于草稿状态,则报告「PR is draft — nothing to babysit」并停止。
- 启动循环:调用 loop 技能,参数为
10m /pr-merge-prep $PR_IDENTIFIER,使 pr-merge-prep 每 10 分钟在后台运行一次。 - 监控就绪状态:启动循环后立即执行一次就绪检查(不等待 10 分钟),之后在每次循环迭代后继续检查。
- 就绪判定:通过
gh pr view $PR_NUMBER --json mergeable,reviewDecision,statusCheckRollup,reviewRequests,comments读取数据并评估以下条件——所有 CI/状态检查通过(无等待、无失败,必需)、没有未解决的评审讨论线程(必需)、没有合并冲突(mergeable != CONFLICTING,必需)、评审决定为 APPROVED 或未指派评审人(必需)。 - 若全部满足,则进入停止循环与询问合并阶段;若未满足,则记录仍存在的阻塞项,让循环继续,由下一次 pr-merge-prep 迭代处理剩余阻塞。
- 停止循环:当 PR 可合并时,使用 CronDelete 删除第 2 步创建的 cron 计划。
- 询问用户合并:向用户汇报 PR 标题与 URL、所有检查通过情况、评审状态、以及 pr-merge-prep 留给人工审查的未决评论线程,然后询问「PR is ready to merge. Would you like me to merge it?」。
使用方式
该技能以用户请求参数 $ARGUMENTS 作为输入,可传入 PR 编号或 URL。若未提供,则从当前分支自动检测。整个流程为:检测 PR → 启动 10 分钟循环 → 立即并持续监控就绪状态 → 就绪后停止循环 → 询问用户是否合并。
适用场景
适用于需要长时间跟进某个 PR、希望自动反复处理阻塞项(如 CI、评审、冲突)并在达到可合并状态时得到提醒的开发者。适合在后台持续照看 PR,减少人工反复检查的成本。
限制与注意事项
- 绝不自动合并:必须始终询问用户。
- 若用户同意合并,则通过
gh pr merge $PR_NUMBER --merge执行(用户指定时可用--squash或--rebase)。 - 若用户拒绝或表示暂不合并,则确认并停止,不执行合并。
- 若用户未回应,则不执行任何操作,PR 保持打开状态。
- 该技能依赖 gh 命令行工具以及 loop、CronDelete 等能力;具体环境要求与安装方式暂未提供。