using-git-worktrees について
複数ブランチを切り替えずに作業できるよう、隔離された Git worktree を作成する開発スキルです。場所の選定、安全確認、プロジェクト設定、初期テストを案内します。
主な機能
- 01優先順位に沿った配置先の選定
- 02CLAUDE.md の設定確認
- 03プロジェクト内の .gitignore 検証
- 04プロジェクトに応じた依存関係の設定
- 05初期テストの検証
活用シーン
- 01機能ブランチ用の隔離環境の準備
- 02実装前のクリーンなテスト基準の確認
- 03リポジトリ規約に沿った配置先の選択
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ izyanrajwani/ agent-skills-library --skill using-git-worktreesインストール後、Claude Code で/using-git-worktreesを入力して読み込まれたか確認します。
詳細
Git Worktree の使用
概要
Git worktree を使うと、同じリポジトリを共有する分離されたワークスペースを作成でき、ブランチを切り替えることなく複数のブランチで同時に作業できます。
基本原則: ディレクトリを体系的に選択し、安全性を確認することで、確実に分離できます。
開始時に宣言: 「using-git-worktrees スキルを使って、分離されたワークスペースを設定します。」
ディレクトリの選択手順
次の優先順位に従います。
1. 既存のディレクトリを確認する
# Check in priority order
ls -d .worktrees 2>/dev/null # Preferred (hidden)
ls -d worktrees 2>/dev/null # Alternative
見つかった場合: そのディレクトリを使用します。両方ある場合は、.worktrees を優先します。
2. CLAUDE.md を確認する
grep -i "worktree.*director" CLAUDE.md 2>/dev/null
希望が指定されている場合: 質問せずにその指定に従います。
3. ユーザーに尋ねる
ディレクトリが存在せず、CLAUDE.md にも希望が指定されていない場合:
No worktree directory found. Where should I create worktrees?
1. .worktrees/ (project-local, hidden)
2. ~/.config/superpowers/worktrees/<project-name>/ (global location)
Which would you prefer?
安全性の確認
プロジェクト内のディレクトリ(.worktrees または worktrees)の場合
worktree を作成する前に、必ず .gitignore を確認してください。
# Check if directory pattern in .gitignore
grep -q "^\.worktrees/$" .gitignore || grep -q "^worktrees/$" .gitignore
.gitignore に含まれていない場合:
Jesse のルール「壊れているものはすぐに修正する」に従い:
- 適切な行を .gitignore に追加します
- 変更をコミットします
- worktree の作成に進みます
重要な理由: worktree の内容が誤ってリポジトリにコミットされるのを防ぎます。
グローバルディレクトリ(~/.config/superpowers/worktrees)の場合
プロジェクト外のため、.gitignore の確認は不要です。
作成手順
1. プロジェクト名を検出する
project=$(basename "$(git rev-parse --show-toplevel)")
2. worktree を作成する
# Determine full path
case $LOCATION in
.worktrees|worktrees)
path="$LOCATION/$BRANCH_NAME"
;;
~/.config/superpowers/worktrees/*)
path="~/.config/superpowers/worktrees/$project/$BRANCH_NAME"
;;
esac
# Create worktree with new branch
git worktree add "$path" -b "$BRANCH_NAME"
cd "$path"
3. プロジェクトをセットアップする
適切なセットアップを自動検出して実行します。
# Node.js
if [ -f package.json ]; then npm install; fi
# Rust
if [ -f Cargo.toml ]; then cargo build; fi
# Python
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
if [ -f pyproject.toml ]; then poetry install; fi
# Go
if [ -f go.mod ]; then go mod download; fi
4. クリーンなベースラインを確認する
テストを実行し、worktree がクリーンな状態で開始することを確認します。
# Examples - use project-appropriate command
npm test
cargo test
pytest
go test ./...
テストが失敗した場合: 失敗内容を報告し、続行するか調査するかを尋ねます。
テストが成功した場合: 準備ができたことを報告します。
5. 場所を報告する
Worktree ready at <full-path>
Tests passing (<N> tests, 0 failures)
Ready to implement <feature-name>
クイックリファレンス
| 状況 | 対応 |
|---|---|
.worktrees/ が存在する | 使用する(.gitignore を確認) |
worktrees/ が存在する | 使用する(.gitignore を確認) |
| 両方存在する | .worktrees/ を使用する |
| どちらも存在しない | CLAUDE.md を確認 → ユーザーに尋ねる |
| ディレクトリが .gitignore に含まれていない | すぐに追加してコミットする |
| ベースラインテストで失敗する | 失敗を報告して尋ねる |
| package.json/Cargo.toml がない | 依存関係のインストールをスキップする |
よくある間違い
.gitignore の確認を省略する
- 問題: worktree の内容が追跡され、git status が汚れます
- 修正: プロジェクト内に worktree を作成する前に、必ず grep で .gitignore を確認します
ディレクトリの場所を決めつける
- 問題: 一貫性が損なわれ、プロジェクトの規約に違反します
- 修正: 優先順位に従います:既存のディレクトリ > CLAUDE.md > ユーザーに尋ねる
テストが失敗している状態で続行する
- 問題: 新しいバグと既存の問題を区別できません
- 修正: 失敗を報告し、続行する明示的な許可を得ます
セットアップコマンドをハードコードする
- 問題: 異なるツールを使うプロジェクトで動作しなくなります
- 修正: プロジェクトファイル(package.json など)から自動検出します
ワークフローの例
You: I'm using the using-git-worktrees skill to set up an isolated workspace.
[Check .worktrees/ - exists]
[Verify .gitignore - contains .worktrees/]
[Create worktree: git worktree add .worktrees/auth -b feature/auth]
[Run npm install]
[Run npm test - 47 passing]
Worktree ready at /Users/jesse/myproject/.worktrees/auth
Tests passing (47 tests, 0 failures)
Ready to implement auth feature
注意すべき兆候
決して行わないこと:
- .gitignore を確認せずに worktree を作成する(プロジェクト内の場合)
- ベースラインテストの確認を省略する
- 尋ねずに、テストが失敗した状態で続行する
- 曖昧な場合にディレクトリの場所を決めつける
- CLAUDE.md の確認を省略する
必ず行うこと:
- ディレクトリの優先順位に従う:既存のディレクトリ > CLAUDE.md > ユーザーに尋ねる
- プロジェクト内の場合は .gitignore を確認する
- プロジェクトのセットアップを自動検出して実行する
- テストがクリーンなベースラインであることを確認する
連携
呼び出し元:
- brainstorming Skillc(Phase 4)- 設計の承認後に実装を行う場合は必須
- 分離されたワークスペースを必要とするすべてのスキル
併用するもの:
- finishing-a-development-branch Skill - 作業完了後のクリーンアップに必須
- executing-plans または subagent-driven-development Skill - この worktree で作業します