
HTML PPT Studio
FreeCreate professional HTML presentations effortlessly.
Free · Opens the source repo
What HTML PPT Studio does
HTML PPT Studio is designed for professionals looking to convert their consulting insights into client-ready presentations. This skill allows users to create static HTML presentations using a structured approach, leveraging a variety of themes, layouts, and animations. With 36 themes and 15 full-deck templates available, users can easily customize the look and feel of their presentations to match their branding or the tone of their message. The skill is particularly useful for consultants who need to deliver clear and engaging action plans to clients.
The core functionality revolves around a token-based design system, which ensures consistency across all slides. Users can select from a range of layouts and animations to enhance their presentations, making them visually appealing and engaging. The skill also includes a presenter mode that offers a unique feature set for live presentations, providing speaker notes and slide previews to help presenters stay on track. This makes it an excellent choice for those who frequently present in front of clients or stakeholders.
In addition to the visual elements, HTML PPT Studio supports a keyboard runtime that facilitates smooth navigation during presentations. This allows users to focus on their delivery rather than fumbling with controls. The inclusion of a headless Chrome render script further enhances the skill by enabling users to export their presentations as PNG images, making it easy to share or archive their work.
Overall, HTML PPT Studio is an invaluable tool for consultants, project managers, and anyone needing to create polished presentations quickly and effectively. Its focus on usability and professional design makes it a go-to choice for delivering impactful messages in a variety of settings.
When to use it
Use this skill when you need to create slide-based presentations from text or notes, especially in a consulting context.
When not to use it
This skill may not be suitable for users looking for dynamic, interactive presentations that require extensive multimedia integration or real-time collaboration.
What you can build with it
Consulting Client Presentation
Transform your consulting insights into a professional presentation that clearly outlines recommendations and action plans.
Team Update Deck
Create a visually engaging update deck for team meetings using pre-defined templates and layouts.
Educational Workshop Slides
Develop educational slides for workshops or training sessions, leveraging the presenter mode for effective delivery.
How to install HTML PPT Studio
View source1. Install with the skills CLI
npx skills add nexu-io/open-design/html-ppt --agent claude-code2. Or install it manually
Download the skill folder and drop it into ~/.claude/skills/ for all projects, or .claude/skills/ to scope it to one repo. Restart Claude Code so it picks up the new skill.
Anthropic's agentic coding CLI, and the reference implementation of Agent Skills. Drop a skill folder into ~/.claude/skills and Claude Code loads it automatically whenever a task matches the skill's description. Claude Code docs
Inside SKILL.md
Written by nexu-iohtml-ppt — HTML PPT Studio
Author professional HTML presentations as static files. One theme file = one
look. One layout file = one page type. One animation class = one entry effect.
All pages share a token-based design system in assets/base.css.
Install
npx skills add https://github.com/lewislulu/html-ppt-skill
One command, no build. Pure static HTML/CSS/JS with only CDN webfonts.
What the skill gives you
- 36 themes (
assets/themes/*.css) — minimal-white, editorial-serif, soft-pastel, sharp-mono, arctic-cool, sunset-warm, catppuccin-latte/mocha, dracula, tokyo-night, nord, solarized-light, gruvbox-dark, rose-pine, neo-brutalism, glassmorphism, bauhaus, swiss-grid, terminal-green, xiaohongshu-white, rainbow-gradient, aurora, blueprint, memphis-pop, cyberpunk-neon, y2k-chrome, retro-tv, japanese-minimal, vaporwave, midcentury, corporate-clean, academic-paper, news-broadcast, pitch-deck-vc, magazine-bold, engineering-whiteprint - 15 full-deck templates (
templates/full-decks/<name>/) — complete multi-slide decks with scoped.tpl-<name>CSS. 8 extracted from real-world decks (xhs-white-editorial, graphify-dark-graph, knowledge-arch-blueprint, hermes-cyber-terminal, obsidian-claude-gradient, testing-safety-alert, xhs-pastel-card, dir-key-nav-minimal), 7 scenario scaffolds (pitch-deck, product-launch, tech-sharing, weekly-report, xhs-post 3:4, course-module, presenter-mode-reveal — 演讲者模式专用) - 31 layouts (
templates/single-page/*.html) with realistic demo data - 27 CSS animations (
assets/animations/animations.css) viadata-anim - 20 canvas FX animations (
assets/animations/fx/*.js) viadata-fx— particle-burst, confetti-cannon, firework, starfield, matrix-rain, knowledge-graph (force-directed), neural-net (pulses), constellation, orbit-ring, galaxy-swirl, word-cascade, letter-explode, chain-react, magnetic-field, data-stream, gradient-blob, sparkle-trail, shockwave, typewriter-multi, counter-explosion - Keyboard runtime (
assets/runtime.js) — arrows, T (theme), A (anim), F/O, S (presenter mode: magnetic-card popup with CURRENT / NEXT / SCRIPT / TIMER cards), N (notes drawer), R (reset timer in presenter) - FX runtime (
assets/animations/fx-runtime.js) — auto-inits[data-fx]on slide enter, cleans up on leave - Showcase decks for themes / layouts / animations / full-decks gallery
- Headless Chrome render script for PNG export
When to use
Use when the user asks for any kind of slide-based output or wants to turn text/notes into a presentable deck. Prefer this over building from scratch.
🎤 Presenter Mode (演讲者模式 + 逐字稿)
If the user mentions any of: 演讲 / 分享 / 讲稿 / 逐字稿 / speaker notes / presenter view / 演讲者视图 / 提词器, or says things like "我要去给团队讲 xxx", "要做一场技术分享", "怕讲不流畅", "想要一份带逐字稿的 PPT" — use the presenter-mode-reveal full-deck template and write 150–300 words of 逐字稿 in each slide's <aside class="notes">.
See references/presenter-mode.md for the full authoring guide including the 3 rules of speaker script writing:
- 不是讲稿,是提示信号 — 加粗核心词 + 过渡句独立成段
- 每页 150–300 字 — 2–3 分钟/页的节奏
- 用口语,不用书面语 — "因此"→"所以","该方案"→"这个方案"
All full-deck templates support the S key presenter mode (it's built into runtime.js). S opens a new popup window with 4 magnetic cards:
- 🔵 CURRENT — pixel-perfect iframe preview of the current slide
- 🟣 NEXT — pixel-perfect iframe preview of the next slide
- 🟠 SPEAKER SCRIPT — large-font 逐字稿 (scrollable)
- 🟢 TIMER — elapsed time + slide counter + prev/next/reset buttons
Each card is draggable by its header and resizable by the bottom-right corner handle. Card positions/sizes persist to localStorage per deck. A "Reset layout" button restores the default arrangement.
Why the previews are pixel-perfect: each preview is an <iframe> that loads the actual deck HTML with a ?preview=N query param; runtime.js detects this and renders only slide N with no chrome. So the preview uses the same CSS, theme, fonts, and viewport as the audience view — colors and layout are guaranteed identical.
Smooth navigation: on slide change, the presenter window sends postMessage({type:'preview-goto', idx:N}) to each iframe. The iframe just toggles .is-active between slides — no reload, no flicker. The two windows also stay in sync via BroadcastChannel.
Only presenter-mode-reveal is designed from the ground up around the feature with proper example 逐字稿 on every slide.
Keyboard in presenter window: ← → navigate (syncs audience) · R reset timer · Esc close popup.
Keyboard in audience window: S open presenter · T cycle theme · ← → navigate (syncs presenter) · F fullscreen · O overview.
Before you author anything — infer first, ask only when blocked
Before writing slides, resolve the three decisions below from the user's brief, project metadata, supplied content, and conversation. If they are sufficiently clear, choose a tasteful default and proceed without waiting for confirmation; state the choices briefly in the plan. Ask one consolidated clarification only when a missing answer would materially change the deck.
- Content & audience. What's the deck about, how many slides, who's watching (engineers / execs / 小红书读者 / 学生 / VC)?
- Style / theme. Which of the 36 themes fits? If unsure, recommend 2-3
candidates based on tone:
- Business / investor pitch →
pitch-deck-vc,corporate-clean,swiss-grid - Tech sharing / engineering →
tokyo-night,dracula,catppuccin-mocha,terminal-green,blueprint - 小红书图文 →
xiaohongshu-white,soft-pastel,rainbow-gradient,magazine-bold - Academic / report →
academic-paper,editorial-serif,minimal-white - Edgy / cyber / launch →
cyberpunk-neon,vaporwave,y2k-chrome,neo-brutalism
- Business / investor pitch →
- Starting point. One of the 14 full-deck templates, or scratch? Choose
the closest
templates/full-decks/<name>/. If the user's content suggests something obvious (e.g. "我要做产品发布会" →product-launch), use it confidently instead of asking blindly.
A good clarification, when one is actually needed, follows the active
discovery-question-form protocol and contains only unresolved fields. For
example, if content and audience are known but the requested tone spans
incompatible themes, ask one theme question with 2–3 recommended options. Do
not repeat the form as a markdown checklist.
If the known context already resolves them, scaffold the deck and start writing immediately.
Quick start
- Scaffold a new deck. From the repo root:
./scripts/new-deck.sh my-talk open examples/my-talk/index.html - Pick a theme. Open the deck and press
Tto cycle. Or hard-code it:
Catalog in references/themes.md.<link rel="stylesheet" id="theme-link" href="../assets/themes/aurora.css"> - Pick layouts. Copy
<section class="slide">...</section>blocks out of files intemplates/single-page/into your deck. Replace the demo data. Catalog in references/layouts.md. - Add animations. Put
data-anim="fade-up"(orclass="anim-fade-up") on any element. On<ul>/grids, useanim-stagger-listfor sequenced reveals. For canvas FX, use<div data-fx="knowledge-graph">...</div>and include<script src="../assets/animations/fx-runtime.js"></script>. Catalog in references/animations.md. - Use a full-deck template. Copy
templates/full-decks/<name>/intoexamples/my-talk/as a starting point. Each folder is self-contained with scoped CSS. Catalog in references/full-decks.md and gallery attemplates/full-decks-index.html. - Render to PNG.
./scripts/render.sh templates/theme-showcase.html # one shot ./scripts/render.sh examples/my-talk/index.html 12 # 12 slides
Authoring rules (important)
- Always start from a template. Don't author slides from scratch — copy the
closest layout from
templates/single-page/first, then replace content. - Use tokens, not literal colors. Every color, radius, shadow should come
from CSS variables defined in
assets/base.cssand overridden by a theme. Good:color: var(--text-1). Bad:color: #111. - Don't invent new layout files. Prefer composing existing ones. Only add
a new
templates/single-page/*.htmlif none of the 30 fit. - Respect chrome slots.
.deck-header,.deck-footer,.slide-numberand the progress bar are provided byassets/base.css+runtime.js. - Keyboard-first. Always include
<script src="../assets/runtime.js"></script>so the deck supports ← → / T / A / F / S / O / hash deep-links. - One
.slideper logical page.runtime.jsmakes.slide.is-activevisible; all others are hidden. - Supply notes. Wrap speaker notes in
<div class="notes">…</div>inside each slide. Press S to open the overlay. - NEVER put presenter-only text on the slide itself. Descriptive text like
"这一页展示了……" or "Speaker: 这里可以补充……" or small explanatory captions
aimed at the presenter MUST go inside
<div class="notes">, NOT as visible<p>/<span>elements on the slide. The.notesclass isdisplay:noneby default — it only appears in the S overlay. Slides should contain ONLY audience-facing content (titles, bullet points, data, charts, images).
Writing guide
See references/authoring-guide.md for a step-by-step walkthrough: file structure, naming, how to transform an outline into a deck, how to choose layouts and themes per audience, how to do a Chinese + English deck, and how to export.
Catalogs (load when needed)
- references/themes.md — all 36 themes with when-to-use.
- references/layouts.md — all 31 layout types.
- references/animations.md — 27 CSS + 20 canvas FX animations.
- references/full-decks.md — all 15 full-deck templates.
- references/presenter-mode.md — 演讲者模式 + 逐字稿编写指南(技术分享/演讲必看).
- references/authoring-guide.md — full workflow.
File structure
html-ppt/
├── SKILL.md (this file)
├── references/ (detailed catalogs, load as needed)
├── assets/
│ ├── base.css (tokens + primitives — do not edit per deck)
│ ├── fonts.css (webfont imports)
│ ├── runtime.js (keyboard + presenter + overview + theme cycle)
│ ├── themes/*.css (36 token overrides, one per theme)
│ └── animations/
│ ├── animations.css (27 named CSS entry animations)
│ ├── fx-runtime.js (auto-init [data-fx] on slide enter)
│ └── fx/*.js (20 canvas FX modules: particles/graph/fireworks…)
├── templates/
│ ├── deck.html (minimal 6-slide starter)
│ ├── theme-showcase.html (36 slides, iframe-isolated per theme)
│ ├── layout-showcase.html (iframe tour of all 31 layouts)
│ ├── animation-showcase.html (20 FX + 27 CSS animation slides)
│ ├── full-decks-index.html (gallery of all 14 full-deck templates)
│ ├── full-decks/<name>/ (14 scoped multi-slide deck templates)
│ └── single-page/*.html (31 layout files with demo data)
├── scripts/
│ ├── new-deck.sh (scaffold a deck from deck.html)
│ └── render.sh (headless Chrome → PNG)
└── examples/demo-deck/ (complete working deck)
Rendering to PNG
scripts/render.sh wraps headless Chrome at
/Applications/Google Chrome.app/Contents/MacOS/Google Chrome. For multi-slide
capture, runtime.js exposes #/N deep-links, and render.sh iterates 1..N.
./scripts/render.sh templates/single-page/kpi-grid.html # single page
./scripts/render.sh examples/demo-deck/index.html 8 out-dir # 8 slides, custom dir
Keyboard cheat sheet
← → Space PgUp PgDn Home End navigate
F fullscreen
S open presenter window (magnetic cards: current/next/script/timer)
N quick notes drawer (bottom overlay)
R reset timer (in presenter window)
?preview=N URL param — force preview-only mode (single slide, no chrome)
O slide overview grid
T cycle themes (reads data-themes attr)
A cycle demo animation on current slide
#/N in URL deep-link to slide N
Esc close all overlays
License & author
MIT. Copyright (c) 2026 lewis <sudolewis@gmail.com>.
Frequently asked questions about HTML PPT Studio
Similar skills
PPTX HTML Fidelity Audit
Ensure your PPTX matches its HTML source perfectly.
Humanize PPT
Transform raw material into presentation-ready outlines.
Replit Deck
Create visually cohesive decision decks with ease.
Open Design Landing Deck
Create engaging marketing decks with a magazine-style format.
Magazine Web Presentation
Create visually striking HTML presentations with ease.
PPT Template Creator
Transform PowerPoint templates into reusable skills.
