ClawBox Release Publish
Use this skill to run the current ClawBox release process end to end.
Read first
docs/releasing.md
.github/release-notes-template.md
docs/releases/
package.json
scripts/release-version.mjs
scripts/sync-version.mjs
.github/workflows/release.yml
git status --short --branch
If the user also asks to create the commit or push the branch/tag, read .agents/skills/clawbox-git-commit-push/SKILL.md.
Workflow
- Inspect the worktree before starting. Stop if unrelated dirty changes would be mixed into the release.
- Fetch tags with
git fetch --tags before generating a version. The UTC day sequence is based on local tags.
- Run
npm run release:version. This updates package.json, package-lock.json, src-tauri/tauri.conf.json, and src-tauri/Cargo.toml.
- Read back the selected version with
node -p "require('./package.json').version" and use that exact value for the release commit and tag.
- If the user wants curated release notes, copy
.github/release-notes-template.md to docs/releases/v<version>.md and fill it in before the release commit. If that file is missing, GitHub falls back to auto-generated notes.
- Run the standard release validation set unless the user explicitly scopes it down:
npm run scan:repo
npm run audit:licenses
npm run audit:deps
npm run build:frontend
npm run build:backend
cargo check --manifest-path src-tauri/Cargo.toml
- If the user wants the release prepared but not published, stop after reporting the version, changed files, release notes status, and validation status.
- If the user wants the release published, create a focused commit for the release files, create tag
v<version>, push the branch, then push the tag.
Expected commands
Prepare the next release version:
git fetch --tags
npm run release:version
Validate the release:
npm run scan:repo
npm run audit:licenses
npm run audit:deps
npm run build:frontend
npm run build:backend
cargo check --manifest-path src-tauri/Cargo.toml
Publish after validation:
VERSION=$(node -p "require('./package.json').version")
cp .github/release-notes-template.md "docs/releases/v${VERSION}.md"
git add package.json package-lock.json src-tauri/tauri.conf.json src-tauri/Cargo.toml docs/releases/v${VERSION}.md
git commit -m "release: v$VERSION"
git tag "v$VERSION"
git push origin HEAD
git push origin "v$VERSION"
Guardrails
- Do not hand-edit the version fields when the goal is to cut a release. Use
npm run release:version.
- Do not create or push a tag that differs from
v<package.json version>. The release workflow rejects mismatches.
- Do not silently skip
git fetch --tags; without it, the same UTC day can generate the wrong -N.
- Do not stage unrelated files, generated artifacts, or user work that is outside the release scope.
- Do not assume release notes are mandatory; if
docs/releases/<tag>.md is absent, the workflow falls back to GitHub-generated notes.
- Do not claim Windows signing was performed unless
WIN_SIGN_THUMBPRINT or equivalent signing prerequisites were actually available.
- If validation is incomplete, say exactly which commands were skipped or failed.
Verification
- Confirm
package.json, package-lock.json, src-tauri/tauri.conf.json, and src-tauri/Cargo.toml all reflect the same version after npm run release:version.
- Run
npm run sync-version after version generation only when you need to verify the sync chain; it should not create additional diffs.
- After commit/tag creation, report the version, commit hash, branch, and pushed tag.
1---2name: clawbox-release-publish3description: Use when the user asks to prepare, cut, validate, tag, or publish a ClawBox desktop release. Covers the UTC date-based version flow (`npm run release:version`), release validation commands, release commit/tag creation, and pushing the matching `v` tag for the current package version that triggers GitHub Releases. Do not use for changing packaging or versioning logic itself; use the packaging skill for that.4---56# ClawBox Release Publish78Use this skill to run the current ClawBox release process end to end.910## Read first1112- `docs/releasing.md`13- `.github/release-notes-template.md`14- `docs/releases/`15- `package.json`16- `scripts/release-version.mjs`17- `scripts/sync-version.mjs`18- `.github/workflows/release.yml`19- `git status --short --branch`2021If the user also asks to create the commit or push the branch/tag, read `.agents/skills/clawbox-git-commit-push/SKILL.md`.2223## Workflow24251. Inspect the worktree before starting. Stop if unrelated dirty changes would be mixed into the release.262. Fetch tags with `git fetch --tags` before generating a version. The UTC day sequence is based on local tags.273. Run `npm run release:version`. This updates `package.json`, `package-lock.json`, `src-tauri/tauri.conf.json`, and `src-tauri/Cargo.toml`.284. Read back the selected version with `node -p "require('./package.json').version"` and use that exact value for the release commit and tag.295. If the user wants curated release notes, copy `.github/release-notes-template.md` to `docs/releases/v<version>.md` and fill it in before the release commit. If that file is missing, GitHub falls back to auto-generated notes.306. Run the standard release validation set unless the user explicitly scopes it down:31 - `npm run scan:repo`32 - `npm run audit:licenses`33 - `npm run audit:deps`34 - `npm run build:frontend`35 - `npm run build:backend`36 - `cargo check --manifest-path src-tauri/Cargo.toml`377. If the user wants the release prepared but not published, stop after reporting the version, changed files, release notes status, and validation status.388. If the user wants the release published, create a focused commit for the release files, create tag `v<version>`, push the branch, then push the tag.3940## Expected commands4142Prepare the next release version:4344```bash45git fetch --tags46npm run release:version47```4849Validate the release:5051```bash52npm run scan:repo53npm run audit:licenses54npm run audit:deps55npm run build:frontend56npm run build:backend57cargo check --manifest-path src-tauri/Cargo.toml58```5960Publish after validation:6162```bash63VERSION=$(node -p "require('./package.json').version")64cp .github/release-notes-template.md "docs/releases/v${VERSION}.md"6566git add package.json package-lock.json src-tauri/tauri.conf.json src-tauri/Cargo.toml docs/releases/v${VERSION}.md67git commit -m "release: v$VERSION"68git tag "v$VERSION"69git push origin HEAD70git push origin "v$VERSION"71```7273## Guardrails7475- Do not hand-edit the version fields when the goal is to cut a release. Use `npm run release:version`.76- Do not create or push a tag that differs from `v<package.json version>`. The release workflow rejects mismatches.77- Do not silently skip `git fetch --tags`; without it, the same UTC day can generate the wrong `-N`.78- Do not stage unrelated files, generated artifacts, or user work that is outside the release scope.79- Do not assume release notes are mandatory; if `docs/releases/<tag>.md` is absent, the workflow falls back to GitHub-generated notes.80- Do not claim Windows signing was performed unless `WIN_SIGN_THUMBPRINT` or equivalent signing prerequisites were actually available.81- If validation is incomplete, say exactly which commands were skipped or failed.8283## Verification8485- Confirm `package.json`, `package-lock.json`, `src-tauri/tauri.conf.json`, and `src-tauri/Cargo.toml` all reflect the same version after `npm run release:version`.86- Run `npm run sync-version` after version generation only when you need to verify the sync chain; it should not create additional diffs.87- After commit/tag creation, report the version, commit hash, branch, and pushed tag.