| name | frontend-slides |
|---|---|
| description | 创建零依赖、动画丰富的 HTML 演示文稿。支持从零创建、从 PowerPoint 转换,或增强现有 HTML 演示。帮助非设计师通过视觉探索发现美学偏好,而非抽象选择。 |
创建零依赖、动画丰富的 HTML 演示文稿,完全在浏览器中运行。
- 零依赖 — 单文件 HTML,内联 CSS/JS。无需 npm,无构建工具。
- 展示而非讲述 — 生成视觉预览,而非抽象选择。用户通过看见来发现他们想要的。
- 独特设计 — 拒绝通用"AI 生成"的平庸感。每个演示都必须感觉量身定制。
- 视口适配(不可妥协) — 每张幻灯片必须完全适配 100vh。幻灯片内永远不滚动。内容溢出?拆分成多张幻灯片。
你倾向于收敛到通用的"正态分布"输出。在前端设计中,这创造了用户称为"AI 生成"的美学。避免这点:制作有创意、独特的前端,让人惊喜和愉悦。
专注于:
- 字体:选择美观、独特、有趣的字体。避免通用字体如 Arial 和 Inter;选择能提升前端美学的独特选择。
- 颜色和主题:坚持一致的美学。使用 CSS 变量保持一致性。主导色搭配锐利点缀胜过胆怯、均匀分布的调色板。从 IDE 主题和文化美学中汲取灵感。
- 动效:使用动画实现效果和微交互。优先使用 CSS-only 方案。使用 Motion 库(React 可用时)。专注于高影响力时刻:一个精心编排的页面加载和交错揭示(animation-delay)创造更多愉悦,而非分散的微交互。
- 背景:创建氛围和深度,而非默认纯色。分层 CSS 渐变,使用几何图案,或添加匹配整体美学的情境效果。
避免通用 AI 生成美学:
- 过度使用的字体家族(Inter、Roboto、Arial、系统字体)
- 陈词滥调的配色方案(特别是白色背景上的紫色渐变)
- 可预测的布局和组件模式
- 缺乏情境特色的"饼干模子"设计
创意解读并做出意想不到的选择,感觉真正为情境而设计。在浅色和深色主题、不同字体、不同美学之间变化。你仍倾向于在多次生成中收敛到常见选择(例如 Space Grotesk)。避免这点:跳出框框思考至关重要!
这些不变量适用于每个演示的每张幻灯片:
- 每个
.slide必须有height: 100vh; height: 100dvh; overflow: hidden; - 所有字体大小和间距必须使用
clamp(min, preferred, max)— 永不用固定 px/rem - 内容容器需要
max-height约束 - 图片:
max-height: min(50vh, 400px) - 需要高度断点:700px、600px、500px
- 包含
prefers-reduced-motion支持 - 永不直接否定 CSS 函数(
-clamp()、-min()、-max()被静默忽略)— 改用calc(-1 * clamp(...))
生成时,读取 viewport-base.css 并将其完整内容包含在每个演示中。
| 幻灯片类型 | 最大内容量 |
|---|---|
| 标题幻灯片 | 1 个标题 + 1 个副标题 + 可选标语 |
| 内容幻灯片 | 1 个标题 + 4-6 个要点 或 1 个标题 + 2 个段落 |
| 功能网格 | 1 个标题 + 最多 6 张卡片(2x3 或 3x2) |
| 代码幻灯片 | 1 个标题 + 8-10 行代码 |
| 引用幻灯片 | 1 个引用(最多 3 行)+ 归属 |
| 图片幻灯片 | 1 个标题 + 1 张图片(最大 60vh 高度) |
内容超限?拆分成多张幻灯片。永远不要塞满,永远不要滚动。
确定用户想要什么:
- 模式 A:新建演示 — 从零创建。进入阶段 1。
- 模式 B:PPT 转换 — 转换 .pptx 文件。进入阶段 4。
- 模式 C:增强 — 改进现有 HTML 演示。读取它,理解它,增强。遵循下方模式 C 修改规则。
增强现有演示时,视口适配是最大风险:
- 添加内容前:统计现有元素,对照密度限制检查
- 添加图片:必须有
max-height: min(50vh, 400px)。如果幻灯片已有最大内容,拆分成两张幻灯片 - 添加文本:每张幻灯片最多 4-6 个要点。超限?拆分成延续幻灯片
- 任何修改后验证:
.slide有overflow: hidden,新元素使用clamp(),图片有视口相对的 max-height,内容在 1280x720 下适配 - 主动重组:如果修改会导致溢出,自动拆分内容并告知用户。不要等被要求
向现有幻灯片添加图片时:先将图片移至新幻灯片或减少其他内容。永远不要在不检查现有内容是否已填充视口的情况下添加图片。
在单个 AskUserQuestion 调用中询问所有问题,以便用户一次性填写所有内容:
问题 1 — 目的(header: "Purpose"): 这个演示用于什么?选项:Pitch deck / 教学-教程 / 会议演讲 / 内部演示
问题 2 — 长度(header: "Length"): 大约多少张幻灯片?选项:短 5-10 / 中 10-20 / 长 20+
问题 3 — 内容(header: "Content"): 你有内容准备好了吗?选项:所有内容已就绪 / 粗略笔记 / 仅主题
问题 4 — 行内编辑(header: "Editing"): 生成后需要在浏览器中直接编辑文本吗?选项:
- "是(推荐)" — 可在浏览器中编辑文本,自动保存到 localStorage,导出文件
- "否" — 仅演示,保持文件更小
记住用户的编辑选择 — 它决定是否在阶段 3 中包含编辑相关代码。
如果用户有内容,要求他们分享。
如果用户选择"无图片" → 跳到阶段 2。
如果用户提供图片文件夹:
- 扫描 — 列出所有图片文件(.png、.jpg、.svg、.webp 等)
- 查看每张图片 — 使用 Read 工具(Claude 是多模态的)
- 评估 — 对每张:它显示什么、可用或不可用(及原因)、代表什么概念、主导色
- 协同设计大纲 — 精选图片与文本一起为幻灯片结构提供信息。这不是"规划幻灯片然后添加图片" — 从一开始就围绕两者设计(例如 3 张截图 → 3 张功能幻灯片,1 个标志 → 标题/结束幻灯片)
- 通过 AskUserQuestion 确认(header: "Outline"):"这个幻灯片大纲和图片选择看起来对吗?" 选项:看起来不错 / 调整图片 / 调整大纲
预览中的标志:如果识别到可用标志,将其嵌入(base64)到阶段 2 中的每个样式预览中 — 用户看到他们的品牌以三种不同方式设计。
这是"展示而非讲述"阶段。 大多数人无法用言语表达设计偏好。
询问他们想如何选择(header: "Style"):
- "展示选项"(推荐) — 基于情绪生成 3 个预览
- "我知道我想要的" — 直接从预设列表中选择
如果直接选择:显示预设选择器并跳到阶段 3。可用预设定义在 STYLE_PRESETS.md 中。
询问(header: "Vibe", multiSelect: true, max 2): 观众应该有什么感觉?选项:
- 印象深刻/自信 — 专业、可信
- 兴奋/活力 — 创新、大胆
- 冷静/专注 — 清晰、深思熟虑
- 受启发/感动 — 情感化、难忘
基于情绪,生成 3 个不同的单幻灯片 HTML 预览,展示字体、颜色、动画和整体美学。阅读 STYLE_PRESETS.md 了解可用预设及其规范。
| 情绪 | 建议预设 |
|---|---|
| 印象深刻/自信 | Bold Signal、Electric Studio、Dark Botanical |
| 兴奋/活力 | Creative Voltage、Neon Cyber、Split Pastel |
| 冷静/专注 | Notebook Tabs、Paper & Ink、Swiss Modern |
| 受启发/感动 | Dark Botanical、Vintage Editorial、Pastel Geometry |
将预览保存到 .claude-design/slide-previews/(style-a.html、style-b.html、style-c.html)。每个应自包含,约 50-100 行,显示一张动画标题幻灯片。
自动为用户打开每个预览。
询问(header: "Style"): 你更喜欢哪个风格预览?选项:风格 A: [名称] / 风格 B: [名称] / 风格 C: [名称] / 混合元素
如果"混合元素",询问具体细节。
使用阶段 1 的内容(文本,或文本 + 精选图片)和阶段 2 的风格生成完整演示。
如果提供了图片,幻灯片大纲已从步骤 1.2 整合了它们。如果没有,CSS 生成的视觉效果(渐变、形状、图案)提供视觉趣味 — 这是完全支持的首选路径。
生成前,阅读这些支持文件:
- html-template.md — HTML 架构和 JS 特性
- viewport-base.css — 必需 CSS(完整包含)
- animation-patterns.md — 所选感觉的动画参考
关键要求:
- 单个自包含 HTML 文件,所有 CSS/JS 内联
- 在
<style>块中包含 viewport-base.css 的完整内容 - 使用来自 Fontshare 或 Google Fonts 的字体 — 永不用系统字体
- 添加详细注释解释每个部分
- 每个部分需要清晰的
/* === SECTION NAME === */注释块
转换 PowerPoint 文件时:
- 提取内容 — 运行
python scripts/extract-pptx.py <input.pptx> <output_dir>(如需安装 python-pptx:pip install python-pptx) - 与用户确认 — 呈现提取的幻灯片标题、内容摘要和图片计数
- 风格选择 — 进入阶段 2 进行风格发现
- 生成 HTML — 转换为选定风格,保留所有文本、图片(来自 assets/)、幻灯片顺序和演讲者备注(作为 HTML 注释)
- 清理 — 删除
.claude-design/slide-previews/(如果存在) - 打开 — 使用
open [filename].html在浏览器中启动 - 总结 — 告知用户:
- 文件位置、风格名称、幻灯片数量
- 导航:箭头键、空格、滚动/滑动、点击导航点
- 如何自定义:颜色的
:rootCSS 变量、字体链接、.reveal类的动画 - 如果启用了行内编辑:悬停左上角或按 E 进入编辑模式,点击任意文本编辑,Ctrl+S 保存
| 文件 | 目的 | 何时读取 |
|---|---|---|
| STYLE_PRESETS.md | 12 个精选视觉预设,包含颜色、字体和签名元素 | 阶段 2(风格选择) |
| viewport-base.css | 必需响应式 CSS — 复制到每个演示中 | 阶段 3(生成) |
| html-template.md | HTML 结构、JS 特性、代码质量标准 | 阶段 3(生成) |
| animation-patterns.md | CSS/JS 动画片段和效果-感觉指南 | 阶段 3(生成) |
| scripts/extract-pptx.py | Python 脚本用于 PPT 内容提取 | 阶段 4(转换) |