| name | dev_manage_git-worktrees |
| shared_corpus | true |
| harness_scope | shared |
| source_owner | gpt-cmdr |
| security_review | internal |
| description | Use when starting feature work that needs isolation from current workspace or
before executing implementation plans - creates isolated git worktrees with
smart directory selection and safety verification.
Triggers: worktree, git worktree, isolated workspace, feature branch isolation,
multiple branches, parallel development, branch workspace, create worktree,
manage worktree, close worktree, worktree cleanup, isolated branch, side branch,
concurrent development, worktree list, worktree status.
|
Using Git Worktrees
Overview
Use git worktrees to create isolated workspaces sharing the same repository, enabling work on multiple branches simultaneously without switching.
Core principle: Apply systematic directory selection + safety verification to ensure reliable isolation.
Announce at start: "I'm using the dev_manage_git-worktrees skill to set up an isolated workspace."
Primary Sources
Git Documentation:
git worktree --help - Complete git worktree reference
git worktree list - Show all worktrees
git worktree remove - Cleanup worktrees
Integration:
.claude/agents/git-operations/ - Delegates worktree setup to this skill
finishing-a-development-branch skill - REQUIRED for cleanup after work complete
Directory Selection Process
Follow this priority order:
1. Check Existing Directories
ls -d .worktrees 2>/dev/null
ls -d worktrees 2>/dev/null
If found: Use that directory. If both exist, prefer .worktrees.
2. Check AGENTS.md
grep -i "worktree.*director" AGENTS.md 2>/dev/null
If preference specified: Use it without asking.
3. Ask User
If no directory exists and no AGENTS.md preference:
No worktree directory found. Where should I create worktrees?
1. .worktrees/ (project-local, hidden)
2. ~/.config/superpowers/worktrees/<project-name>/ (global location)
Which would you prefer?
Safety Verification
For Project-Local Directories (.worktrees or worktrees)
MUST verify .gitignore before creating worktree:
grep -q "^\.worktrees/$" .gitignore || grep -q "^worktrees/$" .gitignore
If NOT in .gitignore:
Per "Fix broken things immediately" principle:
- Add appropriate line to .gitignore
- Commit the change
- Proceed with worktree creation
Why critical: Prevents accidentally committing worktree contents to repository.
For Global Directory (~/.config/superpowers/worktrees)
No .gitignore verification needed - outside project entirely.
Creation Steps
1. Detect Project Name
project=$(basename "$(git rev-parse --show-toplevel)")
2. Create Worktree
case $LOCATION in
.worktrees|worktrees)
path="$LOCATION/$BRANCH_NAME"
;;
~/.config/superpowers/worktrees/*)
path="~/.config/superpowers/worktrees/$project/$BRANCH_NAME"
;;
esac
git worktree add "$path" -b "$BRANCH_NAME"
cd "$path"
3. Run Project Setup
Auto-detect and run appropriate setup:
if [ -f package.json ]; then npm install; fi
if [ -f Cargo.toml ]; then cargo build; fi
if [ -f requirements.txt ]; then pip install -r requirements.txt; fi
if [ -f pyproject.toml ]; then poetry install; fi
if [ -f go.mod ]; then go mod download; fi
4. Verify Clean Baseline
Run tests to ensure worktree starts clean:
npm test
cargo test
pytest
go test ./...
If tests fail: Report failures, ask whether to proceed or investigate.
If tests pass: Report ready.
5. Report Location
Worktree ready at <full-path>
Tests passing (<N> tests, 0 failures)
Ready to implement <feature-name>
Complete Workflow Example
echo "I'm using the dev_manage_git-worktrees skill to set up an isolated workspace."
if [ -d .worktrees ]; then
DIR=".worktrees"
elif [ -d worktrees ]; then
DIR="worktrees"
else
PREF=$(grep -i "worktree.*directory" AGENTS.md 2>/dev/null)
fi
if [[ $DIR == ".worktrees" ]] || [[ $DIR == "worktrees" ]]; then
if ! grep -q "^$DIR/$" .gitignore; then
echo "$DIR/" >> .gitignore
git add .gitignore
git commit -m "Add $DIR/ to .gitignore"
fi
fi
git worktree add "$DIR/feature-auth" -b "feature/auth"
cd "$DIR/feature-auth"
if [ -f package.json ]; then
npm install
fi
npm test
echo "Worktree ready at $(pwd)"
echo "Tests passing (47 tests, 0 failures)"
echo "Ready to implement auth feature"
Quick Reference
| Situation | Action |
|---|
.worktrees/ exists | Use it (verify .gitignore) |
worktrees/ exists | Use it (verify .gitignore) |
| Both exist | Use .worktrees/ |
| Neither exists | Check AGENTS.md → Ask user |
| Directory not in .gitignore | Add it immediately + commit |
| Tests fail during baseline | Report failures + ask |
| No package.json/Cargo.toml | Skip dependency install |
Common Mistakes
❌ Skipping .gitignore Verification
Problem: Worktree contents get tracked, pollute git status
Fix: Always grep .gitignore before creating project-local worktree
❌ Assuming Directory Location
Problem: Creates inconsistency, violates project conventions
Fix: Follow priority: existing > AGENTS.md > ask
❌ Proceeding with Failing Tests
Problem: Can't distinguish new bugs from pre-existing issues
Fix: Report failures, get explicit permission to proceed
❌ Hardcoding Setup Commands
Problem: Breaks on projects using different tools
Fix: Auto-detect from project files (package.json, Cargo.toml, etc.)
Integration Points
Called By
- git-operations subagent - Delegates all worktree setup
- brainstorming skill (Phase 4) - REQUIRED when implementation follows design approval
- Any workflow needing isolated workspace
Pairs With
- finishing-a-development-branch skill - REQUIRED for cleanup after work complete
- executing-plans or subagent-driven-development - Work happens in this worktree
Worktree Cleanup
After completing work, invoke finishing-a-development-branch skill or perform manual cleanup:
cd /path/to/main/worktree
git worktree remove .worktrees/feature-auth
git branch -d feature/auth
git worktree list
Red Flags
Never:
- Create worktree without .gitignore verification (project-local)
- Skip baseline test verification
- Proceed with failing tests without asking
- Assume directory location when ambiguous
- Skip AGENTS.md check
Always:
- Follow directory priority: existing > AGENTS.md > ask
- Verify .gitignore for project-local
- Auto-detect and run project setup
- Verify clean test baseline
- Announce skill usage at start
Cross-References
Agents (delegate when needed):
git-operations -- Delegate for complex git workflows
Commands (user triggers):
/agents-start-gitworktree -- Create isolated worktree for feature work
/agents-close-gitworktree -- Close worktree after completing work