Skip to content

feat(create-meith): scaffold plugin and theme workspaces from the worked examples - #258

Merged
jouwdan merged 1 commit into
mainfrom
claude/mei-115-xt6308
Aug 26, 2026
Merged

feat(create-meith): scaffold plugin and theme workspaces from the worked examples#258
jouwdan merged 1 commit into
mainfrom
claude/mei-115-xt6308

Conversation

@jouwdan

@jouwdan jouwdan commented Aug 26, 2026

Copy link
Copy Markdown
Collaborator

Part of MEI-115 (deliverable 1 of 4: scaffolds). The remaining deliverables — packed-kit smoke, authoring tutorial, and the approved first-cohort plugins — follow as separate PRs, per the ticket.

What this adds

npx create-meith --plugin <name> and npx create-meith --theme <name> write standalone extension workspaces:

  • Source and a passing test generated from the worked examples. scripts/extension-scaffold-gen.mts reads examples/hello-plugin and examples/iris-theme, rewrites their example-specific names into placeholder tokens through an anchored substitution list (every anchor must match, and no trace of hello/iris may survive — the script fails loudly either way), and emits packages/create-meith/src/extension-templates.ts. pnpm extension:gen:check joins verify and the CI static job, so editing an example is editing the scaffold and the two cannot drift — the board-installer-gen.mts pattern the ticket recommends.
  • A workspace that proves itself: package.json depending on the published @meith/plugin-kit (or @meith/theme-kit + @meith/theme-default) at the exact release version, a tsconfig, a vitest setup, and the example's tests exercising a real hook (view.footer) or the resolved theme contract.
  • A README walking through local development against a scaffolded board (path install, community.plugins.ts / community.config.ts registration) and marketplace submission.
  • A pre-filled listing.json that passes marketplace-gen's validateEntry (asserted in the tests).

The plugin scaffold, unlike the example it comes from, exports the fixed plugin/messages names community plugin:add and board:gen expect, so it is manifest-installable as scaffolded.

Validated

  • pnpm verify passes (including the new extension:gen:check gate; 36 new tests).
  • Scaffolded both kinds into a temp dir against the published 0.21.2 kits: npm install, npm test, and npm run typecheck all pass for both (the typecheck run is what surfaced the @types/node devDependency the scaffold now carries).
  • slots:check learned to skip the generated templates file, which holds a defineTheme( call as string data — documented in docs/contributing/development.md.

🤖 Generated with Claude Code

https://claude.ai/code/session_01G22SRRgkUV7doefmw9NMNf


Generated by Claude Code

…ked examples

npx create-meith --plugin <name> and --theme <name> write standalone
extension workspaces: source and a passing test generated from
examples/hello-plugin and examples/iris-theme by
scripts/extension-scaffold-gen.mts (pnpm extension:gen, checked in verify
and CI so the scaffold cannot drift from the examples), a README that
walks through running the extension inside a scaffolded board, and a
pre-filled marketplace listing.json that passes the marketplace
validator.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01G22SRRgkUV7doefmw9NMNf
@jouwdan
jouwdan merged commit 567caba into main Aug 26, 2026
14 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants