name: update-changelog description: Create or update a local CHANGELOG.md version entry with concise, high-signal release notes; ask for the target version when it is not provided or discoverable. summary: Create or update concise local changelog release notes.
Update Changelog
Use this skill when creating, refreshing, or simplifying a version entry in the local CHANGELOG.md file.
Goal
Produce concise, high-signal release notes for one target version. The entry should explain user-facing, operator-facing, or release-relevant impact, not list implementation steps.
Version handling
- Determine the target version before editing:
- Use a version explicitly provided by the user.
- If the user asks to update an existing release and only one relevant version section is obvious from context, use that version.
- Otherwise ask the user for the target version before editing
CHANGELOG.md.
- Never invent a version number.
- If
CHANGELOG.mdalready has## [<version>] - <date-or-status>, update that section only. - If the version section does not exist, create a new dated section near the top, after the changelog title/introduction and before older versions.
Release date handling
- Use TestPyPI release history as the authoritative source for published
reflex-reviewerrelease dates:- Page:
https://test.pypi.org/project/reflex-reviewer/#history - JSON fallback:
https://test.pypi.org/pypi/reflex-reviewer/json
- Page:
- For published releases, use the ISO calendar date from release history.
- If using the JSON fallback, derive the release date from the earliest uploaded distribution timestamp for the target version.
- If release history has no entry for the target version, treat the version as unpublished:
- use
Unreleasedwhen the entry represents pending release notes, - ask for the intended release date before using an ISO date,
- leave the date/status off only if the user explicitly requests an undated heading.
- use
Use this version header format for published releases:
## [<version>] - YYYY-MM-DD
Use this version header format for unpublished pending releases:
## [<version>] - Unreleased
Source material
Gather only enough context to write accurate release notes:
- Existing
CHANGELOG.mdstructure and tone. - TestPyPI release history for the target version date when the release is published.
- Staged changes first; if nothing is staged, use unstaged changes.
- Relevant commits, project memory, or user-provided notes when they clarify release intent.
- Nearby docs/config only when needed to understand user-visible impact.
Required categories
Use standard Keep a Changelog-style categories in this order:
### Added### Changed### Fixed
Use optional categories only when clearly relevant:
### Deprecated### Removed### Security
Skip empty headings.
Writing rules
- Keep the entry concise: usually 5-12 bullets total for a normal release.
- Prefer one high-signal bullet over several low-level bullets about the same change.
- Lead with product, runtime, configuration, or operational impact.
- Mention config keys, commands, modules, or APIs only when they help users understand the release.
- Avoid implementation logs, test-only bullets, generic documentation bullets, and internal refactor detail unless it materially changes release behavior.
- Avoid duplicate ideas across categories.
- Do not include raw prompt bodies, diffs, secrets, credentials, tokens, or sensitive payload data.
- Keep initial/foundational releases under
### Core capabilitiesonly when the user explicitly requests that exception.
Category guidance
Added
Use for newly available capabilities, workflows, configuration controls, integrations, or supported behavior.
Changed
Use for behavior changes, runtime orchestration changes, configuration semantics, operational defaults, or meaningful architecture changes that affect maintainability or operation.
Fixed
Use for bug fixes that materially affect correctness, release safety, review reliability, data integrity, posting behavior, parsing, or runtime stability.
Deprecated
Use only when a feature, configuration key, command, or behavior remains available but is explicitly planned for future removal.
Removed
Use only when a feature, command, configuration key, compatibility path, or file/module surface has been removed.
Security
Use only for vulnerability fixes, credential-handling improvements, sensitive-data logging fixes, or security-relevant behavior changes.
Workflow
- Read
CHANGELOG.md. - Resolve the target version using the version-handling rules above.
- Resolve the release date or
Unreleasedstatus using the release-date handling rules above. - Inspect the relevant git diff or commits.
- Draft concise release-note bullets grouped by category.
- Remove weak, duplicate, overly specific, or test-only bullets.
- Create or update only the target version section.
- Verify the section is ordered correctly, has no empty headings, and contains only concise, high-signal release notes.
Output template
Use this template, omitting empty categories:
## [<version>] - YYYY-MM-DD
### Added
- <new capability or supported behavior>
### Changed
- <behavior, configuration, runtime, or operational change>
### Fixed
- <correctness, reliability, parsing, posting, or data-integrity fix>
Completion checklist
- Target version was provided, clearly inferred from context, or requested from the user before editing.
- Published release dates were verified from TestPyPI release history, or unpublished entries are marked
Unreleased. - The target section was created or updated, and unrelated versions were left alone.
- Empty headings were skipped.
- Bullets are concise, high signal, and release-note oriented.
- No sensitive content or raw implementation payloads were included.