Agent skill

CLI Release

by UsefulSoftwareCo in UsefulSoftwareCo/executor

Runbook for releasing the executor CLI package (stable and beta).

MITAuto-check passedDevelopment

Install CLI Release

skills CLI
$ npx skills add UsefulSoftwareCo/executor --skill cli-release -a claude-code

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

GitHub CLI
$ gh skill install UsefulSoftwareCo/executor cli-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/UsefulSoftwareCo/executor.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.skills/cli-release .claude/skills/cli-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
cli-release
GitHub stars
4.1k
Token cost
~2k tokens
SKILL.md length
824 words
Files
1
Skills in repo
21
Repo updated
First seen
Licence
MIT

At a glance

Runbook for releasing the executor CLI package (stable and beta).

  • Works in 2 steps: .github/workflows/release.yml… → Merging that PR
  • The user asks to cut a release
  • SKILL.md covers Authoritative doc, What the executor CLI actually…, Versioning preferences and Release notes: standard…, plus 6 more sections
  • Calls bun, git and changeset; needs GITHUB_TOKEN

What it does

CLI Release is an agent skill from UsefulSoftwareCo/executor. Runbook for releasing the executor CLI package (stable and beta). Covers scope of what ships with the CLI, user-facing changelog conventions, Changesets + Version Packages PR flow, beta train entry/exit, and owner preferences. Use when the user asks to cut a release, prepare release notes, enter/exit a beta train, or write changesets for the CLI.

Its SKILL.md is about 2k 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 Development, covering Changelog and release notes and Runbooks and postmortems. The repository describes itself as: The missing integration layer for AI agents. Let them call any OpenAPI / MCP / GraphQL / custom js functions in secure environment. The licence is MIT.

When your agent uses it

  • The user asks to cut a release
  • Prepare release notes
  • Enter/exit a beta train
  • Write changesets for the CLI

Example prompts

  • “/cli-release”

Requirements

  • Node.js
  • A credential in GITHUB_TOKEN

Workflow steps

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

  1. .github/workflows/release.yml opens/updates a Version Packages PR.
  2. Merging that PR

What it can do on your machine

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

    • bun
    • git
    • changeset
    • gh
    • npm

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

  • Network

    No URLs in SKILL.md. Its commands use git, gh and npm, 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:

    • GITHUB_TOKEN

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

Context cost

CLI Release loads about 2k tokens when it runs. Until then it costs about 91 tokens; SKILL.md has 824 words of instructions outside code blocks.

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

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 passed

The automated check found no risky patterns in SKILL.md.

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 UsefulSoftwareCo/executor at commit 27dccb8, republished under its MIT licence (© UsefulSoftwareCo). 824 words, ~1,954 tokens.

