用途
PR Babysitter 用于让一个已开启的 GitHub PR 保持推进:处理合并冲突、跨 GitHub Actions/Buildkite/Vercel/Fly.io 的 CI 状态、收到的评审评论,以及合并就绪状态,并在合并后继续跟进仓库的合并后监控。它既可以作为后台监控运行,也可以执行一次性修复。
它明确不负责:开启或编辑 PR(由 pr-creator 负责)、评审或修复 diff 本身(由 tidy 负责)、npm 发布 PR(autoship 会监控自己的发布 CI,不要 babysit 它驱动的发布或 Version Packages PR)。
主要能力
- 监控模式:Phase 1 执行一次,之后每个事件或 tick 运行 Phase 2-5,与状态文件做 diff,仅在发生变化时发声。
- 一次性模式:包括修复 CI、解决冲突、处理评论、就绪报告等。
- 冲突检查:根据 mergeable/mergeStateStatus 决定 rebase、更新或等待;仅在 lockfile、生成文件或 changelog 冲突时自动处理,源码逻辑、迁移或 API 契约冲突则中止并通知。
- CI 检查:读取 gh pr checks 的 name、state、bucket、link、workflow,按平台获取日志,分类为 flaky、过期依赖、代码错误、knip、基础设施问题,修复后运行验证门禁再提交推送。
- 评论分诊:运行 scripts/fetch-comments.sh 获取所有评审、线程和 issue 评论,按作者类型、严重程度、人类意图分类,去重机器人评论,生成修复计划,逐条回复并解决。
- 就绪检查:综合 mergeable、必需检查、reviewDecision、阻塞线程、待回复线程和合并门禁判断是否可合并。
- 合并后监控:等待合并 SHA 上的 watch/<env> 提交状态,遇到首个失败或错误即停止并报告;若无 watch/* 状态则报告“no post-merge watch”;合并上线后执行只读生产冒烟测试。
使用方式
通过自然语言调用,例如“babysit”“watch this PR”“monitor”“keep it green”进入监控模式;“fix CI”“why is CI red”“loop on CI”进入一次性 CI 修复;“resolve conflicts”“rebase onto main”“update the branch”进入一次性冲突处理;“address the comments”“reply to the reviewers”“triage review comments”进入评论分诊;“is it ready”“what is blocking the merge”进入就绪报告。
无需设置问题:自动检测 PR、CI 平台和默认值(每 2 分钟轮询、自动解决噪音、不自动合并),然后开始。覆盖参数可内联给出,例如“poll every 5 minutes”“enable auto-merge”。
监控循环中,Phase 1 在前台运行一次并启动 watch;之后每个事件或 tick 运行 Phase 2-5,与状态文件对比,仅在变化时发声。状态快照写入 .claude/pr-babysitter/babysit-pr-{N}.md,该目录不会被暂存。
评论分诊自主运行,计划文件是审计轨迹而非审批门禁。仅在状态转换时发声,安静的轮询不输出任何内容。
适用场景
- 需要持续跟进一个已开启 PR,保持 CI 绿色、解决冲突、处理评审意见。
- 需要诊断 CI 失败原因并尝试修复。
- 需要判断 PR 是否可合并、有哪些阻塞项。
- 需要在 PR 合并后继续监控合并后状态并做只读生产冒烟测试。
限制
- 不创建或编辑 PR。
- 不评审或修复 diff 本身。
- 不处理 npm 发布 PR。
- 监控或修复代码本身不授权发布回复;只有在用户授权该沟通时,才发布回复、解决线程或请求评审,否则准备回复并报告。
- 跳过已关闭的 PR;除非被要求,跳过草稿(isDraft)。
- 不使用裸 --force;lease 被拒绝意味着他人已推送,应中止并通知而非覆盖。
- 分支上有多个作者时,rebase 会重写他们的提交,应改用 merge origin/{base}。
- 仅订阅的 watch 看不到冲突,因为基分支推进产生冲突时 GitHub 不发出 webhook。
- 在 Monitor 可用时使用 cron 会在每个安静 tick 唤醒 agent 并消耗 token;低于 2 分钟的轮询同样会消耗 GitHub 速率限制。
- 将 commit_id 不是 head SHA 的评审计为批准,会在下次推送时被“dismiss stale approvals”丢弃。
- 修复后使用 git add -A 会把 hook 产物(如根 schema.gql)提交进 PR,应扫描 git status --porcelain 并暂存具体路径。
- 先解决线程而不回复,评审者会看到静默解决并重新打开。
参考文件
- references/monitoring-setup.md:Phase 1、合并后的 PR 和停止时读取;包含 watch ladder、Monitor watch 脚本、cron 回退、合并后监控、状态文件格式、默认值、停止与生命周期。
- references/merge-conflicts.md:Phase 2;包含 mergeStateStatus 表、rebase 工作流、lockfile 与生成文件解决、中止条件。
- references/ci-platforms.md:Phase 3;包含 gh pr checks 字段与退出码、各平台日志与重试命令、Buildkite 认证链、失败分类。
- scripts/fetch-comments.sh:评论分诊;先运行 ${CLAUDE_SKILL_DIR}/scripts/fetch-comments.sh {N},输出一个包含所有评审、线程和 issue 评论的 JSON 文档,--help 打印输出结构。
- references/github-api.md:评论分诊;包含脚本输出契约、线程核算、锚点阶梯、等待回复规则、回复与解决。
- references/bot-patterns.md:评论分诊;包含评审者检测、严重程度映射、合并门禁、噪音标记、去重、误报。
- references/fix-plan-template.md:评论分诊;包含计划文件格式和合法的忽略原因。
- references/verification-gate.md:任何提交前;包含 lint、类型检查、测试、knip、散落产物扫描。
- references/git-resilience.md:git 命令挂起或瞬时失败时(fsmonitor 卡住、过期 index.lock、网络抖动)。
- evals/evals.json:仅在修改此技能时使用;PR 任务期间绝不使用。
相关技能
- pr-creator:开启或编辑 PR;babysitting 在 PR 存在后开始。
- planning:编写供新会话执行的计划。此技能写的修复计划是一个 PR 的审计轨迹,不是规划交付物。
- tidy:评审并修复 diff 本身;此技能应用 GitHub 评审评论。对监控作者的非平凡补丁运行它。
- autoship:npm 发布流水线;它监控自己的发布 CI,因此绝不要 babysit 它驱动的发布 PR。