|
| 1 | +--- |
| 2 | +name: changelog |
| 3 | +description: Write CHANGELOG.md entries for unreleased commits — terse, one-line bullets that link to the introducing commit(s), not paragraphs. Triggers on "prepare the changelog", "update CHANGELOG", "write changelog entries", or invokes `/changelog`. Standalone version of the `release` skill's "CHANGELOG sync" step — use this when you want entries written without cutting a release yet. |
| 4 | +--- |
| 5 | + |
| 6 | +## Overview |
| 7 | + |
| 8 | +Write CHANGELOG.md entries for commits that don't have one yet, under `## [Unreleased]`. |
| 9 | +Entries are **terse** — a title, not a paragraph — ending in a link to the introducing |
| 10 | +commit(s). The link is the receipt; anyone who wants the "why" and the numbers reads the |
| 11 | +commit message (`git show <sha>` or the GitHub commit page), not the changelog. |
| 12 | + |
| 13 | +## Steps |
| 14 | + |
| 15 | +1. Find the range of commits missing a changelog entry: compare `## [Unreleased]` in |
| 16 | + `CHANGELOG.md` against `git log --oneline <last-documented-commit>..HEAD`. If unclear |
| 17 | + where the last-documented commit is, ask. |
| 18 | +2. For each notable commit, write **one bullet**: |
| 19 | + - A single short sentence — what changed, fewest words that stay precise. No numbers, |
| 20 | + no "why", no before/after prose — those live in the commit message. |
| 21 | + - End with the commit SHA(s), GitHub-auto-linked: |
| 22 | + `([abc1234](https://github.com/dfa1/vortex-java/commit/abc1234))` |
| 23 | + - One logical change spanning multiple commits: comma-separate SHAs, newest first. |
| 24 | +3. Categorize under the right `###` heading (create if missing): `Added` / `Changed` / |
| 25 | + `Fixed` / `Performance` / `Removed` / `Security` — Keep-a-Changelog order (Added, |
| 26 | + Changed, Deprecated, Removed, Fixed, Security), plus this project's `Performance`. |
| 27 | +4. Skip pure-internal churn: CI/Sonar fixes, source-tree moves, dedup refactors, |
| 28 | + test/tooling-only commits (see [[feedback_changelog_terse]]) — omit rather than write a |
| 29 | + bullet nobody user-facing cares about. |
| 30 | +5. Commit as `docs: CHANGELOG entries for <short description>`. |
| 31 | + |
| 32 | +## Example |
| 33 | + |
| 34 | +Good (terse — what to write): |
| 35 | +``` |
| 36 | +- Utf8/Binary now use cost-based encoding selection instead of first-match dispatch. ([1bbc3549](https://github.com/dfa1/vortex-java/commit/1bbc3549)) |
| 37 | +- FsstEncodingDecoder no longer throws on valid files with empty FSST metadata. ([1bbc3549](https://github.com/dfa1/vortex-java/commit/1bbc3549)) |
| 38 | +``` |
| 39 | + |
| 40 | +Bad (too verbose — do NOT write this): |
| 41 | +``` |
| 42 | +- `CascadingCompressor` now runs `Utf8`/`Binary` columns through the same sample-and-measure |
| 43 | + encoding competition `Primitive` columns already get, instead of first-match dispatch. |
| 44 | + `DictEncodingEncoder` is registered ahead of `FsstEncodingEncoder`, so Dict always won |
| 45 | + regardless of actual output size — confirmed by inspecting a 50k-row, high-cardinality |
| 46 | + string file and finding `vortex.dict` where `vortex.fsst` is ~40% smaller. On |
| 47 | + `highCardinalityUtf8_javaVsJni` (50k distinct 6-byte strings) this drops the Java/JNI |
| 48 | + file-size ratio from 2.26× to 1.36× (801,908 → 483,336 bytes). ([1bbc3549](...)) |
| 49 | +``` |
| 50 | +The numbers and rationale belong in the commit message, not duplicated in the changelog. |
| 51 | + |
| 52 | +## Rules |
| 53 | + |
| 54 | +- Never invent entries for commits that don't exist — the link is the receipt. |
| 55 | +- Never leave a bullet without a commit link. |
| 56 | +- One sentence per bullet. If it needs two sentences, split it into two bullets, or the |
| 57 | + extra detail belongs in the commit message instead. |
| 58 | +- Skip internal-only commits (matches the `release` skill's CHANGELOG sync policy). |
| 59 | + |
| 60 | +## When NOT to use |
| 61 | + |
| 62 | +- Finalizing a release's version header/date, or the compare link at the bottom of the |
| 63 | + file — that's the `release` skill's job (its CHANGELOG sync step supersedes this one). |
| 64 | +- Writing release notes for work that isn't committed yet. |
0 commit comments