Lumen slides export
Export a generated lumen slide deck HTML to editable PowerPoint (.pptx). Invoked after lumen-slides produces a deck, or standalone via lumen-export-slides CLI. Preserves vector SVGs and native text boxes.From its SKILL.md
npx -y skills add MonsieurBarti/lumen --skill lumen-slides-exportAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 12 stars12 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
3.1 KB, as published. Nobody here has run it
lumen-slides-export
Export a lumen slide deck HTML to a fully editable .pptx file using Playwright + dom-to-pptx.
Tier: capability (atomic) — does not invoke other lumen skills. Composites and playbooks may invoke it.
When to invoke
Trigger phrases: export slides, slides to pptx, pptx export, powerpoint export, deck to pptx.
Pipeline
- Verify HTML exists — confirm the slide deck HTML file path is valid.
- Run CLI — invoke
lumen-export-slides <html-path>(ornpx lumen-export-slides <html-path>if local bin is not on PATH). - Report path — return the generated
.pptxfile path to the user.
Quality checks
- PPTX file is non-empty and readable by PowerPoint / Keynote / LibreOffice
- SVG diagrams (Mermaid, fgraph) are preserved as vectors when possible
- All slides from the HTML are represented in the PPTX
Validation (M02-S03)
The export pipeline now runs automatic validation in headless Chromium before conversion. Validation detects:
- Overflow — any element's bounding rect exceeds the 1280×720 slide bounds.
- Descender clipping — text nodes where bottom edge exceeds slide bottom with non-zero line-height variance.
- Unwrapped text nodes — bare text nodes directly inside
.slide(not inside<p>,<span>,<h*>,<li>). - Emoji usage — unicode emoji ranges in text content (PPTX compatibility risk).
Validation warnings are logged to stderr; export proceeds regardless (best-effort fidelity). Structural issues are reported immediately without retry. Transient failures (font loading, Mermaid rendering timeouts) retry up to 3 times with a 2-second delay.
CSS-to-PPTX bridging
- CSS scoping per slide — all stylesheet rules are prefixed with a slide-specific
[data-slide-index="N"]selector before export to prevent class bleed across slides. - Pseudo-element materialization —
::beforeand::afterpseudo-elements with non-emptycontentare converted into real DOM nodes with cloned computed styles before export. - Canvas normalization — slides are forced to exactly 1280×720 pixels,
100vh/100dvhunits are overridden, and scroll-snap/animations are disabled.
Known fidelity limits
The following features are deferred to future work:
- Google Fonts base64 embedding — current templates use system-font fallbacks.
- Baking CSS
filter/opacityto canvas — niche use case, lossy, very complex. - Auto-regeneration of slides on validation failure — validation reports issues; fixing them is the author's responsibility.
Output
Single .pptx file written alongside the HTML (or to --output if specified). Automatic versioning: if deck.pptx exists, creates deck_v2.pptx, etc.
Notes
- Playwright Chromium browser is downloaded on first run (~3 MB). If browser is missing, the CLI emits:
run "npx playwright install chromium".