视觉画布设计
canvas-design
基于设计原则创作静态视觉作品,用于海报与品牌图形。
frontend-slides【文档与办公】Create stunning, animation-rich single-file HTML presentations from scratch or by converting a PowerPoint (.pptx) file. Use when the user wants to build a presentation, convert a PPT to web format, or create slides for a talk, pitch, or demo. Shows 3 visual style previews before building the full deck — no design experience needed.
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
Create zero-dependency, animation-rich HTML presentations that run entirely in the browser.
Ask the user:
If a .pptx file is provided → jump to Phase 4 (PowerPoint Conversion) first, then return here.
Ask the user their vibe (multiselect, max 2):
Map their vibe to 3 distinct presets from this list and generate one single-slide HTML preview for each:
| Preset | Feel |
|---|---|
| Bold Signal | Dark, high-contrast, confident |
| Electric Studio | Vibrant neon on dark, energized |
| Dark Botanical | Dark with organic texture, calm authority |
| Notebook Tabs | Light, handwritten-feel, approachable |
| Pastel Geometry | Soft colors, geometric shapes, friendly |
| Neon Cyber | Cyberpunk grid, glowing text, futuristic |
| Creative Voltage | Bold gradients, dynamic diagonals |
| Split Pastel | Two-tone split layout, modern editorial |
| Paper & Ink | Cream background, serif type, classic |
| Swiss Modern | Brutalist grid, red + black, no-nonsense |
| Vintage Editorial | Magazine-style, muted tones, typographic |
| Minimal Zen | White space, single accent color, clean |
Save 3 preview files to .claude-design/slide-previews/ as style-a.html, style-b.html, style-c.html and open them.
Wait for the user to pick one (A, B, or C) — or ask to mix elements from two.
Using the chosen style, generate the complete single-file HTML presentation.
Slide structure rules:
| Slide Type | Maximum Content |
|---|---|
| Title | 1 heading + 1 subtitle + optional tagline |
| Content | 1 heading + 4–6 bullets OR 2 paragraphs |
| Feature grid | 1 heading + 6 cards max (2×3 or 3×2) |
| Code | 1 heading + 8–10 lines of code |
| Quote | 1 quote (max 3 lines) + attribution |
| Image | 1 heading + 1 image (max 60vh) |
Required slides:
HTML requirements:
<div> (toggle with N key)prefers-reduced-motion supportViewport fitting (mandatory):
.slide: height: 100vh; height: 100dvh; overflow: hidden;clamp(min, preferred, max) — never fixed px/remmax-height: min(50vh, 400px)calc(-1 * clamp(...))Output the complete HTML file. Default filename: presentation.html.
python-pptx if needed):
pip install python-pptx -q
python -c "
from pptx import Presentation
import json, sys
prs = Presentation(sys.argv[1])
slides = []
for i, slide in enumerate(prs.slides):
texts = [shape.text for shape in slide.shapes if shape.has_text_frame]
slides.append({'slide': i+1, 'content': texts})
print(json.dumps(slides, indent=2))
" <path_to_pptx>
Deploy to Vercel (requires Node + Vercel CLI):
vercel deploy ./presentation.html
Export to PDF (requires Node + Playwright):
npx playwright install chromium --with-deps
node -e "
const { chromium } = require('playwright');
(async () => {
const browser = await chromium.launch();
const page = await browser.newPage();
await page.goto('file://' + require('path').resolve('presentation.html'));
await page.pdf({ path: 'presentation.pdf', printBackground: true });
await browser.close();
console.log('Saved: presentation.pdf');
})();
"
Based on frontend-slides by Zara Zhang Rui.