| name | jewel-release-helper |
| description | Assist with preparing a Jewel release. Covers version bumps, API version code generation, running checks (Gradle, detekt, Metalava), extracting and writing release notes, cherry-picking to release branches, comparing branches for missing commits, validating Maven artifacts, and tagging. Use when the user is preparing a new Jewel version release. |
| allowed-tools | ["Bash","Read","Glob","Grep","AskUserQuestion"] |
Jewel Release Helper
This skill is an interactive checklist designed to automate the high-level tasks of a Jewel release. Work through one step at a time.
After completing each step, show a progress summary and ask the user to confirm before moving to the next. Never skip ahead.
Only someone at JetBrains with monorepo access can complete the full
release, but this skill helps with every step possible in the community
repository.
Check the platform/jewel/docs folder for detailed guides:
releasing-guide.md — full release process, cherry-pick workflow, publishing validation
api-compatibility.md — Metalava API dump validation, update workflow, compatibility-preserving patterns
pr-guide.md — PR conventions, commit message format, release notes template
This skill is meant to guide the user through the release process and automate the grunt work, rather than repeating every nuance of the
documentation. If this skill's steps differ from the docs', use the docs' — that's the canonical source.
Important: Do NOT add Co-Authored-By trailers or any AI attribution
to commits, tags, or release notes.
How to use this checklist
- Present each step as
[ ] Step name when pending, [x] Step name when done.
- At each step: explain what will happen, run the commands, report the result, and ask for confirmation before marking complete.
- If a step requires manual action (e.g., IDE smoke testing), ask the user to confirm they've done it.
- Keep output concise. Guide the user through the process.
0. Pre-flight checks
Ask the user:
- What is the new version to release?
- What are the target release branches (e.g.,
253, 261)?
- What is the YouTrack issue for the release prep (e.g.,
JEWEL-1250)?
Wait for user confirmation before proceeding.
1. Verify master is ready for release
Wait for user confirmation.
2. Prepare release metadata on master
Wait for user to confirm the commit is merged to master before proceeding.
3. Cherry-pick and cut the release
Follow the cutoff checklist in releasing-guide.md for the detailed procedure.
Repeat for each target release branch (ask user which branch to do first):
Wait for user confirmation before moving to the next branch.
Note: this is the last step that someone without access to the internal JetBrains monorepo can help with. The following steps must be
performed by a JetBrains FTE. Confirm with the user if they are.
4. Prepare the next development cycle
See "After cutoff" in releasing-guide.md for context.
Wait for user to confirm MRs are merged.
5. Publish and tag
Once the merge requests are approved and merged:
Release complete! 🎉
Print the final checklist showing all steps marked [x] and summarize:
- Version released
- Branches updated
- Tags created
- Any follow-up items
Quick reference: available scripts
| Script | Purpose |
|---|
scripts/jewel-version-updater.main.kts | Regenerate JewelApiVersion.kt from gradle.properties |
scripts/extract-release-notes.main.kts | Extract release notes from merged PRs since a date |
scripts/metalava-signatures.main.kts validate | Validate the current Jewel API dumps |
scripts/metalava-signatures.main.kts update | Generate the next API dump baseline |
scripts/annotate-api-dump-changes.main.kts | Annotate breaking API changes in PRs (CI use) |
Quick reference: release branch patterns
Cherry-picked commits on release branches (e.g., 253, 261) have the
same [JEWEL-xxx] subject as master, sometimes with a
(cherry picked from commit <hash>) trailer and always a
GitOrigin-RevId trailer added by the mirror bot.
The compare-branches.main.kts script normalizes these cherry-pick
prefixes when comparing, so identical changes are correctly matched.
Quick reference: release notes format
## v<major>.<minor> (<yyyy-mm-dd>)
| Min supported IJP versions | Compose Multiplatform version |
|----------------------------|-------------------------------|
| <versions> | <CMP version> |
### ⚠️ Important Changes
* **JEWEL-xxx** Description ([#PR](url))
### New features
* **JEWEL-xxx** Description ([#PR](url))
### Bug fixes
* **JEWEL-xxx** Description ([#PR](url))
### Deprecated API
* **JEWEL-xxx** Description ([#PR](url))