mcpField
I
isolate-workspace

isolate-workspace

github.com/jayden-dang開発152 回インストール今日更新
リポジトリ

isolate-workspace について

機能開発用に隔離されたワークスペースを用意し、クリーンな開始状態を確認するスキルです。既存の隔離状態を調べ、ハーネスの標準機能を優先し、なければ Git worktree を使って依存関係とテストを確認します。

主な機能

  1. 01既存のリンク済み worktree の検出
  2. 02標準の隔離機能を優先
  3. 03代替手段として Git worktree を作成
  4. 04プロジェクトファイルに基づく依存関係の導入
  5. 05テストによるベースライン確認

活用シーン

  1. 01機能開発を現在のチェックアウトから隔離
  2. 02ベースラインテスト通過後に作業を開始
  3. 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 による代替手段。 次の優先順位でディレクトリを選びます。

  1. ユーザーによる明示的な指示 — 常に最優先
  2. リポジトリのルートに既存の .worktrees/ がある
  3. 既存の worktrees/ がある(両方ある場合は .worktrees/ を優先)
  4. 既存の .isolate-workspace/ がある(旧形式 — 再利用し、親ディレクトリを重複して作成しない)
  5. 既存の isolate-workspace/ がある(旧形式)
  6. いずれもない → .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 の追跡対象外か確認せずに、プロジェクト内のワークツリーディレクトリを作成する
  • ベースラインテストの実行を省略する、またはベースラインがレッドなのに確認せず続行する

コメント