Use before adding or changing a plugin's stage fields or options, such as read middleware, contributions, transfer vetoes or landing policy, and for a feature that spans Plite, Plate, the registry and docs. Load it before any edit to a Base plugin file under packages/platejs/src, such as packages/platejs/src/features/*/lib/Base*Plugin.ts, even when the task reads as Plite core, editor behavior or a bug fix. Builds Plate plugins and entrypoints with semantic ownership, inference, scoped capabilities and package proof, and delivers a feature across its package, UI, docs and release. Use it also when a change touches a plugin's Markdown or HTML encode or decode mapping or its preserve claims.
89%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Passed
No findings from the security scan
Build Plate plugins that do not need a later plate-next cleanup.
This skill owns plugin authoring mechanics: semantic layer, durable source
owners, file topology, contextual typing, initial state, scoped stores/APIs and
transactions, React families, and package-local proof. The plugin law it
applies lives in docs/vision/plate.md (Plugin and component doctrine) and
docs/vision/plite.md (Plite API Direction); read the relevant section
instead of a copy here.
Before authoring or refactoring a plugin, read:
Use plugin-authoring-audit.md only for current repo examples. Plate foundation builders and type tests outrank precedent.
Semantic base first, Plate second.
src/lib with
definePlugin.toReactPlugin only in its live React
adapter; do not re-author it with definePlugin.definePlugin directly only for a real React/Plate-native plugin.Named direct-Plate exceptions:
Colocation is the default.
define*Plugin / .extend() chain. This includes one-use with*,
decorate*, normalizers, parsers, commands, corrections, matchers, state,
APIs, and tx callbacks.For copied app/registry source, stop here and follow plate-ui; this skill does
not own copied-item colocation, dependency metadata, or browser proof.
Read this reference when authoring inferred plugin capabilities, current-owner context, API/transaction methods, component bindings, or Plite primitives.
plate-ui owns component, hook, context, provider, primitive, and React 19
shape. This skill only implements that accepted shape inside the package and
proves package behavior.verify's testing reference
owns spec families, fixtures and inline test construction.Read this reference before creating a public entrypoint, changing platejs
dependencies or peers, or moving a package into a platejs/<feature>
entrypoint. It holds the package host law, entrypoint creation and the Oxlint
boundary graph.
Read this reference when one feature must reach registry consumers across its
package, React adapter, copied UI, docs and release. The Plan playbook copies
the template into the plan, appends
Benchmark's performance-observability pack when the Scale proof row is yes,
and the Build playbook closes it with
node tooling/scripts/check-plate-feature.mjs <plan>.
no with a concrete N/A reason.HistoryPlugin and YjsPlugin do, copies every registration of
its closest wrapped analog, found by grepping that analog's name across
tooling/ and the lint configuration.best-api; otherwise keep the inferred
plugin chain inline.pnpm --filter platejs build when a plugin wraps a native factory,
because the declaration build reports TS4094 errors the typecheck skips;config,
parameter-threaded editor / api / read / tx helpers, and one-use
file taxonomies.udecode/plate
f0c616a
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.