Slides
Converts content from the conversation into a Reveal.js HTML slide deck, writes it to /tmp/slides.html, and opens it live in the browser.
Workflow
- Extract content structure — identify the title, sections, and key points from the conversation or user-supplied content. See TEMPLATE.md for content chunking rules.
- Plan slide types and count — assign each section a slide type: title, bullet, two-column, quote, or code. Max 6 bullets per slide; split if more. See TEMPLATE.md for slide type patterns.
- Write /tmp/slides.html — use the complete Reveal.js template with all CDN links in correct order. See TEMPLATE.md for the full template.
- Render in browser — follow
_shared/chrome-devtools-render.md to open /tmp/slides.html, wait for render, and screenshot. wait_for the title slide's main heading text. See TROUBLESHOOTING.md if slide rendering looks wrong.
- Tell user how to navigate — reply: "arrow keys to navigate, F for fullscreen".
Self-review checklist
Before delivering, verify ALL:
Golden rules
Hard rules. Never violate these.
- Never allow headings to render uppercase. Always include
.reveal h1, .reveal h2 { text-transform: none; } in custom CSS. Reveal.js default forces uppercase and it looks bad.
- Never put more than 6 bullet points on one slide. Split into two consecutive slides with a shared heading if needed (e.g. "Key Points (1/2)" and "Key Points (2/2)").
- Always load theme CSS after reveal.css. The order is: reveal.css, then theme/black.css. Reversed order silently breaks all theming.
- Always use hash: true in Reveal.initialize. This enables deep-linking to slides by index.
- Always call wait_for before take_screenshot. Wait on the title text. Screenshotting before Reveal renders produces a blank white image.
- Always use new_page for first open. Use mcp__chrome-devtools__new_page with url: file:///tmp/slides.html. Never navigate an existing page to a file:// URL.
Reference files
| File |
Contents |
| TEMPLATE.md |
Complete Reveal.js HTML template, all slide type patterns, content chunking rules |
| TROUBLESHOOTING.md |
Failure diagnosis table: symptoms, causes, fixes |
1---2name: slides3description: Turns bullet points, research, or structured content into a browser-based Reveal.js slide deck. Use when the user asks to create slides, a presentation, a deck, a slideshow, or says "present this", "turn this into slides", "make a deck", or mentions keynote, powerpoint, or reveal.4---56# Slides78Converts content from the conversation into a Reveal.js HTML slide deck, writes it to /tmp/slides.html, and opens it live in the browser.910## Workflow11121. **Extract content structure** — identify the title, sections, and key points from the conversation or user-supplied content. See [TEMPLATE.md](TEMPLATE.md) for content chunking rules.132. **Plan slide types and count** — assign each section a slide type: title, bullet, two-column, quote, or code. Max 6 bullets per slide; split if more. See [TEMPLATE.md](TEMPLATE.md) for slide type patterns.143. **Write /tmp/slides.html** — use the complete Reveal.js template with all CDN links in correct order. See [TEMPLATE.md](TEMPLATE.md) for the full template.154. **Render in browser** — follow [`_shared/chrome-devtools-render.md`](../_shared/chrome-devtools-render.md) to open `/tmp/slides.html`, wait for render, and screenshot. `wait_for` the title slide's main heading text. See [TROUBLESHOOTING.md](TROUBLESHOOTING.md) if slide rendering looks wrong.165. **Tell user how to navigate** — reply: "arrow keys to navigate, F for fullscreen".1718## Self-review checklist1920Before delivering, verify ALL:2122- [ ] Screenshot shows a styled dark slide — not plain unstyled HTML text on a white background23- [ ] Heading text is mixed-case, not ALL CAPS (custom CSS override applied)24- [ ] No slide has more than 6 bullet points25- [ ] CDN links appear in correct order: reveal.css, then black.css theme, then reveal.js26- [ ] Reveal.initialize() is called with hash: true, transition: 'slide', backgroundTransition: 'fade'27- [ ] wait_for was called before take_screenshot28- [ ] User was told: arrow keys to navigate, F for fullscreen2930## Golden rules3132Hard rules. Never violate these.33341. **Never allow headings to render uppercase.** Always include `.reveal h1, .reveal h2 { text-transform: none; }` in custom CSS. Reveal.js default forces uppercase and it looks bad.352. **Never put more than 6 bullet points on one slide.** Split into two consecutive slides with a shared heading if needed (e.g. "Key Points (1/2)" and "Key Points (2/2)").363. **Always load theme CSS after reveal.css.** The order is: reveal.css, then theme/black.css. Reversed order silently breaks all theming.374. **Always use hash: true in Reveal.initialize.** This enables deep-linking to slides by index.385. **Always call wait_for before take_screenshot.** Wait on the title text. Screenshotting before Reveal renders produces a blank white image.396. **Always use new_page for first open.** Use mcp__chrome-devtools__new_page with url: file:///tmp/slides.html. Never navigate an existing page to a file:// URL.4041## Reference files4243| File | Contents |44|------|----------|45| [TEMPLATE.md](TEMPLATE.md) | Complete Reveal.js HTML template, all slide type patterns, content chunking rules |46| [TROUBLESHOOTING.md](TROUBLESHOOTING.md) | Failure diagnosis table: symptoms, causes, fixes |47