Create and setup git worktrees for parallel development with automatic dependency installation
Install to Claude Code
npx -y skills add luokai0/ai-agent-skills-by-luo-kai --skill create-worktree --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Create Worktree?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/luokai0-create-worktree)More formats (shields.io, HTML) on the badges page.
---
author: luo-kai
name: git:create-worktree
description: Create and setup git worktrees for parallel development with automatic dependency installation
argument-hint: <name> (e.g., "refactor auth system" or "fix login") or --list to show existing worktrees
model: opus
allowed-tools: Bash(git worktree:*), Bash(git branch:*), Bash(git fetch:*), Bash(git status:*), Bash(ls:*), Bash(pwd:*), Bash(npm install:*), Bash(npm i:*), Bash(yarn install:*), Bash(yarn:*), Bash(pnpm install:*), Bash(pnpm i:*), Bash(bun install:*), Bash(pip install:*), Bash(poetry install:*), Bash(cargo build:*), Bash(go mod download:*)
---
# 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/<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.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):**
```bash
> /git:create-worktree auth system
# Branch: feature/auth-system
# Creates: ../myproject-auth-system
```
**Fix worktree:**
```bash
> /git:create-worktree fix login error
# Branch: fix/login-error
# Creates: ../myproject-login-error
```
**Refactor worktree:**
```bash
> /git:create-worktree refactor api layer
# Branch: refactor/api-layer
# Creates: ../myproject-api-layer
```
**Hotfix worktree:**
```bash
> /git:create-worktree hotfix critical bug
# Branch: hotfix/critical-bug
# Creates: ../myproject-critical-bug
```
**List existing worktrees:**
```bash
> /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
```bash
> /git:create-worktree new dashboard
# Branch: feature/new-dashboard
# Creates worktree, installs dependencies, ready to code
```
### Hotfix While Feature In Progress
```bash
# 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
```bash
> /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
```bash
> /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:
```bash
git worktree remove ../myproject-add-auth
```
Or for a worktree with uncommitted changes:
```bash
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
Scanned 9/10/2026
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!