Install
Decklume is a Claude Code plugin. Run these two commands inside Claude Code, one at a time:
/plugin marketplace add https://github.com/GgauravJ05/decklume /plugin install decklume@decklume Or install it as a standalone skill:
git clone https://github.com/GgauravJ05/decklume.git cp -R decklume/skills/decklume ~/.claude/skills/ You need Node.js 18 or newer, and nothing else: PowerPoint import is pure Node. The first time you run design QA, a style preview or a PDF export, Decklume installs Playwright into ~/.cache/decklume, never into your project.
Your first deck
Describe the presentation in plain language. Say who it is for and how long it should be:
Make a 15-minute lecture on how sleep shapes memory for first-year psychology students.You can also point Claude at material you already have: notes, a Markdown or PDF document, or a .pptx file.
How a deck is made
- Brief. Claude asks what it still needs in one round: purpose, audience, speaker-led or reading deck, length and assets.
- Storyline. You approve an outline with a layout and an assertion headline for every slide.
- Style. Your title and two content slides are rendered in three themes on one page. Pick one, or ask for a mix.
- Build. Claude writes the slide content;
build.mjscompiles it into one HTML file. - QA.
qa.mjsrenders and checks every slide. The deck isn’t handed over until it passes. - Deliver. The deck opens in your browser, with export and sharing options.
Presenting
| Key | Action |
|---|---|
| → or Space | Next step or slide |
| ← | Previous |
| O | Overview grid, click to jump |
| P | Presenter window: notes, timer, next slide |
| 12 then Enter | Jump to slide 12 |
| F | Fullscreen |
| B | Blackout |
| E, then ⌘/Ctrl+S | Edit text in the browser and save the file |
| G | Show the 12-column grid |
| ? | All shortcuts |
Swipe works on phones and tablets. Slides always stay 16:9 and scale as a whole, so nothing reflows on a projector.
Exporting and sharing
A deck is one HTML file you can email or open offline once its fonts are cached. For other formats, ask Claude, or run the tools yourself:
- PDF: vector, with selectable and searchable text and every build step shown. The 33-slide example lecture is 1.1 MB.
- PNG: one image per slide, optionally at 2× resolution.
- Live link: one command publishes to Vercel; the link works on any device and includes the presenter view.
Design QA
Every slide is rendered at 1920×1080 in a real browser. The check fails on text extending past the slide or clipped inside a box, text running into the footer, overlapping text, type below the minimum size, WCAG contrast failures, web fonts that did not load, placeholder text, broken images, JavaScript errors, and slides that stop being 16:9 on a phone. It warns about crowded slides, missing alt text, long headlines and common AI-slop patterns, and writes a contact sheet of every slide for review.
Editing a deck
Ask Claude for changes (“make slide 6 punchier”, “add a slide about X”). It edits the .deck.html source, rebuilds and re-runs QA. For quick text fixes, press E in the browser, click any text, and save with ⌘/Ctrl+S.
Themes and custom themes
Thirteen themes ship with Decklume: browse them all. Claude can also design a custom theme for a brand, a logo or a mix of two themes. Custom themes use the same layouts and pass the same checks.
Command-line tools
The scripts live in skills/decklume/scripts/, need only Node.js 18+, and can be run without Claude:
build.mjs talk.deck.html- Compile a deck source into one self-contained HTML file. Add --theme, --inline-assets or --watch.
build.mjs --list-themes- List installed themes (add --json for metadata).
preview.mjs sample.deck.html --themes folio,grid,campus --png- Render sample slides in several themes side by side.
qa.mjs talk.html- Run the design QA gate; writes screenshots, a contact sheet and report.json.
export.mjs talk.html- Vector PDF. Add --png for one image per slide, --scale 2 for retina.
extract-pptx.mjs old.pptx out/- Extract text, tables, images, notes and chart data from PowerPoint. No Python needed.
deploy.mjs talk.html- Publish to a live URL on Vercel (add --dry to preview what ships).
Troubleshooting
- The plugin command fails with an SSH error
- Use the full HTTPS URL shown above in
/plugin marketplace add, not the short owner/repo form. - QA reports that a web font did not load
- Fonts come from Google Fonts. Check your connection and re-run; QA reports the failure instead of passing with fallback fonts.
- The presenter window doesn’t open
- Allow pop-ups for the page, then press P again.
- Images are missing after sharing the file
- Rebuild with
--inline-assetsto embed images in the HTML file.