English | Français
Describe your talk to Claude. It writes the slides and bundles them into one portable index.html you can double-click, email, or host anywhere.
Live demo • Install • Why HTML • What it can do • Example • How it works • Themes
A Claude skill that turns plain language into polished slide decks. You say "make me a presentation about X"; Claude scaffolds the deck, writes the slides, picks or builds a theme, and compiles everything into a single self-contained index.html. Engine, theme, fonts and images are all inlined, so the file opens by double-click, emails cleanly, and works fully offline. No framework, no build server, no dependencies.
It is an Agent Skill: one folder that works the same in Claude Code, the Claude apps (claude.ai and desktop), and through the API. No slash command to memorize, just ask.
Install once on each surface where you want it.
Claude Code : drop the skill into your skills folder, Claude discovers it automatically:
git clone https://github.com/thmsgo18/presentation-forge.git ~/.claude/skills/presentation-forge(For one project only, clone into .claude/skills/presentation-forge/ inside that repo instead.)
On Windows, run this in Git Bash or WSL, not plain PowerShell or cmd - they don't expand
~to your home folder.
Claude apps (claude.ai and desktop) : upload dist/presentation-forge-skill.zip in Settings → Features → Skills (Pro, Max, Team or Enterprise, with code execution enabled).
API : upload the same dist/presentation-forge-skill.zip through the Skills API (/v1/skills) and reference it from the code-execution container.
Custom skills do not sync across surfaces. Upload the zip once per surface.
Claude can already spit out a .pptx. But a .pptx stays a prisoner of PowerPoint: it needs the app to open, its fonts and layout drift from one machine to the next, and it is a binary blob you cannot read or version. A Presentation Forge deck is just one HTML file that any browser renders identically, today and in ten years.
PowerPoint .pptx |
Presentation Forge (HTML) | |
|---|---|---|
| Presenter mode, speaker notes, timer | ✅ | ✅ |
| Progressive reveal, step by step | ✅ | ✅ |
| Slide transitions and animations | ✅ | ✅ |
| Images, code, quotes, multi-column layouts | ✅ | ✅ |
| Works with a presenter remote or clicker | ✅ | ✅ |
| Works fully offline | ✅ | ✅ |
| Anyone can fix a typo, no code needed | ✅ | ✅ |
| Opens with no software, in any browser | ❌ | ✅ |
| Renders identically on every machine | 🟠 | ✅ |
| Fonts travel inside the file | 🟠 | ✅ |
| Ships as one self-contained file | 🟠 | ✅ |
| Editable without proprietary software | ❌ | ✅ |
| Readable and versionable in git | ❌ | ✅ |
| Hostable as a public link | ❌ | ✅ |
| Reusable brand theme across decks | 🟠 | ✅ |
| No paid software to create or open | 🟠 | ✅ |
✅ yes · 🟠 partial or fragile · ❌ no. The top rows are everything PowerPoint already gives a presenter; Forge matches them, then adds the rest.
You lose nothing PowerPoint gives a presenter, and you gain portability, longevity and a file you actually own.
- 🧠 Any brief into a deck : a topic, an outline, rough notes, or a whole document. Technical talks, courses, pitches, lectures, any subject.
- ✍️ Slides that land : assertion-style titles, one idea per slide, tight bullets. Walls of text go into the notes, not on screen.
- 🎤 Present like a pro : built-in presenter mode with speaker notes, a timer, and next-slide preview. Full keyboard navigation, press
?for shortcuts. - ✏️ Edit without touching code : fix a typo or reword a line right in the browser, saved straight back to the file.
- ✨ Progressive reveal : build a point step by step with
fragment, the presenter view tracks each step. - 🎨 Swappable themes : change the entire look without touching a single slide.
- 🏢 Import a brand : recreate an identity from a
.pptx, an image, or a text description, and drop in a company logo. - 💾 Save a style once : export any theme to a single
.pfstyle.jsonand recreate the exact same look in any future conversation, no original files needed. - 📦 Single-file output : one
index.html, offline ready, zero dependencies, opens anywhere a browser exists.
Editing works in Chrome, Edge, or another Chromium browser - it's not available in Safari or Firefox, the button simply won't appear there. It also only works on a deck opened from your own machine: a downloaded or emailed copy is fine, a hosted link is not, since there is no real file there to save back to.
You: /presentation-forge make me a deck about our Q3 results for the
all-hands. Five minutes, upbeat tone. Revenue up 18%, churn down to
4%, two new enterprise logos. Use our brand, here is last quarter's
deck (attached .pptx).
Claude: [imports the brand from the .pptx into a reusable theme, scaffolds
the deck, writes a title slide, an agenda, three assertion-led
content slides with speaker notes, and a closing slide with the
takeaway, then builds it to a single index.html]
Done. Your deck is in q3-all-hands/index.html (7 slides).
Open it and press p for presenter mode, arrow keys to navigate,
? for all shortcuts. I also saved the theme as acme.pfstyle.json
so you can reuse this exact look next quarter.
Three layers, always kept separate so a deck never breaks when you reskin it:
- engine (
template/engine/) : rendering, scaling, navigation, presenter mode, reveal. Never edited. - theme (
template/themes/<name>/) : the look: colours, type, spacing, fonts, logos, backgrounds. - content (
slides/) : the slides, one HTML file each, ordered by name.
The build is deliberately boring, which is what makes it portable: write slides in slides/, run python3 build.py (python build.py on Windows if python3 isn't on PATH), and it inlines the engine, the theme, the fonts and every image into a single index.html. Slides are authored on a fixed 1920x1080 canvas that the engine scales to any screen, so a deck looks the same on a laptop, a projector or a phone. Full authoring contract in SKILL.md and reference/.
A theme is a self-contained folder (tokens.css, fonts.css, slides.css, plus fonts/, images/, logos/). Every theme defines the same tokens and styles the same slide classes, so switching themes never breaks a deck. Two ship out of the box — obsidian (the dark, editorial look in the live demo) and ink-blue (clean and light). Build your own from a brand four ways:
| Source | What Claude does |
|---|---|
.pptx PowerPoint |
Extracts the palette, fonts, embedded media and master layout geometry |
| Image (slide or mockup) | Samples the exact dominant colours, reads typography and layout by sight |
| Text description | Maps brand words to design tokens |
.pfstyle.json |
Rebuilds the entire theme (CSS, fonts, logos, backgrounds) in one step |
Whatever the source, the theme exports to one portable .pfstyle.json. Keep that file and recreate the exact same identity anytime. Full procedure in reference/import-theme.md.
- A Claude client that supports skills (Claude Code, the Claude apps, or the API).
- Python 3.10+, standard library only, to build decks and read
.pptxfiles. Nothing else. - A browser to view the result.
Bug reports and pull requests are welcome - see CONTRIBUTING.md. Notable changes are tracked in CHANGELOG.md.
MIT © Thomas Gourmelen

