Resources

Changelogs and releases, written down properly

Free guides for writing a changelog and for the tools between a commit message and a release. Each one answers the question it is named after.

Writing a changelog

How to write the file

Nothing on these pages installs a tool.

  • Release notes templateA template to copy, with variants for a GitHub release, a CHANGELOG.md and a Word or Confluence doc.
  • Changelog examplesPublic changelogs, and the one habit each of them gets right.
  • Changelog formatThe CHANGELOG.md conventions, how a changelog differs from release notes, and how to write an entry.

From commit to release

The tooling between a commit and a release

Every setup was run against the real tool, and the version it was checked against is on the page.

  • Conventional commitsThe format, every type and its version bump, and a checker for a pasted git log.
  • Cheat sheetConventional commits format, types, footers and commitlint’s default rules on one page.
  • Semantic versioningMajor, minor and patch, what 0.x means, pre-releases, and npm ranges.
  • commitlintSetup, a config file that loads, a commit-msg hook, CI and PR titles.
  • CommitizenThe Node and the Python tool that share the name, and setup for both.
  • release-pleaseThe release PR, the v5 Action, monorepo config, and a config generator.
  • semantic-releaseA tested .releaserc.json, the GitHub Actions workflow, and a config generator.
  • ChangesetsVersioning npm packages from changeset files instead of commits.
  • standard-versionIt is deprecated. Where to migrate, with an option mapping table.
  • git-cliffChangelogs from git history, the default cliff.toml, and --bump.
  • Changelog generatorsEight ways to generate a changelog from commits, PRs or changeset files, compared.

Free tools

Try something instead of reading

No account needed for any of these.

  • Changelog toolChangelog entries drafted from your merged pull requests.
  • CutoffPaste a post and see where each network cuts it off. Runs in your browser.
  • Try it on a PRPaste a public GitHub pull request and read the posts it would write. Nothing is saved or published.

The release is out. Now tell someone.

You were going to merge the PR anyway.

Changelog and release guides — Merge & Tell