--- name: release-notes description: Generate release notes from git commits and GitHub PRs/issues. Use when asked to "create release notes", "generate changelog", "prepare release", "what changed since last release", or need to document changes for a new version. Analyzes commit history, merged PRs, and closed issues to produce GitHub Releases formatted notes. --- # Release Notes Generator Generate comprehensive release notes by analyzing git history and GitHub activity. ## Workflow ### 1. Determine Version Range ```bash # List recent tags git tag --sort=-creatordate | head -10 # Find commits since last tag git log $(git describe --tags --abbrev=0)..HEAD --oneline ``` Ask user for: - **New version**: Version number for this release (e.g., v1.2.0) - **Base reference**: Previous tag or commit to compare from (default: latest tag) ### 2. Gather Changes Run in parallel: ```bash # Get commits since last release git log ..HEAD --pretty=format:"%h %s" --no-merges # Get merge commits (PRs) git log ..HEAD --merges --pretty=format:"%h %s" ``` ```bash # Get merged PRs (if GitHub repo) gh pr list --state merged --base main --json number,title,labels,author --limit 100 # Get closed issues linked to PRs gh issue list --state closed --json number,title,labels --limit 100 ``` ### 3. Categorize Changes Group changes by type based on commit prefixes and PR labels: | Category | Commit Prefixes | PR Labels | |----------|-----------------|-----------| | **Features** | `feat:`, `feature:` | `enhancement`, `feature` | | **Bug Fixes** | `fix:`, `bugfix:` | `bug`, `fix` | | **Performance** | `perf:` | `performance` | | **Documentation** | `docs:` | `documentation` | | **Breaking Changes** | `BREAKING:`, `!:` | `breaking-change` | | **Dependencies** | `deps:`, `chore(deps):` | `dependencies` | | **Other** | `chore:`, `refactor:`, `style:`, `test:` | - | ### 4. Generate Release Notes Use this format for GitHub Releases: ```markdown ## What's Changed ### Breaking Changes - Description of breaking change (#PR) ### Features - Add new feature X (#123) @author - Implement Y functionality (#124) @author ### Bug Fixes - Fix issue with Z (#125) @author ### Performance - Improve loading speed by 50% (#126) @author ### Documentation - Update README with new examples (#127) @author ### Other Changes - Refactor internal APIs (#128) @author ## New Contributors - @username made their first contribution in #123 **Full Changelog**: https://github.com/owner/repo/compare/v1.0.0...v1.1.0 ``` ### 5. Output Save to `RELEASE_NOTES.md` in project root. Optionally create GitHub release: ```bash gh release create --title "" --notes-file RELEASE_NOTES.md ``` ## Tips - Omit empty sections - Link PR numbers: `(#123)` auto-links on GitHub - Credit authors: `@username` - Highlight breaking changes at the top - Include upgrade instructions for breaking changes