Command: changeset
52
58%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./.agents/skills/changeset/SKILL.mdChangesets 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.mdmain, never last commitNEVER write a changeset relative to the last commit, staged diff, current working tree, branch-local plan, or the change you just made. Those are agent breadcrumbs, not release truth.
Before creating or editing a changeset, answer one question:
What will a user upgrading from current
mainobserve?
Use main / origin/main as the release baseline. If a symbol, option,
behavior, file, or bug only existed inside the current branch and never existed
on main, do not write a removal, migration, or breaking changeset for it.
Instead, describe only the final user-visible delta from main, or write no
changeset if there is no published package delta.
Write changesets for the user-visible delta from the current main branch.
That means:
main need to knowmain before
writing removal or migration proseDo 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 --checksync-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 ButtonUse 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 correctlyAPI 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 itmain? Delete that claimFor apps/www/src/registry changes, use the registry-changelog skill. Do not
duplicate its schema here.
45116fd
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.