with one click
generate-release-notes
// Generate and sort rippled release notes from GitHub commit history
// Generate and sort rippled release notes from GitHub commit history
| name | generate-release-notes |
| description | Generate and sort rippled release notes from GitHub commit history |
| argument-hint | --from <ref> --to <ref> [--date YYYY-MM-DD] [--output <path>] |
| allowed-tools | Bash, Read, Edit, Write, Grep, Glob |
| effort | max |
This skill generates a draft release notes blog post for a new rippled version, then sorts the entries into the correct subsections.
Run the Python script from the repo root. Pass through all arguments from $ARGUMENTS:
python3 tools/generate-release-notes.py $ARGUMENTS
If the user didn't provide --from or --to, ask them for the base and target refs (tags or branches).
The script will:
BuildInfo.cppfeatures.macro between refs to identify amendment changesRead the output file (path shown in script output). Note the Full Changelog structure:
Handle Amendments first, before sorting other entries.
3a. Process the auto-sorted Amendments subsection: The HTML comment contains three lists โ follow them exactly:
3b. Scan unsorted entries for unreleased amendment work: Search through ALL unsorted entries for titles, labels, descriptions, or files that reference amendments on the "Exclude" or "Other amendments not part of this release" lists. Remove entries that directly implement, enable, fix, or refactor these amendments. Keep entries that are general changes that merely reference the amendment as motivation โ if the code change is useful on its own regardless of whether the amendment ships, keep it.
3c. If you disagree with any amendment decisions, make a note to the user but do NOT deviate from the rules.
Move each remaining unsorted entry into the appropriate subsection.
Use these signals to categorize:
Files changed (strongest signal):
.github/, CMakeLists.txt, conan*, CI config files โ CI/Buildsrc/test/, *_test.cpp files โ Testing*.md, docs/ files โ DocumentationLabels (strong signal):
Bug label โ Bug FixesTitle prefixes (medium signal):
fix: โ Bug Fixesfeat: โ Featuresrefactor: โ Refactorsdocs: โ Documentationtest: โ Testingci:, build:, chore: โ CI/BuildDescription content (when other signals are ambiguous):
Additional sorting guidance:
After sorting, reformat each entry to match the release notes style.
Amendment entries should follow this format:
- **amendmentName**: Description of what the amendment does. ([#1234](https://github.com/XRPLF/rippled/pull/1234))
Feature and Breaking Change entries should follow this format:
- Description of the change. ([#1234](https://github.com/XRPLF/rippled/pull/1234))
All other entries should follow this format:
- The PR title of the entry. ([#1234](https://github.com/XRPLF/rippled/pull/1234))
seo.description frontmatter, e.g., "This version introduces new amendments and bug fixes." Do not create long lists of detailed changes.