| name | worktree |
| description | Manage git worktrees for parallel Claude Code sessions. Use when user says "worktree", "create worktree", "parallel session", "new tree", or wants to work on multiple branches simultaneously. |
| allowed-tools | Bash, Glob, AskUserQuestion |
Git Worktree Manager
Manage git worktrees for running parallel Claude Code sessions.
Commands
/worktree create <branch-name> [from <base-branch>]
Creates a new git worktree for parallel development.
Examples:
/worktree create fix-bug- Creates worktree from origin/main/worktree create fix-bug from main- Creates worktree from main branch/worktree create feature-x from develop- Creates from develop
/worktree list
Lists all active worktrees.
/worktree remove [<worktree-name>]
Removes a worktree and its local branch.
Instructions
For create command:
Parse arguments:
<branch-name>: Required, the new branch name<base-branch>: Optional, defaults toorigin/main
Determine paths:
REPO_BASENAME=$(basename "$PWD") WORKTREE_PATH="../${REPO_BASENAME}--${BRANCH_NAME}" ABSOLUTE_PATH=$(cd .. && pwd)/${REPO_BASENAME}--${BRANCH_NAME}Fetch latest:
git fetch originCreate worktree:
git worktree add -b <branch-name> <worktree-path> <base-branch>Install dependencies:
cd <worktree-path> && npm installReturn to original directory
Check if running inside tmux:
if [ -n "$TMUX" ]; then # Inside tmux - open new window with claude tmux new-window -c "<absolute-path>" -n "<branch-name>" "claude; bash" fiCRITICAL - Output this format at the end:
If tmux was used:
Worktree created successfully! Branch: <branch-name> Base: <base-branch> Path: <absolute-path> New tmux window "<branch-name>" opened with Claude Code. Switch to it with: Ctrl+b n (next) or Ctrl+b w (window list)If NOT in tmux (fallback):
Worktree created successfully! Branch: <branch-name> Base: <base-branch> Path: <absolute-path> To start a parallel Claude Code session, copy and run: ┌────────────────────────────────────────────────────────────┐ │ cd <absolute-path> && claude │ └────────────────────────────────────────────────────────────┘
For list command:
Run and display output:
git worktree list
For remove command:
If no worktree name provided, show
git worktree listand ask user to specifyParse worktree name to extract branch:
- Worktree format:
<repo>--<branch> - Extract branch: everything after
--
- Worktree format:
Ask for confirmation before proceeding
Remove worktree:
git worktree remove <worktree-path> --forceDelete local branch:
git branch -D <branch-name>Confirm: "Removed worktree and local branch. Remote branch preserved for PR."
Safety Rules
- Always
git fetchbefore creating to have latest refs - Never remove worktrees with uncommitted changes without explicit confirmation
- Never remove the main worktree (one without
--in directory name) - Preserve remote branches when removing (only delete local branch)
- If branch already exists, ask user if they want to use existing or create new name