From worktrunk
Provides guidance for Worktrunk (wt CLI): git worktree management, hooks (post-merge, pre-commit etc.), user/project configs, LLM commit generation, aliases, and troubleshooting.
npx claudepluginhub max-sixty/worktrunk --plugin worktrunkThis skill uses the workspace's default tool permissions.
Help users work with Worktrunk, a CLI tool for managing git worktrees.
reference/README.mdreference/claude-code.mdreference/config.mdreference/extending.mdreference/faq.mdreference/hook.mdreference/list.mdreference/llm-commits.mdreference/merge.mdreference/remove.mdreference/shell-integration.mdreference/step.mdreference/switch.mdreference/tips-patterns.mdreference/troubleshooting.mdreference/worktrunk.mdCreates isolated Git worktrees for feature branches with prioritized directory selection, gitignore safety checks, auto project setup for Node/Python/Rust/Go, and baseline verification.
Executes implementation plans in current session by dispatching fresh subagents per independent task, with two-stage reviews: spec compliance then code quality.
Dispatches parallel agents to independently tackle 2+ tasks like separate test failures or subsystems without shared state or dependencies.
Help users work with Worktrunk, a CLI tool for managing git worktrees.
Reference files are synced from worktrunk.dev documentation:
For command-specific options, run wt <command> --help. For configuration, follow the workflows below.
Worktrunk uses two separate config files with different scopes and behaviors:
~/.config/worktrunk/config.toml)~/.config/worktrunk/config.toml (never checked into git)reference/config.md for detailed guidance.config/wt.toml)<repo>/.config/wt.toml (checked into git)reference/hook.md for detailed guidanceWhen a user asks for configuration help, determine which type based on:
User config indicators:
Project config indicators:
Both configs may be needed: For example, setting up commit message generation requires user config, but automating quality checks requires project config.
Most common request. See reference/llm-commits.md for supported tools and exact command syntax.
Detect available tools
which claude codex llm aichat 2>/dev/null
If none installed, recommend Claude Code (already available in Claude Code sessions)
Propose config change — Get the exact command from reference/llm-commits.md
[commit.generation]
command = "..." # see reference/llm-commits.md for tool-specific commands
Ask: "Should I add this to your config?"
After approval, apply
wt config showwt config createSuggest testing
wt step commit --show-prompt | head # verify prompt builds
wt merge # in a repo with uncommitted changes
Common request for workflow automation. Follow discovery process:
Detect project type
ls package.json Cargo.toml pyproject.toml
Identify available commands
package.json scriptsDesign appropriate hooks (7 hook types available)
pre-startpre-commit or pre-mergepost-startpost-switchpost-mergepre-removeValidate commands work
npm run lint # verify exists
which cargo # verify tool exists
Create .config/wt.toml
# Install dependencies when creating worktrees
pre-start = "npm install"
# Validate code quality before committing
[pre-commit]
lint = "npm run lint"
typecheck = "npm run typecheck"
# Run tests before merging
pre-merge = "npm test"
Add comments explaining choices
Suggest testing
wt switch --create test-hooks
See reference/hook.md for complete details.
When users want to add automation to an existing project:
Read existing config: cat .config/wt.toml
Determine hook type - When should this run?
pre-startpost-startpost-switchpre-commitpre-mergepost-mergepre-removeHandle format conversion if needed
Single command to named table:
# Before
pre-start = "npm install"
# After (adding db:migrate)
[pre-start]
install = "npm install"
migrate = "npm run db:migrate"
Preserve existing structure and comments
Before adding hooks, validate:
# Verify command exists
which npm
which cargo
# For npm, verify script exists
npm run lint --dry-run
# For shell commands, check syntax
bash -n -c "if [ true ]; then echo ok; fi"
Dangerous patterns — Warn users before creating hooks with:
rm -rf, DROP TABLEcurl http://...sudoreference/llm-commits.mdreference/config.md#worktree-path-templatereference/llm-commits.md#templatesreference/config.md#command-settingsreference/config.md#user-hooksreference/hook.mdreference/hook.md#configurationreference/hook.md#template-variablesreference/config.md#dev-server-url# View all configuration
wt config show
# Create initial user config
wt config create
# LLM setup guide
wt config --help
Load reference files for detailed configuration, hook specifications, and troubleshooting.
Find specific sections with grep:
grep -A 20 "## Setup" reference/llm-commits.md
grep -A 30 "### pre-start" reference/hook.md
grep -A 20 "## Warning Messages" reference/shell-integration.md
Project hooks and project aliases prompt for approval on first run, so an untrusted .config/wt.toml can't silently execute arbitrary commands. Agents running wt merge, wt switch, or other commands that trigger hooks will hit an error like:
▲ cargo-difftest needs approval to execute 1 command:
○ post-merge install:
cargo install --path .
✗ Cannot prompt for approval in non-interactive environment
↳ To skip prompts in CI/CD, add --yes; to pre-approve commands, run wt config approvals add
Two resolutions exist — pick based on who the agent is running for:
wt config approvals add — interactive prompt that stores approvals to ~/.config/worktrunk/approvals.toml. Run once per project; persists across invocations until the command template changes or the project moves. This is the right choice when the human owns the trust decision.--yes / -y — bypasses approval for a single invocation. Appropriate for CI/CD where hook contents are controlled by the pipeline itself.When invoked as an agent, stop and escalate to the user — pre-approval is a security decision about whether this project's hooks should be trusted to run arbitrary commands on their machine. Tell the user to run wt config approvals add (or review and re-run with --yes if they accept the CI-style one-shot bypass). Don't reach for --yes on the user's behalf just to unblock the command.
When the user requests spawning a worktree with an agent in a background session ("spawn a worktree for...", "hand off to another agent"), use the appropriate pattern for their terminal multiplexer. Substitute <agent-cli> with the CLI you are running as: claude for Claude Code, 'opencode run' for OpenCode.
tmux (check $TMUX env var):
tmux new-session -d -s <branch-name> "wt switch --create <branch-name> -x <agent-cli> -- '<task description>'"
Zellij (check $ZELLIJ env var):
zellij run -- wt switch --create <branch-name> -x <agent-cli> -- '<task description>'
Requirements (all must be true):
CLAUDE.md or AGENTS.md) or an explicit prompt authorize this patternDo not use this pattern for normal worktree operations.
Example (tmux, Claude Code):
tmux new-session -d -s fix-auth-bug "wt switch --create fix-auth-bug -x claude -- \
'The login session expires after 5 minutes. Find the session timeout config and extend it to 24 hours.'"
Example (Zellij, OpenCode):
zellij run -- wt switch --create fix-auth-bug -x 'opencode run' -- \
'The login session expires after 5 minutes. Find the session timeout config and extend it to 24 hours.'