tsaol/awesome-claude/html-ppt
Claude Code and agent skill by tsaol/awesome-claude
- community
Checking that the SKILL.md file is still in the repository.
Install
npx vskill@latest install tsaol/awesome-claude/html-pptSKILL.md
HTML PPT Skill
Invoke with#html-ppt+ your topic. Generates a single-file HTML deck with zero dependencies.Reference samples:-GlobalOperation/growth/amazon-growth-design-rehearsal.html-GlobalOperation/growth/amazon-growth-design-walkthrough.html-presentations/html/agent_review_slide.html
Positioning
Not reveal.js / Slidev / Spectacle. A hand-crafted single HTML file — zero dependencies, zero network, double-click to open.
Good for: rehearsal, internal sharing, offline presentations, one-shot decks. Not for: complex animations, React components, long-term team maintenance. Use #reveal-ppt for those.
Detect Mode
Determine what the user wants:
- Mode A: New Presentation — Create from scratch. Go to Step 1.
- Mode B: PPT Conversion — Convert a .pptx file. Go to PPT Conversion section.
- Mode C: Enhancement — Improve an existing HTML presentation. Follow Mode C rules below.
Mode C: Modification Rules
When enhancing existing presentations, viewport fitting is the biggest risk:
- Before adding content: Count existing elements, check against density limits
- Adding images: Must have
max-height: min(50vh, 400px). If slide already has max content, split into two slides - Adding text: Max 4-5 bullets per slide. Exceeds limits? Split into continuation slides
- After ANY modification, verify:
.slidehasoverflow: hidden, new elements useclamp(), images have viewport-relative max-height, content fits at 1280x720 - Proactively reorganize: If modifications will cause overflow, automatically split content and inform the user. Don't wait to be asked
When adding images to existing slides: Move image to new slide or reduce other content first. Never add images without checking if existing content already fills the viewport.
Core Principles
- Zero Dependencies — Single HTML file, all CSS/JS inline. No npm, no CDN.
- Viewport Fitting (NON-NEGOTIABLE) — Every slide MUST fit exactly in 100vh. No scrolling within slides. Content overflows? Split into multiple slides.
- Distinctive Design — Avoid generic "AI slop." Choose fonts and colors that feel custom-crafted.
- Show, Don't Tell — When user is unsure of style, generate visual previews (save to
~/tmp/slide-previews/).
Required Slide Structure
Every deck (slide-deck or rehearsal) MUST include these slides:
| Slide | Position | Purpose | |
|---|---|---|---|
| Cover | First | Title, subtitle, audience, date/context | |
| Agenda | Second | Outline of what the deck covers (3-6 items) | |
| Takeaway | Second-to-last | Key points the audience should remember (3-5 bullets) | |
| Thank You / End | Last | Closing — "Questions?", contact info, or CTA |
These four slides are non-negotiable. The content slides go between Agenda and Takeaway.
Minimum deck structure: Cover → Agenda → [Content slides] → Takeaway → Thank You
Viewport Fitting Rules
These apply to EVERY slide:
- Every
.slidemust haveheight: 100vh; height: 100dvh; overflow: hidden; - ALL font sizes and spacing must use
clamp(min, preferred, max)— never fixed px alone - Include the full contents of viewport-base.css in every presentation
- Include
prefers-reduced-motionsupport - Never negate CSS functions directly (
-clamp()is silently ignored) — usecalc(-1 * clamp(...))
Content Density Limits Per Slide
| Slide Type | Maximum Content | |
|---|---|---|
| Title/Cover | 1 heading + 1 subtitle + optional tagline | |
| Bullet | 1 heading + 4-5 bullet points | |
| Layers/Grid | 1 heading + 3 cards (3-column grid) | |
| Stats | 1 heading + 4 stat boxes | |
| Quote | 1 quote (max 3 lines) + attribution | |
| Punch-line | 1 large text block (2-3 lines) | |
| Code | 1 heading + 8-10 lines of code |
Content exceeds limits? Split into multiple slides. Never cram, never scroll.
Your Task
When user invokes #html-ppt:
Step 1: Confirm Intent
Ask (if not already specified):
- Topic / content — What is this about?
- Deck type:
rehearsal— Speaker notes in dark right panel, timer (N to toggle notes, T for timer)walkthrough— Scrollable long-page document (no pagination)slide-deck— Multi-page presentation with keyboard navigationsingle-slide— Single 1280x720 poster slide
- Target audience — Self / team / client (determines tone)
- Slide count / sections — Default: 8-12 slides
If user says "up to you", default to slide-deck + 8-12 slides.
Step 2: Choose Style
Ask user's style preference:
Option A: Amazon Brand — Orange + dark blue, professional corporate. Skip to Step 3. Option B: Pick a preset — Choose from 12 curated presets directly. See STYLE_PRESETS.md. Option C: Show me options (recommended for custom) — Generate 3 visual previews based on mood.
"Show me options" flow:
- Ask the mood: Impressed/Confident | Excited/Energized | Calm/Focused | Inspired/Moved
- Based on mood, pick 3 presets from the mood-to-preset table in STYLE_PRESETS.md
- Generate 3 single-slide HTML preview files (one per preset) showing title slide with typography, colors, animation
- Save previews to
~/tmp/slide-previews/(style-a.html, style-b.html, style-c.html) - Open each preview for the user
- Ask which they prefer: Style A / Style B / Style C / Mix elements
Each preview should be ~50-100 lines, self-contained, showing one animated title slide with the preset's exact fonts, colors, and signature elements.
"Pick a preset" flow:
User names a preset directly (e.g., "Bold Signal", "Neon Cyber"). Read STYLE_PRESETS.md for specs and generate using those exact fonts, colors, and signature elements.
If user says "up to you" or doesn't specify, default to Amazon Brand.
Step 3: Amazon Brand Style (when applicable)
Colors (required for Amazon brand):
#FF9900— Amazon orange, accent / highlight / numbers#c45500— Deep orange, eyebrow / tag text#232F3E— Amazon dark blue, headings / dark backgrounds#FFF8EE— Light orange background for layers/quotes#FFE0B2— Orange borders#fff / #1a1a1a / #333 / #555 / #666 / #888 / #ccc— Neutral scale
Font:
Top 6px gradient bar (every deck must have):
Border radius: 8px / 10px / 12px only.
Font size ladder:
- Cover H1: 56px →
clamp(2rem, 5vw, 3.5rem) - H2: 44px →
clamp(1.5rem, 3.5vw, 2.75rem) - Body: 22px →
clamp(0.9rem, 1.8vw, 1.375rem) - Punch-line: 60-64px →
clamp(2.5rem, 6vw, 4rem) - Eyebrow: 13px, uppercase, letter-spacing 2px
Step 4: Layout Building Blocks
| Layout | Use | Description | |
|---|---|---|---|
| cover | Opening | Title + subtitle + meta line | |
| section-title | Chapter divider | Large text + eyebrow tag | |
| bullet | Key points | Heading + 3-5 ul items | |
| layers | 3-column model | Three colored boxes (mental model) | |
| stats | Data display | 4 dark-blue cards with orange numbers | |
| flow | Process steps | Numbered circles + title + description | |
| compare | Two-column contrast | A vs B dual boxes | |
| quote | Citation | Light orange background + orange left border | |
| callout | Key takeaway | Dark-blue background white text | |
| punch-line | Big conclusion | 60-64px, dual-color highlight | |
| table-wrap | Data table | Dark header, clean rows | |
| timeline | Chronological | Left-line with dots and items | |
| schedule | Agenda / timeline | Dark header table | |
| end | Closing | "Questions?" / thank you / CTA |
Do not invent new layouts. Mix these blocks.
Step 5: Interaction Layer (slide-deck and rehearsal)
Step 6: Speaker Notes (rehearsal only)
Each slide's notes must include:
- How to say it — Opening sentence for this slide
- Key pauses — Where to stop, where to emphasize
- Potential questions — What the audience might ask
- Red lines — What NOT to say on this slide
Step 7: Output
Generate the complete HTML file directly. Naming:
<topic>-rehearsal.html<topic>-walkthrough.html<topic>-deck.html<topic>-slide.html
After generation, give the user an open command and usage tips (keys, notes).
Image Handling
When user provides images for the presentation:
Step 1: Evaluate Images
- Scan — List all image files (.png, .jpg, .svg, .webp)
- View each image — Use the Read tool (Claude is multimodal)
- Evaluate — For each: what it shows, USABLE or NOT USABLE (with reason), dominant colors
- Co-design the outline — Images inform slide structure alongside text. Don't "plan slides then add images" — design around both from the start
Step 2: Process Images
| Situation | Operation | |
|---|---|---|
| Square logo on rounded aesthetic | crop_circle() | |
| Image > 1MB | resize_max(max_dim=1200) | |
| Wrong aspect ratio | Manual crop with img.crop() |
Step 3: Place Images in HTML
Rules:
- Use relative file paths (not base64) for images unless embedding a single logo
- Never repeat the same image on multiple slides (except logos on title + closing)
- Adapt border/shadow colors to match the chosen style's accent
- Logo: centered on title slide. Screenshots: two-column layout with text
PPT Conversion
When user provides a .pptx file:
- Run
python scripts/extract-pptx.py <input.pptx> <output_dir>(install python-pptx if needed) - Show extracted slide titles and image counts for confirmation
- Ask for style preference (Amazon brand or custom)
- Generate HTML preserving all text, images, and notes
PDF Export
After generating a deck, offer PDF export:
- Uses Playwright to screenshot each slide at 1920x1080
--compactflag renders at 1280x720 for smaller files- Animations are not preserved (static snapshots)
Deploy (Vercel)
After generating a deck, offer deployment for sharing:
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/html-ppt/SKILL.md
Popularity
- Repository stars
- 62
- Repository forks
- 4
- 7-day trend score
- 21
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/tsaol/awesome-claude/html-ppt)