Plugin developer portal
Zero to listed in 5 minutes: write the plugin, tag a release, validate locally, open the registry PR.
Review SLA: pass or requested changes within 3 business days; after listing, tagging a release updates automatically — no new PR needed.
1. Scaffold from the template
Generate your repo from plugin-template (one plugin per repo), write manifest.json and main.js — the id is immutable once listed.
2. Run it locally
Install via URL/local in the desktop app, confirm the nodes show up with no errors; theme plugins must keep all files within the 8-file limit.
3. Tag a release
Push a v* tag (e.g. v0.1.0) to trigger the release workflow: <id>-<version>.zip, the <id>.zip alias and manifest.json as stable assets.
4. Validate locally
Run node scripts/validate-plugin-submit.mjs --manifest ./manifest.json --repo you/repo — all green before opening the PR (same rules as CI).
5. Open the registry PR
Add one entry (id/repo/name/author/description) to plugins.json in poly-creator/plugins; listing goes live when CI passes. Later releases only need a tag.
Review bar (each maps to a rejection reason)
- One plugin per repo; the release must be stable (draft/prerelease never hit latest).
- All three assets present: versioned zip, unversioned alias zip, integrity-injected manifest.json.
- Valid manifest: safe-id, semver, main or theme.files required, permissions within the allowlist.
- In-zip manifest matches the registry entry (id/version/asset names); pinned entries need tag + sha256 together.
- trusted (with nodeEntry) gets stricter human review: declare main-process permissions minimally, default is safe.
- Delisting = deleting the entry; zips ≤ 30MiB; no ../ or absolute paths inside.