skills/jb-worktree/SKILL.md
Use when creating, switching, bootstrapping, or cleaning Git worktrees with wtp.
npx skillsauth add bjesuiter/skills jb-worktreeInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Based on satococoa's wtp workflow: https://dev.to/satococoa/wtp-a-better-git-worktree-cli-tool-4i8l
Use wtp instead of raw git worktree when you want predictable paths, easier branch handling, setup hooks, and fast navigation.
wtp init creates a starter .wtp.yml in the repo rootwtp add feature/auth creates ../worktrees/feature/auth automaticallywtp add can create or reuse local/remote branches.wtp.yml can copy .env, create symlinks, and run bootstrap commandswtp cd and wtp exec make navigation and command execution easierwtp remove --with-branch cleans up both the worktree and its branchbrew install satococoa/tap/wtp
Alternative:
go install github.com/satococoa/wtp/v2/cmd/wtp@latest
# Create a starter .wtp.yml in the repository root
wtp init
# Create a worktree from an existing branch
wtp add feature/auth
# Create a new branch + worktree
wtp add -b feature/new-ui
# Create from a specific base ref
wtp add -b hotfix/login origin/main
# List all worktrees
wtp list
# Print the absolute path for a worktree
wtp cd feature/auth
wtp cd @
# Run a command inside a worktree
wtp exec feature/auth -- npm test
# Remove a worktree
wtp remove feature/auth
# Remove a worktree and delete its branch too
wtp remove --with-branch feature/auth
When the user asks to work in a separate branch or isolated checkout:
.wtp.yml; if not, prefer wtp initbun.lock or bun.lockb exists, use bun installpnpm-lock.yaml exists, use pnpm install --frozen-lockfilepackage-lock.json and no Bun lockfile, use pnpm install by default, and prefer pnpm install --frozen-lockfile when reproducibility matterswtp listwtp add ...cd "$(wtp cd <name>)" && ...wtp exec <name> -- <command>wtp remove --with-branch <name>Prefer:
wtp add -b <branch> for new workwtp add <branch> when the branch already exists locally or remotelywtp exec <name> -- <command> for one-off commandsAvoid force removal of dirty worktrees unless the user explicitly asks.
wtp initUse this first in repos that do not have a config yet:
wtp init
It creates .wtp.yml in the repository root with a starter configuration and example hooks. If .wtp.yml already exists, wtp init errors instead of overwriting it.
.wtp.ymlwtp init gives you a starter file. Customize the post_create install command based on the repo lockfile:
bun.lock or bun.lockb present → bun installpnpm-lock.yaml present → pnpm install --frozen-lockfilepackage-lock.json present and no Bun lockfile → pnpm install by default, or pnpm install --frozen-lockfile for stricter reproducible installsExample for a Bun repo:
version: "1.0"
defaults:
base_dir: "../worktrees"
hooks:
post_create:
- type: copy
from: ".env"
to: ".env"
- type: symlink
from: ".bin"
to: ".bin"
- type: command
command: "bun install"
- type: command
command: "npm run db:setup"
Example for a repo with pnpm-lock.yaml:
version: "1.0"
defaults:
base_dir: "../worktrees"
hooks:
post_create:
- type: copy
from: ".env"
to: ".env"
- type: symlink
from: ".bin"
to: ".bin"
- type: command
command: "pnpm install --frozen-lockfile"
- type: command
command: "npm run db:setup"
Example for a repo with a pure package-lock.json setup:
version: "1.0"
defaults:
base_dir: "../worktrees"
hooks:
post_create:
- type: copy
from: ".env"
to: ".env"
- type: symlink
from: ".bin"
to: ".bin"
- type: command
command: "pnpm install"
- type: command
command: "npm run db:setup"
This is especially useful for repos that need local env files, shared tool directories, or bootstrap commands in every new worktree.
For interactive shells, enable completions and navigation hooks:
eval "$(wtp shell-init zsh)"
# or
# eval "$(wtp shell-init bash)"
# wtp shell-init fish | source
Then wtp cd feature/auth can switch directly in the shell, and interactive wtp add can auto-switch into the new worktree.
# Return to the main worktree
wtp cd @
# Run tests in the main worktree
wtp exec @ -- npm test
# Force remove a dirty worktree only when you are sure
wtp remove --force feature/auth
# Remove worktree and force-delete its branch
wtp remove --with-branch --force-branch feature/auth
../worktreeswtp cd is also useful in scripts because it prints the resolved absolute pathtesting
Use when the user mentions Clawpatch/clawpatch.ai, semantic feature review, repo-wide AI audit, persistent findings, or clawpatch init/map/review/report/fix/revalidate.
development
Use when the user asks for autoreview, Codex/Claude second-model review, or final review of dirty changes, a branch, commit, or PR before ship.
testing
Use when the user asks to cut, prepare, publish, tag, or verify a release, especially npm/package releases.
tools
Use when adding, writing, fixing, or exposing a script for the Tuna macOS launcher.