Kora Release Preparation
Bump versions, generate the CHANGELOG, open a PR against main. Publishing happens after merge
via CI — see the complete-release skill.
Decide first
Read current versions, then ask the user which components to release and at what versions:
cargo metadata --no-deps --format-version 1 | jq -r '.packages[] | select(.name=="kora-lib") | .version'
node -p "require('./sdks/ts/package.json').version"
Rust and TypeScript release independently. Prereleases use semver suffixes (2.3.0-beta.1).
Work on a chore/release-v${VERSION} branch off main with a clean tree.
Bump only kora-lib and kora-cli
Do not run cargo set-version --workspace. The workspace also contains crates/kora-deploy
(published separately, currently on its own 0.x line) and examples/devnet-deploy-paymaster.
A workspace-wide bump drags both onto the Kora version and kora-deploy has no publish = false
to stop it reaching crates.io.
Four places move together, and kora-lib + kora-cli always share one version:
cargo set-version -p kora-lib -p kora-cli "${RUST_VERSION}"
Then edit by hand in the root Cargo.toml:
[workspace.package] version—testsinherits this- the
kora-lib = { path = "crates/lib", version = "..." }pin in[workspace.dependencies]
Confirm nothing else moved before committing:
git diff --stat
grep -rn '^version' crates/*/Cargo.toml Cargo.toml
crates/kora-deploy/Cargo.toml must be untouched.
CHANGELOG
git-cliff appends rather than regenerates, and the invocation differs depending on whether a previous tag and CHANGELOG exist. See references/changelog.md.
TypeScript
npm version "${TS_VERSION}" --no-git-tag-version --prefix sdks/ts
Commit and PR
Commit message: chore: release v${RUST_VERSION}, plus rust + ts-sdk v${TS_VERSION} when both
move. PR targets main, reviewers dev-jodee,amilz. Body should list the crates and versions
being released and point at the complete-release skill for publishing.
Constraints
- Release PRs always target
main, regardless of the current branch. - Hotfix patches publish from
hotfix/*before merge-back tomain. - Never call
just releaseorjust release-ts-sdk— both are interactive and will hang. - Tags (
v{VERSION},kora-lib-v{VERSION},kora-cli-v{VERSION}) are created by CI after merge, not here.