| Initialize | npx @changesets/cli init | Creates .changeset/ folder with config |
| Add changeset | npx @changesets/cli add | Interactive prompt for packages and bump type |
| Add empty changeset | npx @changesets/cli add --empty | Declares no packages need versioning (satisfies CI) |
| Version packages | npx @changesets/cli version | Consumes changesets, bumps versions, updates changelogs |
| Publish packages | npx @changesets/cli publish | Publishes to npm, creates git tags |
| Check status | npx @changesets/cli status | Lists pending changesets; exits 1 if changes lack changesets |
| Status since branch | npx @changesets/cli status --since=main | Only checks changes since diverging from main |
| Enter prerelease | npx @changesets/cli pre enter <tag> | Enables prerelease mode (beta, alpha, rc, next) |
| Exit prerelease | npx @changesets/cli pre exit | Returns to normal versioning mode |
| Snapshot version | npx @changesets/cli version --snapshot | Creates 0.0.0-timestamp versions for testing |
| Snapshot publish | npx @changesets/cli publish --tag canary --no-git-tag | Publishes snapshot without overwriting latest dist-tag |
| Link packages | "linked": [["pkg-a", "pkg-b"]] in config | Packages share the highest version bump type |
| Fix packages | "fixed": [["pkg-*"]] in config | Packages share the exact same version number |
| Ignore packages | "ignore": ["pkg-internal"] in config | Excludes packages from changeset versioning |
| Public access | "access": "public" in config | Required for publishing public scoped packages |
| GitHub changelog | "changelog": ["@changesets/changelog-github", ...] | Adds PR links and contributor attribution |
| Auto-commit | "commit": true in config | Version and add commands auto-commit changes |
| Internal deps | "updateInternalDependencies": "patch" in config | Controls when internal dependents get bumped |