release
Worktrunk release workflow. Use when user asks to "do a release", "release a new version", "cut a release", or wants to publish a…
Guidance for Worktrunk (the `wt` CLI) — git worktree management, hooks, and config. Load when working out which worktree a `wt` command will act on, or reaching for the global `-C <path>` to target one; editing .config/wt.toml or ~/.config/worktrunk/config.toml; adding,
Claude Code
$ npx -y skills add max-sixty/worktrunk --skill worktrunk --agent claude-code
Codex
$ npx skills add max-sixty/worktrunk --skill worktrunk -a codex -y
Cursor
$ npx skills add max-sixty/worktrunk --skill worktrunk -a cursor -y
Gemini CLI
$ npx skills add max-sixty/worktrunk --skill worktrunk -a gemini-cli -y
GitHub Copilot
$ npx skills add max-sixty/worktrunk --skill worktrunk -a github-copilot -y
OpenCode
$ npx skills add max-sixty/worktrunk --skill worktrunk -a opencode -y
Windsurf
$ npx skills add max-sixty/worktrunk --skill worktrunk -a windsurf -y
name: worktrunk description: Guidance for Worktrunk (the `wt` CLI) — git worktree management, hooks, and config. Load when working out which worktree a `wt` command will act on, or reaching for the global `-C <path>` to target one; editing .config/wt.toml or ~/.config/worktrunk/config.toml; adding, modifying, or debugging hooks (post-merge, post-start, pre-commit, pre-merge, post-switch, etc.); configuring commit message generation or command aliases; or troubleshooting wt behavior. Also answers general worktrunk/wt questions. license: MIT OR Apache-2.0 compatibility: Requires the `wt` CLI (https://worktrunk.dev)
Help users work with Worktrunk, a CLI tool for managing git worktrees.
Reference files are synced from [worktrunk.dev](https://worktrunk.dev) documentation:
For command-specific options, run `wt <command> --help`. For configuration, follow the workflows below.
`wt` finds the *repository* from the working directory, and the *worktree* from the command's own arguments. Two rules cover every case:
1. **A command that names a branch already names its worktree.** Worktrees are addressed by branch name, so `wt switch <branch>`, `wt remove <branch>`, `wt step diff --branch <branch>`, and `wt config state marker set --branch <branch>` act on that branch's worktree no matter which worktree you run them from. Every such argument also accepts the worktree's own path, for the cases a branch cannot name — a second checkout of the same branch, or a detached worktree (which `marker` still rejects, since it keys state by branch name). 2. **`-C <path>` moves the working directory, not the worktree selection.** Reach for it when the repository lookup is what's wrong: a *different* repository; a command that acts on the current worktree and takes no branch argument (`wt merge`, `wt step rebase|squash|push` — their `[TARGET]` is the merge target, not a worktree); or a caller whose working directory isn't inside a repository at all, such as an agent hook the host pins elsewhere.
Layering `-C` on top of a branch argument names the same worktree twice. From inside the `alpha` worktree of a repo that also has `beta`:
wt step diff --branch beta # ✓ the branch argument selects the worktree wt -C ../repo.beta step diff --branch beta # ✗ says beta twice wt switch --create beta # ✓ --base already defaults to the default branch wt -C ../repo switch --create beta # ✗ -C adds nothing; you are already in that repo
Worktrunk uses two config files with different scopes and permission models:
**User config** (`~/.config/worktrunk/config.toml`, never checked into git) holds personal preferences: LLM integration, worktree path templates, command settings, user hooks. Treat it conservatively — propose changes and get consent before editing, never install tools on the user's behalf, and preserve the file's existing structure and comments. See `reference/config.md`.
**Project config** (`<repo>/.config/wt.toml`, checked into git) holds team-wide automation: hooks for the worktree lifecycle (pre-start, pre-merge, etc.). Edit proactively — changes are versioned and reversible via git. Comment why each hook exists, and warn the user before adding destructive commands (`rm -rf`, `DROP TABLE`), network fetches piped to shells, or `sudo`. See `reference/hook.md`.
Some requests span both: commit-message generation is user config, while the team's quality checks are project config.
Detect which tools are installed (`which claude codex opencode llm aichat`); if none, recommend Claude Code. Take the exact command for the chosen tool from `reference/llm-commits.md`, propose the `[commit.generation]` change, and apply it after approval (`wt config create` first if no config exists). To verify, `wt step commit --dry-run` renders the prompt, runs the LLM, and prints the message without committing.
Pick the hook type by when the command should run and whether it may block — `reference/hook.md` maps all ten (5 events × pre/post) to their timing and typical uses.
Derive the commands from the project itself (`package.json` scripts, `Cargo.toml`, `pyproject.toml`) and verify they run before adding them.
When a new hook must wait for an existing one, convert the entry to a pipeline; independent commands in a named table run concurrently:
# Pipeline: install completes before migrate starts [[pre-start]] install = "npm install" [[pre-start]] migrate = "npm run db:migrate" # Concurrent: independent commands in one table [pre-start] install = "npm install" env = "cp .env.example .env"
Test with `wt switch --create test-hooks`.
Worktrunk is a CLI for Git worktree management, designed for parallel AI agent workflows
Worktrunk release workflow. Use when user asks to "do a release", "release a new version", "cut a release", or wants to publish a…
Worktrunk-specific guidance for tend CI workflows. Adds codecov polling, Rust test commands, labels, and review criteria on top…
CLI output formatting standards for worktrunk. Load before editing any code that calls warning_message, hint_message,…
Create a new worktrunk worktree (optionally in another repo) and switch this session's working directory into it. Use when…
Exercise git tools, resources, and prompts against a live HTTP server via MCP JSON-RPC over curl. Starts the server, surfaces the…
Non-interactive hunk-level git staging, unstaging, discarding, undoing, fold, amend, squash, commit splitting, and commit…