babysitting-prs 用于把分支或 GitHub 拉取请求推进到用户要求的终态:已发布、已更新、可合并或已合并。
用途与授权:检查本地或 PR 状态属于只读操作;当用户要求发布、更新、处理反馈、准备、落地或合并时,才授权对应的分支与 PR 写入。只有用户明确要求合并、落地、发布、排队或让 PR 合并时才执行合并;“准备落地”“照看”“使其可合并”“可供评审”仅表示达到可合并状态。含糊的后续如“看起来不错”不授予新的合并权限。不要主动引入 GitHub Codex 评审,仅当 PR 已有 Codex 评审活动或用户明确要求时继续。
配套技能:创建 PR 前及现有 PR 发生实质变更后,使用 writing-pr-descriptions;用户要求或差异存在实质风险(行为、公共契约、数据、安全、并发、迁移、横切结构)时使用 auto-review,小型文档、元数据、配置或机械变更改用聚焦检查;仅对已激活或明确请求的 Codex 循环使用 handling-codex-reviews。
工作流:采用有界循环,通常不超过三轮修复,推送前批量处理相关修复。先解析目标与终态,读取仓库说明、git 状态、分支、远程和现有 PR 元数据,识别 base 与当前 head SHA,保留无关脏文件;若无 PR 且发布在范围内,按仓库分支约定提交并推送,用户只要本地工作时不要创建 PR。按风险规则评审并发布,使用 writing-pr-descriptions 针对最终 base 到 head 差异生成或更新非草稿 PR。发布后重新获取 PR 编号、URL、head SHA 和合并状态。
读取当前 PR 状态:运行 scripts/pr_babysit.sh status --pr <pr> --repo <owner/repo>。未解决的评审线程是行内反馈的事实来源,忽略已撤回、待处理、已确认或已过时的反馈。清除分支与评审阻塞:按仓库约定变基或合并 base,以最小正确改动解决冲突;将反馈分类为可操作、已处理、不准确或需用户判断,批量修复有依据项并做聚焦验证;先提交推送再回复,行内回复 Fixed in <sha>: <what changed>,顶层评审附评审 ID。仅在准确确认反馈时添加反应,推送修复与回复可见后再解决线程并重新查询。
Codex 仅在存在时处理:若状态报告已有 Codex 活动、待处理评审、可操作反馈或活跃关注,使用 handling-codex-reviews;Codex 不可用时继续处理非 Codex 阻塞,除非明确要求完成 Codex 评审,否则不要再次触发或阻塞等待批准。清除 CI 阻塞:运行 scripts/pr_babysit.sh checks --pr <pr> --repo <owner/repo>,优先通过 GitHub 检查失败;仅当 PR 有 Buildkite 检查且 GitHub 输出不足时使用 Buildkite 专用工具。修复分支导致的失败,对已证实的外部或偶发失败重试一次,同一分支失败两次严重尝试后停止。
刷新元数据并收尾:若代码、行为、范围或证据发生实质变化,针对最终 head 运行 writing-pr-descriptions;合并或交接前重新获取 head SHA、评审、未解决线程、检查和合并状态,绝不合并与已评审绿色 head 不同的 head;使用仓库的合并队列、自动合并或常规合并方式,仅在要求或仓库配置如此时删除分支。
辅助命令:scripts/pr_babysit.sh status --pr 32 --repo owner/repo;scripts/pr_babysit.sh resolve --pr 32 --repo owner/repo --comment-ids 12345,67890;scripts/pr_babysit.sh checks --pr 32 --repo owner/repo。status 结果包含 merge_blockers、ready_to_merge、未解决评审线程、检查状态和 Codex 状态,是快速摘要而非判断替代。
停止并报告:缺少授权、反馈矛盾、需要人工或产品判断、必要凭据不可用、分支保护或基于证据的修复未能清除的重复阻塞时停止。未完成时报告已达状态、PR URL 和确切阻塞;仅在有助于交接时提及提交或验证。