Generating Changesets
Use this skill when the user asks to create a changeset or add a changeset.
What is a Changeset?
A changeset is a markdown file with YAML front matter that documents:
-
Which packages need to be released
-
What semver bump type (major, minor, or patch) each package should receive
-
A changelog entry describing the changes
Changeset File Format
Changeset files are stored in .changeset/ directory with a unique filename: {unique-id}.md
"package-name": major|minor|patch "another-package": minor
A description of the changes that will appear in the changelog.
Package Names
Use the exact package name from the package's package.json file. Common packages:
-
cojson
-
jazz-tools
-
jazz-run
-
jazz-webhook
-
cojson-core-wasm
-
cojson-core-rn
-
cojson-core-napi
-
cojson-storage-indexeddb
-
cojson-storage-sqlite
-
cojson-storage-do-sqlite
-
cojson-transport-ws
-
community-jazz-vue
-
create-jazz-app
-
hash-slash
-
quint-ui
Important: Always check the actual package.json file to get the exact package name.
Semver Bump Types
-
major: Never use this, we are still in v0
-
minor: Breaking changes that require users to update their code
-
patch: New features that are backward compatible, bug fixes and small changes
Important: minor is only for breaking changes. Everything else should be patch .
Example Changeset
"jazz-tools": patch
Added new useSuspenseCoState hook for data fetching using Suspense
Best Practices
-
Write clear, user-facing changelog entries (not technical commit messages)
-
Use past tense ("Added feature" not "Add feature")
-
Be specific about what changed
-
If multiple packages are affected, list them all in the front matter
Workflow
-
User describes the change they made
-
Identify which packages are affected
-
Determine the appropriate semver bump type
-
Create the changeset file in .changeset/ with a unique filename