mcpField
L
landing-prs

landing-prs

github.com/bostonaholic開発267 回インストール今日更新
リポジトリ

landing-prs について

PR の着地をコーディングエージェントに案内するスキルです。事前チェック、必要に応じたリベース、CI 結果に基づくマージまでを扱い、明示的な指示を必須とし、チェックや保護設定で阻まれた場合は停止します。

主な機能

  1. 01明示的な着地指示を必須化
  2. 02事前チェックの実行
  3. 03遅れているブランチのリベース
  4. 04リベース後にリース保護付きでプッシュ
  5. 05CI 結果に基づくマージ判定
  6. 06マージとリリース状況の報告

活用シーン

  1. 01明示的な依頼を受けて PR をマージ
  2. 02マージ前に遅れている PR ブランチを更新
  3. 03CI やブランチ保護で阻まれた際に停止

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/bostonaholic/skills --skill landing-prs

インストール後、Claude Code で/landing-prsを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

agents/
openai.yaml
scripts/
ci-gate.mjs
merge.sh
preflight.sh
shared/
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 を上回る場合にのみリベースします。

  1. git rebase refs/remotes/<REMOTE>/<BASE_REF> を実行します。MERGES が 0 を上回る場合は、--rebase-merges を追加します。
  2. コンフリクトが発生した場合は 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 を参照してください。完了したと決めつけてはいけません。

コメント