mcpField
G
git:create-worktree

git:create-worktree

github.com/neolabhqDevelopment1.8k429 installsUpdated 10w ago
Repository

About git:create-worktree

A Claude command for creating Git worktrees for parallel development. It normalizes branch names, resolves local or remote branches, and detects project dependencies for automatic setup.

Key features

  1. 01Create and list Git worktrees
  2. 02Infer branch types and normalize names
  3. 03Handle local and remote branches
  4. 04Detect project dependencies
  5. 05Install dependencies automatically

Use cases

  1. 01Set up an isolated feature branch
  2. 02Create a worktree for a hotfix
  3. 03Prepare a worktree to review a pull request
  4. 04Start an isolated experiment

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/neolabhq/context-engineering-kit --skill git:create-worktree

After installing, type/git:create-worktreein Claude Code to confirm it loaded.

Details

From the project README

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:

  1. 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)

  2. Fetch latest remote branches: Run git fetch --all to ensure local has knowledge of all remote branches

  3. 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
  4. 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

  5. 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/): 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.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
  6. 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 (--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-<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

Comments

Markdown supported