Release the Ralphy CLI
This skill ships the agent-facing CLI in this repository. It never releases the
marketing site, public docs site, desktop app, or unattended farm runtime.
Repositories
- CLI: current repository,
alecs5am/ralphy.
- Public docs: sibling
../ralphy-docs, alecs5am/ralphy-docs.
- Marketing and library: sibling
../ralphy-web, alecs5am/ralphy-web.
- Desktop: sibling
../ralphy-desktop, alecs5am/ralphy-desktop.
- Unattended automation: sibling
../ralphy-farm, alecs5am/ralphy-farm.
Only the CLI repository receives the vX.Y.Z release tag. If a CLI change
affects public documentation, update and push ralphy-docs before tagging the
CLI. Web, desktop, and farm changes follow their own release processes.
Release contract
One version must reach all three CLI channels:
- GitHub Release with platform binaries and
SHA256SUMS.
alecs5am/homebrew-tap formula.
@alecs5am/ralphy on npm.
Never amend or replace an existing release. Never publish only one channel.
Procedure
Confirm the current branch is main, the worktree is clean, and gh auth status plus npm whoami identify the expected maintainer.
Read scripts/release/last-release-commit, the latest v* tag, and commits
since that baseline. Propose the semver bump and grouped release notes.
Inspect the diff for public-doc impact. If needed, update ../ralphy-docs,
validate docs.json, commit, and push that repository separately.
Run the CLI verification suite:
bun run lint
bun test --timeout 45000 tests/unit tests/integration
bun run build:bin:current
gitleaks detect --source .
After explicit user approval, update these version sources in lockstep:
package.json
cli/lib/version.ts
npm/package.json
- the current-version line in
AGENTS.md
Commit chore(release): vX.Y.Z, tag that commit vX.Y.Z, and push the
commit and tag. Do not create the GitHub Release manually; the release
workflow owns binaries, checksums, and the release object.
Watch the GitHub Actions release workflow to success.
Run scripts/release/update-brew-tap.sh vX.Y.Z and
scripts/release/publish-npm.sh X.Y.Z, then verify both registries resolve
the new version.
Update scripts/release/last-release-commit in a separate trailing commit
so the next release has an exact baseline.
Stop conditions
Stop before tagging when tests fail, versions disagree, credentials are wrong,
there are no releasable commits, or the user has not approved the proposed
version. Documentation-only changes in ralphy-docs do not require a CLI tag.
1---2name: dev-release3description: Cut a Ralphy CLI release across GitHub Releases, Homebrew, and npm. Use when the user asks to release, tag, publish, or prepare release notes for the CLI. Public documentation and the marketing site live in sibling repositories and are synchronized separately when their content is affected.4---56# Release the Ralphy CLI78This skill ships the agent-facing CLI in this repository. It never releases the9marketing site, public docs site, desktop app, or unattended farm runtime.1011## Repositories1213- CLI: current repository, `alecs5am/ralphy`.14- Public docs: sibling `../ralphy-docs`, `alecs5am/ralphy-docs`.15- Marketing and library: sibling `../ralphy-web`, `alecs5am/ralphy-web`.16- Desktop: sibling `../ralphy-desktop`, `alecs5am/ralphy-desktop`.17- Unattended automation: sibling `../ralphy-farm`, `alecs5am/ralphy-farm`.1819Only the CLI repository receives the `vX.Y.Z` release tag. If a CLI change20affects public documentation, update and push `ralphy-docs` before tagging the21CLI. Web, desktop, and farm changes follow their own release processes.2223## Release contract2425One version must reach all three CLI channels:26271. GitHub Release with platform binaries and `SHA256SUMS`.282. `alecs5am/homebrew-tap` formula.293. `@alecs5am/ralphy` on npm.3031Never amend or replace an existing release. Never publish only one channel.3233## Procedure34351. Confirm the current branch is `main`, the worktree is clean, and `gh auth36 status` plus `npm whoami` identify the expected maintainer.372. Read `scripts/release/last-release-commit`, the latest `v*` tag, and commits38 since that baseline. Propose the semver bump and grouped release notes.393. Inspect the diff for public-doc impact. If needed, update `../ralphy-docs`,40 validate `docs.json`, commit, and push that repository separately.414. Run the CLI verification suite:4243 ```bash44 bun run lint45 bun test --timeout 45000 tests/unit tests/integration46 bun run build:bin:current47 gitleaks detect --source .48 ```49505. After explicit user approval, update these version sources in lockstep:5152 - `package.json`53 - `cli/lib/version.ts`54 - `npm/package.json`55 - the current-version line in `AGENTS.md`56576. Commit `chore(release): vX.Y.Z`, tag that commit `vX.Y.Z`, and push the58 commit and tag. Do not create the GitHub Release manually; the release59 workflow owns binaries, checksums, and the release object.607. Watch the GitHub Actions release workflow to success.618. Run `scripts/release/update-brew-tap.sh vX.Y.Z` and62 `scripts/release/publish-npm.sh X.Y.Z`, then verify both registries resolve63 the new version.649. Update `scripts/release/last-release-commit` in a separate trailing commit65 so the next release has an exact baseline.6667## Stop conditions6869Stop before tagging when tests fail, versions disagree, credentials are wrong,70there are no releasable commits, or the user has not approved the proposed71version. Documentation-only changes in `ralphy-docs` do not require a CLI tag.