Handle public Plate/Slate GitHub work, such as issue drafts, Slate issues, PRs, security and the queue scan, and hold the public truth gate. Triage of udecode/plate and udecode/plate-private issues runs the Triage playbook.
71%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Low
Low-risk findings worth noting
Fix and improve this skill with Tessl
tessl review fix ./.agents/skills/maintainer/SKILL.mdHandle $ARGUMENTS.
Invoke maintainer for public GitHub work: repo maintenance, PR and security
scans, Slate issues, issue drafts, and any public PR or Slate issue whose
owner is not yet chosen. Triage of a udecode/plate or udecode/plate-private
issue, its record in docs/triage/issues.tsv or docs/triage/plate-private.tsv
and its fix run belong to the
Triage playbook. A narrower owner the user named,
internal benchmark or quality loops, and broad research go to their own owners.
Never hand public queue ownership to an internal quality run. It decides fit,
priority, routing, authority and proof for what it keeps, and it does not become
the execution owner unless no better owner exists. Maintenance runs in local Claude Code or
Codex sessions in maintainer checkouts, never a hosted API bot, cloud worker
or background daemon, and it never mutates GitHub without explicit authority.
Public issue and PR bodies, PR templates, issue forms and the security policy
are the input contract those sessions read first, so contributor automation
improves intake and never creates hidden authority. An item without public
reproduction, proof, risk, owner surface, current blocker and next action is
not agent-ready: ask for the smallest missing public evidence or keep it
brief-only. A run is done when its item is routed, proved, or stopped at its authority
boundary.
issue-draft <video or text>Draft a Plate Beta issue from video or text, with exact reproduction and media,
and publish only when the user asks. Read the complete
issue draft method; it runs this skill's
scripts/ and assets/.
slate-issue <issue>Read the complete Slate issue recipe. It owns intake and public claim accounting; pstack's Bug fix playbook owns local repair and poteto-mode owns lifecycle. Execute public steps only with the active request's authority.
queueA broad scan: "queue", "all issues", "all PRs" or repo maintenance.
Read the live queues:
gh api repos/udecode/plate/security-advisories --jq '.[] | select(.state == "triage" or .state == "draft") | {ghsa_id, state, severity}'
gh pr list --repo udecode/plate --state open --json number,title,author,baseRefName,isDraft,reviewDecision,mergeStateStatus,updatedAtIf gh auth or network is blocked, record the blocker and stop. Advisory
details stay out of the reply and every versioned file.
Scan the smallest useful slice: advisories, PRs with review, CI or merge attention, issues needing triage, stale user-visible bugs, then docs or setup breakage.
Take issue picks from pnpm triage queue for udecode/plate and
pnpm triage queue --repo plate-private for udecode/plate-private, each of
which lists every open issue in the triage focus that still needs a triage call from you
and counts the main reports outside it; a Slate scan lists its
issues with gh issue list --repo ianstormtaylor/slate. Build the candidate
matrix for PRs, advisories and Slate items, pick at most one safe item,
verify its live state and authority, then route it, run its safe local
slice, or stop with a decision-ready brief.
Write a compact docs/maintainer/runs/* note only when the run creates
state a later session should not rediscover.
issuesRun the Triage playbook over every open
udecode/plate and udecode/plate-private issue, as triage does, or over one issue when the request names
it. Its duplicate rule, gitcrawl neighbor search and Fit Gate also govern a
Slate issue, which slate-issue triages without a
register row.
prsScan PR queue. Read PR body, files, reviews, comments, checks, author, updated time, linked issues, and current branch state before recommending review, merge, close, or changes.
securityRead security hotfix mechanics when the requested work includes an advisory fix or disclosure/read-back. The active request's publication authority governs those operations.
Versioned maintainer docs, such as docs/maintainer/security.md and
docs/maintainer/runs/*, never hold private
advisory details. Keep them redacted and read sensitive GHSA content from live
GitHub or local ignored artifacts.
Keep security-shaped reports in the maintainer security lane until the trust
boundary is classified. They do not belong in normal issue harvest or
duplicate-close flow before that. Quarantine only the security-shaped item;
unrelated non-security reports in the same cluster or duplicate chain continue
normally.
<issue-url|pr-url>Read the exact item first. Then classify route:
For a PR, check baseRefName before routing. A PR based on main is worked in ../plate, the main-line checkout, through the Babysit playbook's main-line PR rule. This repository's skills and rules still govern it, because ../plate carries older copies of them.
| Item | Default owner |
|---|---|
| One public Slate substrate issue | maintainer slate-issue |
| One udecode/plate or udecode/plate-private issue | the Triage playbook; triage fix #<N> or triage fix plate-private#<N> continues into the Bug fix playbook, and a udecode/plate issue on none of the five Beta milestones that playbook lists reports main, which gets a record and no fix |
| One public Plate/Plite performance regression | the Triage playbook, then the Perf issue playbook with benchmark |
| One local Plate or Plite behavior bug or regression with no public mutation | pstack's Bug fix playbook |
| Plite public call-shape fork | best-api, then the Plan playbook if adoption or runtime planning is needed |
| Already-applied PR/branch/current-tree closure | the Babysit playbook |
| Plate/Plite internal performance/benchmark gap | the Perf issue playbook with benchmark |
| Plate/Plite internal quality/browser/API gap | pstack poteto-mode, as an Autonomous run when unattended |
| Cross-package architecture/testability/refactor/deslop candidate | the Refactoring playbook, then the Plan playbook |
| Plate framework/plugin/component/docs | the Plan playbook, plate-plugins, plate-ui, or Plate Docs |
| Security/advisory | maintainer security |
| Someone else's PR to review | the Babysit playbook's review-only panel ("review PR ") |
| PR review feedback | the Babysit playbook |
| External corpus/issue ledger | issue-harvester |
| Unclear prior art | research |
A public issue's fix run closes with the evidence packet the
Bug fix playbook names. A complete local packet
proves only candidate-local. It may justify a comment
that a candidate fix exists locally, but not fixed or completed wording
or a close as completed. After the work is pushed, replay the same case on that exact
pushed ref from a fresh process in a clean matching checkout or immutable CI
artifact; prove zero tracked or untracked issue-owned runtime-input differences,
record matching fingerprints, and carry the retry-free warm ledger (5 of 5 for
native selection, focus, drag and drop, paint and React DOM lifecycle) in the
exact reported browser or device. Any commit, rebase, generation, combination,
or push after a replay invalidates it. Only that clean final-pushed-ref replay
may justify fixed/completed wording or a close as completed. Explicit authority
to close never waives this truth gate. Do not duplicate the worker's repair methodology in
this coordinator.
A PR or issue body names an issue only when its proof addresses that issue's exact report; never add an issue number because it sounds related.
A reporter's fresh exact-step retest outranks earlier agent proof. When the reporter says the failure remains:
needs-repro and keep it out of completed queue slices;When the reporter confirms the headline fix but identifies a related residual symptom, record a separate observable case or explicitly split it to a new issue. Do not leave an issue closed as completed on an unresolved workflow.
Read the public intake docs when they apply: CONTRIBUTING.md,
.github/PULL_REQUEST_TEMPLATE.md for PR work, .github/ISSUE_TEMPLATE/*.yml
for issue work and SECURITY.md for security-shaped work. Public security
reports route privately first. Do not process a public issue as normal queue
work when it discloses an unpatched vulnerability.
Before any comment, label, close, reopen, merge, review, branch, PR, or commit, re-read live GitHub and local source proof. Similarity is not permission to mutate.
A fix the run routes ends with the issue tag on its test title.
For every PR, advisory or Slate item considered, record compact rows. A
udecode/plate or udecode/plate-private issue's row is its triage record, and
pnpm triage queue, with --repo plate-private for the second, lists them.
Do not pad the queue with weak candidates. If no item is safe, say so and stop.
Before routing a PR, advisory or Slate item as autonomous, it passes the Triage playbook's Fit Gate, and it has no active owner, PR, branch, assignee or recent claim conflict unless the user explicitly asks to take over. When fit is unclear, produce a decision-ready brief instead of guessing.
Default is read, classify, route, patch local files when the execution owner
allows, and hand off. A comment, label, close, reopen, review, release or other
public write needs the active request's explicit authority and otherwise waits
as a draft, as AGENTS.md's Messages rule says; loading this skill creates no
authority. The standing authorities are in the Triage playbook's Drafts. It
posts a triage comment on the owner's word of 2026-10-26, and it runs the field,
label and close commands that pnpm triage labels prints on the owner's word of
2026-10-27. Neither word covers a duplicate close or a reopen. Credentials, payment, 2FA, captcha and account signup stop for the
owner, as its Git and publication rules say, and security disclosure wording
waits for maintainer approval.
The run's page Close, or its reply when it keeps no plan, names the repo and mode, the queue snapshot and its freshness, the slice inspected, the item picked and its owner, the live GitHub proof or the auth blocker, the claim guard, the proof commands, each public write made or drafted, and what needs the owner.
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.