cmux-and-worktrees について
`cmux`を使い、Git worktreeで並行するコーディングタスクを分離するスキルです。作成・再開、セットアップ、マージ、削除の手順と、破壊的操作の確認ルールを扱います。
主な機能
- 01worktreeの作成と再開
- 02worktreeの一覧表示と移動
- 03通常またはsquashでのマージ
- 04セットアップフックの生成と実行
- 05削除とマージの安全ルール
活用シーン
- 01リポジトリ内で複数のコーディングタスクを並行実行
- 02既存ブランチのworktreeで作業を再開
- 03タスク用worktreeを準備してマージ
- 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で利用可能かどうかを確認してください。
事前確認
- 現在のディレクトリが Git リポジトリ内にあることを確認します。
git rev-parse --is-inside-work-tree
cmuxが利用可能であることを確認します。
type cmux
- Git で worktree が無視されるようにします。
rg -n '^\.worktrees/$' .gitignore || echo '.worktrees/' >> .gitignore
- アクティブな 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
セットアップフックのワークフロー
- プロジェクト固有のセットアップフックを生成します。
cmux init
- 必要に応じて再生成します。
cmux init --replace
.cmux/setupをコミットして、今後の worktree にセットアップが自動的に引き継がれるようにします。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
コメント
Markdown 対応