with one click
changeset
Command: changeset
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Command: changeset
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
Work heavyweight framework or library tasks with planning-first research, selective deep analysis, and rigorous handoff
Slate v2 one-command ship/readiness mini-skill. Runs finalization preview, picks the review shape, runs pre-commit gates/autoreview, pauses for commit approval, then commits/finalizes after confirmation.
Work a task end-to-end with lean context gathering, implementation, and verification
One-command shortcut for syncing origin/main directly into origin/next through release-lanes. Use when the user says sync-main-to-next, asks to sync main into next, asks after a stable release what sync is needed, or wants the fastest safe beta lane catch-up without promotion or broad release-lane ceremony.
Compatibility entrypoint for beta promotion. Prefer release-lanes for end-to-end latest/beta lane maintenance.
Maintain Plate's latest and beta release lanes end-to-end with an autogoal plan: promote next to main, sync main directly back into next, repair release metadata conflicts, re-enter beta, and verify npm/GitHub release state.
| description | Command: changeset |
| name | changeset |
| metadata | {"skiller":{"source":".agents/rules/changeset.mdc"}} |
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, 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 --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 itmain? Delete that claimFor apps/www/src/registry changes, use the registry-changelog skill. Do not
duplicate its schema here.