deck-craft
Build projection-ready, content-dense, high-quality presentation decks from source
material, through a disciplined pipeline: understand → unify the information spine →
ready the environment & fonts → research-design round → build → render QA →
per-page expert polish → de-AI-ify → speaker script → speaker notes. The output is
a .pptx (plus a PDF for sharing, and an optional notes version) that reads
cleanly when projected and tells one coherent story.
This skill encodes a complete, reusable design system in scripts/deck_kit.py and
the methodology in references/. Read this body for what to do and when; go to the
referenced files for the detail.
1. When to use / not use
This skill is oriented to Chinese / mixed CJK-latin projection decks (the divider
chapter labels and the like are localizable to English; see §3 P-build and the
CHAPTER_LABEL token in deck_kit.py).
The dividing line is the kind of work, not just the trigger words:
- Light, single-
.pptx read/write or mechanical generation (parse a deck, pull
its text, emit one slide from data, drop comments in, split/merge files): use the
pptx skill. It is the right tool when no narrative design or per-page polish is
needed.
- Research-driven narrative + per-page expert polish + projection typography +
de-AI-ified report-grade deck (turn a pile of research / interview / report
material into one coherent, projection-facing story, then iterate it to high
quality): use this skill. That is the report-grade case the whole pipeline
below exists for.
- If you have a more general-purpose slide pipeline available, reach for this skill
specifically when the deck must be content-dense, projection-readable (16 pt body
floor), and free of AI tone.
Not for: a single one-off diagram, a plain data-table export, or a one- or
two-spot tweak to an existing deck.
2. Core principles (three invariants)
- Projection floor: body >= 16 pt; quiet luxury. A 13.333 in canvas on a 2–4 m
screen viewed from 3–8 m has a far smaller visual angle than a web page at arm's
length, so any text carrying real information stays >= 16 pt. The look is white /
near-white foundation (~90%) + a neutral grey scale + ONE desaturated accent used
only as garnish (<5% area), with no full-page color blocks.
- findings-first. Introduce the object objectively (what it is, what's there,
what's good) BEFORE diagnosing it. "If you don't introduce it, how can you talk
about its flaws?" The arc is introduce → diagnose → improve → close.
- Iterate only on the real render, never on an imagined one. python-pptx is
invisible; CJK fallback, overflow, and line-breaks only show up rendered. Render
after every layout-affecting change and look before judging.
3. The nine-step pipeline (P0–P9)
Match the ceremony to the task size. A 5–10 page small deck trims P3 and P6:
build directly with deck_kit.py and do one self-review round; the "lead self-builds
and self-verifies" lines below are about who owns quality, not a ban on a quick path.
Only a content-dense large report walks the full parallel-expert flow. Default for a
real report is the whole pipeline; full detail and the WHY of each step is in
references/pipeline.md.
- P0 · Understand the domain (lead agent, not outsourced): read the course /
brand / business material, align on audience and taste, output a short alignment
note. Building context yourself is what lets you judge and synthesize.
- P1 · Absorb sources + lock the information spine (lead): convert all sources
to md, read each, find framework conflicts, and lock ONE backbone (others map
under it). A deck's quality is first its information architecture. See
references/content_and_narrative.md.
- P2 · Environment & fonts ready (lead): verify python-pptx / Pillow / render
chain; install premium fonts and render-test Regular + Bold before a full
build. Run
scripts/install_fonts.sh; see references/build_and_qa.md §7. No
network? install_fonts.sh now skips the download and you fall back to an
installed system CJK font (macOS PingFang SC, or an already-installed 思源 / Source
Han); point deck_kit.py's SANS/SERIF at it and render-verify.
- P3 · Research-design round: write a per-round planning doc, then launch three
parallel experts in ONE message (design-system [load practical-ui if present] ‖
content & narrative [findings-first] ‖ image audit [verify every image]); each persists an
md; then the lead writes the synthesis doc itself (per-page asset assignment +
build increments). See
references/{design_system,content_and_narrative,image_audit}.md.
- P4 · Build: prefer the lead self-building the script with
scripts/deck_kit.py
(see scripts/example_build.py for the pattern, including cards() / compare()
and the multi-chapter dispatch loop). The lead holding the script is what drives
the per-page iteration. If you outsource, force the sub-agent to persist the script
to a file and save incrementally (a build sub-agent once dropped its socket having
saved nothing).
- P5 · Render QA:
soffice → pdf → pdftoppm → PIL overview; look at high-risk
layouts first. Run scripts/render_qa.py deck.pptx. No LibreOffice? Open the
.pptx in PowerPoint or Keynote and export a PDF (or per-slide thumbnails), then
eyeball those instead. See references/build_and_qa.md.
- P6 · Per-page expert polish: split pages into bands, launch several review
experts in parallel (each loads practical-ui if present, uses the design system as
yardstick, returns pixel-level findings); the lead verifies findings itself, rejecting
false positives and taking only real ones, then fixes, re-renders, and runs a
regression round. The gate to clear: at least one parallel review round plus one
regression round, with no open P0/P1.
- P7 · De-AI-ify: load humanizer-zh (op7418's public MIT skill; if it isn't
installed, install it on demand with
npx skills add op7418/Humanizer-zh and load
it — if you truly can't, run references/humanize.md's deck-specific checklist by
hand); edit layout-coupled deck text yourself (re-render to watch length); change
HOW it's said not WHAT (prove technical content unchanged with grep); second
self-check so you don't swap one AI pattern for another. See references/humanize.md.
- P8 · Speaker script: if the user hand-edited the deck, extract real per-page
text from the LATEST file (the build script is now stale); write a spoken,
----paginated, emphasis-marked script; deliver the MD for confirmation BEFORE
inserting.
- P9 · Insert speaker notes: run
scripts/insert_notes.py (drops headings +
〔...〕 cues, splits the body on blank lines into paragraphs, converts **bold**,
asserts segment==slide count, writes a NEW file).
4. Sub-agent orchestration
This section assumes a Claude Code-style harness (parallel sub-agents; the Skill
tool). On any other agent runtime, read these as their semantic equivalents:
"sub-agents" → background or delegated sub-tasks, and "load a Skill via the Skill
tool" → load the corresponding capability. The method is unchanged; only the
mechanism's name is.
- Research round (P3): three parallel experts in one message, all blocking
(design ‖ content ‖ image audit). Write the per-round planning doc first so all
three align on background, locked decisions, source paths, and output contract.
- Review rounds (P6): several parallel review experts, each prompted to (1) if
practical-ui is installed, load it via the Skill tool as the usability yardstick
— it is a copyrighted-book adaptation this skill does not bundle, so when it is
absent fall back to this skill's own quiet-luxury / contrast / hierarchy principles
(references/design_system.md); (2) read the design system as the yardstick, (3)
return page/location/severity findings.
- The lead must verify review findings itself. Fix observed problems, not
reported ones; reject unfounded reports (a "slide N font too small (P0)" that the
render disproves) and take only real, actionable items.
- Heavy build: prefer the lead self-holding context and self-building. If
outsourced, require "persist the script to a file before continuing, save
incrementally".
Parallel = N Agent calls in ONE message, all blocking. One call per message =
serial. Independent → parallel; dependent → serial. Full table in
references/pipeline.md.
5. Quality gates (checklists)
Full version with the "why" in references/norms_and_lessons.md §E. Quick form:
Before build: [ ] lead read all sources itself · [ ] frameworks unified into
one backbone · [ ] narrative is findings-first (setup chapter before diagnosis) ·
[ ] image-audit list done (figure ≠ file) · [ ] type scale locked (body >= 16 pt) ·
[ ] copy written plain (no AI tells) · [ ] premium fonts installed + render-verified
(or system-font fallback chosen if no network) · [ ] content tied to course/audience
theory · [ ] names only on the cover · [ ] heavy build self-built (or sub-agent
persists early).
After build: [ ] every layout change re-rendered and eyeballed (no LibreOffice
→ PowerPoint/Keynote PDF or thumbnails) · [ ] per-band parallel review experts (each
loads practical-ui if present, else the built-in design system) · [ ] lead verified high-impact findings, rejected false
positives · [ ] render chain macOS/zsh-safe · [ ] at least one review round plus one
regression round, no open P0/P1.
Before delivery: [ ] de-toning second self-check (no pattern swapped for
another) · [ ] versioning _vN.M, archive old, new file for user-edited files · [ ]
known boundaries/risks listed with a fallback (font fallback → PDF; no LibreOffice →
PowerPoint/Keynote) · [ ] citations verified if any.
6. Norms quick-reference (the full list)
These 13 norms are the deck-making domain knowledge; the full requirement / why /
how for each is in references/norms_and_lessons.md §A.
- findings-first: introduce before you critique.
- De-name: member names only on the cover role cards; never per-page kickers.
- Chapter divider per chapter, with a "chapter X of N" progress indicator.
- Body >= 16 pt: projection floor; dense tables 14 pt is the only exception.
- Premium fonts: Noto Serif SC (titles) + Noto Sans SC (body) + Inter
(numbers); install and render-test both weights before a full build.
- Verify every image by eye: figure number ≠ file number; contact sheet +
full-res check; only verified images with corrected captions.
- Simplified cover: white, restrained, accent as garnish.
- Minimal ending: one centered serif line on white; references moved out.
- Design yardstick — practical-ui if present, else built-in: if
practical-ui
is installed, load it as the usability yardstick; it is a copyrighted-book
adaptation this skill does not bundle, so when absent, use this skill's own
quiet-luxury color, accent <5%, no full-page color blocks (design_system.md).
- Per-page expert polish, not one-and-done: render → parallel review → lead
verifies → fix → re-render → regression; iterate to no open P0/P1.
- De-AI-ify with humanizer-zh: op7418's public MIT skill — install it on demand
if absent (
npx skills add op7418/Humanizer-zh), else run humanize.md's
deck-specific checklist by hand; change how not what; prove technical content
unchanged with grep; second self-check.
- Speaker script: extract from the real .pptx;
--- per page; spoken,
emphasis-marked; confirm the MD before inserting.
- Insert notes, spoken body only: drop headings & 〔...〕; convert bold;
segment==slide assertion; write a new file.
This skill carries its own working discipline, self-contained (it needs no external
rule files): understand before you act, audit before you execute, back up before
irreversible rework, re-render on every visual change and judge only the real render,
keep the palette desaturated (quiet luxury), make every iteration state its benefit,
resolve multi-source conflicts by authority level, use four-zone directories with
_vN.M versioning, and verify any citation before delivery. How each plays out in
deck work is in references/norms_and_lessons.md §B.
7. Quick start
A typical run: read the user's source material yourself, lock the spine, set the
accent token, then drive the build from data.
Work in your own project, not the skill folder. Copy deck_kit.py (and the
example_build.py skeleton) into your project's working area and write your build
script there. Leave the files under the skill directory untouched so the skill stays
clean for the next deck.
bash scripts/install_fonts.sh (once), then render the example and confirm
Regular vs Bold are distinct: python3 scripts/example_build.py && python3 scripts/render_qa.py scripts/example_deck.pptx.
- Copy
deck_kit.py into your project's working area, drop the
example_build.py skeleton beside it, set dk.set_accent("#XXXXXX") and
dk.FOOTER_TEXT, and replace the EXAMPLE content with your outline (see
assets/content_outline.schema.md).
- Build →
python3 render_qa.py your_deck.pptx → read /tmp/qa/overview.png
→ fix → re-render. Iterate per §3 P6.
- Speaker script →
python3 insert_notes.py --md script.md --src deck.pptx --out deck_with_notes.pptx.
Scripts (scripts/): deck_kit.py (the reusable design-system library, the
heart), example_build.py (a worked example with cards/compare + a multi-chapter
loop), insert_notes.py, render_qa.py, contact_sheet.py, install_fonts.sh.
References (references/): pipeline.md, design_system.md, build_and_qa.md,
image_audit.md, content_and_narrative.md, humanize.md, norms_and_lessons.md.
Versioning: non-destructive. New versions go as _vN.M to the deliverables zone,
superseded versions to the archive zone, and a user-edited file is always copied to
a new file, never overwritten.
1---2name: deck-craft3description: 从源材料出发、端到端打造投影就绪的高质量 .pptx 演示成片,覆盖设计系统、python-pptx 构建、逐页专家精修、去 AI 味、演讲逐字稿与备注。当用户要做 PPT / 幻灯片 / 演示文稿 / 课程或工作汇报 / slide deck / presentation,尤其是内容密集、面向投影、要求「高质量 / 精修 / 专业 / 不要 AI 味」的报告型 deck,或要把调研材料整合成一套有叙事的幻灯片、需要中文排版与思源字体、需要演讲稿时,都应使用本技能;即便用户只说「帮我做个 PPT」或「把这些材料做成汇报」也要触发。本技能面向中文及中英混排、输出 .pptx 的投影 deck。判定分界:如果用户要的是内容密集、需要逐页精修、需要去 AI 味的报告型 .pptx deck,用本技能;如果只是单页简单图、纯数据表格导出、机械生成单个 .pptx,或已有 deck 仅做一两处微调,则不适用(轻量单文件 .pptx 读写改用公开的 pptx 技能)。4license: Apache-2.0. LICENSE.txt has complete terms5---67# deck-craft89Build projection-ready, content-dense, high-quality presentation decks from source10material, through a disciplined pipeline: understand → unify the information spine →11ready the environment & fonts → research-design round → build → render QA →12per-page expert polish → de-AI-ify → speaker script → speaker notes. The output is13a `.pptx` (plus a PDF for sharing, and an optional notes version) that reads14cleanly when projected and tells one coherent story.1516This skill encodes a complete, reusable design system in `scripts/deck_kit.py` and17the methodology in `references/`. Read this body for what to do and when; go to the18referenced files for the detail.1920## 1. When to use / not use2122This skill is oriented to **Chinese / mixed CJK-latin projection decks** (the divider23chapter labels and the like are localizable to English; see §3 P-build and the24`CHAPTER_LABEL` token in `deck_kit.py`).2526The dividing line is the **kind of work**, not just the trigger words:2728- **Light, single-`.pptx` read/write or mechanical generation** (parse a deck, pull29 its text, emit one slide from data, drop comments in, split/merge files): use the30 `pptx` skill. It is the right tool when no narrative design or per-page polish is31 needed.32- **Research-driven narrative + per-page expert polish + projection typography +33 de-AI-ified report-grade deck** (turn a pile of research / interview / report34 material into one coherent, projection-facing story, then iterate it to high35 quality): use **this** skill. That is the report-grade case the whole pipeline36 below exists for.37- If you have a more general-purpose slide pipeline available, reach for this skill38 specifically when the deck must be content-dense, projection-readable (16 pt body39 floor), and free of AI tone.4041**Not for:** a single one-off diagram, a plain data-table export, or a one- or42two-spot tweak to an existing deck.4344## 2. Core principles (three invariants)45461. **Projection floor: body >= 16 pt; quiet luxury.** A 13.333 in canvas on a 2–4 m47 screen viewed from 3–8 m has a far smaller visual angle than a web page at arm's48 length, so any text carrying real information stays >= 16 pt. The look is white /49 near-white foundation (~90%) + a neutral grey scale + ONE desaturated accent used50 only as garnish (<5% area), with no full-page color blocks.512. **findings-first.** Introduce the object objectively (what it is, what's there,52 what's good) BEFORE diagnosing it. "If you don't introduce it, how can you talk53 about its flaws?" The arc is introduce → diagnose → improve → close.543. **Iterate only on the real render, never on an imagined one.** python-pptx is55 invisible; CJK fallback, overflow, and line-breaks only show up rendered. Render56 after every layout-affecting change and look before judging.5758## 3. The nine-step pipeline (P0–P9)5960**Match the ceremony to the task size.** A 5–10 page small deck trims P3 and P6:61build directly with `deck_kit.py` and do one self-review round; the "lead self-builds62and self-verifies" lines below are about who owns quality, not a ban on a quick path.63Only a content-dense large report walks the full parallel-expert flow. Default for a64real report is the whole pipeline; full detail and the WHY of each step is in65`references/pipeline.md`.6667- **P0 · Understand the domain** (lead agent, not outsourced): read the course /68 brand / business material, align on audience and taste, output a short alignment69 note. Building context yourself is what lets you judge and synthesize.70- **P1 · Absorb sources + lock the information spine** (lead): convert all sources71 to md, read each, find framework conflicts, and lock ONE backbone (others map72 under it). A deck's quality is first its information architecture. See73 `references/content_and_narrative.md`.74- **P2 · Environment & fonts ready** (lead): verify python-pptx / Pillow / render75 chain; install premium fonts and **render-test Regular + Bold before a full76 build**. Run `scripts/install_fonts.sh`; see `references/build_and_qa.md` §7. No77 network? `install_fonts.sh` now skips the download and you fall back to an78 installed system CJK font (macOS PingFang SC, or an already-installed 思源 / Source79 Han); point `deck_kit.py`'s SANS/SERIF at it and render-verify.80- **P3 · Research-design round**: write a per-round planning doc, then launch three81 parallel experts in ONE message (design-system [load practical-ui if present] ‖82 content & narrative [findings-first] ‖ image audit [verify every image]); each persists an83 md; then the **lead writes the synthesis doc itself** (per-page asset assignment +84 build increments). See `references/{design_system,content_and_narrative,image_audit}.md`.85- **P4 · Build**: prefer the lead self-building the script with `scripts/deck_kit.py`86 (see `scripts/example_build.py` for the pattern, including `cards()` / `compare()`87 and the multi-chapter dispatch loop). The lead holding the script is what drives88 the per-page iteration. If you outsource, force the sub-agent to persist the script89 to a file and save incrementally (a build sub-agent once dropped its socket having90 saved nothing).91- **P5 · Render QA**: `soffice → pdf → pdftoppm → PIL overview`; look at high-risk92 layouts first. Run `scripts/render_qa.py deck.pptx`. No LibreOffice? Open the93 `.pptx` in PowerPoint or Keynote and export a PDF (or per-slide thumbnails), then94 eyeball those instead. See `references/build_and_qa.md`.95- **P6 · Per-page expert polish**: split pages into bands, launch several review96 experts in parallel (each loads practical-ui if present, uses the design system as97 yardstick, returns pixel-level findings); the **lead verifies findings itself**, rejecting98 false positives and taking only real ones, then fixes, re-renders, and runs a99 regression round. The gate to clear: **at least one parallel review round plus one100 regression round, with no open P0/P1.**101- **P7 · De-AI-ify**: load humanizer-zh (op7418's public MIT skill; if it isn't102 installed, install it on demand with `npx skills add op7418/Humanizer-zh` and load103 it — if you truly can't, run `references/humanize.md`'s deck-specific checklist by104 hand); edit layout-coupled deck text yourself (re-render to watch length); change105 HOW it's said not WHAT (prove technical content unchanged with grep); **second106 self-check** so you don't swap one AI pattern for another. See `references/humanize.md`.107- **P8 · Speaker script**: if the user hand-edited the deck, extract real per-page108 text from the LATEST file (the build script is now stale); write a spoken,109 `---`-paginated, emphasis-marked script; deliver the MD for confirmation BEFORE110 inserting.111- **P9 · Insert speaker notes**: run `scripts/insert_notes.py` (drops headings +112 〔...〕 cues, splits the body on blank lines into paragraphs, converts `**bold**`,113 asserts segment==slide count, writes a NEW file).114115## 4. Sub-agent orchestration116117> This section assumes a Claude Code-style harness (parallel sub-agents; the Skill118> tool). On any other agent runtime, read these as their semantic equivalents:119> "sub-agents" → background or delegated sub-tasks, and "load a Skill via the Skill120> tool" → load the corresponding capability. The method is unchanged; only the121> mechanism's name is.122123- **Research round (P3):** three parallel experts in one message, all blocking124 (design ‖ content ‖ image audit). Write the per-round planning doc first so all125 three align on background, locked decisions, source paths, and output contract.126- **Review rounds (P6):** several parallel review experts, each prompted to (1) if127 `practical-ui` is installed, load it via the Skill tool as the usability yardstick128 — it is a copyrighted-book adaptation this skill does not bundle, so when it is129 absent fall back to this skill's own quiet-luxury / contrast / hierarchy principles130 (`references/design_system.md`); (2) read the design system as the yardstick, (3)131 return page/location/severity findings.132- **The lead must verify review findings itself.** Fix observed problems, not133 reported ones; reject unfounded reports (a "slide N font too small (P0)" that the134 render disproves) and take only real, actionable items.135- **Heavy build:** prefer the lead self-holding context and self-building. If136 outsourced, require "persist the script to a file before continuing, save137 incrementally".138139Parallel = N Agent calls in ONE message, all blocking. One call per message =140serial. Independent → parallel; dependent → serial. Full table in141`references/pipeline.md`.142143## 5. Quality gates (checklists)144145Full version with the "why" in `references/norms_and_lessons.md` §E. Quick form:146147**Before build:** [ ] lead read all sources itself · [ ] frameworks unified into148one backbone · [ ] narrative is findings-first (setup chapter before diagnosis) ·149[ ] image-audit list done (figure ≠ file) · [ ] type scale locked (body >= 16 pt) ·150[ ] copy written plain (no AI tells) · [ ] premium fonts installed + render-verified151(or system-font fallback chosen if no network) · [ ] content tied to course/audience152theory · [ ] names only on the cover · [ ] heavy build self-built (or sub-agent153persists early).154155**After build:** [ ] every layout change re-rendered and eyeballed (no LibreOffice156→ PowerPoint/Keynote PDF or thumbnails) · [ ] per-band parallel review experts (each157loads practical-ui if present, else the built-in design system) · [ ] lead verified high-impact findings, rejected false158positives · [ ] render chain macOS/zsh-safe · [ ] at least one review round plus one159regression round, no open P0/P1.160161**Before delivery:** [ ] de-toning second self-check (no pattern swapped for162another) · [ ] versioning `_vN.M`, archive old, new file for user-edited files · [ ]163known boundaries/risks listed with a fallback (font fallback → PDF; no LibreOffice →164PowerPoint/Keynote) · [ ] citations verified if any.165166## 6. Norms quick-reference (the full list)167168These 13 norms are the deck-making domain knowledge; the full requirement / why /169how for each is in `references/norms_and_lessons.md` §A.1701711. **findings-first:** introduce before you critique.1722. **De-name:** member names only on the cover role cards; never per-page kickers.1733. **Chapter divider per chapter,** with a "chapter X of N" progress indicator.1744. **Body >= 16 pt:** projection floor; dense tables 14 pt is the only exception.1755. **Premium fonts:** Noto Serif SC (titles) + Noto Sans SC (body) + Inter176 (numbers); install and render-test both weights before a full build.1776. **Verify every image by eye:** figure number ≠ file number; contact sheet +178 full-res check; only verified images with corrected captions.1797. **Simplified cover:** white, restrained, accent as garnish.1808. **Minimal ending:** one centered serif line on white; references moved out.1819. **Design yardstick — practical-ui if present, else built-in:** if `practical-ui`182 is installed, load it as the usability yardstick; it is a copyrighted-book183 adaptation this skill does not bundle, so when absent, use this skill's own184 quiet-luxury color, accent <5%, no full-page color blocks (`design_system.md`).18510. **Per-page expert polish, not one-and-done:** render → parallel review → lead186 verifies → fix → re-render → regression; iterate to no open P0/P1.18711. **De-AI-ify with humanizer-zh:** op7418's public MIT skill — install it on demand188 if absent (`npx skills add op7418/Humanizer-zh`), else run `humanize.md`'s189 deck-specific checklist by hand; change how not what; prove technical content190 unchanged with grep; second self-check.19112. **Speaker script:** extract from the real .pptx; `---` per page; spoken,192 emphasis-marked; confirm the MD before inserting.19313. **Insert notes, spoken body only:** drop headings & 〔...〕; convert bold;194 segment==slide assertion; write a new file.195196This skill carries its own working discipline, self-contained (it needs no external197rule files): understand before you act, audit before you execute, back up before198irreversible rework, re-render on every visual change and judge only the real render,199keep the palette desaturated (quiet luxury), make every iteration state its benefit,200resolve multi-source conflicts by authority level, use four-zone directories with201`_vN.M` versioning, and verify any citation before delivery. How each plays out in202deck work is in `references/norms_and_lessons.md` §B.203204## 7. Quick start205206A typical run: read the user's source material yourself, lock the spine, set the207accent token, then drive the build from data.208209**Work in your own project, not the skill folder.** Copy `deck_kit.py` (and the210`example_build.py` skeleton) into your project's working area and write your build211script there. Leave the files under the skill directory untouched so the skill stays212clean for the next deck.2132141. `bash scripts/install_fonts.sh` (once), then render the example and confirm215 Regular vs Bold are distinct: `python3 scripts/example_build.py && python3216 scripts/render_qa.py scripts/example_deck.pptx`.2172. Copy `deck_kit.py` into your project's working area, drop the218 `example_build.py` skeleton beside it, set `dk.set_accent("#XXXXXX")` and219 `dk.FOOTER_TEXT`, and replace the EXAMPLE content with your outline (see220 `assets/content_outline.schema.md`).2213. Build → `python3 render_qa.py your_deck.pptx` → read `/tmp/qa/overview.png`222 → fix → re-render. Iterate per §3 P6.2234. Speaker script → `python3 insert_notes.py --md script.md --src deck.pptx224 --out deck_with_notes.pptx`.225226**Scripts** (`scripts/`): `deck_kit.py` (the reusable design-system library, the227heart), `example_build.py` (a worked example with cards/compare + a multi-chapter228loop), `insert_notes.py`, `render_qa.py`, `contact_sheet.py`, `install_fonts.sh`.229230**References** (`references/`): `pipeline.md`, `design_system.md`, `build_and_qa.md`,231`image_audit.md`, `content_and_narrative.md`, `humanize.md`, `norms_and_lessons.md`.232233**Versioning:** non-destructive. New versions go as `_vN.M` to the deliverables zone,234superseded versions to the archive zone, and a user-edited file is always copied to235a new file, never overwritten.