TL;DR
slideless remix <slug> it. Publishing is free and instant.
What this does
- Creates a listing — a public catalog entry — for the presentation linked to the current folder.
- Pins the listing to the deck’s current immutable version. Later pushes do not move the listing until you explicitly republish.
- Derives a slug from the title (override with
--slug). The slug is the listing’s permanent id in every URL and command. - Defaults the listing to
publicstatus — it shows up in search and the catalog immediately.
If the deck was created by remixing another listing, publishing carries that origin forward automatically — the new listing records
remixedFromSlug and its marketplace page shows a “Remixed from <original>” link. There is no flag for this: the lineage rides along from the remix marker through the first push. See Marketplace › remix lineage.Prerequisites
- A presentation already pushed, so the folder has a
slideless.jsonlinking it. Get there withslideless push. - An authenticated CLI session —
slideless auth login-request+login-complete, orslideless loginto paste a dashboard key. - The active key needs the
marketplace:publishscope. See API keys. - You must be the deck owner. Dev collaborators cannot publish.
Step by step
1. Link (or confirm) the deck folder
slideless publish runs inside a linked deck folder — the one with slideless.json. If you started from generate-presentation or a remix, push it first:
2. Publish
Runpublish from the deck folder. --kind and --description are required; everything else is optional.
kind deliberately — categorize by purpose (message / machine / blueprint):
--kind presentation— the message: a deck people are meant to view, whose value is your content. Static or interactive.--kind app— the machine: a self-contained browser app people are meant to operate (e.g. a single-file calculator). Always interactive.--kind plan— the blueprint: an agent-executable build plan. Publishable now; its full agent-executable format lands in a later phase.
--interactive. Interactivity is a badge, not a category: a presentation can be static or interactive — pass --interactive to flag it. An app is always interactive (the flag is forced on). An interactive parametric cost-quote is a presentation --interactive, not an app, because its value is your content.
Optionally declare a --stack — the technologies the listing is built with or built for, as free-form slugs (--stack nextjs,firebase,tailwind). This is most valuable for plan listings: a remixer searching for a build plan can run slideless search --kind plan --stack nextjs to find one that targets their stack. You can also set or change it afterwards with slideless listing update --stack.
Useful flags:
On success the CLI prints the slug and the public URL:
3. Manage the listing
Inspect it any time — no key needed forget:
listing update:
--republish-version re-pins the listing to the deck’s current version. Until you run it, the listing keeps serving whatever version you originally published — see Marketplace › lifecycle.
4. Take it down
unpublish removes the listing from the catalog. The presentation itself is untouched. It prompts for confirmation first — pass --yes to skip it, which is required in --json / non-interactive mode. You must unpublish before you can slideless delete the underlying deck.
From the plugin (Claude Code / Cursor)
Invoke thepublish-to-marketplace skill from a linked deck folder:
slideless publish --json, checks the folder is linked and the key has marketplace:publish, and reports the resulting slug and URL.
From Claude Desktop (MCP)
Ask Claude: “Publish my linked deck to the Slideless marketplace as a presentation.” Claude calls theslideless_publish_listing tool. See Claude Desktop (MCP).
Troubleshooting
Related
- Marketplace concept — listings,
kind, public/unlisted, stars. - Remixing templates — the other side of the marketplace.
POST /publishMarketplaceListing— the endpointpublishcalls.- API keys — the
marketplace:publishscope.