release

A release procedure for publishing a tokenroom package, including pre-release checks, version updates, changelog work, tagging, and registry verification.

In plain words
What is it for?
Preparing and publishing npm releases, checking package availability, and verifying that the published version is correct.
Why use it?
It defines the required checks and publishing credentials so releases follow a repeatable process and common authentication failures are identified.

Command for Claude Code

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

agentmods
npx agentmods add commands/tyejcoleman/tokenroom/release
Clone the repo
git clone --depth 1 https://github.com/tyejcoleman/tokenroom

Made for: Claude Code.

Per session 21 Only the description is in the session, so the agent can decide to use it. The body loads when it is invoked.
When invoked 899 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5 $0.00021 $0.00899
Opus 5 $0.00010 $0.00449
Sonnet 5 $0.00004 $0.00180
Haiku 4.5 $0.00002 $0.00090

Measured yesterday against content hash 5cd6887f0658, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

release scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured yesterday.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

.claude/commands/release.md · 49 lines

What it actually says

Cut a release. Follow exactly; stop and report at any failed gate. Everything below is agent-executable EXCEPT the one human ceremony in step 0.

  1. Token ceremony (HUMAN, once — and after any credential exposure): CI publishes with the NPM_TOKEN repo secret, which must be a granular access token with Read and write / All packages AND "Bypass two-factor authentication" ENABLED. (Classic "Automation" tokens are retired — npm offers granular only now.) All-packages scope is required for FIRST publishes (an unpublished name can't be selected). Both failure signatures fire at the publish step only, after all gates pass:
    • E403 You may not perform that action with these credentials — wrong token type (field 2026-06-10, run 27315632200);
    • E403 Two-factor authentication or granular access token with bypass 2fa enabled is required — granular token created WITHOUT the bypass toggle (field 2026-06-11, run 27385109918). If the toggle is absent from the token form, the account's 2FA write-requirement setting is pinned to "always" — relax it to the granular-bypass option first. Granular tokens EXPIRE (~90d cap): calendar the renewal. After creating: gh secret set NPM_TOKEN, revoke the previous token. Fallback that needs no token changes: a human runs npm publish --access public --otp=<code> locally (loses provenance for that release). Agents must NEVER print, commit, or echo token values (gate G6); a failed publish is re-run with gh run rerun <id> — tags never move.
  2. Preflight: node scripts/release-preflight.mjs — tree, tests, gates, dated CHANGELOG section, tag state, tarball scope, registry collision, secret presence. Fix every ✗ before proceeding. (CI runs it with --offline.)
  3. Version: bump version in package.json only — single source of truth (ADR-10). Patch = fixes, minor = features, pre-1.0.
  4. CHANGELOG.md: a DATED section ## X.Y.Z — YYYY-MM-DD (release.yml extracts it; "Unreleased" headings block the GitHub release notes). Grouped Added/Fixed/Changed, written for users.
  5. Commit & tag: release: vX.Y.Z commit → git tag vX.Y.Z && git push && git push --tags.
  6. The tag does the rest.github/workflows/release.yml: gates → tag==version check → npm publish --provenance → GitHub release from the CHANGELOG section. Watch: gh run watch $(gh run list --workflow release --limit 1 --json databaseId -q '.[0].databaseId'). If it fails at the publish step with E403: that is the token type (step 0) — fix the secret, then gh run rerun <run-id>. The tag is fine; never delete/move it.
  7. Registry verification (the release is not done until this passes):
    • npm view tokenroom version → the new version;
    • in a temp prefix: npm install -g --prefix $(mktemp -d) tokenroom and run the installed tokenroom binary: line (degrades to "no data"), tap with a fixture payload (renders HUD), doctor --config-dir $(mktemp -d) (reports, exits 1 on the empty sandbox — expected);
    • npm page shows the provenance badge ("built and signed on GitHub Actions").
  8. Announce only per the launch plan (launch/RUNBOOK.md) — publishing is not promotion; do not post anywhere unless the user has explicitly green-lit the launch.
Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. yesterday First seen · 49 lines · 21 tokens per session scan A 5cd6887f0658

Subscribe to this mod's changes

release is a command published in the GitHub repository tyejcoleman/tokenroom (0 stars, last pushed 1mo ago), licensed Apache-2.0. It adds 21 tokens to every session and 899 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.