用途:在推送 PR 后自动完成原本需要手动反复操作的反馈闭环。它使用 gh run watch 等待 CI 完成(等待期间不消耗会话周期),再轮询 PR 状态,发现问题时按优先级派发对应的修复技能,全部变绿或达到迭代上限后退出。
主要能力
- 前置校验:确认 gh CLI 已安装并认证,当前分支存在开放 PR,并显示 PR 编号和 URL;校验失败则报错停止。
- 等待 CI:通过 gh run list 获取当前分支最新工作流运行,用 gh run watch RUN_ID --exit-status 阻塞等待;若不可用则回退到轮询脚本。
- 状态轮询:运行 bash <skill-path>/scripts/poll_pr_status.sh,返回包含 branch、pr_number、checks_total、checks_passed、checks_failed、checks_running、has_conflict、coderabbit_check(none/pending/pass/fail)、coderabbit_comments、all_green 的 JSON。all_green 为真需同时满足:无冲突、无 CI 失败、无运行中检查、CodeRabbit 检查非 pending 且非 none、无未解决内联评论、至少存在一个 CI 检查。
- 按优先级修复:每个周期只处理一类问题。优先级 1 合并冲突,调用 /fix-conflict;优先级 2 CI 失败(checks_failed > 0 且 checks_running == 0),调用 /fix-ci;优先级 3 CodeRabbit 评论(coderabbit_check == "pass"、coderabbit_comments > 0 且 CI 通过),调用 /fix-review。修复推送后回到步骤 1 重新轮询。
- 处理等待状态:checks_running > 0 时等待;coderabbit_check 为 pending 或 none 时短睡 60-120 秒后仅重跑轮询,最多重试 5 次;首轮 checks_total == 0 时回到步骤 1。检查运行中或评审未完成时不得派发修复。
- 退出条件:all_green 为真则成功退出;达到最大迭代则打印剩余问题退出;同一失败连续 3 次则提示需手动介入后退出。
使用方式:/pr-guardian 使用默认值(间隔 2 分钟,最大 20 次迭代);/pr-guardian --interval 3、/pr-guardian --max-iterations 10 可自定义。该技能只编排 /fix-conflict、/fix-ci、/fix-review,不重写其逻辑;各修复技能自行负责提交与推送。仅依赖 gh CLI 和标准 git 命令,不依赖 Synapse 环境。
限制:若 gh run watch 不可用(无运行记录或 gh 版本较旧),回退为轮询检测 checks_running > 0 并在下一周期重试。CodeRabbit 检查状态与内联评论数分开跟踪,pending 时不可派发修复。/fix-review 会先核对当前代码再修复,不盲目套用建议。费用、价格与效果信息暂未提供。