landing-prs について
PR の着地をコーディングエージェントに案内するスキルです。事前チェック、必要に応じたリベース、CI 結果に基づくマージまでを扱い、明示的な指示を必須とし、チェックや保護設定で阻まれた場合は停止します。
主な機能
- 01明示的な着地指示を必須化
- 02事前チェックの実行
- 03遅れているブランチのリベース
- 04リベース後にリース保護付きでプッシュ
- 05CI 結果に基づくマージ判定
- 06マージとリリース状況の報告
活用シーン
- 01明示的な依頼を受けて PR をマージ
- 02マージ前に遅れている PR ブランチを更新
- 03CI やブランチ保護で阻まれた際に停止
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ bostonaholic/ skills --skill landing-prsインストール後、Claude Code で/landing-prsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agents/openai.yamlscripts/ci-gate.mjsmerge.shpreflight.shshared/skill-calls.md詳細
PR のマージ
gh pr mergeは取り消せません。- 「ship it」「land the PR」または
/landing-prsと直接依頼された場合にのみ実行してください。承認済み、CI がすべて成功、または完了しているように見える PR であっても、マージの指示ではありません。 - この依頼には、リベースと、遅れているブランチに必要なリースで保護された強制プッシュも含まれます。どちらもユーザーに戻して対応を求めてはいけません。
- 以下の CI ゲートを通過したら、再度確認を求めずにマージしてください。
スクリプトは <skill-dir>/scripts/ にあり、リポジトリ内の PR のヘッドブランチで実行します。
プッシュする前に
"<skill-dir>/scripts/preflight.sh" [<n>] を実行します。ユーザーが引数を指定した場合は、その引数(数字のみ)を渡してください。終了コードが 0 なら、出力された KEY=VALUE の行を以下で使用します。それ以外の終了コードの場合は停止し、標準エラーを報告してください。ブランチが異なることを示す終了コード 4 の場合は、gh pr checkout <n> を実行してから再実行するようユーザーに伝えてください。
遅れている場合のリベース
BEHIND が 0 を上回る場合にのみリベースします。
git rebase refs/remotes/<REMOTE>/<BASE_REF>を実行します。MERGESが0を上回る場合は、--rebase-mergesを追加します。- コンフリクトが発生した場合は
git rebase --abortを実行し、modernizing-prsと<n>を指定して Skill ツールを呼び出します(スキル呼び出しを参照)。処理が完了してプッシュされたら続行し、停止した場合は停止してその報告を伝えてください。インストールされていない場合は、コンフリクトしたパスを示し、Next: /modernizing-prs <n>, then /landing-prs <n>で終えてください。
マージ前の手順とプッシュ
プロジェクトのエージェント向け指示で、マージ前に実行する手順(バージョン更新など)が指定されている場合は、今すぐ実行してください。停止した場合は、そのまま停止してください。
次にプッシュします。このスキル自身がリベースを実行していて、まだプッシュしていない場合は、git push --force-with-lease=<HEAD_REF>:<LEASE> <REMOTE> HEAD:<HEAD_REF> を実行します。それ以外の場合(modernizing-prs がプッシュした後も含む)は git push を実行します。単独の --force は絶対に使用しないでください。プッシュが拒否された場合は、Git のメッセージをそのまま報告し、再試行せずに停止してください。
CI ゲート
node "<skill-dir>/scripts/ci-gate.mjs" <URL> をバックグラウンドで実行し、その終了コードに従って処理します。
0(merge):HEADを使って「マージ」に進みます。10(rebase):プッシュする前にを再実行し、リベースしてプッシュし、ゲートを再実行します。1 回の実行でリベースが 3 回に達したら停止し、「base keeps moving」と伝えてください。1(fail)、11(unstable)、124(timeout):判定結果を伝えて停止し、FAILEDとなった各チェックを明示してください。3(stop):STATUS(BLOCKED、DIRTY、DRAFTなど)をそのまま報告して停止してください。名前のないステータスでマージしてはいけません。143:ハーネスによって終了されています。バックグラウンドで再実行してください。- その他:標準エラーを報告して停止してください(
127はコマンドが見つからないことを示し、チェックの失敗ではありません)。
マージ
"<skill-dir>/scripts/merge.sh" <URL> <HEAD> を実行します。
0:MERGEDコミットを報告します。3:ゲート通過後にヘッドが移動しています。CI ゲートを 1 回再実行してください。2 回目も3の場合は停止します。5:まだマージされていません(マージキューまたは自動マージ)。その旨を報告してください。- ブランチ保護による拒否(
4)を含む、それ以外の終了コードの場合は、標準エラーをそのまま報告して停止してください。--adminやその他のバイパス手段は絶対に使用しないでください。
マージによって起動するリリースについては gh run list を参照してください。完了したと決めつけてはいけません。