Ky Markdown Rebuilder
KyrieCheungYep/ky-markdown-rebuilder
Rebuild visual documents into reliable Markdown by combining text extraction with page or screenshot alignment.
Turns a markdown file into a themed, image-rich slide deck exported as PDF, using Slidev for layouts and Unsplash for photos, all run locally.
$ npx skills add assafkip/kipi-system --skill deck-ai -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install assafkip/kipi-system deck-ai --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/assafkip/kipi-system.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/kipi-core/skills/deck-ai .claude/skills/deck-ai && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "deck-ai" agent skill from https://github.com/assafkip/kipi-system/tree/main/plugins/kipi-core/skills/deck-ai into .claude/skills/deck-ai/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "deck-ai", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/assafkip/kipi-system/tree/main/plugins/kipi-core/skills/deck-aiType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add assafkip/kipi-system --skill deck-ai -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install assafkip/kipi-system deck-ai --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/assafkip/kipi-system.git skills-src && mkdir -p .agents/skills && cp -r skills-src/plugins/kipi-core/skills/deck-ai .agents/skills/deck-ai && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "deck-ai" agent skill from https://github.com/assafkip/kipi-system/tree/main/plugins/kipi-core/skills/deck-ai into .agents/skills/deck-ai/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "deck-ai", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add assafkip/kipi-system --skill deck-ai -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install assafkip/kipi-system deck-ai --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/assafkip/kipi-system.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/plugins/kipi-core/skills/deck-ai .cursor/skills/deck-ai && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "deck-ai" agent skill from https://github.com/assafkip/kipi-system/tree/main/plugins/kipi-core/skills/deck-ai into .cursor/skills/deck-ai/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "deck-ai", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/assafkip/kipi-system.git --path plugins/kipi-core/skills/deck-ai--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add assafkip/kipi-system --skill deck-ai -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install assafkip/kipi-system deck-ai --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/assafkip/kipi-system.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/plugins/kipi-core/skills/deck-ai .gemini/skills/deck-ai && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "deck-ai" agent skill from https://github.com/assafkip/kipi-system/tree/main/plugins/kipi-core/skills/deck-ai into .gemini/skills/deck-ai/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "deck-ai", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install assafkip/kipi-system deck-aiInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add assafkip/kipi-system --skill deck-ai -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/assafkip/kipi-system.git skills-src && mkdir -p .github/skills && cp -r skills-src/plugins/kipi-core/skills/deck-ai .github/skills/deck-ai && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "deck-ai" agent skill from https://github.com/assafkip/kipi-system/tree/main/plugins/kipi-core/skills/deck-ai into .github/skills/deck-ai/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "deck-ai", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add assafkip/kipi-system --skill deck-ai -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install assafkip/kipi-system deck-ai --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/assafkip/kipi-system.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/plugins/kipi-core/skills/deck-ai .opencode/skills/deck-ai && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "deck-ai" agent skill from https://github.com/assafkip/kipi-system/tree/main/plugins/kipi-core/skills/deck-ai into .opencode/skills/deck-ai/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "deck-ai", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
deck-aiTurns a markdown file into a themed, image-rich slide deck exported as PDF, using Slidev for layouts and Unsplash for photos, all run locally.
Markdown goes in and a PDF deck comes out. The skill reads a file whose slides are separated by ---, picks a layout and an image keyword for every slide, fetches matching pictures from Unsplash and renders the whole deck through Slidev. In its preferred mode the agent writes a decisions.json file itself, one object per slide in source order; a rules mode with deterministic regex picks is the fallback for harnesses without an LLM.
A generate script validates decisions.json and exits with an error on any violation. The allowed layouts are cover, center, statement, two-cols, image-right, image-left, quote, end and default, and the first slide has to be a cover. The first run needs Node 18 or newer, pnpm, an Unsplash access key kept in a .env file that is never committed, and a one-time setup script that builds a Slidev workspace in a minute or two. It is not meant for editing existing slide text or for requests that specifically want a PPTX file.
4 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 16d4724. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships 3 files in scripts/ (Python and Shell), which the agent can run.
Shell commands in SKILL.md call:
bashpython3npmbrewpnpmFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
unsplash.comsli.devFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
UNSPLASH_ACCESS_KEYFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Deck AI loads about 1.5k tokens when it runs, and up to ~1.9k if it reads all its reference files. Until then it costs about 67 tokens; SKILL.md has 549 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
- Key lives in `.env` at the calling instance root:ho 'UNSPLASH_ACCESS_KEY=<your-key>' >> ./.env- Never commit `.env`. Never paste the key into any file in this skill.`UNSPLASH_ACCESS_KEY not set` | Add to `.env` at calling dir |Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
The full file from assafkip/kipi-system at commit 16d4724, republished under its MIT licence (© assafkip). 549 words, ~1,480 tokens.
.claude/skills/deck-ai/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.Turn plain markdown into a themed, image-rich slide deck exported as PDF. Closest open-source equivalent to Gamma. Runs locally. No subscription.
---).decisions.json directly using the Write tool. No extra API call.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).
pnpm on the user's machine. If missing:brew install node
npm install -g pnpm.env at the calling instance root:echo 'UNSPLASH_ACCESS_KEY=<your-key>' >> ./.env.env. Never paste the key into any file in this skill.decisions.json.bash <skill>/scripts/setup.sh ./deck-workspaceThis 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:
layout is one of: cover, center, statement, two-cols, image-right, image-left, quote, end, default.cover.<!-- layout: X --> in the source, use that layout.image_keyword is 1-3 concrete nouns suitable for stock photo search. Required for cover, image-right, image-left. null for every other layout.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 |
© assafkip, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 4 other files (scripts, references) in plugins/kipi-core/skills/deck-ai of assafkip/kipi-system.
Open the folder on GitHubat commit 16d4724
Deck AI next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Deck AI this skillassafkip/kipi-system | 112 | — | ~1.5k | Automated safety check: Notes | MIT | |
| Ky Markdown RebuilderKyrieCheungYep/ky-markdown-rebuilder | 117 | — | ~5.7k | Automated safety check: Pass | None | |
| Slidev CLI Skilldskilld-dev/vue-ecosystem-skills | 181 | — | ~1.1k | Automated safety check: Pass | MIT | |
| Slide Deck Image GeneratorSpaceZephyr/design-buddy | 175 | — | ~6.5k | Automated safety check: Pass | None | |
| Youtube Notetakersickn33/agentic-awesome-skills | 47k | 1 repos | ~2.3k | Automated safety check: Pass | MIT | |
| Multimodal Extractionswyxio/skills | 175 | — | ~922 | Automated safety check: Pass | MIT |
KyrieCheungYep/ky-markdown-rebuilder
Rebuild visual documents into reliable Markdown by combining text extraction with page or screenshot alignment.
skilld-dev/vue-ecosystem-skills
Build, present, and ship Slidev decks with @slidev/cli. An agent skill from skilld-dev/vue-ecosystem-skills.
SpaceZephyr/design-buddy
Turns written content into designed slide images from an outline, merges them into PPTX or PDF, and can borrow styles from a registry of brand design systems.
sickn33/agentic-awesome-skills
Turn YouTube talks into local study notes with slides, transcripts, editable annotations, and a markdown-backed viewer.
swyxio/skills
Given a local video or video URL, downloads the media if needed, extracts slide frames and key moments, transcribes the audio, and writes a Markdown timeline that interleaves screenshots with the…
mohitagw15856/pm-claude-skills
Download and save Instagram posts as high-resolution files. An agent skill from mohitagw15856/pm-claude-skills.
assafkip/kipi-system
Routes visual design requests to built-in logo, corporate identity, slide, banner, social photo and icon workflows, backed by style data and AI image generation.
assafkip/kipi-system
Judges a pasted tip, post or video summary against what the kipi system already has, and returns adopt, skip or already-built with the files that back the verdict.
assafkip/kipi-system
Teaches staged, verifiable coding habits for multi-file tasks and ships a hook that blocks tests from touching live data.
assafkip/kipi-system
Writes a structured, blameless root-cause analysis for a defect that escaped a test or gate, separating surface from structural causes and linting the result.
assafkip/kipi-system
Surfaces architectural friction in real code — shallow modules, tight coupling, untested seams — and proposes deepening refactors using Ousterhout's deep-module principle (small interface hiding a…
assafkip/kipi-system
AUDHD executive function accommodations. An agent skill from assafkip/kipi-system.
Categories
Turns a markdown file into a themed, image-rich slide deck exported as PDF, using Slidev for layouts and Unsplash for photos, all run locally. Markdown goes in and a PDF deck comes out. The skill reads a file whose slides are separated by ---, picks a layout and an image keyword for every slide, fetches matching pictures from Unsplash and renders the whole deck through Slidev.
Deck AI fits situations like: turning a markdown outline into a PDF presentation; building a slide deck with photos from lesson or pitch notes; making a Gamma-style deck without a subscription.
Run `npx skills add assafkip/kipi-system --skill deck-ai -a claude-code`. Or copy the skill folder (plugins/kipi-core/skills/deck-ai in assafkip/kipi-system) into .claude/skills/deck-ai in your project. Claude Code loads it when a task matches its description.
Run `npx skills add assafkip/kipi-system --skill deck-ai -a codex`. Or copy the skill folder (plugins/kipi-core/skills/deck-ai in assafkip/kipi-system) into .agents/skills/deck-ai in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add assafkip/kipi-system --skill deck-ai -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/deck-ai, .gemini/skills/deck-ai, .github/skills/deck-ai and .opencode/skills/deck-ai in your project.
Going by SKILL.md and its folder, Deck AI needs Python and a shell for the scripts in its folder, the command-line tools its instructions call (bash, python3, npm, brew and pnpm) and credentials named UNSPLASH_ACCESS_KEY. Our summary lists: Node 18 or newer and pnpm; An Unsplash access key in a .env file; A Slidev workspace created by the bundled setup script.
SKILL.md names 2 domains. As links in the text: unsplash.com and sli.dev. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found notes only (mentions a .env file), nothing it rates as a warning. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Deck AI is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.5k tokens (SKILL.md is roughly 5.9k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 444 tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Deck AI: Ky Markdown Rebuilder (KyrieCheungYep/ky-markdown-rebuilder, 117 stars), Slidev CLI Skilld (skilld-dev/vue-ecosystem-skills, 181 stars), Slide Deck Image Generator (SpaceZephyr/design-buddy, 175 stars) and Youtube Notetaker (sickn33/agentic-awesome-skills, 47k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
assafkip (a GitHub user) maintains it in assafkip/kipi-system, which has 112 GitHub stars. The repository holds 14 skills in this directory. The repository was last updated on October 7, 2026.
Source: assafkip/kipi-system on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.