← 返回
未分类

创作HTML格式的PPT

Create stunning, animation-rich HTML presentations from scratch or by converting PowerPoint files. Use when the user wants to build a presentation, convert a PPT/PPTX to web, or create slides for a talk/pitch. Helps non-designers discover their aesthetic through visual exploration rather than abstract choices.
user_be38de3d
未分类 community v1.0.0 1 版本 99537 Key: 无需
★ 0
Stars
📥 215
下载
💾 15
安装
1
版本
#latest

概述

Gbot Frontend Slides

Create zero-dependency, animation-rich HTML presentations that run entirely in the browser.

Document Boundary

This file is the runtime instruction contract for the agent.

  • SKILL.md defines how the agent should execute the work
  • README.md is the human-facing overview, installation guide, and maintenance entry point

Keep these roles separate:

  • put workflow, hard rules, and execution decisions in SKILL.md
  • put installation, capability overview, file map, and operator-facing guidance in README.md
  • do not duplicate large explanatory sections in both files unless they are necessary in both contexts

Core Principles

  1. Zero Dependencies — Single HTML files with inline CSS/JS. No npm, no build tools.
  2. Show, Don't Tell — Generate visual previews, not abstract choices. People discover what they want by seeing it.
  3. Distinctive Design — No generic "AI slop." Every presentation must feel custom-crafted.
  4. Viewport Fitting (NON-NEGOTIABLE) — Every slide MUST fit exactly within 100vh. No scrolling within slides, ever. Content overflows? Split into multiple slides.

Explicit House Preset Exception

If the user explicitly asks for a fixed house preset that is based on an existing deck system, preserve that preset's stage model exactly.

For example, the card-based preset uses:

  • fixed 1920x1080 stage
  • whole-stage contain scaling into the viewport
  • one-slide-at-a-time presentation, not scroll slides

Even with this exception, the invariant remains: no slide may overflow or require internal scrolling.

Design Aesthetics

You tend to converge toward generic, "on distribution" outputs. In frontend design, this creates what users call the "AI slop" aesthetic. Avoid this: make creative, distinctive frontends that surprise and delight.

Focus on:

  • Typography: Choose fonts that are beautiful, unique, and interesting. Avoid generic fonts like Arial and Inter; opt instead for distinctive choices that elevate the frontend's aesthetics.
  • Color & Theme: Commit to a cohesive aesthetic. Use CSS variables for consistency. Dominant colors with sharp accents outperform timid, evenly-distributed palettes. Draw from IDE themes and cultural aesthetics for inspiration.
  • Motion: Use animations for effects and micro-interactions. Prioritize CSS-only solutions for HTML. Use Motion library for React when available. Focus on high-impact moments: one well-orchestrated page load with staggered reveals (animation-delay) creates more delight than scattered micro-interactions.
  • Backgrounds: Create atmosphere and depth rather than defaulting to solid colors. Layer CSS gradients, use geometric patterns, or add contextual effects that match the overall aesthetic.

Avoid generic AI-generated aesthetics:

  • Overused default stacks used without intent
  • Cliched color schemes (particularly purple gradients on white backgrounds)
  • Predictable layouts and component patterns
  • Cookie-cutter design that lacks context-specific character

Interpret creatively and make unexpected choices that feel genuinely designed for the context. Vary between light and dark themes, different fonts, different aesthetics. You still tend to converge on common choices (Space Grotesk, for example) across generations. Avoid this: it is critical that you think outside the box!

Font Loading Strategy

Presentations generated by this skill should treat font delivery as an explicit deployment choice, not an afterthought.

Supported modes:

  • Simple-web mode — default. Prefer a simple, robust stack similar to this 32kw page: one sans stack for the main layer, one serif stack only when needed for emphasis, and one system mono stack for meta labels. Avoid external font dependencies unless the user explicitly wants them.
  • China-friendly CDN mode — optional. Use when the user explicitly wants a hosted Chinese font stack, or when a preset already depends on a specific China-friendly CDN font family.
  • Google mode — optional. Keep the standard Google Fonts loading pattern available for users whose audience is primarily outside mainland China or who explicitly want the Google-hosted setup.

