# System map — changesets/changesets

> Canonical page: https://codevetter.com/unpack/changesets/system-map

# System map — 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 runtime consists of a Node CLI and separately published release-processing packages. Workspace discovery and configuration feed an in-memory planner, while application and publishing own filesystem and external side effects. The documentation site has a separate VitePress build and Netlify target. Repository scripts and GitHub workflows define distinct verification, preview, and release paths.
- The changeset executable enables Node's compile cache when available, imports @changesets/cli, then parses argv and awaits cli.runMatchedCommand(); ExitError controls the process exit code. — [packages/cli/bin.js#L1-9](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/cli/bin.js#L1-L9) [packages/cli/src/index.ts#L11-28](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/cli/src/index.ts#L11-L28) [packages/cli/src/index.ts#L54-61](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/cli/src/index.ts#L54-L61)
- cac registrations in cli.ts dynamically load implementations for init, add, version, publish, publish-plan, pack, status, git-tag, and pre; add is the default command. — [packages/cli/src/cli.ts#L73-101](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/cli/src/cli.ts#L73-L101) [packages/cli/src/cli.ts#L103-172](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/cli/src/cli.ts#L103-L172) [packages/cli/src/cli.ts#L174-210](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/cli/src/cli.ts#L174-L210)
- getReleasePlan composes workspace discovery, config validation, changeset reading, prerelease-state reading, and assembleReleasePlan without applying the resulting plan. — [packages/get-release-plan/src/index.ts#L8-29](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/get-release-plan/src/index.ts#L8-L29)
- assembleReleasePlan owns calculated release state; applyReleasePlan owns manifest/changelog writes and changeset cleanup, returning touched paths for the CLI's optional commit step. — [packages/assemble-release-plan/src/index.ts#L123-150](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/assemble-release-plan/src/index.ts#L123-L150) [packages/apply-release-plan/src/index.ts#L140-178](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/apply-release-plan/src/index.ts#L140-L178) [packages/apply-release-plan/src/index.ts#L190-235](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/apply-release-plan/src/index.ts#L190-L235) [packages/cli/src/commands/version/index.ts#L127-143](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/cli/src/commands/version/index.ts#L127-L143)
- Publishing crosses into package-manager subprocesses through PublishTool.info, pack, and publish; getPublishTool selects npm, version-aware pnpm, or Yarn Berry and rejects Yarn Classic. — [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)
- pnpm workspaces include packages, scripts, and site; tsdown builds package entrypoints as ESM with declarations and publint, and apply-release-plan publishes only its dist directory. — [pnpm-workspace.yaml#L1-4](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/pnpm-workspace.yaml#L1-L4) [tsdown.config.ts#L5-28](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/tsdown.config.ts#L5-L28) [packages/apply-release-plan/package.json#L11-18](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/packages/apply-release-plan/package.json#L11-L18)
- Root scripts expose bootstrap, build, Vitest, separate E2E testing, TypeScript checking, ESLint, oxfmt, and check-all; the package manager is pinned to pnpm 11.13.1. — [package.json#L19-37](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/package.json#L19-L37) [package.json#L73-83](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/package.json#L73-L83) [scripts/e2e/package.json#L6-8](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/scripts/e2e/package.json#L6-L8)
- Netlify builds packages and the VitePress site on Node 24; GitHub release automation separates mode selection, version PR creation, packing, and publishing, while labeled PRs can trigger pkg-pr-new previews. — [netlify.toml#L1-6](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/netlify.toml#L1-L6) [.github/workflows/publish.yml#L37-73](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/.github/workflows/publish.yml#L37-L73) [.github/workflows/publish.yml#L75-123](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/.github/workflows/publish.yml#L75-L123) [.github/workflows/pkg-pr-new.yml#L14-30](https://github.com/changesets/changesets/blob/c73949ba7b3160a4aa5729223335c190de1528f8/.github/workflows/pkg-pr-new.yml#L14-L30)

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)
