presentation-decklisted
Install: claude install-skill zerobell-lee/presentation-deck
# Presentation Deck
Scaffold and maintain a standalone HTML deck: `slides.md` is the natural-language source, `index.html` is the hand-tuned render. Every change is gated by a deterministic harness before an auto-commit.
## Scaffold a new deck
Copy `templates/*` into the target dir, then:
1. `git init && git add -A && git commit -m "chore: scaffold deck"`
2. `npm install` (pulls Playwright for the fit gate) and `npx playwright install chromium`
3. Pick a theme: edit the `<link href="themes/…">` in `index.html` (default `cyber`; also `editorial`, `mono`).
4. `npm run dev` → http://127.0.0.1:4173
## The 9 enforced conventions
1. **Fit gate (1080p hard)** — no dead space / overflow / tiny fonts. Proven by `tools/verify-fit.mjs` (1920×1080 hard, 4K soft), NOT by eyeballing. It measures element geometry (text bboxes + `img`/`video`/`svg`/`canvas`/`iframe` boxes), so an empty placeholder needs a VISIBLE (non-zero-opacity) full-bleed element to register as content — see `references/gotchas.md` #6.
2. **Don't ration slides** — bullet lists over prose; terse noun-endings (`~함/~됨/~임/~있음`). `verify-sync.mjs` flags prose endings.
3. **Bidirectional sync + auto-commit** — patch the one changed `<section class="slide">`; on user approval, auto-commit (one slide = one commit) so the next baseline is clean. Pass `verify-sync` + `verify-fit` before committing.
4. **Playwright is the last resort** — only when the deterministic gates are green yet something still looks off. One server (127