triage-pr 是一个用于将拉取请求(PR)从草稿状态、CI 失败状态推进到可合并状态的技能。它根据 PR 的草稿状态选择两个阶段之一运行。
用途
该技能旨在自动化 PR 的 CI 修复与审查反馈处理流程。阶段 A 在 PR 仍为草稿时运行,负责检查失败的检查项、拉取 GitHub Actions 日志,并仅修复 PR 范围内的失败,循环直到 CI 通过或报告阻塞项。阶段 A 无人值守运行,除硬阻塞外无需人工介入。阶段 B 在 PR 标记为可审查后运行,等待配置的审查者,验证并提出处置建议,受 maxReviewRounds 限制。
主要能力
阶段 A 能力:通过 gh api 读取基础分支的必需状态检查,使用 gh pr checks --required 查看必需检查状态。对于每个失败的必需 Actions 检查,从 detailsUrl 解析运行 ID 并读取失败步骤日志。将失败分类为范围内、上游/基础漂移、lint 表面受限三类。范围内失败逐一修复,应用最小修复,重新运行具体失败命令并读取退出码,使用 Conventional Commit 提交并推送。处理基础分支漂移,通过合并或变基基础分支解决。重新监视 CI 直到通过或预算耗尽。
阶段 B 能力:等待配置的审查机器人报告,验证并提出处置建议。仅对配置的 reviewBots 采取行动,人工审查评论仅在最终报告中呈现,不会自动处理、回复或解决。
使用方式
自动模式:triage-pr,检测当前分支的 PR 及其阶段后运行。 显式 PR:triage-pr 123,按编号或 URL 操作特定 PR。 仅 CI:triage-pr --ci-only,运行阶段 A 并停止,即使 PR 已就绪。 干跑:triage-pr --dry-run,报告失败检查与未解决发现并提出修复,但不做任何更改(无提交、无推送、无线程回复)。 绿色时提升:triage-pr --promote,阶段 A 干净通过后将草稿翻转为就绪(然后继续进入阶段 B)。提升默认已启用(promoteOnGreen: true);--promote 在配置设置 promoteOnGreen: false 时强制本次运行提升,--no-promote 强制在绿色时停止。 自动应用阶段 B:triage-pr --auto-apply,强制本次运行走无人值守路径(计划评论 + 行动;无 Yes/No;无仅 Linear 提示)。覆盖 humanEnvelope: true。
配置
配置项位于同目录的 config.json 中,运行开始时读取并在整个运行中使用。主要配置项包括:reviewBots(视为一等 AI 审查反馈的 GitHub 登录名,默认 ["claude", "coderabbitai"])、reviewBotChecks(从 reviewBots 登录名到该机器人发布的提交状态或检查运行的映射,默认 {})、maxCiRounds(阶段 A 重新监视迭代的最大次数,默认 5)、maxReviewRounds(阶段 B 重新审查轮次的最大次数,默认 2)、replyOnAccept(接受的发现是否在解决线程前获得引用修复提交的事实性线程回复,默认 true)、promoteOnGreen(草稿→就绪翻转的单一控制,默认 true)、deferNonBlocking(默认 true)、humanEnvelope(默认 false)、reviewIdleMinutes(默认 10)、reviewWaitMaxMinutes(默认 20)。后续捕获(Linear)键与路由位于 references/follow-up-routing.md。
适用场景
适用于需要自动化处理 PR 的 CI 失败修复与审查反馈的仓库。特别适合使用 GitHub Actions 进行 CI、使用 AI 审查机器人(如 claude、coderabbitai)进行代码审查的项目。该技能与 send-it 0.8.0 集成,/send-it 打开或更新 PR 后作为最后一步调用此技能。
限制
合并到主分支永远不会自动化,始终由人工操作。仅配置的 reviewBots 在阶段 B 中被处理,人工审查评论不会被自动处理。lint 表面受限的失败(仅能通过更改 lint/格式/静态分析配置或添加忽略/禁用指令修复)不被视为范围内,需由开发者决定。阶段 A 的 CI 监视和阶段 B 的审查等待通常运行 10–30 分钟,需以宿主可维持的方式等待。在 Claude Code 中,前台命令上限为 10 分钟且裸 sleep 被阻止,需将等待作为后台命令运行;在 Cursor 中,每个等待作为单个有界 shell 命令运行,在终端超时内完成。