complete-release

star 185

Reviewer workflow for completing a Kora mainline release after the release PR is merged. Squash-merges the PR, detects whether Rust and/or TypeScript changed, then triggers the correct publish workflows on main. For hotfix releases, publish from hotfix/* before merging back. Use when the user says 'complete the release' or 'merge and publish' (mainline only).

solana-foundation By solana-foundation schedule Updated 3/27/2026

name: complete-release description: "Reviewer workflow for completing a Kora mainline release after the release PR is merged. Squash-merges the PR, detects whether Rust and/or TypeScript changed, then triggers the correct publish workflows on main. For hotfix releases, publish from hotfix/* before merging back. Use when the user says 'complete the release' or 'merge and publish' (mainline only)."

Kora Complete Release

Run this after a mainline release PR has been approved. It squash-merges the PR and triggers the appropriate CI publish workflows on main.


Step 1 — Identify the release PR

# List open release PRs
gh pr list --base main --search "chore: release" --json number,title,headRefName

Confirm the correct PR number with the user before proceeding.


Step 2 — Squash-merge the PR

gh pr merge "${PR_NUMBER}" --squash --delete-branch

Step 3 — Pull latest main

git checkout main && git pull origin main

Step 4 — Detect what changed

# Find the merge commit
merge_commit=$(git log --oneline -1 --format="%H")

# Check for Rust changes
rust_changed=$(git diff-tree --no-commit-id -r "$merge_commit" \
  --name-only | grep -E '^(Cargo\.toml|Cargo\.lock|CHANGELOG\.md|crates/)' | head -1)

# Check for TypeScript changes
ts_changed=$(git diff-tree --no-commit-id -r "$merge_commit" \
  --name-only | grep -E '^sdks/' | head -1)

echo "Rust changed: ${rust_changed:-no}"
echo "TS changed:   ${ts_changed:-no}"

Step 5 — Trigger Rust publish workflow (if Rust changed)

gh workflow run "Publish Rust Crates" \
  --ref main \
  -f publish-kora-lib=true \
  -f publish-kora-cli=true \
  -f create-github-release=true

Monitor progress:

gh run list --workflow "Publish Rust Crates" --limit 3

Step 6 — Trigger TypeScript publish workflow (if TS changed)

gh workflow run "Publish TypeScript SDK" \
  --ref main \
  -f publish-to-npm=true \
  -f create-github-release=true

Monitor progress:

gh run list --workflow "Publish TypeScript SDK" --limit 3

Step 7 — Verify

# Rust — confirm tags and crates.io
git tag --sort=-version:refname | head -5

# TypeScript — confirm npm
npm view @solana/kora version

Notes

  • This skill is for mainline releases. For hotfix releases, trigger publish workflows from hotfix/* before merging back to main.
  • Publish workflows allow main and hotfix/* refs.
  • Rust publish order: kora-lib first, then kora-cli (kora-cli depends on kora-lib).
  • A 30-second crates.io indexing delay is built into the CI workflow between the two publishes.
  • TS prerelease versions are published with the beta npm tag; stable versions use latest.
  • If a workflow fails mid-run, re-trigger with only the failed steps by setting the relevant booleans to false.
Install via CLI
npx skills add https://github.com/solana-foundation/kora --skill complete-release
Repository Details
star Stars 185
call_split Forks 256
navigation Branch main
article Path SKILL.md
More from Creator
solana-foundation
solana-foundation Explore all skills →