Skip to content

thmsgo18/presentation-forge

Repository files navigation

English | Français

Presentation Forge

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.

CI License MIT Claude Skill Single file output Python stdlib only

Live demoInstallWhy HTMLWhat it can doExampleHow it worksThemes


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

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.

Why HTML, not PowerPoint

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.

What it can do

  • 🧠 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.json and 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.

Presenter mode: speaker notes, timer and next-slide preview A content slide built with the obsidian theme, comparing PowerPoint and Presentation Forge

Example

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.

How it works

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/.

Themes

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.

Requirements

  • 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 .pptx files. Nothing else.
  • A browser to view the result.

Contributing

Bug reports and pull requests are welcome - see CONTRIBUTING.md. Notable changes are tracked in CHANGELOG.md.

License

MIT © Thomas Gourmelen

About

Portable Claude skill to build beautiful, self-contained HTML presentations: author slides and import brand themes (PowerPoint, image, or description).

Topics

Resources

License

Contributing

Stars

Watchers

Forks

Contributors