update-changelog
Update CHANGELOG.md with merged PRs since the last changelog update, categorized by type
Best use case
update-changelog is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Update CHANGELOG.md with merged PRs since the last changelog update, categorized by type
Teams using update-changelog should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/update-changelog/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How update-changelog Compares
| Feature / Agent | update-changelog | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
Update CHANGELOG.md with merged PRs since the last changelog update, categorized by type
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
Related Guides
AI Agents for Marketing
Discover AI agents for marketing workflows, from SEO and content production to campaign research, outreach, and analytics.
AI Agents for Startups
Explore AI agent skills for startup validation, product research, growth experiments, documentation, and fast execution with small teams.
AI Agents for Coding
Browse AI agent skills for coding, debugging, testing, refactoring, code review, and developer workflows across Claude, Cursor, and Codex.
SKILL.md Source
# Update Changelog This skill updates CHANGELOG.md with merged PRs that aren't already listed. ## Step 1: Determine the changelog scope 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. ## Step 2: Find merged PRs not yet in the changelog Use `gh` to list recently merged PRs from the upstream repo: ```bash 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. ## Step 3: Consolidate related PRs 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:** - If a PR is a bugfix, refinement, or follow-up to another PR in the same unreleased cycle, combine them into a single changelog entry with multiple `[#N](url)` links. - Also consolidate PRs that touch the same feature area even if not explicitly linked — e.g., a PR fixing an edge case in a new API should be folded into the entry for the PR that introduced that API. **Filter out bugfixes on unreleased features:** - If a bugfix PR fixes something introduced by another PR in the **same unreleased version**, it must NOT appear as a separate Bugfixes entry. Instead, silently fold it into the original feature/improvement entry. The changelog should describe the final shipped state, not the development history. - To detect this: check if the bugfix PR references or reverts changes from another PR in the same release cycle, or if it touches code that was newly added (not present in the previous release). ## Step 4: Review the actual code diff **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:** - Does it change observable behavior, public API surface, or performance characteristics? - Is the change something a user of the library would notice or need to know about? - Could the change break existing code (API changes, removed features)? **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. ## Step 5: Categorize each PR group For each PR (or consolidated group) that survived the diff review, determine its category: - **Bugfixes** — fixes to behavior that existed in the **previous release**. NOT fixes to features introduced in this release cycle. - **Features/Improvements** — new features, API additions, new options, improvements that change user-facing behavior or add new capabilities. - **Performance** — optimizations, speed improvements, memory reductions. **If a PR adds new API whose primary purpose is enabling a performance optimization, categorize it as Performance, not Features.** The deciding question is: does a user benefit from this because of new functionality, or because things got faster/leaner? For example, a new trait method that exists solely to enable cheaper intersection ordering is Performance, not a Feature. 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. ## Step 6: Format entries Each entry must follow this exact format: ``` - Description [#NUMBER](https://github.com/quickwit-oss/tantivy/pull/NUMBER)(@author) ``` Rules: - The description should be concise and describe the user-facing change (not the implementation). Describe the final shipped state, not the incremental development steps. - Use sub-categories with bold headers when multiple entries relate to the same area (e.g., `- **Aggregation**` with indented entries beneath). Follow the existing grouping style in the changelog. - Author is the GitHub username from the PR, prefixed with `@`. For consolidated entries, include all contributing authors. - For consolidated PRs, list all PR links in a single entry: `[#100](url) [#110](url)` (see existing entries for examples). ## Step 7: Present changes to the user Show the user the proposed changelog entries grouped by category **before** editing the file. Ask for confirmation or adjustments. ## Step 8: Update CHANGELOG.md 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). ## Step 9: Verify Read back the updated unreleased section and display it to the user for final review.
Related Skills
simple-pr
Create a simple PR from staged changes with an auto-generated commit message
rationalize-deps
Analyze Cargo.toml dependencies and attempt to remove unused features to reduce compile times and binary size
claude-win11-speckit-update-skill
Windows 11 system management
Investor Update Generator
Generate professional monthly/quarterly investor updates that keep stakeholders informed and build trust.
generating-changelog
Generates polished website release notes between two git tags for docs.streamlit.io. Use when preparing a new Streamlit release or reviewing changes between versions.
update-deps
Update all dependencies across frontend and backend projects. Reads changelogs for breaking changes, checks affected code, runs tests, and provides a summary. Use when updating npm dependencies across the monorepo.
wiki-changelog
Generate structured changelogs from git history. Use when user asks "what changed recently", "generate a changelog", "summarize commits" or user wants to understand recent development activity.
speckit-updater
SpecKit Safe Update
app-store-changelog
Generate user-facing App Store release notes from git history since the last tag.
update-specification
Update an existing specification file for the solution, optimized for Generative AI consumption based on new requirements or updates to any existing code.
update-markdown-file-index
Update a markdown file section with an index/table of files from a specified folder.
update-llms
Update the llms.txt file in the root folder to reflect changes in documentation or specifications following the llms.txt specification at https://llmstxt.org/