port-to-marko

Installation
SKILL.md

Port a component library to Marko (marko-ui format)

You are porting a component library to Marko 6, publishing it in the marko-ui registry format (shadcn-compatible JSON with Marko sources). Interactive behavior comes from Zag.js state machines; styling stays Tailwind. The output is installable with bunx marko-ui add.

Read references/marko-gotchas.md before writing any component — every rule in it broke real components. Read references/verification.md before claiming anything works. Read references/registry-publishing.md when you reach publishing.

Step 0 — Destination gate (do this FIRST)

Fetch the wanted-libraries list:

https://raw.githubusercontent.com/svallory/marko-ui/main/apps/docs/src/data/directory.json

Check whether the library you're porting is in the wanted array (match by name, case-insensitive).

  • Wanted library → the port goes INTO the official marko-ui repo. Fork https://github.com/svallory/marko-ui NOW, create a branch, and follow that repo's own authoring docs (CLAUDE.md, notes/component-authoring.md, /docs/creating-components) — they take precedence over this skill where they overlap. Components go in packages/shadcn/ui/<name>/ with a registry.meta.json; the finished PR must pass the repo's mechanical parity gate (see references/verification.md §Official-repo gate).
  • Not wanted → the port becomes YOUR OWN community registry. Clone the template: https://github.com/svallory/marko-ui-registry-template. You own it, you host it (GitHub Pages workflow included), and you get listed in the directory with a one-line PR. Do NOT open a PR adding an unwanted library's components to the official repo — it will be closed; the directory path exists precisely so every port can ship without gatekeeping.
Installs
2
GitHub Stars
5
First Seen
Aug 21, 2026