| name | present |
| description | Use when the user says /present, "create a presentation", "make slides", "build a deck", or wants to create or update a Slidev presentation. |
| disable-model-invocation | true |
Present: Professional Presentation Workflow
Creates professional presentations using Slidev + Bun. Source-controllable Markdown → live preview → PDF/PPTX export.
Announce at start: "I'm using the present skill to help you build a presentation."
Prerequisites Check
Before anything else, verify Slidev is available:
bunx @slidev/cli --version
If this fails, tell the user:
"Slidev isn't installed. Run: bun add -g @slidev/cli then try again."
Stop here if installation fails.
Entry Point Detection
Determine how the user invoked the skill:
| Input | Mode |
|---|
| A brief or topic string | Generate mode — Claude drives content from scratch |
| Pasted notes, doc, or outline | Assist mode — Claude restructures provided content |
A path to slides.md | Revise mode — Claude reads and modifies existing deck |
If unclear, ask: "Are you starting from scratch, working from existing notes, or revising a deck you already have?"
Confidentiality Refusal (when invoked from an /onboard workspace)
When the entry path is a slides.md path (Revise mode) OR the user pastes
content from a workspace path (Assist mode), MUST run the refusal guard
before reading the source:
bun run "$CLAUDE_PROJECT_DIR/skills/onboard/scripts/onboard-guard.ts" refuse-raw <path>
The guard is a no-op for non-workspace paths — exits 0, /present proceeds.
Exit codes, repo-root resolution, and override policy: see
../onboard/refusal-contract.md.
Step 1: Audience & Intake
Ask these questions one at a time:
-
Audience type — choose one or more:
- A) Executive / leadership
- B) Technical / engineering
- C) Client / external
-
Key message — "What's the one thing the audience must walk away knowing?"
-
Length — How many slides approximately? (Or: how much time do you have?)
-
Must-include elements — Any specific data, diagrams, or constraints to include?
In Revise mode, skip intake and ask instead: "What needs to change — audience shift, new data, restructure, or something else?"
In Assist mode, run the full intake — but when asking about length (question 3), note that the provided content may naturally determine slide count. Offer a suggested count based on the content volume and let the user override.
Step 2: Narrative Outline
Generate a slide-by-slide outline based on the intake. Apply audience content rules:
| Audience | Content rules |
|---|
| Executive | Max 3 bullets/slide, lead with business impact, use fact layout for key metrics |
| Technical | Code blocks welcome, architecture diagrams encouraged, higher density allowed |
| Client/external | Clean visuals, minimal jargon, strong narrative arc with clear call-to-action |
Present the outline to the user. Ask: "Does this narrative arc look right? Any slides to add, remove, or reorder?"
Iterate on the outline until the user approves it. Do not write Markdown until the outline is approved.
Step 3: Generate slides.md
Once the outline is approved, write the presentation to:
~/presentations/<slug>/slides.md
Where <slug> is a kebab-case version of the presentation title (e.g., "Q3 Engineering Roadmap" → q3-engineering-roadmap).
Slidev syntax (frontmatter, layouts, separator, diagram blocks): see References.
Step 4: Live Preview
After writing slides.md, tell the user:
"Slides written to ~/presentations/<slug>/slides.md. Start the preview with:"
cd ~/presentations/<slug> && bunx @slidev/cli slides.md
"This opens at http://localhost:3030 and hot-reloads on every save."
Step 5: Iteration
Stay in the conversation for revision requests. Edit slides.md directly — the user never needs to touch the file manually.
Handle requests like:
- "Make slide 3 punchier" → rewrite that slide's content
- "Add a diagram showing the auth flow" → insert the Mermaid block on the correct slide
- "Restructure slides 4–7, the narrative is off" → rewrite that section
- "Switch to light mode" → change
colorSchema: dark to colorSchema: light
- "Add a data chart for Q3 metrics" → insert a Chart.js block with the provided data
After each edit, confirm what changed: "Updated slide 3 — shortened to 2 bullets and sharpened the headline."
Step 6: Export
When the user is ready to export:
# PDF
cd ~/presentations/<slug> && bunx @slidev/cli export slides.md --format pdf
# PowerPoint
cd ~/presentations/<slug> && bunx @slidev/cli export slides.md --format pptx
Both files land in ~/presentations/<slug>/.
Export failure recovery (missing theme, missing Chromium, PPTX limitations): see References.
When NOT to Use
- One-off documents, memos, or reports — deliver as a Word document (
.docx) instead
- A quick outline or bullet list that doesn't need to be rendered — just reply in Markdown
- Technical documentation that belongs in a README or runbook
- The user wants a static image or diagram only — use excalidraw or mermaid directly
- Slidev is not installed and the user doesn't want to install it — don't try to fake slides in another format
Common Mistakes
- Generating
slides.md before the outline is approved — always iterate on the narrative arc first; writing Markdown early wastes cycles when the structure changes.
- Over-dense executive slides — executive audiences get max 3 bullets per slide, business-impact-first phrasing, and
fact layout for key metrics (per the audience content rules).
- Skipping the audience question — audience drives content rules; don't guess between executive, technical, and client/external.
- Misusing layouts — reaching for
default for every slide loses visual rhythm; use cover, fact, center, and two-cols where they fit.
- Claiming export succeeded without running it — when asked to export, actually run the command and confirm the output files exist before reporting success.
Source Control
Each presentation directory is independently git-trackable:
cd ~/presentations/<slug>
git init
git add slides.md
git commit -m "Initial deck: <title>"
slides.pdf and slides.pptx should be gitignored (generated artifacts). The slides.md file is the source of truth.
References