Help us improve
Share bugs, ideas, or general feedback.
From worktrees
Use when creating a new git worktree. Handles gitignore setup, worktree creation, and provides guidance. Invoke with "/worktrees:new <name>" or when user mentions "create worktree", "new worktree", "start feature in worktree", or "isolated workspace".
npx claudepluginhub aaronbassett/agent-foundry --plugin worktreesHow this skill is triggered — by the user, by Claude, or both
Slash command
/worktrees:newThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Create an isolated worktree for parallel development.
Creates isolated git worktrees for parallel feature development, with automated directory selection and safety checks to prevent accidental commits.
Creates isolated git worktrees for feature branches with smart directory selection, .gitignore safety verification, and cross-platform Unix/Windows support.
Creates isolated git worktrees for feature work with smart directory selection and safety verification. Automatically detects project type and runs setup.
Share bugs, ideas, or general feedback.
Create an isolated worktree for parallel development.
<name> - Worktree and branch name (required)--base <branch> - Base branch (default: main)--lock - Lock worktree after creationFirst, check if .worktrees/ is in .gitignore:
grep -q "^\.worktrees" .gitignore 2>/dev/null && echo "OK: .worktrees already gitignored" || echo "MISSING: Need to add .worktrees to gitignore"
If missing, add and commit:
echo ".worktrees/" >> .gitignore
git add .gitignore
git commit -m "chore: add .worktrees to gitignore"
Why gitignore? Each worktree contains a complete checkout. Without gitignoring, you'd accidentally commit nested copies of your entire codebase.
Standard creation (new branch from base):
# Replace <name> with the provided name, <base> with --base value or "main"
git worktree add -b feature/<name> .worktrees/<name> <base>
With lock flag:
git worktree add --lock -b feature/<name> .worktrees/<name> <base>
git worktree list
Expected output shows new worktree:
/path/to/project abc1234 [main]
/path/to/project/.worktrees/<name> abc1234 [feature/<name>]
cd .worktrees/<name>
After creating the worktree:
git push -u origin feature/<name>/worktrees:finish to clean up| Scenario | Command |
|---|---|
| Basic feature | git worktree add -b feature/my-feature .worktrees/my-feature main |
| From release branch | git worktree add -b hotfix/urgent .worktrees/urgent release/v2 |
| Locked worktree | git worktree add --lock -b feature/critical .worktrees/critical main |
| With existing branch | git worktree add .worktrees/existing-branch existing-branch |
Error: fatal: 'branch-name' is already checked out at '/path'
Solution: Each branch can only exist in one worktree. Either:
git worktree listError: fatal: destination path already exists
Solution: The .worktrees/<name> directory exists. Either:
rm -rf .worktrees/<name> && git worktree prune# Create worktree with new branch
git worktree add -b <branch> .worktrees/<name> [base]
# Create worktree with existing branch
git worktree add .worktrees/<name> <branch>
# List worktrees
git worktree list
# Lock/unlock
git worktree lock .worktrees/<name>
git worktree unlock .worktrees/<name>