Help us improve
Share bugs, ideas, or general feedback.
From slides
Provides the Slides framework's component library, design tokens, theme rules, storytelling formats, and tone/diversity guidelines for generating on-brand HTML slide decks.
npx claudepluginhub noskillish/slides --plugin slidesHow this skill is triggered — by the user, by Claude, or both
Slash command
/slides:deck-systemThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
You are generating a slide deck using the Slides framework. This skill gives you everything needed to produce correct, on-brand decks.
Generates a professionally designed HTML slide deck from a brief or content notes. Single-file output with 13 layout types and 8 style presets.
Generates self-contained HTML slide decks for product presentations. Reads pm-context.md, extracts brand colors from websites, adds keyboard navigation and print-friendly layouts.
Generates self-contained HTML slide presentations with keyboard navigation, swipe support, fullscreen, animations, embedded images, and brand-accurate styling from guides.
Share bugs, ideas, or general feedback.
You are generating a slide deck using the Slides framework. This skill gives you everything needed to produce correct, on-brand decks.
A single self-contained HTML file (deck.html) with inline CSS and JS. No build step, no dependencies beyond Google Fonts (Inter). Navigate with arrow keys, space, swipe. Export to PDF with P.
The user's message, form responses, and attachments are the brief. Extract every detail: topic, format, length, theme, audience, key points.
Never re-ask for information the user already gave. If the user filled in a form or wrote a description, that is the brief. Use it. Proceed to Step 1 immediately.
If you truly have zero context about what the deck is about, ask once in plain text. One short question. Then move on.
Based on the user's description, select the right storytelling format. Read the corresponding file for full structure and guidance.
| Signal in user's description | Format | File (same folder as this skill) |
|---|---|---|
| "talk", "conference", "keynote", "audience", "stage" | TED Talk (six-beat) | STORYTELLING.md |
| "pitch", "investors", "funding", "raise", "seed", "series" | Sequoia pitch deck | STORYTELLING-sequoia.md |
| "strategy", "board", "quarterly", "exec", "leadership" | McKinsey SCR | STORYTELLING-mbb.md |
| "launch", "product", "release", "announce", "unveil" | Product launch | STORYTELLING-product-launch.md |
| "board update", "status", "review", "KPIs", "OKRs" | Board update | STORYTELLING-board.md |
| "sales", "prospect", "customer", "close", "pipeline" | Sales deck | STORYTELLING-sales.md |
These files are in the same directory as this SKILL.md. Read them from here.
Default: If unclear, use the six-beat TED Talk structure from STORYTELLING.md. It adapts to most formats.
Before writing HTML, produce a slide-by-slide outline:
Share the outline with the user. Get approval before writing HTML.
Use the component reference below. Copy the exact HTML structure. Change only the text content. Stay on-token.
| Token | Hex | Use |
|---|---|---|
| Background | #f5f5f3 | Page/slide background |
| Surface | #fafaf8 | Card backgrounds |
| Surface (white) | #ffffff | Cards that need more contrast |
| Ink / Hero | #1a1a1a | Text primary, dark slides |
| Border soft | #e0e0db | Default borders |
| Border medium | #d5d5d0 | Emphasized borders |
| Pill background | #eeeee9 | Context pills |
| Text dim | #a0a09a | Subtitles, body copy |
| Text very dim | #b5b5b0 | Dim spans in headlines, meta |
| Text faint | #c5c5c0 | Labels, very low priority text |
| On-dark text | #f5f5f3 | Primary text on dark backgrounds |
| On-dark dim | #ccc | Body text on dark backgrounds |
| On-dark very dim | #888 | Labels on dark backgrounds |
clamp(2.5rem, 6vw, 5rem), weight 500, tracking -0.035emclamp(1.75rem, 3.5vw, 2.6rem), weight 500, tracking -0.025em0.08–0.1em, color #a0a09a6vh 8vw1100px1rem–1.5rem10px cards, 4px small elements2–4remBold anchor + dim extension. This is the visual identity of the system.
<h1>Anchor. <span class="dim">Extension that fades.</span></h1>
#b5b5b0 (or #888 on dark slides)<section class="slide active">
<div class="slide-inner">
<div class="eyebrow">Conference · Date</div>
<h1>Your headline.<br><span class="dim">Continuation.</span></h1>
<div class="meta">Speaker name · 20 minutes</div>
</div>
</section>
A single bold statement. No subtitle. No supporting text.
<section class="slide quote-slide">
<div class="slide-inner">
<h1>A bold statement <span class="dim">that opens the talk.</span></h1>
</div>
</section>
Dark variant: <section class="slide dark quote-slide">
The default text slide.
<section class="slide">
<div class="slide-inner">
<div class="eyebrow">Section label</div>
<h1>Headline. <span class="dim">One line that lands.</span></h1>
<p class="subtitle">One or two sentences of nuance. Keep it short.</p>
</div>
</section>
<div class="two-col">
<div>
<div class="eyebrow">The problem</div>
<h2>What's broken.</h2>
<p>Description of the pain.</p>
</div>
<div>
<div class="eyebrow">The fix</div>
<h2>What we built.</h2>
<p>Description of the solution.</p>
</div>
</div>
<div class="col-stack">
<div class="step">First step</div>
<div class="step dim">Blocked step</div>
<div class="step kill">Negative outcome</div>
<div class="step live">Positive outcome</div>
</div>
<div class="three-col" style="margin-top: 2rem;">
<div><h3>Why</h3><p>The motivation.</p></div>
<div><h3>How</h3><p>The mechanism.</p></div>
<div><h3>What</h3><p>The outcome.</p></div>
</div>
<div class="cap-list" style="margin-top: 2rem;">
<div class="cap-row">
<div class="cap-q">Question?</div>
<div class="cap-a">Clear, specific answer.</div>
</div>
</div>
<div class="callout">
<h3>Why now</h3>
<p>The moment. <strong>Key insight in bold.</strong> Then context.</p>
</div>
<div class="dot-flow">
<div class="dot-step"><div class="dot"></div><h4>Step 1</h4><p>Caption</p></div>
<div class="dot-step"><div class="dot"></div><h4>Step 2</h4><p>Caption</p></div>
</div>
<div class="stack-grid">
<div class="stack-card">
<div class="stack-card-label">Category</div>
<div class="stack-tool"><span class="mark"></span>Tool name</div>
</div>
</div>
<div class="spec-flow">
<div class="spec-block"><h4>The Input</h4><p>What goes in</p></div>
<div class="ctx-row">
<span class="ctx-label">draws from</span>
<span class="ctx-pill">Source 1</span>
<span class="ctx-pill">Source 2</span>
</div>
<div class="ai-divider">
<div class="line"></div>
<span class="ai-pill">Process</span>
<div class="line"></div>
</div>
<div class="outputs-row">
<div class="output-card"><h5>Output A</h5><p>What it produces.</p></div>
<div class="output-card"><h5>Output B</h5><p>What it produces.</p></div>
<div class="output-card"><h5>Output C</h5><p>What it produces.</p></div>
</div>
</div>
<div class="product-row">
<div class="product-meta">
<div class="product-num">/01</div>
<div class="product-tag">A short, punchy hook.</div>
<h3 class="product-headline">One-line description.</h3>
<p class="product-desc">Two or three sentences. Personal and concrete.</p>
<div class="product-stat">Build time or metric</div>
</div>
<div class="product-name">Name<sup>™</sup></div>
</div>
<section class="slide collage-slide">
<div class="collage">
<img src="media/your-image.png" alt="">
</div>
</section>
<div class="jeduf">
<div class="jeduf-col">
<div class="jeduf-label">Too much</div>
<div class="jeduf-title">Extreme A</div>
<div class="jeduf-philosophy">"Philosophy quote."</div>
<div class="jeduf-step">Step 1</div>
</div>
<div class="jeduf-col hero">
<div class="jeduf-label">Just right</div>
<div class="jeduf-title">The middle path</div>
<div class="jeduf-philosophy">"Balanced philosophy."</div>
<div class="jeduf-step">Step 1</div>
</div>
<div class="jeduf-col">
<div class="jeduf-label">Too little</div>
<div class="jeduf-title">Extreme B</div>
<div class="jeduf-philosophy">"Other extreme."</div>
<div class="jeduf-step">Step 1</div>
</div>
</div>
<section class="slide dark">
<div class="slide-inner">
<div class="eyebrow">Section label</div>
<h1>The pivot moment. <span class="dim">Lands harder in dark.</span></h1>
<p class="subtitle">Use sparingly. Two or three per deck max.</p>
</div>
</section>
<div class="timeline">
<div class="timeline-row">
<div class="timeline-year">Year 1</div>
<div class="timeline-track"><div class="timeline-dot"></div><div class="timeline-line"></div></div>
<div class="timeline-content"><h4>Title</h4><p>Description.</p></div>
</div>
</div>
<div class="stat-grid">
<div class="stat-card">
<div class="stat-label">Metric</div>
<div class="stat-number">7×</div>
<div class="stat-desc">What this number means.</div>
</div>
<div class="stat-card stat-dark">
<div class="stat-label">Hero metric</div>
<div class="stat-number">42</div>
<div class="stat-desc">The key number, highlighted.</div>
</div>
</div>
<div class="quote-pair">
<div class="quote-card">
<div class="quote-text">"The first perspective."</div>
<div class="quote-attr">Speaker or label</div>
</div>
<div class="quote-card quote-dark">
<div class="quote-text">"The counterpoint."</div>
<div class="quote-attr">Speaker or label</div>
</div>
</div>
<div class="logo-grid">
<div class="logo-cell">
<div class="logo-mark"></div>
<div class="logo-name">Partner name</div>
<div class="logo-role">Role or team</div>
</div>
</div>
<div class="code-frame">
<div class="code-frame-header">
<div class="code-frame-dot"></div>
<div class="code-frame-dot"></div>
<div class="code-frame-dot"></div>
<div class="code-frame-title">filename.ext</div>
</div>
<pre><span class="code-comment">// comment</span>
<span class="code-keyword">function</span> <span class="code-string">example</span>() {}</pre>
</div>
<section class="slide">
<div class="slide-inner">
<h1 style="font-size: clamp(2.5rem, 5vw, 4rem);">Thanks.</h1>
<p class="subtitle">Questions?</p>
<div class="meta">Speaker name · Affiliation</div>
</div>
</section>
<div class="testimonial-grid">
<div class="testimonial-card">
<div class="testimonial-quote">"Quote text here."</div>
<div class="testimonial-author">
<div class="testimonial-avatar"></div>
<div>
<div class="testimonial-name">Name</div>
<div class="testimonial-title">Role, Company</div>
</div>
</div>
</div>
</div>
<div class="logo-bar">
<div class="logo-bar-item">Partner A</div>
<div class="logo-bar-item">Partner B</div>
</div>
<div class="feature-cards">
<div class="feature-card">
<div>
<div class="feature-card-title">Feature name</div>
<div class="feature-card-desc">Short description.</div>
</div>
<div class="feature-card-inner"></div>
</div>
</div>
<div class="update-row">
<div class="update-card">
<div class="update-header">
<span class="update-badge">3.3</span>
<span class="update-date">May 7, 2026</span>
</div>
<div class="update-title">Feature or fix description</div>
</div>
</div>
<div class="art-overlay">
<div class="art-overlay-bg"></div>
<div class="art-overlay-ui">
<div class="art-overlay-titlebar">
<div class="art-overlay-dot"></div>
<div class="art-overlay-dot"></div>
<div class="art-overlay-dot"></div>
</div>
<div class="art-overlay-content"></div>
</div>
<div class="art-overlay-caption">
<h3>Caption title</h3>
<p>Caption description.</p>
</div>
</div>
Four options are available. The first three are predefined templates. The fourth is a custom theme the user describes.
| Theme | Template (in this folder) | Character |
|---|---|---|
| Default | deck.html | Warm off-white, minimal, editorial |
| Craft | deck-craft.html | Richer textures, art overlays, more visual weight |
| Solid | deck-solid.html | Glass morphism, dark background, frosted surfaces |
| Custom | User description | User defines the visual identity |
CRITICAL: Do not invent your own theme CSS. When using a predefined theme:
deck.html, deck-craft.html, or deck-solid.html). They are in the same directory as this SKILL.md.<style> block verbatim. Every CSS variable, every component style, every media query. Do not modify it. Do not improvise colors, gradients, or effects.<script> block verbatim. Navigation, progress bar, PDF export. Do not rewrite it.<section class="slide"> elements with the new deck content. Keep the <head>, <style>, <script>, .progress, and .deck wrapper structure identical to the template.The template files are the source of truth. If you cannot read them, ask the user to provide the template file. Never generate CSS from memory or from the token table above.
When the user describes a custom style (e.g. "dark blue with orange accents", "brutalist black and white", "pastel and playful"):
deck.html as the structural base. Read it, copy its <script> block verbatim.<style> block to match the user's description. Follow these rules:
Default to the Default theme (deck.html) unless the user specifies otherwise.
You can invent new slide layouts when needed. Rules:
<span class="dim">.timeline-row, stat-grid, quote-pair.<style> block, grouped with a comment.Use the full component library. Do not default to the same five component types.
When the user attaches a photo or image:
<img> tag. This keeps the deck self-contained in a single HTML file.<img src="data:image/jpeg;base64,..." alt="description">div with the same dimensions) and tell the user: "I could not embed the photo. Drop the image file next to deck.html and update the src attribute."For images the user provides as URLs, use the URL directly in the src attribute.
<div class="slide-inner"> inside <section class="slide">.active: <section class="slide active">.