htmlewislulu-html-ppt-skill/SKILL.md

6.3 KiB

name description
html-ppt HTML PPT Studio — author professional static HTML presentations in many styles, layouts, and animations, all driven by templates. Use when the user asks for a presentation, PPT, slides, keynote, deck, slideshow, "幻灯片", "演讲稿", "做一份 PPT", "做一份 slides", a reveal-style HTML deck, a 小红书 图文, or any kind of multi-slide pitch/report/sharing document that should look tasteful and be usable with keyboard navigation. Triggers include keywords like "presentation", "ppt", "slides", "deck", "keynote", "reveal", "slideshow", "幻灯片", "演讲稿", "分享稿", "小红书图文", "talk slides", "pitch deck", "tech sharing", "technical presentation".

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

Tell the user this skill gives them:

  • 24 themes (assets/themes/*.css) from minimal-white to aurora
  • 30 layouts (templates/single-page/*.html) with realistic demo data
  • 25 named animations (assets/animations/animations.css) applied via data-anim
  • Keyboard runtime (assets/runtime.js) — arrows, T (theme), A (anim), F/S/O
  • Showcase decks for theme / layout / animation catalogs
  • 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.

Quick start

  1. Scaffold a new deck. From the repo root:
    ./scripts/new-deck.sh my-talk
    open examples/my-talk/index.html
    
  2. Pick a theme. Open the deck and press T to cycle. Or hard-code it:
    <link rel="stylesheet" id="theme-link" href="../assets/themes/aurora.css">
    
    Catalog in references/themes.md.
  3. Pick layouts. Copy <section class="slide">...</section> blocks out of files in templates/single-page/ into your deck. Replace the demo data. Catalog in references/layouts.md.
  4. Add animations. Put data-anim="fade-up" (or class="anim-fade-up") on any element. On <ul>/grids, use anim-stagger-list for sequenced reveals. Catalog in references/animations.md.
  5. 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.css and 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/*.html if none of the 30 fit.
  • Respect chrome slots. .deck-header, .deck-footer, .slide-number and the progress bar are provided by assets/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 .slide per logical page. runtime.js makes .slide.is-active visible; all others are hidden.
  • Supply notes. Wrap speaker notes in <div class="notes">…</div> inside each slide. Press S to open the overlay.

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)

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         (24 token overrides, one per theme)
│   └── animations/animations.css (25 named entry animations)
├── templates/
│   ├── deck.html                  (minimal 6-slide starter)
│   ├── theme-showcase.html        (24 slides, one per theme)
│   ├── layout-showcase.html       (iframe tour of all 30 layouts)
│   ├── animation-showcase.html    (27 slides, one per animation)
│   └── single-page/*.html         (30 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                                       speaker notes overlay
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

License & author

MIT. Copyright (c) 2026 lewis <sudolewis@gmail.com>.