PPT Master Skill
⚙️ LOCAL SETUP (this machine): v6.4.0 calls python3 directly (on Windows fall back to python) and no longer assumes a fixed .venv path. This machine's system python3 may be too old (previously 3.9) for the deps, so before running any command (re)create a dedicated environment from this version's requirements.txt and make sure the python3 on PATH resolves to it (or activate the venv first): python3 -m venv "${SKILL_DIR}/.venv" && "${SKILL_DIR}/.venv/bin/pip" install -r "${SKILL_DIR}/requirements.txt". Notes: the old cairosvg/svglib PNG-fallback path is gone in v6.4.0 (no cairo needed). PyMuPDF is pulled only for PDF source conversion and is AGPL-3.0. AI image generation (image_gen.py) needs an .env with a provider key (e.g. OPENAI_API_KEY); without it, skip AI images or use web image search.
PPT Master is a routed presentation workflow. This entry owns global execution discipline and route selection only; each selected route owns its procedure.
Mandatory Load Order
Hard rule — paths before commands: Retain the host-provided absolute
directory containing this file as SKILL_DIR. Per tool call, expand
${SKILL_DIR} and replace any skills/ppt-master/ prefix with it. Never cd,
use CWD, or assume a repo checkout. If unavailable, ask; never search or guess.
- Read this file.
- Run
python3 "${SKILL_DIR}/scripts/attribution_guard.py". Any non-zero result
stops the Skill immediately; do not inspect, repair, or bypass the integrity
gate.
- Read
workflows/routing.md through the concrete
absolute path ${SKILL_DIR}/workflows/routing.md.
- Select exactly one top-level route and its active profile from the routing
authority.
- Read only the resulting runtime authority and its explicitly triggered
supporting documents.
| Selected route / profile |
Runtime authority |
| Generate PPTX — Image to PPTX |
workflows/profiles/image-to-pptx.md; Codex-supported, always Quick |
| Generate PPTX — Beautify |
workflows/profiles/beautify-pptx.md; explicit Quick intent selects Quick, otherwise Default |
| Generate PPTX — ordinary Default |
workflows/generate-pptx.md |
| Generate PPTX — ordinary explicit Quick |
workflows/profiles/quick-generate.md |
| Create Template |
workflows/create-template.md |
| Edit Native PPTX |
workflows/edit-native-pptx.md |
Hard rule — selected authority only: Do not load another top-level route's
procedure after routing. Image to PPTX and Beautify are mutually exclusive;
Image to PPTX activates Quick, while Beautify selects from explicit Quick
intent. Never load both runtimes. Supporting documents refine one route; they
never compete with it.
Authored Expression Range
Reference — not a constraint: what a generated page can carry. Text — inline
emphasis runs, lead-in, kicker, pull quote, hero number, takeaway line. Geometry
— 187 Office presets, Boolean merge, connectors, freeform, page-field and
outline-carrier composition. Image — full-bleed field, editorial crop, shaped
picture, registered layers, scrim and spotlight, cross-page continuity. Paint —
gradients, channel alpha, native shadow and glow, halftone, faceted form.
Recurrence — one cross-page motif varied by page role. Each form's syntax lives
in the selected runtime authority's construction references.
Vocabulary
One meaning per term across every loaded file. Where a word is used in
more than one sense, the sense is named here and the files say which one.
| Term |
Meaning |
| Reference (label) |
A starting sketch the executing role adjusts or replaces freely, with no upstream repair or stated reason; (binding) after a field label removes that freedom |
| Relationships |
The §IX line naming a page's semantic units and their source-stated order / link / parent / membership / contrast / overlap, or none |
| Topology decision |
The per-page yes/no on whether geometry must carry the page's Relationships (topology=yes / topology=no); unrelated to pptx_structure.mode |
pptx_structure.mode |
flat (every object Slide-local) or structured (declared Master/Layout/slot metadata); a packaging route, never information structure |
| Composition |
The §IX Composition line: a Reference for a page's macro composition, hierarchy, and focus |
| Image pattern |
The §VIII column carrying one image-composition suggestion in ordinary words (optionally citing #P/#M ids) |
| Layout |
A PowerPoint Layout under a Master, or the Layout template kind; never a page-composition sketch |
| Device |
An everyday page carrier — card, band, icon-and-label, KPI tile, divider, quote block — recalled in the Executor's device menu |
| Carrier |
What a page unit sits in: a device, an image, or native geometry; the family names are carrier and field, direction and sequence, grouping and ownership, emphasis and annotation. data-pptx-carrier is a structured-slot attribute, not this term. The carrier receipt is the checker's per-page inventory of what was actually drawn |
| Page job |
What one page must do for the reader; the input every carrier, contour, and effect decision is judged against |
| Page field |
One large surface, outline, aperture, or off-canvas contour that organizes zones instead of a card per unit |
| Contour / preset / atom |
A contour is a shape's silhouette; a preset is one of the 187 Office prst contours drawn through preset_shape_svg.py; an atom is one object that compiles to one DrawingML shape |
| Geometry signature |
The retained line page job → composition move → contour / edge language kept per page and compared before the next page |
| Texture (of a block) |
Whether a §IX block is prose, bullets, keywords, or labels; distinct from visual texture (grain, halftone) |
| Anchor |
Two senses: a lock anchor (a deck-wide color, type, or spacing value) and the page_rhythm tag anchor for structural pages |
| Sheet / slice / plate |
A sheet is one generated image holding several elements on a chroma key; a slice is one element cut from it; a plate is a registered full-canvas layer of several non-overlapping objects |
| Module line |
The P<NN> modules: … line written before each page naming the triggered modules it uses |
| Mode |
Named by qualifier: communication mode (how the deck argues), reading mode (consumption_mode), generation_mode (continuous / split), pptx_structure.mode, replication_mode (how a template was created) |
Phase Frame
Every route is one Plan → Do·Check·Act cycle: Plan ends when every authoring
input exists as a file or retained decision; Do authors pages, Check runs the
route's gates, Act repairs at the owning layer (discipline 7), and the cycle
ends at export. Step numbers stay as written.
| Phase |
Default |
Quick |
Edit Native |
Create Template |
| Plan |
Steps 1–5 |
§2 |
§1–4 |
Steps 1–3 |
| Do·Check·Act |
Steps 6–7 |
§3–4 |
§5–7 |
Steps 4–8 |
Global Execution Discipline
- Serial execution — Follow the selected authority's steps in order. A completed non-blocking step may continue directly to the next eligible step.
- Blocking means stop — At every
⛔ BLOCKING gate, wait for explicit user confirmation. Do not decide on the user's behalf.
- No cross-phase bundling — Do not combine work across an unclosed gate. Once the route's final user gate closes, later non-blocking steps may continue automatically.
- Gate before entry — Verify every listed prerequisite before entering a step.
- No speculative execution — Do not prepare later-phase artifacts before their owning step.
- Deterministic routing — Do not add a route-choice question when
routing.md resolves the request. If a route prerequisite is missing, state it and stop that route.
- Act at the owning layer — On failure, repair at the shallowest layer that owns the fault: the page for a page-local issue, the Plan artifact for a roster/spec/resource fault, the owning source artifact for a tool failure; then resume from the route's declared pointer. Do not silently downgrade a required artifact.
Global Communication Rules
- Match the user's language and source language unless the user explicitly overrides it.
- Localize user-facing option labels and explanations. Keep exact enum IDs or field names when needed for precision.
- Keep
design_spec.md section headings and field names in the template's original English; content values may use the user's language.
- Before switching roles, read the corresponding role reference and output:
## [Role Switch: <Role Name>]
📖 Reading role definition: references/<filename>.md
📋 Current task: <brief description>
Repository Compatibility
- This package is a workflow/skill, not a generic application scaffold. Do not create
.worktrees/, tests/, branch workflows, or generic engineering structure by default.
- Keep required workflow, reference, script, and template documentation inside this Skill directory.
- Repository-level documents may point into the package; package runtime files must not depend on repository-level instructions.
- On Windows, if a documented
python3 ... command is unavailable, rerun the same command with python.
- Sponsor information is optional reference material. Read the matching
SPONSORS.md or SPONSORS_CN.md only when the user explicitly requests a model, AI image model, API/provider, or hosted-service recommendation. Never surface sponsor or model recommendations proactively during normal generation, troubleshooting, or quality review.
1---2name: ppt-master3description: AI-driven presentation workflow for generating editable PPTX decks and slides, reconstructing page visuals, creating reusable Brand/Style/Layout/Deck workspaces, filling native PPTX templates, and enhancing finished PPTX files. Use when the user asks to create, generate, reconstruct, regenerate, beautify, redesign, template, fill, or enhance a presentation, PPT, PPTX, slide deck, or courseware — including adding narration or animation to one — requests a presentation-authored narrated/self-running video, or mentions ppt-master.4---56# PPT Master Skill78> **⚙️ LOCAL SETUP (this machine):** v6.4.0 calls `python3` directly (on Windows fall back to `python`) and no longer assumes a fixed `.venv` path. This machine's system `python3` may be too old (previously 3.9) for the deps, so before running any command (re)create a dedicated environment from this version's `requirements.txt` and make sure the `python3` on PATH resolves to it (or activate the venv first): `python3 -m venv "${SKILL_DIR}/.venv" && "${SKILL_DIR}/.venv/bin/pip" install -r "${SKILL_DIR}/requirements.txt"`. Notes: the old `cairosvg`/`svglib` PNG-fallback path is gone in v6.4.0 (no cairo needed). `PyMuPDF` is pulled only for PDF source conversion and is AGPL-3.0. AI image generation (`image_gen.py`) needs an `.env` with a provider key (e.g. `OPENAI_API_KEY`); without it, skip AI images or use web image search.910PPT Master is a routed presentation workflow. This entry owns global execution discipline and route selection only; each selected route owns its procedure.1112## Mandatory Load Order1314**Hard rule — paths before commands**: Retain the host-provided absolute15directory containing this file as `SKILL_DIR`. Per tool call, expand16`${SKILL_DIR}` and replace any `skills/ppt-master/` prefix with it. Never `cd`,17use CWD, or assume a repo checkout. If unavailable, ask; never search or guess.18191. Read this file.202. Run `python3 "${SKILL_DIR}/scripts/attribution_guard.py"`. Any non-zero result21 stops the Skill immediately; do not inspect, repair, or bypass the integrity22 gate.233. Read [`workflows/routing.md`](workflows/routing.md) through the concrete24 absolute path `${SKILL_DIR}/workflows/routing.md`.254. Select exactly one top-level route and its active profile from the routing26 authority.275. Read only the resulting runtime authority and its explicitly triggered28 supporting documents.2930| Selected route / profile | Runtime authority |31|---|---|32| Generate PPTX — Image to PPTX | [`workflows/profiles/image-to-pptx.md`](workflows/profiles/image-to-pptx.md); Codex-supported, always Quick |33| Generate PPTX — Beautify | [`workflows/profiles/beautify-pptx.md`](workflows/profiles/beautify-pptx.md); explicit Quick intent selects Quick, otherwise Default |34| Generate PPTX — ordinary Default | [`workflows/generate-pptx.md`](workflows/generate-pptx.md) |35| Generate PPTX — ordinary explicit Quick | [`workflows/profiles/quick-generate.md`](workflows/profiles/quick-generate.md) |36| Create Template | [`workflows/create-template.md`](workflows/create-template.md) |37| Edit Native PPTX | [`workflows/edit-native-pptx.md`](workflows/edit-native-pptx.md) |3839**Hard rule — selected authority only**: Do not load another top-level route's40procedure after routing. Image to PPTX and Beautify are mutually exclusive;41Image to PPTX activates Quick, while Beautify selects from explicit Quick42intent. Never load both runtimes. Supporting documents refine one route; they43never compete with it.4445---4647## Authored Expression Range4849**Reference — not a constraint**: what a generated page can carry. Text — inline50emphasis runs, lead-in, kicker, pull quote, hero number, takeaway line. Geometry51— 187 Office presets, Boolean merge, connectors, freeform, page-field and52outline-carrier composition. Image — full-bleed field, editorial crop, shaped53picture, registered layers, scrim and spotlight, cross-page continuity. Paint —54gradients, channel alpha, native shadow and glow, halftone, faceted form.55Recurrence — one cross-page motif varied by page role. Each form's syntax lives56in the selected runtime authority's construction references.5758---5960## Vocabulary6162One meaning per term across every loaded file. Where a word is used in63more than one sense, the sense is named here and the files say which one.6465| Term | Meaning |66|---|---|67| **Reference** (label) | A starting sketch the executing role adjusts or replaces freely, with no upstream repair or stated reason; `(binding)` after a field label removes that freedom |68| **Relationships** | The §IX line naming a page's semantic units and their source-stated `order` / `link` / `parent` / `membership` / `contrast` / `overlap`, or `none` |69| **Topology decision** | The per-page yes/no on whether geometry must carry the page's `Relationships` (`topology=yes` / `topology=no`); unrelated to `pptx_structure.mode` |70| **`pptx_structure.mode`** | `flat` (every object Slide-local) or `structured` (declared Master/Layout/slot metadata); a packaging route, never information structure |71| **Composition** | The §IX `Composition` line: a Reference for a page's macro composition, hierarchy, and focus |72| **Image pattern** | The §VIII column carrying one image-composition suggestion in ordinary words (optionally citing `#P`/`#M` ids) |73| **Layout** | A PowerPoint Layout under a Master, or the Layout template kind; never a page-composition sketch |74| **Device** | An everyday page carrier — card, band, icon-and-label, KPI tile, divider, quote block — recalled in the Executor's device menu |75| **Carrier** | What a page unit sits in: a device, an image, or native geometry; the family names are carrier and field, direction and sequence, grouping and ownership, emphasis and annotation. `data-pptx-carrier` is a structured-slot attribute, not this term. The **carrier receipt** is the checker's per-page inventory of what was actually drawn |76| **Page job** | What one page must do for the reader; the input every carrier, contour, and effect decision is judged against |77| **Page field** | One large surface, outline, aperture, or off-canvas contour that organizes zones instead of a card per unit |78| **Contour / preset / atom** | A contour is a shape's silhouette; a preset is one of the 187 Office `prst` contours drawn through `preset_shape_svg.py`; an atom is one object that compiles to one DrawingML shape |79| **Geometry signature** | The retained line `page job → composition move → contour / edge language` kept per page and compared before the next page |80| **Texture** (of a block) | Whether a §IX block is prose, bullets, keywords, or labels; distinct from visual texture (grain, halftone) |81| **Anchor** | Two senses: a lock anchor (a deck-wide color, type, or spacing value) and the `page_rhythm` tag `anchor` for structural pages |82| **Sheet / slice / plate** | A sheet is one generated image holding several elements on a chroma key; a slice is one element cut from it; a plate is a registered full-canvas layer of several non-overlapping objects |83| **Module line** | The `P<NN> modules: …` line written before each page naming the triggered modules it uses |84| **Mode** | Named by qualifier: communication `mode` (how the deck argues), reading mode (`consumption_mode`), `generation_mode` (`continuous` / `split`), `pptx_structure.mode`, `replication_mode` (how a template was created) |8586## Phase Frame8788Every route is one Plan → Do·Check·Act cycle: Plan ends when every authoring89input exists as a file or retained decision; Do authors pages, Check runs the90route's gates, Act repairs at the owning layer (discipline 7), and the cycle91ends at export. Step numbers stay as written.9293| Phase | Default | Quick | Edit Native | Create Template |94|---|---|---|---|---|95| **Plan** | Steps 1–5 | §2 | §1–4 | Steps 1–3 |96| **Do·Check·Act** | Steps 6–7 | §3–4 | §5–7 | Steps 4–8 |9798## Global Execution Discipline991001. **Serial execution** — Follow the selected authority's steps in order. A completed non-blocking step may continue directly to the next eligible step.1012. **Blocking means stop** — At every `⛔ BLOCKING` gate, wait for explicit user confirmation. Do not decide on the user's behalf.1023. **No cross-phase bundling** — Do not combine work across an unclosed gate. Once the route's final user gate closes, later non-blocking steps may continue automatically.1034. **Gate before entry** — Verify every listed prerequisite before entering a step.1045. **No speculative execution** — Do not prepare later-phase artifacts before their owning step.1056. **Deterministic routing** — Do not add a route-choice question when [`routing.md`](workflows/routing.md) resolves the request. If a route prerequisite is missing, state it and stop that route.1067. **Act at the owning layer** — On failure, repair at the shallowest layer that owns the fault: the page for a page-local issue, the Plan artifact for a roster/spec/resource fault, the owning source artifact for a tool failure; then resume from the route's declared pointer. Do not silently downgrade a required artifact.107108## Global Communication Rules109110- Match the user's language and source language unless the user explicitly overrides it.111- Localize user-facing option labels and explanations. Keep exact enum IDs or field names when needed for precision.112- Keep `design_spec.md` section headings and field names in the template's original English; content values may use the user's language.113- Before switching roles, read the corresponding role reference and output:114115```markdown116## [Role Switch: <Role Name>]117📖 Reading role definition: references/<filename>.md118📋 Current task: <brief description>119```120121---122123## Repository Compatibility124125- This package is a workflow/skill, not a generic application scaffold. Do not create `.worktrees/`, `tests/`, branch workflows, or generic engineering structure by default.126- Keep required workflow, reference, script, and template documentation inside this Skill directory.127- Repository-level documents may point into the package; package runtime files must not depend on repository-level instructions.128- On Windows, if a documented `python3 ...` command is unavailable, rerun the same command with `python`.129- Sponsor information is optional reference material. Read the matching [`SPONSORS.md`](SPONSORS.md) or [`SPONSORS_CN.md`](SPONSORS_CN.md) only when the user explicitly requests a model, AI image model, API/provider, or hosted-service recommendation. Never surface sponsor or model recommendations proactively during normal generation, troubleshooting, or quality review.