Generate polished release notes and changelogs from git history. Analyzes commits between tags/refs, categorizes changes (features, fixes, breaking changes,...
--- name: git-release-notes description: Generate polished release notes and changelogs from git history. Analyzes commits between tags/refs, categorizes changes (features, fixes, breaking changes, etc.), and produces formatted release notes in multiple styles. Use when asked to generate release notes, create a changelog, summarize changes between versions, write release documentation, or prepare a GitHub release. Triggers on "release notes", "changelog", "what changed since", "summarize commits", "version bump notes", "prepare release". --- # Git Release Notes Generate formatted release notes from git commit history. Analyzes commits between any two refs (tags, branches, SHAs) and produces categorized, human-readable release notes. ## Quick Usage ### Generate Notes Between Tags ```bash scripts/gather_commits.sh v1.2.0 v1.3.0 ``` Then format the JSON output into release notes using the formatting rules below. ### Generate Notes Since Last Tag ```bash scripts/gather_commits.sh $(git describe --tags --abbrev=0) HEAD ``` ### Generate Notes Between Branches ```bash scripts/gather_commits.sh main release/2.0 ``` ## Workflow ### 1. Gather Commits Run `scripts/gather_commits.sh <from_ref> <to_ref>` to get structured commit data (JSON array). If no refs provided, ask user for: - The starting point (tag, branch, or SHA) - The ending point (default: HEAD) ### 2. Categorize Commits Group commits by type using conventional commit prefixes and content analysis: | Category | Prefixes / Signals | Emoji | |----------|-------------------|-------| | Breaking Changes | `BREAKING CHANGE:`, `!:` in subject | ๐ฅ | | Features | `feat:`, `feature:`, `add:` | โจ | | Bug Fixes | `fix:`, `bugfix:`, `hotfix:` | ๐ | | Performance | `perf:` | โก | | Documentation | `docs:`, `doc:` | ๐ | | Refactoring | `refactor:` | โป๏ธ | | Testing | `test:`, `tests:` | ๐งช | | CI/Build | `ci:`, `build:`, `chore:` | ๐ง | | Dependencies | `deps:`, `dep:`, "bump", "upgrade" in subject | ๐ฆ | | Other | Anything else | ๐ | If commits don't follow conventional commits, analyze the commit message content to infer categories. ### 3. Format Release Notes Default format (GitHub Release style): ```markdown # v1.3.0 > Released on 2026-03-26 | 47 commits | 5 contributors ## ๐ฅ Breaking Changes - Remove deprecated `legacy_auth` endpoint (#234) ## โจ Features - Add dark mode support (#220) - Implement batch export for CSV/JSON (#215) ## ๐ Bug Fixes - Fix race condition in queue processor (#228) - Correct timezone handling for UTC offset (#225) ## โก Performance - Optimize database queries for dashboard load (#222) ## ๐ฆ Dependencies - Bump express from 4.18 to 4.21 ## ๐ง Other - Update CI pipeline for Node 22 **Full Changelog:** v1.2.0...v1.3.0 ``` ### 4. Alternative Formats **Compact (for small releases):** ``` v1.3.0 โ Dark mode, batch export, 5 bug fixes. Breaking: removed legacy_auth. ``` **Keep a Changelog (keepachangelog.com):** ```markdown ## [1.3.0] - 2026-03-26 ### Added - Dark mode support ### Changed - Optimized dashboard queries ### Removed - Deprecated legacy_auth endpoint ### Fixed - Race condition in queue processor ``` **Slack/Discord announcement:** ``` ๐ **v1.3.0 is out!** Highlights: โ Dark mode support โ Batch CSV/JSON export โ 5 bug fixes โ ๏ธ Breaking: `legacy_auth` endpoint removed โ migrate to `/v2/auth` ``` ## Customization Users can specify: - **Format** โ github (default), compact, keepachangelog, slack - **Include/exclude categories** โ "skip docs and chore commits" - **Group by** โ category (default), author, scope - **PR links** โ auto-detect GitHub PR numbers (#NNN) - **Contributors** โ list contributors at the bottom - **Scope filter** โ only include commits touching certain paths ## Scripts - `scripts/gather_commits.sh <from> <to>` โ Outputs JSON array of commits with hash, author, date, subject, body
don't have the plugin yet? install it then click "run inline in claude" again.