Decision rule:

  • default to simple-web mode unless the user explicitly asks for CDN-hosted or Google-hosted fonts
  • keep Google mode documented and available; do not remove it from the skill
  • if a preset defines a preferred font stack, preserve the stack but simplify delivery when reliability matters
  • when you change font delivery mode, do not silently change the whole visual language unless the user asks for it

Viewport Fitting Rules

These invariants apply to EVERY slide in EVERY presentation:

  • Every .slide must have height: 100vh; height: 100dvh; overflow: hidden;
  • ALL font sizes and spacing must use clamp(min, preferred, max) — never fixed px/rem
  • Content containers need max-height constraints
  • Images: max-height: min(50vh, 400px)
  • Breakpoints required for heights: 700px, 600px, 500px
  • Include prefers-reduced-motion support
  • Never negate CSS functions directly (-clamp(), -min(), -max() are silently ignored) — use calc(-1 * clamp(...)) instead

When generating, read viewport-base.css and include its full contents in every presentation.

Content Density Limits Per Slide

Slide TypeMaximum Content
----------------------------------------------------------------------
Title slide1 heading + 1 subtitle + optional tagline
Content slide1 heading + 4-6 bullet points OR 1 heading + 2 paragraphs
Feature grid1 heading + 6 cards maximum (2x3 or 3x2)
Code slide1 heading + 8-10 lines of code
Quote slide1 quote (max 3 lines) + attribution
Image slide1 heading + 1 image (max 60vh height)

Content exceeds limits? Split into multiple slides. Never cram, never scroll.


Phase 0: Detect Mode

Determine what the user wants:

  • Mode A: New Presentation — Create from scratch. Go to Phase 1.
  • Mode B: PPT Conversion — Convert a .pptx file. Go to Phase 4.
  • Mode C: Enhancement — Improve an existing HTML presentation. Read it, understand it, enhance. Follow Mode C modification rules below.

Mode C: Modification Rules

When enhancing existing presentations, viewport fitting is the biggest risk:

  1. Before adding content: Count existing elements, check against density limits
  2. Adding images: Must have max-height: min(50vh, 400px). If slide already has max content, split into two slides
  3. Adding text: Max 4-6 bullets per slide. Exceeds limits? Split into continuation slides
  4. After ANY modification, verify: .slide has overflow: hidden, new elements use clamp(), images have viewport-relative max-height, content fits at 1280x720
  5. 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.


Phase 1: Content Discovery (New Presentations)

Ask ALL questions in a single AskUserQuestion call so the user fills everything out at once:

Question 1 — Purpose (header: "Purpose"):

What is this presentation for? Options: Pitch deck / Teaching-Tutorial / Conference talk / Internal presentation

Question 2 — Length (header: "Length"):

Approximately how many slides? Options: Short 5-10 / Medium 10-20 / Long 20+

Question 3 — Content (header: "Content"):

Do you have content ready? Options: All content ready / Rough notes / Topic only

Question 4 — Inline Editing (header: "Editing"):

Do you need to edit text directly in the browser after generation? Options:

  • "Yes (Recommended)" — Can edit text in-browser, auto-save to localStorage, export file
  • "No" — Presentation only, keeps file smaller

Remember the user's editing choice — it determines whether edit-related code is included in Phase 3.

If user has content, ask them to share it.

Step 1.2: Image Evaluation (if images provided)

If user selected "No images" → skip to Phase 2.

