Update CHANGELOG.md with merged PRs since the last changelog update, categorized by type
This skill updates CHANGELOG.md with merged PRs that aren't already listed.
Read CHANGELOG.md to identify the current unreleased version section at the top (e.g., Tantivy 0.26 (Unreleased)).
Collect all PR numbers already mentioned in the unreleased section by extracting #NNNN references.
Use gh to list recently merged PRs from the upstream repo:
gh pr list --repo quickwit-oss/tantivy --state merged --limit 100 --json number,title,author,labels,mergedAt
Filter out any PRs whose number already appears in the unreleased section of the changelog.
Before categorizing, group PRs that belong to the same logical change. This is critical for producing a clean changelog. Use PR descriptions, titles, cross-references, and the files touched to identify relationships.
Merge follow-up PRs into the original:
[#N](url) links.Filter out bugfixes on unreleased features:
Do not rely on PR titles or descriptions alone. For every candidate PR, run gh pr diff <number> --repo quickwit-oss/tantivy and read the actual changes. PR titles are often misleading — the diff is the source of truth.
What to look for in the diff:
Skip PRs where the diff reveals the change is not meaningful enough for the changelog — e.g., cosmetic renames, trivial visibility tweaks, test-only changes, etc.
For each PR (or consolidated group) that survived the diff review, determine its category:
If a PR doesn't clearly fit any category (e.g., CI-only changes, internal refactors with no user-facing impact, dependency bumps with no behavior change), skip it — not everything belongs in the changelog.
When unclear, use your best judgment or ask the user.
Each entry must follow this exact format:
- Description [#NUMBER](https://github.com/quickwit-oss/tantivy/pull/NUMBER)(@author)
Rules:
- **Aggregation** with indented entries beneath). Follow the existing grouping style in the changelog.@. For consolidated entries, include all contributing authors.[#100](url) [#110](url) (see existing entries for examples).Show the user the proposed changelog entries grouped by category before editing the file. Ask for confirmation or adjustments.
Insert the new entries into the appropriate sections of the unreleased version block. If a section doesn't exist yet, create it following the order: Bugfixes, Features/Improvements, Performance.
Append new entries at the end of each section (before the next section header or version header).
Read back the updated unreleased section and display it to the user for final review.