pptx-penfick
Deterministic PPT renderer: JSON outline → .pptx + QA. Agent owns research and outline content; CLI owns layout, CJK fonts, and validity.
CLI command:
pptx-penfick(aliaspptskillif installed that way). Requires the CLI package installed (see skill README).
Iron laws (follow every deck job)
- Output only under the current project/workspace (
cwdor the project the user named). Never%USERPROFILE%/ Desktop unless the user asks. - User materials first — if facts/structure/numbers are provided, do not web-search; fill gaps by asking one question or marking 示意.
- Never copy facts/numbers/segments/people from example outlines into another topic. Do not open
examples/during generation jobs when you already know the schema. - Before render:
pptx-penfick validatethenpptx-penfick content-check(use--expect-pageswhen the user asked for N pages;--allowonly if the topic truly includes a deny term). - Deliver the
.pptx: sayPPT 已生成+ absolute path + one-line summary; callpresent_files(or attach) with the.pptxfirst if the host has it. Never end on outline/QA only. - If you cannot inspect PNGs, still run
qa --visualand say 「仅结构/几何 QA,未做像素级目检」 in the reply.
Workflow
- Clarify topic, page count, audience, language, theme (发布会→dark-keynote;汇报→light-corporate;课件→education-blue;路演→pitch-green).
- Output dir under the project:
<project>/<slug>/(outline, assets, qa, pptx). - Research policy: materials first (Iron laws). Unverified numbers → 示意.
- Draft outline JSON — one thesis per slide; prefer
chart/image_text/compare/kpi; every slidenotes. - Assets (if
image_text): local files →pptx-penfick assets import …→assets check. - Validate + content-check:
pptx-penfick validate outline.json pptx-penfick content-check outline.json --expect-pages 15 - Render:
pptx-penfick render outline.json -o <path>.pptx(optional--ensure-contrast). - QA:
pptx-penfick qa out.pptx --visual --json qa-report.jsonthenexport-pngif needed;update-slideto fix. - Deliver per Iron law 5.
Slide types (summary)
cover · agenda · section · title_body · two_col · timeline · data_cards · chart · image_text · compare · kpi · quote · closing
Themes: dark-keynote · light-corporate · education-blue · pitch-green · minimal-mono · finance-navy · warm-editorial
Custom theme JSON / per-slide theme / theme_tokens / logo extract / theme fix — see CLI: pptx-penfick --help, pptx-penfick themes.
CLI reference
pptx-penfick validate <outline.json>
pptx-penfick content-check <outline.json> [--expect-pages N] [--allow terms]
pptx-penfick render <outline.json> -o out.pptx [--theme …] [--ensure-contrast]
pptx-penfick qa <out.pptx> [--visual] [--json report.json]
pptx-penfick export-png <out.pptx> --out-dir qa/
pptx-penfick update-slide <outline.json> --index N --patch patch.json
pptx-penfick assets check|import …
pptx-penfick theme extract|fix …
pptx-penfick themes
Exit codes: 0 ok · 2 schema · 3 render/export · 4 QA / content-check failed.
MCP: pptskill-mcp / python -m pptskill.mcp_server.
Out of scope
- CLI image download/generation (agent may fetch then
assets import) - Vision auto-fix loop
- In-place edit of existing
.pptx