Generate changelog
Generate a changelog by calling bin/generate-changelog, then filling in the Changes and Fixes sections based on
the commits in the generated changelog.
When to use
- The user asks for release notes or a changelog.
Procedure
- Run the script to generate the base changelog:
bin/generate-changelog <arguments>- Default to
bin/generate-changelog origin/production..masterwhen no arguments are provided.
- For each commit, read the full commit message, diff, and any linked pull requests or issues to fully understand the changes being made.
- For pull requests:
gh pr view <number> --json title,body - For issues:
gh issue view <number> --json title,body
- For pull requests:
- For each change, classify it as either a
Changeor aFixand summarize it in one bullet point.- If a change is not user-visible, exclude it from the changelog.
- Replace the bullets in the
ChangesandFixessections.- Keep the rest of the generated output structure unchanged (date, commit table, compare link).
- Return the completed changelog in the requested format.
Classification guidelines
- Put user-visible features, enhancements, changes, and improvements under
Changes. - Put bug fixes under
Fixes. - Keep each item to one bullet point.
- Do not include internal changes that are not user-visible, such as refactors, code cleanup, test case fixes, or dependency updates.
- Do not include fixes for bugs that were introduced during development and were never released to production.
- Read each commit along with any linked issues or pull requests to fully understand the changes.
Writing guidelines
- Use clear user-facing wording, not internal implementation details.
- If no user-visible items exist for a section, leave the section header and omit bullets for that section.
- Refer to https://danbooru.donmai.us/forum_topics/17913 for examples of well-written changelogs.
Stop conditions
Stop and ask the user before continuing if:
- The commit range is missing or invalid.
bin/generate-changelogfails.- GitHub authentication is required for
ghcommands and is not available. - A change is ambiguous and it's unclear whether it belongs in
Changes,Fixes, or should be excluded entirely.
Completion checks
- Script was run successfully.
ChangesandFixesbullets were replaced from commit-derived summaries.- Non-user-visible/internal-only work was excluded.