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…
Worktrunk-specific guidance for tend CI workflows. Adds codecov polling, Rust test commands, labels, and review criteria on top of the generic tend-* skills. Use when operating in CI.
$ npx -y skills add max-sixty/worktrunk --skill running-tend --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/running-tendContext preview
The summary Claude sees to decide when to auto-load this skill.
Worktrunk-specific guidance for tend CI workflows. Adds codecov polling, Rust test commands, labels, and review criteria on top of the generic tend-* skills. Use when operating in CI.
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 generic tend-* 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 generic skills (`tend-running-in-ci`, `tend-review`, `tend-triage`, etc.) provide the workflow framework; this skill adds worktrunk conventions.
Standing exception granted: file directly in agent-equipped targets (per **Filing Issues in Other Repos** in the bundled `running-in-ci` 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/CLAUDE.md` → **Coverage Investigation** for the endpoints and their traps. The sandbox also mounts root `/tmp` read-only, which is why 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.
The artifact directory is named after the agent's working directory, and from tend 0.2.5 that is a per-run `/tmp/tend-agent-workspace-*/checkout` — so the old `-home-runner-work-worktrunk-worktrunk/` prefix appears only in runs predating the bump, and there is no literal to match on any more. Use the bundled `find "$DEST" -name '*.jsonl'` recipe; either shape is one `<session-id>.jsonl` under a single slugified directory.
Before opening a `fix/ci-*` PR, classify the failure:
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 a comment on the failed run summarizing the diagnosis 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.
If a clearly-unrelated test fails after you've already approved a PR, leave the approval in place and post a comment noting the flake. Do **not** dismiss your own approval to "gate" on a rerun.
GitHub blocks both `gh run rerun --failed` and per-job rerun (`POST /repos/{owner}/{repo}/actions/jobs/{id}/rerun`) with HTTP 403 while *any* job in the same workflow run is st
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 new version to crates.io and…
CLI output formatting standards for worktrunk. Load before editing any code that calls warning_message, hint_message, error_message, info_message, eprintln, or…
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…
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…