Now liveThe Skillselion MCP - thousands of ranked skills, loaded into your agent mid-task. No install.Get it →
yoanbernabeu avatar

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-blocks

Add your badge

Show developers this skill is listed on Skillselion. Paste this into your README.

Listed on Skillselion
Installs136
repo stars33
Last updatedJanuary 30, 2026
Repositoryyoanbernabeu/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

SKILL.mdMarkdownGitHub ↗

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-light
  • dracula
  • one-dark-pro
  • nord
  • material-theme
  • github-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]

Related skills

Documentationfrontenddocs

This week in AI coding

Five minutes, every Monday - the tools, releases and tactics for developers.

unsubscribe anytime.