com um clique
watch-pr
监控 PR 的 required checks 并在失败时自愈。 当需要监控 PR 的 required checks 并在失败时自愈时使用。
Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Menu
监控 PR 的 required checks 并在失败时自愈。 当需要监控 PR 的 required checks 并在失败时自愈时使用。
Instalar com Codex ou Claude Copie este prompt, cole no Codex, Claude ou outro assistente e deixe que ele revise a página da skill e instale para você.
Baseado na classificação ocupacional SOC
标记任务为阻塞状态并记录原因。 当任务因外部阻塞无法推进、需要挂起并记录原因时使用。
取消不再需要的任务并转移。 当某个任务不再需要、应从 active 工作中撤下时使用。
关闭 Code Scanning 告警并记录理由。 当某条 Code Scanning 告警已处理或需按理由关闭时使用。
关闭 Dependabot 安全告警并记录理由。 当某条 Dependabot 安全告警已处理或需按理由关闭时使用。
标记任务完成并归档。 当任务工作已完成并验证、需要收尾归档时使用。
从平台 Issue 评论还原本地任务文件。 当本地任务文件缺失、需要从平台 Issue 评论还原时使用。
| name | watch-pr |
| description | 监控 PR 的 required checks 并在失败时自愈。 当需要监控 PR 的 required checks 并在失败时自愈时使用。 |
在 create-pr 之后持续监控 PR 的 required CI checks:全绿则引导合入,required check 失败则自动拉日志、本地修复并推送、重新轮询;达修复上限或属非代码层/不可定位失败则停止并向用户求助。平台专属命令集中在 .agents/rules/pr-checks-commands.md,本技能正文保持平台无关。
git push 到 PR 分支,但推送前必须本地跑通相关测试;修复尝试有硬上限(默认 2);仅对可定位的代码层失败(lint / format / test / 类型 / 构建)自愈,非代码层(网络 / 权限 / 外部服务 / flaky)一律转求助出口。#NN / TASK-id 入参一律按任务短号解析(见 .agents/rules/task-short-id.md);PR 号只走 --pr <number> / PR URL / 省略(当前分支),不复用裸数字语法。版本戳规则:创建或更新 task.md frontmatter 时,先读取 .agents/rules/version-stamp.md,并写入或刷新 agent_infra_version。
如果
{task-id}入参匹配^[#]?[0-9]+$(裸数字或带#前缀),先读取.agents/rules/task-short-id.md的「SKILL 入参解析」段执行解析;后续命令视{task-id}为解析后的全长TASK-YYYYMMDD-HHMMSS形式。
确认前置条件后、本轮第一个产出动作之前,向 task.md ## 活动日志 追加一条 started 标记(与本轮 done 条目同基名 + [started] 后缀,note 用 started):
- {YYYY-MM-DD HH:mm:ss±HH:MM} — **Watch PR (Round {N}) [started]** by {agent} — started
ai task log 会把它与完成时写入的 done 条目配对成一行(进行中 → 已完成)。约定见 .agents/rules/task-management.md 的「Activity Log started / done 双标记约定」。
按以下确定性分支解析出目标 PR 号 {pr#} 与可选 {task-id}:
.agents/rules/pr-checks-commands.md 取当前分支的 PR 号;随后按下方「反查任务」确定 {task-id}。#NN / 裸数字 / TASK-id,任务锚定主路径):匹配 ^[#]?[0-9]+$ 时按「任务入参短号别名」解析为完整 {task-id}(解析失败直接透传退出码,不重写错误处理);TASK-id 直接采用。读 .agents/workspace/active/{task-id}/task.md 取 pr_number 作为 {pr#};pr_number 为空时按「错误处理」提示先 create-pr,停止。--pr <number> 或 PR URL):直接取该 PR 号为 {pr#};随后按「反查任务」确定 {task-id}。.agents/workspace/active/*/task.md 中查找 pr_number == {pr#} 的任务;命中则取该 {task-id}(任务锚定);未命中则进入「仅监控」降级路径(无 {task-id},跳过步骤 5/6)。执行此步骤前,先读取 reference/monitor-and-heal.md 与 .agents/rules/pr-checks-commands.md。
按 .agents/rules/pr-checks-commands.md 的监控命令对 {pr#} 的 required checks 轮询(含总时长上限,默认 30 分钟),按 reference/monitor-and-heal.md 的「结果分类」分为「全绿」/「失败」/「挂起」三个场景,分别进入步骤 7 全绿出口、步骤 3 自愈、或步骤 4 求助。
执行此步骤前,先读取 reference/monitor-and-heal.md 的「自愈决策树」与 .agents/rules/pr-checks-commands.md 的「解析失败 run id 并拉日志」。
对失败 check:先按规则确定性解析其失败 run 并拉取失败日志、判定失败类别;本地修复前先读取 .agents/rules/debugging-guide.md,按其四阶段流程定位根因,禁止盲目改代码重试;仅当属可定位的代码层失败时,本地最小化修复、运行对应测试通过后暂存并提交本次修复再推送(git add 仅相关文件 → 按 .agents/rules/commit-and-pr.md git commit → git push 到当前 PR 分支,并记录 commit SHA),再回到步骤 2 重新监控。修复尝试计数,达硬上限(默认 2)或 run 不可定位 → 转步骤 4。
当自愈达上限、失败属非代码层、run id 不可定位、或步骤 2 挂起超时时,停止本轮并向用户汇总:阻塞原因、已尝试的修复(含每次修复 commit)、相关失败 job 与 run/log 链接(报告结构见 reference/monitor-and-heal.md 的「求助报告模板」)。不渲染下一步命令,等待用户裁定。随后在任务锚定路径下执行步骤 5/6 记录本轮结果。
仅任务锚定路径执行;「仅监控」降级路径跳过本步骤与步骤 6。
获取当前时间:
date "+%Y-%m-%d %H:%M:%S%z" | sed 's/\([+-][0-9][0-9]\)\([0-9][0-9]\)$/\1:\2/'
更新 .agents/workspace/active/{task-id}/task.md:
assigned_to:{当前代理}updated_at:{当前时间}agent_infra_version:按 .agents/rules/version-stamp.md 取值pr_status(保持 created)与 current_step## 活动日志(不要覆盖之前的记录;{N} = 本任务已有 Watch PR 条目数 + 1):
- {YYYY-MM-DD HH:mm:ss±HH:MM} — **Watch PR (Round {N})** by {agent} — {全绿:all required checks green / 阻塞:blocked: {简述}}
仅任务锚定路径执行。
运行完成校验:
node .agents/scripts/validate-artifact.js gate watch-pr .agents/workspace/active/{task-id} --format text
处理结果:
将校验输出保留在回复中作为当次验证输出。没有当次校验输出,不得声明完成。
任务锚定路径仅在校验通过后执行本步骤。
重要:以下「下一步」中列出的所有 TUI 命令格式必须完整输出,不要只展示当前 AI 代理对应的格式。如果
.agents/.airc.json中配置了自定义 TUI(customTUIs),读取每个工具的name和invoke,按同样格式补充对应命令行(${skillName}替换为技能名,${projectName}替换为项目名)。 渲染最终输出前,先读取.agents/rules/next-step-output.md并落实其两类规则:(1) 「下一步」命令把{task-ref}渲染为短号#NN(未分配/已释放时回退完整 TASK-id);(2) 在面向用户输出的绝对最后一行追加Completed at收尾行(成功、错误、早退等任何面向用户输出都适用,不限于校验通过的成功态)。
按场景输出:
「全绿」+ 任务锚定:说明所有 required checks 已通过、PR 可合入,并按下方模板渲染下一步({task-ref} 替换为短号):
下一步 - 完成并归档任务:
- Claude Code / OpenCode:/complete-task {task-ref}
- Gemini CLI:/agent-infra:complete-task {task-ref}
- Codex CLI:$complete-task {task-ref}
「全绿」+ 仅监控降级:说明 PR 可合入;本次无关联任务,请对相应任务运行 complete-task(无 {task-ref} 可渲染时不强行输出短号命令块)。
「阻塞」:仅输出步骤 4 的阻塞说明,不推荐下一步命令。
完成检查清单后立即停止。全绿出口等待用户运行 complete-task;阻塞出口等待用户裁定。
create-pr 创建或显式 --pr / 当前分支可定位)。--pr <number>。pr_number,且未传 --pr、当前分支也无 PR):提示「请先运行 create-pr,或用 --pr <number> 指定 PR」,停止。task-short-id.js 的退出码与错误信息,不重写。