Data Viz Deck
thatrebeccarae/claude-marketing
Transform audit data, performance reports, and structured analyses into polished visual deliverables.
Plans and builds HTML-based web presentations through staged quick, basic or advanced workflows, with optional visualization planning, motion, a workbench and PPTX export handoff.
$ npx skills add Russell-cell/PPT-as-code --skill ppt-as-code -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install Russell-cell/PPT-as-code ppt-as-code --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
Claude Code skills documentation · loads skills from .claude/skills/
Install the "ppt-as-code" agent skill from https://github.com/Russell-cell/PPT-as-code/tree/main into .claude/skills/ppt-as-code/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ppt-as-code", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Russell-cell/PPT-as-code --skill ppt-as-code -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install Russell-cell/PPT-as-code ppt-as-code --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "ppt-as-code" agent skill from https://github.com/Russell-cell/PPT-as-code/tree/main into .agents/skills/ppt-as-code/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ppt-as-code", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Russell-cell/PPT-as-code --skill ppt-as-code -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install Russell-cell/PPT-as-code ppt-as-code --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "ppt-as-code" agent skill from https://github.com/Russell-cell/PPT-as-code/tree/main into .cursor/skills/ppt-as-code/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ppt-as-code", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Russell-cell/PPT-as-code --skill ppt-as-code -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install Russell-cell/PPT-as-code ppt-as-code --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "ppt-as-code" agent skill from https://github.com/Russell-cell/PPT-as-code/tree/main into .gemini/skills/ppt-as-code/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ppt-as-code", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install Russell-cell/PPT-as-code ppt-as-codeInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add Russell-cell/PPT-as-code --skill ppt-as-code -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "ppt-as-code" agent skill from https://github.com/Russell-cell/PPT-as-code/tree/main into .github/skills/ppt-as-code/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ppt-as-code", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add Russell-cell/PPT-as-code --skill ppt-as-code -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install Russell-cell/PPT-as-code ppt-as-code --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "ppt-as-code" agent skill from https://github.com/Russell-cell/PPT-as-code/tree/main into .opencode/skills/ppt-as-code/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ppt-as-code", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
ppt-as-codePlans and builds HTML-based web presentations through staged quick, basic or advanced workflows, with optional visualization planning, motion, a workbench and PPTX export handoff.
The skill runs a strict serial pipeline from ingesting your material to delivering HTML. Steps run in order, a blocking step needs your explicit confirmation, nothing is pre-built before its gate clears, and the route stays proportional so a light deck is not escalated into a heavy stack. It detects the input mode, can parse an optional Slidev-inspired `deck.md` draft into a `deck_source.json`, plans visualizations and images, runs QA before the HTML, and prefers a self-contained file or locally runnable folder over a CDN-only prototype.
Three modes set the weight. Quick mode stays lightweight, basic mode adds confirmed deck planning plus a script and image flow, and advanced mode handles reference-driven decks with static-first delivery, optional motion follow-up, source normalization, chart and diagram planning, a workbench for visual editing and a PPTX export handoff. In basic and advanced modes a vague reply such as continue does not skip a checkpoint; only a clearly named override does. Default output is staged artifacts, an HTML route or prompt pack and an image plan, not a long code dump, with safe fallbacks when file saving or web search is unavailable. Reference files describe each mode and the quality checker.
12 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 3f0cfce. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
No scripts in the folder and no shell commands in SKILL.md (its code samples are markdown).
From the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
PPT as Code loads about 11k tokens when it runs, and up to ~26k if it reads all its reference files. Until then it costs about 148 tokens; SKILL.md has 5,202 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from Russell-cell/PPT-as-code at commit 3f0cfce, republished under its MIT licence (© Russell-cell). 5,202 words, ~11,045 tokens.
.claude/skills/ppt-as-code/SKILL.md (or your agent's skills folder). This skill also uses 37 other files; get the full folder from GitHub.Plan and build HTML-based presentations with a creator-first staged workflow.
Core Pipeline: Ingest -> Normalize Source Material When Needed -> Derive Source Scenes When Needed -> Detect Input Mode -> If DSL: Parse deck.md -> Compile deck_source.json -> Route Mode -> Load References -> Diagnose Gaps -> Produce Artifacts -> Confirm Key Decisions -> Plan Visualizations -> Plan Images -> Run Pre-HTML QA -> Deliver HTML -> Optional Workbench Sync -> Optional PPTX Export
[!CAUTION]
Serial Execution & Gate Discipline
This workflow is a strict serial pipeline.
- SERIAL EXECUTION: Steps must execute in order; output of each step becomes input for the next.
- BLOCKING = HARD STOP: A
BLOCKINGstep requires explicit user confirmation before continuing.- NO SPECULATIVE EXECUTION: Do not pre-build future artifacts before the current gate is cleared.
- KEEP THE ROUTE PROPORTIONAL: Do not escalate a lightweight deck into a heavier stack unless the request clearly needs it.
- DEFAULT TO SHIPPING: Deliver usable artifacts, prompts, or HTML handoff routes, not theory essays.
- FINAL ARTIFACT MUST RUN: If the user wants a direct handoff, prefer a self-contained file or a locally runnable folder over a CDN-only prototype.
[!IMPORTANT]
Strict Execution Semantics For
basicAndadvanced
- Treat
basicandadvancedas strict finite-state workflows, not loose checklists.- Advance only one stage at a time. Do not silently bundle multiple blocking stages into one jump.
- Silence, implied urgency, or generic requests such as "continue" do not count as permission to bypass required confirmations.
- Only bypass a blocking step when the user explicitly names that override in a clear instruction, for example:
skip breakdown confirmationdo not ask for step-by-step confirmationrun the rest end-to-end without checkpoints- If the user gives a partial override, skip only the named checkpoint and keep the rest of the workflow strict.
- If the user does not clearly opt out, stay in the default strict step-by-step mode.
[!IMPORTANT]
Creator-First Delivery
- Default delivery is staged artifacts + HTML route or prompt pack + image plan, not a long code dump.
- When the user is a creator or wants to move fast, prefer staged prompts and intermediate artifacts over large code blocks by default.
- Use full implementation only when the user explicitly asks for code or the workflow has reached the final HTML stage.
[!IMPORTANT]
PPTX Export Handoff
ppt-as-coderemains an HTML-first presentation skill.- PPTX export is an optional final-delivery post-process, not a replacement for the HTML workflow.
- Default export target is
html; allowpptxorbothwhen the user explicitly wants PowerPoint delivery.- When the target includes PPTX, finish the static HTML pass first, then produce
deck_manifest.json, then hand off topptx-export-for-ppt-as-code.deck_manifest.jsonis the export bridge and source of truth for PPTX delivery; do not rely on ad-hoc DOM scraping as the primary route.- PPTX export is static-only: motion is downgraded to a static state, simple pages should stay editable, and complex pages may fall back to full-slide raster images.
[!IMPORTANT]
Slidev-Inspired DSL Input
ppt-as-codemay accept an optionaldeck.mddraft as a Slidev-inspired authoring input.- This is a draft input layer, not a compatibility promise for real Slidev projects or syntax.
- When
deck.mdis present, parse it intodeck_source.jsonbefore entering the normalquick,basic, oradvancedworkflow.deck.mdcan speed up ideation, but it must not bypassbasicoradvancedconfirmation gates.deck_source.jsonis the normalized internal representation for DSL input; it is not the final delivery artifact.
[!IMPORTANT]
Source Normalization Rules
- If the user starts from external source material rather than a slide outline, normalize that material before deck breakdown or script work.
- When these adapters are available in the environment, use them proportionally:
- PDF ->
pdf_to_md.py- DOCX / EPUB / HTML / LaTeX ->
doc_to_md.py- ordinary web pages ->
web_to_md.py- high-friction pages such as WeChat or anti-bot pages ->
web_to_md.cjs- The normalized markdown becomes the working source for deck planning; it is not the final deck.
- If no adapter is available, do not block the workflow. Summarize the source manually and continue with an explicit note about the fallback.
[!IMPORTANT]
Source-To-Scenes Rules
- If the starting material is a long article, PDF, document, or normalized web source, derive a preliminary scene map before writing the confirmed breakdown.
- The source-to-scenes pass should cluster the material into likely slide groups, not final slides.
- Use it to identify likely page sequence, candidate scene roles, strong quotes, strong stats, and image-worthy sections.
- Treat
source_scene_map.mdas a planning accelerator, not as a replacement for the confirmed breakdown.
[!IMPORTANT]
Persistence Strategy
- Default to conversation-first artifacts.
- Only write files when the user explicitly wants persisted deck materials, or when the repo already has a clearly compatible project structure that invites file-based output.
- When persistence is enabled, use conventional artifact names such as
deck_brief.md,theme_breakdown.md,style_options.md,deck_script.md,style_system.json,image_plan.md,index.html, andassets/.
[!IMPORTANT]
PPT-First Grammar
PPT-likemeans stage-like: one active slide at a time, clear page state, and visible presentation furniture.- Do not let a deck drift into a long webpage, editorial article, or dashboard shell when the user explicitly asked for a presentation.
- A finished deck must preserve clear slide roles such as cover, hook, concept, compare, quote, data, divider, and conclusion when relevant.
[!IMPORTANT]
Copy Relevance And Text-Density Rules
- Every visible sentence on a slide must help the page thesis. If a line does not strengthen the point, cut it.
- Do not add decorative filler such as generic scene-setting, vague inspiration lines, empty transition copy, or "PPT-sounding" meta language.
- Avoid generic labels like
Overview,Background,Key Takeaway,Page 01,Closing Thoughts, or similar scaffolding unless they carry real structural meaning for the audience.- Prefer one strong statement plus a small amount of supporting text over dense explanatory copy.
- Do not solve crowded slides by shrinking type. If a page needs too much text, split the content into more slides or remove weak copy.
- Avoid tiny captions, tiny footnotes, and small-print annotations unless they are required for sources, numbers, or compliance.
- If a slide is image-led or chart-led, let the visual do the work. Do not add extra text just to fill space.
- Use short, high-signal headlines. A slide title should carry a point, not just a topic label.
[!IMPORTANT]
Style Lock Rules
quickandbasicstill need a real visual direction; do not return a bare technical skeleton.- If style is undecided, recommend 3 to 4 design directions before starting final HTML work.
- Do not lock the final visual direction before the reference-image step when the chosen mode requires reference selection and browsing is available.
- Once a reference is chosen, or the workflow has explicitly fallen back to style-word synthesis, translate the direction into structured design constraints before final implementation.
[!IMPORTANT]
Visualization Planning Rules
- Charts, diagrams, infographics, and KPI cards are part of the deck structure, not late implementation garnish.
- After the script is confirmed, decide page by page whether the page should be text-led, image-led, chart-led, diagram-led, or card-led.
- Record those decisions in
visual_plan.mdbefore final HTML work begins.- Visualization choice must follow page thesis, not novelty. If a chart or diagram does not make the page clearer, do not force one.
- Visualization placement must also be decided early:
full-width,left,right,top-band,bottom-band,center-focus, orsplit-2col.quickis intentionally excluded from the full visualization layer. Do not add chart-led, diagram-led, or card-led pages inquickunless the skill is explicitly upgraded tobasicoradvanced.
[!IMPORTANT]
Visualization Style Inheritance
- Every chart or diagram must inherit the deck's design constraints.
- Use the deck's typography, color logic, spacing rhythm, and emphasis language rather than introducing a separate visual system for charts.
- Chart containers, labels, gridlines, fills, outlines, and cards must feel native to the deck, not like embedded third-party widgets.
- When visual tokens are needed, derive them from the active design constraints instead of inventing them ad hoc.
[!IMPORTANT]
Image Workflow Rules
- Image quality beats image quantity. A weak image is worse than no image.
- Never search body images from the full deck topic alone.
- For each page that needs an image, first compress the page into one thesis, then derive page-level keywords, then search.
- If image download fails, keep the source link, record the failure, and hand the link to the user for manual download instead of blocking the run.
[!IMPORTANT]
Pre-HTML Quality Check
- Before generating static HTML, run a lightweight QA pass over the approved artifacts.
- The QA pass must check page sequence coherence, title hierarchy consistency, image-bearing slides that still lack usable assets or fallback links, and whether each slide has a clear page thesis.
- If the QA pass finds gaps, resolve or surface them before HTML is treated as ready.
[!IMPORTANT]
Network And Tool Fallbacks
- If browsing or downloading is unavailable, do not block the workflow.
- In
advanced, if web reference search is unavailable, skip the web-reference branch and derive structured design constraints directly from the chosen style direction and any user-provided inspiration.- If file persistence is unavailable or undesired, keep the same staged artifacts in conversation instead of forcing repo writes.
[!IMPORTANT]
Runtime Source Of Truth
- Runtime behavior must come from
SKILL.mdand the active mode/reference files.- Stable feedback should be integrated into the main docs, not left in logs.
[!IMPORTANT]
Workbench Architecture Rules
- A future visual workbench must not edit planning artifacts independently or let them drift.
- Use
deck_model.jsonas the unified workbench editing source when a canvas editor is in scope.- Workbench edits should first update
deck_model.json, then synchronize upstream artifacts, then refresh HTML.- Treat the workbench as an internal authoring layer for
ppt-as-codedecks, not as a generic webpage editor.- The v1 workbench scope is limited to decks that already follow this skill's own artifact contracts.
[!IMPORTANT]
Workbench Sync Rules
theme_breakdown.md,deck_script.md,style_system.json,visual_plan.md,image_plan.md, anddeck_manifest.jsonshould not synchronize directly with one another.deck_model.jsonis the bridge between the visual canvas and the artifact layer.- If a free-canvas operation cannot be projected back into the artifact system safely, prefer sync safety over visual freedom.
- In those cases, require one of these outcomes:
- restrict the action
- mark the result as
needs_review- mark the result as
html_only_override- Never silently create multiple competing sources of truth.
[!IMPORTANT]
Change Routing Rules
- When the user asks to modify an existing deck, classify the request before editing anything.
- Route the change to the primary upstream artifact first:
- structure change ->
theme_breakdown.md- copy change ->
deck_script.md- visualization change ->
visual_plan.md- image change ->
image_plan.md- style change ->
style_system.json- export behavior change ->
deck_manifest.json- Global style changes such as font size, color system, spacing, radius, progress bar style, or chart label sizing belong in
style_system.json.- Slide-specific style exceptions also belong in
style_system.json, using aslide_overridesblock instead of editing HTML first.- Do not treat
deck_manifest.jsonas a content-editing source. It is a delivery-layer artifact.- In workbench mode, direct drag-and-resize edits should write to
deck_model.jsonfirst, then sync into the correct artifact targets.- Do not edit
index.htmlfirst unless:
- the user explicitly asks for an HTML-only hotfix
- the issue is implementation-specific
- no usable upstream artifact exists
- After updating the primary artifact, regenerate only the affected downstream artifacts and then refresh HTML.
This skill operates as a single inline agent - no role switching required.
| File | Path | Purpose |
|---|---|---|
| skill interface metadata | ${SKILL_DIR}/agents/openai.yaml | display name, short description, and default prompt |
| Resource | Path | Runtime Use |
|---|---|---|
| quick mode workflow | ${SKILL_DIR}/references/quick-mode.md | required only when mode = quick |
| basic mode workflow | ${SKILL_DIR}/references/basic-mode.md | required only when mode = basic |
| advanced mode workflow | ${SKILL_DIR}/references/advanced-mode.md | required only when mode = advanced |
| visual and image workflow | ${SKILL_DIR}/references/visual-and-images.md | required when style, references, or images are in scope |
| visualization layer guide | ${SKILL_DIR}/references/visualization-layer.md | required when charts, diagrams, infographics, or KPI cards are in scope |
| visualization engines guide | ${SKILL_DIR}/references/visualization-engines.md | required when selecting chart or diagram engines |
| reference search pack | ${SKILL_DIR}/references/reference-search-pack.md | required when browsing is used for reference locking or image/source discovery |
| component library guidance | ${SKILL_DIR}/references/component-libraries.md | required only when the route needs libraries |
| PPTX export handoff | ${SKILL_DIR}/references/pptx-export-handoff.md | required only when export target = pptx or both |
| source normalization guide | ${SKILL_DIR}/references/source-normalization.md | required only when the input starts from PDF, DOCX, EPUB, HTML, LaTeX, or web pages |
| source-to-scenes guide | ${SKILL_DIR}/references/source-to-scenes.md | required only when long source material needs pre-breakdown scene mapping |
| quality checker guide | ${SKILL_DIR}/references/quality-checker.md | required before static HTML generation in non-trivial runs |
| deck DSL reference | ${SKILL_DIR}/references/deck-dsl.md | required only when input mode = dsl |
| deck source contract | ${SKILL_DIR}/references/deck-source-contract.md | required only when input mode = dsl |
| change routing guide | ${SKILL_DIR}/references/change-routing.md | required when refining or modifying an existing deck |
| style system contract | ${SKILL_DIR}/references/style-system-contract.md | required when style needs to be locked, edited, or regenerated |
| deck model contract | ${SKILL_DIR}/references/deck-model-contract.md | required when the workbench or canvas editor is in scope |
| workbench architecture | ${SKILL_DIR}/references/workbench-architecture.md | required when evaluating or building a visual workbench |
| workbench sync guide | ${SKILL_DIR}/references/workbench-sync.md | required when workbench edits must flow back into artifacts |
| Workflow | Path | Purpose |
|---|---|---|
mode-delivery | ${SKILL_DIR}/workflows/mode-delivery.md | mode routing and output shaping |
GATE: The request is about a web-based presentation, HTML deck, slide system, reveal.js deck, presentation page, or a closely related deck-building workflow.
EXECUTION:
deck.mdstructured, dsl, or unspecifiedhtml, pptx, both, or unspecifieddeck.mdstructure_changecopy_changevisualization_changeimage_changestyle_changeexport_changeimplementation_hotfixdeck_brief.mdtheme_breakdown.mdstyle_options.mddeck_script.mdstyle_system.jsonvisual_plan.mdimage_plan.mdindex.htmlassets/deck_manifest.jsonoutput.pptxdsl, add the optional draft artifact:deck_source.jsonsource_scene_map.mdbasic or advanced runs, add the optional QA artifact:qa_report.mddeck_model.jsonslide_overridesCHECKPOINT:
## Step 1 Complete
- [x] Presentation request identified
- [x] Missing inputs diagnosed
- [x] Change type classified when relevant
- [x] Persistence strategy defined
- [ ] Next: auto-proceed to Step 1AGATE: Step 1 complete; the request is clear enough to identify the input layer.
EXECUTION:
pdf_to_md.py when availabledoc_to_md.py when availableweb_to_md.py when availableweb_to_md.cjs when available${SKILL_DIR}/references/source-normalization.md${SKILL_DIR}/references/source-to-scenes.mdsource_scene_map.md when artifact persistence is enableddsl when the user provides deck.md or explicitly asks to start from a deck draft filestructureddsl:${SKILL_DIR}/references/deck-dsl.md${SKILL_DIR}/references/deck-source-contract.mddeck.md as a Slidev-inspired DSL, not as real Slidev syntaxdeck_source.jsonbulletsdeck.md as a draft input only; do not treat it as the final source of truth for HTML or export.CHECKPOINT:
## Step 1A Complete
- [x] Source material normalized or fallback noted when needed
- [x] Source scenes derived when needed
- [x] Input mode detected
- [x] deck.md parsed when present
- [x] deck_source.json prepared when needed
- [ ] Next: auto-proceed to Step 2GATE: Step 1A complete; the request is clear enough to choose a mode.
EXECUTION:
${SKILL_DIR}/workflows/mode-delivery.md.quick, basic, or advanced.quick for MVP decks, lightweight prototypes, and "get it running first"basic for creator-facing deck planning that needs confirmed breakdown, confirmed script, and image handling before HTMLadvanced for reference-driven deck design, richer style decisions, or a static-first then motion-follow-up workflowCHECKPOINT:
## Step 2 Complete
- [x] Execution mode chosen
- [x] Routing rationale prepared
- [ ] Next: auto-proceed to Step 3GATE: Step 2 complete; one execution mode has been chosen.
EXECUTION:
quick -> ${SKILL_DIR}/references/quick-mode.mdbasic -> ${SKILL_DIR}/references/basic-mode.mdadvanced -> ${SKILL_DIR}/references/advanced-mode.md${SKILL_DIR}/references/visual-and-images.md when style, references, or images are relevant.${SKILL_DIR}/references/visualization-layer.md and ${SKILL_DIR}/references/visualization-engines.md when charts, diagrams, infographics, or KPI cards may appear.${SKILL_DIR}/references/reference-search-pack.md when browsing will be used for reference locking or image/source discovery.${SKILL_DIR}/references/component-libraries.md only when the route truly needs component or chart libraries.${SKILL_DIR}/references/source-normalization.md only when the source input needs normalization from document or web material.${SKILL_DIR}/references/source-to-scenes.md only when long source material needs pre-breakdown scene mapping.${SKILL_DIR}/references/quality-checker.md before static HTML generation in non-trivial runs.${SKILL_DIR}/references/pptx-export-handoff.md only when the export target is pptx or both.${SKILL_DIR}/references/deck-dsl.md and ${SKILL_DIR}/references/deck-source-contract.md only when the input mode is dsl.${SKILL_DIR}/references/change-routing.md when the request is about modifying an existing deck.${SKILL_DIR}/references/style-system-contract.md when style needs to be locked, changed, or regenerated.${SKILL_DIR}/references/deck-model-contract.md, ${SKILL_DIR}/references/workbench-architecture.md, and ${SKILL_DIR}/references/workbench-sync.md when a visual workbench or canvas editor is in scope.CHECKPOINT:
## Step 3 Complete
- [x] Primary mode reference loaded
- [x] Supporting references loaded only if relevant
- [ ] Next: auto-proceed to Step 4GATE: Step 3 complete; the active mode workflow is loaded.
EXECUTION:
basic and advanced, prepare the brief artifact first.deck_brief.md.quick: brief or outline, style directions, minimal HTML routebasic: brief, breakdown, style options, script, style system, visual plan, image plan, HTMLadvanced: same as basic, plus structured design constraints and optional motion follow-upsource_scene_map.md before the confirmed breakdowndsl: add deck_source.json as the normalized draft input artifactqa_report.md as the pre-HTML QA artifactpptx or both: add manifest and PPTX handoff after static HTML is readydeck_model.json as the unified canvas sourcetheme_breakdown.mddeck_script.mdvisual_plan.mdimage_plan.mdstyle_system.jsondeck_manifest.jsonindex.htmlCHECKPOINT:
## Step 4 Complete
- [x] Artifact list defined for the chosen mode
- [x] Primary upstream edit target chosen when relevant
- [x] Immediate gaps recorded
- [ ] Next: branch into the chosen mode workflowGATE: Chosen mode is quick.
EXECUTION:
quick, use the page-thesis keyword workflow from visual-and-images.md, but keep the image plan lightweight.quick. If the deck needs charts, diagrams, infographics, or KPI cards, upgrade to basic or advanced.pptx or both, keep the slide roles clear enough to support a later manifest handoff.basic.CHECKPOINT:
## Step 5 Complete
- [x] Lightweight structure prepared
- [x] Visual direction prepared
- [x] Minimal HTML route or prompt pack prepared
- [ ] Next: auto-proceed to Step 17GATE: Chosen mode is basic.
EXECUTION:
source_scene_map.md before the confirmed breakdown.deck_brief.md, style_options.md, theme_breakdown.md, and source_scene_map.md when relevant.BLOCKING: Ask the user to confirm the theme breakdown before any script generation begins.
CHECKPOINT:
## Step 6 Complete
- [x] Brief artifact prepared
- [x] Style options prepared
- [x] Theme breakdown prepared
- [ ] Next: BLOCKING - wait for breakdown confirmationGATE: Chosen mode is basic, and the user has confirmed the theme breakdown.
EXECUTION:
voice_profile.md, brand.md, writing_style.md, or project notes.style_system.json or an equivalent structured style object before final HTML work begins.style_system.json and deck_script.md.BLOCKING: Ask the user to confirm the slide script before visualization and image work begin.
CHECKPOINT:
## Step 7 Complete
- [x] Style locked
- [x] style_system.json prepared when relevant
- [x] Local voice guidance applied when available
- [x] Deck script prepared
- [ ] Next: BLOCKING - wait for script confirmationGATE: Chosen mode is basic, and the user has confirmed the slide script.
EXECUTION:
${SKILL_DIR}/references/visualization-layer.md.${SKILL_DIR}/references/visualization-engines.md.visual_plan.md artifact or inline equivalent.text-ledimage-ledchart-leddiagram-ledcard-ledvisual_plan.md.CHECKPOINT:
## Step 8 Complete
- [x] Visualization decisions prepared
- [x] visual_plan.md prepared when relevant
- [ ] Next: auto-proceed to Step 9GATE: Chosen mode is basic, and the user has confirmed the slide script.
EXECUTION:
assets/ only when downloading is available and persistence is enabled.user needs to download manuallyimage_plan.md.BLOCKING: Ask the user to confirm the script, visualization plan, and image plan before HTML implementation begins.
CHECKPOINT:
## Step 9 Complete
- [x] Image plan prepared
- [x] Slide-level keywords extracted
- [x] Download attempts or fallback links recorded
- [ ] Next: BLOCKING - wait for script, visualization, and image confirmationGATE: Chosen mode is basic, and the user has confirmed the script, visualization plan, and image plan.
EXECUTION:
${SKILL_DIR}/references/quality-checker.md.qa_report.md or inline QA notes:index.html and qa_report.md when needed.CHECKPOINT:
## Step 10 Complete
- [x] Static HTML generated
- [x] Presentation grammar preserved
- [ ] Next: auto-proceed to Step 17GATE: Chosen mode is advanced.
EXECUTION:
deck_brief.md and style_options.md.BLOCKING: Ask the user to choose one direction before final visual locking begins.
CHECKPOINT:
## Step 11 Complete
- [x] Brief artifact prepared
- [x] Style options prepared
- [ ] Next: BLOCKING - wait for direction choiceGATE: Chosen mode is advanced, and the user has chosen a direction.
EXECUTION:
BLOCKING: Ask the user to choose one reference image if web references were produced. If the workflow used the no-browsing fallback, skip this blocking step and proceed automatically.
CHECKPOINT:
## Step 12 Complete
- [x] Reference branch or no-network fallback completed
- [x] Final visual not locked prematurely
- [ ] Next: proceed to Step 13GATE: Chosen mode is advanced, and either a reference image has been selected or the no-browsing fallback has completed.
EXECUTION:
style_system.json or an equivalent structured style object.source_scene_map.md before locking the final script shape.voice_profile.md, brand.md, writing_style.md, or project notes.style_system.json, deck_script.md, and source_scene_map.md when relevant.BLOCKING: Ask the user to confirm the slide script before visualization and image planning begin.
CHECKPOINT:
## Step 13 Complete
- [x] Structured design constraints prepared
- [x] style_system.json prepared when relevant
- [x] Deck script prepared
- [ ] Next: BLOCKING - wait for script confirmationGATE: Chosen mode is advanced, and the user has confirmed the slide script.
EXECUTION:
${SKILL_DIR}/references/visualization-layer.md.${SKILL_DIR}/references/visualization-engines.md.visual_plan.md artifact or inline equivalent.text-ledimage-ledchart-leddiagram-ledcard-ledassets/ only when downloading is available and persistence is enabled.basic and surface the source link to the user.visual_plan.md, image_plan.md, and source_scene_map.md when relevant.BLOCKING: Ask the user to confirm the script, visualization plan, and image plan before static HTML begins.
CHECKPOINT:
## Step 14 Complete
- [x] visual_plan.md prepared when relevant
- [x] Image plan prepared
- [ ] Next: BLOCKING - wait for script, visualization, and image confirmationGATE: Chosen mode is advanced, and the user has confirmed the script, visualization plan, and image plan.
EXECUTION:
${SKILL_DIR}/references/quality-checker.md.qa_report.md or inline QA notes:index.html and qa_report.md when needed.deck_manifest.json.BLOCKING: Ask the user whether they want a motion pass after reviewing the static deck.
CHECKPOINT:
## Step 15 Complete
- [x] Static HTML generated
- [x] Static-first delivery preserved
- [ ] Next: BLOCKING - wait for motion decisionGATE: Chosen mode is advanced, and the user explicitly asked for a motion pass after reviewing the static deck.
EXECUTION:
transform and opacity by default.prefers-reduced-motionCHECKPOINT:
## Step 16 Complete
- [x] Motion layer added after approval
- [x] Reduced-motion support preserved
- [ ] Next: auto-proceed to Step 17GATE: The chosen mode workflow has completed.
EXECUTION:
deck_model.json status when a workbench route is in scopedeck_manifest.json status when the export target includes PPTXoutput.pptx status or handoff status when the export target includes PPTXpptx or both:deck_manifest.json with deckTitle, slideSize, themeTokens, and per-slide export hintsindex.html, deck_manifest.json, and assets/ to pptx-export-for-ppt-as-codeCHECKPOINT:
## Step 17 Complete
- [x] Final delivery follows the staged artifact order
- [x] Presentation-first checks performed
- [x] Image fallback links surfaced when needed
- [x] PPTX handoff prepared when requestedUse this route only when the user is evaluating, specifying, or building a visual PPT-style editor for ppt-as-code.
deck_model.json as the unified workbench editing source.deck_model.json and the artifact layertextimagechartdiagramcardshapecontainerneeds_review or html_only_override.© Russell-cell, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 37 other files (references) in the repository root of Russell-cell/PPT-as-code.
Open the folder on GitHubat commit 3f0cfce
PPT as Code next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| PPT as Code this skillRussell-cell/PPT-as-code | 191 | — | ~11k | Automated safety check: Pass | MIT | |
| Data Viz Deckthatrebeccarae/claude-marketing | 162 | — | ~1.8k | Automated safety check: Pass | MIT | |
| Qiaomu Bento Pptjoeseesun/qiaomu-bento-ppt | 127 | — | ~1.3k | Automated safety check: Pass | MIT | |
| Ky Markdown RebuilderKyrieCheungYep/ky-markdown-rebuilder | 117 | — | ~5.7k | Automated safety check: Pass | None | |
| Superloopy Slidesbeefiker/superloopy | 111 | 1 repos | ~8.8k | Automated safety check: Pass | MIT | |
| Sci HTMLShZhao27208/Aut_Sci_Write | 207 | — | ~1.4k | Automated safety check: Notes | MIT |
thatrebeccarae/claude-marketing
Transform audit data, performance reports, and structured analyses into polished visual deliverables.
joeseesun/qiaomu-bento-ppt
Use the standalone qiaomu-bento-ppt skill to create or edit qiaomu-style bento presentations as self-contained .bento.html files from briefs, notes, reports, URLs, data, or existing bento decks.
KyrieCheungYep/ky-markdown-rebuilder
Rebuild visual documents into reliable Markdown by combining text extraction with page or screenshot alignment.
beefiker/superloopy
Creates zero-dependency, animation-rich HTML slide decks that run in the browser, with style presets, PowerPoint conversion and PDF export, proven by a real-browser render.
ShZhao27208/Aut_Sci_Write
Generate academic presentation-style HTML slide decks and browser reports from PDFs, structured text, Markdown, paper summaries, outlines, or research notes.
lawve-ai/awesome-legal-skills
Turn an interpretive-ambiguity audit of a legal text — contract, statute, regulation, or judicial opinion — into a polished deliverable.
Russell-cell/PPT-as-code
Exports a ppt-as-code HTML deck to PPTX by capturing each slide as a screenshot and placing the full-slide images into PowerPoint.
Works with
Categories
Plans and builds HTML-based web presentations through staged quick, basic or advanced workflows, with optional visualization planning, motion, a workbench and PPTX export handoff. The skill runs a strict serial pipeline from ingesting your material to delivering HTML. Steps run in order, a blocking step needs your explicit confirmation, nothing is pre-built before its gate clears, and the route stays proportional so a light deck is not escalated into a heavy stack.
PPT as Code fits situations like: building a web-based slide deck with a confirmed outline, script and image plan; turning a deck.md draft into a presentation; planning charts and diagrams for a deck before generating the HTML; preparing a handoff so an HTML deck can be exported to PPTX.
Run `npx skills add Russell-cell/PPT-as-code --skill ppt-as-code -a claude-code`. Or copy the skill folder (the Russell-cell/PPT-as-code repository) into .claude/skills/ppt-as-code in your project. Claude Code loads it when a task matches its description.
Run `npx skills add Russell-cell/PPT-as-code --skill ppt-as-code -a codex`. Or copy the skill folder (the Russell-cell/PPT-as-code repository) into .agents/skills/ppt-as-code in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Russell-cell/PPT-as-code --skill ppt-as-code -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/ppt-as-code, .gemini/skills/ppt-as-code, .github/skills/ppt-as-code and .opencode/skills/ppt-as-code in your project.
SKILL.md names no scripts, command-line tools or credentials: PPT as Code is instructions for the agent only.
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
PPT as Code is published under the MIT licence (from the LICENSE file in the skill folder). It allows redistribution, so the full SKILL.md is shown on this page.
About 11k tokens (SKILL.md is roughly 44k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 15k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with PPT as Code: Data Viz Deck (thatrebeccarae/claude-marketing, 162 stars), Qiaomu Bento Ppt (joeseesun/qiaomu-bento-ppt, 127 stars), Ky Markdown Rebuilder (KyrieCheungYep/ky-markdown-rebuilder, 117 stars) and Superloopy Slides (beefiker/superloopy, 111 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Russell-cell (a GitHub user) maintains it in Russell-cell/PPT-as-code, which has 191 GitHub stars. The repository holds 2 skills in this directory. The repository was last updated on April 14, 2026.
Source: Russell-cell/PPT-as-code on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.