You ship a release. You mean to write the changelog "later." Three weeks pass, someone asks "what actually changed in 1.2?", and now you're scrolling git log trying to reconstruct it from memory.

Here's the thing: if your commits look anything like feat: ... / fix: ... (Conventional Commits), the changelog already exists — it's sitting in your git history. It just needs extracting.

The tools that do this each ask for something first:

git-cliff is genuinely great — but it's a Rust binary you install via cargo or a release download, plus a cliff.toml to configure.

standard-version — deprecated.