markdown-to-slides
Skill1 starsChanged 3 months agoMITView on GitHub
Use when the user wants to author a talk, deck, or lecture from plain Markdown and export it to PDF/PPTX/HTML — build a slide deck with reveal.js, Marp, or Slidev, theme/brand an existing deck, or set up a live-reloading slide preview.
- Installs packages
In this repository58 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- api-test-suiteSkill
- ascii-artSkill
- caddy-reverse-proxySkill
- changelog-generatorSkill
- color-palette-generatorSkill
- cron-taskSkill
- csv-toolkitSkill
- discord-bot-buildSkill
- docker-umbrellaSkill
- dotfiles-manageSkill
- email-sendSkill
- env-config-managerSkill
- excalidraw-diagramSkill
- file-organizerSkill
- forgejo-self-hostSkill
- frontend-design-toolkitSkill
- generate-dockerfileSkill
- gif-searchSkill
- git-backupSkill
- github-actions-ciSkill
- hallmark-readmeSkill
- http-api-testerSkill
- invoice-generatorSkill
- json-formatterSkill
- log-analyzerSkill
- markdown-linterSkill
- markdown-to-pdfSkill
- mcp-server-buildSkill
- media-id-mappingSkill
- movie-catalogue-siteSkill
- movie-night-calendarSkill
- ntfy-notifierSkill
- ocr-documentsSkill
- ollama-localSkill
- openapi-generatorSkill
- password-generatorSkill
- pdf-extractSkill
- portfolio-upkeepSkill
- qr-code-generatorSkill
- regex-testerSkill
- resume-builderSkill
- rss-monitorSkill
- searxng-self-hostSkill
- skill-publishSkill
- skill-registry-catalogSkill
- skills-portfolio-scaffoldSkill
- snippet-managerSkill
- sqlite-dashboardSkill
- streaming-provider-embedsSkill
- tailscale-deploySkill
- telegram-bot-buildSkill
- tmdb-metadataSkill
- uptime-kuma-self-hostSkill
- watchlist-syncSkill
- webhook-receiverSkill
- youtube-transcriptSkill
The file
We split this skill into the rules it gives an agent
10 rules. About 0 are common, 5 are distinctive, and 5 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈5
Distinctive · estimate
This author's own choices. Worth a look.
5
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 32
Do not use it for static documents (use a doc/reports skill), posters, or infographics where a single fixed canvas is the deliverable.
- Very specific: line 71
All three use --- on its own line as the default slide separator.
- Very specific: line 95
Use --- for horizontal slides and -- for vertical (nested) slides:
- Very specific: line 107
Add speaker notes with HTML comments: <!-- .slide: data-notes="Talk about X" --> or a Notes: block when using reveal-md note syntax.
- Distinctive: line 170
Use the print-to-PDF query param in a headless browser, or:
- Very specific: line 183
Ensure npx playwright install chromium is available for PDF/PPTX builds.
- Distinctive: line 193
Always preview before exporting.
- Distinctive: line 199
Keep front matter at the very top and ensure a blank line around separators or the parser reads the first content slide as more front …
- Very specific: line 204
Absolute image paths break in export: Use relative paths, and pass --allow-local-files (Marp) or run the export from the deck's own …
- Distinctive: line 215
Watch-mode port clash: If a preview server won't start, the port is likely already bound by a previous run — kill the stray process or pass …
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
markdown-to-slides
Overview
Author beautiful presentations from plain Markdown — no drag-and-drop editors, no locked-in proprietary formats. This skill covers three widely used engines (reveal.js, Marp, Slidev), their slide-delimiter syntax, theming, live preview, and one-command export to PDF or PowerPoint.
When to Use
Reach for this skill whenever the user asks to:
- Build a slide deck, talk, keynote, or lecture from Markdown or notes.
- Convert an existing Markdown document into slides.
- Theme, brand, or restyle a presentation quickly.
- Export slides to PDF (for sharing/handouts) or PPTX (for collaborators).
- Set up a live-reloading preview while writing a talk.
Do not use it for static documents (use a doc/reports skill), posters, or infographics where a single fixed canvas is the deliverable.
Tools
Pick an engine based on the job. All three consume Markdown; they differ in philosophy and export strength.
reveal.js
- Best for: rich, interactive, animated decks; speaker notes; embedded code execution; vertical/nested slides.
- Authoring: raw HTML + Markdown, or the
reveal-mdCLI which wraps Markdown in a reveal.js scaffold. - Install:
npm install -g reveal-md(CLI) ornpm create reveal@latest. - Run:
reveal-md deck.md→ serves athttp://localhost:5655. - Strengths: largest plugin ecosystem (math, charts, audio, PDF export).
Marp
- Best for: minimal, opinionated Markdown→slides with zero fuss. Great for docs teams that already write Markdown.
- Authoring: standard Markdown with a
---slide separator and YAML front matter for theming. - Install:
npm install -g @marp-team/marp-cli. - Run:
marp deck.md -w(watch mode) ormarp deck.md --pdf. - Strengths: fastest path to a clean deck; first-class PDF/PPTX/HTML export; official VSCode extension with live preview.
Slidev
- Best for: developer talks — code highlighting, live demos, Vue components inside slides, drawing on slides.
- Authoring: Markdown with
---separators and<style>/<script>blocks; slide-level<v-clicks>for step animations. - Install:
npm init slidevthennpm install. - Run:
npm run dev→ serves athttp://localhost:3030. - Strengths: built on Vite (HMR), draws on slide, records presentations,
exports to PDF/PPTX via
@slidev/clibuild.
Markdown Syntax for Slides
All three use --- on its own line as the default slide separator.
---
# Title Slide
A subtitle here
---
## Slide Two
- Bullet one
- Bullet two
> A blockquote for emphasis
---
## Slide Three
\`\`\`js
console.log("code is highlighted");
\`\`\`reveal.js (via reveal-md)
Use --- for horizontal slides and -- for vertical (nested) slides:
# Horizontal A
---
# Horizontal B
--
## Nested under BAdd speaker notes with HTML comments: <!-- .slide: data-notes="Talk about X" -->
or a Notes: block when using reveal-md note syntax.
Marp
Front matter controls the deck globally:
---
marp: true
theme: default
paginate: true
---
# First slide<!-- _class: lead -->applies a CSS class to one slide.<!-- _backgroundColor: #0b3d91 -->sets a slide background.<!-- _paginate: false -->hides the page number on that slide.
Slidev
---separates slides;---layout: centerswitches layout for the next slide.<v-click>and<v-clicks>reveal list items step by step.- A slide's first comment block (
<!-- ... -->) becomes speaker notes.
Themes
reveal.js
Themes are CSS files in css/theme/ (e.g. black, white, league,
beige, sky, night). Switch via front matter or the theme flag:
reveal-md deck.md --theme night. Custom themes are plain CSS overriding
--r-background-color, --r-main-font, etc.
Marp
Ships with default, gaia, and uncover. Apply via front matter
theme: gaia. Custom themes are defined in a CSS file and registered with
@theme mytheme directives (see Marp core docs). Brand decks by overriding
CSS custom properties:
:root {
--color-background: #0b3d91;
--color-foreground: #ffffff;
--color-primary: #ffb000;
}Slidev
Themes are npm packages (e.g. @slidev/theme-default, @slidev/theme-seriph,
@slidev/theme-apple-basic). Install and set in front matter:
theme: seriph. Unstyled local style blocks override per-deck.
Export to PDF/PPTX
Marp (simplest, recommended default)
marp deck.md --pdf deck.pdf
marp deck.md --pptx deck.pptx
marp deck.md --html deck.htmlFor pixel-perfect PDF, enable Chromium in Marp: marp --pdf --allow-local-files.
reveal.js
Use the print-to-PDF query param in a headless browser, or:
reveal-md deck.md --print deck.pdf # chromium requiredPPTX export is not native; convert the PDF, or render HTML and use a
PDF→PPTX converter (e.g. unoconv / LibreOffice headless).
Slidev
slidev build --pdf # requires playwright/chromium
slidev build --pptx # exports .pptx
slidev export deck.md # interactive export wizardEnsure npx playwright install chromium is available for PDF/PPTX builds.
Live Preview
- Marp:
marp deck.md -wplus the Marp VSCode extension (side-by-side preview). Ornpx @marp-team/marp-cli deck.md -w -sfor a server. - reveal.js:
reveal-md deck.mdopens a live server; edits hot-reload. - Slidev:
npm run devgives Vite HMR — edits appear instantly, plus a presenter mode at/presenter/0and a drawing layer.
Always preview before exporting; fonts, backgrounds, and code blocks often shift between preview and print.
Common Pitfalls
---ambiguity. YAML front matter and slide separators both use---. Keep front matter at the very top and ensure a blank line around separators or the parser reads the first content slide as more front matter.- Chromium missing. PDF/PPTX export in Marp and Slidev needs a headless
browser. Install it (
npx @marp-team/marp-cli --versionthennpx playwright install chromium) or exports silently fail with no output file. - Absolute image paths break in export. Use relative paths, and pass
--allow-local-files(Marp) or run the export from the deck's own directory so assets resolve. - Fonts not embedded. Some PDF converters drop web fonts. Prefer system
fonts or bundle
@font-facefiles alongside the deck. - Speaker notes leak into public exports. Notes render in HTML export by
default; strip them for public PDFs (
marp --pdfexcludes notes; reveal needs an explicit flag). - Engine mismatch. reveal.js uses
--for vertical slides; Marp/Slidev treat--as a thematic break (a visible horizontal rule), not a slide boundary. Don't copy---based syntax between engines. - Watch-mode port clash. If a preview server won't start, the port is likely already bound by a previous run — kill the stray process or pass an explicit port flag rather than retrying the same command.
Verification Checklist
- Every intended slide boundary (
---) actually produced a separate slide, not a merged or extra one - Exported PDF/PPTX file exists, opens, and has the same slide count as the live preview
- Code blocks in the deck show syntax highlighting in both preview and export
- Speaker notes are present in the presenter view but absent from any public-facing export
- Chosen theme's colors/fonts are visibly applied in the export, not just the preview
- No leftover
--allow-local-files/ chromium warnings in the export command's output
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

