en un clic
slidev-syntax-guide
// Master Slidev's extended Markdown syntax. Use this skill to write slides with advanced formatting, frontmatter, and special features.
// Master Slidev's extended Markdown syntax. Use this skill to write slides with advanced formatting, frontmatter, and special features.
Master v-click and sequential animations in Slidev. Use this skill to reveal content progressively and create engaging presentations.
Add smooth slide transitions in Slidev. Use this skill for fade, slide, and custom transitions between slides.
Create beautiful code blocks with Shiki syntax highlighting. Use this skill for code snippets, line highlighting, and code groups.
Animate code transformations with Shiki Magic Move. Use this skill to create smooth morphing transitions between code states.
Add live coding with Monaco Editor in Slidev. Use this skill for interactive code demos, executable code, and real-time editing.
Leverage Vue components in Slidev slides. Use this skill to add interactivity with built-in components or create custom ones.
| name | slidev-syntax-guide |
| description | Master Slidev's extended Markdown syntax. Use this skill to write slides with advanced formatting, frontmatter, and special features. |
This skill covers Slidev's extended Markdown syntax, including slide separators, frontmatter, notes, MDC syntax, and all the special formatting features available.
Use three dashes with blank lines:
# Slide 1
Content here
---
# Slide 2
More content
Add per-slide configuration:
# Slide 1
---
layout: center
class: text-blue-500
---
# Centered Blue Slide
---
theme: seriph
title: My Presentation
info: |
## Presentation Description
Multi-line info text
colorSchema: auto
highlighter: shiki
drawings:
persist: false
transition: slide-left
mdc: true
---
---
layout: two-cols
class: my-custom-class
transition: fade
clicks: 3
disabled: false
hide: false
---
| Option | Type | Description |
|---|---|---|
layout | string | Slide layout name |
class | string | CSS classes |
transition | string | Slide transition |
background | string | Background image/color |
clicks | number | Total clicks for slide |
disabled | boolean | Disable slide |
hide | boolean | Hide from navigation |
preload | boolean | Preload heavy content |
# My Slide
Visible content
<!--
These are speaker notes.
- Point to remember
- Another point
Supports **Markdown** formatting.
-->
Notes must be at the end of the slide, after all content.
Enable in frontmatter:
---
mdc: true
---
This is [important text]{.text-red-500.font-bold}
This has a [tooltip]{title="Hover me!"}
::div{.flex.gap-4}
Content inside a flex container
::
::section{#my-section .bg-blue-100}
Section with ID and class
::
:Icon{name="carbon:arrow-right" size="24"}
::Alert{type="warning"}
Warning message here
::
- Item 1
- Item 2
- Nested item
- Another nested
- Item 3
1. First
2. Second
3. Third
<v-clicks>
- Appears first
- Appears second
- Appears third
</v-clicks>
Or with depth:
<v-clicks depth="2">
- Parent 1
- Child 1.1
- Child 1.2
- Parent 2
- Child 2.1
</v-clicks>

{width=400}
{.rounded-lg.shadow-xl}
---
background: /images/cover.jpg
class: text-white
---
# Title Over Image
[Slidev Documentation](https://sli.dev)
[Go to slide 5](/5)
[Go to slide with ID](#my-slide)
<a href="https://sli.dev" target="_blank">Open in new tab</a>
| Feature | Supported |
|---------|-----------|
| Markdown | ✅ |
| Vue Components | ✅ |
| Animations | ✅ |
| Export | ✅ |
> This is a quote
> spanning multiple lines
> [!NOTE]
> GitHub-style callout
Content above
---
Content below (this also creates a new slide!)
Use <hr> for a rule without slide break:
Content above
<hr>
Content below (same slide)
This is <span class="text-red-500">red text</span> inline.
<div class="grid grid-cols-2 gap-4">
<div>Column 1</div>
<div>Column 2</div>
</div>
Use more backticks than the content:
Here's how to write a code block:
```js
const x = 1
```
\---
This is not frontmatter
\---
For layouts with multiple content areas:
---
layout: two-cols
---
# Left side content
::right::
# Right side content
---
layout: my-custom-layout
---
::header::
Header content
::default::
Main content
::footer::
Footer content
Create global-top.vue:
<template>
<div class="absolute top-0 left-0 p-4">
<img src="/logo.png" class="h-8" />
</div>
</template>
Create global-bottom.vue:
<template>
<div class="absolute bottom-0 right-0 p-4 text-sm">
© 2025 My Company
</div>
</template>
Add CSS for a single slide:
# Styled Slide
<style>
h1 {
color: #2563eb;
font-size: 3em;
}
</style>
🚀 Rocket launch!
👋 Hello world!
<carbon-arrow-right class="inline" />
<mdi-github class="text-2xl" />
---❌ Missing blank lines
# Slide 1
---
# Slide 2
✓ Correct
# Slide 1
---
# Slide 2
❌ Invalid YAML
---
theme:default
---
✓ Correct YAML
---
theme: default
---
❌ Notes before content
<!--
Notes first
-->
# Heading
✓ Notes at end
# Heading
Content
<!--
Notes at the end
-->
When writing Slidev content, follow this structure:
---
[FRONTMATTER: theme, layout, class, etc.]
---
# [SLIDE TITLE]
[MAIN CONTENT]
- Use Markdown formatting
- Include code blocks where relevant
- Add images with proper paths
[OPTIONAL: Vue components or HTML]
<!--
[SPEAKER NOTES]
- Key points to mention
- Timing notes
-->