mcpField
C
cmux-and-worktrees

cmux-and-worktrees

github.com/rami-maalouf開発244 回インストール1 週間前に更新
リポジトリ

cmux-and-worktrees について

`cmux`を使い、Git worktreeで並行するコーディングタスクを分離するスキルです。作成・再開、セットアップ、マージ、削除の手順と、破壊的操作の確認ルールを扱います。

主な機能

  1. 01worktreeの作成と再開
  2. 02worktreeの一覧表示と移動
  3. 03通常またはsquashでのマージ
  4. 04セットアップフックの生成と実行
  5. 05削除とマージの安全ルール

活用シーン

  1. 01リポジトリ内で複数のコーディングタスクを並行実行
  2. 02既存ブランチのworktreeで作業を再開
  3. 03タスク用worktreeを準備してマージ
  4. 04マージ後にworktreeを整理

インストール

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

$npx skills add https://github.com/rami-maalouf/skills --skill cmux-and-worktrees

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

詳細

cmux と Worktree

各タスクを Git worktree で分離し、並行して安全にコーディングセッションを実行します。

必ず守るコマンドルール

  • このスキルではすべてのコマンドに cmux を使用してください。
  • 通常の運用では git worktree に置き換えないでください。
  • cmux コマンドが失敗した場合は、まず type cmux で利用可能かどうかを確認してください。

事前確認

  1. 現在のディレクトリが Git リポジトリ内にあることを確認します。
git rev-parse --is-inside-work-tree
  1. cmux が利用可能であることを確認します。
type cmux
  1. Git で worktree が無視されるようにします。
rg -n '^\.worktrees/$' .gitignore || echo '.worktrees/' >> .gitignore
  1. アクティブな worktree を確認します。
cmux ls

基本コマンド

  • 新しい分離タスクを作成:cmux new <branch>
  • 既存のタスクを再開:cmux start <branch>
  • worktree に移動:cmux cd [branch]
  • worktree を一覧表示:cmux ls
  • メインのチェックアウトにマージ:cmux merge [branch] [--squash]
  • worktree とブランチを削除:cmux rm [branch | --all] [--force]
  • セットアップフックを生成:cmux init [--replace]
  • レイアウト設定の表示/設定:cmux config、cmux config set layout <nested|outer-nested|sibling> [--global]
  • ツールを更新:cmux update
  • バージョンを表示:cmux version

正確なワークフロー

既存ブランチ -> Worktree
cd /path/to/repo
cmux ls
cmux start <existing-branch>
cmux cd <existing-branch>
bash .cmux/setup

例:

cmux start eng-1296-onboarding-v2-question-view-context-dedupe
cmux cd eng-1296-onboarding-v2-question-view-context-dedupe
bash .cmux/setup
新しいブランチ + 新しい Worktree
cd /path/to/repo
cmux new <new-branch>
cmux cd <new-branch>
bash .cmux/setup

例:

cmux new codex/pr1-onboarding-demographics-profile-report
cmux cd codex/pr1-onboarding-demographics-profile-report
bash .cmux/setup

セットアップフックのワークフロー

  1. プロジェクト固有のセットアップフックを生成します。
cmux init
  1. 必要に応じて再生成します。
cmux init --replace
  1. .cmux/setup をコミットして、今後の worktree にセットアップが自動的に引き継がれるようにします。
  2. cmux new と cmux start の実行後は毎回セットアップを実行します。
bash .cmux/setup

ブランチとパスの動作

  • new は「新しいブランチ + 新しい worktree」として扱います。
  • start は「既存の worktree/セッションを再利用」として扱います。
  • ネストされたレイアウトでは、worktree のパスが .worktrees/<branch>/ の下になることを想定します。
  • ブランチ名がサニタイズされることを想定します(例:feature/foo はパス名で feature-foo になります)。
  • 1 つのブランチを同時にチェックアウトできる worktree は 1 つだけです。

安全ルール

  • cmux rm --all の前に確認を求めてください。
  • cmux rm --force の前に確認を求めてください。
  • ユーザーが完全なマージコミットを指定しない限り、履歴をコンパクトにするため cmux merge <branch> --squash を優先してください。
  • マージ前に worktree の変更がコミットされていることを確認してください。
  • マージが成功したら、ブランチと worktree のずれを減らすため、完了した worktree を削除してください。

トラブルシューティング

  • Not in a git repo:リポジトリのルートに移動してから、再実行してください。
  • Worktree not found:cmux ls を実行し、適切なブランチを選ぶか、cmux new <branch> で作成してください。
  • Branch already checked out:cmux ls を実行し、既存の worktree パスを使用してください。
  • 未コミットの変更によりマージできない:worktree 内でコミットするか、変更をスタッシュしてから再試行してください。
  • dirty なツリーのため削除できない:まず状態をクリーンにするか、明示的な確認を得た場合に限り cmux rm --force を使用してください。
  • Expo Router で予期せず「Welcome to Expo」と表示される:残存している expo/metro プロセスを終了し、対象の worktree から --clear を付けて再起動してから、開発クライアントを再度開いてください。
  • worktree からモバイル開発を行う:
cd apps/mobile
npm run dev -- --clear --host lan

コメント