skills/frontend-slides/SKILL.md
Create viewport-fitted single-file HTML slide decks with 8 curated visual themes, system font fallbacks, and scroll-snap navigation. Use for web/HTML presentations, not .pptx export. Trigger: HTML slides, web slides, single-file presentation, slidedeck, pitch deck as HTML, 做 HTML 幻灯片, 网页版 PPT
npx skillsauth add shiqkuangsan/oh-my-daily-skills tooyoung:frontend-slidesInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Create beautiful, single-file HTML slide presentations. Each slide fills exactly one viewport — no scrolling within slides, no build tools, no frameworks. Inspired by zarazhangrui/frontend-slides.
Output: One .html file containing all CSS, JS, and slide content inline.
Font strategy: Every theme specifies a Google Fonts / Fontshare web font AND a system font fallback stack. Web fonts enhance — they are not required. Presentations must look good offline.
Reference files contain complete code templates. Load them on-demand — only read what you need for the current task.
100dvh, overflow: hidden, scroll-snap-align: start. Content that overflows → split into more slides.clamp(). No fixed px/rem for typography or spacing. Everything scales with the viewport.<link>, everything else inline. No external CSS/JS files.prefers-reduced-motion. All animations must have a reduced-motion fallback.This section is THE authority on viewport rules. Reference files do not repeat these — they assume this CSS is always present.
*,
*::before,
*::after {
margin: 0;
padding: 0;
box-sizing: border-box;
}
html {
scroll-snap-type: y mandatory;
scroll-behavior: smooth;
height: 100%;
}
body {
font-family: var(--font-body);
background: var(--bg-primary);
color: var(--text-primary);
overflow-x: hidden;
height: 100%;
}
.slide {
width: 100vw;
height: 100vh;
height: 100dvh;
overflow: hidden;
scroll-snap-align: start;
display: flex;
flex-direction: column;
position: relative;
}
.slide-content {
flex: 1;
display: flex;
flex-direction: column;
justify-content: center;
max-height: 100%;
overflow: hidden;
padding: var(--slide-padding);
}
:root {
/* Typography — MUST use clamp() */
--title-size: clamp(1.5rem, 5vw, 4rem);
--h2-size: clamp(1.25rem, 3.5vw, 2.5rem);
--h3-size: clamp(1rem, 2.5vw, 1.75rem);
--body-size: clamp(0.75rem, 1.5vw, 1.125rem);
--small-size: clamp(0.65rem, 1vw, 0.875rem);
/* Spacing — MUST use clamp() */
--slide-padding: clamp(1rem, 4vw, 4rem);
--content-gap: clamp(0.5rem, 2vw, 2rem);
--element-gap: clamp(0.25rem, 1vw, 1rem);
/* Animation */
--ease-out-expo: cubic-bezier(0.16, 1, 0.3, 1);
--duration-normal: 0.6s;
}
/* Short viewports (< 700px height) */
@media (max-height: 700px) {
:root {
--slide-padding: clamp(0.75rem, 3vw, 2rem);
--content-gap: clamp(0.4rem, 1.5vw, 1rem);
--title-size: clamp(1.25rem, 4.5vw, 2.5rem);
--h2-size: clamp(1rem, 3vw, 1.75rem);
}
}
/* Very short (< 600px height) */
@media (max-height: 600px) {
:root {
--slide-padding: clamp(0.5rem, 2.5vw, 1.5rem);
--content-gap: clamp(0.3rem, 1vw, 0.75rem);
--title-size: clamp(1.1rem, 4vw, 2rem);
--body-size: clamp(0.7rem, 1.2vw, 0.95rem);
}
.nav-dots,
.keyboard-hint,
.decorative {
display: none;
}
}
/* Landscape phones (< 500px height) */
@media (max-height: 500px) {
:root {
--slide-padding: clamp(0.4rem, 2vw, 1rem);
--title-size: clamp(1rem, 3.5vw, 1.5rem);
--h2-size: clamp(0.9rem, 2.5vw, 1.25rem);
--body-size: clamp(0.65rem, 1vw, 0.85rem);
}
}
/* Narrow viewports (< 600px width) */
@media (max-width: 600px) {
:root {
--title-size: clamp(1.25rem, 7vw, 2.5rem);
}
.grid {
grid-template-columns: 1fr;
}
}
/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
*,
*::before,
*::after {
animation-duration: 0.01ms !important;
transition-duration: 0.2s !important;
}
html {
scroll-behavior: auto;
}
}
Hard maximums per slide type. If content exceeds → split into multiple slides.
| Slide Type | Maximum Content |
| ------------ | ---------------------------------------------------- |
| Title | 1 heading + 1 subtitle + optional tagline |
| Content | 1 heading + 4–6 bullets OR 1 heading + 2 paragraphs |
| Feature Grid | 1 heading + 6 cards max (2×3 or 3×2) |
| Code | 1 heading + 8–10 lines of code max |
| Quote | 1 quote (max 3 lines) + attribution |
| Two-Column | 1 heading + 2 columns, each ≤ 4 bullets |
| Image | 1 heading + 1 image (max-height: min(50vh, 400px)) |
Seven standard types. See references/slide-components.md for complete HTML/CSS templates.
| Type | Class | Use For |
| ------------ | ---------------- | -------------------------------------- |
| Title | .title-slide | Opening slide, section dividers |
| Content | .content-slide | Bullet points, paragraphs |
| Code | .code-slide | Code snippets with syntax highlighting |
| Feature Grid | .grid-slide | Feature cards, comparisons |
| Quote | .quote-slide | Testimonials, key statements |
| Two-Column | .two-col-slide | Side-by-side comparisons |
| Image | .image-slide | Screenshots, diagrams, photos |
8 curated themes across 3 categories. Each theme includes CSS variables, font pairings with system fallbacks, layout guidance, and signature element CSS.
references/themes-dark.md| Theme | Vibe | Signature | | ---------------- | ----------------------- | ---------------------------------------------------- | | Bold Signal | Confident, high-impact | Colored card on dark gradient, large section numbers | | Creative Voltage | Energetic, retro-modern | Electric blue + neon yellow, halftone textures | | Dark Botanical | Elegant, sophisticated | Soft gradient circles, warm gold/pink accents |
references/themes-light.md| Theme | Vibe | Signature | | ----------------- | ------------------------- | ----------------------------------------------------- | | Notebook Tabs | Editorial, tactile | Paper card with colored tabs, binder holes | | Pastel Geometry | Friendly, approachable | Rounded card with vertical pills on right edge | | Vintage Editorial | Witty, personality-driven | Geometric shapes, bold bordered CTAs, serif headlines |
references/themes-specialty.md| Theme | Vibe | Signature | | -------------- | ----------------- | ------------------------------------------------- | | Neon Cyber | Futuristic, techy | Particle backgrounds, neon glow, grid patterns | | Terminal Green | Developer, hacker | Scan lines, blinking cursor, monospace everything |
Every theme has two font stacks — web (CDN) and system (offline).
| Theme | Web Font | System Fallback | | ----------------- | ----------------------------- | -------------------------------------------------- | | Bold Signal | Archivo Black / Space Grotesk | Impact, Arial Black / system-ui | | Creative Voltage | Syne / Space Mono | Trebuchet MS / Courier New, monospace | | Dark Botanical | Cormorant / IBM Plex Sans | Georgia, Times New Roman / system-ui | | Notebook Tabs | Bodoni Moda / DM Sans | Didot, Georgia / system-ui | | Pastel Geometry | Plus Jakarta Sans | system-ui, -apple-system | | Vintage Editorial | Fraunces / Work Sans | Georgia, Palatino / system-ui | | Neon Cyber | Clash Display / Satoshi | system-ui, -apple-system | | Terminal Green | JetBrains Mono | "SF Mono", "Cascadia Code", "Fira Code", monospace |
When web fonts fail to load, the presentation must still look intentional — system fallbacks are chosen to preserve the theme's character.
references/slide-template.md (HTML skeleton)references/themes-*.md (for chosen theme)references/slide-components.md (for specific slide types)references/animation-recipes.md (for advanced effects)/* WRONG — silently ignored, no console error: */
right: -clamp(28px, 3.5vw, 44px);
margin-left: -min(10vw, 100px);
/* CORRECT — wrap in calc(): */
right: calc(-1 * clamp(28px, 3.5vw, 44px));
margin-left: calc(-1 * min(10vw, 100px));
Browsers silently discard declarations with - before clamp(), min(), max().
.slide-image {
max-width: 100%;
max-height: min(50vh, 400px);
object-fit: contain;
border-radius: 8px;
}
.slide-image.screenshot {
border: 1px solid rgba(255, 255, 255, 0.1);
box-shadow: 0 8px 32px rgba(0, 0, 0, 0.3);
}
.grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(min(100%, 250px), 1fr));
gap: clamp(0.5rem, 1.5vw, 1rem);
}
| Feeling | Techniques | | ------------ | ------------------------------------------------------------------------ | | Dramatic | Slow fade-ins (1–1.5s), scale 0.9→1, dark bg + spotlight, parallax | | Techy | Neon glow, particle canvas, grid patterns, monospace, glitch effects | | Playful | Bouncy easing, large border-radius, pastels, floating animations | | Professional | Subtle fast animations (200–300ms), clean sans-serif, minimal decoration | | Calm | Very slow subtle motion, high whitespace, muted palette, serif type | | Editorial | Strong type hierarchy, pull quotes, grid-breaking layouts, serif + sans |
position: fixed for slides (breaks scroll-snap)px / rem for typography or spacing (use clamp())vh without dvh fallback (mobile address bar issues)overflow: auto/scroll on .slide (breaks one-slide-per-viewport rule)@import in CSS (use <link> in <head> for performance)| File | Contents | When to Load |
| ---------------------- | ------------------------------------------------- | --------------------------------------- |
| slide-template.md | Complete HTML/CSS/JS skeleton with navigation | Always — every presentation starts here |
| slide-components.md | 7 slide type HTML templates | Always — for building individual slides |
| themes-dark.md | Bold Signal, Creative Voltage, Dark Botanical | When using a dark theme |
| themes-light.md | Notebook Tabs, Pastel Geometry, Vintage Editorial | When using a light theme |
| themes-specialty.md | Neon Cyber, Terminal Green | When using a specialty theme |
| animation-recipes.md | Reveal, stagger, typewriter, particle effects | When advanced animations are needed |
development
Show OpenAI Codex release highlights in Chinese. Fetch GitHub release notes, summarize feature-level changes, skip bug-fix/chore noise by default, and append a mandatory highlights section. Trigger words: Codex updates, Codex features, Codex 新功能, Codex 更新, OpenAI Codex releases
development
清理当前项目的 Claude Code 会话:列出 ~/.claude/projects 下最近会话,按序号或 sessionId 选择,经二次确认后删除对应 .jsonl 与同名附件目录。Trigger words: 清理 cc 会话, 删除历史会话, cc resume 会话, clean cc sessions, cc session cleaner
development
Create simple Three.js web apps with scene setup, lighting, geometries, materials, animations, OrbitControls, particles, and responsive rendering. Use for Three.js scenes, WebGL demos, 3D showcases, and interactive 3D web content. Trigger: threejs, Three.js, 3D scene, WebGL, 三维展示, 3D showcase, interactive 3D
development
为 Claude Code 定义个性化身份风格(人设)。触发词:定义人设、创建身份、persona、角色设定、CLAUDE.local.md