mcpField
W
workspace-isolation

workspace-isolation

github.com/noobygains開発11766 回インストール3 日前に更新
リポジトリ

workspace-isolation について

workspace-isolation は、Git worktree でコーディング作業を分離し、ユーザーのチェックアウトや他の作業への影響を防ぐスキルです。分離の検出、環境構築、ベースラインテスト、作業後のクリーンアップ範囲を定めています。

主な機能

  1. 01既存の worktree 分離を検出
  2. 02ハーネス管理の worktree を優先
  3. 03必要に応じて Git worktree を作成
  4. 04依存関係を設定してベースラインテストを実行
  5. 05今回作成した worktree のみをクリーンアップ

活用シーン

  1. 01ユーザーの未コミット作業を保護
  2. 02並列エージェント用の分離環境を準備
  3. 03実装前にベースラインテストを確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/noobygains/godmode --skill workspace-isolation

インストール後、Claude Code で/workspace-isolationを入力して読み込まれたか確認します。

詳細

翻訳後に原文が更新されています。最新の内容は原文をご確認ください。

ワークスペースの分離

概要

Git worktree を使うと、同じリポジトリを共有する分離されたワークスペースを作成でき、ブランチを切り替えずに複数のブランチで同時に作業できます。

**基本原則:**体系的なディレクトリ選択+安全性の確認=信頼性の高い分離。

開始時に伝える:「ワークスペース分離スキルを適用して、分離されたワークスペースを設定します。」

最優先の原則

メインブランチでは機能開発を行わないでください

例外はありません。回避策もありません。近道もありません。

使用する場面

必須:

  • 規模を問わず、機能を開発する場合
  • 1 行を超える変更が必要なバグ修正
  • リファクタリング作業
  • 開発計画に含まれるあらゆるタスク(委任されたものも含む)
  • 実験的または探索的な実装

不要:

  • メインブランチでの 1 行だけの緊急修正
  • ドキュメントのみの変更
  • 設定ファイルの更新(例:.gitignore、CLAUDE.md)
  • 変更を加えずにコードを読む、または調査する場合

認知の落とし穴

正当化実際のところ
「小さな機能だから、メインブランチで作業すればいい」小さな機能も大きくなります。worktree の作成は数秒で済みますが、メインブランチの修復には何時間もかかります。
「worktree の設定には時間がかかりすぎる」worktree の作成は、メインブランチに混在した作業を整理するより速く済みます。
「準備ができたら、あとでブランチを作成しよう」メインブランチで作業すると、あらゆるミスがメインブランチに残ります。最初にブランチを作成してください。
「worktree の設定に失敗したので、省略しよう」設定の問題を解決してください。回避策としてメインブランチで作業を進めてはいけません。
「プロトタイプを作るだけだから、問題ない」メインブランチ上のプロトタイプは、誤ってコミットされることがあります。必ず分離してください。

ディレクトリの選択手順

次の優先順位に従ってください。

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/godmode/worktrees/<project-name>/ (global location)

Which do you prefer?

安全性の確認

プロジェクト内のディレクトリ(.worktrees または worktrees)の場合

worktree を作成する前に、そのディレクトリが Git の追跡対象外であることを必ず確認してください。

# 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

追跡対象外でない場合:

すぐに修正してください:

  1. .gitignore に適切な行を追加する
  2. 変更をコミットする
  3. worktree の作成に進む

**重要な理由:**worktree の内容を誤ってリポジトリにコミットすることを防ぎます。

グローバルディレクトリ(~/.config/godmode/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/godmode/worktrees/*)
    path="~/.config/godmode/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 the 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 applying the workspace-isolation 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 /home/user/myproject/.worktrees/auth
Tests passing (47 tests, 0 failures)
Ready to implement auth feature

ガードレール

禁止事項:

  • 無視対象であることを確認せずに、プロジェクト内にワークツリーを作成する
  • ベースラインテストの検証を省略する
  • 失敗するテストがあるのに、確認を求めずに続行する
  • あいまいな場合に、ディレクトリの場所を決めつける
  • CLAUDE.md の確認を省略する

必ず行うこと:

  • ディレクトリの優先順位に従う:既存のもの > CLAUDE.md > 確認する
  • プロジェクト内のディレクトリが無視対象であることを確認する
  • プロジェクトのセットアップを自動検出して実行する
  • テストのベースラインが正常であることを確認する

連携

呼び出し元:

  • delegated-execution - タスクを実行する前に必ず実行する
  • task-runner - タスクを実行する前に必ず実行する
  • task-planning - ワークツリーが有効であることを前提に計画する
  • 分離されたワークスペースを必要とするすべてのスキル

併用するもの:

  • merge-protocol - 作業完了後のクリーンアップに必須

コメント