--- name: slide-deck-creator description: Create a single-file HTML slide deck in the Automattic typography-first design (white-and-blue, sentence case, one accent color, no animations). Output is one self-contained HTML file with all CSS, JS, and SVG inlined — only fonts and remote images load from the internet. Bundles 15 layout patterns (cover, TOC, section dividers, metrics, bulleted list, table, pull quote, columns, numbered data, closing) plus presenter-notes mode (press P) with dual timers and two-way nav sync. Use when the user wants a slide deck, presentation, talk deck, pitch deck, all-hands deck, or wants to convert a PowerPoint (.pptx) to web — e.g. "make me a slide deck", "build a presentation", "turn this into slides", "create a deck", "convert this pptx". Designed for Automattic internal and external use; output deck is single-file and easy to share. license: GPL-2.0 --- # Slide Deck Creator Generate a **single-file HTML deck** in the Automattic design system. The output is one `.html` file — all CSS, JS, and SVG inlined; only fonts and any user-supplied remote images load from the network. Includes presenter notes mode (press **P**) out of the box. This is **one style only.** No style picker, no preset selection. The deck is typography-first, white-and-blue, sentence case, generously padded, no animations, no shadows, no rounded corners, no gradients. If the user wants a different aesthetic, stop and say this skill only produces this one look. ## Detect mode first - **New deck** — user describes what they want to present. Go to *Content discovery*. - **PPT conversion** — user has a `.ppt` or `.pptx`. Read `references/ppt-conversion.md`, run the extractor, confirm structure, then proceed with the standard generate step using the Automattic layouts. - **Edit existing Automattic deck** — user has a deck previously created by this skill and wants tweaks. Read their HTML, find the slide(s) to change, edit in place. Don't regenerate from scratch. ## Content discovery (new deck) Before generating anything, ask the user for four pieces of context (one question at a time, not all at once): 1. **What's the deck about?** (Short description — 1 sentence.) 2. **Who's the audience?** (Internal Automattic team / external partners / public conference / pitch.) 3. **Roughly how many slides?** (Short 5–10 / Medium 10–20 / Long 20+ / Don't know yet.) 4. **Do they have content ready, rough notes, or just a topic?** If content is ready, have them paste it. If rough notes, organize first. If topic only, draft an outline and confirm before building. Skip questions the user has already answered in their initial request. Don't ask about style — there isn't one to pick. ## Generate the deck ### 1. Read the layouts reference Read `references/slide-layouts.md` for the 15 layout patterns and `references/design-system.md` for palette, type scale, and content rules. **Do not skip these** — the layouts are not derivable from the design tokens alone. ### 2. Pick a layout per slide Each slide is one of the 15 layouts. Suggested mapping: - Slide 1: **Cover** (layout 1, blue surface) - Slide 2: **TOC** (layout 3) — only for decks of 8+ slides - Slide N: **Section divider** (layout 5 black, or layout 14 white) — between major sections - Content slides: pick from layouts 2 (intro paragraph), 6 (metrics), 8 (bullets), 9 (table), 10 (pull quote), 11 (columns), 12 (body + image), 13 (numbered data) - Last slide: **Closing** (layout 15, blue) Mix surfaces sparingly. Most slides are white. Black is for occasional section dividers. Blue is for cover + closing. ### 3. Copy and customize the starter Copy `assets/starter-deck.html` to the user's output path (default: `./deck.html` in current working directory). Then **inside the `` wrapper, replace the 15 sample `
` blocks with the user's actual slides**, using the layout markup from `references/slide-layouts.md`. The starter file is ~115 KB. Don't try to read it before customizing — it's mostly the inline `deck-stage.js` web component (1700+ lines) which you should never modify. Copy the file, then edit the specific `
` blocks. ### 4. Update the speaker-notes JSON Replace the placeholder `