Skip to main content
commandsSource-backedReview first Safety Privacy

/draft-release-notes - Release Notes Drafting Command for Claude Code

Slash command that drafts release notes from the Conventional Commits made since the last release tag. It reads the git log, groups changes into Keep a Changelog sections (Added, Changed, Fixed, and more), recommends the Semantic Versioning bump, and produces human-readable notes ready to paste into a CHANGELOG or GitHub release.

by jony376·added 2026-06-04·
Claude Code
HarnessClaude Code
Invocation:/draft-release-notes [from-ref]
Review first review before installing

Open the source and read safety notes before installing.

Safety notes

  • Read-only with respect to your repository; it only reads git history (tags and commit log) and never creates tags, commits, branches, or release artifacts.
  • It proposes a version bump and notes for you to review; it does not publish a release or push anything.

Privacy notes

  • Commit subjects, bodies, and author names from the selected range are included in the model's context to draft the notes.
  • If commit messages contain internal identifiers, customer names, or unreleased details, those become part of the prompt; review the range before running on a private history.
  • The command writes nothing to disk on its own.

Schema details

Install type
cli
Troubleshooting
No
Source repository stats
Scope
Source repo
Runtime and command metadata
Command syntax
/draft-release-notes [from-ref]
Full copyable content
/draft-release-notes [from-ref]

About this resource

The /draft-release-notes command turns the Conventional Commits made since your last release into clean, grouped release notes following Keep a Changelog, plus a recommended Semantic Versioning bump.

Usage

/draft-release-notes [from-ref]
  • With from-ref (a tag or commit): draft notes for everything after that ref.
  • Without an argument: use the most recent tag as the starting point.

What it does

When you invoke this command, follow these steps:

  1. Find the range. If a from-ref was given, use it. Otherwise resolve the latest tag with git describe --tags --abbrev=0 and fall back to the repository root if there are no tags.
  2. Read the commits. Run git log <from-ref>..HEAD --no-merges --pretty=format:%s%x00%b%x00%an to collect each commit's subject, body, and author.
  3. Parse Conventional Commits. Classify each subject by its type(scope): prefix. Map types to Keep a Changelog groups: featAdded, fixFixed, perf/refactorChanged, deprecateDeprecated, removals → Removed, security fixes → Security. Skip pure docs, style, test, chore, ci, and build commits unless they are user-visible.
  4. Detect breaking changes. Treat any type!: marker or BREAKING CHANGE: footer as breaking and list it under a prominent heading.
  5. Recommend the bump. Any breaking change → major; otherwise any featminor; otherwise patch.
  6. Write for humans. Rewrite terse commit subjects into clear, impact-focused bullet points; collapse duplicates; link issue/PR numbers when present.

Output format

## [Unreleased] - proposed vX.Y.Z (<bump> bump)

### Added
- ...

### Fixed
- ...

### Changed
- ...

### Breaking changes
- ...

Requirements

  • git available, run from inside the repository.
  • A commit history that follows Conventional Commits gives the best grouping; non-conforming commits are listed under a generic "Other" section.

Safety notes

Read-only: the command only reads git history. It does not create tags, commits, or releases, and it does not push — you review and apply the draft yourself.

Privacy notes

Commit subjects, bodies, and author names from the selected range are included in the model's context to draft the notes. If your history contains internal identifiers or unreleased details, review the range before running. Nothing is written to disk by the command.

Source and references

#release#changelog#conventional-commits#semver#automation

Source citations

Signals

Loading live community signals…

More like this, weekly

A short, calm digest of reviewed Claude resources. Unsubscribe any time.