.kilo/skills/release-jetbrains/SKILL.md
Use this skill when releasing the Kilo JetBrains plugin.
This skill drives the existing JetBrains release workflows. It must not move, delete, or recreate JetBrains release tags. It must always confirm the resolved version with the user before dispatching the prepare workflow because the prepare workflow creates an immutable jetbrains/v<version> tag.
gh must be authenticated for Kilo-Org/kilocode with permission to dispatch workflows, read PRs, and write contents. Merge permission is only required if the user asks the skill to merge the release PR automatically.gh auth status. For GitHub CLI OAuth, refresh common release scopes with gh auth refresh -s repo -s workflow; repo covers private-repo contents and PR operations, and workflow allows workflow dispatch. If using a fine-grained token instead, grant repository permissions for Actions read/write, Contents read/write, and Pull requests read/write. Merging still requires normal repository collaborator permission or a token/user allowed by branch protection.packages/kilo-jetbrains/RELEASING.md for manual recovery rules.Resolve the user's version request:
bun .kilo/skills/release-jetbrains/script/resolve-version.ts --spec "next rc"
Accepted specs:
| Spec | Meaning |
|---|---|
next rc | If the latest JetBrains tag is an RC, increment its rc.n; otherwise start the next patch RC at rc.1. |
next stable | If the latest JetBrains tag is an RC, use its base version; otherwise use the next patch stable. |
x.y.z-rc.n | Explicit RC release. |
x.y.z | Explicit stable release. |
Show the resolved version, kind, and default fromTagDefault to the user and ask for confirmation before continuing.
After confirmation, dispatch and watch the prepare workflow:
bun .kilo/skills/release-jetbrains/script/dispatch-prepare.ts --kind rc --version 7.0.1-rc.7
Pass a generous Bash timeout, such as 1800000 ms, because the script blocks on gh run watch --exit-status. If the shell times out but the workflow is still running, re-attach with:
bun .kilo/skills/release-jetbrains/script/dispatch-prepare.ts --kind rc --version 7.0.1-rc.7 --run-id <run-id>
The script prints prNumber, prUrl, runUrl, and branch on success. Immediately show the prUrl to the user so they can open the release PR without asking for it later.
Create a changelog draft after the prepare PR exists:
gh pr view <pr> --json body.JetBrains-From-Tag, JetBrains-Tag, and ## Generated Notes.git fetch origin refs/tags/<from-tag>:refs/tags/<from-tag> refs/tags/<tag>:refs/tags/<tag>
git log --oneline <from-tag>..<tag> -- packages/opencode packages/kilo-jetbrains
Keep JetBrains and CLI/runtime changes. Drop unrelated VS Code, docs, gateway, telemetry, i18n, desktop, and webview-only changes unless they affect the CLI bundled into the JetBrains plugin.
Rewrite terse commit or PR titles into user-facing bullets grouped under ### Added, ### Fixed, and ### Changed. Keep the exact generated header format:
## [<version>] - <date>
Write the editable draft to:
packages/kilo-jetbrains/build/release/<version>-changelog.md
Include source context in an HTML comment so it is easy to edit but not shipped:
<!-- CONTEXT - deleted automatically on commit. Source PRs in range:
- #1234 feat(jetbrains): ... https://github.com/Kilo-Org/kilocode/pull/1234
- #1235 fix(cli): ... https://github.com/Kilo-Org/kilocode/pull/1235
-->
Ask the user to edit the file and confirm when done.
After the user confirms the draft is ready, strip the <!-- CONTEXT ... --> block into a temporary cleaned file, then commit the cleaned section to the release branch:
bun .kilo/skills/release-jetbrains/script/update-changelog.ts --version 7.0.1-rc.7 --file /path/to/clean-section.md
The script updates packages/kilo-jetbrains/CHANGELOG.md on jetbrains/release/v<version> through the GitHub contents API and commits with:
docs(jetbrains): edit changelog for v<version>
If update-changelog.ts fails with gh: Not Found (HTTP 404), verify the release branch and changelog path with:
gh api "repos/Kilo-Org/kilocode/contents/packages/kilo-jetbrains/CHANGELOG.md?ref=jetbrains/release/v<version>"
Then either fix and retry the helper, or perform the equivalent contents API update using ref in the query string.
After the changelog commit succeeds, show the release PR URL again and tell the user that the PR needs manual approval and merge before publishing can continue.
Ask the user to approve the release changelog and metadata. Before merging or publishing, verify the PR approval and required checks are green:
gh pr view <pr> --json mergeStateStatus,reviewDecision,statusCheckRollup
gh pr checks <pr> --watch --interval 10
Do not merge or publish while required checks are failing unless the user explicitly gives a maintainer override.
If a required check fails from an apparent flake, rerun only the failed jobs and wait for the run to finish:
gh run rerun <run-id> --failed
gh run watch <run-id> --exit-status
By default, have the user merge the release PR manually in GitHub, then watch the publish workflow:
bun .kilo/skills/release-jetbrains/script/watch-publish.ts --pr <number> --version 7.0.1-rc.7
Only merge automatically when the user explicitly asks for it and gh has merge permission:
bun .kilo/skills/release-jetbrains/script/watch-publish.ts --pr <number> --version 7.0.1-rc.7 --merge
Pass a generous Bash timeout, such as 1800000 ms. If the shell times out, re-attach with:
bun .kilo/skills/release-jetbrains/script/watch-publish.ts --pr <number> --version 7.0.1-rc.7 --run-id <run-id>
If watch-publish.ts --merge reports that the PR is already merged, or a transient GitHub API 5xx interrupts publish-run discovery, rerun without --merge:
bun .kilo/skills/release-jetbrains/script/watch-publish.ts --pr <number> --version <version>
Report the Marketplace channel and GitHub Release URL. RC versions publish to the eap channel; stable versions publish to the default Marketplace channel.
gh run rerun <run-id> --failed, then gh run watch <run-id> --exit-status before publishing.jetbrains/v<version> using the reviewed changelog.