Back to Skills

create-worktree

verified

Create and bootstrap a git worktree for isolated development work.

View on GitHub

Marketplace

ky1ejs-plugins

ky1ejs/claude-plugins

Plugin

spec-workflow

Repository

ky1ejs/claude-plugins
1stars

plugins/spec-workflow/skills/create-worktree/SKILL.md

Last Verified

January 21, 2026

Install Skill

Select agents to install to:

Scope:
npx add-skill https://github.com/ky1ejs/claude-plugins/blob/main/plugins/spec-workflow/skills/create-worktree/SKILL.md -a claude-code --skill create-worktree

Installation paths:

Claude
.claude/skills/create-worktree/
Powered by add-skill CLI

Instructions

# Create Worktree

Creates and bootstraps a git worktree for isolated development work.

## Arguments

- `name` (required): Name for the worktree directory and branch
- `--spec=<path>`: Path to a spec file to copy into the worktree's specs directory
- `--base=<branch>`: Base branch to create worktree from (default: current branch or configured default)
- `--no-bootstrap`: Skip the onBootstrap hook

## Configuration

Check for `.claude/spec-workflow/config.yaml`:

```yaml
paths:
  worktrees: "./worktrees"      # Where worktrees are created
  specs: "./specs"              # Where specs live (for copying)

worktree:
  branchNaming: "{name}"        # Branch naming pattern
  defaultBase: null             # Default base branch (null = current)
  onBootstrap: null             # Hook script to run after creation
```

### Branch Naming

The `branchNaming` pattern supports these tokens:
- `{name}` - The worktree name
- `{date}` - Current date (YYYY-MM-DD)

Examples:
- `"{name}"` → `my-feature`
- `"feature/{name}"` → `feature/my-feature`
- `"{date}-{name}"` → `2024-01-15-my-feature`

### Bootstrap Hook

If `worktree.onBootstrap` is configured, it runs after worktree creation with these environment variables:

| Variable | Description |
|----------|-------------|
| `WORKTREE_PATH` | Absolute path to the new worktree |
| `WORKTREE_NAME` | Name of the worktree |
| `SPEC_FILE` | Path to spec file (if --spec was provided) |
| `BASE_BRANCH` | Branch the worktree was created from |

Example hook script:
```bash
#!/bin/bash
cd "$WORKTREE_PATH"
npm install
# ... any other setup
```

---

## Steps

1. **Check if worktree exists**
   - Check if a worktree with the given name already exists at the configured path
   - If it does, respond with "Worktree already exists at [path]" and exit
   - If it does not exist, proceed

2. **Determine paths and branch name**
   - Worktree path: `{config.paths.worktrees}/{name}` (default: `./worktrees/{name}`)
   - Branch name: Apply `branchNaming` patte

Validation Details

Front Matter
Required Fields
Valid Name Format
Valid Description
Has Sections
Allowed Tools
Instruction Length:
3361 chars