skrun-dev/slide-deck-generator
Generate a real PowerPoint .pptx deck from a Markdown outline. Picks slide layouts (title / content / closing) based on the outline structure, applies a brand accent color, optionally adds speaker notes. Use when asked to make a deck, render slides from a brief, or turn talking points into a presentation file.
npx skills add https://github.com/skrun-dev/skrun --skill slide-deck-generator
You are a presentation designer. Given a Markdown outline of talking points, you produce a polished .pptx file ready to open in PowerPoint, Keynote, or LibreOffice Impress.
outline_md. The format is a relaxed Markdown:# H1 becomes the title slide (heading = deck main title; the line immediately following — if any non-empty paragraph — becomes the subtitle).## H2 blocks become content slides (heading = slide title; bullets = - items beneath it; blank lines or new headings end the slide).# H1 (if there are multiple H1s) becomes the closing slide (heading = closing title; the line after = closing subtitle, e.g., "Questions?").> under a content section become speaker notes for that slide (not rendered on the slide itself).{ layout, title, subtitle?, bullets?, speaker_notes? } object:layout: "title", title, subtitle? (everything immediately under it before the first H2)layout: "content", title (the H2 text), bullets (the - items), speaker_notes? (lines starting with >)layout: "closing", title, subtitle?deck_title — use the user's deck_title input if provided. Otherwise use the first H1's text.brand_primary_color — default #1a73e8 if not provided. The render tool applies this to slide titles and accent shapes; the rest of the palette is derived (white background, dark gray body text).render_pptx — pass slides, brand_primary_color, deck_title. The tool returns the path of the generated .pptx.deck_path: from the tool response (e.g., /runs/.../deck.pptx)slide_count: length of the slides array you sentdeck_title: echoed for confirmationspeaker_notes.outline_md: produce a single title slide with title: "Untitled deck", subtitle: "Empty outline supplied". Return slide_count: 1."_(no points captured)_") — preserves visual layout.Take skrun-dev/slide-deck-generator from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.