The user asks to release a new version of the gem.
Prerequisites
Everything meant for the release is already merged to main — merging
PRs is NOT part of releasing and needs its own explicit approval.
CI is green on the latest main push (the publish job is gated on
lint, the test matrix, and the mutation job).
Steps
On an up-to-date main: set the new version in
lib/markbridge/version.rb.
Run bundle install — this updates the markbridge entry in
Gemfile.lock.
Commit exactly those two files as DEV: Bump version to X.Y.Z
(see 8731ca4 for the shape).
Breaking changes? Write the ## X.Y.Z section in UPGRADING.md
before releasing — the notes script detects it and prepends a
warning callout linking to the file at the tag.
Preview the release notes before pushing:
bin/generate-release-notes — this is exactly what CI will publish.
Entries come from FEATURE:/FIX:/PERF: commit subjects (rebase
merges) or squash-body bullets; DEV:/DEPS: are dropped. Headline
prose (e.g. perf numbers) is a manual gh release edit after
publishing, when the release warrants it.
Push the commit to main — with approval; do not push on your own.
CI does the rest on that push: the publish job releases the gem to
RubyGems (discourse/publish-rubygems-action creates the vX.Y.Z tag)
and creates the GitHub release with the generated notes.
Verification
gh run watch (or gh run list --branch main) until the publish
job succeeds.
gh release view vX.Y.Z shows the notes; the gem appears on
rubygems.org shortly after.
Troubleshooting
Publish skipped, "Release vX.Y.Z already exists": the tag/release
was created earlier; bump again or delete the release deliberately.
Empty or missing notes: check the commit subjects in the release
range — only FEATURE:/FIX:/PERF: prefixes appear. Squash merges rely
on the repo's squash message setting (COMMIT_MESSAGES) putting
"* " bullets in the body.
Publish job did not run: one of lint/test/mutation failed on the
main push; fix that first — the gate is intentional.
1---2name: release3description: Release4---5# Release67## When to Activate89- The user asks to release a new version of the gem.1011## Prerequisites1213- Everything meant for the release is already merged to main — merging14 PRs is NOT part of releasing and needs its own explicit approval.15- CI is green on the latest main push (the publish job is gated on16 lint, the test matrix, and the mutation job).1718## Steps19201. On an up-to-date main: set the new version in21 `lib/markbridge/version.rb`.222. Run `bundle install` — this updates the `markbridge` entry in23 `Gemfile.lock`.243. Commit exactly those two files as `DEV: Bump version to X.Y.Z`25 (see 8731ca4 for the shape).264. Breaking changes? Write the `## X.Y.Z` section in UPGRADING.md27 *before* releasing — the notes script detects it and prepends a28 warning callout linking to the file at the tag.295. Preview the release notes before pushing:30 `bin/generate-release-notes` — this is exactly what CI will publish.31 Entries come from FEATURE:/FIX:/PERF: commit subjects (rebase32 merges) or squash-body bullets; DEV:/DEPS: are dropped. Headline33 prose (e.g. perf numbers) is a manual `gh release edit` after34 publishing, when the release warrants it.356. Push the commit to main — with approval; do not push on your own.3637CI does the rest on that push: the publish job releases the gem to38RubyGems (discourse/publish-rubygems-action creates the vX.Y.Z tag)39and creates the GitHub release with the generated notes.4041## Verification4243- `gh run watch` (or `gh run list --branch main`) until the publish44 job succeeds.45- `gh release view vX.Y.Z` shows the notes; the gem appears on46 rubygems.org shortly after.4748## Troubleshooting4950- Publish skipped, "Release vX.Y.Z already exists": the tag/release51 was created earlier; bump again or delete the release deliberately.52- Empty or missing notes: check the commit subjects in the release53 range — only FEATURE:/FIX:/PERF: prefixes appear. Squash merges rely54 on the repo's squash message setting (COMMIT_MESSAGES) putting55 "* <subject>" bullets in the body.56- Publish job did not run: one of lint/test/mutation failed on the57 main push; fix that first — the gate is intentional.
Run npx skillmds@latest add discourse/release in your terminal (requires Node.js), paste this page's agent-chat prompt into Claude, Cursor, or any MCP-connected agent, or download the SKILL.md file and copy it into your agent's skills directory.
Release It is listed under Coding & Dev Tools on SkillMD.
This skill has not completed SkillMD's automated safety review yet. SkillMD never runs a skill's scripts for you; review the SKILL.md before installing.
This skill is tagged as working with Claude Code, Claude.ai, OpenAI Codex. SKILL.md is an open format, so most agents that read a skills directory can load it too.
Yes. Installing skills from SkillMD is free, and the skill stays under its author's original license.
discourse (@discourse) published this skill. Their other Agent Skills are listed on their SkillMD profile.