Skip to main content

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

# from inside a linked deck folder
slideless publish --kind presentation \
  --description "A clean pitch-deck starting point with placeholder slides."
This creates a public marketplace listing pinned to the deck’s current version. Anyone can then browse it at slideless.ai/marketplace and 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 public status — it shows up in search and the catalog immediately.
It does not change the underlying presentation, its share tokens, or its collaborators in any way. A listing is a layer on top.
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.json linking it. Get there with slideless push.
  • An authenticated CLI session — slideless auth login-request + login-complete, or slideless login to paste a dashboard key.
  • The active key needs the marketplace:publish scope. See API keys.
  • You must be the deck owner. Dev collaborators cannot publish.

Step by step

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:
cd ./my-deck
slideless push --title "Q4 Pitch Template"

2. Publish

Run publish from the deck folder. --kind and --description are required; everything else is optional.
slideless publish \
  --kind presentation \
  --description "A clean pitch-deck starting point: title, problem, solution, ask." \
  --tags pitch,startup,minimal \
  --stack html,css \
  --category business
Pick the 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.
Then decide on --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:
FlagPurpose
--kind <presentation|app|plan>Required. The listing’s purpose — message, machine, or blueprint.
--interactiveMark 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,cComma-separated search tags.
--stack a,b,cTechnologies 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.
On success the CLI prints the slug and the public URL:
✓ Published  slug: q4-pitch-template
  https://slideless.ai/marketplace/q4-pitch-template
  kind: presentation · interactive: false · version: 3 · status: public

3. Manage the listing

Inspect it any time — no key needed for get:
slideless listing get q4-pitch-template
Edit metadata, change visibility, or move the version pin with listing update:
# polish the copy
slideless listing update q4-pitch-template \
  --title "Q4 Pitch Template" \
  --description "Investor-ready pitch skeleton — 8 slides, placeholder copy." \
  --readme ./LISTING.md \
  --tags pitch,startup,investor

# hide it from search but keep the slug shareable
slideless listing update q4-pitch-template --status unlisted

# point the listing at a newer pushed version
slideless listing update q4-pitch-template --republish-version
--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

slideless unpublish q4-pitch-template          # asks to confirm
slideless unpublish q4-pitch-template --yes    # skip the prompt (scripts, CI)
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 the publish-to-marketplace skill from a linked deck folder:
> /slideless:publish-to-marketplace
  kind: presentation
  description: "A clean pitch-deck starting point with placeholder slides."
The skill wraps 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 the slideless_publish_listing tool. See Claude Desktop (MCP).

Troubleshooting

error.codeWhenWhat to do
unauthenticatedMissing or invalid API keyRun slideless login, or pass --api-key.
permission-deniedKey lacks marketplace:publish, or caller is not the ownerRecreate the key with the marketplace:publish scope; publish from the owner’s account.
not-foundFolder has no slideless.jsoncd into a linked deck folder, or slideless push first.
slug-takenThe slug is already in usePass a different --slug.
invalid-argumentMissing --kind / --description, or bad slug syntaxSupply both required flags; slugs are lowercase and hyphenated.
conflictDeck already has a listingUse slideless listing update instead of publish.