AI別 Git Worktree 運用ガイド(VSCode 拡張向け)
このドキュメントは、Codex / GitHub Copilot Chat / Claude Code を それぞれ別 worktree に固定して安全に並行作業するための運用ルールです。
1. 目的
- AIごとの作業領域を分離し、誤編集を防ぐ
- 作業履歴を追いやすくする
mainへの取り込みを定型化し、事故を減らす
2. 割り当てルール
以下のように「AI = worktree = ブランチ系統」を固定します。
Codex:broadcast-Overlay(例:codex/*ブランチ)Copilot Chat:broadcast-Overlay-copilot-ut(例:copilot/*ブランチ)Claude Code:broadcast-Overlay-claude(例:claude/*またはdocs/*ブランチ)
AI別の指示ファイル:
Codex:AGENTS.mdGitHub Copilot Chat:.github/copilot-instructions.mdClaude Code:CLAUDE.md
重要:
- 1つのVSCodeウィンドウは1つのworktreeのみ開く
- 1つのAIは自分のworktree以外で作業しない
3. VSCode 運用ルール
3.1 ウィンドウ運用
- 各AI専用に VSCode ウィンドウを分ける
- ウィンドウタイトルにAI名を含める(例:
[CODEX] broadcast-Overlay) - フォルダは必ず worktree のルートを直接開く
3.2 拡張利用ルール
- Codex 拡張は Codex 専用ウィンドウだけで使う
- Copilot Chat は Copilot 専用ウィンドウだけで使う
- Claude Code は Claude 専用ウィンドウだけで使う
3.3 プロンプト固定文(毎回先頭)
各AIの最初の指示に以下を入れる:
このセッションでは現在のworktree配下のみ編集してください。他ディレクトリ参照・編集は禁止です。
4. Git ブランチルール
mainで直接作業しない- AIごとにブランチプレフィックスを固定
- Codex:
codex/* - Copilot:
copilot/* - Claude:
claude/*/docs/*
- Codex:
- コミットメッセージにAI識別子を含める(推奨)
- 例:
codex: fix parser edge case
- 例:
- 全AI共通で履歴改変を禁止
git rebasegit pull --rebasegit push --force/git push --force-with-leasegit reset --hard
4.1 新規 worktree 作成手順
新しい worktree を追加するときは scripts/dev/add-worktree.ps1 を使う。 これは git worktree add を実行したあと、自動で .mcp.json を生成する。
powershell
# 既存ブランチをチェックアウト
pwsh ./scripts/dev/add-worktree.ps1 -Path ../broadcast-Overlay-foo -Branch feature/foo
# 新規ブランチを作成
pwsh ./scripts/dev/add-worktree.ps1 -Path ../broadcast-Overlay-bar -Branch claude/bar -NewBranch.mcp.json が必要な理由:
- spec-workflow MCP サーバが Claude Code セッション開始時に spawn される
- 中身に worktree の絶対パスが入るため、git 管理外(
.gitignore済み)で worktree ごとに必須 - ダッシュボード(
http://localhost:5000)は別プロセスとして常時起動しておく前提。 各 worktree で Claude Code を起動すると、その MCP サーバが自動でダッシュボードに登録される
既存の worktree で .mcp.json が無い場合や再生成したい場合:
powershell
pwsh ./scripts/dev/setup-worktree-mcp.ps1 # 既存があれば skip
pwsh ./scripts/dev/setup-worktree-mcp.ps1 -Force # 強制上書きダッシュボードの起動・停止は本ガイドの対象外(運用担当が別途管理)。
5. 日次フロー(推奨)
- 各worktreeで
git fetch --all --prune - 各AIは自分のブランチだけ更新
- PR or 統合ブランチに集約
- 統合担当が
mainへ取り込み typecheck/test実行後に push
6. 取り込みフロー(このリポ向け)
定期取り込みは以下の順で実施:
mainの作業ツリーをクリーンにするscripts/dev/merge-worktrees.ps1を実行- 必要なら
-Pushを付けて反映
例:
powershell
# まず確認
./scripts/dev/merge-worktrees.ps1 -DryRun -AllowDirty
# 実行
./scripts/dev/merge-worktrees.ps1
# pushまで(フックをスキップする場合)
./scripts/dev/merge-worktrees.ps1 -Push -NoVerify6.1 AI別の取り込み責務
Codex (main worktree): 取り込み実行担当scripts/dev/merge-worktrees.ps1を実行してmainへ統合
Copilot (copilot-ut worktree): 取り込み準備担当git fetch --all --prune/git merge main/git pushで最新化
Claude (docs worktree): 取り込み準備担当git fetch --all --prune/git merge main/git pushで最新化
補足:
- 実際の「取り込み実行」は原則
mainworktree のみで行う
7. 禁止事項
- 他worktreeのパスを直接編集する
- AIに「親ディレクトリを再帰編集」させる
mainへ直接コミット- detached HEAD worktree で開発継続
8. トラブル時ルール
- 他worktreeへの誤編集を検知したら即停止
- どのAIウィンドウで実行したか記録
- 取り込み前に
git status --short --branchを必ず確認
9. 最小チェックリスト
作業開始前:
- [ ] 正しいworktreeを開いている
- [ ] 正しいブランチにいる
- [ ] AIに「このworktree配下のみ編集」を指示した
マージ前:
- [ ] 変更は自worktree配下のみ
- [ ]
typecheck実行済み - [ ] 必要なテストを実行済み
取り込み前:
- [ ]
mainはクリーン - [ ] 取り込み対象ブランチを確認済み