mcpField
L
land-to-main

land-to-main

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

land-to-main について

Land to Main は、リモートに触れずに作業ブランチをローカルの main に反映するスキルです。作業ツリーとテストを確認し、リベース後に早送りし、予期しない問題や複雑な失敗ではユーザーの指示を待ちます。

主な機能

  1. 01ブランチと作業ツリーの事前確認
  2. 02リベース前のコミット確認
  3. 03ローカル main へのリベース
  4. 04反映前の lint とテスト
  5. 05履歴を書き換えない早送り

活用シーン

  1. 01完了した作業ブランチのローカル反映
  2. 02未コミット変更の混入防止
  3. 03競合やチェック失敗時の安全な停止

インストール

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

$npx skills add https://github.com/anorth/agent-skills --skill land-to-main

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

詳細

main に取り込む

現在の作業ブランチを**ローカルの main**に取り込みます。リモートは対象外です。プッシュやプルは行わないでください。

前提条件(失敗時はすぐに停止)

  1. main にいないこと:HEAD が main の場合は拒否して停止します。
  2. 作業ツリーがクリーンであること:コミットされていない変更(ステージ済み、未ステージを問わず)がある場合は停止します。取り込みの一環としてコミットしてはいけません。
  3. すでに取り込み済みでないこと:作業ブランチと main が同じコミットを指している場合は、そのことを報告して停止します(作業はありません)。

ワークフロー

以下の手順を順番に実行します。予期しないエラーが発生した場合は、停止してユーザーの指示を待ちます。

1. 履歴を確認する

作業ブランチ上にあり、main にはないコミットを確認します(git log main..HEAD)。

  • 通常はそのまま取り込みます。
  • WIP/一時的なもの/「後で修正」といったコミットがある場合は、続行する前に確認してください。ユーザーから依頼がない限り、スカッシュや履歴の書き換えを行ってはいけません。
2. ローカルの main にリベースする
git rebase main
  • 単純なコンフリクト(明らかに片側だけの変更、または機械的に解決できるもの):解決し、git add を実行して続行します。
  • 複雑なコンフリクトや意味的なコンフリクト:停止してコンフリクトを説明し、指示を待ちます。
  • git rebase -i は絶対に使用しないでください。
3. Lint とテストを実行する
  • プロジェクトで文書化されている Lint とテストのエントリーポイントを優先します。
  • Lint を実行してからテストを実行します。どちらかが失敗した場合は直ちに停止し、fast-forward してはいけません。
  • プロジェクトでチェック方法として明示されていない限り、本番用のビルド全体を実行してはいけません。
4. main を fast-forward する

通常、main は別のワークツリーでチェックアウトされているため、ここで git checkout main を実行してはいけません。

Lint とテストの成功後に限り、次の手順を実行します。

  1. main があるワークツリーを確認します:git worktree list
  2. 作業ブランチのワークツリーにとどまったまま、そのチェックアウトをこのブランチの先端に fast-forward します。
git -C <main-worktree-path> merge --ff-only <work-branch-tip>

<work-branch-tip> には作業ブランチ名またはその SHA を使用します。

  • --ff-only のみ使用します。FF ができない場合は停止して確認し、マージコミットを作成してはいけません。
  • main のワークツリーにローカル変更がある場合、マージは失敗するはずです。その場合は中止して報告してください。そこで変更を汚染するマージや stash を行ってはいけません。
  • main を含むワークツリーがない場合は、直接 git push . HEAD:main を実行できます。強制プッシュはしないでください。
  • 作業ブランチにとどまってください。ブランチを削除してはいけません。
5. 確認する

作業ブランチと main が同じコミットであることを確認します(例:git rev-parse HEAD と git -C <main-worktree-path> rev-parse HEAD)。ブランチ名、新しい main の先端(短縮 SHA とサブジェクト)、チェックが成功したことを簡潔に報告します。

厳守事項

  • 対象はローカルの main のみです。リモートからの fetch/pull/push は行いません。
  • ユーザーから明示的な依頼がない限り、コミット、amend、スカッシュ、その他の履歴の書き換えを行ってはいけません。
  • ブランチを削除してはいけません。
  • 作業ブランチで作業を終え、main を fast-forward して同じ状態にします。
  • 進め方に迷った場合は、停止してユーザーの指示を待ちます。

コメント