Release Notes Generator
Generate comprehensive release notes in 3 formats from git commits.
Workflow
- **Analyze git history** since last release tag or specified version
- **Fetch PR details** (titles, descriptions, labels) via `gh api`
- **Categorize changes** into features, bug fixes, improvements, security, breaking changes
- **Generate 3 outputs**: CHANGELOG.md section (technical), PR release body (semi-technical), Slack message (user-friendly)
- **Transform language** from technical jargon to accessible messaging
- **Alert on migrations** if database migrations are detected
How to Use
Basic Usage
Generate release notes since last releaseCreate release notes for version 0.18.0With Specific Range
Generate release notes from v0.17.0 to HEADPreview Only
Preview release notes without writing filesOutput Formats
1. CHANGELOG.md Section
Technical format for developers:
## [0.18.0] - 2025-12-08
### Objective
[1-2 sentence summary]
### New Features
#### [Feature Name] (#PR)
- **Description**: ...
- **Impact**: ...
### Bug Fixes
- **[Module]**: Description (#issue, [error-tracker] ISSUE-XX)
### Technical Improvements
#### Performance / UI/UX / Architecture
- [Description]
### Database Migrations
[If applicable]
### Statistics
- PRs: X
- Features: Y
- Bugs: Z2. PR Release Body
Uses template from `.github/PULL_REQUEST_TEMPLATE/release.md`:
- Objective summary
- Features with specs links
- Bug fixes with error tracker references
- Improvements by category
- Migration instructions
- Deployment checklist
3. Slack Announcement
Product-focused format from `.github/COMMUNICATION_TEMPLATE/slack-release.md`:
- **PR link** included for traceability
- Non-technical language
- Focus on user impact (end-users, admins, stakeholders)
- Emojis for readability
- Statistics summary
Workflow Integration
This skill integrates with the release workflow:
1. Analyze commits: git log <last-tag>..HEAD
2. Determine version number (MAJOR.MINOR.PATCH)
3. Generate 3 outputs
4. Create PR develop -> main with "Release" label
5. Update CHANGELOG.md
6. After merge: create git tag
7. Generate Slack announcementTech-to-Product Transformation
The skill automatically transforms technical language:
| Technical | Product | |-----------|---------| | "N+1 query optimization with DataLoader" | "Faster list loading" | | "AI embeddings implementation with pgvector" | "New intelligent search" | | "Fix scope permissions in getPermissionScope()" | "Fixed access permissions bug" | | "Migration webpack -> Turbopack" | *Do not communicate* | | "React hooks refactoring" | *Do not communicate* | | "Fix N+1 in user loaders" | "Performance improvement" | | "Add retry logic for DB connection errors" | "Better connection stability" |
Commit Categories
Commits are categorized by conventional commit prefix:
| Prefix | Category | Include in Slack? | |--------|----------|-------------------| | `feat:` | New Features | Yes | | `fix:` | Bug Fixes | Yes (if user-facing) | | `perf:` | Performance | Yes (simplified) | | `security:` | Security | Yes | | `refactor:` | Architecture | No | | `chore:` | Maintenance | No | | `docs:` | Documentation | No | | `test:` | Tests | No | | `style:` | Style | No |
Console Output Format
When generating release notes, ALWAYS display a clear summary in the console with:
Migration Alert (CRITICAL)
If migrations are detected, display prominently:
╔══════════════════════════════════════════════════════════════
<!-- truncated -->
