using-git-worktrees について
Git worktreeで隔離された作業環境を用意するコーディングエージェント向けスキルです。複数ブランチや独立した開発作業に使え、配置先の選択、ignore設定の確認、テストによる基準状態の検証を重視します。
主な機能
- 01優先順位に沿った配置先の選択
- 02ローカル配置先のignore確認
- 03プロジェクト設定の検出と実行
- 04テストによる基準状態の確認
活用シーン
- 01複数のGitブランチでの作業
- 02隔離された開発環境の作成
- 03変更前のテスト確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ mavcui/ agent-skills-hunter --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 を作成する前に、ディレクトリが無視されていることを必ず確認してください:
# Check if directory is ignored (respects local, global, and system gitignore)
git check-ignore -q .worktrees 2>/dev/null || git check-ignore -q worktrees 2>/dev/null
無視されていない場合:
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/ が存在する | それを使用する(無視されていることを検証) |
worktrees/ が存在する | それを使用する(無視されていることを検証) |
| 両方存在する | .worktrees/ を使用する |
| どちらも存在しない | CLAUDE.md を確認 → ユーザーに確認 |
| ディレクトリが無視されていない | .gitignore に追加 + コミット |
| ベースライン時にテストが失敗する | 失敗を報告 + 確認 |
| package.json/Cargo.toml がない | 依存関係のインストールをスキップ |
よくある間違い
無視の検証を省略する
- 問題: worktree の内容が追跡され、git status を汚染する
- 対処: プロジェクト内の worktree を作成する前に、必ず
git check-ignoreを使用する
ディレクトリの場所を想定する
- 問題: 一貫性がなくなり、プロジェクトの規約に反する
- 対処: 優先順位に従う: 既存 > CLAUDE.md > 確認
テストが失敗したまま続行する
- 問題: 新しいバグと既存の問題を区別できない
- 対処: 失敗を報告し、続行について明示的な許可を得る
セットアップコマンドをハードコードする
- 問題: 異なるツールを使うプロジェクトで動作しなくなる
- 対処: プロジェクトファイル(package.json など)から自動検出する
ワークフローの例
You: I'm using the using-git-worktrees skill to set up an isolated workspace.
[Check .worktrees/ - exists]
[Verify ignored - git check-ignore confirms .worktrees/ is ignored]
[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
レッドフラッグ
絶対にしないこと:
- 無視されているかを確認せずに worktree を作成する(プロジェクト内の場合)
- ベースラインのテスト確認を省略する
- 確認せずに失敗しているテストのまま続行する
- 曖昧な場合にディレクトリの場所を想定する
- CLAUDE.md の確認を省略する
常に行うこと:
- ディレクトリの優先順位に従う: 既存 > CLAUDE.md > 確認
- プロジェクト内の場合、ディレクトリが無視されていることを検証する
- プロジェクトのセットアップを自動検出して実行する
- クリーンなテストのベースラインを検証する
連携
呼び出し元:
- brainstorming(フェーズ 4)- 設計が承認され、実装に進む際に必須
- 独立したワークスペースを必要とする任意のスキル
併用するスキル:
- finishing-a-development-branch - 作業完了後のクリーンアップに必須
- executing-plans または subagent-driven-development - この worktree 内で作業が行われる