Documentation Index
Fetch the complete documentation index at: https://docs.slideless.ai/llms.txt
Use this file to discover all available pages before exploring further.
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:
| Flag | Purpose |
|---|---|
--kind <presentation|app|plan> | Required. The listing’s purpose — message, machine, or blueprint. |
--interactive | Mark the listing interactive. Optional; forced on for app, off by default for presentation. |
--description "<text>" | Required. One- or two-line summary shown in the catalog. |
--slug <slug> | Override the auto-derived slug. Must be unique; lowercase, hyphenated. |
--title <title> | Listing title. Defaults to the presentation’s title. |
--tags a,b,c | Comma-separated search tags. |
--stack a,b,c | Technologies the listing is built with or built for, as comma-separated lowercase slugs (e.g. nextjs,firebase,n8n). One canonical slug per technology; no display names or versions. Especially worth setting for plan listings so remixers can find a plan for their stack. |
--category <name> | Single category bucket for catalog filtering. |
--version <N> | Pin to a specific version instead of the current one. |
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
error.code | When | What to do |
|---|---|---|
unauthenticated | Missing or invalid API key | Run slideless login, or pass --api-key. |
permission-denied | Key lacks marketplace:publish, or caller is not the owner | Recreate the key with the marketplace:publish scope; publish from the owner’s account. |
not-found | Folder has no slideless.json | cd into a linked deck folder, or slideless push first. |
slug-taken | The slug is already in use | Pass a different --slug. |
invalid-argument | Missing --kind / --description, or bad slug syntax | Supply both required flags; slugs are lowercase and hyphenated. |
conflict | Deck already has a listing | Use slideless listing update instead of publish. |
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.