--- 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 [from ]` 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 []` Removes a worktree and its local branch. --- ## Instructions ### For `create` command: 1. Parse arguments: - ``: Required, the new branch name - ``: Optional, defaults to `origin/main` 2. Determine paths: ```bash REPO_BASENAME=$(basename "$PWD") WORKTREE_PATH="../${REPO_BASENAME}--${BRANCH_NAME}" ABSOLUTE_PATH=$(cd .. && pwd)/${REPO_BASENAME}--${BRANCH_NAME} ``` 3. Fetch latest: ```bash git fetch origin ``` 4. Create worktree: ```bash git worktree add -b ``` 5. Install dependencies: ```bash cd && npm install ``` 6. Return to original directory 7. **CRITICAL - Output this format at the end:** ``` Worktree created successfully! Branch: Base: Path: To start a parallel Claude Code session, copy and run: ┌────────────────────────────────────────────────────────────┐ │ cd && claude │ └────────────────────────────────────────────────────────────┘ ``` --- ### For `list` command: Run and display output: ```bash git worktree list ``` --- ### For `remove` command: 1. If no worktree name provided, show `git worktree list` and ask user to specify 2. Parse worktree name to extract branch: - Worktree format: `--` - Extract branch: everything after `--` 3. **Ask for confirmation** before proceeding 4. Remove worktree: ```bash git worktree remove --force ``` 5. Delete local branch: ```bash git branch -D ``` 6. Confirm: "Removed worktree and local branch. Remote branch preserved for PR." --- ## Safety Rules - Always `git fetch` before 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 ## Troubleshooting ### Error: "fatal: '' is already checked out at ''" Cause: The branch is already in use by another worktree Solution: Use `git worktree list` to find the existing worktree, then either remove it or choose a different branch name. ### Error: "fatal: a branch named '' already exists" Cause: Local branch with that name already exists Solution: Ask user if they want to reuse the existing branch or pick a new name. ### Worktree remove fails with "contains modified or untracked files" Cause: There are uncommitted changes in the worktree Solution: Ask user for explicit confirmation before using `--force`. Warn about potential data loss.