# Extension points — changesets/changesets

> Canonical page: https://codevetter.com/unpack/changesets/extension-points

# Extension points — changesets/changesets

Scanned commit c73949ba7b3160a4aa5729223335c190de1528f8 (2026-09-22). Generated by codevetter codevetter 1.15.0 on 2026-10-02.

Source inspection; upstream code and tests were not executed.

The primary extension mechanisms are configurable generator modules and internal command/adapter tables. Shared types separate contributor intent, calculated releases, and publication results. Config rules and schema generation provide coordinated validation hooks. Documentation generation also plugs into CLI registrations and package sidebar entries.
- New CLI behavior belongs in cac command registrations with normalization and lazy handler imports; the existing command table demonstrates array-valued options, aliases, examples, and required-option checks. — [packages/cli/src/cli.ts#L81-117](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/cli/src/cli.ts#L81-L117) [packages/cli/src/cli.ts#L145-159](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/cli/src/cli.ts#L145-L159)
- Changelog plugins implement getReleaseLine and getDependencyReleaseLine, may return promises, and receive configured options; the loader requires both functions and handles default-export interoperability. — [packages/types/src/index.ts#L169-183](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/types/src/index.ts#L169-L183) [packages/apply-release-plan/src/index.ts#L269-284](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/apply-release-plan/src/index.ts#L269-L284) [packages/apply-release-plan/src/index.ts#L296-310](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/apply-release-plan/src/index.ts#L296-L310)
- Commit plugins expose getAddMessage and/or getVersionMessage; config accepts booleans, module strings, or module/options tuples, with true normalized to the built-in commit generator. — [packages/config/src/config.ts#L34-40](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/config/src/config.ts#L34-L40) [packages/config/src/config.ts#L175-179](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/config/src/config.ts#L175-L179) [packages/cli/src/commit/getCommitFunctions.ts#L29-46](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/cli/src/commit/getCommitFunctions.ts#L29-L46)
- PublishTool is the internal adapter contract for info, pack, publish, and OTP extraction; adding a manager requires changing its name union and getPublishTool selection, not registering an arbitrary external plugin. — [packages/cli/src/lib/types.ts#L4-10](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/cli/src/lib/types.ts#L4-L10) [packages/cli/src/commands/publish/getPublishTool.ts#L30-55](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/cli/src/commands/publish/getPublishTool.ts#L30-L55)
- WrittenConfigSchema defines accepted options/defaults, normalizeWrittenConfig reconciles alternate forms, and the rules array runs package-aware checks over one shared errors/warnings context. — [packages/config/src/config.ts#L45-73](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/config/src/config.ts#L45-L73) [packages/config/src/config.ts#L165-182](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/config/src/config.ts#L165-L182) [packages/config/src/rules.ts#L186-205](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/config/src/rules.ts#L186-L205)
- Configuration schema changes feed generateJsonSchema, which converts WrittenConfigSchema to draft-2020-12 JSON and writes schema.json; a file-snapshot test checks generated/schema alignment. — [packages/config/scripts/generate-json-schema.ts#L7-34](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/config/scripts/generate-json-schema.ts#L7-L34) [packages/config/scripts/json-schema.test.ts#L8-11](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/config/scripts/json-schema.test.ts#L8-L11)
- Release policy helpers plug into assembleReleasePlan's stabilization loop; changes to dependent propagation, fixed constraints, or links must preserve their mutation/change-reporting contract and final version computation. — [packages/assemble-release-plan/src/index.ts#L161-183](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/assemble-release-plan/src/index.ts#L161-L183) [packages/assemble-release-plan/src/index.ts#L219-235](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/assemble-release-plan/src/index.ts#L219-L235) [packages/assemble-release-plan/src/determine-dependents.ts#L16-26](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/assemble-release-plan/src/determine-dependents.ts#L16-L26)
- Documentation extensions use VitePress sidebar entries and package README/manifest generation; CLI reference help comes from helpMessageTasks invoking the same CLI parser, while package builds inherit shared tsdown configuration. — [site/.vitepress/config.ts#L235-242](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/site/.vitepress/config.ts#L235-L242) [site/packages/[pkg].paths.ts#L10-28](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/site/packages/%5Bpkg%5D.paths.ts#L10-L28) [site/guide/cli.data.ts#L24-35](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/site/guide/cli.data.ts#L24-L35) [site/guide/cli.data.ts#L105-122](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/site/guide/cli.data.ts#L105-L122)

Every claim links to its cited files at the pinned commit. Citations identify source evidence; they do not establish runtime correctness. Independent CodeVetter scan — not reviewed by upstream maintainers.

## Public product links

- [CodeVetter](https://codevetter.com/)
- [Download](https://codevetter.com/download)
- [Documentation](https://codevetter.com/docs/)
- [Source](https://github.com/Codevetter/codevetter)
