DocsCareChangelog

Changelog

Derive release notes from conventional commits and maintain a Keep a Changelog file.

care changelog derives release notes straight from git. It groups conventional commits, strips their prefixes, and links each entry to its pull request and commit. It is the org's single source for a release body, so a release workflow reads its output rather than a separate changelog tool.

Printing notes

By default the command prints the notes for a ref range to stdout. Redirect to capture them. The positional tag is the range end, and --since sets the start.

care changelog                         # the latest tag, since the previous tag
care changelog v1.2.0                  # ending at v1.2.0, since the tag before it
care changelog --since v1.0.0 v2.0.0   # an explicit range
care changelog --full                  # from the first commit, ignoring tags

--full and --since are mutually exclusive. --plain drops commit and pull-request links and author attribution, leaving only the cleaned subjects.

Maintaining CHANGELOG.md

--write maintains a Keep a Changelog file in place instead of printing. It adds missing versions, refreshes an [Unreleased] section from commits past the latest tag, and keeps your edits. The file defaults to ./CHANGELOG.md and is set with --file.

care changelog --write                 # create or update ./CHANGELOG.md
care changelog --write --file docs/CHANGELOG.md

For the natural range, a matching ## [version] section already in the file is used verbatim, so hand-written prose reaches the release. An explicit --since or --full always re-derives from git.

Staging an upcoming release

--release stages a section for an as-yet-untagged version, promoting the work past the latest tag into that version. You commit the changelog and then tag that commit.

care changelog --write --release v0.2.0

Note

Push the branch before staging a release so pull-request handles and author attribution resolve. The staged section describes work past the latest tag, so the range ends at HEAD unless you name a ref.

Author handles and contributor extras

Git-host extras, the Full Changelog link and the contributor list, need an API token. Pass it with --token, or set GITHUB_TOKEN or GH_TOKEN in the environment. Without a token the command degrades to the git-log path and still produces grouped, linked notes.

care changelog --token "$GITHUB_TOKEN"

The --remote flag overrides git-host detection when the origin URL does not name a known host. Every changelog flag is in the commands reference.