Create, edit, inspect, render, and validate editable Microsoft PowerPoint (.pptx) presentations, and import legacy binary .ppt files through verified conversion to .pptx. Use for native PowerPoint creation, modification, template inheritance, charts, tables, images, legacy .ppt migration, and slide-level quality assurance. Do not use for HTML/browser presentations or Google Slides.
79
100%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Create and modify native PowerPoint files through a reproducible JavaScript workflow. Keep the .mjs builder, render every final slide, and fix structural and visual defects before delivery.
scripts/pptx.sh workflow.python-pptx, @oai/artifact-tool, Google Slides APIs, or an HTML-to-PPTX authoring path..pptx output unless the user explicitly requests replacement.deliver for the last build or verification so the PPTX hash, coverage, audit, render, and seal all refer to the same artifact. Do not edit or rebuild after the final report.|| true, suppress stderr, or otherwise bypass deliver. A file is final only when delivery.status and delivery.seal.status are both passed.audit warnings. Fix genuine defects; explicitly disposition verified false positives, intentional overlaps, and accepted renderer limitations. Every disposition must bind to the exact PPTX SHA-256 and include a concrete reason and visual evidence..ppt, has an ambiguous extension, or was created by PowerPoint 97–2003.Resolve the directory containing this file as PPTX_SKILL_ROOT, then use:
PPTX="$PPTX_SKILL_ROOT/scripts/pptx.sh"
bash "$PPTX" check || bash "$PPTX" fixUse the turn-scoped PilotDeck work directory for every intermediate. The host sets PILOTDECK_WORK_DIR; the fallback keeps manual runs internal to the project:
WORKSPACE="${PILOTDECK_WORK_DIR:-$PWD/.pilotdeck/work/manual/<task-slug>}/pptx"
mkdir -p "$WORKSPACE/tmp" "$WORKSPACE/qa"Put the builder, converted inputs, source notes, renders, manifests, maps, candidates, and QA reports in WORKSPACE. Put only the requested final deliverables in the project or user-selected output directory. Never create .pilotdeck_build.mjs, QA directories, or other intermediates beside the user's files. Do not conceal scratch files with Git ignore changes.
Choose exactly one route:
.ppt input: preserve it, convert it once to a verified temporary .pptx, inspect the paired renders, and use only the converted .pptx downstream.Use frontend-slides instead when the requested output is a browser-based HTML presentation or a PPTX-to-web conversion. Never route a native Google Slides request through this skill.
Write one sentence that states the audience, desired outcome, and single most important takeaway. Then create a slide plan with one job per slide. Prefer a coherent argument over a collection of facts.
Plan visuals together with the narrative. Use one strong image, chart, table, or simple diagram only when it improves comprehension. Do not repeat the same image except as a background. Avoid presentation pages that resemble dashboards, settings screens, or grids of UI cards.
When no template controls typography, resolve a locale profile with resolveDesignTokens. Use cross-platform-zh for unspecified simplified-Chinese or mixed-language delivery and cross-platform-en for English. Use a platform-specific profile only when the target platform is known. Shorten copy or change the layout before shrinking type below the selected density profile.
When the user supplies exact values, required phrases, mandatory sections, or benchmark criteria, create a lightweight requirements file before authoring. Mark only genuinely blocking items as critical; keep preferred details recommended so the Harness does not over-constrain creative work.
Prioritize a complete, correct, editable, and auditable deck over repeated visual refinement. API or tool waiting time is not a reason to stop an otherwise progressing task.
audit and render the full deck. Fix critical content, overflow, clipping, and unintended overlap before aesthetic details.Do not pass .ppt directly to OOXML inspection or template editing. Convert and verify it first:
bash "$PPTX" convert \
--input "$SOURCE_PPT" \
--out "$WORKSPACE/tmp/source-converted.pptx" \
--qa-dir "$WORKSPACE/legacy-conversion-qa"Inspect the source and converted montages and the conversion report. Page-count or structural failure blocks use. A visual-difference or legacy-feature warning requires review but does not claim that the .ppt was converted losslessly. Keep the original .ppt; final output remains .pptx.
Create the executable builder:
bash "$PPTX" scaffold --out "$WORKSPACE/tmp/deck.mjs"Edit the builder so its default export receives the PilotDeck toolkit and returns a PptxGenJS presentation. Use plain .mjs; do not add a transpiler. Resolve design tokens for the content language, pass the same tokens to createDeck and layout functions, and set PptxGenJS objectName values for anything likely to be edited later.
Build the PPTX:
bash "$PPTX" build \
--builder "$WORKSPACE/tmp/deck.mjs" \
--out "$FINAL_PPTX"Use the bundled layout registry and design tokens only when no stronger visual source exists:
assets/layout-library/template-registry.jsonassets/layout-library/design-tokens.jsonassets/layout-library/layouts/core.mjsDo not fill a deck with every available layout. Select the smallest set that supports the story and vary the slide silhouette across the deck.
Inspect and render the complete source deck before mapping output slides:
bash "$PPTX" inspect \
--input "$TEMPLATE_PPTX" \
--out "$WORKSPACE/tmp/template-manifest.json"
bash "$PPTX" render \
--input "$TEMPLATE_PPTX" \
--out-dir "$WORKSPACE/tmp/template-slides" \
--montage "$WORKSPACE/tmp/template-montage.png"Create template-frame-map.json. Map every output slide to a source slide and list the exact inherited objects allowed to change. Validate the map before editing:
bash "$PPTX" validate-map \
--template "$TEMPLATE_PPTX" \
--map "$WORKSPACE/tmp/template-frame-map.json" \
--out "$WORKSPACE/tmp/template-map-validation.json"Create an unedited starter deck first:
bash "$PPTX" prepare-starter \
--template "$TEMPLATE_PPTX" \
--map "$WORKSPACE/tmp/template-frame-map.json" \
--out "$WORKSPACE/tmp/template-starter.pptx"Render the source and starter, then run fidelity. Resolve unexplained differences before applying edits. Apply only operations authorized by the frame map:
bash "$PPTX" apply-template \
--template "$TEMPLATE_PPTX" \
--map "$WORKSPACE/tmp/template-frame-map.json" \
--edits "$WORKSPACE/tmp/template-edits.json" \
--out "$FINAL_PPTX"Do not overlay replacement objects on top of inaccessible template objects. If the requested target cannot be preserved or safely modified, stop and report the unsupported object and closest viable source-slide alternatives.
imageSizingCrop or imageSizingContain from the toolkit rather than stretching images.Use audit and render for fast iteration after material revisions:
bash "$PPTX" audit \
--input "$FINAL_PPTX" \
--out "$WORKSPACE/qa/audit.json"
bash "$PPTX" render \
--input "$FINAL_PPTX" \
--out-dir "$WORKSPACE/qa/slides" \
--montage "$WORKSPACE/qa/montage.png" \
--pdf "$WORKSPACE/qa/rendered.pdf"Inspect every slide-N.png at full resolution. Compare the rendered page count to the PPTX manifest. Revise the builder or template edit map, rebuild, and repeat until all hard failures are gone and every warning has been resolved or visually confirmed as intentional.
For the final net-new build, run:
bash "$PPTX" deliver \
--builder "$WORKSPACE/tmp/deck.mjs" \
--out "$FINAL_PPTX" \
--qa-dir "$WORKSPACE/qa" \
--target-platform cross-platform \
--require-renderFor exact coverage criteria, save requirements.json under WORKSPACE/tmp and add --require-coverage. deliver auto-discovers that file. For template output, run deliver --input "$FINAL_PPTX" instead.
If the first delivery is blocked by warnings, inspect the full-size PNGs and audit.json. Create a hash-bound disposition file, then seal the unchanged QA candidate:
bash "$PPTX" deliver \
--input "$WORKSPACE/qa/candidate.pptx" \
--out "$FINAL_PPTX" \
--qa-dir "$WORKSPACE/qa" \
--dispositions "$WORKSPACE/tmp/warning-dispositions.json" \
--require-coverage \
--target-platform cross-platform \
--require-renderDo not deliver candidate.pptx. Only a passed delivery is sealed to FINAL_PPTX. Treat Microsoft PowerPoint as the target viewer and LibreOffice as an automated baseline, especially for Chinese font substitution.
Run the bundled integration test after modifying this skill or its runtime:
bash "$PPTX" self-test --out "$WORKSPACE/self-test"Return the sealed final .pptx and a concise summary. State that verification passed and disclose accepted compatibility limitations. For legacy input, state that the preserved .ppt was converted to .pptx and that macros, legacy animation, OLE objects, WordArt, media, and uncommon fonts are not guaranteed lossless. Do not deliver builders, candidates, manifests, frame maps, renders, or QA reports unless the user requests them.
c88d7d1
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.