Agent skill
worktree-manager
Create, list, switch to, rename, delete, and manage notes for git worktrees using lazyworktree CLI
Install this agent skill to your Project
npx add-skill https://github.com/chmouel/lazyworktree/tree/main/.claude/skills/worktree-manager
SKILL.md
Worktree Management
Manage git worktrees for the current repository using the lazyworktree CLI.
Current Worktrees
!lazyworktree list --json
Current Working Directory
!pwd
Current Branch
!git branch --show-current
Available Operations
Create a Worktree
From the current branch (new feature work):
# Auto-generated name (branch-adjective-noun pattern)
lazyworktree create --silent
# With a specific name
lazyworktree create --silent my-feature-name
# Carry over uncommitted changes to the new worktree
lazyworktree create --silent --with-change my-feature-name
# From a specific branch
lazyworktree create --silent --from-branch main my-feature-name
From a GitHub/GitLab PR:
lazyworktree create --silent --from-pr 42
# Create a local branch from a PR without creating a worktree
lazyworktree create --silent --from-pr 42 --no-workspace
From a GitHub/GitLab issue:
lazyworktree create --silent --from-issue 123
# Optionally specify a base branch
lazyworktree create --silent --from-issue 123 --from-branch main
# Create a local branch from an issue without creating a worktree
lazyworktree create --silent --from-issue 123 --no-workspace
Auto-generate worktree name from branch:
lazyworktree create --silent --generate
Run a command after creation:
lazyworktree create --silent --from-branch main my-feature --exec "npm install"
All create commands print the created worktree path to stdout on success.
List Worktrees
# JSON output (for parsing)
lazyworktree list --json
# Paths only (one per line)
lazyworktree list --pristine
# Show only the main branch worktree
lazyworktree list --main
# Human-readable table
lazyworktree list
Alias: lazyworktree ls is equivalent to lazyworktree list.
JSON fields: path, name, branch, is_main, dirty, ahead, behind, unpushed, last_active.
Run Commands in a Worktree
Use exec to run commands in a specific worktree without changing directory:
# By worktree name or path
lazyworktree exec -w my-feature-name "make build"
lazyworktree exec -w /path/to/worktree "make build"
# Auto-detect worktree from current directory (no -w needed)
cd /path/to/my-feature && lazyworktree exec "git status"
# Run any shell command
lazyworktree exec -w my-feature-name "go test ./..."
# Trigger a custom command key instead of a shell command
lazyworktree exec -w my-feature-name --key t
Note: --key and a command argument are mutually exclusive.
Rename a Worktree
# Rename current worktree (auto-detected from cwd)
lazyworktree rename --silent new-name
# Rename a specific worktree
lazyworktree rename --silent my-feature-name new-name
Worktree Notes
# Show the note for the current worktree (auto-detected from cwd)
lazyworktree note show
# Show the note for a specific worktree
lazyworktree note show my-feature-name
# Edit a worktree note (opens editor)
lazyworktree note edit my-feature-name
# Set a note from a file (use '-' for stdin)
lazyworktree note edit my-feature-name --input notes.md
echo "my note" | lazyworktree note edit my-feature-name --input -
Delete a Worktree
# Delete worktree and its branch (if names match)
lazyworktree delete --silent my-feature-name
# Delete worktree but keep the branch
lazyworktree delete --silent --no-branch my-feature-name
# Auto-detect worktree from cwd (positional arg is optional)
cd /path/to/worktree && lazyworktree delete --silent
Workflow Instructions
When the user asks to create a worktree:
- Determine the source: current branch, a specific branch, a PR number, or an issue number
- Run the appropriate
lazyworktree create --silentcommand - Capture the output path
- Report the created worktree path to the user
- If the user wants to work in it immediately, use
lazyworktree exec -w <name>for subsequent commands
When the user asks to switch to a worktree:
- Run
lazyworktree list --jsonto find available worktrees - Identify the target by name, branch, or path
- For running commands in the target worktree, use:
lazyworktree exec -w <name> "<command>" - Tell the user they can switch their shell with:
cd <path>
When the user asks to list worktrees:
- Run
lazyworktree list --jsonand present the results - Highlight dirty worktrees, ahead/behind status, and last active times
When the user asks to rename a worktree:
- Run
lazyworktree list --jsonto identify the worktree - Run
lazyworktree rename --silent <old-name> <new-name> - Report the new name to the user
When the user asks to view or edit worktree notes:
- To view:
lazyworktree note show <name>(omit name to use cwd) - To set from a string:
echo "content" | lazyworktree note edit <name> --input - - To set from a file:
lazyworktree note edit <name> --input path/to/file
When the user asks to delete a worktree:
- Run
lazyworktree list --jsonto show current worktrees - Confirm which worktree to delete
- Run
lazyworktree delete --silent <name>
Important Notes
- The
--silentflag suppresses progress messages to stderr; stdout still contains the result path - Worktree names are automatically sanitised (special characters replaced with hyphens)
- The main worktree cannot be deleted
- Use
exec -wto run commands in a worktree without changing your shell's working directory - If the user says "switch to" or "work in" a worktree, prefer using
exec -wfor running commands there and inform the user of the path for manualcd
Recommended Agent Skills
Expand your agent's capabilities with these related and highly-rated skills.
design-sync
Check DESIGN.md synchronization with codebase architecture
doc-sync
Check documentation consistency across README, man page, and help screen
theme-audit
Validate all themes for completeness and correct usage
commit-helper
Generate conventional commit from staged changes
deep-analyse
Thorough code analysis without polluting main context
sanity-check
Run full quality check with live results
Didn't find tool you were looking for?