CodeVetter
← All unpacks
CodeVetter · Repo Unpack evidence

changesets/changesets

Scanned commit c73949ba7b dated 2026-09-22 — last upstream commit. Generated by codevetter 1.15.0 on 2026-10-02.

github.com/changesets/changesets ↗ · 325 files · 1.9 MB

[!IMPORTANT] This is development branch for Changesets v3.

Deep analysis by cli:codex via the codex CLI on 2026-10-02 (366s) — every claim below links to its cited source files. Source inspection; upstream code and tests were not executed.

Overview

Changesets helps package maintainers record release intent as Markdown, calculate coordinated version changes across workspaces, generate changelogs, and publish through npm, pnpm, or Yarn. This pinned checkout is the v3 development branch, with a modular TypeScript release engine, an interactive CLI, and a Vue/VitePress documentation site. Its distinctive boundary separates contributor-authored changesets, calculated release plans, and registry-aware publish plans, including a pack-then-publish artifact workflow.

System map

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.

Feature catalog

The CLI covers release setup, contributor input, release inspection, version application, artifact creation, and publication. Configuration controls coordinated groups, skipped/private packages, formatting, and generators. Prereleases and snapshots have explicit mode restrictions. The public documentation adds searchable guides, generated CLI help, and selected package references.

Data flow

Release intent enters through CLI selections or editable changeset files. Schema validation and workspace discovery normalize configuration before the planner builds package-indexed state. Version application persists calculated results, while publishing independently compares current manifests against registry state. Artifact and reporting files are additional output boundaries with different formats and trust assumptions.

Behavior traces

The inspected startup, add, version, and publish paths connect concrete command dispatch to their terminal effects. Additional traces cover status, prerelease persistence, and packing. These are source-derived execution sequences, not observed runtime results. Branches around skipped packages, prerelease state, authentication, and partial publication materially change the sequence.

Testing signals

Tests and CI were inspected, not executed; this report contains no passing test result or measured coverage percentage. Vitest covers planner logic, filesystem application, config rules, and mocked publication behavior. A separate E2E workspace exercises real CLI/package-manager processes against test infrastructure. Inspection is bounded, and explicit TODOs and fixture constraints limit what test existence establishes.

Risk map

These are source observations and narrowly labeled hypotheses, not confirmed vulnerabilities. Sensitive boundaries include configured executable modules, package-manager subprocesses, caller-selected paths, Git writes, and authenticated GitHub requests. Release application and publication can leave partial effects when later operations fail. Artifact validation and compatibility assumptions deserve focused verification before broader reliance.

Extension points

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.

Contributor handoff

Tests and CI were inspected, not executed, and the findings are a bounded onboarding map rather than exhaustive coverage or a verification certificate. Start with the relevant command, shared contracts, and side-effect-owning package before changing behavior. Preserve distinctions between release planning, filesystem application, and registry publication. Future checks must respect task authorization because several apparently convenient APIs or scripts perform writes, subprocess execution, or remote operations.

Languages

LanguageFilesShare of source
TypeScript16297%
Markdown87docs/config
JSON31docs/config
YAML12docs/config
JavaScript21%
Vue21%
CSS1docs/config
TOML11%

Start reading here

Probable source entrypoint: packages/ — inferred from the directory tree and manifest, not the upstream docs.

Source roots

packages/ (212 files)

Source layout — packages/

PathFiles
packages/apply-release-plan/13
packages/assemble-release-plan/16
packages/changelog-git/4
packages/changelog-github/8
packages/cli/63
packages/color/2
packages/config/14
packages/errors/6
packages/get-dependents-graph/7
packages/get-github-info/12
packages/get-release-plan/5
packages/get-version-range-type/6
packages/git/6
packages/logger/6

Repository structure

Top-level pathFiles
packages/212
site/49
docs/18
scripts/11
assets/10
.github/7
.changeset/2
wiki/1

Docs found: README.mddocs/adding-a-changeset.mddocs/automating-changesets.mddocs/checking-for-changesets.mddocs/command-line-options.mddocs/common-questions.mddocs/config-file-options.mddocs/decisions.mddocs/detailed-explanation.mddocs/dictionary.md

Package

package.json — @changesets/repository v1.0.0, 24 declared dependencies.

@changesets/changelog-github@changesets/cli@e18e/eslint-plugin@eslint/js@manypkg/cli@oxc-node/core@tsconfig/node22@tsconfig/node24@types/node@types/semver@vitest/coverage-v8@vitest/eslint-plugin

CI & config entrypoints

Structural health signals

Average score 9.1/10 across 96 analyzed source files; 0 hotspots surfaced.

These are deterministic review leads — size, churn, and structural signals — not proof of a bug in this project.

Recent history