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", "isolated workspace", "feature branch isolation", "multiple branches", "parallel development"
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."
Git Documentation:
git worktree --help - Complete git worktree referencegit worktree list - Show all worktreesgit worktree remove - Cleanup worktreesIntegration:
.claude/agents/git-operations/ - Delegates worktree setup to this skillfinishing-a-development-branch skill - REQUIRED for cleanup after work completeFollow this priority order:
# Check in priority order
ls -d .worktrees 2>/dev/null # Preferred (hidden)
ls -d worktrees 2>/dev/null # Alternative
If found: Use that directory. If both exist, prefer .worktrees.
grep -i "worktree.*director" AGENTS.md 2>/dev/null
If preference specified: Use it without asking.
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?
MUST verify .gitignore before creating worktree:
# Check if directory pattern in .gitignore
grep -q "^\.worktrees/$" .gitignore || grep -q "^worktrees/$" .gitignore
If NOT in .gitignore:
Per "Fix broken things immediately" principle:
Why critical: Prevents accidentally committing worktree contents to repository.
No .gitignore verification needed - outside project entirely.
project=$(basename "$(git rev-parse --show-toplevel)")
# Determine full path
case $LOCATION in
.worktrees|worktrees)
path="$LOCATION/$BRANCH_NAME"
;;
~/.config/superpowers/worktrees/*)
path="~/.config/superpowers/worktrees/$project/$BRANCH_NAME"
;;
esac
# Create worktree with new branch
git worktree add "$path" -b "$BRANCH_NAME"
cd "$path"
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
Run tests to ensure worktree starts clean:
# Examples - use project-appropriate command
npm test
cargo test
pytest
go test ./...
If tests fail: Report failures, ask whether to proceed or investigate.
If tests pass: Report ready.
Worktree ready at <full-path>
Tests passing (<N> tests, 0 failures)
Ready to implement <feature-name>
# 1. Announce
echo "I'm using the dev_manage_git-worktrees skill to set up an isolated workspace."
# 2. Check existing directories
if [ -d .worktrees ]; then
DIR=".worktrees"
elif [ -d worktrees ]; then
DIR="worktrees"
else
# Check AGENTS.md for preference
PREF=$(grep -i "worktree.*directory" AGENTS.md 2>/dev/null)
# If no preference, ask user
# ... (use AskUserQuestion tool)
fi
# 3. Verify .gitignore (project-local only)
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
# 4. Create worktree
git worktree add "$DIR/feature-auth" -b "feature/auth"
cd "$DIR/feature-auth"
# 5. Run setup
if [ -f package.json ]; then
npm install
fi
# 6. Verify baseline
npm test
# 7. Report
echo "Worktree ready at $(pwd)"
echo "Tests passing (47 tests, 0 failures)"
echo "Ready to implement auth feature"
| 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 |
Problem: Worktree contents get tracked, pollute git status
Fix: Always grep .gitignore before creating project-local worktree
Problem: Creates inconsistency, violates project conventions
Fix: Follow priority: existing > AGENTS.md > ask
Problem: Can't distinguish new bugs from pre-existing issues
Fix: Report failures, get explicit permission to proceed
Problem: Breaks on projects using different tools
Fix: Auto-detect from project files (package.json, Cargo.toml, etc.)
After completing work, invoke finishing-a-development-branch skill or perform manual cleanup:
# 1. Return to main worktree
cd /path/to/main/worktree
# 2. Remove branch worktree
git worktree remove .worktrees/feature-auth
# 3. Delete branch if merged
git branch -d feature/auth
# 4. Verify cleanup
git worktree list
Never:
Always:
Agents (delegate when needed):
git-operations -- Delegate for complex git workflowsCommands (user triggers):
/agents-start-gitworktree -- Create isolated worktree for feature work/agents-close-gitworktree -- Close worktree after completing worknpx skills add gpt-cmdr/dev_manage_git-worktrees下载完整 Skill 目录,包含 SKILL.md 及所有相关文件
Search for places (restaurants, cafes, etc.) via Google Places API proxy on localhost.
Interact with GitHub using the `gh` CLI. Use `gh issue`, `gh pr`, `gh run`, and `gh api` for issues, PRs, CI runs, and advanced queries.
Create or update AgentSkills. Use when designing, structuring, or packaging skills with scripts, references, and assets.
Start voice calls via the OpenClaw voice-call plugin.
Notion API for creating and managing pages, databases, and blocks.
Gemini CLI for one-shot Q&A, summaries, and generation.
Category:developer