jackin-release — Claude Code skill: what it does, how to install
Orchestrates checks, changelog formatting, and version bumps for Rust projects. Runs cargo release only after an explicit confirmation from the operator.
npx skills add jackin-project/jackin-dev --skill jackin-release -a claude-codeWhat jackin-release does
The skill coordinates release routines step by step. First, it triggers gate validations with jackin-release-check and reads unreleased work via jackin-release-notes. Based on the change categories, it calculates the next version: breaking changes prompt major bumps, additions map to minor, and bug fixes trigger patch releases.
The execution step is irreversible. Running cargo release --execute updates Cargo.toml, replaces changelog headers, tags the commit, and pushes to git. Without cargo-release, an authenticated gh CLI, and configured release.toml rules, the process will fail. The assistant never executes the cut on its own. It waits for a direct "yes" from the developer.
What it helps with
- verify project release readiness gates before tagging
- update CHANGELOG.md headers from the unreleased section
- calculate the next semver increment from committed work
- run cargo release to tag and push the repository
Example prompts for the agent
- Cut the next project release using
jackin-release. - Prepare a minor version bump with
jackin-release minor. - Run gate checks and release a patch via
jackin-release patch.
How to install jackin-release
1Skills CLI (Vercel)
npx skills add jackin-project/jackin-dev --skill jackin-release -a claude-code2Manually: put the files in place
~/.claude/skills/jackin-release/SKILL.mdCopy the whole skill folder; for one project use .claude/skills/jackin-release/
1Skills CLI (Vercel)
npx skills add jackin-project/jackin-dev --skill jackin-release -a codex2Manually: put the files in place
.agents/skills/jackin-release/SKILL.mdFor all projects use ~/.agents/skills/
1Skills CLI (Vercel)
npx skills add jackin-project/jackin-dev --skill jackin-release -a cursor2Manually: put the files in place
.cursor/skills/jackin-release/SKILL.mdCursor also reads .agents/skills/ and .claude/skills/
1GitHub CLI
gh skill install jackin-project/jackin-dev jackin-release2Manually: put the files in place
.github/skills/jackin-release/SKILL.md1Skills CLI (Vercel)
npx skills add jackin-project/jackin-dev --skill jackin-release -a gemini-cli2Platform CLI
gemini skills install https://github.com/jackin-project/jackin-dev --path skills/jackin-releaseManually: put the files in place
.devin/skills/jackin-release/SKILL.mdThe legacy .windsurf/skills/ path still works
Skills CLI (Vercel)
npx skills add jackin-project/jackin-dev --skill jackin-release -a opencodeClaude.ai
Zip the folder and upload it in Settings → Capabilities → Skills
Step by step, with commands for each platform: How to install skills in Claude Code: five ways
Questions about jackin-release
How to install jackin-release in Claude Code?
Run npx skills add jackin-project/jackin-dev --skill jackin-release -a claude-code. The file will be placed in ~/.claude/skills/jackin-release/SKILL.md.
What does jackin-release do?
It coordinates gate checks, formats unreleased notes, recommends a semver bump level, and runs cargo release once the operator gives explicit approval.
What prerequisites are required before cutting a release?
You need cargo-release installed, authenticated gh CLI access, .github/workflows/ci.yml, and release.toml with pre-release-replacements matching the marker in CHANGELOG.md.
Source text
SKILL.md · Apache-2.0
--- name: jackin-release description: Use only when the user explicitly requests this skill. Cuts a jackin❯ release — runs the readiness gates, writes the changelog, recommends a version, then executes cargo release on explicit operator confirmation. argument-hint: "[major|minor|patch|version]" disable-model-invocation: true license: Apache-2.0 user-invocable: true --- # jackin-release **Cut** a release. The only irreversible skill in the suite — `cargo release --execute` bumps the version, rewrites the changelog header, tags, and pushes. Hard-gated on one explicit operator "yes"; nothing releases on assumption. Orchestrates `jackin-release-check` (the gates) and `jackin-release-notes` (the changelog), then recommends a version from the changelog shape and cuts. ## When to use - The operator asks to cut / ship / release a version. ## When NOT to use - Just checking readiness → `jackin-release-check`. - Just updating the changelog → `jackin-release-notes`. ## Prerequisites `cargo-release` installed; `gh` authenticated; `release.toml` with `pre-release-replacements` for `CHANGELOG.md`; `CHANGELOG.md` with the `<!-- next-header -->` marker; `.github/workflows/ci.yml`. ## Process 1. **Gates.** Run `jackin-release-check`. A red gate **stops** — show the report and name what to fix. Warns surface; ask whether to continue. *Done when* every gate is green, or the operator accepted the warns. 2. **Changelog.** Run `jackin-release-notes`. Present the `[Unreleased]` section; let the operator re-classify or reword. *Done when* the operator approves the changelog. 3. **Recommend a version.** Read the approved `[Unreleased]` buckets: any **Removed** or "breaking" entry → **major**; any **Added** → **minor**; only **Fixed** / **Changed** / **Security** / **Deprecated** → **patch**. Read the current version (`grep '^version' Cargo.toml`), compute the next, present the recommendation, wait. *Done when* the operator confirms the bump level. 4. **Commit the changelog.** If `CHANGELOG.md` has uncommitted edits, `git add CHANGELOG.md && git commit -m "docs: update changelog for vX.Y.Z"`. 5. **Final confirm.** Show the summary — version, bump level, changelog shape, and the exact `cargo release <level> --execute` about to run (it bumps `Cargo.toml`, renames `[Unreleased]` to `[X.Y.Z] - <date>` via `release.toml`, tags, and pushes). **Do not run it without an explicit "yes."** *Done when* the operator says "yes." 6. **Cut.** `cargo release <level> --execute`. On failure, show the error and stop. 7. **Verify.** `git tag -l "vX.Y.Z"` and `git ls-remote --tags origin "refs/tags/vX.Y.Z"`. Point the operator at the release workflow that now builds the artifacts. ## Error recovery - Before `cargo release`: safe to fix and re-run — this skill re-validates everything. - During `cargo release`: check what committed or tagged. Tag created but unpushed → `git push origin vX.Y.Z`. Version commit without tag → reset and retry. - After: the release is done; a CI failure is a workflow issue, not a rollback. ## Common mistakes - Running `cargo release` without the explicit "yes" — the one hard gate. - Letting a red readiness gate through to the cut. - Hand-editing the `[X.Y.Z]` version heading — `cargo-release` rewrites it via `release.toml` `pre-release-replacements`; double-editing corrupts the release commit.
© jackin-project · Apache-2.0 · jackin-project/jackin-dev