Claude-skill-registry git-worktree-use
Create isolated git worktrees with safety verification. Use when starting feature work needing isolation or before executing plans - systematic directory selection and baseline verification.
git clone https://github.com/majiayu000/claude-skill-registry
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/git-worktree-use" ~/.claude/skills/majiayu000-claude-skill-registry-git-worktree-use && rm -rf "$T"
skills/data/git-worktree-use/SKILL.mdUsing Git Worktrees
Git worktrees create isolated workspaces sharing the same repository.
Core principle: Systematic directory selection + safety verification = reliable isolation.
When to Use
Use for:
- Feature work needing isolation from current workspace
- Parallel work on multiple branches
- Before executing implementation plans
Don't use for:
- Quick fixes on current branch
- Single-file changes
- When isolation isn't needed
Directory Selection Process
Follow this priority order:
1. Check Existing Directories
ls -d .worktrees 2>/dev/null # Preferred (hidden) ls -d worktrees 2>/dev/null # Alternative
If found: Use that directory. If both exist,
.worktrees wins.
2. Check Project Config
Look for worktree directory preference in project documentation (CLAUDE.md, README, etc.).
If preference specified: Use it without asking.
3. Ask User
If no directory exists and no preference found:
No worktree directory found. Where should I create worktrees? 1. .worktrees/ (project-local, hidden) 2. ~/worktrees/<project-name>/ (global location) Which would you prefer?
Safety Verification
For Project-Local Directories
MUST verify .gitignore before creating worktree:
grep -q "^\.worktrees/$" .gitignore || grep -q "^worktrees/$" .gitignore
If NOT in .gitignore:
- Add appropriate line to .gitignore
- Commit the change
- Proceed with worktree creation
Why critical: Prevents accidentally committing worktree contents.
For Global Directory
No .gitignore verification needed - outside project entirely.
Creation Steps
1. Detect Project Name
project=$(basename "$(git rev-parse --show-toplevel)")
2. Create Worktree
git worktree add "$path" -b "$BRANCH_NAME" cd "$path"
3. Run Project Setup
Auto-detect and run appropriate setup:
# Detect project type and install dependencies 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 pip install -e .; fi if [ -f go.mod ]; then go mod download; fi
4. Verify Clean Baseline
Run tests to ensure worktree starts clean:
# 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.
5. Report Location
Worktree ready at <full-path> Tests passing (<N> tests, 0 failures) Ready to implement <feature-name>
Quick Reference
| Situation | Action |
|---|---|
exists | Use it (verify .gitignore) |
exists | Use it (verify .gitignore) |
| Both exist | Use |
| Neither exists | Check config then ask user |
| Not in .gitignore | Add it immediately + commit |
| Tests fail | Report failures + ask |
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
Always:
- Follow directory priority: existing > config > ask
- Verify .gitignore for project-local
- Auto-detect and run project setup
- Verify clean test baseline
Integration
Use with:
- After design approval, set up workspacebrainstorm
- Work happens in this worktreetask-dispatch
- Verify baseline before and aftercompletion-verify