Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Slide Drawer

Slide Drawer

From your writing to a deck — 16:9 HTML slides, exported to PDF or PPTX.
From an existing deck back to editable HTML.

License: MIT GitHub stars GitHub forks

Focus only on writing that keeps a human voice.

Installation · Modes · Examples · Pipeline · Skill anatomy


Why this exists

This came out of two observations.

First, a deck is decided in the writing. On top of prose that already has a voice in it, turning it into slides is close to mechanical work — where to break, what becomes a table, which figure leads, all of it is settled by the text before a single slide exists. There is no reason for a person to keep doing that part by hand. Written down as rules, it is work an AI can take over.

Second, an AI handles HTML far more easily than a PPT file. So the slides are built in HTML, and PDF and PPTX are exported from there.

You write. The skill does the rest.


Installation

Claude Code (recommended)

/plugin marketplace add HiMyNameIsDavidKim/slide-drawer-skill
/plugin install slide-drawer@slide-drawer

Codex, Cursor, Gemini CLI, and other Agent Skills hosts

npx skills add HiMyNameIsDavidKim/slide-drawer-skill

Manual copy

Copy the skills/slide-drawer/ directory into your project's .claude/skills/ folder:

cp -r skills/slide-drawer/ /path/to/your/project/.claude/skills/

Dependencies

pip install playwright pillow python-pptx pymupdf
playwright install chromium

Restoring a PPTX also needs LibreOffice on PATH, for the conversion to PDF. The scripts check their own dependencies and print the install command if one is missing.

Compatible platforms

Claude Code · Cursor · Codex CLI · Gemini CLI · Windsurf · Cline · Continue · Any Agent Skills-compatible host


Modes

Mode Trigger Output
Create "turn this report into a deck" Outline for approval, then HTML + PDF
Revise "fix slide 12", "this card doesn't read well" Targeted edit + partial re-render
Export "give me a PPTX" 13.33×7.5in PPTX, only when asked
Restore "restore this deck", "이 PDF를 HTML로" One semantic HTML file + PDF, at the source's page size

Create runs through an outline gate — a slide-by-slide table is approved before any HTML is written. Which slides exist, what each one says, and which component carries it are settled there, so the writing that follows is the only thing left to judge.


Examples

Create — a report becomes a deck

The source is an ordinary engineering write-up. examples/ci-build-times.md, 815 words of prose:

## Where the time went

The pipeline has four stages, and they are not close to each other in cost.

| Stage | p50 | Share |
|---|---|---|
| install | 8m 30s | 71% |
...

Install dominates. It restores dependencies for twelve workspaces, and it was
missing its cache on roughly two runs out of three — a 31% hit rate over the
measurement window.

The outline gate comes first. Nothing is written until this table is approved:

# Title One-line point Components
1 (cover) Twelve minutes to under five, across twelve repositories cover
2 Contents toc
3 Where the time went: install is 71% of the run One stage costs more than the other three together accent + bars
4 The four stages What each does, and why it costs what it does table
5 A lockfile describes the repository, not a workspace One lockfile covers all twelve workspaces accent + grid2 + warnbox
6 Rollout: ① flag · ② measure · ③ roll · ④ gate Four steps, one repository first accent + flow + card
7 Result: 4m 40s at p50, from 12m 00s The tail moved further than the median kpis + grid2
8 Summary What we would tell another team grid3 + accent

Then the HTML, rendered and overflow-checked. Four of the eight slides:

Cover slide Bar chart slide
Table slide KPI slide

Full result: ci-build-times.html · ci-build-times.pdf

Revise — a card that reads badly

Revision is mostly one edit repeated: the point is sitting in the first body sentence, and the heading is a topic label. Move the claim up.

✗  ● Where the cache key mattered
   The lockfile does not say what the resolver produced. The key had to be built
   from the resolved list, and the same rule was applied to both the save step and
   the restore step.

✓  ● Resolved by keying on the resolved dependency list
   The same rule was applied to both the save step and the restore step. The
   restore step was verified by replaying last week's builds.

Nothing was deleted — the claim moved to where a skimmer sees it.

Restore — a PDF becomes editable HTML

This one fell out of building the skill. It turned out to be needed far more often than expected, so it became a mode of its own.

No converter script. The pages are read as images and rewritten as semantic HTML — the donut, the table, and the tinted panels are rebuilt in CSS, and the deck keeps the source's own page size.

Original PDF Restored HTML
Original PDF page Restored HTML page

Headings are <h1>, tables are <table>, and nothing that carries meaning stays locked inside an image. Decorative icons and paper texture are dropped on purpose.


Pipeline

source doc ──► outline (approved) ──► deck.html ──► deck.pdf

PDF / PPTX ──► page images ──► (read them) ──► deck.html ──► deck.pdf

The PDF is printed straight from the HTML, so its text stays vector and @page in template.html sets the page size. The deliverable is deck.html and deck.pdf — nothing else.


Skill anatomy

skills/slide-drawer/
├── SKILL.md                    ← Mode routing + delivery self-check
├── references/
│   ├── slide-writing.md        ← The four-question gate, nine failure patterns
│   ├── language-notes.md       ← Per-language line breaking, font stack, pitfalls
│   ├── design-system.md        ← Frame, palette, type scale, components
│   ├── revision-protocol.md    ← Request classification, sync, fallout
│   └── restore-export.md       ← Restore contract, CSS traps, chart recipes
├── assets/
│   └── template.html           ← The design system, runnable
└── scripts/
    ├── render_slides.py        ← HTML → PNG, reports overflow + fill ratio
    └── export_deck.py          ← PNG → PDF | PPTX

Languages

Write the deck in whatever language the source is in. English, Korean, and mixed-script decks are covered today.

Language here is not a translation setting. A Korean deck breaks its lines at different places than an English one, needs a different font stack, and falls into different bad habits — so the skill carries separate notes per language and applies them while writing, not after. Adding a language means writing those notes, not changing the skill.


Two things this skill will not do

A PPTX from here is a picture of your deck, not an editable one. Each slide holds one image, so the text cannot be edited in PowerPoint. Generating real PowerPoint text boxes was tried and dropped — it forbids most of what this design system is built on, and PowerPoint swaps fonts anyway, which shifts every line break in the deck. Exact appearance was worth more than editing you could not trust. To change something, edit the HTML and export again.

There is one theme and you cannot switch it. The palette is contrast-checked and every size in the type scale was measured on a real deck. A theme picker would hand you one more decision at the moment you should be writing.

TBD — planned to take its look from the separate taste skill, rather than adding a picker here.


License

MIT — see LICENSE.


If this skill saves you a revision round, consider giving it a ⭐

⭐ Star · 🍴 Fork · 🐛 Issues · 💬 Discussions

About

Turn your writing into a 16:9 HTML slide deck, exported to PDF or PPTX. Turn an existing PDF or PPTX deck back into editable HTML. Works with Claude Code, Cursor, Codex CLI, Gemini CLI & more. MIT.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages