docs/plans/2026-06-02-simplify-plate-registry-shadcn-semantics.md
Objective:
Normalize Plate registry delivery around shadcn namespace semantics: Plate self-dependencies resolve as @plate/*, install docs present @plate as the default path, /init stays a convenience preset, and local-file compatibility remains intact.
Goal plan: docs/plans/2026-06-02-simplify-plate-registry-shadcn-semantics.md
Template: docs/plans/templates/task.md with docs and browser packs.
Task source:
@plate/* source normalization, install/MCP docs updated, shadcn parity rule updated, no generated registry output committed, focused tests/source checks/typecheck/lint/browser proof pass.Completion threshold:
@plate/<name>.@plate/<name> and legacy Plate URL dependencies./init/md present @plate as the default existing-project path./r/registries.json advertises the Plate namespace with central-index-aligned metadata.node .agents/skills/autogoal/scripts/check-complete.mjs docs/plans/2026-06-02-simplify-plate-registry-shadcn-semantics.md passes.Verification surface:
pnpm installpnpm --filter www exec bun test src/lib/registry-install.test.ts src/lib/plate-init.test.ts src/app/r/registries.json/route.test.ts scripts/registry-dependencies.test.mtspnpm --filter www exec tsx --tsconfig ./scripts/tsconfig.scripts.json scripts/check-registry-source.mtspnpm --filter www exec tsx --tsconfig ./scripts/tsconfig.scripts.json scripts/check-docs-source-parity.mtspnpm --filter www typecheckpnpm lint:fixhttp://localhost:3003/docs/installation/mcp, /docs/installation/docs, /init, /init/md, and /r/registries.json.Constraints:
build:registry outside CI.apps/www/public/r, apps/www/public/rd, or template output.Boundaries:
[email protected], ../shadcn/apps/v4/content/docs/registry/*, apps/www/scripts/*registry*, apps/www/src/lib/plate-*.ts, content/docs/installation/*, .agents/rules/shadcn-parity.mdc.www dev server at http://localhost:3003.Output budget strategy:
max_output_tokens; broad rg output was followed by focused file reads and focused diffs.Blocked condition:
[email protected] namespace APIs could not validate @plate/*, local-file sync broke, or Browser/dev server proof was unavailable.Task state:
Current verdict:
Start Gates:
| Gate | Applies | Evidence |
|---|---|---|
| Skill analysis before edits | yes | Loaded autogoal, sync-shadcn, docs-creator, browser skill, and shadcn parity rule. |
| Active goal checked or created | yes | Created active goal for Plate registry shadcn semantics. |
| Source of truth read before edits | yes | Read shadcn registry docs, shadcn registry route/validation, Plate registry scripts, init routes, install docs, and tests. |
| Tracker comments and attachments read | N/A | Current task is a direct thread instruction with no tracker. |
| Video transcript evidence required | N/A | No video or recording supplied. |
docs/solutions checked for non-trivial existing-code work | N/A | Existing source and shadcn upstream docs directly owned the decision. |
| TDD decision before behavior change or bug fix | yes | Updated focused tests for registry dependency normalization and init docs. |
| Branch decision for code-changing task | N/A | User did not request branch, commit, push, or PR. |
| Release artifact decision | yes | No changeset: docs/app registry delivery behavior only, no package release surface. |
| Browser tool decision for browser surface | yes | Used in-app Browser through repo-approved browser skill. |
| PR expectation decision | N/A | No PR requested. |
| Tracker sync expectation decision | N/A | No tracker. |
| Output budget strategy recorded | yes | Scoped/capped command output recorded above. |
| Docs pack selected | yes | Install docs and MCP docs changed. |
docs-creator loaded | yes | Loaded .agents/skills/docs-creator/SKILL.md. |
| Docs lane selected | yes | Installation/MCP docs lane. |
| Target docs and nearest sibling docs read | yes | Read installation.mdx, installation/plate-ui.mdx, installation/docs.mdx, installation/mcp.mdx, and React/Next install siblings. |
| Docs style doctrine read | yes | docs-creator current-state and shadcn-dense rules loaded. |
| Documented source owner identified | yes | Registry source owner is apps/www/scripts/*registry* plus apps/www/src/lib/plate-*.ts. |
| Browser pack selected | yes | Docs and app route browser proof required by repo rule. |
| Browser route / app surface identified | yes | /docs/installation/mcp, /docs/installation/docs, /init, /init/md, /r/registries.json. |
| Browser tool decision recorded | yes | Browser plugin used; no standalone Playwright substitute. |
| Console/network caveat policy recorded | yes | Browser runtime did not expose console/resource APIs; route status and dev-server 200 logs were recorded. |
Work Checklist:
/Users/zbeyens/git/plate against apps/www.pnpm install regenerated skill mirror.Completion Gates:
| Gate | Applies | Required action | Evidence |
|---|---|---|---|
| Named verification threshold | yes | Run named commands and Browser proof | All listed command and Browser proofs completed. |
| Bug reproduced before fix | N/A | Record N/A | This is registry contract simplification, not a bug repro. |
| Targeted behavior verification | yes | Run focused tests/source assertions | Bun tests, registry source check, docs source parity check passed. |
| TypeScript or typed config changed | yes | Run relevant typecheck | pnpm --filter www typecheck passed. |
| Package exports or file layout changed | N/A | Record N/A | No exports or file layout changed. |
| Package manifests, lockfile, or install graph changed | yes | Run install | pnpm install passed to regenerate skills; lockfile was already up to date. |
| Agent rules or skills changed | yes | Run pnpm install and verify generated skill sync | pnpm install passed; rg confirmed generated shadcn-parity/SKILL.md includes @plate/* rule. |
| Workspace authority proof | yes | Verify in owning app | All commands ran in /Users/zbeyens/git/plate with www filters or apps/www script ownership. |
| Browser surface changed | yes | Capture Browser proof | Browser verified MCP docs, Local Docs, /init, /init/md, and /r/registries.json. |
| Browser final proof | yes | Record exact browser verification caveat | Browser proof recorded; console/resource API unavailable, dev-server 200 route logs recorded. |
| CI-controlled template output changed | N/A | Record N/A | No template output edited. |
| Package behavior or public API changed | N/A | Record N/A | No package release API changed. |
| Registry-only component work changed | N/A | Record N/A | Registry delivery scripts changed, not a component registry item. |
| Docs or content changed | yes | Verify source-backed claims, links, and rendered output | Docs source parity and Browser docs page proof passed. |
| High-risk mini gate | yes | Record failure mode and proof plan | Failure mode: self-deps resolve as stale URLs or local-file sync breaks; tests/checks cover both. |
| Agent-native review for agent/tooling changes | yes | Source/generation review | .agents/rules/shadcn-parity.mdc source edited, generated skill mirror verified. |
| Local install corruption suspected | N/A | Record N/A | No local install corruption signal. |
| Autoreview for non-trivial implementation changes | N/A | Record N/A | Narrow source-backed change with focused tests, typecheck, lint, browser proof. |
| PR create or update | N/A | Record N/A | User did not request PR. |
| Task-style PR body verified | N/A | Record N/A | No PR. |
| PR proof image hosting | N/A | Record N/A | No PR. |
| Tracker sync-back | N/A | Record N/A | No tracker. |
| Final handoff contract | yes | Fill final handoff fields | Completed below. |
| Final lint | yes | Run pnpm lint:fix | pnpm lint:fix passed; fixed two formatting/newline issues. |
| Output budget discipline | yes | Verify scoped/capped output | Broad output was capped; follow-up reads were focused. |
| Goal plan complete | yes | Run completion checker | node .agents/skills/autogoal/scripts/check-complete.mjs docs/plans/2026-06-02-simplify-plate-registry-shadcn-semantics.md passed. |
| Docs source-backed claim audit | yes | Verify docs claims against source | Source-backed by shadcn registry docs and Plate registry config/tests. |
| Docs links / routes / previews | yes | Verify routes | Browser verified docs routes; no preview changed. |
| Docs MDX/content parser | yes | Run docs source parser | pnpm --filter www typecheck ran build:source and docs parity. |
| Plugin page specifics | N/A | Record N/A | No plugin page changed. |
| Browser interaction proof | yes | Exercise routes with Browser | Completed through in-app Browser. |
| Browser console/network check | partial | Record caveat | Runtime console/resource APIs unavailable; route status and dev-server 200 logs recorded. |
| Browser final proof artifact | yes | Record route proof | Exact Browser JSON/text checks recorded below. |
Phase / pass table:
| Phase | Status | Evidence | Next |
|---|---|---|---|
| Intake and source read | completed | Read upstream shadcn registry docs and Plate registry/install source. | implementation |
| Implementation | completed | Patched registry dependency normalization, init/docs copy, parity rule, and directory description. | verification |
| Verification | completed | Focused tests, source checks, typecheck, lint, Browser route proof. | closeout |
| PR / tracker sync | N/A | No PR or tracker requested. | final response |
| Closeout | completed | Goal ledger filled; completion checker next. | final response |
Findings:
@plate/* and reserve absolute URLs for direct URL installs and compatibility input.components.json registry configuration look required. Existing shadcn projects can install from @plate directly.Decisions and tradeoffs:
loadRegistryItem route handlers because Plate’s registry is large and docs-heavy./init as a convenience preset, not the main install story.Implementation notes:
toRegistryDependencySpecifier('toolbar') now returns @plate/toolbar.toLocalRegistryDependency('@plate/toolbar') still returns toolbar.json, preserving local-file template sync.plateInitRegistryItem still writes components.json registry config for preset installs./r/registries.json now matches the central shadcn directory description for @plate.Review fixes:
PLATE_REGISTRY_DESCRIPTION with shadcn central index wording.pnpm install after editing .agents/rules/shadcn-parity.mdc and verified generated SKILL.md.Error attempts:
| Error / failed attempt | Count | Next different move | Resolution |
|---|---|---|---|
Browser networkidle unsupported | 1 | Use supported load state | Browser proof continued. |
Browser page fetch unavailable | 1 | Navigate to routes directly | Route JSON/markdown proof completed. |
| Browser resource API unavailable | 1 | Use route status and dev-server logs | Recorded caveat and 200 logs. |
Verification evidence:
pnpm install passed; Skiller regenerated agent guidance.rg -n 'prefer \@plate|old generated registry output' .agents/skills/shadcn-parity/SKILL.md .agents/rules/shadcn-parity.mdc` confirmed source and generated skill mirror.pnpm --filter www exec bun test src/lib/registry-install.test.ts src/lib/plate-init.test.ts src/app/r/registries.json/route.test.ts scripts/registry-dependencies.test.mts passed: 11 tests, 32 assertions.pnpm --filter www exec bun test src/app/r/registries.json/route.test.ts src/lib/plate-init.test.ts scripts/registry-dependencies.test.mts passed: 8 tests, 25 assertions.pnpm --filter www exec tsx --tsconfig ./scripts/tsconfig.scripts.json scripts/check-registry-source.mts passed.pnpm --filter www exec tsx --tsconfig ./scripts/tsconfig.scripts.json scripts/check-docs-source-parity.mts passed.pnpm --filter www exec node assertion showed plate-ui -> @plate/plate-ui, editor-base-kit -> @plate/editor-base-kit, @shadcn/button preserved, direct URL preserved.pnpm --filter www typecheck passed.pnpm lint:fix passed.node .agents/skills/autogoal/scripts/check-complete.mjs docs/plans/2026-06-02-simplify-plate-registry-shadcn-semantics.md passed./docs/installation/mcp: code blocks render @plate/editor-basic, preset command remains, manual registry config block absent./docs/installation/docs: renders @plate/fumadocs, mentions @plate registry, stale replace https://platejs.org/r/ instruction absent, raw file URL guidance present./init: name=plate, type=registry:base, dependency @plate/editor-basic, registry URL https://platejs.org/r/{name}.json./init/md: namespaced add command and preset command present; add command appears before config block./r/registries.json: one @plate entry with homepage https://platejs.org, URL https://platejs.org/r/{name}.json, description AI-powered rich text editor for React./docs/installation/mcp, /docs/installation/docs, /init, /init/md, and /r/registries.json.Reboot status:
www dev server stayed running on http://localhost:3003.Open risks:
apps/www/public/r, apps/www/public/rd, and apps/www/src/__registry__/index.tsx still contains old absolute Plate URLs until CI runs build:registry. This is intentional under repo policy; source checks prove the next generated output contract.Final handoff contract:
http://localhost:3003.@plate as the default install path.Task-style PR body contract:
Final handoff / sync:
Timeline: