.agents/skills/editor-spec/SKILL.md
Handle $ARGUMENTS. This is the repo workflow for turning editor-behavior ideas or changes into real Plate law instead of chat sludge.
<task>#$ARGUMENTS</task>
docs/research feeds docs/editor-behavior. Do not collapse those jobs.docs/editor-behavior files or
explicitly record why no editor-behavior patch was needed. Do not stop at
research-only updates and call the pass done.Default behavior:
When the research layer is needed, use $research-wiki instead of manually treating the command docs as a loose checklist.
Do not default this workflow to $deep-interview or $ralplan.
$deep-interview only when:Do not auto-answer a deep interview from research. If research already answers the question, skip the interview. If it does not, inventing “user answers” from research is fake clarity.
$ralplan only when:Use editor-spec to define law. Use $ralplan to plan serious execution after
the law is clear enough.
Always read these before making spec calls:
Read these when relevant:
../raw
when compiled research is missing, thin, stale, or contradictoryThis workflow should answer four questions:
That maps to:
markdown-standards.mdmarkdown-editing-spec.mdeditor-protocol-matrix.mdmarkdown-parity-matrix.mdmarkdown-editing-reference-audit.mdThis workflow covers both:
Classify the request before editing:
Also classify the feature family:
Then decide whether the question is:
Also decide the best permanent home for the contract:
@platejs/coreDo not default this decision from current file placement. Justify it from:
Use the research layer before inventing new law.
Default to $research-wiki for choosing and running the right research mode.
research-maintain when:docs/researchresearch-full when:The support docs are here:
Do not skip the research layer and jump straight from a raw source into law unless the request is tiny and the evidence is already obvious.
Do not call something “full” if you only checked one editor when the surface obviously spans Typora / Obsidian / Milkdown or other parallel corpora.
Use the hard ladder from markdown-editor-reference-audits-must-treat-silence-as-a-gap.md:
When recording evidence, use:
agreepartialgaptensiondivergeNever mark something locked because it feels standard.
Before writing UX law, lock:
Use the model classes from editor-behavior-specs-must-lock-node-model-and-affinity-before-ux.md:
block non-voidblock void atominline non-void spaninline void atomleaf marktext tokenoverlay / no nodeAffinity classes:
directionalhardoutwardnone / n-aDo not spec:
until the model is explicit.
Use this order unless the task is so small that a subset is obviously enough.
Patch markdown-standards.md when:
Patch markdown-editing-spec.md to define:
If the behavior includes editor chrome or navigation UI, also define the interaction in a way that is compatible with the shadcn composition rules above instead of leaving the UI contract hand-wavy.
If a research rerun proves that one coarse behavior was really multiple sub-surfaces, split the readable law even when the final product choice for one row does not change.
Patch editor-protocol-matrix.md to enumerate:
If a new surface really has different winners by scenario, split the rows. Do not keep one coarse row that lies.
If the rerun only confirms the current rows are already right, say that explicitly in the outcome. Do not silently skip the protocol layer and leave readers guessing whether you forgot it or deliberately kept it unchanged.
Patch markdown-parity-matrix.md when:
Do not inflate the parity matrix for speculative future product ideas that are not current Plate features.
If parity truly does not move, say so explicitly and explain why the changed authority did not change the current-feature gate.
Patch master-roadmap.md when:
Do not strand new implementation debt only in parity wording or isolated plan docs.
Patch markdown-editing-reference-audit.md only when:
Do not treat the audit as current law.
Split a family or authority lane when one winner clearly cannot cover the whole surface without lying.
Examples:
If one row needs too many caveats, split it.
For any new shared contract or cross-surface rule, ask:
If that answer differs from the current package layout, the spec should say so. Do not let current file placement bully the long-term design.
Update all of:
This applies whether you are:
Usually update:
deferred or specifiedDo not pretend it is release-gated current behavior if it is not.
Sometimes a rerun changes the research picture without changing every editor-behavior layer.
That is fine, but only if you make it explicit.
For each of:
either:
Do not leave that implicit.
For any meaningful editor-spec pass, return:
Minimum:
Also run the normal repo verification gates:
lint:fix