
slidev-navigation
Master Slidev navigation and keyboard shortcuts. Use this skill for efficient slide control, custom shortcuts, and navigation customization.
- Installs
- 201
- Last 24h
- —
- Trending rank
- —
- Security
- Not audited
Install
Works with every agent the skills CLI supports.
npx skills add https://github.com/yoanbernabeu/slidev-skills --skill slidev-navigation- 01
Install
Run the command in your project. The CLI asks which agents to install for.
- 02
Describe the task
Ask your agent for something this skill covers. It loads slidev-navigation automatically when relevant.
- 03
Review the result
The agent follows the SKILL.md steps, scripts and references bundled with the skill.
SKILL.md
The instructions your agent reads when the skill is triggered.
Slidev Navigation
This skill covers all navigation features in Slidev, including keyboard shortcuts, navigation bar, overview mode, and customizing navigation behavior.
When to Use This Skill
- Learning navigation controls
- Customizing keyboard shortcuts
- Setting up presentation navigation
- Configuring navigation bar
- Creating custom navigation components
Default Keyboard Shortcuts
Basic Navigation
| Key | Action |
|---|---|
Space | Next animation or slide |
→ / Right | Next animation or slide |
← / Left | Previous animation or slide |
↑ / Up | Previous slide (skip animations) |
↓ / Down | Next slide (skip animations) |
Mode Toggles
| Key | Action |
|---|---|
o | Toggle overview mode |
d | Toggle dark mode |
f | Toggle fullscreen |
p | Toggle presenter mode |
Navigation Jumps
| Key | Action |
|---|---|
g | Go to specific slide |
Home | Go to first slide |
End | Go to last slide |
Other Controls
| Key | Action |
|---|---|
Esc | Exit fullscreen/overview/drawing |
e | Toggle drawing mode |
r | Toggle recording |
Navigation Bar
Location
Bottom-left corner of the slide (appears on hover).
Available Buttons
- Home: Go to first slide
- Previous: Previous slide/animation
- Current/Total: Click to open go-to dialog
- Next: Next slide/animation
- Presenter: Open presenter mode
- Camera: Toggle camera view
- Record: Start/stop recording
- Drawing: Toggle drawing mode
- Overview: Open slide overview
- Dark Mode: Toggle dark/light
- Fullscreen: Toggle fullscreen
- Export: Export options
- Info: Presentation info
Overview Mode
Accessing
- Press
okey - Click overview button in navigation bar
- Navigate to
/overviewURL
Features
- Grid view of all slides
- Click any slide to navigate
- Keyboard navigation within overview
- Search slides (if implemented)
Overview Navigation
| Key | Action |
|---|---|
← → ↑ ↓ | Navigate grid |
Enter | Select slide |
Esc / o | Close overview |
Go-To Dialog
Opening
- Press
gkey - Click slide number in navigation bar
Usage
- Dialog opens
- Type slide number
- Press Enter
Quick Jump
g → 15 → Enter
Goes directly to slide 15.
Customizing Shortcuts
Configuration File
Create setup/shortcuts.ts:
import { defineShortcutsSetup } from '@slidev/types'
export default defineShortcutsSetup((nav, base) => {
return [
...base, // Keep default shortcuts
{
key: 'enter',
fn: () => nav.next(),
autoRepeat: true,
},
{
key: 'backspace',
fn: () => nav.prev(),
autoRepeat: true,
},
{
key: 'ctrl+f',
fn: () => nav.go(1),
},
]
})
Shortcut Properties
| Property | Type | Description |
|---|---|---|
key | string | Key combination |
fn | function | Action to perform |
autoRepeat | boolean | Repeat when held |
Key Syntax
// Single key
{ key: 'enter', fn: () => {} }
// Modifier + key
{ key: 'ctrl+s', fn: () => {} }
// Multiple modifiers
{ key: 'ctrl+shift+s', fn: () => {} }
Available Modifiers
ctrlshiftaltmeta(Cmd on Mac)
Navigation API
In Components
<script setup>
import { useNav } from '@slidev/client'
const {
currentSlideNo, // Current slide number (ref)
currentPage, // Current page number
total, // Total slides
clicks, // Current click count
next, // Go to next
prev, // Go to previous
go, // Go to slide number
nextSlide, // Next slide (skip animations)
prevSlide, // Previous slide (skip animations)
} = useNav()
</script>
Navigation Functions
<template>
<!-- Custom navigation buttons -->
<button @click="nav.prev()">Previous</button>
<button @click="nav.next()">Next</button>
<button @click="nav.go(1)">Go to Start</button>
<button @click="nav.go(total.value)">Go to End</button>
</template>
<script setup>
import { useNav } from '@slidev/client'
const nav = useNav()
</script>
Custom Navigation Components
Slide Progress Bar
<!-- components/ProgressBar.vue -->
<script setup>
import { computed } from 'vue'
import { useNav } from '@slidev/client'
const { currentSlideNo, total } = useNav()
const progress = computed(() =>
(currentSlideNo.value / total.value) * 100
)
</script>
<template>
<div class="fixed top-0 left-0 right-0 h-1 bg-gray-200">
<div
class="h-full bg-blue-500 transition-all"
:style="{ width: `${progress}%` }"
/>
</div>
</template>
Custom Page Number
<!-- components/PageNumber.vue -->
<script setup>
import { useNav } from '@slidev/client'
const { currentSlideNo, total } = useNav()
</script>
<template>
<div class="fixed bottom-4 right-4 text-sm">
{{ currentSlideNo }} / {{ total }}
</div>
</template>
Navigation Buttons
<!-- components/NavButtons.vue -->
<script setup>
import { useNav } from '@slidev/client'
const { prev, next, currentSlideNo, total } = useNav()
</script>
<template>
<div class="fixed bottom-4 flex gap-2">
<button
@click="prev()"
:disabled="currentSlideNo === 1"
class="px-4 py-2 bg-blue-500 text-white rounded disabled:opacity-50"
>
Previous
</button>
<button
@click="next()"
:disabled="currentSlideNo === total"
class="px-4 py-2 bg-blue-500 text-white rounded disabled:opacity-50"
>
Next
</button>
</div>
</template>
Touch Navigation
Default Behavior
- Swipe left: Next slide
- Swipe right: Previous slide
Touch Areas
Screen is divided into:
- Left third: Previous
- Right two-thirds: Next
Mouse Navigation
Click Areas
- Left side of slide: Previous
- Right side of slide: Next
Disable Click Navigation
---
# In frontmatter
---
Custom CSS to disable:
.slidev-page {
pointer-events: none;
}
URL Navigation
Direct Slide Access
http://localhost:3030/5 # Slide 5
http://localhost:3030/10 # Slide 10
Presenter Mode
http://localhost:3030/presenter
http://localhost:3030/presenter/5 # Presenter at slide 5
Overview Mode
http://localhost:3030/overview
Slide Numbering
Default Numbering
Slides numbered 1 to N based on order.
Custom Slide IDs
---
routeAlias: introduction
---
Access via:
http://localhost:3030/introduction
Link to Slide by ID
[Go to Introduction](/introduction)
Navigation Events
Watch Navigation
<script setup>
import { watch } from 'vue'
import { useNav } from '@slidev/client'
const { currentSlideNo } = useNav()
watch(currentSlideNo, (newSlide, oldSlide) => {
console.log(`Navigated from ${oldSlide} to ${newSlide}`)
})
</script>
Best Practices
1. Learn Core Shortcuts
Essential for smooth presenting:
Space/→- Forward←- Backo- Overviewg- Go to
2. Custom Shortcuts for Your Style
// If you prefer Enter/Backspace
{
key: 'enter',
fn: () => nav.next(),
}
3. Hide Navigation for Clean Presentations
CSS to hide nav bar:
.slidev-nav {
display: none;
}
4. Add Progress Indicator
Global bottom component for progress.
5. Practice Navigation
Before presenting:
- Run through all slides
- Practice overview jumping
- Test any custom shortcuts
Output Format
When configuring navigation:
// setup/shortcuts.ts
import { defineShortcutsSetup } from '@slidev/types'
export default defineShortcutsSetup((nav, base) => {
return [
...base, // Keep defaults
// Custom shortcuts
{ key: '[key]', fn: () => nav.[action]() },
]
})
NAVIGATION PLAN:
- Forward: [key]
- Backward: [key]
- Overview: [key]
- Jump: [method]
CUSTOM COMPONENTS:
- Progress bar: [yes/no]
- Page numbers: [yes/no]
- Custom buttons: [yes/no]
FAQ
What does the slidev-navigation skill do?
Master Slidev navigation and keyboard shortcuts. Use this skill for efficient slide control, custom shortcuts, and navigation customization.
How do I install slidev-navigation?
Run npx skills add https://github.com/yoanbernabeu/slidev-skills --skill slidev-navigation in your project. The skills CLI detects the agents you use and copies the skill into the right folder. For Claude Code you can also place the skill folder at ~/.claude/skills/slidev-navigation/ (personal) or .claude/skills/slidev-navigation/ (project).
Which AI agents can use slidev-navigation?
Any agent that supports the open Agent Skills format (a folder with a SKILL.md file), including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, Windsurf, Cline, OpenCode and more.
Is slidev-navigation safe to install?
No partner security audit is available yet. Skills can run commands and scripts, so read the SKILL.md and any bundled files before installing.
Who maintains slidev-navigation?
It is published by yoanbernabeu in yoanbernabeu/slidev-skills. It has 201 recorded installs.
More from yoanbernabeu/slidev-skills
slidev-styling
yoanbernabeu/slidev-skills
Open the skill to read its SKILL.md instructions.
slidev-quick-start
yoanbernabeu/slidev-skills
Get started with Slidev presentations in minutes. Use this skill to create your first presentation or set up a new Slidev project.
slidev-themes
yoanbernabeu/slidev-skills
Open the skill to read its SKILL.md instructions.
slidev-syntax-guide
yoanbernabeu/slidev-skills
Master Slidev's extended Markdown syntax. Use this skill to write slides with advanced formatting, frontmatter, and special features.
slidev-drawings
yoanbernabeu/slidev-skills
Open the skill to read its SKILL.md instructions.
slidev-project-structure
yoanbernabeu/slidev-skills
Understand Slidev project structure and configuration. Use this skill to configure themes, addons, and customize your presentation setup.
Popular other skills
hyperframes-cli
heygen-com/hyperframes
The HyperFrames CLI by job - scaffold, check, look at frames, edit the timeline, preview, render locally or in the cloud, publish, project history - plus reading its JSON and recovering from build or render failures.
triage
mattpocock/skills
Move issues and external PRs through a state machine of triage roles, categorise, verify, grill if needed, and write agent-ready briefs.
ask-matt
mattpocock/skills
Ask which skill or flow fits your situation. A router over the skills in this repo.
to-questionnaire
mattpocock/skills
Turn a decision you can't fully answer into a questionnaire for someone else to fill in.
loop-me
mattpocock/skills
Grill me about specs for the workflows I want to build, within this workspace.