
Slidev Code Blocks
- 136 installs
- 33 repo stars
- Updated January 30, 2026
- yoanbernabeu/slidev-skills
Adds advanced code block formatting to Slidev presentations with Shiki syntax highlighting, line-specific emphasis, progressive reveal animations, and external file imports.
About
slidev-code-blocks is a Slidev skill that enables rich code presentation features including Shiki syntax highlighting, line-level emphasis, animated progressive reveals, and direct import from source files. It lets developers show actual source files rather than manually copy-pasting code snippets and keeps slides in sync with real code. Reach for it when building technical talks or tutorials in Slidev where code clarity and step-by-step explanation matter.
- Shiki-powered syntax highlighting with 100+ language support
- Line-specific highlighting to focus audience attention
- Progressive code reveal animations for step-by-step walkthroughs
- Import code snippets directly from source files
- Side-by-side code group comparisons
Slidev Code Blocks by the numbers
- 136 all-time installs (skills.sh)
- +6 installs in the week ending Jul 28, 2026 (Skillselion tracking)
- Ranked #592 of 1,879 Documentation skills by installs in the Skillselion catalog
- Data as of Jul 28, 2026 (Skillselion catalog sync)
npx skills add https://github.com/yoanbernabeu/slidev-skills --skill slidev-code-blocksAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 136 |
|---|---|
| repo stars | ★ 33 |
| Last updated | January 30, 2026 |
| Repository | yoanbernabeu/slidev-skills ↗ |
What it does
Adds advanced code block formatting to Slidev presentations with Shiki syntax highlighting, line-specific emphasis, progressive reveal animations, and external file imports.
Who is it for?
Best when you're giving technical talks and want polished, accurate code slides
Skip if: Non-code presentations or design-heavy decks
What you get
- formatted code slides
- syntax-highlighted presentation
Files
Slidev Code Blocks
This skill covers everything about displaying code in Slidev presentations, including syntax highlighting with Shiki, line highlighting, code groups, and importing external snippets.
When to Use This Skill
- Displaying code snippets in presentations
- Highlighting specific lines of code
- Creating step-by-step code reveals
- Showing code comparisons
- Importing code from external files
Basic Code Blocks
Simple Code Block
````markdown
function greet(name) {
return `Hello, ${name}!`
}````
With Language Specification
Shiki supports 100+ languages:
````markdown
interface User {
id: number
name: string
email: string
}````
````markdown
def fibonacci(n):
if n <= 1:
return n
return fibonacci(n-1) + fibonacci(n-2)````
````markdown
fn main() {
println!("Hello, Rust!");
}````
Line Numbers
Enable Line Numbers
```markdown ``typescript {lines:true} const x = 1 const y = 2 const z = x + y
Global Configuration
In frontmatter:
---
lineNumbers: true
---Starting Line Number
```markdown ``typescript {startLine:5} // This starts at line 5 const x = 1
Line Highlighting
Highlight Specific Lines
```markdown ``typescript {2,3} const a = 1 const b = 2 // highlighted const c = 3 // highlighted const d = 4
Highlight Ranges
```markdown ``typescript {1-3,5} line 1 // highlighted line 2 // highlighted line 3 // highlighted line 4 line 5 // highlighted
Click-Through Highlighting
Reveal highlights step by step:
```markdown ``typescript {1|2-3|5} const name = 'Slidev' // Click 1 const version = '0.50' // Click 2 const author = 'Anthony' // Click 2
console.log(name, version) // Click 3
Highlight All Then Focus
```markdown ``typescript {*|1|2|3} const a = 1 const b = 2 const c = 3
- Click 0: All lines visible
- Click 1: Line 1 highlighted
- Click 2: Line 2 highlighted
- Click 3: Line 3 highlighted
With Final State
```markdown ``typescript {1|2|all} const x = 1 const y = 2
Code Block Options
Maximum Height
```markdown ``typescript {maxHeight:'200px'} // Long code block // with many lines // ...
Wrapping
```markdown ``typescript {wrap:true} const veryLongLine = 'This is a very long line that would normally overflow the code block but now it wraps nicely'
Combined Options
```markdown ``typescript {2-4|6-8}{lines:true,startLine:10,maxHeight:'300px'} function example() { const a = 1 const b = 2 const c = 3
return { sum: a + b + c } }
Code Themes
Configure in setup/shiki.ts
// setup/shiki.ts
import { defineShikiSetup } from '@slidev/types'
export default defineShikiSetup(() => {
return {
themes: {
dark: 'vitesse-dark',
light: 'vitesse-light',
},
}
})Popular Themes
vitesse-dark/vitesse-lightdraculaone-dark-pronordmaterial-themegithub-dark/github-light
Code Groups
Show multiple code variants in tabs:
```markdown ``typescript {monaco} // TypeScript version interface User { name: string }
// JavaScript version const user = { name: 'John' }
Use <<< to create tabbed code groups (experimental):
```markdown <<< @/snippets/example.ts <<< @/snippets/example.js ```
Importing External Code
Full File Import
```markdown <<< @/snippets/example.ts ```
With Line Range
```markdown <<< @/snippets/example.ts#L5-10 ```
With Language Override
```markdown <<< @/snippets/config{json} ```
With Highlighting
```markdown <<< @/snippets/example.ts {2,4} ```
Diff Highlighting
Show code changes:
````markdown
function greet(name: string) {
return `Hello, ${name}!` // [!code --]
return `Hi, ${name}!` // [!code ++]
}````
Highlight Specific Changes
````markdown
const config = {
theme: 'dark', // [!code highlight]
debug: false, // [!code warning]
timeout: 1000, // [!code error]
}````
TwoSlash Integration
TypeScript hover information:
```markdown ``typescript twoslash const message = 'Hello' // ^?
Hover annotations:
```markdown ``typescript twoslash interface User { name: string age: number }
const user: User = { name: 'John', age: 30 } // ^?
Code Focus
Focus Mode
Dim non-highlighted lines:
```markdown ``typescript {2}{focus} const a = 1 const b = 2 // Focused, others dimmed const c = 3
Click Focus Transitions
```markdown ``typescript {1|2|3}{focus} step1() // First focused step2() // Then this step3() // Finally this
Inline Code
Simple Inline
Use the `useState` hook for state management.Styled Inline
The function returns `true`{.text-green-500} or `false`{.text-red-500}.Code Block Styling
Custom CSS Class
```markdown ``typescript {class:'my-code'} const x = 1
.my-code {
font-size: 0.9em;
border-radius: 8px;
}Scoped Styles
# Code Slide
const x = 1
<style>
.slidev-code {
font-size: 1.2em;
}
</style>Best Practices
1. Keep Code Concise
❌ Too much code ````markdown
// Full 100-line file````
✓ Focused snippet ````markdown
// Just the relevant function
function handleClick() {
setState(value => value + 1)
}````
2. Use Meaningful Highlights
❌ No context ````markdown
const x = 1````
✓ Guided attention ```markdown ``typescript {2} const x = 1 const important = 'focus here' // highlighted const y = 2
3. Progressive Reveal for Complex Code
```markdown ``typescript {1-2|4-6|8-10} // Step 1: Define types interface User { name: string }
// Step 2: Create function function greet(user: User) { return Hello, ${user.name} }
// Step 3: Usage const greeting = greet({ name: 'World' }) console.log(greeting)
4. Use Comments for Context
````markdown
// BAD: Magic numbers
const delay = 1000
// GOOD: Named constants
const ANIMATION_DELAY_MS = 1000````
Common Patterns
Before/After Comparison
````markdown
// Before
function add(a, b) {
return a + b
}
// After
const add = (a: number, b: number): number => a + b````
Step-by-Step Tutorial
```markdown ``typescript {1|1-4|1-7|1-10} // Step 1: Import import { ref } from 'vue'
// Step 2: Create ref const count = ref(0)
// Step 3: Create function function increment() { count.value++ }
Output Format
When creating code slides, provide:
---
layout: default
---
# [Topic]
[Brief explanation of what the code does]
[code]
<!--
Speaker notes:
- Explain line X
- Demo this part
-->KEY DECISIONS:
- Language: [chosen language]
- Highlighting: [which lines and why]
- Animation: [click sequence if any]
- Theme: [if non-default]