> git:create-worktree
Create and setup git worktrees for parallel development with automatic dependency installation
curl "https://skillshub.wtf/NeoLabHQ/context-engineering-kit/create-worktree?format=md"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 listto show existing worktrees andgit statusto verify the repository state is clean (no uncommitted changes that might cause issues) -
Fetch latest remote branches: Run
git fetch --allto ensure local has knowledge of all remote branches -
Parse user input: Determine what the user wants to create:
<name>: 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,reviewExamples:
refactor auth system→refactor/auth-systemfix login bug→fix/login-bugauth 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:
<prefix>/<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 ../<project>-<name> <branch> - If branch exists remotely (origin/<branch>):
git worktree add --track -b <branch> ../<project>-<name> origin/<branch> - If branch doesn't exist: Ask user for base branch (default: current branch or main/master), then
git worktree add -b <branch> ../<project>-<name> <base>
c. Path convention: Use sibling directory with pattern
../<project-name>-<name>- 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.txtorpyproject.tomlorsetup.py-> Python projectCargo.toml-> Rust projectgo.mod-> Go projectGemfile-> Ruby projectcomposer.json-> PHP project
f. Package manager detection (for Node.js projects):
bun.lockb-> Usebun installpnpm-lock.yaml-> Usepnpm installyarn.lock-> Useyarn installpackage-lock.jsonor default -> Usenpm 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>
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:
<project-name>-<name>(uses the name part, NOT the full branch) - Branch name:
<type-prefix>/<name>(e.g.,feature/add-auth) - Directory name uses only the
<name>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 (
--trackflag) 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 listto 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-<name> - 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
> related_skills --same-repo
> tech-stack:add-typescript-best-practices
Setup TypeScript best practices and code style rules in CLAUDE.md
> tdd:write-tests
Systematically add test coverage for all local code changes using specialized review and development agents. Add tests for uncommitted changes (including untracked files), or if everything is commited, then will cover latest commit.
> tdd:test-driven-development
Use when implementing any feature or bugfix, before writing implementation code - write the test first, watch it fail, write minimal code to pass; ensures tests actually verify behavior by requiring failure first
> tdd:fix-tests
Systematically fix all failing tests after business logic changes or refactoring