← ClaudeAtlas

releasing-reeflisted

How to cut a reef release — version bump, tag push, and the GitHub Release notes format. Use when the user says "cut a release", "tag vX.Y.Z", "打个 tag 发���", "发布", "bump version", "release notes", or asks "how do I release reef", "what's the notes format", "is it safe to push this tag". Covers the full pipeline pushing a `v*` tag triggers (multi-platform binary build + npm publish to `@reef-tui/cli` + GitHub Release with assets), the notes convention, and the specific traps we've paid for — Cargo.toml drift, shell escaping when passing notes inline, and how `softprops/action-gh-release` behaves with pre-existing release bodies.
Blushyes/reef · ★ 67 · Code & Development · score 72
Install: claude install-skill Blushyes/reef
# Releasing reef Reef releases are driven by **git tags matching `v*`**. Pushing such a tag is the single trigger for `.github/workflows/release.yml`, which does the rest automatically: `reef` + `reef-agent` binaries for five targets, npm publish of `@reef-tui/cli` + five platform subpackages, GitHub Release with assets. You never run `cargo publish`, never `npm publish` by hand, never upload binaries manually. The contract is **bump Cargo.toml, commit, tag, push**. ## What a `v*` tag push actually runs `.github/workflows/release.yml`: 1. **Build matrix** — for each target, builds **`reef-agent` first, then `reef`** (`cargo build --release --locked -p <crate>`). reef-agent goes first because reef's `build.rs` embeds the freshly-built agent as the upload-fallback blob (see `src/agent_deploy/upload.rs`). Targets: - `aarch64-apple-darwin`, `x86_64-apple-darwin` - `x86_64-unknown-linux-gnu`, `aarch64-unknown-linux-gnu` (via `cross`) - `x86_64-pc-windows-msvc` Each row uploads two artifacts: `reef-<platform>` and `reef-agent-<platform>`. 2. **npm platform subpackages** — publishes `@reef-tui/cli-{darwin-arm64,darwin-x64,linux-arm64,linux-x64,win32-x64}`. Each subpackage bundles **only the `reef` binary** (the agent is embedded inside it). Each subpackage's `package.json` version is overwritten at publish time to `${TAG#v}`. 3. **npm main package** — publishes `@reef-tui/cli` with `optionalDependencies` pinned to the same version. 4. **GitHub Release** — via `softp