isolate について
isolateはGit worktreeを作成または更新する開発スキルです。タスクの変更をメインのチェックアウトから分離し、依存関係の導入とベースラインテストも確認します。
主な機能
- 01取得済みのリモートブランチからworktreeを作成
- 02reflogから親ブランチを検出
- 03既存のリンク済みworktreeを更新
- 04プロジェクトのマニフェストに基づく依存関係の導入
- 05作業前のベースラインテスト実行
活用シーン
- 01最新の親ブランチからタスクを開始
- 02作業再開前にリンク済みworktreeを更新
- 03実装前にプロジェクトのテストを確認
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ camacho/ ai-skills --skill isolateインストール後、Claude Code で/isolateを入力して読み込まれたか確認します。
詳細
分離
最新の origin/main からブランチを分岐した作業ツリーを作成し、タスク作業が古いコードで始まらないようにします。
告知:「このタスク用に分離された作業ツリーをセットアップしています。」
入力
- ブランチ名:
/orientのステップ 1 から取得します(例:feat/auth、fix/login-crash)。指定されていない場合は確認してください。 - ベース参照: 現在のブランチの親ブランチ(reflog から検出し、既定値は
main)。別のブランチから明示的に積み重ねる場合に限り、上書きします。
親ブランチの検出
親ブランチ(このブランチを最終的にマージする先)は、reflog から判定します。
PARENT_BRANCH=$(
git reflog show HEAD --pretty=format:'%gs' \
| grep "^branch: Created from" \
| head -1 \
| sed 's/branch: Created from //' \
| sed 's|^origin/||'
)
PARENT_BRANCH=${PARENT_BRANCH:-main}
ブランチが detached HEAD から作成された場合、または reflog のないウェブセッションの場合は空を返します。その場合は main にフォールバックします。通常のローカル開発では、99% の確率で正しく判定されます。
すでに作業ツリー内にいますか?
セッションの CWD がリンクされた作業ツリー(プライマリではないもの)内にある場合は、新しい作業ツリーを作成せず、ブランチを最新化します。
WORKTREE="<absolute-path-to-current-worktree>"
git -C "$WORKTREE" fetch origin "$PARENT_BRANCH"
git -C "$WORKTREE" merge "origin/$PARENT_BRANCH"
競合が発生した場合は停止し、ユーザーに提示してください。自動解決はしないでください。
最新化した後、ベースラインテストに進みます。
ステップ 1:ディレクトリを選択
| 優先度 | 確認項目 | 操作 |
|---|---|---|
| 1 | .worktrees/ が存在する | 使用する |
| 2 | worktrees/ が存在する | 使用する |
| 3 | 両方存在する | .worktrees/ を優先する |
| 4 | CLAUDE.md に指定がある | 指定に従う |
| 5 | いずれも見つからない | ユーザーに確認する(.worktrees/ を推奨) |
ステップ 2:gitignore 対象であることを確認
git check-ignore -q .worktrees
無視されていない場合は、先に修正してください。
echo ".worktrees" >> .gitignore
git add .gitignore
git commit -m "chore: gitignore worktree directory"
ステップ 3:フェッチして作成
古いローカルの親ブランチから分岐した作業ツリーには、マージ競合が最初から含まれる可能性があります。必ず先にフェッチし、ローカルのコピーではなく、必ず origin/$PARENT_BRANCH からブランチを作成してください。
REPO_ROOT="$(git rev-parse --show-toplevel)"
WORKTREE_DIR="$REPO_ROOT/.worktrees/<name>"
git fetch origin "$PARENT_BRANCH"
git worktree add "$WORKTREE_DIR" -b <prefix>/<name> "origin/$PARENT_BRANCH"
長時間実行されるエージェントセッション中に git worktree prune によって削除されないよう、作業ツリーをすぐにロックしてください。メインリポジトリのコンテキストから実行し、作業ツリー内からは実行しないでください。
git -C "$REPO_ROOT" worktree lock --reason "Agent session in progress" "$WORKTREE_DIR"
/ship はタスクの最後に作業ツリーを削除する前にロックを解除します。
Claude Code:必要に応じて EnterWorktree({path}) を呼び出し、セッションの CWD を新しい作業ツリーに移動できます。
ステップ 4:依存関係をインストール
マニフェストファイルから自動検出します。
| ファイル | コマンド |
|---|---|
pnpm-lock.yaml | pnpm install |
yarn.lock | yarn install |
package-lock.json | npm install |
package.json(ロックファイルなし) | インストール前に確認する |
Cargo.toml | cargo build |
requirements.txt | pip install -r requirements.txt |
pyproject.toml | poetry install |
go.mod | go mod download |
作業ツリーのパスから実行します:pnpm --dir "$WORKTREE_DIR" install
ステップ 5:ベースラインテスト
プロジェクトのテストスイートを実行します。テストが失敗した場合は、失敗内容を報告し、続行するかどうかを確認してください。黙って続行しないでください。
報告
Worktree ready at <absolute-path>
Branch: <prefix>/<name> (from origin/main @ <short-sha>)
Tests: <N> passing
パスの扱い
cd は Claude Code の Bash 呼び出し間で維持されません。すべてのファイル操作には絶対パスを使用し、Git コマンドには git -C <abs-path> を使用してください。
連携
呼び出し元: /task(ステップ 2)、/brainstorming、/build
組み合わせるもの: /ship(作業完了後に作業ツリーをクリーンアップ)