Release Clisbot
Use this skill from the current clisbot checkout. Do not assume or record a
machine-specific absolute path; verify the repo root by finding package.json
with package name clisbot and the repo AGENTS.md.
Hard Rules
- Run
npm login and npm publish --access public in an attached session.
- If npm returns a browser approval URL, send that exact URL to the operator and continue the same attached session after approval.
- Never use
npm publish --otp, npm login --otp, or any OTP fallback.
- If npm returns
EOTP or demands OTP instead of browser approval, stop and ask; do not invent a manual OTP path.
- Do not publish until version, docs, release notes, migration decision, gates, and package dry-run are aligned.
- If any release path, version, tag, or migration requirement is unclear, ask before publishing.
- Do not include local machine paths in release notes, GitHub Releases, or skill reports unless the operator explicitly asks for a local filesystem path.
Preflight
Start from the current checkout root, not a hard-coded path:
test "$(node -p "require('./package.json').name")" = "clisbot"
Read AGENTS.md and docs/development/README.md.
Inspect git status --short, package.json, CHANGELOG.md, docs/releases/README.md, docs/releases/upcoming.md, docs/migrations/index.md, and the latest docs/updates/releases/*-release-guide.md.
Decide the release lane: first beta, next beta, or official stable/latest.
Confirm there are no unrelated uncommitted changes that should be excluded from the release.
If publishing is requested, confirm npm auth with npm whoami after npm login when auth may be stale.
Version Lanes
Use SemVer prerelease syntax with a hyphen.
X.Y.Z-beta.1 < X.Y.Z-beta.2 < X.Y.Z
First beta:
VERSION=X.Y.Z-beta.1
npm version "$VERSION" --no-git-tag-version
npm login
npm publish --access public --tag beta
npm view clisbot@beta version
npm view clisbot dist-tags
Next beta after fixes:
VERSION=X.Y.Z-beta.2
npm version "$VERSION" --no-git-tag-version
npm login
npm publish --access public --tag beta
npm view clisbot@beta version
npm view clisbot dist-tags
Stable/latest:
VERSION=X.Y.Z
npm version "$VERSION" --no-git-tag-version
npm login
npm publish --access public
npm view clisbot version
npm view clisbot dist-tags
Always set VERSION to the intended release version before copying a lane.
--no-git-tag-version intentionally updates package.json and lockfile without creating an automatic git commit or tag. Commit and tag only after validation and publish state are known.
Release Documents
Before publish, update or explicitly decide no-op for:
docs/releases/upcoming.md for beta history before stable.
docs/releases/vX.Y.Z.md when cutting stable.
CHANGELOG.md for stable/public release index entries.
docs/updates/releases/vX.Y.Z-release-guide.md only for large operator-facing releases.
docs/migrations/index.md every release to state direct/manual path truthfully.
docs/migrations/vA.B.C-to-vX.Y.Z.md only when manual operator action is required.
- GitHub Release notes: short summary, install/update command, migration statement, validation summary, and links back to docs release note and migration index.
For beta releases, do not add every beta to CHANGELOG.md unless the beta itself is intentionally public-facing release history. Track beta details in docs/releases/upcoming.md, and summarize meaningful beta history in stable Pre-Release History.
Validation
Run at minimum:
bun run check
bun run build
git diff --check
npm publish --dry-run --access public
If runtime, channel, migration, startup, queue, loop, or prompt behavior changed, run targeted tests and relevant live E2E before publish. Report exact commands and pass/fail.
Git And Push
After publish verification:
- Commit the release docs/version change with a clear message.
- Create a git tag that matches the npm version, for example
v$VERSION.
- Push branch and tags only after the publish and verification facts are correct.
- Create the GitHub Release from the matching tag. Use prerelease=true for beta tags and latest=true only for stable.
Source: longbkit/clisbot — distributed by TomeVault.
1---2name: release-clisbot3description: Release clisbot safely to npm and GitHub. Use when Codex is asked to prepare, validate, bump, publish, tag, or document a clisbot beta release, next beta release, or official stable/latest release, including release notes, migration notes, GitHub release notes, npm dist-tags, and post-publish verification. Use when this capability is needed.4---56# Release Clisbot78Use this skill from the current `clisbot` checkout. Do not assume or record a9machine-specific absolute path; verify the repo root by finding `package.json`10with package name `clisbot` and the repo `AGENTS.md`.1112## Hard Rules1314- Run `npm login` and `npm publish --access public` in an attached session.15- If npm returns a browser approval URL, send that exact URL to the operator and continue the same attached session after approval.16- Never use `npm publish --otp`, `npm login --otp`, or any OTP fallback.17- If npm returns `EOTP` or demands OTP instead of browser approval, stop and ask; do not invent a manual OTP path.18- Do not publish until version, docs, release notes, migration decision, gates, and package dry-run are aligned.19- If any release path, version, tag, or migration requirement is unclear, ask before publishing.20- Do not include local machine paths in release notes, GitHub Releases, or skill reports unless the operator explicitly asks for a local filesystem path.2122## Preflight23241. Start from the current checkout root, not a hard-coded path:2526 ```bash27 test "$(node -p "require('./package.json').name")" = "clisbot"28 ```29302. Read `AGENTS.md` and `docs/development/README.md`.313. Inspect `git status --short`, `package.json`, `CHANGELOG.md`, `docs/releases/README.md`, `docs/releases/upcoming.md`, `docs/migrations/index.md`, and the latest `docs/updates/releases/*-release-guide.md`.324. Decide the release lane: first beta, next beta, or official stable/latest.335. Confirm there are no unrelated uncommitted changes that should be excluded from the release.346. If publishing is requested, confirm npm auth with `npm whoami` after `npm login` when auth may be stale.3536## Version Lanes3738Use SemVer prerelease syntax with a hyphen.3940```text41X.Y.Z-beta.1 < X.Y.Z-beta.2 < X.Y.Z42```4344First beta:4546```bash47VERSION=X.Y.Z-beta.148npm version "$VERSION" --no-git-tag-version49npm login50npm publish --access public --tag beta51npm view clisbot@beta version52npm view clisbot dist-tags53```5455Next beta after fixes:5657```bash58VERSION=X.Y.Z-beta.259npm version "$VERSION" --no-git-tag-version60npm login61npm publish --access public --tag beta62npm view clisbot@beta version63npm view clisbot dist-tags64```6566Stable/latest:6768```bash69VERSION=X.Y.Z70npm version "$VERSION" --no-git-tag-version71npm login72npm publish --access public73npm view clisbot version74npm view clisbot dist-tags75```7677Always set `VERSION` to the intended release version before copying a lane.78`--no-git-tag-version` intentionally updates `package.json` and lockfile without creating an automatic git commit or tag. Commit and tag only after validation and publish state are known.7980## Release Documents8182Before publish, update or explicitly decide no-op for:8384- `docs/releases/upcoming.md` for beta history before stable.85- `docs/releases/vX.Y.Z.md` when cutting stable.86- `CHANGELOG.md` for stable/public release index entries.87- `docs/updates/releases/vX.Y.Z-release-guide.md` only for large operator-facing releases.88- `docs/migrations/index.md` every release to state direct/manual path truthfully.89- `docs/migrations/vA.B.C-to-vX.Y.Z.md` only when manual operator action is required.90- GitHub Release notes: short summary, install/update command, migration statement, validation summary, and links back to docs release note and migration index.9192For beta releases, do not add every beta to `CHANGELOG.md` unless the beta itself is intentionally public-facing release history. Track beta details in `docs/releases/upcoming.md`, and summarize meaningful beta history in stable `Pre-Release History`.9394## Validation9596Run at minimum:9798```bash99bun run check100bun run build101git diff --check102npm publish --dry-run --access public103```104105If runtime, channel, migration, startup, queue, loop, or prompt behavior changed, run targeted tests and relevant live E2E before publish. Report exact commands and pass/fail.106107## Git And Push108109After publish verification:1101111. Commit the release docs/version change with a clear message.1122. Create a git tag that matches the npm version, for example `v$VERSION`.1133. Push branch and tags only after the publish and verification facts are correct.1144. Create the GitHub Release from the matching tag. Use prerelease=true for beta tags and latest=true only for stable.115116---117> Source: [longbkit/clisbot](https://github.com/longbkit/clisbot) — distributed by [TomeVault](https://tomevault.io).118<!-- tomevault:4.0:skill_md:2026-06-29 -->