Skip to content

summaryReadability

Reports changeset summaries that are missing or start with a conventional commit prefix.

✅ This rule is included in the changesets logical presets.

Changesets copies the summary of each changeset into the CHANGELOG.md of every package it releases. Those changelog entries are read by the package’s users, not by commit tooling.

Conventional commit prefixes such as feat: or fix(core): label commits for tools that parse Git history. In a changelog entry, they repeat information already recorded by the version bump in the changeset’s frontmatter.

A changeset whose frontmatter lists packages but has no summary creates a changelog entry that doesn’t describe its change. Changesets created with changeset add --empty list no packages and are not reported.

This rule reports summaries that start with a conventional commit prefix and changesets that are missing a summary.

---
"example-package": minor
---
feat: Added a new option.
---
"example-package": patch
---
fix(parser)!: Fixed a crash on empty files.
---
"example-package": patch
---

Type: string[]

Default: ["build", "chore", "ci", "docs", "feat", "feature", "fix", "perf", "refactor", "revert", "style", "test"], the default types of conventional-changelog-conventionalcommits

Conventional commit types whose prefixes should be reported. Words not in this list, such as Note:, are not reported as prefixes.

changesets.rules({
summaryReadability: {
types: ["deps", "feat", "fix"],
},
});
---
"example-package": patch
---
deps: Updated dependencies.

If your project publishes changelogs that are generated from conventional commit messages rather than from changeset summaries, the prefixes may be read by your release tooling. For example, if you’re using forked or separate tooling from changesets that only happens to use these files’ formats, this rule may give you false reports. You might then prefer to disable this rule rather than change that tooling.