shepherd-prs について
shepherd-prs は、GitHub CLI の手順に沿って Flutter の `flutter/flutter` リポジトリの PR を管理するスキルです。状態や CI の確認、`autosubmit` 適用前の条件確認、ブランチ更新、失敗チェックの再実行、コンフリクト対応を扱います。
主な機能
- 01PR の状態、レビュー、チェックを確認
- 02`autosubmit` 適用前の条件を検証
- 03外部コントリビューター PR のチーム承認を確認
- 04LUCI チェックの手動再実行を案内
- 05古いブランチ、`CICD` ラベル、コンフリクトに対応
活用シーン
- 01PR が `autosubmit` の要件を満たすか確認
- 02失敗した LUCI ビルドチェックを追跡
- 03古いブランチを更新して CI を再開
- 04対象ブランチの変更やマージコンフリクトを関係者に通知
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ flutter/ flutter --skill shepherd-prsインストール後、Claude Code で/shepherd-prsを入力して読み込まれたか確認します。
詳細
Pull Request の進行管理スキル(flutter/flutter)
このスキルでは、ネイティブの GitHub CLI(gh)コマンドを使用して、flutter/flutter リポジトリの pull request を進行管理するための標準的な手順を定義します。
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 のコメントを確認し、
auto-submitボットによってautosubmitラベルが過去に削除されたことがあるか、必ず確認してください:gh pr view <number> --repo flutter/flutter --json comments "autosubmit label was removed..."などの、auto-submitからのメッセージを探してください。- ラベルが過去に削除されていた場合は、ボットが示した正確な理由(CI チェックの失敗、承認不足、マージの競合、ブランチの古さなど)を特定し、
autosubmitを再付与する前に根本的な問題が解決されていることを確認してください。
- PR のコメントを確認し、
-
ベースコミットが最新か確認する(7 日超経過している場合):
- PR のベースコミットが古くなっていないか(7 日超経過しているか)確認してください。
- ベースコミットが 7 日を超えて古い場合は、
autosubmitの追加を試みる前に、必ずブランチの更新を実行するよう指示するか、実行してください:gh pr update-branch <number> --repo flutter/flutter - ブランチの更新が完了し、更新後のブランチで CI チェックが成功するまで、
autosubmitを付与しないでください。
-
必要なレビュアーの承認を厳密に確認する:
- サードパーティーのコントリビューターの PR(
CONTRIBUTOR、FIRST_TIME_CONTRIBUTOR、NONE)には、autosubmitを追加する前にチームメンバー(MEMBERまたはOWNER)による少なくとも 2 件の承認があることを厳密に確認してください。これにより、ボットがラベルを再び削除するのを防ぎます。 gh pr view <number> --repo flutter/flutter --json reviewsのreviewsを確認し、Flutter チームメンバーからの承認数を確かめてください。
- サードパーティーのコントリビューターの PR(
-
すべてのステータスチェックが 100% 成功していることを確認する:
- Flutter の
autosubmitボットは、CI チェックが 1 つでも失敗するとautosubmitラベルを自動的に削除します。 - すべてのステータスチェックが成功(
SUCCESS/pass)していることを確認してください。 - チェックに不安定なもの、失敗しているもの、再試行待ちのものがある場合:
- すぐに
autosubmitラベルを付与しないでください。 - 失敗しているチェックをユーザーに伝え、まず再試行するよう指示してください。
- 再試行されたチェックがすべて正常に完了した後に限り、
autosubmitラベルを付与してください:gh pr edit <number> --repo flutter/flutter --add-label autosubmit
- すぐに
- Flutter の
3. サードパーティーのコントリビューターによる PR(レビュアー 2 名の要件)
- サードパーティーのコントリビューター(
CONTRIBUTOR、FIRST_TIME_CONTRIBUTOR、NONE)が作成した pull request は、autosubmitボットがマージする前に、Flutter チームメンバー(MEMBERまたはOWNER)からの明示的な承認が 2 件必要です。 - サードパーティーの PR にチームメンバー 1 名だけが承認している状態で
autosubmitラベルを付与すると、autosubmitボットはラベルを削除します。 - 対応:
autosubmitを追加する前に、gh pr view <number> --repo flutter/flutter --json reviewsでチームメンバーからの承認が少なくとも 2 件あることを厳密に確認し、ボットがラベルを再び削除するのを防いでください。承認が 1 件しかない場合は、ラベルを付与する前に 2 人目のレビュアーにレビューを依頼するよう、ユーザーに伝えてください。
4. チェックの失敗と LUCI の手動再実行
- GitHub App の権限ポリシーにより、
flutter-dashboardが作成した LUCI チェックなどのサードパーティのチェック実行は、GitHub API 経由で再実行できません。 - 対応:
- 失敗したチェックの 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 の対応中)は、更新後のコミットで CI チェックを開始するために、CICDラベルが削除されているか、ラベルの追加が必要になることがよくあります。- ブランチ更新後は必ず
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 対応