presentation-by-html
/install presentation-by-html
Presentation Builder
Overview
Build presentation materials as HTML through a two-phase process: brainstorm first, build second. Never produce slides before the narrative structure is solid.
Phase 1: Brainstorm
Conduct a structured dialogue before writing any code.
Required Questions
Audience & Format:
- Who is the audience? Technical depth? Prior knowledge?
- Duration? Format constraints?
Content Core:
- What problem does this solve? What was the status quo before?
- What is the core capability / contribution?
- Current status (shipped / MVP / in-progress)?
- Demos, data, or real cases available?
Narrative Intent:
- What should the audience take away?
- Pitfalls, "aha moments", counter-intuitive insights?
Structuring Principles
- Effect before mechanism: Show what it does before explaining how
- Pitfalls are gold: Real failures resonate more than polished success. Structure each as: phenomenon -> cause -> solution -> generalizable insight
- Avoid cliché openings: Prefer tension, paradox, or direct demo over "imagine it's 3am..."
- Time-box sections: Allocate minutes explicitly. Core insights deserve >40% of time
- One takeaway per slide: Two ideas = two slides
Iterate Until Stable
Continue dialogue until:
- Framework covers all sections with time estimates
- Narrative arc is clear (hook -> problem -> solution -> lessons -> future)
- User confirms "framework OK"
Phase 2: Build HTML
File Structure
Separate concerns into three files for maintainability:
project/
presentation.html # Semantic structure only, no inline styles except layout-specific
css/style.css # All visual styling, animations, component patterns
js/deck.js # Navigation, interactions, TOC, expandable logic
images/ # Screenshots, avatars, demo videos
Interaction Patterns (Critical)
The presentation is NOT a static slide deck. It uses interactive detail-on-demand patterns:
1. Tab Cards — Clickable cards that switch a shared detail area below
\x3Cdiv class="grid-3">
\x3Cdiv class="card tab-card active" data-tab="topic-a">Summary A\x3C/div>
\x3Cdiv class="card tab-card" data-tab="topic-b">Summary B\x3C/div>
\x3C/div>
\x3Cdiv class="tab-detail-area">
\x3Cdiv class="tab-detail active" data-tab="topic-a">...full detail...\x3C/div>
\x3Cdiv class="tab-detail" data-tab="topic-b">...full detail...\x3C/div>
\x3C/div>
Use when: Multiple sub-topics exist under one slide, each with rich detail.
2. Expandable Details — Cards that expand to reveal deeper content
\x3Cdiv class="card expandable" data-expand-target="detail-id">Summary\x3C/div>
\x3Cdiv class="expand-content-full" id="detail-id">
\x3Cdiv class="expand-inner">...detailed content...\x3C/div>
\x3C/div>
Use when: A slide has layered information — show summary by default, expand for evidence/examples. Supports data-default-open attribute.
3. Left-Tab + Right-Detail Panel — Vertical tab list with adjacent detail pane
Use when: Each tab has substantial content (code blocks, diagrams) that benefits from full-width display. Example: security isolation details.
Visual Design System
| Component | CSS Class | Usage |
|---|---|---|
| Cards | .card .card-accent .card-{color} |
Discrete points, categorized items |
| Tags | .tag .tag-{color} |
Labels, keywords, status badges |
| Grids | .grid-2 .grid-3 |
Parallel comparisons |
| Quote | .quote |
Key insights, memorable one-liners |
| Architecture boxes | .arch-box .arch-box.primary |
System diagrams |
| Code blocks | \x3Cpre> with .comment .keyword .string .func .op spans |
Syntax-highlighted dark code |
| Comparison | .compare-box .compare-before .compare-after |
Before/after with positioned labels |
| Timeline | .timeline .timeline-item |
Sequential events with time markers |
| Pitfall insight | .pitfall-step .pitfall-insight |
Highlighted takeaway badges |
| Big numbers | .big-number |
Metrics with placeholder __ for pending data |
Color System (Semantic)
--primary: #1a73e8; /* neutral/default/architecture */
--accent: #ea4335; /* problem/danger/before */
--accent-green: #34a853; /* solution/success/after */
--accent-yellow: #fbbc04; /* caution/intermediate */
--accent-purple: #9334e6; /* advanced/depth/evaluator */
Animation Patterns
- Fade-in with stagger:
.fade-in .fade-in-d1through.fade-in-d6for progressive reveal - Step-by-step flow:
.anim-step+.anim-flowcontainer, revealed sequentially by JS - Flow diagram:
.flow-node+.flow-connectorrevealed node-by-node with delays - Tab transitions: CSS
@keyframes tabFadeInfor smooth panel switching
Slide Types
- Title slide (
.slide-title): Gradient background, white text - Section divider (
.slide-section): Large faded number + heading - Content slide: h2/h3 + interactive components
- Architecture slide: CSS flex/grid layouts with
.arch-boxnodes - Comparison slide:
.compare-before/.compare-afterside-by-side - Data slide:
.big-numberwith__placeholders for pending metrics - Q&A slide: Minimal title-slide style
JS Engine Responsibilities
deck.js handles:
- Slide navigation (keyboard ←→/Space/PgUp/PgDn, touch swipe, ESC for TOC)
- Progress bar + counter update
- Tab card switching (click → toggle active class on cards and detail panels)
- Expandable toggle (click → open/close with accordion behavior)
- Security panel switching
- Animated flow triggering (reset + staggered reveal on slide enter)
- Default-open restoration on slide enter
- Expand state cleanup on slide leave
Content Density Rules
- Body text: 16-22px; never smaller than 13px even in expand-inner
- Cards: max 3-4 per slide in top-level grid
- Detail areas can be denser (tables, code, smaller font) since they're opt-in
- One core idea per slide at the summary level; detail areas can go deeper
- Use
data-titleon section/key slides for TOC generation - Lazy-load heavy media (video onclick pattern)
Things to Avoid
- External CDN links (must work offline/intranet)
- Single-file HTML over 500 lines (split CSS/JS)
- Static walls of text (use expandable/tab patterns for density)
- Inline styles for reusable patterns (extract to CSS classes)
- Images for diagrams (use CSS flex/grid compositions)
- 确保已安装 OpenClaw(本地或 Docker 部署)
- 在对话框中输入安装命令:
/install presentation-by-html - 安装完成后,直接呼叫该 Skill 的名称或使用
/presentation-by-html触发 - 根据 Skill 的参数说明提供必要输入,即可获得结构化输出
presentation-by-html 是什么?
Use when the user needs to create a technical sharing, presentation, or talk material. Triggered by requests like "prepare a sharing", "make slides", "build... 它是一个面向 Claude Code / OpenClaw 的 AI Agent Skill 插件,目前累计下载 69 次。
如何安装 presentation-by-html?
在 OpenClaw 或 Claude Code 对话框中运行命令「/install presentation-by-html」即可一键安装,无需额外配置。
presentation-by-html 是免费的吗?
是的,presentation-by-html 完全免费,采用 MIT-0 许可证,可自由下载、安装和使用。
presentation-by-html 支持哪些平台?
presentation-by-html 跨平台运行,可在任意部署了 OpenClaw / Claude Code 的环境中使用(cross-platform)。
谁开发了 presentation-by-html?
由 tavis1536-art(@tavis1536-art)开发并维护,当前版本 v1.0.1。