- name
- prepare-release-notes
- description
- Prepare React Router release notes before running the changes/versioning scripts. Use when asked to review, polish, normalize, or prepare pending change files under packages/*/.changes, remove semantic commit prefixes from release bullets, enforce imperative tense, decide whether a manual scripts/changes/whats-changed.md section is warranted, or draft long-form release notes for new features, stable future flags, or unstable flags.
# Prepare Release Notes
Polish pending React Router change files and add manual release notes only when the release needs narrative context beyond the generated change lists.
## Workflow
1. Inspect local state:
```sh
git status --short
find packages -path '*/.changes/*.md' -not -name README.md -not -name .gitkeep -print | sort
```
2. Read every pending change file. Do not edit generated changelogs or released notes directly.
3. Normalize each change file:
- Remove `feat:`, `feat(...)`, `fix:`, and `fix(...)` semantic-commit prefixes from prose
- Use present or imperative tense for the first line and top-level release bullets: prefer `Add`, `Fix`, `Remove`, `Support`, `Stabilize`, `Preserve`, `Update`, `Avoid`, `Prevent`, `Throw`, `Warn`, `Expose`
- Nested detail bullets can stay explanatory when they expand on the parent bullet; do not rewrite them solely to force present or imperative tense
- Remove terminal sentence periods from bullet items because release generation appends PR/commit links after the first bullet line
- Remove terminal sentence periods from nested bullet items too, unless the punctuation is part of code, a URL, an abbreviation, a version number, or another token where removing it would be wrong
- If one bullet contains multiple sentences, split it into a shorter parent bullet plus nested bullet items
- Keep the first line concise and user-facing; use nested bullets for details or migration notes
4. Review whether `scripts/changes/whats-changed.md` is needed:
- Read `CHANGELOG.md` examples or `references/whats-changed.md` when uncertain
- Add `scripts/changes/whats-changed.md` only for features, future flag stabilizations, unstable flags, migration guidance, breaking bug fixes, or complex behavior that needs long-form text or examples
- Do not add it for ordinary bug fixes, dependency cleanup, internal refactors, or release bullets that are already clear
- If adding it, write the body only; the release script adds `### What's Changed` when missing
5. Validate:
```sh
pnpm changes:validate
pnpm changes:preview
```
Use `changes:preview` to inspect the generated root release notes and confirm the PR/commit link placement, section ordering, and any manual What's Changed placement. If dependencies are missing or the command is too expensive for the context, state what was skipped.
## Change File Style
Single-line entries should read well with an auto-appended PR link:
```markdown
Fix `href()` to stringify and URL-encode param values like `generatePath()`
```
Use nested bullets for additional sentences:
```markdown
Fix route ranking for dynamic parameters with static extension suffixes
- Identify `/:name.xml` as a dynamic segment instead of a static segment
- Preserve static route priority for paths like `/sitemap.xml`
```
Avoid semantic commit prefixes:
```markdown
Add support for nub as a package manager
```
not:
```markdown
feat: add support for nub as a package manager.
```
## What's Changed Guidance
Use `scripts/changes/whats-changed.md` for release-level narrative, not package-specific bullets. Good candidates include:
- A new user-facing API or feature that benefits from example code
- Stabilization or renaming of unstable APIs/flags, especially when adopters must migrate
- A stable future flag that changes behavior and needs adoption guidance
- A breaking bug fix or adapter/runtime behavior change that may require deployment checks
- A cluster of related changes whose combined effect matters more than the individual bullet list
Keep the tone direct and practical. Prefer headings under the generated `### What's Changed` section:
````markdown
#### Feature Name
Explain what changed, who it affects, and how to adopt it.
```ts
// Optional short example
```
````
Do not duplicate every bullet from Minor/Patch/Unstable Changes. Let generated change files carry ordinary PR-level details.
See `references/whats-changed.md` for examples distilled from the existing changelog.
View on GitHub