git-worktree
Gitワークツリーを管理して、分離された並列開発環境を構築できます。ワークツリーの作成、切り替え、クリーンアップを実行する際に使用します。
description の原文を見る
Manage Git worktrees for isolated parallel development. Use when creating, switching, or cleaning up worktrees for parallel bead work.
SKILL.md 本文
Git ワークツリーマネージャー
このスキルは、開発ワークフロー全体で Git ワークツリーを管理するための統合インターフェースを提供します。PR レビューを分離して行う場合でも、複数の機能に並列で取り組む場合でも、このスキルがすべての複雑性を処理します。
このスキルの機能
- ワークツリーの作成 メインブランチから明確なブランチ名で
- ワークツリーの一覧表示 現在のステータス付き
- ワークツリー間の切り替え 並列作業用
- 完了したワークツリーの自動クリーンアップ
- 各ステップでの対話的確認
- .gitignore の自動管理 ワークツリーディレクトリ用
- .env ファイルの自動コピー メインリポジトリから新しいワークツリーへ
重要: 必ずマネージャースクリプトを使用してください
git worktree add を直接呼び出さないでください。 必ず worktree-manager.sh スクリプトを使用してください。
このスクリプトは生の git コマンドでは処理されない重要なセットアップを行います:
- メインリポジトリから
.env、.env.local、.env.testなどをコピー .worktreesが.gitignoreに入っていることを確認- 一貫したディレクトリ構造を作成
# 正しい方法 - 常にスクリプトを使用
bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh create feature-name
# 間違った方法 - これを直接実行しないでください
git worktree add .worktrees/feature-name -b feature-name main
このスキルを使用する場合
以下のシナリオでこのスキルを使用してください:
- コードレビュー (
/workflows:review): ターゲットブランチ (PR ブランチまたはリクエストされたブランチ) にまだいない場合、分離レビュー用のワークツリーを提案 - 機能作業 (
/workflows:work): ユーザーが並列ワークツリーか実ブランチでの作業を望むかを常に尋ねる - 並列開発: 複数の機能に同時に取り組む場合
- クリーンアップ: ワークツリーでの作業完了後
使用方法
Claude Code ワークフロー内
スキルは /workflows:review および /workflows:work コマンドから自動的に呼び出されます:
# レビュー: PR ブランチにいない場合、ワークツリーを提案
# 作業: 常に質問 - 新しいブランチかワークツリーか?
手動使用
bash から直接スキルを呼び出すこともできます:
# 新しいワークツリーを作成 (.env ファイルは自動的にコピー)
bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh create feature-login
# すべてのワークツリーを一覧表示
bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh list
# ワークツリーに切り替え
bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh switch feature-login
# .env ファイルを既存のワークツリーにコピー (.env ファイルがコピーされなかった場合)
bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh copy-env feature-login
# 完了したワークツリーをクリーンアップ
bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh cleanup
コマンド
create <branch-name> [from-branch]
指定されたブランチ名で新しいワークツリーを作成します。
オプション:
branch-name(必須): 新しいブランチとワークツリーの名前from-branch(オプション): 作成元の基本ブランチ (デフォルトはmain)
例:
bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh create feature-login
実行される処理:
- ワークツリーが既に存在するかを確認
- 基本ブランチをリモートから更新
- 新しいワークツリーとブランチを作成
- メインリポジトリからすべての .env ファイルをコピー (.env、.env.local、.env.test など)
- ワークツリーへの cd 用パスを表示
list または ls
すべての利用可能なワークツリーをブランチと現在のステータス付きで一覧表示します。
例:
bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh list
出力内容:
- ワークツリー名
- ブランチ名
- どれが現在のものか (チェックマーク付き)
- メインリポジトリのステータス
switch <name> または go <name>
既存のワークツリーに切り替えて、その中へ cd します。
例:
bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh switch feature-login
オプション:
- 名前を指定しない場合、利用可能なワークツリーを一覧表示して選択を求めます
cleanup または clean
非アクティブなワークツリーを確認を取った上で対話的にクリーンアップします。
例:
bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh cleanup
実行される処理:
- すべての非アクティブなワークツリーを一覧表示
- 確認を求める
- 選択されたワークツリーを削除
- 空のディレクトリをクリーンアップ
ワークフロー例
ワークツリーを使用したコードレビュー
# Claude Code が PR ブランチにいないことを認識
# 提案: "分離レビューにワークツリーを使用しますか? (y/n)"
# 回答: yes
# スクリプトが実行されます (.env ファイルは自動的にコピー):
bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh create pr-123-feature-name
# すべての環境変数付きで分離ワークツリーでのレビュー対象に
cd .worktrees/pr-123-feature-name
# レビュー後、メインに戻る:
cd ../..
bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh cleanup
並列機能開発
# 最初の機能用 (.env ファイルはコピー):
bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh create feature-login
# その後、2 番目の機能を開始 (.env ファイルもコピー):
bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh create feature-notifications
# 持っているものを一覧表示:
bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh list
# 必要に応じて切り替え:
bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh switch feature-login
# 完了時にメインに戻ってクリーンアップ:
cd .
bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh cleanup
主要な設計原則
KISS (シンプルに保つ)
- 1 つのマネージャースクリプト がすべてのワークツリー操作を処理
- シンプルなコマンド と合理的なデフォルト
- 対話的プロンプト が誤った操作を防止
- 明確な命名 ブランチ名を直接使用
意図的なデフォルト
- ワークツリーは常に main から作成 (別途指定がない限り)
- ワークツリーは .worktrees/ ディレクトリに保存
- ブランチ名がワークツリー名に
- .gitignore は自動的に管理
安全性重視
- ワークツリー作成前に 確認
- クリーンアップ前に 確認 して誤削除を防止
- 現在のワークツリーは削除しない
- 明確なエラーメッセージ で問題を報告
ワークフローとの統合
/workflows:review
常にワークツリーを作成するのではなく:
1. 現在のブランチを確認
2. ターゲットブランチ (PR ブランチまたはリクエストされたブランチ) に既にいる場合 -> そこにとどまり、ワークツリーは不要
3. レビュー対象とは異なるブランチにいる場合 -> ワークツリーを提案:
"分離レビューにワークツリーを使用しますか? (y/n)"
- はい -> git-worktree スキルを呼び出し
- いいえ -> 現在のブランチで PR diff を実行
/workflows:work
常に選択肢を提供:
1. 質問: "どのように作業しますか?
1. 現在のワークツリーで新しいブランチ (ライブ作業)
2. ワークツリー (並列作業)"
2. 選択肢 1 の場合 -> 通常通り新しいブランチを作成
3. 選択肢 2 の場合 -> git-worktree スキルを呼び出して main から作成
トラブルシューティング
"ワークツリーは既に存在します"
このメッセージが表示される場合、スクリプトは代わりに切り替えるかどうか尋ねます。
"ワークツリーを削除できません: 現在のワークツリーです"
ワークツリーから抜け出した後 (メインリポジトリに戻してから)、クリーンアップを実行します:
cd $(git rev-parse --show-toplevel)
bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh cleanup
ワークツリーで迷った場合
あなたがどこにいるか確認:
bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh list
ワークツリーに .env ファイルがない場合
ワークツリーが .env ファイルなしで作成された場合 (例: 生の git worktree add 経由)、コピーします:
bash ${CLAUDE_PLUGIN_ROOT}/skills/git-worktree/scripts/worktree-manager.sh copy-env feature-name
メインに戻る:
cd $(git rev-parse --show-toplevel)
技術的な詳細
ディレクトリ構造
.worktrees/
├── feature-login/ # ワークツリー 1
│ ├── .git
│ ├── app/
│ └── ...
├── feature-notifications/ # ワークツリー 2
│ ├── .git
│ ├── app/
│ └── ...
└── ...
.gitignore (.worktrees を含むよう更新)
動作原理
- 分離環境用に
git worktree addを使用 - 各ワークツリーは独自のブランチを持つ
- 1 つのワークツリーでの変更は他に影響しない
- メインリポジトリと git 履歴を共有
- 任意のワークツリーからプッシュ可能
パフォーマンス
- ワークツリーは軽量 (ファイルシステムリンクのみ)
- リポジトリの重複なし
- git オブジェクトの共有で効率化
- クローンやスタッシュ/切り替えより高速
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- roberto-mello
- リポジトリ
- roberto-mello/lavra
- ライセンス
- MIT
- 最終更新
- 2026/5/7
Source: https://github.com/roberto-mello/lavra / ライセンス: MIT