--- name: speckit-worktree-create description: Spawn an isolated git worktree for a new or existing feature branch compatibility: Requires spec-kit project structure with .specify/ directory metadata: author: github-spec-kit source: worktree:commands/speckit.worktree.create.md --- # Create Worktree Spawn an isolated git worktree for a feature branch so you can work on multiple features in parallel without switching branches. Each worktree gets its own directory with a full working copy. ## User Input ```text $ARGUMENTS ``` You **MUST** consider the user input before proceeding (if not empty). The user may specify a branch name (e.g., "003-user-auth") or "current" to create a worktree for the current branch. ## Prerequisites 1. Verify a spec-kit project exists by checking for `.specify/` directory 2. Verify git is available and the project is a git repository 3. Check that the target branch exists (local or remote) ## Outline 1. **Determine target branch**: Identify which feature branch to create a worktree for: - If user specifies a branch name, use that - If user says "current", use the current branch - If no input, check for the most recently created feature branch - Validate the branch exists in git 2. **Choose worktree location**: Determine the worktree directory path: - Default location: `.worktrees/{branch-name}/` relative to the repository root - If `.worktrees/` directory does not exist, create it - Add `.worktrees/` to `.gitignore` if not already present - Verify the worktree does not already exist for this branch 3. **Create the worktree**: Execute the git worktree command: - Run `git worktree add .worktrees/{branch-name} {branch-name}` - If the branch is remote-only, track it: `git worktree add .worktrees/{branch-name} -b {branch-name} origin/{branch-name}` - Verify the worktree was created successfully 4. **Verify spec artifacts**: Check that the worktree has access to spec artifacts: - Confirm `specs/{branch-name}/` directory exists in the worktree - List available artifacts (spec.md, plan.md, tasks.md) - Note any missing artifacts 5. **Report**: Output a summary: ```markdown # Worktree Created | Field | Value | | ------------------ | ----------------------------------- | | **Branch** | {branch-name} | | **Worktree path** | .worktrees/{branch-name}/ | | **Spec artifacts** | spec.md ✅, plan.md ✅, tasks.md ❌ | ## Next Steps - `cd .worktrees/{branch-name}/` to work in the isolated worktree - Run `/speckit.implement` inside the worktree to build the feature - Run `/speckit.worktree.list` to see all active worktrees - When done, run `/speckit.worktree.clean` to remove the worktree ``` ## Rules - **Never modify the main working directory** — worktrees are created in `.worktrees/` only - **Always update .gitignore** — ensure `.worktrees/` is ignored to prevent accidental commits - **One worktree per branch** — refuse to create a duplicate worktree for the same branch - **Validate branch exists** — do not create worktrees for non-existent branches - **Preserve existing worktrees** — never overwrite or remove an existing worktree