with one click
presentations
// Build premium editorial analytics PPTX decks with artifact-tool presentation JSX, using ruthless narrative editing, chart-first storytelling, rendered critique, and iteration until the output beats the reference deck.
// Build premium editorial analytics PPTX decks with artifact-tool presentation JSX, using ruthless narrative editing, chart-first storytelling, rendered critique, and iteration until the output beats the reference deck.
[HINT] Download the complete skill directory including SKILL.md and all related files
| name | Presentations |
| description | Build premium editorial analytics PPTX decks with artifact-tool presentation JSX, using ruthless narrative editing, chart-first storytelling, rendered critique, and iteration until the output beats the reference deck. |
Presentations is for serious, high-polish presentation work where "clean" is
not enough. The target is an editable PowerPoint deck that feels like a strong
editor, a strong analyst, and a strong designer built it together.
Use this skill for analytics narratives, investor/operating reviews, strategy stories, product/business performance decks, and any PPTX task where the user asks to beat a reference deck.
Use artifact-tool presentation JSX only. The bundled Codex runtime provides
@oai/artifact-tool version 2.7.3 or newer and exposes
@oai/artifact-tool/presentation-jsx.
Do not require or import a separate presentation runtime package. PPTX export/render behavior must be accessed through artifact-tool.
For generated raster images or reference comps, use the Codex imagegen tool. Bundled scripts may write imagegen prompt files, but must not call external image APIs or read API keys.
Thread-scoped paths:
SKILL_DIR=<absolute path to the installed Presentations skill>THREAD_ID=${CODEX_THREAD_ID:-manual-<timestamp-or-short-random-suffix>}WORKSPACE=${TMPDIR:-/tmp}/codex-presentations/$THREAD_ID/<task-slug>SLIDES_DIR=$WORKSPACE/slidesPREVIEW_DIR=$WORKSPACE/previewLAYOUT_DIR=$WORKSPACE/layoutASSET_DIR=$WORKSPACE/assetsQA_DIR=$WORKSPACE/qaOUTPUT_DIR=<user-provided output dir if any, otherwise $WORKSPACE/output>FINAL_PPTX=$OUTPUT_DIR/<relevant-deck-title-slug>.pptxUse absolute paths in commands and handoffs. Keep all generated planning text
notes, preview PNGs, contact sheets, layout JSON, imagegen prompt files,
temporary reference images, and other scratch files inside this thread-scoped
$WORKSPACE. Keep only final deliverables in $OUTPUT_DIR. If the user
provides an external output directory, write or copy only final deliverables
there; generated .txt plans, contact sheets, previews, layout files, prompt
files, and generated scripts must still stay under $WORKSPACE.
Name the final PPTX with a short, relevant title derived from the deck topic or
requested deliverable. Do not use generic filenames such as output.pptx,
deck.pptx, or deck.final.pptx.
Never use a shared scratch folder such as .presentation_workspaces,
presentation-workspaces, presentation_workspaces, out, or a bare
repo-local deck slug unless the path includes $THREAD_ID. If CODEX_THREAD_ID
is unavailable, generate a manual id with timestamp plus a short random suffix.
The deck must win the contact-sheet test. At thumbnail size, it should show a coherent visual system, distinct slide rhythms, and evidence-led storytelling. At readable size, every slide should have a claim, a proof object, and no filler.
This skill rejects "serviceable" output. A deck can pass layout checks and still fail. If it looks like a generic SaaS dashboard, consulting card grid, or autogenerated template after replacing the company name, keep iterating.
reference-beating: user supplied or named a deck to beat. This is the
default when a reference PPTX is present.template-following: user supplied a source/template deck whose visual system
must be inherited.create: no deck/template is supplied; build from prompt and sources.targeted-edit: small changes to an existing deck.When both a source deck and a better reference deck exist, separate them:
Do not blindly clone the reference. Beat it by improving story precision, composition variety, chart clarity, whitespace, and final render quality.
After task mode, choose exactly one primary deck-profile. This is a hard
routing step, not a labeling exercise. The profile determines which proof
objects, source rules, visual density, asset rules, and QA gates are blocking.
Profiles:
finance-ir: earnings, investor relations, operating reviews, financial
analysis. Requires exact reported figures, unit discipline, source footnotes,
bridges, tables, and disclosure logic.product-platform: SaaS/platform/product narratives. Requires architecture
maps, workflow diagrams, adoption proof, product-to-financial linkage, and
no generic feature-card grids.gtm-growth: GTM, marketing, consumer growth, subscription ecosystems,
mobility, customer engagement. Requires a visible growth loop, segment or
cohort proof, monetization bridge, and brand-aware rhythm.engineering-platform: developer, AI, infrastructure, data, security, and
technical platform decks. Requires accurate system diagrams, technical labels
that survive executive simplification, and metrics tied to the architecture.strategy-leadership: investor-day, board, transformation, and market
strategy decks. Requires chapter discipline, market framing, strategic bets,
and transition slides that carry the thesis.consumer-retail: lookbooks, clienteling, luxury, consumer-brand, campaign,
travel, lifestyle, food, fashion, beauty, people, places, animals, sports,
playful/kids visual storytelling, and other image-led decks where the audience
needs to visually inspect the subject. Requires real assets or explicit asset
provenance, image quality, editorial hierarchy, and client-ready copy.template-following: user supplied a template/source deck whose style must
be preserved. Requires template-audit.txt and deviation-log.txt before any
redesign.targeted-edit-data: add or edit a data/comparison slide. Requires exact
calculations before visual work and a native-looking insertion into the
existing deck.targeted-edit-media: add headshots, logos, screenshots, or other media.
Requires identity/source verification, consistent crops, and preservation of
the source deck layout grammar.appendix-heavy: dense appendix, tables, disclosures, or source packs.
Requires index/page markers, readable small-type thresholds, table grammar,
and explicit source-density rules.If more than one profile applies, pick the profile that creates the highest
delivery risk as primary, then list secondary gates in the claim spine. Example:
a finance investor deck with a supplied template is finance-ir primary and
template-following secondary.
When a profile is selected, read its corresponding file under
$SKILL_DIR/profiles/ if the task is substantial or unfamiliar:
finance-ir.mdproduct-platform.mdgtm-growth.mdengineering-platform.mdconsumer-retail.mdtemplate-and-edit.mdappendix-heavy.mdCreate $WORKSPACE/profile-plan.txt with:
For every source or reference deck:
For source links:
Brand authenticity gate:
$WORKSPACE/source-notes.txt with source,
provenance, and why it belongs in the deck.Create:
$WORKSPACE/source-notes.txt$WORKSPACE/reference-audit.txt$WORKSPACE/data.json when metrics/charts are used$WORKSPACE/template-audit.txt for template-following or targeted-edit modes$WORKSPACE/deviation-log.txt when inheriting a source deck visual systemFor template-following and targeted-edit modes, template-audit.txt must include:
Before designing, write the story as slide claims. This is binding.
Every non-appendix slide must have:
EXPANSION DRIVERSFor finance/product narratives, a slide with only one thin chart usually fails. Prefer one dominant proof object plus a compact context rail, variance table, or callout stack when it improves the argument. Reject proof objects whose metric movement is too small to carry the claim unless they support a larger bridge. Product maps must show product-to-business linkage: module or workflow, adoption signal, expansion/monetization logic, or efficiency impact.
Bad title: Revenue and margin trends
Good title: Growth slowed, but the margin engine kept expanding.
Bad title: Expansion drivers
Good title: Backlog is compounding faster than revenue.
If a title can be used after swapping the company name, sharpen it.
Create $WORKSPACE/claim-spine.txt with:
Create $WORKSPACE/design-system.txt before writing slide modules.
The design system must define:
1280x720For premium analytics decks, prefer:
kicker-marker and
kicker-label, or kicker-01-marker and kicker-01-label<= 1pxDo not use a one-note palette. Do not let teal, navy, beige, purple, or gray dominate without a deliberate secondary contrast.
Before building slides, create $WORKSPACE/contact-sheet-plan.txt.
For a 10-slide deck, use at least 5 distinct macro-layout families, such as:
Hard gates:
title + subtitle + boxed panel grid cadenceThe contact sheet must look authored before details are read.
Build one ESM slide module per slide in $SLIDES_DIR, exporting numbered
functions such as:
export async function slide01(presentation, ctx) {
const slide = presentation.slides.add();
// editable artifact-tool presentation JSX content
return slide;
}
Prefer native editable shapes, lines, text, tables, and chart-like constructs. For charts, native chart helpers are allowed, but authored editable chart systems built from shapes are acceptable when they give better label placement and visual polish.
Charts, diagrams, connectors, boxes, tables, and flows are high-risk proof objects. Treat them as geometry systems, not decoration.
Before authoring any structured visual, define:
Hard build rules:
12px vertical interior padding for boxed prose / callouts and
16px when the box carries 2+ lines or dark-background copy. If a box only
looks correct with near-zero bottom room, enlarge the box or shorten the copy.value + label + context, every item must visibly
render all three pieces with adequate contrast against its background.artifact-tool presentation JSX chart caveat:
slide.charts.add(...) when the API can represent the chart.ppt/charts/chart*.xml.toProto /
setChangeHandler errors, switch to authored editable chart primitives
rather than shipping weak native charts.chart.yAxis.majorGridlines unless freshly
verified; it can fail export with this[#h].toProto is not a function.$WORKSPACE/qa/comeback-scorecard.txt.Use helper scripts copied with this skill:
node "$SKILL_DIR/scripts/render_artifact_slide.mjs" \
--workspace "$WORKSPACE" \
--slide-module "$SLIDES_DIR/slide-01.mjs" \
--output "$PREVIEW_DIR/slide-01.png" \
--layout "$LAYOUT_DIR/slide-01.layout.json"
node "$SKILL_DIR/scripts/build_artifact_deck.mjs" \
--workspace "$WORKSPACE" \
--slides-dir "$SLIDES_DIR" \
--out "$FINAL_PPTX" \
--preview-dir "$PREVIEW_DIR" \
--layout-dir "$LAYOUT_DIR/final" \
--contact-sheet "$PREVIEW_DIR/contact-sheet.png" \
--slide-count <n>
Presentation JSX source must resolve through artifact-tool. Do not bypass the bundled runtime with unrelated package imports.
Editable primitives are encouraged for charts, diagrams, and abstract product flows. They are not a license to fabricate brand marks. Do not create brand-like icons, mascots, app marks, partner marks, or pseudo-logos as decoration or to fill whitespace. If the asset is not verified, solve the slide with stronger hierarchy, data, copy, or abstract shapes instead.
Score the rendered contact sheet and full-size slides in
$WORKSPACE/qa/comeback-scorecard.txt.
Each dimension is 0-5:
story: titles are claims; sequence has a real arcspecificity: deck would fail the noun-swap testrhythm: contact sheet has varied macro layoutswhitespace: slides breathe without feeling emptychart clarity: charts prove one sentence, labels are direct, and geometry is
continuous / correctly attachedtypography: type feels intentional, not defaultrestraint: no filler boxes, badges, or decorative clutterprecision: metrics and source notes are exactcoherence: one visual system across the deckreference delta: visibly better than the target reference, when suppliedRequired minimum before delivery:
reference delta >= 4 when a reference is supplied; otherwise mark it n/a
and do not claim reference-beatingProfile gates are pass/fail and sit above the numeric rubric. A deck fails even with a high visual score if the profile gate fails. Common profile blockers:
finance-ir: invented or unsupported metrics, mixed units, missing footnotes,
or charts that look good but do not reconcile to sources.product-platform: generic feature cards, architecture boxes that say
nothing, module lists without adoption or monetization proof, or missing
adoption/business linkage.gtm-growth: funnel labels without progression logic, weak brand fit,
fabricated brand marks, or monetization claims unsupported by proof.engineering-platform: technically vague diagrams, labels stripped of real
meaning, or developer details that overwhelm the executive story.strategy-leadership: chapter dividers without thesis movement or a market
frame that never returns in the operating plan.consumer-retail: stock-looking imagery, weak crop quality, unverified asset
provenance, or client outreach copy that feels generic.template-following: style drift from the source deck without an explicit
deviation reason.targeted-edit-data: calculation mistakes, wrong ranking, or a new slide
that looks pasted in.targeted-edit-media: unverified identities, inconsistent headshot crops, or
local layout damage.appendix-heavy: unreadable tables, missing index, or source density that
hides the answer.brand authenticity: fabricated logo, mascot, app icon, signature mark,
unverified product UI, or pseudo-official mark used as decoration.If a reference deck is supplied, write a blunt slide-by-slide comparison:
Before final delivery:
Create $WORKSPACE/qa/comeback-scorecard.txt with:
Do not leave the scorecard as vague praise. It should name the remaining weak spots if any exist.
Fix these before delivery:
Do not stop after the first export unless the comeback rubric passes. Iterate the weakest 2-4 slides first, then rerender the full deck. Prefer a bold rebuild of a weak slide over cosmetic nudge work.
If a model or tool cannot reach the reference quality, say exactly why and name the remaining weakest slides. Do not call the deck done because a PPTX exists.
Subagents are allowed when the user explicitly asks for them. Use them for:
The main agent owns final story, visual system, integration, and QA. Never ship a raw stitched deck from independent slide workers.
Use this harness when validating or improving the skill across many prompts. It creates deck-quality probes, not source-complete final decks, unless all attachments and source data are available. The probe output is for stress testing profile routing, visual grammar, proof-object quality, and QA gates.
Command:
node "$SKILL_DIR/scripts/run_prompt_battle.mjs" \
--prompts "$WORKSPACE/batch-prompts/slides_prompts_first25.json" \
--workspace "$WORKSPACE/batch-runs/full-25" \
--limit 25 \
--scale 0.55
The harness writes:
battle-summary.jsonbattle-summary.txtAfter a battle run:
layout/ directoryDo not confuse a battle probe with a final customer deck. For final delivery, rerun the normal workflow with the actual source attachments, exact metrics, real imagery, and full reference comparison.
After the final PPTX is exported and verified, run the cleanup helper:
node "$SKILL_DIR/scripts/cleanup_presentation_workspace.mjs" \
--workspace "$WORKSPACE" \
--output-dir "$OUTPUT_DIR"
The cleanup helper preserves final .pptx deliverables in $OUTPUT_DIR and
deletes scratch artifacts from the current thread-scoped $WORKSPACE:
profile-plan.txt,
source-notes.txt, reference-audit.txt, claim-spine.txt,
design-system.txt, contact-sheet-plan.txt, battle-summary.txt, and
$WORKSPACE/qa/*.txt.*.imagegen.txt and reference-imagegen-prompts.txt.contact-sheet.png, preview PNGs,
temporary reference PNGs, and other temporary images that are not deliberately
embedded in the final deck.$SLIDES_DIR. Do not delete the installed skill helper scripts under
$SKILL_DIR/scripts.${TMPDIR:-/tmp}/codex-presentations/ or
any other thread's workspace.If $OUTPUT_DIR is outside $WORKSPACE, the cleanup helper deletes
$WORKSPACE and does not clean the external output directory. That external
directory must contain only final deliverables, not scratch artifacts.
Do not attach or link contact-sheet.png, preview PNGs, generated scripts,
planning docs, JSON manifests, layout JSON, imagegen prompt files, or temporary
images unless the user explicitly asks for QA artifacts.
Do not mention that scratch or QA artifacts were cleaned up in the final
response; the final response should focus on the user-facing deck only.
Deliver:
.pptx with a relevant deck-title filename, not a generic name such
as output.pptx or deck.final.pptxThe final response should be short and artifact-focused.