Using Git Worktrees
Overview
Git worktrees create isolated workspaces sharing the same repository, allowing work on multiple branches simultaneously without switching.
Announce at start: "I'm using the using-git-worktrees skill to set up an isolated workspace."
Directory Selection Process
Follow this priority order:
- Check existing directories -- Use
.worktrees/orworktrees/if present (.worktrees/wins if both exist) - Check CLAUDE.md -- Use any worktree directory preference specified there
- Ask user -- Offer
.worktrees/(project-local) or~/.config/superpowers/worktrees/<project>/(global)
See references/directory-selection.md for full bash commands and ask-user flow.
Safety Verification
For project-local directories only (not needed for global):
- Check gitignore --
git check-ignore -q .worktreesto verify directory is ignored - Add if needed -- Add to
.gitignoreif not ignored - Commit -- Commit the
.gitignorechange before proceeding
See references/safety-verification.md for full verification protocol.
Creation Steps (Task-Tracked)
Create 6 native tasks, each blocked by the previous (non-skippable sequence):
- Select worktree directory location -- Check existing dirs, CLAUDE.md, or ask user
- Verify gitignore for project-local directory -- Run
git check-ignore, add to.gitignoreif needed - Create worktree --
git worktree add <path> -b <branch> - Install dependencies -- Auto-detect project type, run appropriate install command
- Run baseline tests -- Capture output showing pass/fail; ask user if tests fail
- Worktree ready -- Report location and test status; only complete if tests passed
See references/creation-steps.md for full TaskCreate blocks, bash commands, and setup detection.
Quick Reference
| Situation | Action |
|---|---|
.worktrees/ exists | Use it (verify ignored) |
worktrees/ exists | Use it (verify ignored) |
| Both exist | Use .worktrees/ |
| Neither exists | Check CLAUDE.md -> Ask user |
| Directory not ignored | Add to .gitignore + commit |
| Tests fail during baseline | Report failures + ask |
| No package.json/Cargo.toml | Skip dependency install |
| Done with worktree | Use ExitWorktree tool (2.1.72+) |
Common Mistakes
- Skipping ignore verification -- worktree contents pollute git status. Always
git check-ignorefirst. - Assuming directory location -- follow priority: existing > CLAUDE.md > ask.
- Proceeding with failing tests -- report failures, get permission first.
- Hardcoding setup commands -- auto-detect from project files instead.
Integration
Called by: brainstorming (after design), any skill needing isolated workspace
Pairs with: finishing-a-development-branch (cleanup), executing-plans / subagent-driven-development (work happens here)
Cleanup: ExitWorktree tool (2.1.72+) — see Quick Reference and references/creation-steps.md section 6.
Reference Files
references/directory-selection.md: full priority order with bash commands and ask-user flowreferences/safety-verification.md: full gitignore verification protocol with commandsreferences/creation-steps.md: full TaskCreate blocks, bash commands, and setup detectionreferences/example-workflow.md: annotated example of complete worktree setup workflowreferences/red-flags.md: Never/Always lists for quick self-check