mcpField
C
changesets

changesets

github.com/oakossDevelopment20144 installsUpdated 10w ago
Repository

About changesets

Changesets is a versioning and changelog workflow for multi-package repositories. It helps contributors and maintainers coordinate package releases through change declarations, version updates, and publishing.

Key features

  1. 01Declare package changes and semver impact
  2. 02Aggregate changesets into version bumps
  3. 03Generate changelog entries
  4. 04Publish packages and create git tags
  5. 05Support linked, fixed, and prerelease packages
  6. 06Create snapshot releases for testing

Use cases

  1. 01Coordinate releases across a monorepo
  2. 02Generate changelogs from pull request changes
  3. 03Automate npm publishing through CI
  4. 04Test prerelease or snapshot package versions

Install

Copy the command and run it in a terminal.

$npx skills add https://github.com/oakoss/agent-skills --skill changesets

After installing, type/changesetsin Claude Code to confirm it loaded.

Bundled files

References and scripts installed along with SKILL.md.

references/
basic-workflow.md
ci-automation.md
monorepo-setup.md

Details

From the project README

Changesets

Overview

Changesets is a versioning and changelog management tool focused on multi-package repositories. Contributors declare the semver impact of each change (major/minor/patch) via changeset files, then Changesets aggregates them to bump versions, update changelogs, and publish packages in a single coordinated release.

When to use: Monorepo versioning, automated changelog generation, coordinated multi-package releases, CI-driven publishing, prerelease/snapshot workflows.

When NOT to use: Single-file projects with no npm publishing, projects using commit-message-based versioning (semantic-release), manual version management without an npm registry, projects where a single maintainer controls all releases without PR collaboration.

How It Works
  1. A contributor adds a changeset file declaring affected packages, bump types, and a summary
  2. The changeset file is committed alongside the code change in the PR
  3. When ready to release, changeset version consumes all pending changesets and updates versions and changelogs
  4. changeset publish publishes the updated packages to npm and creates git tags
  5. In CI, the official GitHub Action automates steps 3-4 via an auto-maintained "Version Packages" PR

Key Concepts

  • Changeset file — A markdown file in .changeset/ declaring which packages are affected, their bump type (major/minor/patch), and a human-readable summary that appears in the changelog
  • Version command — Consumes all pending changeset files, calculates final version bumps, updates package.json versions, generates CHANGELOG.md entries, and bumps internal dependency ranges
  • Publish command — Publishes updated packages to npm and creates git tags; must run immediately after version with no commits in between
  • Linked packages — Packages that share the highest bump type within a release but maintain independent version numbers
  • Fixed packages — Packages that always share the exact same version number across the group
  • Prerelease mode — A mode where version produces prerelease versions (e.g., 1.0.0-beta.0) for testing before stable release
  • Snapshot releases — Temporary 0.0.0-timestamp versions for ad-hoc testing without affecting the main release line

Configuration Quick Reference

OptionDefaultDescription
changelog"@changesets/cli/changelog"Changelog generator package or false to disable
commitfalseAuto-commit on version and add commands
access"restricted"npm publish access; set "public" for public scoped packages
baseBranch"main"Branch used for change detection
linked[]Groups of packages that share highest bump type
fixed[]Groups of packages that share exact version
ignore[]Packages excluded from changeset versioning
updateInternalDependencies"patch"When to bump dependents: "patch" or "minor"
privatePackages{ version: true, tag: false }Version/tag behavior for "private": true packages

Quick Reference

PatternCommand / ConfigKey Points
Initializenpx @changesets/cli initCreates .changeset/ folder with config
Add changesetnpx @changesets/cli addInteractive prompt for packages and bump type
Add empty changesetnpx @changesets/cli add --emptyDeclares no packages need versioning (satisfies CI)
Version packagesnpx @changesets/cli versionConsumes changesets, bumps versions, updates changelogs
Publish packagesnpx @changesets/cli publishPublishes to npm, creates git tags
Check statusnpx @changesets/cli statusLists pending changesets; exits 1 if changes lack changesets
Status since branchnpx @changesets/cli status --since=mainOnly checks changes since diverging from main
Enter prereleasenpx @changesets/cli pre enter <tag>Enables prerelease mode (beta, alpha, rc, next)
Exit prereleasenpx @changesets/cli pre exitReturns to normal versioning mode
Snapshot versionnpx @changesets/cli version --snapshotCreates 0.0.0-timestamp versions for testing
Snapshot publishnpx @changesets/cli publish --tag canary --no-git-tagPublishes snapshot without overwriting latest dist-tag
Link packages"linked": [["pkg-a", "pkg-b"]] in configPackages share the highest version bump type
Fix packages"fixed": [["pkg-*"]] in configPackages share the exact same version number
Ignore packages"ignore": ["pkg-internal"] in configExcludes packages from changeset versioning
Public access"access": "public" in configRequired for publishing public scoped packages
GitHub changelog"changelog": ["@changesets/changelog-github", ...]Adds PR links and contributor attribution
Auto-commit"commit": true in configVersion and add commands auto-commit changes
Internal deps"updateInternalDependencies": "patch" in configControls when internal dependents get bumped

Common Mistakes

MistakeCorrect Pattern
Committing between version and publishRun publish immediately after version with no commits in between
Forgetting --empty for PRs with no package changesUse npx @changesets/cli add --empty to satisfy CI checks
Using linked when packages must share exact versionsUse fixed for identical versions; linked only shares bump magnitude
Setting access: "restricted" for public packagesSet access: "public" in config for public npm packages
Not including fetch-depth: 0 in CI checkoutFull git history is needed for changeset detection
Running publish without building firstAlways run build step before changeset publish
Entering prerelease mode on main branchUse a dedicated branch for prereleases to avoid blocking normal releases
Ignoring packages that others depend onIgnored packages skip bumps, breaking dependents — use sparingly
Publishing snapshots with default tagAlways use --tag flag to avoid overwriting latest dist-tag
Not setting NPM_TOKEN in CI environmentBoth GITHUB_TOKEN and NPM_TOKEN are required for automated publishing
Using changeset publish in CI without the actionThe official changesets/action handles the two-mode workflow correctly
Manually editing generated CHANGELOG.mdEdit changeset files instead; changelogs are regenerated on version

Delegation

  • CI pipeline debugging: Use Explore agent for repository-specific workflow discovery
  • npm publishing issues: Use Task agent for debugging publish and registry authentication failures

If the turborepo skill is available, delegate build orchestration, task caching, and CI optimization to it. If the pnpm-workspace skill is available, delegate workspace setup, dependency linking, catalogs, and Docker deployment to it. See its monorepo integration reference for the end-to-end release pipeline.

References

Comments

Markdown supported