html-based slides
/install html-slides
Corporate Slides
Create 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.
Core Principles
- Zero Dependencies — Single HTML file with inline CSS/JS. No npm, no build tools.
- Interactive Chrome — Left sidebar navigation (bilingual-aware), right comment panel, zoom controls, inline text editing, present mode, EN/CN language switch — all built in by default.
- Viewport Fitting (NON-NEGOTIABLE) — Every slide MUST fit exactly within 100vh. No scrolling within slides.
- Brand-Configurable — Default brand is Shopee/Sea. User can select a different brand preset or define custom colors/fonts. The design token system makes this a single-point swap.
- Content-Driven — Slides are built around data, comparisons, timelines, and action items — not filler graphics.
- Bilingual by Default — Unless user specifies a single language, generate both EN and CN content for every text element with an EN/CN toggle in the toolbar. If user explicitly requests a single language, skip the toggle and generate monolingual content.
Phase 0: Detect Mode
- Mode A: New Presentation — Create from scratch. Go to Phase 1.
- Mode B: Enhancement — Modify an existing HTML slide deck. Read it first, understand its brand/style, then modify. When adding content, check density limits; split slides if overflow would occur.
Phase 1: Content Discovery
Ask ALL questions in a single call:
Question 1 — Purpose (header: "Purpose"): What is this presentation for? Options:
- Bi-weekly / periodic update
- Product review / feature walkthrough
- Roadmap / strategy deck
- Post-mortem / retrospective
- Quarterly business review
- Training / onboarding
- Other (describe)
Question 2 — Brand (header: "Brand"): Which brand preset? Options:
- Shopee / Sea (default — orange + navy)
- Custom (I'll provide colors/fonts)
- Neutral / Minimal (dark charcoal + blue accent, no logos)
Question 3 — Content (header: "Content"): Do you have content ready? Options:
- All content ready (paste text, metrics, etc.)
- Rough notes / bullet points
- Topic only — help me structure it
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:
- Full (sidebar + comments + zoom + edit + present + language toggle) — recommended
- Light (sidebar + present only)
- Minimal (no chrome, static slides)
Language handling (NO question needed — apply automatically):
- If user has NOT specified a single language → generate bilingual (EN + CN) with language toggle. This is the default.
- If user explicitly says "English only", "只要中文", or similar → generate monolingual, no toggle.
- The language toggle is part of the toolbar chrome, not a separate question.
If user selected Custom brand, follow up with:
- Primary accent color (hex)
- Secondary / heading color (hex)
- Display font preference (or "your choice")
- Logo image file (or "no logo")
If user has content, ask them to share it. Then proceed to Phase 2.
Phase 2: Plan Slide Structure
Based on user content, plan the slide deck using available slide types and components.
Available Slide Types
| 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 |
Available Components (for Content Slides)
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) |
Content Density Limits Per Slide
| 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.
Phase 3: Generate Presentation
Brand Resolution
- If Shopee/Sea (default): use the Shopee/Sea preset from design-tokens.md. MUST include BOTH base64-embedded Shopee and SeaMoney logos on cover, section dividers, content headers, and closing slides.
- If Custom: swap
--accent-primary,--accent-secondary,--color-navy, fonts, and logo. Keep all other structural tokens unchanged. - If Neutral: use the Neutral preset from design-tokens.md. No logos — use a text-only header.
HTML Architecture
\x3C!DOCTYPE html>
\x3Chtml lang="zh">
\x3Chead>
\x3C!-- Google Fonts (based on brand preset) -->
\x3Cstyle>
/* 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) */
\x3C/style>
\x3C/head>
\x3Cbody class="lang-cn">
\x3C!-- Chrome: sidebar + toggle (left), progress bar (top, slide area only), horizontal toolbar (top-right: lang→present→zoom→edit→comment), comment panel (right) -->
\x3C!-- SLIDES (each is a \x3Csection class="slide">) with lang-en/lang-cn spans -->
\x3C!-- JS: SlidePresentation class -->
\x3C/body>
\x3C/html>
Before generating, read ALL reference files:
- design-tokens.md — CSS custom properties, brand presets, typography
- slide-types.md — HTML templates for each slide type
- components.md — Reusable component HTML/CSS
- viewport-chrome.md — Interactive chrome + viewport rules
- js-controller.md — SlidePresentation JS class
Bilingual Content Rules (when generating EN + CN)
Every user-visible text element must contain both language spans:
\x3Ch2>
\x3Cspan class="lang-en">Architecture Overview\x3C/span>
\x3Cspan class="lang-cn">架构概览\x3C/span>
\x3C/h2>
\x3Cp>
\x3Cspan class="lang-en">Smart acts as a Package Registry.\x3C/span>
\x3Cspan class="lang-cn">Smart 作为 Package Registry。\x3C/span>
\x3C/p>
Rules:
- Wrap each translatable text node in
\x3Cspan class="lang-en">and\x3Cspan class="lang-cn"> - Technical terms, product names, and code snippets stay unchanged across both languages (e.g. "SKILL.md", "SuperAgent", "CLI", variable names)
data-title(CN) anddata-title-en(EN) attributes on slides;data-group(CN) anddata-group-en(EN) on group headers. Sidebar switches language along with body class.- The
\x3Chtml lang>attribute should be set to"zh"(CN is the default display language) - Body starts with class
lang-cn— CN is shown first, user toggles to EN - For list items, wrap the text content inside each
\x3Cli>, not the\x3Cli>itself - For table cells, wrap content inside each
\x3Ctd>/\x3Cth>, not the cell itself
CSS (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.
Key Requirements
- Single self-contained HTML file — all CSS/JS inline
- Every slide must have
data-title(CN),data-title-en(EN),data-group(CN), anddata-group-en(EN) attributes for bilingual sidebar. Monolingual slides only needdata-titleanddata-group. - Every slide must include a footer with page numbers (populated by JS)
- All sizes must use
clamp(min, preferred, max)— never fixed px/rem - Logos: Shopee/Sea — BOTH
.shopeeand.seamoneylogos MUST appear, embedded via CSScontent: url(data:...). Custom brand — embed user-provided logo(s). Neutral — no logos, text-only headers. - Include
prefers-reduced-motionsupport - Clear
/* === SECTION NAME === */comment blocks throughout CSS - Bilingual presentations must include the EN/CN language switch in the toolbar and all lang-en/lang-cn CSS (see viewport-chrome.md). Sidebar nav must also be bilingual-aware.
Phase 4: Delivery
- Save to
work/slides/with a descriptive filename - Open using
open [filename].htmlto launch in browser - Summarize — Tell the user:
- File location, slide count, brand preset used
- Navigation: Arrow keys, Space, scroll/swipe, sidebar click
- Top-right toolbar (horizontal, left to right): Language switch → Present → Zoom → Edit → Comment
- Language: Click "EN" or "CN" segment in the switch to change language; sidebar nav follows. Press
Lto toggle. - Present: Press
F5or click ▶ — fullscreen, hides all chrome - Zoom: +/- buttons (70%–150%)
- Edit: Press
E— click any text to edit, undo/redo in toolbar - Comment panel: Press
C— per-slide notes saved to localStorage, Copy All exports as Markdown - Sidebar: Click ☰ at sidebar right edge to collapse/expand
Supporting Files
| 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) |
- 确保已安装 OpenClaw(本地或 Docker 部署)
- 在对话框中输入安装命令:
/install html-slides - 安装完成后,直接呼叫该 Skill 的名称或使用
/html-slides触发 - 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
html-based slides 是什么?
Create interactive, self-contained HTML slide decks with sidebar navigation, comment panel, zoom controls, inline editing, and present mode. Default brand is... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 89 次。
如何安装 html-based slides?
在 OpenClaw 或 Claude Code 对话框中运行命令「/install html-slides」即可一键安装,无需额外配置。
html-based slides 是免费的吗?
是的,html-based slides 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。
html-based slides 支持哪些平台?
html-based slides 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。
谁开发了 html-based slides?
由 edsml-yl10823(@edsml-yl10823)开发并维护,当前版本 v1.0.0。