Skip to content
Back to skills

Presentation Builder

ASecurity

Animated slide deck builder with React, Tailwind, HLS video backgrounds, and liquid glass aesthetics

  • 16 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added May 26, 2026
developmenttypescriptgobashreact

Security analysis

A100/100

Scanned May 27, 2026

npx -y skills add Roberdan/convergio-community --skill presentation-builder --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Presentation Builder?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Presentation Builder
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/roberdan-presentation-builder/badge)](https://www.skillsdirectory.com/skills/roberdan-presentation-builder)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: presentation-builder
description: "Animated slide deck builder with React, Tailwind, HLS video backgrounds, and liquid glass aesthetics"
allowed-tools:
  - Read
  - Glob
  - Grep
  - WebSearch
  - Write
  - Edit
  - Bash
context: fork
user-invocable: true
version: "1.0.0"
---

# Presentation Builder Skill

> Build full-screen animated slide deck web apps optimized for live presentation.

## Inputs

| Parameter         | Required | Description                     |
| ----------------- | -------- | ------------------------------- |
| Slide count       | Yes      | Number of slides                |
| Theme             | Yes      | dark / light / custom           |
| Content per slide | Yes      | Title, body, media, layout type |
| Video backgrounds | Optional | HLS stream URLs per slide       |
| Brand assets      | Optional | Logo SVG, fonts, colors         |

## Tech Stack

| Package           | Purpose                                  |
| ----------------- | ---------------------------------------- |
| React             | Component framework                      |
| Tailwind CSS      | Utility-first styling                    |
| hls.js            | HLS video background streaming           |
| lucide-react      | Icon library                             |
| Plus Jakarta Sans | Default presentation font (Google Fonts) |

## Design System

### Global Rules

- **Font**: Plus Jakarta Sans (400, 500, 700) via Google Fonts import
- **Theme**: Dark/black throughout, all text white
- **Font sizes**: Responsive `clamp()` values (e.g., `clamp(12px, 1.05vw, 20px)`)
- **Spacing**: Percentage-based (e.g., `px-[5.2%]`, `pt-[4%]`) for full responsiveness
- **No shadows**: Use liquid glass aesthetic instead

### Liquid Glass Aesthetic

```css
backdrop-filter: blur(24px) saturate(1.4);
background: linear-gradient(
  135deg,
  rgba(255, 255, 255, 0.08),
  rgba(255, 255, 255, 0.03)
);
border: 1px solid rgba(255, 255, 255, 0.12);
/* Subtle radial specular highlight at top-left */
```

## Component Architecture

### Presentation.tsx (Framework)

**Props**: Array of slide React elements, renders full-screen.

**Keyboard Navigation**:

| Key                            | Action            |
| ------------------------------ | ----------------- |
| ArrowRight / ArrowDown / Space | Next slide        |
| ArrowLeft / ArrowUp            | Previous slide    |
| F                              | Toggle fullscreen |
| Escape                         | Exit fullscreen   |

**Transitions**: 500ms ease-in-out opacity fade + subtle scale (0.95 past, 1.05 future, 1 current).

**Auto-hiding Controls** (appear on mouse move, hide after 3s inactivity, 300ms fade):

| Position      | Element                                                                       |
| ------------- | ----------------------------------------------------------------------------- |
| Bottom-left   | Slide counter ("1 / 5", white/50, 13px, tabular-nums)                         |
| Bottom-center | Progress dots (6px circles, active = 24px pill white/90, inactive = white/30) |
| Bottom-right  | Prev/next chevrons + divider + fullscreen toggle (white/50, hover white/90)   |
| Top-right     | Keyboard hints ("Arrow Navigate, F Fullscreen", 11px, white/40)               |

### Video Background Pattern (per slide)

Identical implementation across all video slides:

```typescript
// HLS.js: if supported, create instance, load source, attach, auto-play on MANIFEST_PARSED
// Safari fallback: native HLS on <video src={url}>
// <video>: absolute inset-0 w-full h-full object-cover, autoPlay loop muted playsInline
// No overlay, no dimming, 100% opacity
// Content sits on top via relative z-10
```

## Slide Types

### Cover Slide

- Video background (HLS)
- Header: logo left, label right
- Center: title (clamp 32px-96px), subtitle (clamp 20px-48px), author (clamp 14px-24px)
- Footer: year centered

### Content Slide (Multi-Column)

- Video background (HLS)
- Header: logo, title, page number
- Title section
- 2-3 column layout with stats, paragraphs, mini charts (SVG)

### Card Grid Slide

- Video background (HLS)
- Header + centered title
- Card grid: top row (3 cards) + bottom row (2 cards)
- Liquid glass cards with icon, title, description
- Icons from lucide-react (white stroke)

### Quote Slide

- Video background (HLS)
- Centered: attribution + quote (smart quotes)
- Max-width 70%

### Contact/Outro Slide

- Video background (HLS)
- Title + description paragraph
- Contact items: icon + text, stacked vertically
- Social icons: custom SVG paths for Instagram/Facebook

## Workflow

1. **Gather content**: slides, media, brand assets
2. **Scaffold**: Presentation.tsx + individual slide components
3. **Implement video**: HLS.js pattern per slide
4. **Style**: Liquid glass cards, clamp() typography, percentage spacing
5. **Navigation**: Keyboard handlers, progress dots, auto-hide controls
6. **Wire**: App.tsx imports all slides into Presentation component

## Output

| Deliverable      | Description                                        |
| ---------------- | -------------------------------------------------- |
| Presentation.tsx | Framework with navigation, transitions, controls   |
| [Name]Slide.tsx  | One component per slide                            |
| App.tsx          | Wires slides into Presentation                     |
| index.css        | Global styles, font import, liquid glass utilities |

## Quality Checklist

- [ ] All font sizes use `clamp()`
- [ ] All spacing uses percentage values
- [ ] No shadows (liquid glass only)
- [ ] HLS.js with Safari fallback on all video slides
- [ ] Keyboard navigation working (arrows, F, Escape)
- [ ] Controls auto-hide after 3s
- [ ] Transitions smooth (500ms ease-in-out)
- [ ] Responsive at all viewport sizes
- [ ] Content readable over video backgrounds

## Related

`/brand-identity` (brand strategy + presentation design) | `/ui-design` (component specs) | `/design-systems` (design tokens)

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…