- Home
- Skills
- Technical Documentation
- Release Notes: User-Facing Changelog and SemVer Bump
Works with the AI Agents you already use
Release Notes: User-Facing Changelog and SemVer Bump
Draft release notes for users and a suggested next version from a commit range you export; each line keeps its commit hash, and a checker flags lines that point to no commit.
$5
Release Notes: User-Facing Changelog and SemVer Bump
Example session with this skill installed
Write release notes for the commits since v1.4.2 that I exported to commits.txt, suggest the next version, and check my edited notes before I publish them.
- Read your context and instructions
- Compiled the release notes
Summary
The agent classified four commits, suggested 2.0.0 because one commit is a breaking change, drafted a changelog skeleton with the commit hash on each line, and checked a hand-edited version of the notes. The check found three problems to fix before publishing.
$ python scripts/semver_bump.py 1.4.2 commits.txt
3f2a9c1 minor feat -> MINOR (source: F2 FAQ) :: feat(parser): add support for TOML config files
a41c7e2 patch fix -> PATCH (source: F2 FAQ) :: fix: handle an empty input file without a stack trace
b7d2e4f major breaking change -> MAJOR (source: F2 FAQ) :: feat(api)!: rename the /v1/items endpoint to /v2/items
e5a7c9e none unclassified -> no rule; read it yourself :: Fix typo in README
note: 1 unclassified commit(s); read them and decide.
SEMVER current=1.4.2 next=2.0.0 level=major [review needed]
$ python scripts/draft_notes.py commits.txt --release 2.0.0 --date 2026-10-25 --out draft.md
### Added
- parser: add support for TOML config files (3f2a9c1)
### Changed
- **BREAKING:** api: rename the /v1/items endpoint to /v2/items; footer: clients must call /v2/items. (b7d2e4f)
$ python scripts/notes_check.py notes.md commits.txt # hand-edited notes with a bad line
PASS line 4 [Fixed]: traced to 1 commit(s)
FIX line 5 [Fixed]: promise word 'guaranteed' (source: heuristic word list) :: [Added]: guaranteed instant startup in every cloud (deadbee)
FIX line 5 [Fixed]: hash deadbee is not in the commit file :: [Added]: guaranteed instant startup in every cloud (deadbee)
FIX breaking b7d2e4f: not on a line outside Omitted that contains the word 'breaking' (source: heuristic) :: feat(api)!: rename the /v1/items endpoint to /v2/items
| Finding | What it means | What to do |
|---|---|---|
| Next version 2.0.0, review needed | One breaking change, one commit without a type | Read the untyped commit and confirm the version |
| Line 5: promise word | The line promises more than a commit can show | Rewrite it in plain terms |
| Line 5: unknown hash | The line points to no commit in the range | Remove it or point it to the right commit |
| Breaking change missing | The rename is not marked as breaking in the notes | Add a line that says it is breaking |
Next steps
- Rewrite the draft for users, keeping the hash in parentheses on each line.
- Fix the three findings and run the checker again until it reports no FIX.
- Read the register:
tracedmeans the line points to a commit, not that the text is true.
Connects securely to your tools. The creator never sees your data.
About this skill
Use when you need release notes or a changelog entry for a range of commits, when you want a suggested next version number with the rule behind it, or when you want finished notes checked against the commits they came from.
The skill classifies each commit by its Conventional Commits type and suggests the next SemVer version from the Conventional Commits FAQ rules (breaking change to MAJOR, feat to MINOR, fix to PATCH; in 0.y.z a breaking change suggests MINOR, a heuristic). It writes a Keep a Changelog skeleton with the commit hash on every line for you to rewrite for users.
A checker then reads the newest section of your notes that has entries (an empty Unreleased section is skipped) and reports lines with no hash, hashes outside the range, breaking changes missing from the notes, feat and fix commits left out without a reason, and words from an editable promise list. It prints a register with each notes line next to the commit subject it names, marked traced: tracing shows where a line came from, not that its text is true.
Commits without a Conventional Commits type are counted as unclassified and never guessed. Rules that do not come from the cited specs are labelled as heuristics.
Do not use when you need commit messages written, a pull request split, the code diff analysed, or a release published.
Requires: Python 3.9+ (standard library only). You export the commits yourself with one git command given in SKILL.md; the scripts never run git and make no network calls.
Independent: Not affiliated with or endorsed by Anthropic, OpenAI, Anysphere (Cursor) or Google. Product names are used only to describe compatibility.
The version suggestion follows commit types, not the code, so it can miss an incompatible change committed as a fix. The checker traces notes lines to commits; it does not show that the notes are complete or true. Deprecated, Removed and Security entries cannot be derived from commit types. Several rules are heuristics, not from the cited specs (listed in SKILL.md), including the 0.y.z rule, the revert and merge rules, the 7-character minimum for a hash and the promise word list. No GitHub or other hosting integration; nothing is published.
How to use
- 1
Connect your agent to the Agensi MCP
Copy the prompt and paste it into Claude, ChatGPT, Cursor or any agent that supports MCP. It sets up the connection for you. Manual setup
- 2
Sign in to Agensi
Your agent shows a sign-in link. Sign in and click Allow.
- 3
Ask for what you need
Your agent loads this skill and uses it on your task. It always asks before any payment.
Reviews
No reviews yet
Be one of the first to try it. Every listed skill goes through the trust checks below.
Security scanned
Checked by our 8-point scan before listing
Fresh listing
Recently published to Agensi
Money-back guarantee
Doesn't do what its page promises? You get your money back.
Trust & safety
Security scan
Security scan passed 5 days ago
Requires