Write Release Notes
Instructions
Generate professional release notes and changelog entries for software releases. Analyze project changes, git history, and version information to create comprehensive release documentation.
Step 1: Gather Release Information
- •
Determine version information:
- •Read
package.json,pyproject.toml,Cargo.toml, or other version files - •Check for version bumps or new version numbers
- •Identify if this is a major, minor, or patch release (semantic versioning)
- •Use
bash_commandto check version files:cat package.json | grep version
- •Read
- •
Analyze git history:
- •Use
bash_commandto get recent commits:git log --oneline --since="2 weeks ago"orgit log --oneline -20 - •Use
bash_commandto get diff stats:git diff --stat HEAD~10..HEAD - •Use
bash_commandto compare versions:git log v1.0.0..HEAD --oneline(if previous tag exists) - •Look for conventional commit messages (feat:, fix:, docs:, etc.)
- •Use
- •
Check for changelog files:
- •Read existing
CHANGELOG.md,CHANGES.md, orRELEASE_NOTES.mdif they exist - •Maintain consistency with existing format
- •Check for
CHANGELOGorHISTORYfiles in project root
- •Read existing
- •
Identify project type:
- •Check for package managers:
package.json(npm),pyproject.toml(Python),Cargo.toml(Rust) - •This helps determine version format and release conventions
- •Check for package managers:
Step 2: Categorize Changes
Organize changes into standard release note categories:
- •
Added (Features):
- •New features, functionality, or capabilities
- •Look for:
feat:, "add", "new", "introduce" in commit messages - •Major new components or modules
- •
Changed (Improvements):
- •Improvements to existing features
- •API changes (non-breaking)
- •Performance improvements
- •Look for: "improve", "enhance", "update", "refactor" in commits
- •
Fixed (Bug Fixes):
- •Bug fixes and issue resolutions
- •Look for:
fix:, "bug", "issue", "correct" in commit messages - •Security fixes
- •
Deprecated:
- •Features marked for removal
- •Look for: "deprecate", "deprecated" in commits or code comments
- •
Removed:
- •Features or APIs removed
- •Look for: "remove", "delete", "drop" in commits
- •
Security:
- •Security vulnerabilities fixed
- •Look for: "security", "CVE", "vulnerability" in commits
Step 3: Analyze Commits and Changes
- •
Parse commit messages:
- •Use
bash_command:git log --pretty=format:"%h - %s (%an, %ar)" -20 - •Group by type using conventional commits or patterns
- •Extract meaningful descriptions
- •Use
- •
Review code changes:
- •Use
bash_command:git diff --stat HEAD~10..HEADto see file changes - •Use
bash_command:git log --name-status --pretty=format:"" HEAD~10..HEADfor changed files - •Look at PR titles or commit descriptions for context
- •Use
- •
Identify breaking changes:
- •Look for:
BREAKING CHANGE:, "breaking", "major", "incompatible" in commits - •Check API changes in code
- •Review migration guides if they exist
- •Look for:
Step 4: Generate Release Notes Structure
Create a well-formatted release notes document with this structure:
# Release Notes - Version X.Y.Z **Release Date**: [Current date] **Full Changelog**: [Link to full changelog if applicable] ## Summary Brief 2-3 sentence summary of this release highlighting the most important changes. ## 🎉 Added - [Feature description with context] - [Another feature] ## ✨ Changed - [Improvement description] - [API change with migration notes if applicable] ## 🐛 Fixed - [Bug fix description with issue reference if available] - [Another fix] ## 🔒 Security - [Security fix description] ## ⚠️ Breaking Changes - [Breaking change description] - [Migration guide reference or steps] ## 📚 Documentation - [Documentation improvements] ## ⚙️ Internal - [Internal improvements, refactoring, build changes] ## Contributors Thank you to all contributors: [List of contributors if available from git log] ## Upgrade Instructions [If applicable, provide upgrade/installation instructions]
Step 5: Write Professional Release Notes
- •
Use clear, user-facing language:
- •Avoid technical jargon where possible
- •Explain what changed and why it matters
- •Include examples or use cases for major features
- •
Be specific and actionable:
- •"Fixed memory leak in data processing" not just "Fixed bugs"
- •"Added support for Python 3.12" not just "Updated Python support"
- •Include issue numbers or PR references if available
- •
Group related changes:
- •Combine similar fixes or features
- •Use sub-bullets for detailed changes
- •Keep each category organized
- •
Include migration notes:
- •For breaking changes, provide clear upgrade paths
- •Reference migration guides if they exist
- •Show before/after examples for API changes
- •
Add context:
- •Link to relevant documentation
- •Reference related issues or PRs
- •Include contributor credits if appropriate
Step 6: Format and Style
- •
Use markdown formatting:
- •Headers for version and date
- •Bullet points for lists
- •Code blocks for examples
- •Links for references
- •
Consistent style:
- •Start each item with a verb (Added, Fixed, Changed)
- •Use present tense or past tense consistently
- •Keep line lengths reasonable (80-100 chars)
- •
Emoji usage (optional but helpful):
- •🎉 for new features
- •✨ for improvements
- •🐛 for bug fixes
- •🔒 for security
- •⚠️ for breaking changes
- •📚 for documentation
- •
Version format:
- •Follow semantic versioning:
MAJOR.MINOR.PATCH - •Use consistent format:
v1.2.3or1.2.3 - •Match project's existing versioning style
- •Follow semantic versioning:
Step 7: Handle Different Scenarios
First Release:
- •Focus on initial features and setup
- •Explain what the project does
- •Include installation/setup instructions
Patch Release:
- •Focus on bug fixes
- •May not need full structure
- •Quick summary format
Major Release:
- •Include migration guide
- •Highlight breaking changes prominently
- •Provide upgrade checklist
No Git History:
- •Use file changes detected via
list_directoryandread_file - •Analyze code modifications
- •Create notes from current state vs expected state
Step 8: Verify and Complete
- •
Check completeness:
- •All significant changes included
- •No placeholder text remaining
- •Version number is correct
- •Date is current
- •
Validate format:
- •Markdown renders correctly
- •Links work (if any)
- •Consistent style throughout
- •
Save appropriately:
- •Save as
RELEASE_NOTES.mdorCHANGELOG.md - •Or append to existing
CHANGELOG.md - •Follow project conventions
- •Save as
Examples
Example 1: Semantic Versioning Project
User: "Write release notes for version 2.1.0"
- •Check
package.jsonorpyproject.tomlfor version - •Analyze git commits since last tag
- •Categorize into Added/Changed/Fixed
- •Generate formatted release notes
Example 2: Update Existing Changelog
User: "Update the changelog"
- •Read existing
CHANGELOG.md - •Get recent commits since last entry
- •Add new entry at top
- •Maintain existing format style
Example 3: First Release
User: "Create release notes for the initial release"
- •Analyze current project state
- •List initial features from codebase
- •Create comprehensive first-release notes
- •Include installation instructions
Best Practices
- •Be accurate: Only include changes that actually happened
- •Be user-focused: Write for end users, not just developers
- •Be complete: Include all significant changes
- •Be concise: Don't list every single commit, group intelligently
- •Be helpful: Provide context and upgrade instructions
- •Follow conventions: Match existing project style and format
Tools to Use
- •
bash_command: Run git commands to analyze history - •
read_file: Read version files and existing changelogs - •
list_directory: Explore project structure - •
grep_search: Find version numbers or change indicators in files
Notes
- •If git history is not available, focus on analyzing current code state
- •Respect existing changelog format if one exists
- •When unsure about a change, err on the side of inclusion
- •Major releases should always include migration guides for breaking changes
- •Security fixes should be clearly highlighted