Humanize ppt
๐จ The open-source Claude Design alternative. ๐ฅ๏ธ Local-first desktop app. ๐ผ๏ธ Your coding agent becomes the design engine: prototypes, landing pages, dashboards, slides, images & video โ real files, HTML/PDF/PPTX/MP4 export. ๐ค Claude Code / Codex / Cursor / Gemini / OpenCode / Qwen & 20+ CLIs via BYOK.
npx -y skills add nexu-io/open-design --skill humanize-pptAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
What its author says it does
Copied from the file, not written here
A presentation system for agent-made PPTs โ born for the talk, not just the template. It turns raw material into an AST (audience-state-transfer) outline with per-page visual-enhancement decisions (image / SVG diagram / video), hands a production brief to a downstream renderer (HTML-PPT skills or native PPTX), then runs a capped 3-round presentation checkup (ๆผ่ฎฒไฝๆฃ) on the rendered deck. It never renders slides itself. Use before generating PPT/HTML slides from raw material, and after rendering when the user says things like "็ป่ฟไปฝ deck ๅๆผ่ฎฒไฝๆฃ" or "PPT ๆธฒๆ่ดจๆฃ". If all you want is one beautiful template page with no outline and no checkup, a rendering skill alone is enough.
The file declares its own license as MIT. That is the authorโs claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
15.6 KB, as published. Nobody here has run it
Humanize PPT
Use this skill when a user wants to turn raw material, notes, voice transcripts, documents, or links into a presentation-ready outline and per-page media decisions before delegating rendering to a downstream skill. Old PPT/PPTX files are not read directly: extract their text first (see scripts/pptx_qa.py's dump/inspect output), then feed that text in as --source. A deck Humanize PPT already rendered goes through --qa-from <rendered.pptx> instead โ the presentation checkup, not brief mode.
Positioning
Humanize PPT is a presentation system, born for the talk: an Outline Director (AST audience-state-transfer โ every page turn moves the audience forward), a Per-Page Visual-Enhancement Director (real image / SVG diagram / Remotion video), a Production Brief Orchestrator, a Presentation Checkup Runner (ๆผ่ฎฒไฝๆฃ; formerly the QA loop, CLI flag still --qa-from), and a Presenter-Mode hand-off. The motivation: HTML-PPT template skills are great at concept display but blow a simple idea into a dozen pretty pages, while a real 90-minute talk is ~30 โ the pretty shell outruns the content density. Humanize closes that gap: it keeps the beauty (rendered natively by the downstream template skill) and makes it presentable โ a line you can stand up and deliver. Downstream template skills own "renders beautifully"; Humanize owns "it's a talk, and someone checked it."
The presentation checkup in one sentence: it does not grade beauty, it grades the outline. It compares every rendered page against its outline page, pulls out the pages that can only be looked at but not spoken from, and keeps going until every page is one the speaker can stand up and present. A failed page, in plain words: a page that holds only a few words and never finishes its point, or a page that fails the audience state transfer it promised (the listener walks out of that page in the same state they walked in). Such a page should not exist; the checkup pulls it out and generates fix instructions.
Humanize is broadly compatible with downstream renderers that can consume plain markdown + JSON. Verified routes are: Chinese HTML โ guizang-ppt-skill; English HTML โ frontend-slides / beautiful-html-templates; native editable PowerPoint โ ppt-master. Other downstreams remain hot-pluggable; support levels live in registry/renderer_registry.json and move only on real output.
It runs before downstream PPT / HTML slide skills and around the post-render presentation checkup. It owns the AST contract, the per-page media decision (does this page need a photo, a system diagram, a 10-second process clip, nothing?), the production brief that the next agent consumes, and the checkup pass on rendered HTML/PPTX. It does not own the rendered deck itself.
There are two human review gates before rendering: the outline preview and the renderer's style gate. HTML routes use Humanize's โฅ4 real-cover --style-gallery. PPT Master already owns a mandatory three-stage Confirm UI with native visual previews, so --renderer ppt-master --style-gallery delegates to that gate and writes style_gallery_plan.json + commands/style-gallery/ppt-master-confirm-ui.md rather than duplicating the catalog.
The user calls Humanize PPT once for the brief, hands the brief to a downstream skill for native rendering, then calls Humanize again with --qa-from <rendered.html|native.pptx> to run the 3-iteration presentation checkup. Each iteration writes qa_report.md, fix_prompt.md, and qa_iteration.json. After 3 rounds with remaining failures, status flips to needs-human.
Humanize PPT never copies a downstream skill's template, never injects custom sections into it, and never post-processes rendered HTML or PPTX. Fixes return to the downstream author source. See references/guizang-production-brief-orchestrator.md and adapters/ppt-master-bridge-notes.md.
For public positioning, describe Humanize PPT as a brief orchestrator that pairs with native downstream renderers. Do not frame it as a renderer itself, and do not present it as a "router" that picks the best visual style for the user โ that decision lives in the brief, the downstream skill's own templates, and the human's review. When a user only wants a pretty template page, that is a rendering-skill job, not a Humanize job: state the choice, not a prohibition.
AST theory
AST means Audience-State-Transfer.
- Audience: who is listening, what they know, what they resist, and why they would keep listening.
- State: the audience state before and after the deck, plus the core tension that blocks the transition.
- Transfer: the slide-by-slide path that moves the audience from initial state to desired state.
Core sentence:
PPT is not an information container. PPT is an audience state-transfer artifact.
Required output contract
For every Humanize PPT run, produce:
deck_brief.mdโ audience, goal, tension, success criteria.ast_outline.mdโ AST map and narrative arc.slide_plan.jsonโ slide-by-slide plan, with per-pagemedia: {image, diagram, video}decision andlayout_hint.speaker_intent.mdโ what the speaker should do on each slide. Downstream skills consume this as the source for their native speaker notes and presenter shell.asset_manifest.mdโ Humanize's per-page material decisions: which page needs which kind of asset (image / diagram / video) and for what purpose.video_slots.jsonโ optional Remotion / HyperFrames / native video insertion plan.style_brief.mdโ visual principle for downstream production.renderer_registry.jsonโ renderer capability snapshot for this run.router_plan.jsonโ selected primary renderer and staged route plan.commands/*.mdโ bounded instructions for each downstream specialist agent.run_manifest.jsonโ final file inventory, route status, and QA status.<renderer>-production-prompt.mdโ the downstream entrypoint. In addition to the HTML routes,ppt-masteremitsppt-master-production-prompt.md+ self-containedppt-master-source.mdand disposableoutputs/ppt-master-handoff/copies.outputs/qa/qa_report.mdโ first-pass QA gate (brief mode) or per-iteration QA findings (QA mode).
QA mode (post-render) additionally produces per iteration:
outputs/qa/fix_prompt.mdโ downstream-skill-actionable fix instructions.outputs/qa/qa_iteration.jsonโ round number, status (iterate/pass/needs-human), unresolved findings, history.
Style-gallery mode (--style-gallery, pre-outline gate) instead produces and stops:
- HTML routes:
style_gallery.htmlplus โฅ4 cover entries. PPT Master: no fake gallery HTML; style selection stays in its native Confirm UI. style_gallery_plan.jsonโ cover candidates for HTML ormode: downstream-confirm-uifor PPT Master.commands/style-gallery/<id>.mdโ cover command for HTML, orppt-master-confirm-ui.mdfor the native gate.
Recommended OPC workflow (v0.6.4)
O โ Outline + Per-Page Media Direction
Humanize PPT: raw material โ AST outline + per-page media decision
(deck_brief.md, ast_outline.md, slide_plan.json, speaker_intent.md,
asset_manifest.md, video_slots.json, style_brief.md)
P โ Native Renderer Invocation (100% downstream)
zh โ guizang-ppt-skill (Style A or B, native; recommended)
en โ frontend-slides / beautiful-html-templates (native; recommended)
pptx โ ppt-master (native DrawingML; explicit --renderer ppt-master)
other HTML-PPT skills โ hot-pluggable, same brief contract
Humanize emits the production prompt and stops. The downstream
skill renders the deck. Humanize does NOT copy templates, does
NOT inject SLIDES_HERE / [ๅฟ
ๅกซ] replacements, does NOT add
postMessage bridges to the rendered HTML.
Q โ Presentation Checkup (ๆผ่ฎฒไฝๆฃ) on the rendered artifact
Humanize --qa-from <rendered.html|native.pptx> reads the output of P,
compares pages against the outline, scans for failure modes
(references/qa-failure-modes.md), writes qa_report.md and
fix_prompt.md, tracks iteration in qa_iteration.json.
Cap: 3 rounds. After cap with remaining findings, status
flips to needs-human.
C โ Complete / Control
Downstream skill native speaker notes + presenter shell + deploy
(Humanize does not own these in v0.6.4 โ the brief tells the
next agent to produce them in the downstream skill's own format)
Rules
v0.6.4 invariants (these are the hard rules; if you break any, you're off the v0.6.4 boundary)
- Humanize is brief-only. It writes the renderer production contract and stops. It does not open, copy, or post-process downstream templates or final HTML/PPTX.
- Downstream renderers are 100% native. The next agent follows the downstream skill's own
SKILL.md. The brief tells the next agent which skill to load, which Style (A/B) to use, which layouts to pick from, and which QA gates must pass โ but it does not carry template internals. - The presentation checkup caps at 3 iterations. Round 4 with remaining fail findings is
needs-human. The loop does not spin forever; it hands the decision back to a human. - Speaker notes and presenter shell โ Humanize produces a baseline
presenter-shell.html; downstream owns the full stage. Humanize owns the semantic source (speaker_intent.md) and now also writesoutputs/presenter/presenter-shell.htmldirectly fromslide_plan.json+speaker_intent.md(usable standalone, even before the downstream deck exists). The downstream skill produces the native speaker notes and fuller presenter console. Humanize does not injectpostMessagebridges or?slide=URL parameters into the rendered HTML. - The production prompt is the downstream entrypoint. It names every support artifact the renderer must read. PPT Master additionally reads
ppt-master-source.md, which freezes the Humanize page story and notes intent without duplicating PPT Master's visual contracts.
Working rules
- Do not let slide renderers consume raw material directly when Humanize PPT can first produce the AST contract.
- Keep the downstream skill as the owner of the full stage view; Humanize's
presenter-shell.htmlis a functional baseline, not a replacement for native consoles. - Absorb AI-writing cleanup principles from humanizer tools, but do not reduce Humanize PPT to text polishing.
- Prefer a small verified workflow over a broad unverified promise.
- For public Skill releases, create/push the repo, install from GitHub locally, run one safe full sample, verify the brief + presentation checkup on the verified known-good checkpoint (https://github.com/LearnPrompt/humanize-ppt/tree/main/examples/03-codex-guizang-native-ink-classic), and only then polish README details.
- For Agent Teams development, emit
router_plan.json,run_manifest.json, boundedcommands/*.md, and the per-renderer production prompt before wiring real downstream Skills. - For WorkBuddy/CodeBuddy team upload packages, do not package demo or rendered HTML outputs as the team zip. The upload zip must mirror a team-plugin structure like
trading-team: root-level.codebuddy-plugin/plugin.json,agents/,skills/,rules/, andsetting.json(plus optionalavatars/,.workbuddy-plugin/,README.md,settings.json). Therules/directory should include a scenario rule file such asrules/<plugin-name>_rules.mdwith frontmatter (description,alwaysApply,enabled,updatedAt,provider) and a<system_reminder>block describing available agents, skills, SOP, and usage requirements. Verify withunzip -lthat the root is notindex.html/assets/screenshots/sourceand is not folder-wrapped unless the target uploader explicitly requires a wrapper directory. - Do not treat HyperFrames/Remotion videos as a single embedded player that replaces PPT content. For Humanize PPT deliverables, video tools are material producers: transitions, explainer clips, before/after comparisons, talking-material inserts, social previews, and fallback stills that fill specific slide needs. The
media.videodecision per page (seeslide_plan.jsonschema) tells the downstream skill which pages want a Remotion clip, for what purpose, and at what duration.
Operational references
references/guizang-production-brief-orchestrator.mdโ canonical brief specification: what<renderer>-production-prompt.mdmust and must not contain.references/qa-failure-modes.md(+ English mirrorreferences/qa-failure-modes.en.md) โ failure-mode catalog for the presentation checkup; code-side source of truth isFAILURE_MODESinscripts/humanize_ppt_v2.py.references/style-gallery-spec.mdโ the--style-gallerycover-style gate.references/renderer-guidance.mdโ per-renderer recommended paths and the known-good checkpoint rules.references/renderer-verification.mdโ per-renderer verification evidence behind the frontmatter one-liners.adapters/ppt-master-bridge-notes.mdโ native PPTX route boundary and OOXML checkup contract.SPEC.mdโ engine technical specification: CLI surface, data flow, output contract, style gallery, checkup, media model, renderer registry.- Full annotated index of all references, adapters, version notes, and helper scripts:
docs/index.md.
Local demo
The recommended stable entrypoint is scripts/humanize_ppt.py (versioned scripts remain as compatibility shims). Full CLI examples โ brief mode, presentation checkup, native PPTX, outline preview, legacy entrypoints โ live in docs/local-demo.md.
--out warning: point --out at a dedicated run directory. Brief mode rebuilds it from scratch every run, but only wipes it automatically when it is missing, empty, or already a previous Humanize PPT run (run_manifest.json / style_gallery_plan.json / outline-preview.md / preview-confirmed.json at its root) โ otherwise it refuses and asks for --force.