バックエンド実装時に使用。DRY原則遵守。コーディング規約準拠。
The English summary is being prepared. Showing the original description.
Use when starting feature work that needs isolation from current workspace or before executing implementation plans - ensures an isolated workspace exists via native tools or git worktree fallback
The English summary is being prepared. Showing the original description.
See how to installReview the instructions the agent will receive before you install.
Ensure work happens in an isolated workspace. Prefer your platform's native worktree tools. Fall back to manual git worktrees only when no native tool is available.
Core principle: Detect existing isolation first. Then use native tools. Then fall back to git. Never fight the harness.
Announce at start: "I'm using the using-git-worktrees skill to set up an isolated workspace."
Before creating anything, check if you are already in an isolated workspace.
GIT_DIR=$(cd "$(git rev-parse --git-dir)" 2>/dev/null && pwd -P)
GIT_COMMON=$(cd "$(git rev-parse --git-common-dir)" 2>/dev/null && pwd -P)
BRANCH=$(git branch --show-current)
Submodule guard: GIT_DIR != GIT_COMMON is also true inside git submodules. Before concluding "already in a worktree," verify you are not in a submodule:
# If this returns a path, you're in a submodule, not a worktree — treat as normal repo
git rev-parse --show-superproject-working-tree 2>/dev/null
If GIT_DIR != GIT_COMMON (and not a submodule): You are already in a linked worktree. Skip to Step 2 (Project Setup). Do NOT create another worktree.
Report with branch state:
<path> on branch <name>."<path> (detached HEAD, externally managed). Branch creation needed at finish time."If GIT_DIR == GIT_COMMON (or in a submodule): You are in a normal repo checkout.
Follow the user's existing workspace preference and project policy. Create an isolated worktree when useful within the authorized task; do not ask again for an already authorized workspace action. If an explicit preference is to work in place, honor it and skip to Step 2.
You have two mechanisms. Try them in this order.
An isolated workspace is appropriate under Step 0. Do you already have a way to create a worktree? It might be a tool with a name like EnterWorktree, WorktreeCreate, a /worktree command, or a --worktree flag. If you do, use it and skip to Step 2.
Native tools handle directory placement, branch creation, and cleanup automatically. Using git worktree add when you have a native tool creates phantom state your harness can't see or manage.
Only proceed to Step 1b if you have no native worktree tool available.
Only use this if Step 1a does not apply — you have no native worktree tool available. Create a worktree manually using git.
Follow this priority order. Explicit user preference always beats observed filesystem state.
Check your instructions for a declared worktree directory preference. If the user has already specified one, use it without asking.
Check for an existing project-local worktree directory:
ls -d .worktrees 2>/dev/null # Preferred (hidden)
ls -d worktrees 2>/dev/null # Alternative
If found, use it. If both exist, .worktrees wins.
If there is no other guidance available, default to .worktrees/ at the project root.
MUST verify directory is ignored before creating worktree:
git check-ignore -q .worktrees 2>/dev/null || git check-ignore -q worktrees 2>/dev/null
If NOT ignored: Add to .gitignore, commit the change, then proceed.
Why critical: Prevents accidentally committing worktree contents to repository.
# Determine path based on chosen location
path="$LOCATION/$BRANCH_NAME"
git worktree add "$path" -b "$BRANCH_NAME"
cd "$path"
Sandbox fallback: If git worktree add fails with a permission error (sandbox denial), tell the user the sandbox blocked worktree creation and you're working in the current directory instead. Then run setup and baseline tests in place.
Auto-detect and run appropriate setup:
# 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
Skill links: in a project that keeps .claude/skills (or .codex/skills, .cursor/skills) as links listed in .gitignore, a new worktree has no such link, so the distributed skills are not found at their documented paths. Inside the worktree, run npx -y @crearize/ai-dev-helm@<version> link-skills, with <version> the version in .ai-dev-helm.json (the installed release, not the latest). This applies to a worktree from a native tool too.
Run tests to ensure workspace starts clean:
# Use project-appropriate command
npm test / cargo test / pytest / go test ./...
If tests fail: Investigate and distinguish baseline failures from the proposed change. If a failure existed before your change and is unrelated to it, record it and continue (report it in the final message). Stop only when it breaks a premise of the approved work (documents/development/development-policy.md §1.0 "承認後の進め方").
If tests pass: Report ready.
Worktree ready at <full-path>
Tests passing (<N> tests, 0 failures)
Ready to implement <feature-name>
| Situation | Action |
|---|---|
| Already in linked worktree | Skip creation (Step 0) |
| In a submodule | Treat as normal repo (Step 0 guard) |
| Native worktree tool available | Use it (Step 1a) |
| No native tool | Git worktree fallback (Step 1b) |
.worktrees/ exists | Use it (verify ignored) |
worktrees/ exists | Use it (verify ignored) |
| Both exist | Use .worktrees/ |
| Neither exists | Check instruction file, then default .worktrees/ |
| Directory not ignored | Add to .gitignore + commit |
| Permission error on create | Sandbox fallback, work in place |
| Tests fail during baseline | Investigate and record baseline limitations |
| No package.json/Cargo.toml | Skip dependency install |
Skill links are ignored by git (link-skills) | Run link-skills pinned to .ai-dev-helm.json's version (Step 2) |
| Excuse | Reality |
|---|---|
| "I'm obviously not in a worktree — no need to check" | Run Step 0. Harness-created isolation and submodules both fool eyeballing; the detection commands settle it. |
"git worktree add is quicker than hunting for a native tool" | A native tool (e.g. EnterWorktree) owns placement, branching, and cleanup. Bypassing it is the #1 mistake — it creates phantom state your harness can't see or manage. |
| "The worktree directory is surely ignored already" | Run git check-ignore. An unignored worktree directory commits the whole tree into the repo. |
| "Any directory name works" | Explicit instructions beat an existing project-local directory, which beats the .worktrees/ default. |
| "The workspace is fresh — baseline tests can wait" | A dirty baseline makes every later failure ambiguous. Run the tests now; record pre-existing unrelated failures and continue, and stop only when they break a premise of the approved work. |
No reviews yet. Tell others what you thought.
No login needed. Share how it worked for you, ask a question, or note where it did not run.
No comments yet. Be the first to write one.
バックエンド実装時に使用。DRY原則遵守。コーディング規約準拠。
The English summary is being prepared. Showing the original description.
Use before implementing any feature, behavior change, or refactor - settles requirements and design, then gets the design independently reviewed and approved by the user before code is written
The English summary is being prepared. Showing the original description.
作業開始時に使用。mainブランチでの作業禁止。Issue先行作成必須。
The English summary is being prepared. Showing the original description.
UI実装後の検証時に使用。agent-browser CLIでブラウザ上の動作を手動検証する。「UIを確認」「画面テスト」と言われたら使用(プロジェクトの E2E スイート実行は quality-check Step 5(推奨度・範囲で自動実施または確認)/ server-startup が担当)。
The English summary is being prepared. Showing the original description.
DBマイグレーション作成時に使用。バージョン番号競合防止。mainブランチ確認必須。
The English summary is being prepared. Showing the original description.
Use when independent tasks benefit from parallel work without shared state or sequential dependencies
The English summary is being prepared. Showing the original description.