Creates Slidev presentations with markdown slides, Vue components, modular imports, layouts, themes, animations, code highlighting, and best practices for developers.
From slidevnpx claudepluginhub rhuss/cc-slidev --plugin slidevThis skill uses the workspace's default tool permissions.
Searches, retrieves, and installs Agent Skills from prompts.chat registry using MCP tools like search_skills and get_skill. Activates for finding skills, browsing catalogs, or extending Claude.
Searches prompts.chat for AI prompt templates by keyword or category, retrieves by ID with variable handling, and improves prompts via AI. Use for discovering or enhancing prompts.
Guides idea refinement into designs: explores context, asks questions one-by-one, proposes approaches, presents sections for approval, writes/review specs before coding.
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