Download SKILL.mdSave it as .claude/skills/cli-release/SKILL.md (or your agent's skills folder).
name
cli-release
description
Runbook for releasing the `executor` CLI package (stable and beta). Covers scope of what ships with the CLI, user-facing changelog conventions, Changesets + Version Packages PR flow, beta train entry/exit, and owner preferences. Use when the user asks to cut a release, prepare release notes, enter/exit a beta train, or write changesets for the CLI.

Executor CLI release runbook

Authoritative doc

RELEASING.md at repo root is the source of truth. This skill encodes the owner's preferences on top of it.

What the executor CLI actually ships

The CLI binary bundles:

  • apps/cli/** — CLI source + daemon
  • apps/local/** — the web UI (embedded as a virtual module via apps/cli/src/build.ts:178) + drizzle migrations (build.ts:205)
  • packages/** — core, kernel, hosts/mcp, runtime-quickjs, and every plugin under packages/plugins/**

Does not ship in the CLI:

  • apps/cloud/** (Cloudflare Workers deployment)
  • apps/marketing/**, apps/desktop/**
  • examples/**, tests/**

Implication for changelogs: when asked "what changed since the last release", scope is git log v<last>..HEAD -- apps/cli apps/local packages, not just apps/cli. Skipping apps/local and packages misses the bulk of product changes (Connections UI, OAuth plugins, SDK scope, OTEL, etc.).

Versioning preferences

  • Prior convention in this repo uses patch bumps for feature-heavy releases (see .changeset/executor-1.4.6-beta.md for precedent). Don't push back on patch unless there are genuine SemVer-breaking API changes to a library consumer surface.
  • Breaking CLI UX changes (removed flags, changed argv shape) have historically still been patch bumps. Follow the owner's call — ask, don't assume minor.
  • Normal release/patch PRs must add a .changeset/*.md file with frontmatter like "executor": patch. Do not directly bump apps/cli/package.json or bun.lock in a feature/fix PR.
  • Only the Changesets-generated Version Packages PR should move apps/cli/package.json. If a normal PR directly changes that version, merging it to main can make .github/workflows/release.yml tag the commit and dispatch publish-executor-package.yml, causing an immediate CLI publish.
  • @executor-js/* library packages have their own publish path.

Release notes: standard Changesets flow — the changeset body IS the changelog

As of v1.5.0 this repo uses the canonical Changesets pipeline. The old apps/cli/release-notes/next.md rolling file is gone — do not recreate it.

How it's wired
  • Every user-visible PR adds a .changeset/*.md; its body is the user-facing changelog entry.
  • changeset version (run by changesets/action@v1 when building the Version Packages PR) compiles changeset bodies into each bumped package's CHANGELOG.md using @changesets/changelog-github (configured in .changeset/config.json), which prefixes each entry with the PR link and credits the author automatically.
  • apps/cli/src/release.ts (changelogSectionForVersion) extracts the released version's ## <version> section from apps/cli/CHANGELOG.md and uses it as the GitHub Release body. Missing section → falls back to --generate-notes.
  • Per-package CHANGELOG.md seed files are still required for every workspace package (bun run lint:changelog-stubs --fix creates them); changesets/action@v1 crashes with ENOENT on missing files.
  • @changesets/changelog-github needs GITHUB_TOKEN during changeset version. CI provides it; locally: GITHUB_TOKEN=$(gh auth token) bun run changeset:version.
Writing changeset bodies
  • Lead with user-visible behavior, not implementation. One sentence for a typical fix; a short paragraph for a feature.
  • Big releases: a changeset body can be a full markdown section — use bold sub-headings + bullets, never #/## headings (they end up nested inside a changelog list item).
  • Breaking changes: include the before/after surface in the body.
  • Don't duplicate content across changesets — every changeset in the release lands in the same version section.
  • Attribution is automatic via changelog-github; don't hand-write Thanks @... lines.
Show full SKILL.md (353 more words)Show less
When drafting a release-spanning changeset from git log
  • Look at git diff v<last>..HEAD -- README.md first — best single view of user-facing changes.
  • Read commits in bulk (git log --oneline v<last>..HEAD -- apps/cli apps/local packages), bucket by theme, then write prose.
  • Merged PRs without changesets still ship in the release — their content ships regardless; only the changelog text is driven by changesets. If something important landed without a changeset, fold its story into a release-summary changeset.

Beta release flow

git checkout -b rs/beta-v<next>-start
bun run release:beta:start                 # creates .changeset/pre.json
# write .changeset/executor-<next>-beta.md (frontmatter + user-facing body)
git add ... && git commit                  # ONLY when owner says commit
git push -u origin rs/beta-v<next>-start
# Open PR -> merge -> release.yml opens "Version Packages (beta)" PR -> merge to publish
  • Published under npm dist-tag beta.
  • Users install: npm i -g executor@beta.
  • Exit the train with bun run release:beta:stop when going back to stable.

Stable release flow

Identical to beta except skip release:beta:start/stop. Changesets produce a normal Version Packages PR; merging publishes under latest.

Owner preferences (hard rules)

  • Never commit until the owner explicitly says so. Set everything up in the working tree, run git status, and stop.
  • No AI / Claude / Anthropic / Co-Authored-By trailers in commits, commit messages, PRs, or any generated file. This is in CLAUDE.md — do not violate.
  • Branch naming: rs/<short-topic> for Rhys's branches. Beta-start branch: rs/beta-v<version>-start.
  • Remote: origin = https://github.com/UsefulSoftwareCo/executor.git. If another remote appears (e.g. a fork remote), ask whether to remove it.
  • Dirty working tree: if there are uncommitted changes when starting a release, ask whether to include them, stash them, or commit separately first. Don't sweep them into the release commit silently.
  • Don't estimate time — code is cheap to write. Focus on what to do, not how long it takes.
  • Fact-check scope claims before publishing. If release notes say "does not affect X", verify by reading the diff.

Common commands

bun run changeset                          # interactive; or write .changeset/*.md directly
bun run lint:changelog-stubs --fix         # seed missing per-package CHANGELOG.md files
bun run release:beta:start                 # enter prerelease
bun run release:beta:stop                  # exit prerelease
bun run release:publish:dry-run            # build full CLI payload without publishing
bun run release:publish:packages:dry-run   # pack @executor-js/* without publishing
bun run release:check                      # invoked by publish workflow

What the workflow does after merge to main

  1. .github/workflows/release.yml opens/updates a Version Packages PR.
  2. Merging that PR:
    • Publishes every @executor-js/* library that's not yet on npm (via scripts/publish-packages.ts).
    • If apps/cli/package.json bumped, tags the commit and dispatches publish-executor-package.yml, which runs release:check, does a full dry-run build, publishes the CLI to npm, and creates/updates the GitHub Release with binary assets.

Fallback behavior

If something is unclear (bump level, whether to include in-flight work, whether to push), ask the owner. A release is a high-blast-radius action; one clarifying question is cheaper than a rogue publish.

© UsefulSoftwareCo, 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 .skills/cli-release of UsefulSoftwareCo/executor.

Open the folder on GitHubat commit 27dccb8

Compare with similar skills

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

CLI Release compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
CLI Release this skillUsefulSoftwareCo/executor4.1k—~2kAutomated safety check: PassMIT
Simple Englishmoeru-ai/airi50k2 repos~4.6kAutomated safety check: PassMIT
Mole CLI Release Flowtw93/Mole70k—~2.5kAutomated safety check: PassGPL-3.0
Simple Englishropensci/ckanr1043 repos~2kAutomated safety check: PassMIT
Releasenubjs/nub4.4k—~7.6kAutomated safety check: PassMIT
Simple Englishdanielvm-git/bigpowers257—~932Automated safety check: PassMIT

Similar skills

  • Simple English

    moeru-ai/airi

    Write or rewrite technical text with the rules of ASD-STE100 Simplified Technical English so it is clear, unambiguous, and free of AI slop.

    50k GitHub starsUsed in 2 repos~4.6k tokens
    DevelopmentAuto-check passed
  • Runbook for assessing and executing a Mole CLI release: distribution channels, pre-flight checks, capital-V tags, build artifacts and the handoff to curated release notes.

    70k GitHub stars~2.5k tokensUpdated today
    DevelopmentAuto-check passed
  • Simple English

    ropensci/ckanr

    Write or rewrite text in plain, layman-readable English in the spirit of ASD-STE100 Simplified Technical English: short sentences, active voice, simple tenses, one word one meaning, condition before…

    104 GitHub starsUsed in 3 repos~2k tokens
    DevelopmentAuto-check passed
  • Release

    nubjs/nub

    Cut a Nub patch release end-to-end in one invocation. An agent skill from nubjs/nub.

    4.4k GitHub stars~7.6k tokensUpdated today
    DevelopmentAuto-check passed
  • Simple English

    danielvm-git/bigpowers

    Write or rewrite technical text with the rules of ASD-STE100 Simplified Technical English so the result is clear, unambiguous, and free of AI slop.

    257 GitHub stars~932 tokensUpdated 16 days ago
    DevelopmentAuto-check passed
  • GreptimeDB Release Runbook

    GreptimeTeam/greptimedb

    Runbook for publishing a GreptimeDB version: pick the release branch, verify the Cargo version, then tag, create the GitHub release and open the docs note PR.

    6.7k GitHub stars~1.4k tokensUpdated today
    DevOps & CloudAuto-check passed

More from UsefulSoftwareCo/executor

All 21 skills in this repo
  • Effect Client Wrapper

    UsefulSoftwareCo/executor

    Pattern for wrapping third-party SDK clients (Stripe, Resend, AWS, etc.) with Effect.

    4.1k GitHub starsUsed in 1 repo~1.4k tokens
    Auto-check passed
  • Effect Atom Optimistic Updates

    UsefulSoftwareCo/executor

    Pattern for implementing optimistic UI updates with effect-atom in this codebase.

    4.1k GitHub stars~2.5k tokensUpdated today
    Auto-check passed
  • Effect HTTP Testing

    UsefulSoftwareCo/executor

    Testing Effect HttpApi services end-to-end. An agent skill from UsefulSoftwareCo/executor.

    4.1k GitHub stars~1.6k tokensUpdated today
    Auto-check passed
  • Emulate

    UsefulSoftwareCo/executor

    Use the @executor-js/emulate service emulators (GitHub, Google, Stripe, Resend, WorkOS, …) to test integrations for real — full OpenAPI specs, working OAuth flows, mintable credentials, and a…

    4.1k GitHub stars~2.2k tokensUpdated today
    Auto-check: notes
  • Prod Telemetry

    UsefulSoftwareCo/executor

    Query Executor's production telemetry — Axiom traces (executor-cloud dataset), prod Postgres via PlanetScale, PostHog product analytics — through the Executor MCP.

    4.1k GitHub stars~1.9k tokensUpdated today
    Auto-check passed
  • Self Contained Modals

    UsefulSoftwareCo/executor

    Build modals/dialogs self-contained: form and in-flight state lives inside, closing unmounts it.

    4.1k GitHub stars~878 tokensUpdated today
    Auto-check passed

Questions about CLI Release

What does CLI Release do?

Runbook for releasing the executor CLI package (stable and beta). CLI Release is an agent skill from UsefulSoftwareCo/executor. Runbook for releasing the executor CLI package (stable and beta).

When should I use CLI Release?

CLI Release fits situations like: the user asks to cut a release; prepare release notes; enter/exit a beta train; write changesets for the CLI.

How do I install CLI Release in Claude Code?

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

How do I install CLI Release in Codex?

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

Can I use CLI 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 UsefulSoftwareCo/executor --skill cli-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/cli-release, .gemini/skills/cli-release, .github/skills/cli-release and .opencode/skills/cli-release in your project.

What does CLI Release need to run?

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

Does CLI Release access the network?

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

Is CLI Release safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does CLI Release use?

CLI 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 CLI Release use?

About 2k tokens (SKILL.md is roughly 7.8k 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 CLI Release?

Skills that share tags, products or a category with CLI Release: Simple English (moeru-ai/airi, 50k stars), Mole CLI Release Flow (tw93/Mole, 70k stars), Simple English (ropensci/ckanr, 104 stars) and Release (nubjs/nub, 4.4k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains CLI Release?

UsefulSoftwareCo (a GitHub organization) maintains it in UsefulSoftwareCo/executor, which has 4,094 GitHub stars. The repository holds 21 skills in this directory. The repository was last updated on October 8, 2026.

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