release
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 of the bundled tend-ci-runner skills. Use when operating in CI.
Claude Code
$ npx -y skills add max-sixty/worktrunk --skill running-tend --agent claude-code
Codex
$ npx skills add max-sixty/worktrunk --skill running-tend -a codex -y
Cursor
$ npx skills add max-sixty/worktrunk --skill running-tend -a cursor -y
Gemini CLI
$ npx skills add max-sixty/worktrunk --skill running-tend -a gemini-cli -y
GitHub Copilot
$ npx skills add max-sixty/worktrunk --skill running-tend -a github-copilot -y
OpenCode
$ npx skills add max-sixty/worktrunk --skill running-tend -a opencode -y
Windsurf
$ npx skills add max-sixty/worktrunk --skill running-tend -a windsurf -y
name: running-tend description: 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. metadata: internal: true
Project-specific guidance for tend workflows running on worktrunk (a Rust CLI for managing git worktrees). The bundled `run-tend`, `review`, and `triage` skills provide the workflow framework; this skill adds worktrunk conventions.
Standing exception granted: file directly in agent-equipped targets (per **Filing issues** in the bundled `act-in-other-repos` skill) without asking permission here first. The default rule (open an issue here asking permission first) still applies when the target shows no agent signals.
After required CI checks pass, poll `codecov/patch` — it is mandatory despite being marked non-required:
for i in $(seq 1 5); do
CODECOV=$(gh pr checks <number> 2>&1 | grep 'codecov/patch' || true)
if echo "$CODECOV" | grep -q 'pass'; then
echo "codecov/patch passed"; exit 0
elif echo "$CODECOV" | grep -q 'fail'; then
echo "codecov/patch FAILED"; exit 1
fi
sleep 60
doneIf codecov fails **locally**, investigate with `task coverage` and `cargo llvm-cov report --show-missing-lines | grep <file>`.
`task` and `cargo-llvm-cov` are not installed in the `tend-setup` action. Don't try to `cargo install` them in the sandbox — past attempts at source-compiling installs cascaded into bash-tool interrupts that blocked even `pwd` and `echo`. Instead, query Codecov directly, following `tests/AGENTS.md` → **Coverage Investigation** for the endpoints and their traps. The scratch paths there and below go to `${TMPDIR:-/tmp}` — write new ones the same way.
If the Codecov API markers aren't enough, download the `code-coverage-report` artifact from the PR head's `coverage` workflow run — it contains a `cobertura.xml` with per-line hit counts:
REPO=$(gh repo view --json nameWithOwner --jq '.nameWithOwner')
# Find the coverage run on the PR head SHA:
CI_RUN=$(gh api "repos/$REPO/commits/<sha>/check-runs" --jq '.check_runs[] | select(.name == "code-coverage") | .details_url | capture("runs/(?<id>[0-9]+)") | .id')
# List artifacts, then download the coverage one:
gh api "repos/$REPO/actions/runs/$CI_RUN/artifacts" --jq '.artifacts[] | {name, id}'
gh api "repos/$REPO/actions/artifacts/<id>/zip" > "${TMPDIR:-/tmp}/coverage.zip"
unzip -q "${TMPDIR:-/tmp}/coverage.zip" -d "${TMPDIR:-/tmp}/coverage"cargo run -- hook pre-merge --yes # full suite + lints cargo test --lib --bins # unit tests only cargo test --test integration # integration tests only
CI runs on Linux, Windows, and macOS.
A test that leans on inherited state — the process CWD, an ambient env var — sets up its own instead, via `TestRepo::with_initial_commit()` plus a tempdir, the way most worktrunk tests already do. Guarding it with an early return (**Don't "fix" tests by adding skip guards** in the bundled `fix-a-bug` skill) drops the coverage rather than restoring it. This governs every workflow that fixes a test here, not just issue triage.
The artifact directory is named after the agent's working directory, which moves between tend releases — 0.2.5–0.2.13 used a per-run `tend-agent-workspace-*/checkout`, and from 0.2.14 the agent works in the runner's own checkout, so `-home-runner-work-worktrunk-worktrunk/` is the prefix again. Match on neither literal: use the bundled `find "$DEST" -name '*.jsonl'` recipe, which holds across all of them — every shape is one `<session-id>.jsonl` under a single slugified directory.
Before opening a PR for a CI failure, classify it:
outages, runner disk issues, codecov upload blips) — do **not** create a PR. The maintainer will rerun CI. Comment on the run or exit silently; a permanent config change for a one-off timeout is churn the maintainer will close.
**Non-required ≠ transient.** A non-required job (e.g. `collect affected coverage`, `affected tests (linux, advisory)`) can fail from a real regression. The required/non-required distinction is about merge-blocking, not about how the failure is classified. If a deterministic build error (`error[E...]`, "binary not found", "ambiguous candidates", missing target) repeats across consecutive runs of the same shape, it's a real regression even when the job is advisory. Reserve "transient" for non-deterministic causes: `BrokenPipe`, `connection reset`, runner disk full, GitHub API timeouts, host-availability blips.
**Lychee link-check timeouts are always transient** unless the same URL has failed on at least two separate runs within the last few days. The check runs as the `link-check` job in the `nightly` workflow. `.config/lychee.toml` already sets `max_retries = 6` and lists known-unreliable hosts; one timeout is not enough evidence to extend that list. Signals you have a transient failure, not a broken link:
When in doubt, post the diagnosis on the failure cause issue and wait — don't open a PR.
Apply the literal suggestion only — change the lines it covers, nothing more. If surrounding lines also need updating, note that in your reply.
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…
CLI output formatting standards for worktrunk. Load before editing any code that calls warning_message, hint_message,…
Guidance for Worktrunk (the `wt` CLI) — git worktree management, hooks, and config. Load when working out which worktree a `wt`…
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…