Install
openclaw skills install html-slidesCreate interactive, self-contained HTML slide decks with sidebar navigation, comment panel, zoom controls, inline editing, and present mode. Default brand is...
openclaw skills install html-slidesCreate zero-dependency, interactive HTML presentations that run in any browser. Every output is a single self-contained HTML file with built-in navigation, commenting, editing, and presentation capabilities.
Ask ALL questions in a single call:
Question 1 — Purpose (header: "Purpose"): What is this presentation for? Options:
Question 2 — Brand (header: "Brand"): Which brand preset? Options:
Question 3 — Content (header: "Content"): Do you have content ready? Options:
Question 4 — Length (header: "Length"): Approximately how many slides? Options: Short 5-8 / Medium 8-14 / Long 14+
Question 5 — Interactive Features (header: "Features"): Which interactive features to include? Options:
Language handling (NO question needed — apply automatically):
If user selected Custom brand, follow up with:
If user has content, ask them to share it. Then proceed to Phase 2.
Based on user content, plan the slide deck using available slide types and components.
| Type | When to Use |
|---|---|
| Cover | First slide — title, date, team, optional logos |
| Section Divider | Transition between major topics — colored background, section number |
| Content | Main information slides — header bar + body components |
| Closing | Last slide — thank you, contact, next steps |
Read components.md for full HTML templates.
| Component | Best For |
|---|---|
| Metrics Grid | KPI cards (3-column) with values and change indicators |
| Bi-weekly Table | Period-over-period comparison with insight cards |
| Feature Table | Feature comparisons, scope definitions, matrices |
| Two-Column Grid | Findings vs Actions, Pros vs Cons, Before vs After |
| Action List | Action items, scope items, decisions with owners |
| Timeline | Roadmap milestones, project phases |
| Status Badge | Inline status indicators (on-track, at-risk, done) |
| Screenshot Slot | Replaceable image placeholder for operational screenshots (dashed border when empty, auto-shows image when src set) |
| Slide Type | Maximum Content |
|---|---|
| Cover | Title + subtitle + meta |
| Section Divider | Title + subtitle + section number |
| Content (text) | 1 heading + 1 paragraph + 1 component |
| Content (table) | 1 heading + 1 table (up to 12 rows) |
| Content (mixed) | 1 heading + 2 smaller components |
| Closing | Title + subtitle + meta |
Content exceeds limits? Split into multiple slides. Never cram, never scroll.
Present the slide plan to the user for confirmation before generating.
--accent-primary, --accent-secondary, --color-navy, fonts, and logo. Keep all other structural tokens unchanged.<!DOCTYPE html>
<html lang="zh">
<head>
<!-- Google Fonts (based on brand preset) -->
<style>
/* 1. CSS Custom Properties (from design-tokens.md — brand-resolved) */
/* 2. Reset & Base Typography */
/* 3. Viewport Fitting (MANDATORY — from viewport-chrome.md) */
/* 4. Language Toggle (bilingual only — from viewport-chrome.md) */
/* 5. Sidebar Navigation */
/* 6. Progress Bar */
/* 7. Comment Panel */
/* 8. Zoom Controls */
/* 9. Slide Type Styles (cover, section, content, closing) */
/* 10. Component Styles */
/* 11. Edit Mode */
/* 12. Present Mode */
/* 13. Responsive Breakpoints */
/* 14. Embedded Logos (if applicable) */
</style>
</head>
<body class="lang-cn">
<!-- Chrome: sidebar + toggle (left), progress bar (top, slide area only), horizontal toolbar (top-right: lang→present→zoom→edit→comment), comment panel (right) -->
<!-- SLIDES (each is a <section class="slide">) with lang-en/lang-cn spans -->
<!-- JS: SlidePresentation class -->
</body>
</html>
Before generating, read ALL reference files:
Every user-visible text element must contain both language spans:
<h2>
<span class="lang-en">Architecture Overview</span>
<span class="lang-cn">架构概览</span>
</h2>
<p>
<span class="lang-en">Smart acts as a Package Registry.</span>
<span class="lang-cn">Smart 作为 Package Registry。</span>
</p>
Rules:
<span class="lang-en"> and <span class="lang-cn">data-title (CN) and data-title-en (EN) attributes on slides; data-group (CN) and data-group-en (EN) on group headers. Sidebar switches language along with body class.<html lang> attribute should be set to "zh" (CN is the default display language)lang-cn — CN is shown first, user toggles to EN<li>, not the <li> itself<td>/<th>, not the cell itselfCSS (included in viewport-chrome.md):
body.lang-en .lang-cn { display: none; }
body.lang-cn .lang-en { display: none; }
When monolingual: Skip all lang-en/lang-cn spans, write plain text, omit the language toggle button from the toolbar, and omit the language CSS/JS.
data-title (CN), data-title-en (EN), data-group (CN), and data-group-en (EN) attributes for bilingual sidebar. Monolingual slides only need data-title and data-group.clamp(min, preferred, max) — never fixed px/rem.shopee and .seamoney logos MUST appear, embedded via CSS content: url(data:...). Custom brand — embed user-provided logo(s). Neutral — no logos, text-only headers.prefers-reduced-motion support/* === SECTION NAME === */ comment blocks throughout CSSwork/slides/ with a descriptive filenameopen [filename].html to launch in browserL to toggle.F5 or click ▶ — fullscreen, hides all chromeE — click any text to edit, undo/redo in toolbarC — per-slide notes saved to localStorage, Copy All exports as Markdown| File | Purpose | When to Read |
|---|---|---|
| design-tokens.md | Brand presets, CSS variables, colors, typography, spacing | Phase 3 (always) |
| slide-types.md | HTML templates for cover, section, content, closing | Phase 3 (always) |
| components.md | Reusable component HTML: metrics, tables, timelines, etc. | Phase 3 (always) |
| viewport-chrome.md | Viewport fitting CSS + interactive chrome HTML/CSS | Phase 3 (always) |
| js-controller.md | SlidePresentation JS class with all interactive features | Phase 3 (always) |