.agents/skills/changeset/SKILL.md
Changesets document package changes for release. Concise bullets, imperative voice, user impact only.
Core principle: one action verb + one impact statement = one bullet.
Use when:
.changeset/*.md filesDo not use for:
minorForbidden: minor changesets for:
@platejs/slate@platejs/coreplatejsUse patch instead. minor on those explodes version bumps across dependents.
# Wrong
---
"@platejs/core": minor
---
# Correct
---
"@platejs/core": patch
---
Only real breaking changes get major.
Never combine packages in one changeset.
# Wrong
---
'@platejs/core': patch
'@platejs/utils': patch
---
# Correct
.changeset/core-fix-types.md
.changeset/utils-add-helper.md
main, not to your thought processWrite changesets for the user-visible delta from the current main branch.
That means:
main need to knowDo not write:
If a package changed internally on this branch but has no user-visible delta from
main, do not write a changeset for that package.
If changes are only under apps/www/src/registry/, do not write a package changeset.
Use the registry-changelog skill instead. It owns the source entry schema,
scaffold command, generator command, and verification check:
node tooling/scripts/generate-ui-changelog-entries.mjs --new <id> --summary "<summary>" --items <item-a,item-b> --kind <kind>
node tooling/scripts/generate-ui-changelog-entries.mjs --write
node tooling/scripts/generate-ui-changelog-entries.mjs --check
sync-plate-ui is for downstream user apps consuming the generated JSON. Do not use it to produce upstream Plate changelog entries.
Use imperative voice:
Add support for XFix Y behaviorRemove deprecated ZDo not use:
Added ...We fixed ...Keep simple changes to one line:
- Fix `asChild` TypeScript error
- Add `disabled` prop to Button
Use code examples only when needed:
// Before
editor.api.foo();
// After
editor.tf.foo();
Focus on user impact only. No implementation diary.
Prefer this shape:
**Migration:** blockIf a sentence would sound stupid in release notes, cut it.
Simple:
---
"@platejs/utils": patch
---
Fix `isEmpty` not handling void elements correctly
API change:
---
"@platejs/core": patch
---
Rename `editor.api.foo` to `editor.tf.foo`
```tsx
// Before
editor.api.foo();
// After
editor.tf.foo();
```
Breaking change:
---
'@platejs/basic-nodes': major
---
Remove `SkipMarkPlugin`; functionality is built into core
**Migration:** Remove `SkipMarkPlugin` from your plugin list. Configure marks directly:
```tsx
MyMarkPlugin.configure({
rules: { selection: { affinity: 'outward' } },
});
```
Before shipping:
minor for @platejs/slate, @platejs/core, or platejs? Change to patchmain? Rewrite itFor apps/www/src/registry changes, use the registry-changelog skill. Do not
duplicate its schema here.