release
無料Worktrunk release workflow. Use when user asks to "do a release", "release a new version", "cut a release", or wants to publish a new version to crates.io and GitHub.
日本語の概要は準備中です。原文の説明を表示しています。
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.
インストール方法を見るインストールする前に、エージェントに与えられる指示の中身を確認できます。
Help users work with Worktrunk, a CLI tool for managing git worktrees.
Reference files are synced from worktrunk.dev documentation:
{% raw %} deferral, for-each recipes)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:
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).-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 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.
reference/llm-commits.mdreference/config.md#worktree-path-templatereference/llm-commits.md#prompt-templatesreference/config.md#command-configreference/config.md#user-hooksreference/hook.mdreference/hook.md#hook-formsreference/hook.md#template-variablesreference/config.md#dev-server-urlwt alias → reference/extending.md#aliasesreference/step.md#wt-step-for-eachreference/extending.md#recipe-rebase-every-worktree-onto-its-upstreamwt command → reference/extending.md#nesting-templates# View all configuration
wt config show
# Create initial user config (LLM/commit setup: see reference/llm-commits.md)
wt config create
# Full config reference (subcommands, templates, env vars)
wt config --help
Worktrunk never runs a project's hooks or aliases until the user has explicitly approved them. The commands in .config/wt.toml are arbitrary shell code shipped in a repository the user may have just cloned, so on first run Worktrunk shows each command and waits for the user to approve it — an untrusted .config/wt.toml cannot silently execute anything. Approvals are stored per-project in ~/.config/worktrunk/approvals.toml and re-prompted whenever a command template changes, so a hook can't be swapped for a different command after it was approved.
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 --yes
The resolution is for the user to make the trust decision themselves:
wt config approvals add — interactive prompt where the user reviews each command before it is stored to ~/.config/worktrunk/approvals.toml. Run once per project; the approval persists across invocations until the command template changes or the project moves. This is the path to recommend — the user reviews and consents to exactly the commands that will run.When invoked as an agent, stop and escalate to the user. Approving a project's hooks is a security decision about whether this repository should be trusted to run arbitrary commands on the user's machine — that decision belongs to the user, not the agent. Tell the user to run wt config approvals add and let them review the commands. Do not reach for either --yes on the user's behalf: on the blocked command it skips the gate for that invocation, and wt config approvals add --yes records every command the project declares with nobody reading them. Both exist for CI/CD pipelines and containers that already control their own hook contents; neither is a shortcut for an interactive agent to silence an approval prompt.
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 tmux or Zellij command from reference/tips-patterns.md#agent-handoffs with the CLI you are running as in place of claude, following that section's note on where a subcommand such as OpenCode's run goes.
Requirements (all must be true):
$TMUX / $ZELLIJ)CLAUDE.md or AGENTS.md) or an explicit prompt authorize this patternDo not use this pattern for normal worktree operations.
To spawn multiple sub-Agents that each work in their own worktree from one Claude Code session — no terminal multiplexer, no human in the other pane — pre-start each worktree from the parent and pass the path into the sub-Agent prompt:
wt switch --create <branch> --no-cd
Then call the Agent tool without isolation: "worktree", naming the path in the prompt:
You are working in `/abs/path/to/myproject.<branch>` on branch `<branch>`.
All edits must stay in that worktree.
--no-cd skips the shell-integration cd script the parent can't consume. Add --no-hooks only when no user or project hooks provision the worktree and each sub-Agent does its own build/test step (e.g. cargo run -- hook pre-merge --yes) — a pre-start hook that installs dependencies or links a gitignored build environment hands the sub-Agent a worktree it can't build in when it's skipped. Leaving hooks on needs the project's hook commands already approved: the parent session can't prompt, so an unapproved command in .config/wt.toml aborts the create — see Hook approvals in non-interactive sessions above.
Do not use Agent { isolation: "worktree" } for this. Claude Code passes its internal agent ID as name to the WorktreeCreate hook, so wt creates the worktree as myproject.agent-<id> on a throwaway branch. If the sub-Agent then creates a feature branch on top, you end up with non-canonical paths, orphan branches, and post-start hooks fired against the wrong branch. Pre-creating with wt switch --create keeps path, branch, and hook target aligned.
まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
Worktrunk release workflow. Use when user asks to "do a release", "release a new version", "cut a release", or wants to publish a new version to crates.io and GitHub.
日本語の概要は準備中です。原文の説明を表示しています。
Worktrunk-specific guidance for tend CI workflows. Adds codecov polling, Rust test commands, labels, and review criteria on top of the bundled tend-ci-runner skills. Use when operating in CI.
日本語の概要は準備中です。原文の説明を表示しています。
CLI output formatting standards for worktrunk. Load before editing any code that calls warning_message, hint_message, error_message, info_message, eprintln, or println, or that produces strings the user will see (CLI help, progress UI, snapshot text). Documents ANSI color nesting rules, message patterns, and output system architecture.
日本語の概要は準備中です。原文の説明を表示しています。
Create a new worktrunk worktree (optionally in another repo) and switch this session's working directory into it. Use when launching a session that should work in its own worktree.
日本語の概要は準備中です。原文の説明を表示しています。