# jj-changelog > Proactively use to generate or update a CHANGELOG.md file from Jujutsu commit history. Use when you need to create release notes, document changes between tags, or update the project changelog. Emphasizes breaking changes, new features, and user-facing bug fixes. - Author: Hugues Demers - Repository: hdemers/dotfiles - Version: 20260121084214 - Stars: 3 - Forks: 0 - Last Updated: 2026-02-06 - Source: https://github.com/hdemers/dotfiles - Web: https://mule.run/skillshub/@@hdemers/dotfiles~jj-changelog:20260121084214 --- --- name: jj-changelog description: Proactively use to generate or update a CHANGELOG.md file from Jujutsu commit history. Use when you need to create release notes, document changes between tags, or update the project changelog. Emphasizes breaking changes, new features, and user-facing bug fixes. --- # Jujutsu Changelog Generator Generate or update a CHANGELOG.md file from Jujutsu history, emphasizing user-facing changes. ## Standard Operating Procedure 1. **Gather commit history** using the `changes.sh` script in this directory: ```bash ./changes.sh ``` 2. **Categorize each commit** based on its description using conventional commit prefixes or semantic analysis: | Category | Prefixes/Keywords | Emphasis | |----------|-------------------|----------| | Breaking Changes | `BREAKING:`, `!:`, `breaking change` | **HIGH** - Always at top | | New Features | `feat:`, `feature:`, `add:` | **HIGH** - User-facing | | Bug Fixes (User) | `fix:` affecting user-facing behavior | **MEDIUM** | | Performance | `perf:` | **MEDIUM** - If user-visible | | Bug Fixes (Internal) | `fix:` for internal/dev issues | LOW | | Refactoring | `refactor:` | LOW | | Documentation | `docs:` | LOW | | Tests | `test:` | LOW | | Chores | `chore:`, `ci:`, `build:` | LOW | 3. **Format the CHANGELOG.md** with this structure: ```markdown # Changelog All notable changes to this project are documented in this file. ## [version/tag] - YYYY-MM-DD ### Breaking Changes - **BREAKING**: Detailed/full description of breaking change - Detailed/full migration steps if applicable ### New Features - **Feature**: Description of new feature ### Bug Fixes - **Fix**: Description of user-facing bug fix ### Other Changes
Internal improvements and maintenance - Refactored X for better maintainability - Fixed internal issue with Y - Updated dependencies
``` 4. **Formatting rules**: - Breaking changes MUST be at the top of each version section - Breaking changes MUST include migration guidance when possible - User-facing features and fixes get full descriptions - Internal changes go in a collapsible `
` section - Empty sections should be omitted - Use imperative mood ("Add feature" not "Added feature") - Link to issues/PRs if referenced in commit messages 5. **Write the changelog**: - If CHANGELOG.md exists, update it (prepend new versions) - If it doesn't exist, create it - Preserve any manual edits in existing entries ## Example Output ```markdown # Changelog ## [v2.1.0] - 2024-12-01 ### Breaking Changes - **BREAKING**: Removed deprecated `legacy_api()` function - Migrate to `new_api()` which provides the same functionality ### New Features - **Feature**: Add support for custom output formats - **Feature**: New `--verbose` flag for detailed logging ### Bug Fixes - **Fix**: Resolve crash when input file is empty - **Fix**: Correct timezone handling in date parsing ### Other Changes
Internal improvements and maintenance - Refactored configuration loading for clarity - Fixed flaky test in CI pipeline - Updated pytest to 8.0
## [v2.0.0] - 2024-11-15 ... ``` ## Notes - If commits don't follow conventional commits, use best judgment to categorize - When uncertain if a change is user-facing, err on the side of including it in the main sections - Commits with empty descriptions should be skipped - Multiple commits can be consolidated if they address the same feature/fix