Update Changelog
Context
!git log $(git describe --tags --abbrev=0 2>/dev/null || echo HEAD~20)..HEAD --oneline
Instructions
Read
CHANGELOG.mdto understand current state.Mode select:
$ARGUMENTSempty → draft entries from commits since last tag.$ARGUMENTS == --optimize→ rewrite## Unreleasedin place per style rules below. No new entries.- Otherwise → treat
$ARGUMENTSas entry text; place under correct category.
Categories:
### Added— new functionality (feat:)### Performance— perf wins (perf:)### Changed— behavior changes (ref:, BC)### Fixed— bug fixes (fix:)### Removed— removed features
Style rules (apply on every write, enforce on
--optimize):- Imperative mood: "Add" not "Added"
- Code in backticks:
`(fn arg)` - Cap ~120 chars per entry; split or move detail to PR body if longer
- PR ref at end:
(#NNNN). Multiple PRs same bullet →(#A #B #C) - Drop filler ("now", "improved", "new") and marketing voice ("blazing", "powerful")
- Lead with what changed, not why. Why → PR body.
- Skip non-user-facing commits (
chore:, CI internals, test-only refactors) - Prefix BC with
BC:or BREAKING
Performance section clustering (always on): Group bullets under sub-labels matching the change locus. Example labels (use what fits):
Dispatch / call sites:Compile-time folding / hoisting:Type-driven call specialisation:Runtime data structures:Emit size:
Combine sibling entries:
- N PRs touching same subsystem → 1 bullet, list PR refs at end.
- Same verb + same target across categories → merge.
Edit
CHANGELOG.md. Present draft before writing when generating from commits or running--optimize.