Update Changelog
Update CHANGELOG.md with user-facing changes from recent development work.
Input
Optional: A date (YYYY-MM-DD) or commit hash to start from: $ARGUMENTS
If not provided, will look at commits since the last changelog update.
Process
Step 1: Read Current Changelog
bash
# Read the current changelog to understand the format and last update
cat CHANGELOG.md
Step 2: Gather Recent Changes
bash
# Get recent commits (adjust date/commit as needed)
# Default: commits from the last month
git log --oneline --since="1 month ago"
# For more detail on specific commits
git log --format="%h %s" --since="1 month ago"
# Or since a specific commit
git log --oneline <commit>..HEAD
Step 3: Filter for User-Facing Changes
Review commits and identify only those that affect end users:
Include:
- - New features users can see or use
- - Bug fixes that affected user experience
- - Performance improvements users would notice
Exclude (internal changes):
- - Code restructuring (unless it changes behavior)
- - Test additions/changes
- - Maintenance tasks
- - CI/CD changes
- - Documentation changes (unless user-facing help docs)
- Internal API changes
- Development tooling updates
Step 4: Group Changes by Category
Organize changes into user-friendly categories that match the project. Common categories include:
- New Features - Major new functionality
- Improvements - Enhancements to existing features
- Bug Fixes - Issues that affected users
- Performance - Speed and responsiveness improvements
- Security - Security-related improvements
Adapt categories to the project's domain (e.g., a SaaS app might use "Dashboard", "Billing", "Integrations").
Step 5: Write User-Friendly Descriptions
Transform technical commit messages into plain language:
Technical → User-Friendly Examples:
feat(auth): add OAuth2 login with Google
→ "Sign in with your Google account"
fix: file upload fails for large images
→ "Fixed uploading large images"
perf(frontend): optimize bundle size with code splitting
→ "Faster app loading times"
feat(dashboard): add export to CSV
→ "Export your data as a spreadsheet"
Writing Guidelines:
- Use active voice ("Create", "See", "Download")
- Focus on benefits, not implementation
- Avoid technical jargon (no "API", "endpoints", "cache", "SSR")
- Keep entries short (one line preferred)
- Use bold for feature names: Feature name - description
Step 6: Update CHANGELOG.md
Add a new section at the top (after the header), following this format:
markdown
## Month Year
### Category Name
- **Feature name** - Brief, user-friendly description
- **Another feature** - What users can now do
### Another Category
- **Fix description** - What was fixed and how it helps
Formatting Rules:
- Use for date headers
- Use for grouping related changes
- Use between months for visual separation
- Bold the feature/fix name, then describe it
- Keep the most recent changes at the top
Step 7: Review and Verify
Before committing, verify:
Example Transformation
Git log:
fb6c12f feat(auth): add OAuth2 login with Google (#42)
443f225 feat(dashboard): add CSV export for reports (#41)
0efa767 fix(api): handle rate limiting gracefully (#39)
d9a51f2 perf(frontend): lazy load dashboard charts (#38)
52105d7 fix(notifications): emails not sent for new signups (#37)
Changelog entry:
markdown
## January 2025
### New Features
- **Google sign-in** - Sign in with your Google account for faster access
- **Export reports** - Download your reports as CSV spreadsheets
### Bug Fixes
- **Notification emails** - New users now correctly receive welcome emails
### Performance
- **Faster dashboard** - Charts load more quickly on the dashboard
Important Guidelines
- User perspective: Always ask "Would a user notice or care about this?"
- No attribution: Don't include author names or PR numbers
- No time estimates: Don't say "now X% faster" unless you have real metrics
- Positive framing: "Fixed X" is better than "X was broken"
- Combine related changes: Multiple commits for one feature = one changelog entry
- Skip internal changes: Refactors, test updates, CI changes are not user-facing
Related Skills
Full workflow: →
→
→
→
forge-address-pr-feedback
→
Example Usage
/forge-update-changelog
/forge-update-changelog 2025-01-01
/forge-update-changelog abc123