From slidev
Creates Slidev presentations with markdown slides, Vue components, modular imports, layouts, themes, animations, code highlighting, and best practices for developers.
How this skill is triggered — by the user, by Claude, or both
Slash command
/slidev:slidev-masteryThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
Slidev is a presentation framework for developers that uses markdown with Vue components. Create beautiful, interactive slides using familiar syntax with powerful features like live coding, diagrams, and animations.
Slidev is a presentation framework for developers that uses markdown with Vue components. Create beautiful, interactive slides using familiar syntax with powerful features like live coding, diagrams, and animations.
Evidence-based design: This skill incorporates research-based best practices for accessible, effective presentations. See references/presentation-best-practices.md for full guidelines.
Separate slides with --- on its own line:
# First Slide
Content here
---
# Second Slide
More content
You can split your presentation into multiple markdown files using the src frontmatter option. This allows for better organization and reusability:
# Normal slide
---
src: ./slides/introduction.md
---
---
# Another normal slide
---
src: ./slides/conclusion.md
---
Benefits of modular slide structure:
microservices-benefits.md) instead of numberssrc includes in master file without renaming filesExample structure:
presentation/
├── slides.md # Master file with includes
├── slides/
│ ├── 01-title.md # Slide 1: Title
│ ├── 02-hook.md # Slide 2: Opening hook
│ ├── 03-problem-statement.md # Slide 3: Problem introduction
│ ├── 04-architecture-overview.md # Slide 4: Architecture slide
│ ├── 18-conclusion.md # Conclusion
│ └── 19-questions.md # Q&A
└── public/images/
File naming: Individual slides use numeric prefix (01-, 02-, etc.) plus descriptive name for easy ordering in directory listings while maintaining meaningful names.
Master file example with slide number comments:
---
theme: default
title: My Presentation
---
---
src: ./slides/01-title.md
---
<!-- Slide 1: Title -->
---
src: ./slides/02-hook.md
---
<!-- Slide 2: Opening Hook -->
---
src: ./slides/03-problem-statement.md
---
<!-- Slide 3: Problem Statement -->
Note: Comments must come AFTER the closing --- (not inside frontmatter block) per Slidev specs.
Frontmatter merging: You can override frontmatter from external files:
---
src: ./slides/content.md
layout: two-cols # Overrides layout in content.md
---
Configure presentation globally in frontmatter at the top of slides.md:
---
theme: default
background: https://source.unsplash.com/collection/94734566/1920x1080
class: text-center
highlighter: shiki
lineNumbers: false
drawings:
persist: false
transition: slide-left
title: Welcome to Slidev
---
Key frontmatter fields:
theme: Visual theme (default, seriph, apple-basic, etc.)background: Global background image or colorhighlighter: Code highlighting engine (shiki or prism)lineNumbers: Show line numbers in code blockstransition: Slide transition effecttitle: Presentation title for metadataConfigure individual slides with frontmatter after ---:
---
layout: center
background: './images/background.jpg'
class: 'text-white'
---
# Centered Slide
With custom background
Slidev provides built-in layouts for different slide types:
default - Standard layout with title and content:
# Title
Content here
center - Centered content:
---
layout: center
---
# Centered Title
cover - Cover slide for presentation start:
---
layout: cover
background: './bg.jpg'
---
# Presentation Title
Subtitle or author
intro - Introduction slide:
---
layout: intro
---
# Topic
Brief description
image-right - Content on left, image on right:
---
layout: image-right
image: './diagram.png'
---
# Content
Text goes here
image-left - Image on left, content on right:
---
layout: image-left
image: './photo.jpg'
---
# Content
Text goes here
two-cols - Two column layout:
---
layout: two-cols
---
# Left Column
Content for left
::right::
# Right Column
Content for right
quote - Large quote display:
---
layout: quote
---
# "Innovation distinguishes between a leader and a follower."
Steve Jobs
fact - Emphasize key fact or statistic:
---
layout: fact
---
# 95%
User satisfaction rate
\```python
def hello():
print("Hello, World!")
\```
Highlight specific lines with {line-numbers}:
\```python {2-3}
def process():
important_line()
another_important()
return result
\```
Enable line numbers for a code block:
\```python {1|2|3} {lines:true}
first_line()
second_line()
third_line()
\```
Enable live code editing with Monaco:
\```python {monaco}
def editable():
return "Users can edit this code"
\```
Reveal content incrementally with v-click:
- First point
- <v-click>Second point (appears on click)</v-click>
- <v-click>Third point (appears on next click)</v-click>
Show content after specific click:
<div v-after="2">
Appears after 2 clicks
</div>
Use click counters for complex animations:
<div v-click="1">First</div>
<div v-click="2">Second</div>
<div v-click="3">Third</div>
Embed mermaid diagrams directly:
\```mermaid
graph LR
A[Start] --> B[Process]
B --> C[End]
\```
Supported diagram types:
graph LR, graph TDsequenceDiagramclassDiagramstateDiagram-v2erDiagramganttApply custom colors to mermaid diagrams:
\```mermaid
%%{init: {'theme':'base', 'themeVariables': { 'primaryColor':'#3b82f6'}}}%%
graph TD
A[Blue themed]
\```

With custom size:
<img src="./image.jpg" class="w-50 mx-auto" />
Per-slide background:
---
background: './images/slide-bg.jpg'
---
Add notes visible only in presenter mode:
# Slide Title
Content visible to audience
<!--
These are presenter notes
Only visible in presenter mode
Press 'p' to toggle presenter view
-->
Arrows:
<Arrow x1="100" y1="100" x2="200" y2="200" />
YouTube:
<Youtube id="video-id" width="500" height="300" />
Tweet:
<Tweet id="tweet-id" />
Create reusable Vue components in components/ directory:
<!-- components/CustomButton.vue -->
<template>
<button class="custom-btn">
<slot />
</button>
</template>
<style scoped>
.custom-btn {
background: #3b82f6;
color: white;
padding: 1rem 2rem;
border-radius: 0.5rem;
}
</style>
Use in slides:
<CustomButton>Click me</CustomButton>
Set in frontmatter:
---
theme: seriph
---
Popular themes:
default - Clean, minimalseriph - Elegant serif fontsapple-basic - Apple keynote styleshibainu - Playful, colorfulbricks - Modern, structuredAdd custom CSS in frontmatter or separate style.css:
---
---
<style>
h1 {
color: #3b82f6;
}
.custom-class {
background: linear-gradient(45deg, #3b82f6, #8b5cf6);
}
</style>
slidev export slides.md --output presentation.pdf
slidev export slides.md --format pptx
slidev export slides.md --format png --output slides/
slidev slides.md
Opens at http://localhost:3030 with hot reload.
slidev build slides.md
Generates static HTML in dist/ directory.
Press p during presentation to enter presenter mode with notes and preview.
One idea per slide (Critical):
Meaningful titles (Critical):
Minimal text (Critical):
Visual over text:
Cognitive load management:
v-clickProgressive disclosure - Use v-click for complex ideas:
- Key point 1
- <v-click>Key point 2 (reveals on click)</v-click>
- <v-click>Key point 3 (reveals next)</v-click>
Prevents audience from reading ahead while you explain
presentation/
├── slides.md # Main presentation
├── public/ # Static assets
│ └── images/
├── components/ # Custom Vue components
└── styles/ # Custom CSS
Font requirements (from research):
Configure in frontmatter or custom CSS:
---
theme: default
---
<style>
/* Accessibility-focused defaults */
h1 { font-size: 3rem; } /* ~48pt */
h2 { font-size: 2rem; } /* ~32pt */
h3 { font-size: 1.5rem; } /* ~24pt */
p, li { font-size: 1.25rem; } /* ~20pt */
body {
font-family: 'Helvetica Neue', Arial, sans-serif;
}
</style>
Color requirements:
Test contrast:
# Online tools
# - WebAIM Contrast Checker
# - Colorblind Web Page Filter
Layout requirements:
Keyboard navigation:
Recommended accessible theme:
---
theme: default # Good contrast, clean design
# OR create custom theme with accessibility defaults
---
---
layout: cover
background: './background.jpg'
---
# Presentation Title
## Subtitle
Author Name · Date
# Agenda
- <v-click>Introduction</v-click>
- <v-click>Main Topics</v-click>
- <v-click>Conclusion</v-click>
- <v-click>Q&A</v-click>
---
layout: two-cols
---
# Before
\```python
old_code()
\```
::right::
# After
\```python
improved_code()
\```
---
layout: image-right
---
# Architecture
\```mermaid
graph TD
A[Client]
B[Server]
A --> B
\```
::right::
Key points:
- Client initiates
- Server responds
- Simple flow
--- separators)shiki or prism)npx playwright installnpm install slidev-theme-nameFor more advanced features and detailed API documentation, consult Slidev official documentation at https://sli.dev
npx claudepluginhub rhuss/cc-slidev --plugin slidevGuides Slidev slide syntax and structure: separators, frontmatter, layouts, MDC components, presenter notes, click animations, transitions.
Guides Slidev slide syntax and structure: separators, frontmatter, layouts, MDC syntax, presenter notes, click animations, and transitions.
Scaffolds Slidev presentation decks with slides.md, package.json, Makefile, and public/ folder. Generates concise markdown slides from project docs or prompts.