Release on v*.*.* tag, notes from CHANGELOG - #36
Merged
Conversation
Modelled on python-sdk's release.yml, stripped to what a markdown plugin needs: tag trigger, checkout, notes extraction, publish. Dropped GraalVM, jq install (preinstalled on runners), uv, build, dist upload, PyPI publish, repo and org Discussions, docs dispatch. Nothing is built here, so there is no artifact to attach. Adds one guard the template does not have: plugin.json's version must equal the tag. The marketplace resolves this plugin straight from the repo, so the manifest version IS what users install -- a tag disagreeing with it ships a plugin lying about its own version and silently mismatches the installed_plugins.json pin. Same class of failure as python-sdk's jarless-wheel check. Blank release bodies still refuse to publish, inherited from the template. Also drops the sed/tac blank-edge trim (cosmetic, and tac is not portable) and dates the 0.4.0 CHANGELOG heading, which said "unreleased" and would have shipped that word in the release notes. Both guards dry-run against the real files: notes extract for 0.4.0, empty for a missing version, manifest matches.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Releases the plugin on a
v*.*.*tag push, with notes taken fromCHANGELOG.md.Motivation and Context
cldk-devtoolshas no release automation and no tags pastv0.2.0, whilemainalready carries0.4.0inplugin.json. The marketplace resolves the plugin straight from this repo, so a release is the only signal users get that the conventions changed — 0.3.0 shipped a behavioural breaking change with no tag, no release, and (until recently) no changelog.Modelled on
python-sdk/.github/workflows/release.yml, stripped to what a markdown plugin needs.Kept: tag trigger, CHANGELOG notes extraction, refusal to publish a blank body.
Dropped: GraalVM,
jqinstall (preinstalled on runners), uv, build,dist/*upload, PyPI publish, repo Discussion, org announcement +ORG_DISCUSSIONS_TOKEN, docs dispatch, and thesed/tacblank-edge trim. Nothing is built here, so there is no artifact to attach.Added one guard the template lacks:
plugin.json's version must equal the tag. The manifest version is what installs, so a tag disagreeing with it ships a plugin lying about its own version and silently mismatches theinstalled_plugins.jsonpin. Same class as python-sdk's jarless-wheel check.Emoji live in
CHANGELOG.mdheadings (✨ Added,⚠️ Changed,🐛 Fixed,🗑️ Removed,🔒 Security) rather than in a transform step — the workflow copies the section verbatim, so no generator code is needed.How Has This Been Tested?
Both guards dry-run locally against the real files:
0.4.0→ returns the section, emoji intact9.9.9→ empty, which is the fail pathjq -r .version .claude-plugin/plugin.json→0.4.0, matches av0.4.0tagThe workflow itself has not run — that requires pushing a tag, which is the next step rather than part of this PR.
tacwas removed partly because it is absent on macOS and blocked local verification.Breaking Changes
No. Additive workflow plus CHANGELOG formatting. Also dates the
0.4.0heading, which readunreleasedand would have shipped that word in the release body.Types of changes
Checklist
check-readme-dispatcher-sync.shgreenexit 1with::error::Additional context
This commit was originally pushed to
feat/planning-modeafter #35 had already merged, so it never landed. Recovered onto a fresh branch offmain; the diff is 2 files.Once merged, tagging
v0.4.0cuts the first real release and exercises both guards.No tracking issue — same gap noted in #35, and filing one retroactively is the pattern the plugin's own red flags call out.