Draft release notes from verified repository evidence. Keep complete, tag-specific release history in GitHub Releases. Update the documentation-site release-notes page only when the documentation-visible release summary changes.
Gather Evidence
Run the read-only helper with explicit release refs and the exact target release version:
python3 .agents/skills/draft-release-notes/scripts/collect_release_evidence.py \
--previous <previous-release-tag-or-branch> \
--current HEAD \
--version <release-version>
For a patch release, use the previous stable tag as --previous. For a new
release line, use the previous release branch or tag. The report verifies both
refs, inspects the release-notes page at each ref, identifies version text, and
groups commits into review candidates. Treat the groups as an evidence index,
not publication-ready copy.
Workflow
-
Establish the release branch and target version. Preserve unrelated working-tree changes; do not stash or discard them.
- If the user supplied a version, derive
release/<major>.<minor>and check out that branch. - If the user did not supply a version, require the current branch to match
release/<major>.<minor>; do not infer a release line from package metadata or Git history. - Read the target version from
Cargo.toml. When the user supplied a version, require it to match the package version.
RELEASE_VERSION_INPUT="${RELEASE_VERSION_INPUT:-}" if [[ -n "${RELEASE_VERSION_INPUT}" ]]; then if [[ ! "${RELEASE_VERSION_INPUT}" =~ ^[0-9]+\.[0-9]+(\.[0-9]+)?$ ]]; then echo "Error: release version must be <major>.<minor> or <major>.<minor>.<patch>" >&2 exit 1 fi RELEASE_LINE="$(printf '%s' "${RELEASE_VERSION_INPUT}" | cut -d. -f1,2)" if [[ "${RELEASE_VERSION_INPUT}" =~ ^[0-9]+\.[0-9]+$ ]]; then EXPECTED_VERSION="${RELEASE_VERSION_INPUT}.0" else EXPECTED_VERSION="${RELEASE_VERSION_INPUT}" fi RELEASE_BRANCH="release/${RELEASE_LINE}" git switch "${RELEASE_BRANCH}" else RELEASE_BRANCH="$(git branch --show-current)" if [[ ! "${RELEASE_BRANCH}" =~ ^release/([0-9]+\.[0-9]+)$ ]]; then echo "Error: supply a release version or check out release/<major>.<minor>" >&2 exit 1 fi RELEASE_LINE="${BASH_REMATCH[1]}" fi TARGET_VERSION="$(python -c "import tomllib; print(tomllib.load(open('Cargo.toml', 'rb'))['workspace']['package']['version'])")" if [[ -n "${RELEASE_VERSION_INPUT}" ]] && [[ "${TARGET_VERSION}" != "${EXPECTED_VERSION}" ]]; then echo "Error: ${RELEASE_BRANCH} declares ${TARGET_VERSION}, not ${EXPECTED_VERSION}" >&2 exit 1 fi - If the user supplied a version, derive
-
Create a new local branch from the release branch for the release-notes work. Let the command fail rather than replacing an existing branch:
git switch -c "docs/create-release-notes-${TARGET_VERSION}" "${RELEASE_BRANCH}" -
Run the helper. It reports an absent prior release-notes page without failing, which is expected for early release branches.
-
Verify each candidate claim in the changed public docs, API types, command help, or source before including it. Prioritize breaking changes, migrations, user-visible features, and ongoing support limitations.
-
For a patch release, identify the affected behavior and state whether public APIs, configuration, or dependency contracts changed.
-
Update only this page unless the release changes its route or entry point:
docs/about-nemo-fabric/release-notes.mdxLeave it unchanged when a patch release does not alter the documentation-visible summary, compatibility guidance, support status, or limitations.
-
Keep the existing page role:
release-notes.mdxgives the current-release summary, compatibility notes, scope, and curated feature links.release-notes.mdxgroups notable changes by user-facing theme.release-notes.mdxrecords current limitations.
-
Preserve MDX front matter and the JSX SPDX comment. State the full history is available in GitHub Releases. Do not create a changelog.
-
Update the
Roadmapsection in README.md, removing items implemented or fixed by changes in the current release. -
Run the validation checks detailed in Validate.
-
If
docs/about-nemo-fabric/release-notes.mdxorREADME.mdchanged, commit the release-notes page and README with a signed-off commit after validation succeeds:git add docs/about-nemo-fabric/release-notes.mdx README.md git commit -sm "Drafting release notes for v${TARGET_VERSION}" git push -u upstream HEAD -
If
docs/about-nemo-fabric/release-notes.mdxorREADME.mdchanged, use theprepare-prskill to open a pull request from the release-notes branch to${RELEASE_BRANCH}. Use this title:docs: Release notes for v${TARGET_VERSION}If
docs/about-nemo-fabric/release-notes.mdxandREADME.mdare unchanged, skip steps 11 and 12. Do not create a release-notes commit or pull request.
Validate
Run the helper for the target release and review every public claim. If the documentation page changed, run:
git diff --check
just docs
Check product names, commands, package names, support claims, and links against the current repository before handing off the draft.