mcpField
I
isolate

isolate

github.com/camacho開発391 回インストール
リポジトリ

isolate について

isolateはGit worktreeを作成または更新する開発スキルです。タスクの変更をメインのチェックアウトから分離し、依存関係の導入とベースラインテストも確認します。

主な機能

  1. 01取得済みのリモートブランチからworktreeを作成
  2. 02reflogから親ブランチを検出
  3. 03既存のリンク済みworktreeを更新
  4. 04プロジェクトのマニフェストに基づく依存関係の導入
  5. 05作業前のベースラインテスト実行

活用シーン

  1. 01最新の親ブランチからタスクを開始
  2. 02作業再開前にリンク済みworktreeを更新
  3. 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/ が存在する使用する
2worktrees/ が存在する使用する
3両方存在する.worktrees/ を優先する
4CLAUDE.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.yamlpnpm install
yarn.lockyarn install
package-lock.jsonnpm install
package.json(ロックファイルなし)インストール前に確認する
Cargo.tomlcargo build
requirements.txtpip install -r requirements.txt
pyproject.tomlpoetry install
go.modgo 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(作業完了後に作業ツリーをクリーンアップ)

コメント