name: nv-worktree-create
description: >-
Create a sibling git worktree and a new branch with the same name, copy local
.env* files, initialize the enterprise submodule, wire enterprise symlinks,
and move the agent into the worktree. Use when the user asks for a worktree,
parallel branch checkout, or /worktree with a branch name.
disable-model-invocation: true
Create a sibling git worktree
Goal: one name → new branch + sibling worktree at ../<name>, ready to work in.
For git command details and path naming, read nv-worktree-commands. For cleanup, read nv-worktree-cleanup.
Inputs
| Input | Required | Default |
|---|---|---|
| Branch / worktree name | yes — ask if missing | — |
| Base ref | no | current HEAD |
Use the name as-is for the git branch. Use the sanitized name for the directory (see nv-worktree-commands).
Steps
Preflight — from the main repo root:
git rev-parse --show-toplevelgit worktree list— abort if the target path already existsgit status --porcelain— if non-empty, warn that the working tree is dirty and ask the user whether to proceed before creating the worktree
Create — always a new branch and worktree:
git worktree add -b <branch> <worktree-path> [<base-ref>]Omit
<base-ref>to branch from currentHEAD.Copy local env files — from the main checkout into the worktree (gitignored secrets only; not
.env.example). Use thersyncrecipe innv-worktree-commands. Report what was copied. Do not runsetup-env-files.js— it regenerates encryption keys.Enterprise submodule — from the worktree root (best-effort; do not block handoff):
- Skip if
.sourcealready exists or is linked. - Prefer linking an existing
packages-enterpriseclone before submodule init — same candidates as.cursor/scripts/install.sh(sibling../packages-enterprise, parent checkout.source,/agent/repos/packages-enterprise, etc.). - Else configure HTTPS git fallback when SSH is unavailable, then shallow-init
.source(matchesinstall.sh):git config --global url."https://github.com/".insteadOf "git@github.com:" gh auth setup-git git submodule update --init --depth 1 .source - If
.sourceis available, refresh symlinks (warn-only on failure):pnpm symlink:submodules || echo "WARN: symlink:submodules failed; continuing in OSS mode" - If enterprise setup fails, warn and continue in OSS mode — do not block the worktree. For troubleshooting, read
enterprise-submodule.
- Skip if
Hand off —
move_agent_to_rootwith the absolute worktree path. Notmove_agent_to_cloned_root.Confirm — branch name, worktree path, base ref, copied env files, enterprise submodule status.
Example
User: /worktree branch=more-dcr-oauths
Branch: more-dcr-oauths
Path: ../more-dcr-oauths
Command: git worktree add -b more-dcr-oauths ../more-dcr-oauths
Then copy .env*, wire .source (link or submodule init) + pnpm symlink:submodules, move_agent_to_root.
Do not
- Check out an existing branch — this skill always creates a new branch.
- Copy the whole repo — only
.env*. - Run
pnpm install,pnpm build, orpnpm setup:agent— do those only if the user asks or a task fails. - Symlink
node_modulesfrom the parent checkout. - Pick the branch name without the user providing it (or confirming a suggested name).