Claude
Skills
Sign in
Back

revealjs-presenter

Included with Lifetime
$97 forever

Generate RevealJS HTML presentations with reliable layout, professional typography, and effective visual communication. Use when creating slide decks, pitch presentations, technical talks, or any reveal.js output.

Web Dev

What this skill does


# RevealJS Presenter Skill

## When to Use This Skill

Use this skill when:
- Creating a RevealJS presentation from content/outline
- Converting document content into slide format
- Building a pitch deck, technical talk, or educational presentation
- User requests "slides," "presentation," "deck," or mentions RevealJS

This skill produces a single self-contained HTML file with embedded CSS and CDN references.

---

## Part 1: RevealJS Foundation

### 1.1 Required Configuration

Always initialize RevealJS with these settings:

```javascript
Reveal.initialize({
  hash: true,
  center: true,
  transition: 'fade',
  transitionSpeed: 'fast',
  backgroundTransition: 'fade',
  width: 1920,
  height: 1080,
  margin: 0.08,
  minScale: 0.2,
  maxScale: 2.0
});
```

**Why these values:**
- `center: true` — Let RevealJS handle vertical centering. Do not fight this with flexbox on sections.
- `width: 1920, height: 1080` — Standard HD ratio. Content scales automatically.
- `margin: 0.08` — Provides breathing room at viewport edges.
- `transition: 'fade'` — Professional, non-distracting. Avoid 'zoom', 'convex', etc.

### 1.2 Base HTML Structure

```html
<!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>
  
  <!-- RevealJS -->
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/reveal.js/4.6.1/reveal.min.css">
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/reveal.js/4.6.1/theme/white.min.css">
  
  <!-- Fonts -->
  <link rel="preconnect" href="https://fonts.googleapis.com">
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
  <link href="https://fonts.googleapis.com/css2?family=Inter:wght@100;200;300;400;500;600;700;800;900&family=Space+Grotesk:wght@300;400;500;600;700&family=JetBrains+Mono:wght@100;200;300;400;500;600;700;800&display=swap" rel="stylesheet">
  
  <style>
    /* Theme variables and styles go here */
  </style>
</head>
<body>
  <div class="reveal">
    <div class="slides">
      <!-- Slides go here -->
    </div>
  </div>
  
  <script src="https://cdnjs.cloudflare.com/ajax/libs/reveal.js/4.6.1/reveal.min.js"></script>
  <script>
    Reveal.initialize({
      hash: true,
      center: true,
      transition: 'fade',
      transitionSpeed: 'fast',
      backgroundTransition: 'fade',
      width: 1920,
      height: 1080,
      margin: 0.08,
      minScale: 0.2,
      maxScale: 2.0
    });
  </script>
</body>
</html>
```

### 1.3 Base CSS Reset

Apply these styles to normalize RevealJS behavior:

```css
/* === RESET & NORMALIZATION === */
.reveal {
  font-family: var(--font-body);
  font-weight: 400;
  color: var(--text-primary);
}

.reveal .slides section {
  text-align: left;
  padding: 60px;
  box-sizing: border-box;
}

.reveal .slides section.centered {
  text-align: center;
}

.reveal h1, .reveal h2, .reveal h3, .reveal h4 {
  font-family: var(--font-display);
  font-weight: 700;
  color: var(--text-primary);
  text-transform: none;
  letter-spacing: -0.02em;
  line-height: 1.1;
  margin: 0 0 0.5em 0;
}

.reveal p {
  margin: 0 0 1em 0;
  line-height: 1.5;
}

.reveal ul, .reveal ol {
  margin: 0;
  padding: 0;
  list-style-position: outside;
  margin-left: 1.5em;
}

.reveal li {
  margin-bottom: 0.5em;
  line-height: 1.4;
}
```

---

## Part 2: Theme Selection

**Themes are complete specifications.** Before generating any slides, read the appropriate theme file from the `themes/` directory. Themes control both visual styling AND content strategy.

### 2.1 What Themes Control

Each theme file specifies:

1. **CSS Variables** — Colors, typography sizes, spacing, fonts
2. **Typography Application** — How CSS variables apply to elements
3. **Word Limits** — Maximum words per slide type
4. **Slide Type Preferences** — Which types to prefer, use sparingly, or avoid
5. **Content Rhythm** — Impact vs information slide ratios
6. **Structure Rules** — Max bullets, card counts, splitting guidance

### 2.2 Default Theme

Use `themes/bold.md` unless the user specifies otherwise.

### 2.3 How to Apply a Theme

1. Read the entire theme file before generating slides
2. Follow the theme's **Content Strategy** section for word limits and slide type choices
3. Include all CSS from the theme's variables and typography sections
4. Combine with the base CSS reset from Part 1.3

### 2.4 Available Themes

| Theme | File | Content Approach |
|-------|------|------------------|
| Bold | `themes/bold.md` | Minimal words, dramatic impact, simple structures, 40%+ impact slides |
| Corporate | `themes/corporate.md` | Information-dense, detailed content, complex structures allowed |

Future themes may include `minimal.md` (clean, understated design).

---

## Part 3: Core Components

### 3.1 The Bar (Accent Element)

A horizontal bar used as a visual anchor and section indicator.

```css
.bar {
  width: var(--bar-width);
  height: var(--bar-height);
  background: var(--accent-1);
  margin-bottom: var(--space-md);
}

.bar-accent-2 { background: var(--accent-2); }
.bar-accent-3 { background: var(--accent-3); }
.bar-accent-4 { background: var(--accent-4); }

.centered .bar {
  margin-left: auto;
  margin-right: auto;
}
```

**Usage:**
```html
<div class="bar"></div>
<h2>Section Title</h2>
```

### 3.2 Content Container

For slides that need width constraint:

```css
.content-wrap {
  max-width: var(--content-max-width);
  width: 100%;
}

.centered .content-wrap {
  margin: 0 auto;
}
```

### 3.3 Card Component

```css
.card {
  background: var(--bg-secondary);
  border-radius: var(--card-radius);
  padding: var(--card-padding);
  border-left: 4px solid var(--accent-1);
}

.card-accent-2 { border-left-color: var(--accent-2); }
.card-accent-3 { border-left-color: var(--accent-3); }
.card-accent-4 { border-left-color: var(--accent-4); }

.card h3 {
  font-size: var(--size-h4);
  margin-bottom: var(--space-xs);
}

.card p {
  font-size: var(--size-body);
  color: var(--text-secondary);
  margin: 0;
}
```

### 3.4 Grid Layouts

```css
.grid-2 {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--space-lg);
}

.grid-3 {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--space-md);
}

.grid-4 {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: var(--space-md);
}

/* For uneven splits */
.grid-2-1 {
  display: grid;
  grid-template-columns: 2fr 1fr;
  gap: var(--space-lg);
}

.grid-1-2 {
  display: grid;
  grid-template-columns: 1fr 2fr;
  gap: var(--space-lg);
}
```

### 3.5 Slide Footer

A persistent footer element for branding or context. Placed outside the slides container.

```css
.slide-footer {
  position: fixed;
  bottom: 30px;
  left: var(--slide-padding);
  font-size: var(--size-label);
  font-weight: 500;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: var(--text-muted);
  z-index: 1000;
}

/* Adapt for dark backgrounds */
section[data-background-color] .slide-footer,
.dark-slide .slide-footer {
  color: rgba(255, 255, 255, 0.4);
}
```

**HTML placement** (before the reveal div):
```html
<body>
  <div class="slide-footer">Company Name | Presentation Title</div>
  <div class="reveal">
    ...
  </div>
</body>
```

**When to use:** Corporate presentations, conference talks, any context where persistent branding helps.
**Mistakes:** Too much information, large font size, distracting from content.

---

## Part 4: Slide Types

Each slide type includes: HTML structure, when to use, and common mistakes.

### 4.1 Title Slide

The opening slide. Sets tone and context.

```html
<section class="centered">
  <p class="label">Category or Context</p>
  <h1>Presentation Title</h1>
  <div class="bar"></div>
  <p class="lead">Subtitle or tagline goes here</p>
</section>
```

**When to use:** Opening slide only.  
**Mistakes:** Too much text, including agenda, adding logos/footer clutter.

### 4.2 Section Break

Transitions between major sect

Related in Web Dev