Agent skill

Worktrunk

by goern in goern/forgejo-mcp

Guidance for Worktrunk (the wt CLI) — git worktree management, hooks, and config.

MITAuto-check: notesDevelopment

Install Worktrunk

skills CLI
$ npx skills add goern/forgejo-mcp --skill worktrunk -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install goern/forgejo-mcp worktrunk --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/goern/forgejo-mcp.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/worktrunk .claude/skills/worktrunk && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
worktrunk
GitHub stars
140
Used in
1 other repo
Token cost
~3.1k tokens
SKILL.md length
1,298 words
Files
18
Skills in repo
15
Repo updated
First seen
Licence
MIT

At a glance

Guidance for Worktrunk (the wt CLI) — git worktree management, hooks, and config.

  • Works in 2 steps: A command that names a branch already… → C moves the working directory, not the…
  • Tasks that involve Git worktrees
  • SKILL.md covers Available documentation, Which worktree a command acts on, Two types of configuration and Core workflows, plus 4 more sections
  • Calls cargo

What it does

Worktrunk is an agent skill from goern/forgejo-mcp. 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.

Its SKILL.md is about 3.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 18 other files (for example `reference/README.md`, `reference/claude-code.md` and `reference/code-signing.md`). Compatibility notes: Requires the wt CLI (https://worktrunk.dev)

It sits in Development, covering Git worktrees and Commit messages. It works with Git. The repository describes itself as: MIRROR ONLY!! This Model Context Protocol (MCP) server provides tools and resources for interacting with the Forgejo (specifically Codeberg.org) REST API. The licence is MIT.

When your agent uses it

  • Tasks that involve Git worktrees
  • Tasks that involve Commit messages

Example prompts

  • “/worktrunk”

Requirements

  • Node.js
  • Compatibility (from SKILL.md): Requires the `wt` CLI (https://worktrunk.dev)

Workflow steps

2 steps, taken from the first numbered list in SKILL.md.

  1. A command that names a branch already names its worktree. Worktrees are addressed by branch name, so wt switch , wt remove , wt step diff…
  2. C moves the working directory, not the worktree selection. Reach for it when the repository lookup is what's wrong: a different…

What it can do on your machine

Read from SKILL.md and the folder at commit 64a14bc. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • cargo

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • worktrunk.dev

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

  • Compatibility

    Requires the `wt` CLI (https://worktrunk.dev)

    From compatibility in the SKILL.md frontmatter.

Context cost

Worktrunk loads about 3.1k tokens when it runs. Until then it costs about 128 tokens; SKILL.md has 1,298 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~128
When it runs · the whole SKILL.md, loaded when a task matches
~3.1k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NoteMentions a .env fileSKILL.md:88
    env = "cp .env.example .env"

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from goern/forgejo-mcp at commit 64a14bc, republished under its MIT licence (© goern). 1,298 words, ~3,066 tokens.

Download SKILL.mdSave it as .claude/skills/worktrunk/SKILL.md (or your agent's skills folder). This skill also uses 17 other files; get the full folder from GitHub.
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.
compatibility
Requires the `wt` CLI (https://worktrunk.dev)
license
MIT OR Apache-2.0

Worktrunk

Help users work with Worktrunk, a CLI tool for managing git worktrees.

Available documentation

Reference files are synced from worktrunk.dev documentation:

  • reference/config.md: User and project configuration (LLM, hooks, command defaults)
  • reference/hook.md: Hook types, timing, and execution order
  • reference/switch.md, merge.md, list.md, etc.: Command documentation
  • reference/extending.md: Aliases, multi-step pipelines, custom subcommands, and template-expansion gotchas (two-pass {% raw %} deferral, for-each recipes)
  • reference/llm-commits.md: LLM commit message generation
  • reference/tips-patterns.md: Practical recipes — aliases, per-branch variables, dev server per worktree, parallel agent patterns
  • reference/shell-integration.md: Shell integration debugging
  • reference/troubleshooting.md: Troubleshooting for LLM and hooks (Claude-specific)

For command-specific options, run wt <command> --help. For configuration, follow the workflows below.

Which worktree a command acts on

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:

bash
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

Two types of configuration

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.

Core workflows

Setting up commit message generation (user 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.

Configuring project hooks

Pick the hook type by when the command should run and whether it may block (10 types: 5 events × pre/post — full reference in reference/hook.md):

  • Dependencies and env files a later step needs → pre-start (blocks creation)
  • Dev servers, long builds, cache copying → post-start (background)
  • Formatters, linters, type checks → pre-commit
  • Tests that must pass before merging → pre-merge
  • CI triggers, notifications → post-commit
  • Deployment → post-merge
  • Setup before branch resolution / terminal-IDE updates → pre-switch / post-switch
  • Cleanup before/after removal (save artifacts; stop servers, remove containers) → pre-remove / post-remove

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:

toml
# 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.

Common tasks reference

User config tasks
  • Set up commit message generation → reference/llm-commits.md
  • Customize worktree paths → reference/config.md#worktree-path-template
  • Custom commit templates → reference/llm-commits.md#prompt-templates
  • Configure command defaults → reference/config.md#command-config
  • Set up personal hooks → reference/config.md#hooks
Project config tasks
  • Set up hooks for new project → reference/hook.md
  • Add hook to existing config → reference/hook.md#hook-forms
  • Use template variables → reference/hook.md#template-variables
  • Add dev server URL to list → reference/config.md#dev-server-url
Aliases & multi-worktree tasks
  • Create a wt alias → reference/extending.md#aliases
  • Run a command in every worktree → reference/step.md#wt-step-for-each
  • Rebase every worktree (up-style) → reference/extending.md#recipe-rebase-every-worktree-onto-its-upstream
  • Defer a template variable to a nested wt command → reference/extending.md#deferring-expansion-to-a-nested-wt-command

Key commands

bash
# 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
Show full SKILL.md (568 more words)Show less

Hook approvals in non-interactive sessions

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.

Advanced: agent handoffs

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):

bash
tmux new-session -d -s <branch-name> "wt switch --create <branch-name> -x <agent-cli> -- '<task description>'"

Zellij (check $ZELLIJ env var):

bash
zellij run -- wt switch --create <branch-name> -x <agent-cli> -- '<task description>'

Requirements (all must be true):

  • User explicitly requests spawning/handoff
  • User is in a supported multiplexer (tmux or Zellij)
  • The user's project instructions (CLAUDE.md or AGENTS.md) or an explicit prompt authorize this pattern

Do not use this pattern for normal worktree operations.

Example (tmux, Claude Code):

bash
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):

bash
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.'
Parallel sub-Agents (single Claude Code session)

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:

bash
wt switch --create <branch> --no-cd --no-hooks

Then call the Agent tool without isolation: "worktree", naming the path in the prompt:

You are working in `/abs/path/to/worktrunk.<branch>` on branch `<branch>`.
All edits must stay in that worktree.

--no-cd skips the shell-integration cd script the parent can't consume; --no-hooks is appropriate when each sub-Agent will run its own build/test step (e.g. cargo run -- hook pre-merge --yes) and you don't need post-start setup repeated per worktree.

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 worktrunk.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.

© goern, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 17 other files in .agents/skills/worktrunk of goern/forgejo-mcp.

  • SKILL.md
  • reference/README.md
  • reference/claude-code.md
  • reference/code-signing.md
  • reference/config.md
  • reference/extending.md
  • reference/faq.md
  • reference/hook.md
  • reference/list.md
  • reference/llm-commits.md
  • reference/merge.md
  • reference/remove.md
  • reference/shell-integration.md
  • reference/step.md
  • reference/switch.md
  • reference/tips-patterns.md
  • reference/troubleshooting.md
  • reference/worktrunk.md

Open the folder on GitHubat commit 64a14bc

Used in 1 other repository

We found 2 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in goern/forgejo-mcp, which our catalogue first saw on October 7, 2026.

Compare with similar skills

Worktrunk next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Worktrunk compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Worktrunk this skillgoern/forgejo-mcp1401 repos~3.1kAutomated safety check: NotesMIT
Git Committisfeng/Easydict15k—~535Automated safety check: PassGPL-3.0
Worktree Rebase Mergetisfeng/Easydict15k—~408Automated safety check: PassGPL-3.0
Worktrunk Git Worktree Managerjjmartres/opencode133—~1.9kAutomated safety check: NotesMIT
Conventional Gitsamber/cc-skills228—~1.8kAutomated safety check: PassMIT
Git PR Workflowandymai/brepjs114—~2.9kAutomated safety check: PassApache-2.0

Similar skills

  • Git Commit

    tisfeng/Easydict

    起草、创建或汇报 Angular-style 本地 Git 提交。用于明确的提交交付;分支集成使用 worktree-rebase-merge,不 push。

    15k GitHub stars~535 tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Worktree Rebase Merge

    tisfeng/Easydict

    将当前 worktree 的任务提交 rebase 到本地目标分支,并从目标 worktree 合并。用于明确要求本地集成;仅创建提交使用 git-commit。

    15k GitHub stars~408 tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Guides use of Worktrunk (wt), a CLI that makes git worktrees as easy as branches so several AI agents can work in parallel on isolated branches.

    133 GitHub stars~1.9k tokensUpdated 5 mo ago
    DevelopmentAuto-check: notes
  • Conventional Git

    samber/cc-skills

    Conventional Commits v1.0.0 branch naming, worktree naming, and commit message standards for GitHub and GitLab projects.

    228 GitHub stars~1.8k tokensUpdated 6 days ago
    DevelopmentAuto-check passed
  • Git PR Workflow

    andymai/brepjs

    This skill should be used when committing, pushing, branching, or merging in the brepjs repository — when a task involves "pre-commit hook failed" (which tier ran, how to bypass), "commit rejected…

    114 GitHub stars~2.9k tokensUpdated today
    DevelopmentAuto-check passed
  • Oma Scm

    first-fluke/oh-my-agent

    SCM (software configuration management) and Git — branching, merges, conflicts, worktrees, baselines, audit readiness, plus Conventional Commits and safe staging.

    1.3k GitHub stars~3.3k tokensUpdated yesterday
    DevelopmentAuto-check: notes

More from goern/forgejo-mcp

All 15 skills in this repo
  • Release Openspec

    goern/forgejo-mcp

    A skill your agent uses when releasing OpenSpec: audit merged work and changeset coverage, decide whether a catch-up changeset PR is needed, prepare or resume the Changesets Version Packages PR, cut…

    140 GitHub starsUsed in 1 repo~3.2k tokens
    Auto-check passed
  • Unified Notifications

    goern/forgejo-mcp

    Fetch and display notifications from both GitHub and Codeberg in a unified markdown view with clickable links.

    140 GitHub stars~802 tokensUpdated yesterday
    Auto-check passed
  • Caveman Compress

    goern/forgejo-mcp

    Compress a memory file such as CLAUDE.md or a todo list into caveman format to save input tokens, keeping a readable backup.

    140 GitHub starsUsed in 1 repo~1.2k tokens
    Auto-check: notes
  • Draft Openspec Docs

    goern/forgejo-mcp

    Collaborative page-drafting mode for the OpenSpec docs. An agent skill from goern/forgejo-mcp.

    140 GitHub starsUsed in 1 repo~815 tokens
    Auto-check passed
  • Verify Openspec Docs

    goern/forgejo-mcp

    Fact-checks OpenSpec user documentation with a fresh-context subagent that re-runs commands and checks claims against source.

    140 GitHub starsUsed in 1 repo~1.1k tokens
    Auto-check passed
  • Wt Switch Create

    goern/forgejo-mcp

    Create a new worktrunk worktree (optionally in another repo) and switch this session's working directory into it.

    140 GitHub starsUsed in 1 repo~1.6k tokens
    Auto-check passed

Works with

Categories

Questions about Worktrunk

What does Worktrunk do?

Guidance for Worktrunk (the wt CLI) — git worktree management, hooks, and config. Worktrunk is an agent skill from goern/forgejo-mcp. Guidance for Worktrunk (the wt CLI) — git worktree management, hooks, and config.

When should I use Worktrunk?

Worktrunk fits situations like: tasks that involve Git worktrees; tasks that involve Commit messages.

How do I install Worktrunk in Claude Code?

Run `npx skills add goern/forgejo-mcp --skill worktrunk -a claude-code`. Or copy the skill folder (.agents/skills/worktrunk in goern/forgejo-mcp) into .claude/skills/worktrunk in your project. Claude Code loads it when a task matches its description.

How do I install Worktrunk in Codex?

Run `npx skills add goern/forgejo-mcp --skill worktrunk -a codex`. Or copy the skill folder (.agents/skills/worktrunk in goern/forgejo-mcp) into .agents/skills/worktrunk in your project. Codex loads it when a task matches its description.

Can I use Worktrunk in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add goern/forgejo-mcp --skill worktrunk -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/worktrunk, .gemini/skills/worktrunk, .github/skills/worktrunk and .opencode/skills/worktrunk in your project.

What does Worktrunk need to run?

Going by SKILL.md and its folder, Worktrunk needs the command-line tools its instructions call (cargo). Our summary lists: Node.js. Compatibility (from SKILL.md): Requires the `wt` CLI (https://worktrunk.dev).

Does Worktrunk access the network?

SKILL.md names 1 domain. As links in the text: worktrunk.dev. This is read from the text; nothing was executed.

Is Worktrunk safe to install?

Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Worktrunk use?

Worktrunk is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Worktrunk use?

About 3.1k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Worktrunk?

Skills that share tags, products or a category with Worktrunk: Git Commit (tisfeng/Easydict, 15k stars), Worktree Rebase Merge (tisfeng/Easydict, 15k stars), Worktrunk Git Worktree Manager (jjmartres/opencode, 133 stars) and Conventional Git (samber/cc-skills, 228 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Worktrunk?

goern (a GitHub user) maintains it in goern/forgejo-mcp, which has 140 GitHub stars. The repository holds 15 skills in this directory. The repository was last updated on October 6, 2026.

Source: goern/forgejo-mcp on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.