PPT Office Assistant
Overview
This skill is the orchestrator for a complete PPT creation pipeline. It chains two sub-skills into one seamless workflow:
- ppt-workflow — staged content work: brief → research → outline → planning draft → HTML slide generation → preview.
- html-slide-to-pptx — preset-driven conversion: HTML → editable PPTX with native text boxes, shapes, and QA.
All three skills are installed as siblings under .claude/skills/ in the
session working directory. Reference sub-skills by name, not by absolute path.
The assistant decides when to stop for review, when to extend presets, and how to bridge content planning with preset-compatible HTML structure.
When to use
- User wants a final editable PPTX (not just an outline or plan).
- User says "做个 PPT", "生成演示文稿", "make a deck", "create slides".
- User provides a topic, brief, or source material and expects a deliverable.
- User wants to iterate on slides with preview before committing to PPTX.
Pipeline stages
Stage 1: Clarify Brief ─── ppt-workflow
Stage 2: Research / Context ─── ppt-workflow
Stage 3: Outline ─── ppt-workflow
Stage 4: Planning Draft ─── ppt-workflow
Stage 5: HTML Slide Generation ─── ppt-workflow + preset-awareness
Stage 6: Preview & Review Gate ─── manual checkpoint
Stage 7: Preset Match Check ─── html-slide-to-pptx
Stage 8: Preset Extension ─── html-slide-to-pptx (if needed)
Stage 9: PPTX Conversion ─── html-slide-to-pptx
Stage 10: QA & Delivery ─── html-slide-to-pptx
Core rules
Rule 1: Content first, conversion second
Never skip the planning stages to jump to PPTX. The quality of the final PPT depends on the outline and planning draft, not on the converter.
Rule 1b: All deliverables go under outputs/
Every generated file — HTML slides, PPTX, model JSON, QA reports — must be
written under the session working directory's outputs/ folder. This is the
only directory the product panel scans. Concretely:
- HTML slides →
outputs/slides/slide-NN-*.html - PPTX files →
outputs/slide-NN.pptx - Model dumps →
outputs/slide-NN-model.json - QA reports →
outputs/slide-NN-qa.json
Never write to slides/, output/, or any other top-level directory.
Rule 2: Generate preset-aware HTML
When generating HTML slides in Stage 5, structure the HTML so it can be
converted later. Read references/html-preset-bridge.md before generating
HTML to understand which semantic structures map to existing presets.
Rule 3: Always preview before converting
Stage 6 is a hard gate. Export HTML or PNG, let the user review layout, hierarchy, and content, and only proceed to conversion after confirmation.
Rule 4: No preset, no conversion
If the HTML structure does not match any existing preset, do not force
conversion. First add a new preset (Stage 8), then convert. Read
references/preset-extension-guide.md for the extension process.
Rule 5: QA every output
Every generated PPTX must pass through preflight_qa.js. Address fail-level
issues before delivery.
Sub-skills
This orchestrator coordinates two sub-skills. Both are installed alongside
this skill in .claude/skills/:
- ppt-workflow — read its
SKILL.mdandreferences/prompts.mdfor content planning methodology and reusable prompts. - html-slide-to-pptx — read its
SKILL.mdfor conversion commands. Its scripts are in its ownscripts/directory; runnpm cithere on first use, then execute scripts withnode scripts/html_to_pptx.js ...from that directory.
To find a sub-skill's directory, look for the Base directory for this skill:
line that the engine prepends when the skill is invoked, or locate
.claude/skills/<skill-name>/ in the session working directory.
Detailed workflow
Stage 1 — Clarify the brief
Collect minimum necessary inputs:
- topic, audience, purpose
- page-count range
- style or tone
- must-have sections
- whether research is needed
- whether the user wants staged review or fast output
If inputs are sufficient, proceed. If not, ask concise questions.
Stage 2 — Research / Context
Perform fact-finding if:
- the topic depends on current events, statistics, or technical facts
- the user explicitly requests research-backed content
- supplied material is obviously incomplete
Produce a compact research brief with key facts, evidence, and open questions.
Stage 3 — Outline
Generate a structured outline using the pyramid principle:
- conclusion first
- each section has a clear goal
- pages have titles and content points
Output as JSON for downstream processing.
Stage 4 — Planning draft (策划稿)
For each page, produce a planning card:
- page title and goal
- core messages (3-6 points)
- evidence/data sources
- recommended visual treatment (comparison, flow, timeline, data card, card grid, etc.)
- information hierarchy
- keywords to emphasize
Stage 5 — HTML slide generation
Generate HTML slides based on the planning draft. This is the bridge stage.
Before writing HTML:
- Read
references/html-preset-bridge.mdto understand preset-compatible structures. - Classify each page into a slide family (architecture, runtime, cover, comparison, timeline, etc.).
- Use semantic CSS classes that match preset extraction rules where possible.
- Add
data-presetattribute to<body>when targeting a specific preset.
HTML requirements:
- 16:9 aspect ratio (1280×720 or equivalent)
- semantic structure with clear regions (header, title, panels, cards, chips)
- self-contained (inline CSS, no external dependencies)
- previewable in a browser
Export options:
- HTML files for browser preview → write to
outputs/slides/ - PNG screenshots if rendering tools are available → write to
outputs/slides/
Stage 6 — Preview & review gate
Present the generated HTML/PNG to the user for review:
- Is the layout correct?
- Is the information hierarchy clear?
- Is the content expression appropriate?
- Are there overflow or spacing issues?
Wait for explicit confirmation before proceeding. If changes are needed, loop back to Stage 5.
Stage 7 — Preset match check
For each HTML slide, determine if it matches an existing preset:
v9-architecture: header + title + core box + left panel + center stack + right judgement chainai-runtime-page: header + title + lead + input chips + runtime modules + support cards + output chips + base + takeaway
Read the html-slide-to-pptx skill's references/preset-decision-rules.md for
the full decision framework.
Decision outcomes:
- Reuse — same page family, only text/labels changed → proceed to Stage 9
- Extend — same family, minor structural variation → extend preset, then convert
- New preset — different page family → go to Stage 8
Stage 8 — Preset extension (if needed)
When the HTML does not fit any existing preset:
- Read
references/preset-extension-guide.mdfor the complete process. - Implement all three layers: DOM extraction, layout mapping, QA rules.
- Register the new preset in the
html-slide-to-pptxskill'shtml_to_pptx.js. - Test with the actual HTML before proceeding.
Stage 9 — PPTX conversion
First, ensure the html-slide-to-pptx skill environment is ready:
cd .claude/skills/html-slide-to-pptx
npm run check-env
# If dependencies are missing: npm ci
Then run the conversion (from the html-slide-to-pptx skill directory).
All output paths must be relative to the session working directory and placed
under outputs/:
node scripts/html_to_pptx.js outputs/slides/slide-01.html outputs/slide-01.pptx --preset=<preset-name> --dump-model outputs/slide-01-model.json
For multi-slide decks, convert each HTML file separately and note the output
paths. Merge instructions are in references/workflow-pipeline.md.
Stage 10 — QA & delivery
Run preflight QA (from the html-slide-to-pptx skill directory):
node scripts/preflight_qa.js outputs/slide-01-model.json --preset=<preset-name> --report outputs/slide-01-qa.json
Check for:
- text overflow (fail-level)
- title/subtitle collision (high severity)
- chip/card text clipping
- stack height pressure
- insufficient spacing
Address all fail-level issues. Warn-level issues should be reviewed but may be acceptable. Deliver the final PPTX file path(s) to the user.
References
references/workflow-pipeline.md— detailed stage-by-stage pipeline with commandsreferences/html-preset-bridge.md— how to generate HTML that maps to presetsreferences/preset-extension-guide.md— how to add new presets when needed