isolate-workspace について
機能開発用に隔離されたワークスペースを用意し、クリーンな開始状態を確認するスキルです。既存の隔離状態を調べ、ハーネスの標準機能を優先し、なければ Git worktree を使って依存関係とテストを確認します。
主な機能
- 01既存のリンク済み worktree の検出
- 02標準の隔離機能を優先
- 03代替手段として Git worktree を作成
- 04プロジェクトファイルに基づく依存関係の導入
- 05テストによるベースライン確認
活用シーン
- 01機能開発を現在のチェックアウトから隔離
- 02ベースラインテスト通過後に作業を開始
- 03リポジトリのマニフェストに沿った環境構築
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ jayden-dang/ skills --skill isolate-workspaceインストール後、Claude Code で/isolate-workspaceを入力して読み込まれたか確認します。
同梱ファイルeval.jsonTESTS.md
詳細
ワークスペースを分離する
検証済みのクリーンな状態から始められる、機能開発用の分離されたワークスペースを用意します。優先順位は、既存の分離状態を検出する → ハーネス標準のワークスペースツールを使う → 手動で git worktree を使う、の順です。ハーネスと競合しないでください。
ステップ 0 — 検出して同意を得る
すでにリンクされたワークツリー内にいるか確認します。
GIT_DIR=$(cd "$(git rev-parse --git-dir)" && pwd -P)
GIT_COMMON=$(cd "$(git rev-parse --git-common-dir)" && pwd -P)
GIT_DIR != GIT_COMMON→ リンクされたワークツリーの可能性があります。ただし、まずサブモジュールでないか確認してください。git rev-parse --show-superproject-working-treeがパスを出力する場合は、サブモジュール内にいます。通常のチェックアウトとして扱ってください。それ以外の場合はすでに分離されています。パスとブランチを報告し、作成をスキップしてステップ 2 に進みます。GIT_DIR == GIT_COMMON→ 通常のチェックアウトです。ユーザーがワークツリーの希望を伝えている場合は、確認せずにその希望に従います。希望がない場合は、「現在のブランチに触れずに済むよう、分離されたワークツリーを用意しましょうか?」と尋ねます。断られた場合は、その場で作業し、ステップ 2 に進みます。
完了条件:3 つのケースのどれに該当するかが分かっており、作成する場合は同意を得ていること。
ステップ 1 — ワークスペースを作成する
1a. まず標準ツールを使う。 ハーネスがワークスペース/ワークツリーの仕組み(EnterWorktree のような名前のツール、/worktree コマンド、--worktree フラグなど)を提供している場合は、それを使ってステップ 2 に進みます。標準ツールは配置、ブランチ作成、クリーンアップを自ら管理します。それと並行して手動のワークツリーを作ると、ハーネスが認識できない不整合な状態が残ります。標準ツールがない場合に限り、次に進んでください。
1b. Git による代替手段。 次の優先順位でディレクトリを選びます。
- ユーザーによる明示的な指示 — 常に最優先
- リポジトリのルートに既存の
.worktrees/がある - 既存の
worktrees/がある(両方ある場合は.worktrees/を優先) - 既存の
.isolate-workspace/がある(旧形式 — 再利用し、親ディレクトリを重複して作成しない) - 既存の
isolate-workspace/がある(旧形式) - いずれもない →
.worktrees/を作成
選んだディレクトリを $DIR に割り当て、以下のすべてのコマンドで使用します。上記の優先順位は、コマンドにも反映されて初めて意味があります。
DIR=.worktrees # or DIR=worktrees / a legacy isolate-workspace dir if that existing dir was selected above
プロジェクト内のディレクトリに何かを作成する前に、必ず Git の追跡対象外になっていることを確認してください。このエントリはコミットされていない作業ツリーの変更として残します。Git はすぐにその設定を反映します。また、ここで .gitignore をコミットすると、ユーザーの現在のブランチにコミットが書き込まれます。これは、このスキルが触れないと約束している対象そのものです。
git check-ignore -q "$DIR" || printf '%s/\n' "$DIR" >> .gitignore
次に作成して、そのディレクトリに移動します。
git worktree add "$DIR/<branch-name>" -b "<branch-name>"
サンドボックス/権限エラーで作成できない場合は、ユーザーに伝えて、その場で作業してください。
完了条件:ワークスペース内にいるか、そうできなかった理由を報告していること。
ステップ 2 — 依存関係をインストールする
ロックファイル/マニフェストからパッケージマネージャーを自動判別して、インストールを実行します。pnpm-lock.yaml → pnpm、bun.lock* → bun、yarn.lock → yarn、package-lock.json/素の package.json → npm、Cargo.toml → cargo build、uv.lock → uv、poetry.lock → poetry、requirements.txt → pip、go.mod → go mod download。マニフェストがなければスキップします。
ステップ 3 — クリーンなベースライン
docs/agents/project.md に記載されたコマンドでテストスイートを実行します(ファイルがない場合は、その旨を伝え、configure-repo を提案して、エコシステムの標準ランナーを使います)。
- ベースラインがグリーン → 続行します。
- ベースラインがレッド → STOP し、続行する前にユーザーに確認します。失敗しているベースラインから始めると、今回のバグと既存の問題を見分けられません。
報告
Workspace ready at <absolute path> (branch <name>)
Baseline: <N> tests passing, 0 failures
Ready to start <task>.
危険信号 — 絶対にしないこと
- ステップ 0 で、すでにワークツリー内にいると判明した場合にワークツリーを作成する
- 標準ツールがある場合に
git worktree addを使う - Git の追跡対象外か確認せずに、プロジェクト内のワークツリーディレクトリを作成する
- ベースラインテストの実行を省略する、またはベースラインがレッドなのに確認せず続行する