// Create presentation slides in Markdown format (Deckset/Marp compatible). Use when user requests to create slides, presentations, or convert documents to slide format. Handles image positioning, speaker notes, and proper formatting.
| name | markdown-slides |
| description | Create presentation slides in Markdown format (Deckset/Marp compatible). Use when user requests to create slides, presentations, or convert documents to slide format. Handles image positioning, speaker notes, and proper formatting. |
| allowed-tools | ["Read","Write","Glob","Bash"] |
| license | MIT |
Convert content to presentation slides in Markdown format compatible with Deckset and Marp presentation tools.
Activate this skill when the user:
_files_/ directory or paths to be resolved- slides suffix
document.md → document - slides.mdObjective: Create logical slide divisions with proper hierarchy
Actions:
---) at logical breaks:
#) for section titles##) for main slide titles###) for sub-topicsslidenumbers: trueExample:
slidenumbers: true
# 1. Section Title 🎯

^ Introduction to this section.
---
## Main Topic 📊
Content here...
---
### Detailed Subtopic
More details...
Objective: Convert images to Deckset format with proper positioning
Critical Requirements: ⚠️ MUST resolve relative paths per-image basis ⚠️ MUST URL-encode spaces and escape special characters ⚠️ MUST verify image files exist
Image Position Formats:
| Format | Usage | Example |
|---|---|---|
![]() | Section intro backgrounds |  |
![inline]() | Diagrams within text flow |  |
![right fit]() | PRIMARY: Content slides |  |
![right 80%]() | Specific sizing needed |  |
![inline fill]() | Full-width inline |  |
Actions:
a. Determine appropriate position format
b. Resolve relative path from slide file location
c. URL-encode spaces: " " → "%20"
d. Escape parentheses: "(" → "%28", ")" → "%29"
e. Verify file exists at resolved path
f. Use original images when available
g. Copy missing images to _files_/ directory
![]() for full background![inline]()![right fit]() ⭐![right XX%]() when needed![inline fill]() for wide imagesExamples:
# Section Title

---
## Content Slide
Key points here:
- Point 1
- Point 2

---
## Inline Diagram
Text before diagram.

Text after diagram.
Objective: Convert appropriate content to speaker notes
Format: Lines starting with ^ (caret + space)
Placement: At the end of each slide
Convert to speaker notes: ✅ Multi-sentence paragraphs ✅ Explanatory text ✅ Additional context ✅ Talking points
DO NOT convert:
❌ Single-sentence paragraphs
❌ Lists (bullet or numbered)
❌ Block quotes
❌ Sentences ending with colon (:)
❌ Headers (H1, H2, H3)
❌ Table content
For Marp platform: Use HTML comments instead
<!-- This is a speaker note for Marp -->
Examples:
## Slide Title
Main content visible to audience.
^ This paragraph becomes a speaker note because it's multi-sentence explanatory text. It provides context that the speaker needs but the audience doesn't need to read on the slide.
---
## Another Slide
- Bullet points stay visible
- Not converted to notes
^ Additional speaking points go here.
Objective: Polish the presentation for maximum impact
Actions:
Add emojis to section and slide titles:
Clean up comments:
Ensure clean format:
Add frontmatter (if requested):
slidenumbers: true
Final review:
⚠️ CRITICAL RULES:
_files_/ folder. Do NOT create placeholder references like background-xxx.png for images that don't exist._files_/ directory rather than substitutingmy file.png → my%20file.png( → %28, ) → %29ls or glob to confirm file existsDecision tree for image positioning:
Is it a section intro slide with just title?
→ Does a background image exist?
→ YES: Use ![]() for full background
→ NO: Skip image, use title + speaker notes only
Is it a diagram embedded in flowing text?
→ YES: Use ![inline]() or ![inline fill]()
Is it the main visual for the slide with bullet points?
→ YES: Use ![right fit]() ⭐ PRIMARY FORMAT
Does it need specific sizing?
→ YES: Use ![right 80%]() or other percentage
When to convert to speaker notes:
When NOT to convert:
: (usually introducing lists)Format:
Slide content here.
^ Speaker note paragraph one. Can be multiple sentences providing context.
^ Speaker note paragraph two. Each note paragraph gets its own ^ prefix.
File Naming:
- slides suffixAI for PKM.md → AI for PKM - slides.mdEmoji Usage:
Hierarchy:
Slide Breaks:
--- (three dashes) on its own lineFormat:
^ prefix on each lineFeatures:
slidenumbers: trueExample Frontmatter:
slidenumbers: true
autoscale: true
theme: Plain Jane, 3
Format:
<!-- speaker note -->marp: trueConversion for Marp:
---
marp: true
paginate: true
---
<!-- This is a speaker note in Marp -->
Differences:
^ prefix![bg]() for backgrounds instead of ![]()Before marking task complete, verify:
ls to confirm)%20^ prefix (or HTML for Marp)---) at logical breaksProblem: Source references image that doesn't exist
Solution:
_files_/ directory_files_/_files_/ directoryProblem: Path doesn't resolve correctly
Solution:
Problem: Special characters break image links
Solution:
%20( → %28, ) → %29[ → %5B, ] → %5D![right fit]() for content slides