Agent skill

Release

by Sma1lboy in Sma1lboy/rove

Autonomously cut a Rove (@sma1lboy/rove) release end-to-end — detect the semver bump from pending changesets (flagging an upstream minor you didn't intend), run the release gates, dispatch the…

MITAuto-check: warningsDevOps & Cloud

Install Release

The automated check flagged lines worth reading first. See the safety section below.

skills CLI
$ npx skills add Sma1lboy/rove --skill release -a claude-code

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

GitHub CLI
$ gh skill install Sma1lboy/rove release --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/Sma1lboy/rove.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.claude/skills/release .claude/skills/release && 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
release
GitHub stars
146
Token cost
~3.1k tokens
SKILL.md length
1,438 words
Files
1
Skills in repo
13
Repo updated
First seen
Licence
MIT

At a glance

Autonomously cut a Rove (@sma1lboy/rove) release end-to-end — detect the semver bump from pending changesets (flagging an upstream minor you didn't intend), run the release gates, dispatch the…

  • Works in 6 steps: Preflight → Detect the bump (and flag the surprise… → Run the gates locally (abort on failure) → …
  • The user says cut a release
  • SKILL.md covers Hard rules (non-negotiable), Step 0 — Preflight, Step 1 — Detect the bump (and… and Step 2 — Run the gates locally…, plus 4 more sections
  • Calls git, bun and npm; needs NPM_TOKEN

What it does

Release is an agent skill from Sma1lboy/rove. Autonomously cut a Rove (@sma1lboy/rove) release end-to-end — detect the semver bump from pending changesets (flagging an upstream minor you didn't intend), run the release gates, dispatch the Changesets workflow (or run scripts/release.sh locally), then poll the GitHub Actions Release workflow with gh until npm publish completes, diagnosing CI failures (npm token, registry 404, lint, branch mismatch) instead of leaving them silent. Use when the user says "cut a release", "ship a version", "release Rove"…

Its SKILL.md is about 3.1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in DevOps & Cloud, covering Failing and flaky tests and CI/CD. It works with npm, GitHub Actions and Git. The repository describes itself as: Rove — the agent multiplexer for your terminal. Run coding agents on parallel tasks with isolated worktrees and persistent sessions. The licence is MIT.

When your agent uses it

  • The user says cut a release
  • Bump the version

Example prompts

  • “cut a release”
  • “ship a version”
  • “release Rove”
  • “/release”

Requirements

  • A credential in NPM_TOKEN

Workflow steps

6 steps, taken from the step headings in SKILL.md.

  1. Preflight
  2. Detect the bump (and flag the surprise minor) ⚠ ASK
  3. Run the gates locally (abort on failure)
  4. Verify branch, then bump/tag/push
  5. Poll CI until publish completes
  6. Diagnose CI failure (auto-fix or stop precisely)

What it can do on your machine

Read from SKILL.md and the folder at commit 8b9f22c. 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:

    • git
    • bun
    • npm
    • gh
    • changeset

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

  • Network

    No URLs in SKILL.md. Its commands use git, npm and gh, which can reach the network depending on how they are called.

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

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • NPM_TOKEN

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

Context cost

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

Always · name and description, kept in context so the agent knows when to use it
~163
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: warnings

The automated check found patterns that need a careful read before installing.

  • WarningMentions a credentials file (SSH keys, cloud or package-manager tokens)SKILL.md:205
    or scope access wrong | Report; check `.npmrc` auth line + `access: public`. Don't mutate published state. |

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 Sma1lboy/rove at commit 8b9f22c, republished under its MIT licence (© Sma1lboy). 1,438 words, ~3,066 tokens.

Download SKILL.mdSave it as .claude/skills/release/SKILL.md (or your agent's skills folder).
name
release
description
Autonomously cut a Rove (`@sma1lboy/rove`) release end-to-end — detect the semver bump from pending changesets (flagging an upstream `minor` you didn't intend), run the release gates, dispatch the Changesets workflow (or run `scripts/release.sh` locally), then poll the GitHub Actions Release workflow with `gh` until npm publish completes, diagnosing CI failures (npm token, registry 404, lint, branch mismatch) instead of leaving them silent. Use when the user says "cut a release", "ship a version", "release Rove", "release rove", "发版", "release.sh", or "bump the version". Never force-pushes; always verifies the release landed on `main`.
metadata.internal
true

Release Rove

Autonomous release driver for @sma1lboy/rove. This is the supervised loop the manual flow in docs/RELEASING.md describes — read that doc once if anything here is ambiguous; it is the source of truth and this skill must never contradict it.

Releases are on demand. Merging a PR only banks its changeset; nothing ships until someone runs .github/workflows/changesets.yml (CI-green wait → version + commit → tag → dispatch release.yml). That workflow is the default path: do Step 1 against origin/main (the workflow releases whatever is banked there), then gh workflow run changesets.yml --ref main, find the run with gh run list --workflow=changesets.yml --limit 1, watch it with gh run watch <run-id> --exit-status, and go to Step 4. Use the local scripts/release.sh flow (Steps 0–3) only when Actions is unavailable or the user asks for it, and never while a changesets.yml run is in flight on the same version (they'd race to tag it).

The job is: detect the bump → gate → bump/tag/push → watch CI → confirm published, or stop with a precise report. Do the whole chain without hand-holding, but stop and surface (never guess) at the two human-judgment gates marked ⚠ ASK below.

Hard rules (non-negotiable)

  • Never force-push. No git push -f, no --force-with-lease, no git reset --hard on a shared branch, no retag-over-existing. If a tag or push conflicts, stop and report — recovery is the user's call.
  • Bump default is patch. Per AGENTS.md: pre-1.0 Rove ships features as patches. A minor/major only happens when the user explicitly said so this turn, OR a pending changeset already carries that bump — and the second case is exactly the trap to flag (see Step 1).
  • Release lands on main only. Verify branch before and after. A release on a stray feature branch is the #1 historical failure — catch it early.
  • No --no-verify, no skipping hooks. If a gate fails, fix the cause or stop.
  • The release commit is chore: release — X.Y.Z. No AI/Claude attribution anywhere (commit, tag, GitHub release body).

Step 0 — Preflight

Confirm the working tree is sane and you're where you think you are:

bash
git rev-parse --abbrev-ref HEAD          # MUST be main (see Step 3)
git status --porcelain                    # working tree must be clean
git fetch origin && git log --oneline origin/main..HEAD   # any unpushed commits?
git log --oneline HEAD..origin/main       # are we behind? if so, surface — don't auto-merge
gh auth status                            # gh must be authed for CI polling

scripts/release.sh itself refuses a dirty tree (except the files it rewrites), but do this first so you fail fast with a clear message instead of mid-script.

If origin/main is ahead of HEAD, stop and surface — Rove main moves fast (often several releases/day); releasing from a stale base is how versions collide. Let the user decide whether to pull/rebase.

Step 1 — Detect the bump (and flag the surprise minor) ⚠ ASK

The bump is not chosen by you — it's the max of the pending .changeset/*.md bump types, computed by changeset version. Inspect before consuming:

bash
bun run changeset:status                  # shows pending changesets + resulting bump
ls .changeset/*.md | grep -v README.md    # raw list
# read each one — the first line frontmatter is the bump type:
#   ---
#   "@sma1lboy/rove": minor      ← THIS is the bump that file forces
#   ---

Then decide:

  • No pending changesets → nothing to release. release.sh will abort. Tell the user and offer to draft one (the changelog-generator skill does this).
  • All pending are patch → proceed silently; this is the normal case.
  • Any pending is minor or major → ⚠ STOP AND ASK. This is the documented annoyance: an upstream/peer changeset silently promotes the release to a minor the user didn't intend. Quote the offending file + its bump line and confirm: ".changeset/foo.md carries a minor — the release will be X.(Y+1).0, not a patch. Intended?" Only continue on an explicit yes. Do not edit someone's changeset bump without permission.

Record the predicted next version (current packages/rove/package.json version applied with the detected bump) so you can verify it later.

Step 2 — Run the gates locally (abort on failure)

scripts/release.sh enforces lint && typecheck && (cd packages/rove && bun run test) itself before touching version/CHANGELOG, and release.yml re-runs lint + typecheck + test + build + the behavior suite before npm publish. Running the same set here first just fails fast, before burning a changeset version cycle:

bash
bun run lint
bun run typecheck
bun run test            # fast Vitest + unix-socket daemon/bridge suite
bun run build
cd packages/rove && bun run perf:golden   # golden perf doctor (~90s incl. binary compile smoke; docs/HARNESS.md §Performance contracts)

perf:golden ceilings are 2-3× the reference numbers, so a FAIL means a real structural regression (startup, PTY spawn/wake, per-tab memory, park reclaim) — treat it like a red test, not jitter; rerun once to confirm before digging. perf:golden is not part of the enforced release.sh/release.yml gate (opt-in, local/pre-release only per docs/HARNESS.md), so run it manually here.

bun run test:behavior exercises the built CLI against an isolated daemon and standalone PTY Host with a fake claude shim; cases that drive the outer terminal also need native node-pty support. release.yml runs the same black-box suite before npm publish. Running it locally first is optional but catches a failure before the tag push.

If a gate fails: report the exact failing command + output, fix it if it's an obvious in-scope issue (and re-run the full set), or stop. Never proceed to tag a red tree.

Step 3 — Verify branch, then bump/tag/push

bash
git rev-parse --abbrev-ref HEAD     # MUST print: main

If not on main, stop — do not checkout/merge to "fix" it autonomously (concurrent sessions + branch juggling is the documented git-tangle failure). Surface the actual branch and ask.

On main with gates green, run the release script. It is the single source of the bump→version→CHANGELOG→commit→tag→push sequence — don't reimplement those steps by hand:

bash
scripts/release.sh

What it does (don't fight it): gate (lint → typecheck → test → build → behavior) → changeset version → bun install + --frozen-lockfile → lint:fix on the regenerated JSON → commits chore: release — X.Y.Z (no tag yet) → prompts, pushes the release commit to main, waits for that commit's ci.yml run to go green (the Linux/macOS gates the local macOS run can't prove — v0.8.66 died exactly there), and only then tags vX.Y.Z and pushes the tag.

  • Confirm the printed CURRENT → NEW (vX.Y.Z) matches your Step 1 prediction. A mismatch means a changeset changed under you — stop and re-inspect.
  • The script asks Push now? [y/N]. Answer y only after the version line checks out. If the user wanted a dry run / review-before-push, answer N — re-running the script later resumes (push → wait CI → tag).
  • If the CI wait comes back RED, no tag exists and the version is NOT burned: land the fix on main (no new changeset) and re-run scripts/release.sh — with zero pending changesets and an untagged committed version it enters resume mode and tags the same version at the fixed HEAD.

The push of tag vX.Y.Z is what triggers .github/workflows/release.yml.

Show full SKILL.md (462 more words)Show less

Step 4 — Poll CI until publish completes

The tag push starts the Release workflow (publish job: gates → npm publish → GitHub release). npm is the sole distribution channel — standalone binaries were dropped 2026-08-02, so an empty release-assets list is normal. Watch the run to terminal state — don't declare success on push alone:

bash
gh run list --workflow=release.yml --limit 5          # find the run for this tag
gh run watch <run-id> --exit-status                    # blocks until done; nonzero on failure
# or poll:  gh run view <run-id> --json status,conclusion,jobs

On success, verify the packages actually landed (don't trust the green check alone):

bash
npm view @sma1lboy/rove@<new-version> version          # the published package; must echo the new version
# Every Rove release checks the SDK's current version and publishes it if missing.
npm view @sma1lboy/rove-plugin-sdk@<sdk-version> version
gh release view v<new-version> --json name -q .name    # GitHub release exists

Confirm: @sma1lboy/rove and both SDK names report their expected versions, the Rove version matches the tag and packages/rove/package.json, and the release landed on main (git log --oneline -1 origin/main is the chore: release commit). Then report done with the version, the npm dist-tag it went to (latest for plain semver), and the release URL.

Step 5 — Diagnose CI failure (auto-fix or stop precisely)

If the run fails, identify the job + step before doing anything:

bash
gh run view <run-id> --log-failed

Map the failure to a cause and act. Never retry blindly or force-push.

Symptom in the logLikely causeAction
npm publish → 401/403, ENEEDAUTH, EOTPNPM_TOKEN secret missing/expired/wrong scopeCode is fine and the tag is published-or-not — stop and report. Token rotation is the user's job (Settings → secrets → NPM_TOKEN, automation token with @sma1lboy publish rights). After they fix it, a re-publish needs a new version (npm won't overwrite) — never retag the same version.
npm publish → 404 on registry / scoperegistry URL or scope access wrongReport; check .npmrc auth line + access: public. Don't mutate published state.
Verify tag matches package.json step failstag ≠ package.json version (retag drift)Means the tag and the committed version disagree — surface it; do not force-retag. The fix is to bump+commit then tag fresh, which is the user's call.
Typecheck / test / build redreal regression that local gates somehow missedReproduce locally (`bun run typecheck
npm publish → E409/cannot publish overversion already on npmThe version is already out — likely a double-run. Stop; the next release is a new version.
A sibling job (behavior/render-track/visual-ground-truth) fails but publish succeededflake in a non-blocking rerunnpm already has the package; report it. gh run rerun <run-id> --failed is safe for those jobs; re-running publish is NOT — it'll hit E409.

The principle: anything that changes published artifacts or rewrites history (retag, force-push, republish) is stop-and-report, not auto-fix. Anything local and idempotent (re-run a flaky binary matrix, fix a lint/type error for the next release) you may do.

Prerelease note

For vX.Y.Z-<id>.N tags (e.g. v0.7.0-experimental.0), the workflow publishes to the npm dist-tag named after the identifier (experimental), so latest stays stable. These come from Changesets prerelease mode (changeset pre enter <id> … changeset pre exit), not release.sh. If the user asks for a prerelease, follow RELEASING.md's prerelease section rather than this default flow.

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

Files

Just SKILL.md in .claude/skills/release of Sma1lboy/rove.

Open the folder on GitHubat commit 8b9f22c

Compare with similar skills

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

Release compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Release this skillSma1lboy/rove146—~3.1kAutomated safety check: WarnMIT
Manor CI Triagemanor-os/manor-ai162—~533Automated safety check: PassCustom licence
CI Failure Triage and RepairChachamaru127/claude-code-harness3.2k1 repos~1.1kAutomated safety check: NotesMIT
Lina Community Fix CIlinaproai/linapro160—~1.8kAutomated safety check: PassApache-2.0
Releasechampionswimmer/pi-context-prune246—~907Automated safety check: PassNone
Publish Releasemolefrog/moi182—~2.5kAutomated safety check: PassCustom licence

Similar skills

  • Manor CI Triage

    manor-os/manor-ai

    A skill your agent uses when Manor GitHub Actions, .github/workflows/ci.yml, OSS smoke/regression jobs, web source smoke, frontend build, lint, or public CI failure logs need diagnosis or repair.

    162 GitHub stars~533 tokensUpdated 1 mo ago
    DevOps & CloudAuto-check passed
  • CI Failure Triage and Repair

    Chachamaru127/claude-code-harness

    Diagnoses failing CI pipelines and tests, deciding first whether the test or the implementation is at fault, and hands hard cases to a dedicated fixer subagent.

    3.2k GitHub starsUsed in 1 repo~1.1k tokens
    DevOps & CloudAuto-check: notes
  • Lina Community Fix CI

    linaproai/linapro

    排查并修复给定的 LinaPro GitHub Actions 失败问题;修复完成后保留本地改动, 禁止自动提交、推送或创建 PR。

    160 GitHub stars~1.8k tokensUpdated 1 mo ago
    DevOps & CloudAuto-check passed
  • Release

    championswimmer/pi-context-prune

    Creates a repository release for this Pi package. An agent skill from championswimmer/pi-context-prune.

    246 GitHub stars~907 tokensUpdated 7 days ago
    DevOps & CloudAuto-check passed
  • Publish Release

    molefrog/moi

    Release moi-computer to npm — verify locally, hand off to the gated GitHub Actions workflow, then verify the published package.

    182 GitHub stars~2.5k tokensUpdated today
    DevOps & CloudAuto-check passed
  • CI Triage

    andymai/brepjs

    This skill should be used when a brepjs GitHub Actions job is red or behaving oddly on github.com (a remote CI run, not a local pre-commit/pre-push hook) — "CI failed", "ci-pass is failing", "npm ci…

    114 GitHub stars~3.7k tokensUpdated today
    Testing & QAAuto-check passed

More from Sma1lboy/rove

All 13 skills in this repo
  • Image Gen

    Sma1lboy/rove

    Generate a single image from a text prompt using the MiniMax image generation API.

    146 GitHub starsUsed in 1 repo~927 tokens
    Auto-check passed
  • Unslop

    Sma1lboy/rove

    Strip AI writing tells from Rove's user-facing prose — README, the docs/ pages that sync to docs.rove.run, landing copy, and release notes.

    146 GitHub starsUsed in 1 repo~1.3k tokens
    Auto-check passed
  • Hyperframes Design

    Sma1lboy/rove

    Non-animation creative direction for HyperFrames videos. An agent skill from Sma1lboy/rove.

    146 GitHub stars~1.2k tokensUpdated today
    Auto-check passed
  • Changelog Generator

    Sma1lboy/rove

    Draft Rove release notes as Changesets. An agent skill from Sma1lboy/rove.

    146 GitHub stars~1.5k tokensUpdated today
    Auto-check passed
  • File Issue

    Sma1lboy/rove

    Turn a rough idea, a bug, or a batch of unsolved problems into well-structured GitHub issue(s) and file them with gh, auto-classifying type + labels from the content (recommend, then confirm) and…

    146 GitHub stars~2.4k tokensUpdated today
    Auto-check passed
  • Rove

    Sma1lboy/rove

    A skill your agent uses when controlling Rove tasks, parallel coding attempts, hosted agent sessions, task lifecycle, or the daemon-owned issue tracker from a shell.

    146 GitHub stars~8.8k tokensUpdated today
    Auto-check passed

Questions about Release

What does Release do?

Autonomously cut a Rove (@sma1lboy/rove) release end-to-end — detect the semver bump from pending changesets (flagging an upstream minor you didn't intend), run the release gates, dispatch the…. Release is an agent skill from Sma1lboy/rove.sh locally), then poll the GitHub Actions Release workflow with gh until npm publish completes, diagnosing CI failures (npm token, registry 404, lint, branch mismatch) instead of leaving them silent.

When should I use Release?

Release fits situations like: the user says cut a release; bump the version.

How do I install Release in Claude Code?

Run `npx skills add Sma1lboy/rove --skill release -a claude-code`. Or copy the skill folder (.claude/skills/release in Sma1lboy/rove) into .claude/skills/release in your project. Claude Code loads it when a task matches its description.

How do I install Release in Codex?

Run `npx skills add Sma1lboy/rove --skill release -a codex`. Or copy the skill folder (.claude/skills/release in Sma1lboy/rove) into .agents/skills/release in your project. Codex loads it when a task matches its description.

Can I use Release 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 Sma1lboy/rove --skill release -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/release, .gemini/skills/release, .github/skills/release and .opencode/skills/release in your project.

What does Release need to run?

Going by SKILL.md and its folder, Release needs the command-line tools its instructions call (git, bun, npm, gh and changeset) and credentials named NPM_TOKEN. Our summary lists: A credential in NPM_TOKEN.

Does Release access the network?

SKILL.md contains no URLs. Its commands use git, npm and gh, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Release safe to install?

Our automated static check of SKILL.md flagged 1 warning(s): mentions a credentials file (ssh keys, cloud or package-manager tokens). Read the flagged lines before installing; the check is not a guarantee either way.

What licence does Release use?

Release is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Release 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 Release?

Skills that share tags, products or a category with Release: Manor CI Triage (manor-os/manor-ai, 162 stars), CI Failure Triage and Repair (Chachamaru127/claude-code-harness, 3.2k stars), Lina Community Fix CI (linaproai/linapro, 160 stars) and Release (championswimmer/pi-context-prune, 246 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Release?

Sma1lboy (a GitHub user) maintains it in Sma1lboy/rove, which has 146 GitHub stars. The repository holds 13 skills in this directory. The repository was last updated on October 7, 2026.

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