If user provides an image folder:

  1. Scan — List all image files (.png, .jpg, .svg, .webp, etc.)
  2. View each image — Use the Read tool (Claude is multimodal)
  3. Evaluate — For each: what it shows, USABLE or NOT USABLE (with reason), what concept it represents, dominant colors
  4. Co-design the outline — Curated images inform slide structure alongside text. This is NOT "plan slides then add images" — design around both from the start (e.g., 3 screenshots → 3 feature slides, 1 logo → title/closing slide)
  5. Confirm via AskUserQuestion (header: "Outline"): "Does this slide outline and image selection look right?" Options: Looks good / Adjust images / Adjust outline

Logo in previews: If a usable logo was identified, embed it (base64) into each style preview in Phase 2 — the user sees their brand styled three different ways.


Phase 2: Style Discovery

This is the "show, don't tell" phase. Most people can't articulate design preferences in words.

Step 2.0: Style Path

Ask how they want to choose (header: "Style"):

  • "Show me options" (recommended) — Generate 3 previews based on mood
  • "I know what I want" — Pick from preset list directly

If the user explicitly requests a fixed / house preset, skip preview generation and use that preset directly.

If direct selection: Show preset picker and skip to Phase 3. Available presets are defined in STYLE_PRESETS.md.

Fixed House Presets

If the user asks to reproduce an established deck style instead of exploring options, load the preset directly.

Included house preset:

  • card-based — fixed engineering explainer style with card-driven information architecture, suitable for the current SKILLS technology deck system

When this preset is selected, read:

Step 2.1: Mood Selection (Guided Discovery)

Ask (header: "Vibe", multiSelect: true, max 2):

What feeling should the audience have? Options:

  • Impressed/Confident — Professional, trustworthy
  • Excited/Energized — Innovative, bold
  • Calm/Focused — Clear, thoughtful
  • Inspired/Moved — Emotional, memorable

Step 2.2: Generate 3 Style Previews

Based on mood, generate 3 distinct single-slide HTML previews showing typography, colors, animation, and overall aesthetic. Read STYLE_PRESETS.md for available presets and their specifications.

MoodSuggested Presets
---------------------------------------------------------------------
Impressed/ConfidentBold Signal, Electric Studio, Dark Botanical
Excited/EnergizedCreative Voltage, Neon Cyber, Split Pastel
Calm/FocusedNotebook Tabs, Paper & Ink, Swiss Modern
Inspired/MovedDark Botanical, Vintage Editorial, Pastel Geometry

Save previews to .claude-design/slide-previews/ (style-a.html, style-b.html, style-c.html). Each should be self-contained, ~50-100 lines, showing one animated title slide.

Open each preview automatically for the user.

Step 2.3: User Picks

Ask (header: "Style"):

Which style preview do you prefer? Options: Style A: [Name] / Style B: [Name] / Style C: [Name] / Mix elements

If "Mix elements", ask for specifics.


Phase 3: Generate Presentation

Generate the full presentation using content from Phase 1 (text, or text + curated images) and style from Phase 2.

If images were provided, the slide outline already incorporates them from Step 1.2. If not, CSS-generated visuals (gradients, shapes, patterns) provide visual interest — this is a fully supported first-class path.

Before generating, read these supporting files:

If a house preset was selected, also read its preset files and prefer them over the generic preset guidance where they conflict.

Text Fidelity Rule

When the user provides a normalized source file such as a page-detail document, treat that file as the single source of truth for all slide text.

Hard requirements:

  • do not paraphrase, rewrite, summarize, expand, soften, or merge source text on your own
  • titles, subtitles, labels, bullets, summaries, and code-like tokens must come directly from the source file
  • if text does not fit, solve it with layout decisions first:
  • split into more slides
  • switch to a denser allowed archetype
  • tighten spacing or title sizing according to preset rules
  • do not "fix" wording for fluency unless the user explicitly asks for copy editing

Execution rule:

  • before generating each slide, map every visible text node to a specific field in the source file
  • after generating, do one verification pass to ensure all visible text is traceable back to the source file and no extra copy was invented

Key requirements:

  • Single self-contained HTML file, all CSS/JS inline
  • Include the FULL contents of viewport-base.css in the