$npx -y skills add bluzir/claude-code-design --skill export-pptxExport an HTML deck to PPTX via per-slide screenshots. Requires Node + pptxgenjs + puppeteer (run /doctor first).
| 1 | # Export PPTX |
| 2 | |
| 3 | Screenshot-based PPTX export — each `<section>` inside `<deck-stage>` becomes one slide (1920×1080 image + optional speaker notes). |
| 4 | |
| 5 | ## Preflight |
| 6 | |
| 7 | 1. `Bash(which node)` — if missing, tell user to install Node 20+ |
| 8 | 2. Check `package.json` has `pptxgenjs` + `puppeteer` — if not, run: |
| 9 | ``` |
| 10 | Bash(npm install -D pptxgenjs puppeteer) |
| 11 | ``` |
| 12 | (or tell user to run `/doctor` first) |
| 13 | |
| 14 | ## Steps |
| 15 | |
| 16 | 1. Resolve paths: |
| 17 | - `$0` = deck HTML (required) |
| 18 | - `$1` = output (default: basename + `.pptx`) |
| 19 | |
| 20 | 2. Run the export script: |
| 21 | ``` |
| 22 | Bash(node scripts/export-pptx.mjs "<input>" "<output>") |
| 23 | ``` |
| 24 | |
| 25 | 3. Report size + path. |
| 26 | |
| 27 | ## Script dependencies |
| 28 | |
| 29 | `scripts/export-pptx.mjs` must exist. If missing, create it (see template in spec §4.5 or ask user to run `/doctor`). |
| 30 | |
| 31 | ## What the script does |
| 32 | |
| 33 | - Launches headless Chromium (puppeteer) |
| 34 | - Loads the deck HTML at 1920×1080 |
| 35 | - Reads `<deck-stage>.totalSlides` |
| 36 | - For each slide: `goToSlide(i)`, set `noscale`, `page.screenshot` at clip 0,0,1920,1080 |
| 37 | - Reads `#speaker-notes` JSON (if present) and attaches per-slide notes |
| 38 | - Builds `.pptx` with `pptxgenjs` (16:9 layout, one PNG-background slide each) |
| 39 | |
| 40 | ## Notes |
| 41 | |
| 42 | - Images can be large — 5 MB per slide at 1920×1080 is normal |
| 43 | - For smaller files, pass `--jpeg 0.8` to the script (compress to JPEG at 80% quality) |
| 44 | - Not editable in PowerPoint — each slide is a raster image. For native-editable export, skill not supported in v3. |