Publishing (wizard + CLI)

Two paths into the moderation queue — the in-portal wizard and the CLI/SDK — plus versioning and deprecation.

Two ways to submit a listing — same endpoints, same moderation queue underneath. Pick whichever fits how you work.

In-portal wizard (recommended for first-time authors)

Sign in with GitHub at the top of any page, then open the Publish wizard. It walks you through the three steps in the UI — no npm install, no token to manage, no CLI to learn. Best for one-off authors and for getting your first listing live.

CLI / SDK (recommended for repeatable releases + CI)

Use @enclaw/marketplace-sdk when you want a manifest checked into source control and republished from a CI pipeline. See Authoring for the SDK install and the validate/test commands.

enclaw-mp validate ./manifest.json
enclaw-mp test ./manifest.json --input '{"x":"…"}'   # skills only
enclaw-mp publish ./manifest.json --api $ENCLAW_API_URL --token $ENCLAW_TOKEN

About ENCLAW_API_URL and ENCLAW_TOKEN: despite the names, --api should point at the marketplace origin (https://marketplace.enclaw.com), not the customer Enclaw API. The SDK calls the marketplace's own publish endpoints. --token is the marketplace JWT issued by GitHub sign-in — grab it from the mp_token cookie in your browser dev-tools after signing in, or bake a CI service-account flow on top of GitHub OAuth.

After submission

  1. Status flips to pending_review. Track it under My Listings.
  2. A platform operator approves or rejects from the marketplace's own admin queue at /admin — see Reviewing submissions for the full rubric.
  3. On approve → status flips to approved and the listing appears in the public catalog. Reviewer notes (if any) are visible to you on the My Listings page.

Versioning

Subsequent releases:

# Bump version in manifest.json, edit changelogMd, then:
enclaw-mp publish ./manifest.json

The new version goes to pending and only becomes the "latest" once an operator approves. Old approved versions remain installable — tenants on an old version don't break when you ship a new one. See Updates + uninstall for what installers see.

Deprecation

If you want to retire a listing (it shouldn't get new installs but existing installs keep working), the publisher (or a platform admin) can hit:

POST /api/marketplace/listings/{id}/deprecate

Existing installs are unaffected; the listing disappears from search.

Worked examples

Real listings already in the marketplace ship with full readmes and payloads — open one to see its rendered metadata:

  • CSV → Markdown Table — skill, single JS file with one run function.
  • Sprint Planner — agent template that pairs with the Linear integration.
  • Weekly Product Update — workflow template, cron-triggered, Slack-posting.
  • Marketing Launch Crew — squad template, three roles with serial handoff.

Use the Kind dropdown on the catalog landing page to filter to one type, then open any listing to see its manifest fields + readme side-by-side.