关于 shepherd-prs
shepherd-prs 是用于 Flutter flutter/flutter 仓库 PR 跟进的技能,依据 GitHub CLI 流程检查状态、审查和 CI。它还规定了应用 autosubmit 前的验证,以及分支更新、重跑失败检查和处理冲突的步骤。
主要功能
- 01查询 PR 状态、审查和检查结果
- 02应用 autosubmit 前执行验证
- 03核对第三方 PR 的团队审批数
- 04指导手动重跑 LUCI 检查
- 05处理过期分支、CICD 标签及冲突
适用场景
- 01判断 PR 是否满足 autosubmit 条件
- 02跟进失败的 LUCI 构建检查
- 03更新过期分支并恢复 CI 流程
- 04发现目标分支变更或合并冲突时通知相关人员
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ flutter/ flutter --skill shepherd-prs安装后在 Claude Code 中输入/shepherd-prs确认已加载。
详细介绍
PR 跟进技能(flutter/flutter)
此技能定义了使用原生 GitHub CLI(gh)命令跟进 flutter/flutter 仓库中拉取请求的规范操作手册。
1. 检查 PR 状态
当用户询问开放或已批准的 PR 状态时:
- 列出你自己的开放 PR:
gh pr list --repo flutter/flutter --author <username> --state open --json number,title,url,mergeable,reviewDecision - 列出正在跟进/已评审的第三方 PR:
gh pr list --repo flutter/flutter --search "reviewed-by:<username> -author:<username> is:open" --json number,title,url,mergeable,reviewDecision - 检查 PR 的详细检查结果:
gh pr checks <number> --repo flutter/flutter - 检查评审、标签和评论:
gh pr view <number> --repo flutter/flutter --json labels,reviewDecision,reviews,comments
2. 自动提交前的验证规则
在应用或重新应用 autosubmit 标签(gh pr edit <number> --repo flutter/flutter --add-label autosubmit)之前,务必执行以下预检,以确保 autosubmit 机器人不会拒绝或移除该标签:
-
在评论中检查此前移除
autosubmit的记录:- 务必检查 PR 评论,确认
autosubmit标签此前是否被auto-submit机器人移除:gh pr view <number> --repo flutter/flutter --json comments - 查找来自
auto-submit的消息,例如"autosubmit label was removed..."。 - 如果此前移除过该标签,请确认机器人给出的具体原因(例如 CI 检查失败、批准数不足、合并冲突或分支过期),并在重新应用
autosubmit前确认相关问题已解决。
- 务必检查 PR 评论,确认
-
确认基准提交是否过期(超过 7 天):
- 检查 PR 的基准提交是否过期(超过 7 天)。
- 如果基准提交超过 7 天,在尝试添加
autosubmit前,务必指示用户更新分支或执行分支更新:gh pr update-branch <number> --repo flutter/flutter - 在分支更新完成且更新后分支上的 CI 检查通过之前,不要应用
autosubmit。
-
严格确认所需的评审者批准数:
- 在添加
autosubmit前,严格确认第三方贡献者 PR(CONTRIBUTOR、FIRST_TIME_CONTRIBUTOR、NONE)至少获得 2 位团队成员(MEMBER或OWNER)的批准,以免机器人再次移除该标签。 - 检查
gh pr view <number> --repo flutter/flutter --json reviews中的reviews,确认 Flutter 团队成员的批准数。
- 在添加
-
确认所有状态检查均 100% 通过:
- 任何 CI 检查失败时,Flutter 的
autosubmit机器人都会自动移除autosubmit标签。 - 确认所有状态检查均已通过(
SUCCESS/pass)。 - 如果任何检查不稳定、失败或正在等待重试:
- 不要立即应用
autosubmit标签。 - 告知用户失败的检查,并让其先重试。
- 只有在所有重试的检查均成功完成后,才应用
autosubmit标签:gh pr edit <number> --repo flutter/flutter --add-label autosubmit
- 不要立即应用
- 任何 CI 检查失败时,Flutter 的
3. 第三方贡献者 PR(要求 2 位评审者)
- 第三方贡献者(
CONTRIBUTOR、FIRST_TIME_CONTRIBUTOR、NONE)创建的拉取请求,需要先获得 Flutter 团队成员(MEMBER或OWNER)的 2 项明确批准,autosubmit机器人才能合并。 - 如果第三方 PR 仅获得一位团队成员批准,却已应用
autosubmit标签,机器人会移除该标签。 - 操作:通过
gh pr view <number> --repo flutter/flutter --json reviews严格确认至少有 2 位团队成员批准后,再添加autosubmit,以免机器人再次移除该标签。如果只有 1 项批准,请提醒用户在应用该标签前请求第二位评审者。
4. 检查失败与手动重新运行 LUCI
- 由于 GitHub App 权限策略,无法通过 GitHub API 重新运行第三方检查(例如由
flutter-dashboard创建的 LUCI 检查)。 - 操作:
- 输出失败检查对应的确切 LUCI Buildbucket 链接(例如
https://cr-buildbucket.appspot.com/build/<build_id>)。 - 指示用户打开该 URL,并在 LUCI 页面上点击 Retry Build。
- 如果手动重试后检查仍然失败,请检查失败日志(
gh pr view <number> --repo flutter/flutter或flutter-pr-checks-finder),并向用户总结失败原因。
- 输出失败检查对应的确切 LUCI Buildbucket 链接(例如
5. 过期分支更新、CICD 标签与令牌权限范围
- 如果 PR 分支未与
master保持同步(包括基准提交超过 7 天的情况):- 在尝试添加
autosubmit之前,务必使用gh pr update-branch <number> --repo flutter/flutter更新分支。
- 在尝试添加
- 重新添加
CICD标签:- 使用
gh pr update-branch更新分支后(或在协助处理尚未运行 CI 的 PR 时),CICD标签通常会被移除,或者需要该标签才能在更新后的提交上启动 CI 检查。 - 分支更新后,务必检查是否存在
CICD标签;如果缺失,则重新添加:gh pr edit <number> --repo flutter/flutter --add-label CICD
- 使用
- 令牌权限范围过期错误:如果因工作流文件权限而导致更新失败(
ERROR: ... lacks the "workflow" scope),请指示用户刷新 CLI 权限范围:gh auth refresh -h github.com -s workflow
6. 目标分支修正与合并冲突
- 已撤销审核警告:更改 PR 的目标分支通常会导致 GitHub 自动撤销现有批准。如果目标分支已更改,请提醒用户,以便他们在 GitHub 上重新批准。
- 合并冲突:如果 PR 存在冲突(
MERGEABLE为CONFLICTING),请通知用户,以便作者解决冲突。
评论
支持 Markdown