draft-releaselisted
Install: claude install-skill kerilpatel/my-claude-plugin-marketplace
# Draft and Tag a Release
A changelog is not a commit log. `refactor(core): extract helper` matters to nobody outside the repository, and `fix: null check` tells a user nothing about whether they were affected.
This turns commits into **what changed for someone using the software**, picks the version that change actually justifies, and tags it.
## Step 0 — Gather what has landed
Run `"${CLAUDE_PLUGIN_ROOT}"/scripts/commits-since-tag.sh $SINCE` (pass `--since <ref>` through if given; otherwise it uses the most recent reachable tag). It reports the range, the commit count, commits grouped by conventional-commit type, an **ungrouped** section, declared breaking changes with their bodies, contributors, and where the project's version number lives.
Read the **ungrouped section** with particular care. Those are the commits whose subjects follow no convention, which makes them the ones most often missed in a changelog. Open the diff for any whose subject does not make its user impact clear.
Stop and report if:
- **There are no commits since the last tag.** Nothing to release.
- **The tree is dirty.** Say what is uncommitted. The tag would name a commit that is not what you tested. Do not offer to stash it — that is the user's call.
- **There are no tags at all.** Say so; this is a first release, and the version has to come from the user or from the version file rather than from a previous tag.
Also read `CHANGELOG.md` if it exists. **Its existing format is binding** — Keep a