Decklume

Make presentations with Claude Code

Everything you need to install Decklume, make a deck, present it and share it.

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

  1. Brief. Claude asks what it still needs in one round: purpose, audience, speaker-led or reading deck, length and assets.
  2. Storyline. You approve an outline with a layout and an assertion headline for every slide.
  3. Style. Your title and two content slides are rendered in three themes on one page. Pick one, or ask for a mix.
  4. Build. Claude writes the slide content; build.mjs compiles it into one HTML file.
  5. QA. qa.mjs renders and checks every slide. The deck isn’t handed over until it passes.
  6. Deliver. The deck opens in your browser, with export and sharing options.

Presenting

KeyAction
→ or SpaceNext step or slide
←Previous
OOverview grid, click to jump
PPresenter window: notes, timer, next slide
12 then EnterJump to slide 12
FFullscreen
BBlackout
E, then ⌘/Ctrl+SEdit text in the browser and save the file
GShow 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-assets to embed images in the HTML file.