Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
yonatangross avatar

Presentation Builder

  • 16 installs
  • 213 repo stars
  • Updated August 4, 2026
  • yonatangross/skillforge-claude-plugin

Helps with ai & agent building tasks.

About

presentation-builder is a Claude Code skill for ai & agent building. It helps solo builders move faster with AI-assisted coding.

  • presentation-builder
  • AI & Agent Building
  • AI-coding skill

Presentation Builder by the numbers

  • 16 all-time installs (skills.sh)
  • Ranked #11,068 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
  • Data as of Aug 5, 2026 (Skillselion catalog sync)
npx skills add https://github.com/yonatangross/skillforge-claude-plugin --skill presentation-builder

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs16
repo stars213
Last updatedAugust 4, 2026
Repositoryyonatangross/skillforge-claude-plugin

What it does

Helps with ai & agent building tasks.

Files

SKILL.mdMarkdownGitHub ↗

Presentation Builder

Create zero-dependency, animation-rich HTML presentations that run entirely in the browser.

Based on zarazhangrui/frontend-slides, restructured for OrchestKit.

Core Philosophy

1. Zero Dependencies -- Single HTML files with inline CSS/JS. No npm, no build tools. 2. Show, Don't Tell -- Generate visual previews, not abstract choices. People discover preferences by seeing. 3. Distinctive Design -- Avoid generic "AI slop" aesthetics. Every presentation should feel custom-crafted. 4. Production Quality -- Well-commented, accessible, performant code. 5. Viewport Fitting -- Every slide MUST fit exactly within the viewport. No scrolling within slides, ever.

Phase 0: Detect Mode

Determine what the user wants:

ModeTriggerNext Phase
A: New PresentationCreate slides from scratchPhase 1
B: PPT ConversionHas a .ppt/.pptx fileLoad Read("${CLAUDE_SKILL_DIR}/references/pptx-conversion.md") then Phase 2
C: EnhancementHas existing HTML presentationRead file, understand structure, enhance

---

Phase 1: Content Discovery

Before designing, understand the content. Use AskUserQuestion:

Question 1: Purpose

  • Header: "Purpose"
  • Options: "Pitch deck", "Teaching/Tutorial", "Conference talk", "Internal presentation"

Question 2: Slide Count

  • Header: "Length"
  • Options: "Short (5-10)", "Medium (10-20)", "Long (20+)"

Question 3: Content Readiness

  • Header: "Content"
  • Options: "I have all content ready", "I have rough notes", "I have a topic only"

If user has content, ask them to share it. If topic only, help structure an outline.

---

Phase 2: Style Discovery

This is the "show, don't tell" phase.

Step 2.0: Style Path Selection

Ask how the user wants to choose their style:

  • "Show me options" -- Generate 3 previews based on mood (recommended)
  • "I know what I want" -- Pick from preset list directly

Available Presets (load Read("${CLAUDE_SKILL_DIR}/references/style-presets.md") for full details):

PresetVibeBest For
Bold SignalConfident, high-impactPitch decks, keynotes
Electric StudioClean, professionalAgency presentations
Creative VoltageEnergetic, retro-modernCreative pitches
Dark BotanicalElegant, sophisticatedPremium brands
Notebook TabsEditorial, organizedReports, reviews
Pastel GeometryFriendly, approachableProduct overviews
Split PastelPlayful, modernCreative agencies
Vintage EditorialWitty, personality-drivenPersonal brands
Neon CyberFuturistic, techyTech startups
Terminal GreenDeveloper-focusedDev tools, APIs
Swiss ModernMinimal, preciseCorporate, data
Paper & InkLiterary, thoughtfulStorytelling

Step 2.1: Mood Selection (Guided Discovery)

If "Show me options", ask via AskUserQuestion:

Question: Vibe

  • "What feeling should the audience have?"
  • Options (multiSelect: true, pick up to 2):
  • "Impressed/Confident" -- Professional, trustworthy
  • "Excited/Energized" -- Innovative, bold
  • "Calm/Focused" -- Clear, easy to follow
  • "Inspired/Moved" -- Emotional, memorable

Mood-to-Style Mapping:

MoodSuggested Styles
Impressed/ConfidentBold Signal, Electric Studio, Dark Botanical
Excited/EnergizedCreative Voltage, Neon Cyber, Split Pastel
Calm/FocusedNotebook Tabs, Paper & Ink, Swiss Modern
Inspired/MovedDark Botanical, Vintage Editorial, Pastel Geometry

Step 2.2: Generate Style Previews

Generate 3 distinct mini HTML files in .claude-design/slide-previews/:

.claude-design/slide-previews/
├── style-a.html   # ~50-100 lines, single title slide
├── style-b.html
└── style-c.html

Each preview: self-contained, inline CSS/JS, animated title slide showing typography, colors, and motion style.

Step 2.3: Present Previews

Show user the 3 options and ask via AskUserQuestion:

  • "Which style preview do you prefer?"
  • Options: Style A, Style B, Style C, "Mix elements"

