changelog-audit
Installation
SKILL.md
Changelog Audit
Audits CHANGELOG.md before a Warp release. Operates in two modes auto-detected from the resolved ref name:
- Release-branch mode (ref name matches
^release-): the upcoming release section is being finalized. Run all cleanup passes, promote[Unreleased]→[X.Y.Z], and bump the compare-link reference block at the bottom. - Main mode (anything else, including bare
main): tidy the live[Unreleased]section in place. If main's CHANGELOG is out of sync with one or more released tags, also back-port the tag's section, dedupe redundant[Unreleased]entries, and rotate the compare-link refs. No rename of[Unreleased].
Cleanup passes (some mode-conditional, run in this order):
- Phase 1.5 (main only, conditional) — Post-release sync. When a stable tag exists whose
[X.Y.Z]section is missing from main's CHANGELOG, back-port the section from the tag, dedupe[Unreleased]entries that already shipped, and rotate compare-link refs. Runs unconditionally when triggered (not skippable). - Phase 2 — Lost-entry recovery. Find entries that landed inside an already-released section due to merge=union and propose moves up.
- Phase 3 — Verify, consolidate, link metadata, and check section placement. Confirm non-trivial entries are accurate against the actual code (run code if needed); merge "Add X / Fix X / Change X" sequences for never-shipped features into a single accurate entry; retro-search GitHub for missing GH refs; and re-classify entries that landed in the wrong subsection (e.g., a behavior change wrongly under Fixed) or are missing a
**Breaking:**marker. - Phase 4 — Impact sort. Within each subsection, most user-impactful first; soft preference for keeping similar entries adjacent.
- Phase 5 — Language pass. Drop entries with no user-facing impact, rewrite jargon-heavy entries, fan out to user-perspective subagents on ambiguous cases, then run the editorial conventions sweep (imperative mood, hyphenation, GH-link position, symbol formatting consistency).
- Phase 6 — Line-wrap and consolidated diff. 120-char hard limit, prefer fewer lines, preserve semantic line breaks where they help raw-text readers.
- Phase 7 (release-branch only) — Promote + ref bump. Rename header and update the link-reference block.
Edits land in CHANGELOG.md directly. All passes stage their changes to an in-memory buffer; nothing is written until Phase 6 surfaces the consolidated diff and the user confirms. Phase 1.5 (post-release sync, on dedupe decisions), Pass 2 (lost-entry recovery), Pass 3 (consolidations and retro-GH ref insertions), and Pass 5 (rewrites and deletions) prompt before staging certain decisions so the user can decide on a per-candidate basis. Phase 7 (release-branch only) confirms its rename + ref-bump diff separately and writes after that confirmation.