pptx-html-fidelity-audit
Helps your agent compare PowerPoint presentations against their HTML originals. It checks if content and layout are correct, fixing issues like cut-off text or lost styles.
What it does
This tool compares a PowerPoint (.pptx) presentation created from an HTML file with the original HTML. It finds and fixes visual differences, such as cropped text or lost styles.
When to use it
- ✓When the PowerPoint doesn't look the same as the source HTML.
- ✓If text is missing or cut off in the PowerPoint.
- ✓When styles like italics or colors don't appear in the PowerPoint.
Example of what to ask your AI
“Compare this PPTX file with the HTML that generated it and fix the visual differences.”
Want more? Open the sections below.
How to use
The easiest way: copy the message below and paste it into Claude, ChatGPT, Cursor or any AI. It reads the skill and follows the instructions.
Skill link
Ready-to-paste message
How it works
The tool analyzes the HTML and PowerPoint separately. Then, it compares the elements of each, identifies where they differ, and generates a new PowerPoint with the corrections applied.
Installation
Easiest way: copy the skill link and paste it into Claude, ChatGPT or Cursor asking it to follow the instructions.
In the terminal (Claude Code, Codex, Cursor), in your project folder:
npx skills add nexu-io/open-design --skill pptx-html-fidelity-auditOr download just the file:
curl -L https://raw.githubusercontent.com/nexu-io/open-design/main/plugins/_official/examples/pptx-html-fidelity-audit/SKILL.md -o SKILL.mdTechnical content (original SKILL.md)
Original text by the author, straight from GitHub.
PPTX ↔ HTML Fidelity Audit
A repeatable workflow for catching the ways a python-pptx export silently drifts from its HTML source — and fixing them with a layout discipline that prevents the same regressions on the next pass.
When this skill applies
The user has:
A source HTML slide deck (typically a single-file deck with
<section class="slide">blocks):<section class="slide light"> <div class="chrome">2026 · Q2 review</div> <span class="kicker">Pillar 03</span> <h2 class="h-xl">Shipping <em>velocity</em> doubled</h2> <p class="lead">…</p> <div class="foot">page 5 / 14</div> </section>A PPTX file generated from that deck via python-pptx (or similar).
A suspicion (or visible evidence) that the PPTX doesn't match the HTML — text bleeding into the footer, italic words gone flat, hero slides not centered, sections cropped, tag styling lost.
If the user only has one of those two artifacts, this skill doesn't apply yet — first generate the missing one, or ask the user to provide it.
Why this is hard (and why a skill helps)
PPTX is a fixed-canvas, absolute-positioned medium. HTML is a fluid, flow-based medium. A naive python-pptx export pins each block at hand-picked (top, left) coordinates, which works for the first slide it was tested on and silently fails for every other slide whose content has different intrinsic height. The result is the most common drift modes:
- Footer overflow — content's
top + heightcrosses into the footer row. - Off-canvas content — bottom of last block exceeds
7.5"(16:9 canvas). - Italic loss —
<em>in HTML never getsrun.font.italic = True. - Hero slides not centered — vertical-stack slides use
MARGIN_TOPinstead of computing center. - Box bounds intruding — the text fits, but the shape's bounding box is oversized and visually crosses the rail.
- Tag/styling loss — colored chrome rows, kicker uppercase tracking, mono-vs-serif assignments quietly fall back to defaults.
Every one of these is a layout discipline problem, not a content problem. Once you adopt the discipline, they stop happening.
Workflow
The audit is five steps. Don't skip any of them — the discipline only works if the audit produces a real list of issues to drive the re-export. A fix-without-audit pass tends to leave half the issues alive.
Step 1 — Extract ground truth from the PPTX
Run scripts/extract_pptx.py <path-to.pptx> > pptx_dump.json. The script walks every shape on every slide and dumps text, position (top / left), size (width / height), and per-run typography (font name, size pt, bold, italic, color). This is the actual state of the export — don't trust the export script's intent, trust the dump.
For 14-slide decks, the dump is ~30–60 KB and human-readable.
Step 2 — Walk the HTML structure
Read the source HTML and enumerate <section class="slide"> blocks. For each, note:
- The slide's theme (
light/dark/hero light/hero dark). - The
chromerow text (top metadata). - The
kicker(small uppercase eyebrow above the headline). - The headline (h-hero / h-xl / etc.) and any sub-head.
- The body copy and any structured blocks (pipeline steps, cards, pillars, observation cards).
- The
footrow (bottom metadata). - Any
<em>or italic-styled spans — italic is the silent regression.
Map each HTML slide to a PPTX slide index. For decks following the convention "slide 1 = cover, slide N = closing", the mapping is positional.
Step 3 — Build the audit table
For each slide, walk shapes from the dump and check against expected layout rules. Use this exact table format — the severity column is what drives the fix priority:
| Slide | Issue | Severity |
|---|---|---|
| 1 cover | meta-row 底端 6.95" 蓋過 footer (6.7") | 🔴 |
| 5 checklist | row B 步驟描述底端 7.2" 切到 footer | 🔴 |
| 8 3E | 收束段落直接坐在 footer 起點 | 🔴 |
| 9 on-day | step 描述底端剛好碰 footer,無安全距 | 🟠 |
| 多處 | em (Playfair italic) 未保留 | 🟡 |
Severity rubric:
- 🔴 critical — content cropped, text invisible, footer overlap, off-canvas. Must fix.
- 🟠 high — content visible but visual hierarchy broken, no breathing room, hero not centered. Should fix.
- 🟡 medium — italic/em missing, font fallback wrong, color drift. Fix in this pass.
- 🟢 low — minor spacing/alignment, sub-pixel offsets. Note but don't block.
…
FAQ
What is 'layout discipline'?
It's a set of rules to ensure content fits correctly on the slide, preventing it from being cut off or misplaced, especially near the footer.
Do I need both the HTML and PPTX files?
Yes, the tool needs both to perform the comparison and correction.
What does 'drift' mean?
'Drift' means the content or style in the PowerPoint has deviated from what was in the original HTML, causing visual inconsistencies.
Details
Original description by the author
Audit a python-pptx export against its source HTML deck, identify layout/content drift (footer overflow, cropped content, missing italic/em, lost styling, off-rhythm spacing), and re-export with strict footer-rail + cursor-flow layout discipline. Use this skill whenever the user has a .pptx that was generated from an HTML slide deck and asks to compare/audit/verify/fix the export — including phras
repo: nexu-io/open-design
Popularity
- GitHub stars
- 101k
- Ranking position
- #581
- License
- Apache-2.0
- Updated
- 10/16/2026
Comments
- …
More skills from this repository
sample-plugin
Makes your agent create a metadata file for tests. It helps ensure code works correctly in different situations.
nexu-io/open-design
aster-atelier
Helps your agent create an artistic website with a classic look. It uses elegant imagery, blue skies, and serif fonts for a cinematic feel.
nexu-io/open-design
audio-jingle
Makes your agent generate audio like jingles and sound effects. It can create music and voices, saving the result as an audio file.
nexu-io/open-design
blog-post
Helps your agent write long articles or blog posts. It includes space for images, quotes, and author information.
nexu-io/open-design
Similar skills
intent-driven-development
Helps your agent turn ideas into clear, testable plans. Defines criteria to ensure changes are made correctly and safely.
affaan-m/ECC
product-capability
Guides your agent in turning product ideas into clear plans. It defines what needs to be done, the limits, and decisions before development.
affaan-m/ECC
article-writing
Writes long-form content like articles, guides, and blog posts with a unique style. It's useful when you need well-written texts with a consistent voice and credibility.
affaan-m/ECC