agentsclimarketplace

Release

Skill solana-foundation/kora/.claude/skills/release

Prepare a Kora release PR. Bumps Rust crate versions (kora-lib + kora-cli), optionally bumps the TypeScript SDK, generates CHANGELOG, and opens a PR against main. Use when the user says 'prepare a release', 'cut a release', or 'release version X.Y.Z'.From its SKILL.md

Install
npx -y skills add solana-foundation/kora --skill release

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

SKILL.md

4.1 KB, as published. Nobody here has run it

Kora Release Preparation

Prepare a release PR for Kora. This updates version numbers, generates the CHANGELOG, and opens a PR against main. For mainline releases, publishing happens after merge via CI.


Prerequisites

Verify these tools are installed before starting:

cargo set-version --version   # from cargo-edit: cargo install cargo-edit
git cliff --version           # cargo install git-cliff
gh --version                  # GitHub CLI
jq --version

Step 1 — Get current versions

# Rust (workspace root Cargo.toml)
cargo metadata --no-deps --format-version 1 \
  | jq -r '.packages[] | select(.name == "kora-lib") | .version'

# TypeScript SDK
node -p "require('./sdks/ts/package.json').version"

Ask the user which component(s) to release and what version(s) to use.


Step 2 — Verify clean working directory

git status --porcelain

If output is non-empty, stop and ask the user to commit or stash first.


Step 3 — Create release branch

# Rust-only release
git checkout -b "chore/release-v${RUST_VERSION}"

# Both Rust + TypeScript
git checkout -b "chore/release-v${RUST_VERSION}-ts-v${TS_VERSION}"

Step 4 — Bump Rust versions

# Update all workspace crates to the new version
cargo set-version --workspace "${RUST_VERSION}"

# Update the kora-lib version pin in workspace.dependencies
sed -i.bak \
  "s/kora-lib = { path = \"crates\/lib\", version = \"[^\"]*\" }/kora-lib = { path = \"crates\/lib\", version = \"${RUST_VERSION}\" }/" \
  Cargo.toml
rm -f Cargo.toml.bak

Step 5 — Generate CHANGELOG

last_tag=$(git tag -l "v*" --sort=-version:refname | head -1)

if [ -z "$last_tag" ]; then
  git cliff "$(git rev-list --max-parents=0 HEAD)"..HEAD \
    --tag "v${RUST_VERSION}" \
    --config .github/cliff.toml \
    --output CHANGELOG.md \
    --strip all
elif [ -f CHANGELOG.md ]; then
  git cliff "${last_tag}"..HEAD \
    --tag "v${RUST_VERSION}" \
    --config .github/cliff.toml \
    --strip all > CHANGELOG.new.md
  cat CHANGELOG.md >> CHANGELOG.new.md
  mv CHANGELOG.new.md CHANGELOG.md
else
  git cliff "${last_tag}"..HEAD \
    --tag "v${RUST_VERSION}" \
    --config .github/cliff.toml \
    --output CHANGELOG.md \
    --strip all
fi

Step 6 — Bump TypeScript SDK (if releasing TS)

npm version "${TS_VERSION}" --no-git-tag-version --prefix sdks/ts

Step 7 — Stage and commit

git add Cargo.toml Cargo.lock CHANGELOG.md crates/*/Cargo.toml

# If TS was bumped
git add sdks/ts/package.json

# Rust-only commit message
git commit -m "chore: release v${RUST_VERSION}"

# Combined commit message
git commit -m "chore: release v${RUST_VERSION} rust + ts-sdk v${TS_VERSION}"

Step 8 — Push and open PR

git push -u origin HEAD

gh pr create \
  --base main \
  --title "chore: release v${RUST_VERSION}" \
  --reviewer dev-jodee,amilz \
  --body "$(cat <<EOF
## Release v${RUST_VERSION}

### Rust Crates
- **kora-lib** \`${RUST_VERSION}\`
- **kora-cli** \`${RUST_VERSION}\`
- CHANGELOG updated from commits since last tag

### TypeScript SDK
- **@solana/kora** \`${TS_VERSION}\` *(omit section if not releasing)*

## Publish
For mainline releases from \`main\`, trigger CI workflows from \`main\` using the \`complete-release\` skill (or manually):
- **Rust**: Actions → "Publish Rust Crates"
- **TypeScript**: Actions → "Publish TypeScript SDK"
EOF
)"

Notes

  • All release PRs target main regardless of current branch.
  • Hotfix patch releases are published from hotfix/* before merge-back to main.
  • Do NOT call just release or just release-ts-sdk — both are interactive.
  • Tags (v{VERSION}, kora-lib-v{VERSION}, kora-cli-v{VERSION}) are created by CI after merge.
  • Prerelease versions use semver suffixes, e.g. 2.3.0-beta.1.

Keep looking

Skills are one crate of 627,801. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.