assafkip/kipi-system/deck-ai
Claude Code and agent skill by assafkip/kipi-system
- community
Checking that the SKILL.md file is still in the repository.
Generate modern presentation decks (PDF) from markdown content. Local open-source alternative to Gamma — uses Slidev for layouts and Unsplash for imagery. Invoke when the user asks to "make a deck", "build slides from this", or "turn this into a presentation".
Install
npx vskill@latest install assafkip/kipi-system/deck-aiSKILL.md
deck-ai
Turn plain markdown into a themed, image-rich slide deck exported as PDF. Closest open-source equivalent to Gamma. Runs locally. No subscription.
What this skill does
- Reads source markdown (slides separated by
---). - Picks a layout + image keyword per slide. Two modes:
- LLM mode (preferred): Claude writes
decisions.jsondirectly using the Write tool. No extra API call. - Rules mode (fallback): deterministic regex picks. Used when the skill is invoked from a non-LLM harness.
- Fetches images from Unsplash by keyword.
- Renders the whole thing to PDF via Slidev.
When to invoke
Triggers: "make a deck", "turn this into slides", "slide version of X", "build a presentation from this", "gamma-style deck".
Do NOT invoke for plain editing / rewriting of existing slide content. Do NOT invoke if the user wants a PPTX specifically (use python-pptx instead).
Required setup (first run)
Prerequisites
- Node 18+ and
pnpmon the user's machine. If missing:
`` brew install node npm install -g pnpm ``
API key
- Unsplash (required): https://unsplash.com/oauth/applications — only the Access Key.
- Key lives in
.envat the calling instance root:
`` echo 'UNSPLASH_ACCESS_KEY=<your-key>' >> ./.env ``
- Never commit
.env. Never paste the key into any file in this skill. - No separate Anthropic key needed — when this skill runs inside Claude Code, Claude itself writes
decisions.json.
Install workspace (one-time per instance)
This creates a local Slidev workspace with themes installed. Takes ~1-2 minutes first run. Subsequent runs reuse it.
Workflow (per deck)
decisions.json schema (step 2)
One object per slide, in source order. generate.py validates this file and exits non-zero on any violation.
Rules Claude must follow when writing decisions.json:
layoutis one of:cover,center,statement,two-cols,image-right,image-left,quote,end,default.- Slide 1 must be
cover. - If a slide has
<!-- layout: X -->in the source, use that layout. image_keywordis 1-3 concrete nouns suitable for stock photo search. Required forcover,image-right,image-left.nullfor every other layout.- No brand names, no anime character names, no abstract concepts. Use the underlying physical scene instead.
Good keywords: library books, koi fish, child drawing, mountain sunrise. Bad keywords: Naruto, loneliness, theme of courage, The Ordinary World.
Source markdown format
Slides separated by a line containing only ---. First slide is the cover.
Example:
Layouts
See references/layout-catalog.md for the full enum and pick rules. Force a layout by adding <!-- layout: <name> --> in a slide body.
Image keywords
Use concrete nouns in {{IMG:keyword}} placeholders. 1-3 words. Good: mountain sunrise, library books, child drawing. Bad: feeling of wonder, theme of courage (abstract concepts return weak results).
Themes
Default: @slidev/theme-seriph (clean serif, modern). Fallback: @slidev/theme-default (sans-serif, minimal).
Install more themes in the workspace:
Browse: https://sli.dev/resources/theme-gallery
Limitations
- Slidev renders via Playwright Chromium on first export (adds ~30s).
- Unsplash free tier: 50 requests/hour. Reuse keywords if hitting the limit.
- PDF export does not preserve interactive elements (embeds, live code).
- Slide source must be standard markdown. HTML-heavy content may break layout.
Troubleshooting
| Symptom | Fix | |
|---|---|---|
pnpm: command not found | npm install -g pnpm | |
UNSPLASH_ACCESS_KEY not set | Add to .env at calling dir | |
| Images all say "no image found" | Keywords too abstract. Use concrete nouns. | |
| PDF export hangs | First run downloads Chromium. Let it finish. | |
| Layout looks wrong | Check <!-- layout: X --> hint or let rules pick |
What this skill does NOT do (v2)
- AI-generated images (Unsplash stock only; could add Flux/Ideogram later)
- Brand theme editor (use provided themes or install more via pnpm)
- Per-slide image retries (one Unsplash result per keyword; no ranking)
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingplugins/kipi-core/skills/deck-ai/SKILL.md
Popularity
- Repository stars
- 89
- Repository forks
- 19
- 7-day trend score
- 22
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/assafkip/kipi-system/deck-ai)