---

Phase 3: Generate Presentation

Generate the full presentation based on content (Phase 1) and style (Phase 2).

File Output

presentation.html    # Self-contained presentation
assets/              # Images if any (PPT conversion)

HTML Architecture

Every presentation follows this structure:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Presentation Title</title>
    <!-- Fonts from Fontshare or Google Fonts -->
    <style>
        /* Theme variables in :root */
        /* Base styles + viewport fitting (see rules/viewport-fitting.md) */
        /* Slide container styles */
        /* Animations */
        /* Responsive breakpoints */
    </style>
</head>
<body>
    <div class="progress-bar"></div>
    <nav class="nav-dots"><!-- JS generated --></nav>
    <section class="slide title-slide">...</section>
    <section class="slide">...</section>
    <!-- More slides -->
    <script>
        /* SlidePresentation class with navigation */
    </script>
</body>
</html>

Critical: Viewport Fitting

Every slide MUST fit exactly in the viewport. Load: Read("${CLAUDE_SKILL_DIR}/rules/viewport-fitting.md")

Quick checklist:

  • Every .slide has height: 100vh; height: 100dvh; overflow: hidden;
  • All font sizes use clamp(min, preferred, max)
  • All spacing uses clamp() or viewport units
  • Content respects density limits (load ${CLAUDE_SKILL_DIR}/rules/content-density.md)
  • Breakpoints exist for heights: 700px, 600px, 500px
  • When content doesn't fit: split into multiple slides, never scroll

Also see responsive-patterns skill for advanced clamp()/container query patterns.

Required JavaScript Features

1. SlidePresentation Class -- Keyboard (arrows, space), touch/swipe, mouse wheel, progress bar, nav dots 2. Intersection Observer -- Add .visible class on scroll for CSS animations 3. Optional enhancements (style-dependent): Custom cursor, particle backgrounds, parallax, 3D tilt, magnetic buttons

Code Quality

  • Every CSS/JS section has clear comments explaining what, why, and how to modify
  • Semantic HTML (<section>, <nav>, <main>)
  • Keyboard navigation works
  • ARIA labels where needed
  • Reduced motion support: @media (prefers-reduced-motion: reduce)

Anti-Patterns (DO NOT USE)

  • Fonts: Inter, Roboto, Arial, system fonts as display
  • Colors: #6366f1 (generic indigo), purple gradients on white
  • Layouts: Everything centered, generic hero sections, identical card grids
  • Decorations: Realistic illustrations, gratuitous glassmorphism

---

Phase 4: Delivery

1. Clean up .claude-design/slide-previews/ if it exists 2. Open the presentation: open [filename].html 3. Provide summary:

Your presentation is ready!

File: [filename].html
Style: [Style Name]
Slides: [count]

Navigation:
- Arrow keys or Space to navigate
- Scroll/swipe also works
- Click dots on the right to jump

To customize:
- Colors: :root CSS variables at top
- Fonts: Change the font link
- Animations: Modify .reveal class timings

---

Style Reference: Effect-to-Feeling Mapping

FeelingAnimation StyleVisual Approach
Dramatic/CinematicSlow fade-ins (1-1.5s), large scale transitionsDark BG, spotlight effects, parallax
Techy/FuturisticNeon glow, glitch/scramble textParticle systems, grid patterns, monospace accents
Playful/FriendlyBouncy easing, floating animationsPastel/bright colors, rounded corners
Professional/CorporateSubtle fast animations (200-300ms)Clean sans-serif, navy/slate, data viz focus
Calm/MinimalVery slow subtle motionHigh whitespace, muted palette, serif typography
Editorial/MagazineStrong typography hierarchyPull quotes, grid-breaking layouts, B&W + accent

---

Troubleshooting

IssueSolution
Fonts not loadingCheck Fontshare/Google Fonts URL, verify font names match CSS
Animations not triggeringVerify Intersection Observer is running, check .visible class
Scroll snap not workingEnsure scroll-snap-type on html, scroll-snap-align on slides
Mobile issuesDisable heavy effects at 768px, test touch events, reduce particles
PerformanceUse will-change sparingly, prefer transform/opacity animations

---

Related Skills

  • ork:responsive-patterns -- Advanced clamp(), container queries, responsive breakpoints
  • ork:accessibility -- WCAG 2.2 compliance, keyboard navigation, ARIA patterns
  • ork:ui-components -- shadcn/ui and Radix component patterns
  • ork:demo-producer -- Terminal recording and video demos

Rules

Load on demand with Read("${CLAUDE_SKILL_DIR}/rules/<file>"):

FileContent
viewport-fitting.mdMandatory CSS for viewport-locked slides
content-density.mdMaximum content per slide type

References

Load on demand with Read("${CLAUDE_SKILL_DIR}/references/<file>"):

FileContent
style-presets.md12 curated visual themes with CSS variables
pptx-conversion.mdPowerPoint extraction and conversion workflow

Related skills

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.