architecture-review
Surfaces architectural friction in real code — shallow modules, tight coupling, untested seams — and proposes deepening refactors…
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".
$ npx -y skills add assafkip/kipi-system --skill deck-ai --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/deck-aiContext preview
The summary Claude sees to decide when to auto-load this skill.
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".
name: deck-ai user-invocable: false description: 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".
Turn plain markdown into a themed, image-rich slide deck exported as PDF. Closest open-source equivalent to Gamma. Runs locally. No subscription.
1. Reads source markdown (slides separated by `---`). 2. Picks a layout + image keyword per slide. Two modes:
3. Fetches images from Unsplash by keyword. 4. Renders the whole thing to PDF via Slidev.
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).
brew install node npm install -g pnpm
echo 'UNSPLASH_ACCESS_KEY=<your-key>' >> ./.env
bash <skill>/scripts/setup.sh ./deck-workspace
This creates a local Slidev workspace with themes installed. Takes ~1-2 minutes first run. Subsequent runs reuse it.
# 1. Preflight: key + deps must be present
bash <skill>/scripts/check_env.sh ./deck-workspace
# 2. (LLM mode) Claude reads <input.md>, decides layout + image keyword
# per slide, and WRITES ./deck-workspace/decisions.json with the Write
# tool (schema below). Skip this step when running outside Claude.
# 3. Generate Slidev markdown from source
# LLM mode:
python3 <skill>/scripts/generate.py <input.md> ./deck-workspace/slides.raw.md \
--theme seriph --decisions ./deck-workspace/decisions.json
# Rules mode (no decisions file):
python3 <skill>/scripts/generate.py <input.md> ./deck-workspace/slides.raw.md --theme seriph
# 4. Fill image placeholders from Unsplash
python3 <skill>/scripts/fetch_images.py ./deck-workspace/slides.raw.md
# 5. Export PDF
bash <skill>/scripts/render.sh ./deck-workspace ./deck-workspace/slides.raw.md ./deck.pdfOne object per slide, in source order. `generate.py` validates this file and exits non-zero on any violation.
[
{"layout": "cover", "image_keyword": "sunrise mountains"},
{"layout": "image-right", "image_keyword": "student classroom"},
{"layout": "center", "image_keyword": null},
{"layout": "end", "image_keyword": null}
]Rules Claude must follow when writing `decisions.json`:
Good keywords: `library books`, `koi fish`, `child drawing`, `mountain sunrise`. Bad keywords: `Naruto`, `loneliness`, `theme of courage`, `The Ordinary World`.
Slides separated by a line containing only `---`. First slide is the cover.
Example:
# Deck Title Subtitle line. --- # Second slide Body content here. <!-- layout: image-right --> Anime anchor: Naruto. --- # Homework Optional closing text.
See `references/layout-catalog.md` for the full enum and pick rules. Force a layout by adding `<!-- layout: <name> -->` in a slide body.
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).
Default: `@slidev/theme-seriph` (clean serif, modern). Fallback: `@slidev/theme-default` (sans-serif, minimal).
Install more themes in the workspace:
cd ./deck-workspace && pnpm add @slidev/theme-<name>
Browse: https://sli.dev/resources/theme-gallery
| 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 |
Give your AI the right knowledge, at the moment it needs it. Kipi turns the scattered knowledge around your work into context that follows you across AI sessions: decisions, conversations, projects, people, commitments, lessons, documents, history.
Surfaces architectural friction in real code — shallow modules, tight coupling, untested seams — and proposes deepening refactors…
AUDHD executive function accommodations. Apply to all output the founder will act on.
Founder voice enforcement for all written output. Apply to any text another person will read.
Platform-optimized headline and hook engineering for X (Twitter), Reddit, LinkedIn, Medium, Substack. Apply when writing or…
Critique an outside idea (a pasted tip, post, transcript or video summary) against what this system already has. Use when the…
Propose a principle edit to a skill or persona file based on a (agent_output, human_output) correction pair. Outputs a proposal…