frontend-slides by sickn33/antigravity-awesome-skills
npx skills add https://github.com/sickn33/antigravity-awesome-skills --skill frontend-slides创建零依赖、动画丰富的 HTML 演示文稿,完全在浏览器中运行。
你倾向于趋同于通用的、“符合分布”的输出。在前端设计中,这会产生用户所谓的“AI 垃圾”美学。避免这种情况:创造有创意、独特、令人惊喜和愉悦的前端。
关注:
避免通用的 AI 生成美学:
创造性地解读,做出意想不到的选择,使其感觉真正为上下文而设计。在明暗主题、不同字体、不同美学之间变化。你仍然倾向于在不同代际中趋同于常见选择(例如 Space Grotesk)。避免这种情况:跳出框框思考至关重要!
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
这些不变式适用于每个演示文稿中的每一张幻灯片:
.slide 必须具有 height: 100vh; height: 100dvh; overflow: hidden;clamp(min, preferred, max) — 绝不用固定的 px/remmax-height 约束max-height: min(50vh, 400px)prefers-reduced-motion 支持-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) |
内容超出限制?拆分成多张幻灯片。切勿堆砌,切勿滚动。
确定用户想要什么:
在增强现有演示文稿时,视口适配是最大的风险:
max-height: min(50vh, 400px)。如果幻灯片已有最大内容,拆分成两张幻灯片.slide 有 overflow: hidden,新元素使用 clamp(),图片具有视口相关的最大高度,内容在 1280x720 分辨率下适配向现有幻灯片添加图片时: 先将图片移到新幻灯片或减少其他内容。切勿在不检查现有内容是否已填满视口的情况下添加图片。
在单个 AskUserQuestion 调用中提出所有问题,以便用户一次性填写所有内容:
问题 1 — 目的(标题:"Purpose"):这个演示文稿是做什么用的?选项:宣传稿 / 教学-教程 / 会议演讲 / 内部演示
问题 2 — 长度(标题:"Length"):大约多少张幻灯片?选项:短 5-10 / 中 10-20 / 长 20+
问题 3 — 内容(标题:"Content"):您准备好内容了吗?选项:所有内容已就绪 / 粗略笔记 / 仅主题
问题 4 — 内联编辑(标题:"Editing"):生成后您需要在浏览器中直接编辑文本吗?选项:
记住用户的选择 — 它决定了阶段 3 中是否包含编辑相关代码。
如果用户有内容,请他们分享。
如果用户选择了“无图片” → 跳到阶段 2。
如果用户提供了图片文件夹:
预览中的徽标: 如果识别出可用的徽标,将其(base64)嵌入到阶段 2 的每个样式预览中 — 用户将看到他们的品牌以三种不同的方式呈现。
这是“展示,而非讲述”的阶段。 大多数人无法用语言表达设计偏好。
询问他们希望如何选择(标题:"Style"):
如果直接选择: 显示预设选择器并跳到阶段 3。可用预设定义在 STYLE_PRESETS.md 中。
询问(标题:"Vibe",多选:true,最多 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 行,展示一个带有动画的标题幻灯片。
自动为用户打开每个预览。
询问(标题:"Style"):您更喜欢哪个样式预览?选项:样式 A: [名称] / 样式 B: [名称] / 样式 C: [名称] / 混合元素
如果选择“混合元素”,请询问具体细节。
使用阶段 1 的内容(文本,或文本 + 精选图片)和阶段 2 的样式生成完整的演示文稿。
如果提供了图片,幻灯片大纲已经包含了来自步骤 1.2 的图片。如果没有,CSS 生成的视觉效果(渐变、形状、图案)提供视觉趣味 — 这是一个完全受支持的一流路径。
生成前,阅读这些支持文件:
关键要求:
<style> 块中包含 viewport-base.css 的完整内容/* === 部分名称 === */ 注释块转换 PowerPoint 文件时:
python scripts/extract-pptx.py <input.pptx> <output_dir>(如果需要,安装 python-pptx:pip install python-pptx).claude-design/slide-previews/(如果存在)open [filename].html 在浏览器中启动:root CSS 变量,用于字体的字体链接,用于动画的 .reveal 类| 文件 | 用途 | 何时阅读 |
|---|---|---|
| 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 | 用于 PPT 内容提取的 Python 脚本 | 阶段 4(转换) |
每周安装数
179
仓库
GitHub 星标数
27.1K
首次出现
2026年2月1日
安全审计
安装在
opencode174
gemini-cli170
codex170
github-copilot169
kimi-cli167
amp166
Create zero-dependency, animation-rich HTML presentations that run entirely in the browser.
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:
Avoid generic AI-generated aesthetics:
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!
These invariants apply to EVERY slide in EVERY presentation:
.slide must have height: 100vh; height: 100dvh; overflow: hidden;clamp(min, preferred, max) — never fixed px/remmax-height constraintsmax-height: min(50vh, 400px)prefers-reduced-motion support-clamp(), -min(), -max() are silently ignored) — use calc(-1 * clamp(...)) insteadWhen generating, readviewport-base.css and include its full contents in every presentation.
| Slide Type | Maximum Content |
|---|---|
| Title slide | 1 heading + 1 subtitle + optional tagline |
| Content slide | 1 heading + 4-6 bullet points OR 1 heading + 2 paragraphs |
| Feature grid | 1 heading + 6 cards maximum (2x3 or 3x2) |
| Code slide | 1 heading + 8-10 lines of code |
| Quote slide | 1 quote (max 3 lines) + attribution |
| Image slide | 1 heading + 1 image (max 60vh height) |
Content exceeds limits? Split into multiple slides. Never cram, never scroll.
Determine what the user wants:
When enhancing existing presentations, viewport fitting is the biggest risk:
max-height: min(50vh, 400px). If slide already has max content, split into two slides.slide has overflow: hidden, new elements use clamp(), images have viewport-relative max-height, content fits at 1280x720When 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.
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:
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.
If user selected "No images" → skip to Phase 2.
If user provides an image folder:
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.
This is the "show, don't tell" phase. Most people can't articulate design preferences in words.
Ask how they want to choose (header: "Style"):
If direct selection: Show preset picker and skip to Phase 3. Available presets are defined in STYLE_PRESETS.md.
Ask (header: "Vibe", multiSelect: true, max 2): What feeling should the audience have? Options:
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.
| Mood | Suggested Presets |
|---|---|
| Impressed/Confident | Bold Signal, Electric Studio, Dark Botanical |
| Excited/Energized | Creative Voltage, Neon Cyber, Split Pastel |
| Calm/Focused | Notebook Tabs, Paper & Ink, Swiss Modern |
| Inspired/Moved | Dark 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.
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.
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:
Key requirements:
<style> block/* === SECTION NAME === */ comment blockWhen converting PowerPoint files:
python scripts/extract-pptx.py <input.pptx> <output_dir> (install python-pptx if needed: pip install python-pptx).claude-design/slide-previews/ if it existsopen [filename].html to launch in browser:root CSS variables for colors, font link for typography, .reveal class for animations| File | Purpose | When to Read |
|---|---|---|
| STYLE_PRESETS.md | 12 curated visual presets with colors, fonts, and signature elements | Phase 2 (style selection) |
| viewport-base.css | Mandatory responsive CSS — copy into every presentation | Phase 3 (generation) |
| html-template.md | HTML structure, JS features, code quality standards | Phase 3 (generation) |
| animation-patterns.md | CSS/JS animation snippets and effect-to-feeling guide | Phase 3 (generation) |
| scripts/extract-pptx.py | Python script for PPT content extraction | Phase 4 (conversion) |
Weekly Installs
179
Repository
GitHub Stars
27.1K
First Seen
Feb 1, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykPass
Installed on
opencode174
gemini-cli170
codex170
github-copilot169
kimi-cli167
amp166
React 组合模式指南:Vercel 组件架构最佳实践,提升代码可维护性
116,600 周安装
React 网页动画库指南:GSAP、Framer Motion、Anime.js 实现 Awwwards 级 60fps 动画
659 周安装
代码安全审查技能:密钥管理、SQL注入防护、身份验证最佳实践指南
653 周安装
Google Apps Script 自动化脚本教程 - 免费实现 Google Sheets 与 Workspace 自动化
661 周安装
AGENTS.md 编写指南 - 为 AI 智能体创建高效文档的完整规范与最佳实践
719 周安装
zai-tts:基于GLM-TTS的AI语音生成工具,支持语速音量和多语音切换
664 周安装
PowerPoint自动化生成工具:HTML转PPT,高保真布局与模板编辑工作流
664 周安装