- Claude Command: Create Worktree
- Your job is to create and setup git worktrees for parallel development, with automatic detection and installation of project dependencies.
- Instructions
- CRITICAL: Perform the following steps exactly as described:
- Current state check
-
- Run
- git worktree list
- to show existing worktrees and
- git status
- to verify the repository state is clean (no uncommitted changes that might cause issues)
- Fetch latest remote branches
-
- Run
- git fetch --all
- to ensure local has knowledge of all remote branches
- Parse user input
-
- Determine what the user wants to create:
-
- Create worktree with auto-detected type prefix
- --list
-
- Just show existing worktrees and exit
- No input: Ask user interactively for the name
- Auto-detect branch type from name
-
- Check if the first word is a known branch type. If yes, use it as the prefix and the rest as the name. If no, default to
- feature/
- .
- Known types:
- feature
- ,
- feat
- ,
- fix
- ,
- bug
- ,
- bugfix
- ,
- hotfix
- ,
- release
- ,
- docs
- ,
- test
- ,
- refactor
- ,
- chore
- ,
- spike
- ,
- experiment
- ,
- review
- Examples:
- refactor auth system
- →
- refactor/auth-system
- fix login bug
- →
- fix/login-bug
- auth system
- →
- feature/auth-system
- (default)
- hotfix critical error
- →
- hotfix/critical-error
- Name normalization:
- Convert spaces to dashes, lowercase, remove special characters except dashes/underscores
- For each worktree to create
- :
- a.
- Branch name construction
-
- Build full branch name from detected type and normalized name:
/ - (e.g.,
- feature/auth-system
- )
- b.
- Branch resolution
-
- Determine if the branch exists locally, remotely, or needs to be created:
- If branch exists locally:
- git worktree add ../
- - If branch exists remotely (origin/):
- git worktree add --track -b
../ - origin/ - If branch doesn't exist: Ask user for base branch (default: current branch or main/master), then
- git worktree add -b
../ - - c.
- Path convention
-
- Use sibling directory with pattern
- ../
- - Extract project name from current directory
- Use the normalized name (NOT the full branch with prefix)
- Example:
- feature/auth-system
- →
- ../myproject-auth-system
- d.
- Create the worktree
-
- Execute the appropriate git worktree add command
- e.
- Dependency detection
-
- Check the new worktree for dependency files and determine if setup is needed:
- package.json
- -> Node.js project (npm/yarn/pnpm/bun)
- requirements.txt
- or
- pyproject.toml
- or
- setup.py
- -> Python project
- Cargo.toml
- -> Rust project
- go.mod
- -> Go project
- Gemfile
- -> Ruby project
- composer.json
- -> PHP project
- f.
- Package manager detection
- (for Node.js projects):
- bun.lockb
- -> Use
- bun install
- pnpm-lock.yaml
- -> Use
- pnpm install
- yarn.lock
- -> Use
- yarn install
- package-lock.json
- or default -> Use
- npm install
- g.
- Automatic setup
-
- Automatically run dependency installation:
- cd to worktree and run the detected install command
- Report progress: "Installing dependencies with [package manager]..."
- If installation fails, report the error but continue with worktree creation summary
- Summary
- Display summary of created worktrees:
Worktree path
Branch name (full name with prefix)
Setup status (dependencies installed or failed)
Quick navigation command:
cd
Worktree Path Convention Worktrees are created as sibling directories to maintain organization: ~/projects/ myproject/ # Main worktree (current directory) myproject-add-auth/ # Feature branch worktree (feature/add-auth) myproject-critical-bug/ # Hotfix worktree (hotfix/critical-bug) myproject-pr-456/ # PR review worktree (review/pr-456) Naming rules: Pattern: - (uses the name part, NOT the full branch) Branch name: / (e.g., feature/add-auth ) Directory name uses only the portion for brevity Examples Feature worktree (default): /git:create-worktree auth system
Branch: feature/auth-system
Creates: ../myproject-auth-system
Fix worktree:
/git:create-worktree fix login error
Branch: fix/login-error
Creates: ../myproject-login-error
Refactor worktree:
/git:create-worktree refactor api layer
Branch: refactor/api-layer
Creates: ../myproject-api-layer
Hotfix worktree:
/git:create-worktree hotfix critical bug
Branch: hotfix/critical-bug
Creates: ../myproject-critical-bug
List existing worktrees:
/git:create-worktree --list
Shows: git worktree list output
Setup Detection Examples Node.js project with pnpm: Detected Node.js project with pnpm-lock.yaml Installing dependencies with pnpm... ✓ Dependencies installed successfully Python project: Detected Python project with requirements.txt Installing dependencies with pip... ✓ Dependencies installed successfully Rust project: Detected Rust project with Cargo.toml Building project with cargo... ✓ Project built successfully Common Workflows Quick Feature Branch
/git:create-worktree new dashboard
Branch: feature/new-dashboard
Creates worktree, installs dependencies, ready to code
Hotfix While Feature In Progress
In main worktree, working on feature
/git:create-worktree hotfix critical bug
Branch: hotfix/critical-bug
Creates separate worktree from main/master
Fix bug in hotfix worktree
Return to feature work when done
PR Review Without Stashing
/git:create-worktree review pr 123
Branch: review/pr-123
Creates worktree for reviewing PR
Can run tests, inspect code
Delete when review complete
Experiment or Spike
/git:create-worktree spike new architecture
Branch: spike/new-architecture
Creates isolated worktree for experimentation
Discard or merge based on results
- Important Notes
- Branch lock
-
- Each branch can only be checked out in one worktree at a time. If a branch is already checked out, the command will inform you which worktree has it.
- Shared .git
-
- All worktrees share the same Git object database. Changes committed in any worktree are visible to all others.
- Clean working directory
-
- The command checks for uncommitted changes and warns if present, as creating worktrees is safest with a clean state.
- Sibling directories
-
- Worktrees are always created as sibling directories (using
- ../
- ) to keep the workspace organized. Never create worktrees inside the main repository.
- Automatic dependency installation
-
- The command automatically detects the project type and package manager, then runs the appropriate install command without prompting.
- Remote tracking
- For remote branches, worktrees are created with proper tracking setup (
--track
flag) so pulls/pushes work correctly.
Cleanup
When done with a worktree, use the proper removal command:
git
worktree remove
..
/myproject-add-auth
Or for a worktree with uncommitted changes:
git
worktree remove
--force
..
/myproject-add-auth
Never use
rm -rf
to delete worktrees - always use
git worktree remove
.
Troubleshooting
"Branch is already checked out"
Run
git worktree list
to see where the branch is checked out
Either work in that worktree or remove it first
"Cannot create worktree - path already exists"
The target directory already exists
Either remove it or choose a different worktree path
"Dependency installation failed"
Navigate to the worktree manually:
cd ../myproject-
Run the install command directly to see full error output Common causes: missing system dependencies, network issues, corrupted lockfile "Wrong type detected" The first word is used as the branch type if it's a known type To force a specific type, start with: fix , hotfix , docs , test , refactor , chore , spike , review Default type is feature/ when first word isn't a known type