Auditor
Skill data2story/data2story.github.io/new/stanford/blog_opus47_0525_1602/archival/skills/auditor
Detect and fix layout issues in generated HTML using visual rendering tests. Fixes overlap, spacing, and positioning problems without changing content or design intent.From its SKILL.md
npx -y skills add data2story/data2story.github.io --skill auditorAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- no licenseNo license file was found in the repository. Code published without one is not open source by default, so using it at work is a question for whoever answers licensing questions where you are.
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
SKILL.md
7.5 KB, ~1.9k tokens by cl100k_base, as published. Nobody here has run it
Auditor
Your job is layout repair. The programmer has created the HTML with all the right content and visuals, but there may be CSS/layout issues causing overlap, misalignment, or spacing problems. You fix these technical issues without changing the creative intent.
Setup
PROJECT_DIR= first argument- Required file:
PROJECT_DIR/index.html - You will read, analyze, and edit the HTML to fix layout issues
What You Fix
In scope:
- Visual elements overlapping with text
- Missing wrapper containers around images/videos/charts
- Incorrect or missing spacing (margin/padding)
- Elements not properly centered or aligned
- Responsive layout breaking on mobile widths
- Float/positioning issues causing text wrap
- Overflow causing horizontal scroll
Out of scope (do NOT change):
- Content or prose text
- Visual design choices (colors, fonts, sizes)
- Chart data or specifications
- Interactive functionality
- Asset paths or data-* attributes
Step 1: Visual Inspection Strategy
Since you cannot run a real browser, use code analysis to detect common layout issues:
Check 1: Unwrapped visual elements
# Find images not wrapped in a container
grep -n '<img' PROJECT_DIR/index.html | head -20
# Find videos not wrapped in a container
grep -n '<video' PROJECT_DIR/index.html | head -20
# Find chart divs that might need spacing
grep -n 'class="chart' PROJECT_DIR/index.html | head -20
Pattern to detect: Visual elements (<img>, <video>, chart <div>) placed directly after <p> tags without a wrapper div.
Check 2: Missing spacing
Look for visual elements without proper margin:
- Images/videos should have
margin: 2rem 0or be wrapped in a container with that margin - Chart containers should have vertical spacing
- Stat callouts should have spacing above and below
Check 3: Centering issues
- Images should have
display: block; margin-left: auto; margin-right: autoor be in a centered container - Charts should be centered within their max-width constraint
- Full-bleed / breakout visuals should use viewport-based centering and must clear inherited
max-widthfrom wrappers likefigure.visual-container
Check 4: Responsive issues
- Images should have
max-width: 100%; height: auto - No fixed widths that exceed 720px (except full-width teasers)
- Charts should use
"width": "container"in Vega specs - Timelines or step sequences should not rely on
1000px+fixed-width absolute layouts inside the story column
Step 2: Apply Fixes
For each issue found, use the Edit tool to make minimal, surgical changes:
Fix Pattern 1: Wrap unwrapped visual elements
Before:
<p>Some text...</p>
<img src="assets/hero.png" data-des="des_01" alt="Hero">
<p>More text...</p>
After:
<p>Some text...</p>
<div class="visual-container" style="margin: 2rem 0;">
<img src="assets/hero.png" data-des="des_01" alt="Hero" style="max-width: 100%; height: auto; display: block; margin: 0 auto;">
</div>
<p>More text...</p>
Fix Pattern 2: Add spacing to chart containers
Before:
<div id="des_02" data-des="des_02" data-ana="ana_05" class="chart-container">
After:
<div id="des_02" data-des="des_02" data-ana="ana_05" class="chart-container" style="margin: 2rem auto; max-width: 720px;">
Fix Pattern 3: Fix image centering
Before:
<img src="assets/photo.jpg" data-des="des_03">
After:
<img src="assets/photo.jpg" data-des="des_03" style="max-width: 100%; height: auto; display: block; margin: 0 auto;">
Fix Pattern 4: Add responsive constraints
Before:
<video width="1920" height="1080" ...>
After:
<video style="max-width: 100%; height: auto; display: block; margin: 2rem auto;" ...>
Fix Pattern 5: Re-center full-bleed breakouts
Before:
<figure class="visual-container full-bleed" style="position: relative; left: 50%; width: 100vw; margin-left: -50vw;">
After:
<figure class="visual-container full-bleed" style="width: 100vw; max-width: none; margin-left: calc(50% - 50vw); margin-right: calc(50% - 50vw);">
If the wrapper still has a max-width from another selector, override it on the full-bleed element.
Fix Pattern 6: Give the real chart mount a measurable width
Before:
<div class="chart-container">
<div>
<div id="chart_des_08"></div>
</div>
</div>
After:
<div class="chart-container">
<div style="width: 100%; min-width: 0;">
<div id="chart_des_08" style="width: 100%; min-width: 0; display: block;"></div>
</div>
</div>
This fixes blank charts caused by the actual Vega mount collapsing to 0px without changing the chart data or spec.
Step 3: Verify Fixes
After making changes:
-
Check that you didn't break anything:
- All
data-*attributes still present - No content text was modified
- All asset paths unchanged
- No closing tags were broken
- All
-
Grep for remaining issues:
# Check if any images still lack max-width grep '<img' PROJECT_DIR/index.html | grep -v 'max-width' # Check if any videos lack responsive styling grep '<video' PROJECT_DIR/index.html | grep -v 'max-width' -
Document what you fixed:
- List the specific issues found (e.g., "3 images without wrapper containers")
- List the fixes applied (e.g., "wrapped in .visual-container divs with proper spacing")
Rules
- Use inline styles for fixes (don't modify
<style>blocks unless absolutely necessary) - Preserve all attributes — especially
data-des,data-ana,data-edt,id,class - Don't add new visual elements — only fix layout of existing ones
- Don't change content — no text modifications
- Make minimal edits — only fix what's broken
- If a chart is blank because the mount element has no width, you may fix the mount container styles — but do not rewrite the Vega data/spec unless the problem is clearly not layout-related
- Use Edit tool — don't rewrite entire sections, make surgical changes
Step 4: Report Fixes
After all fixes are applied, write PROJECT_DIR/auditor.json — a structured record of what you fixed.
[
{"type": "chart_mount_zero_width", "count": 3, "lines": [245, 312, 401]},
{"type": "full_bleed_centering", "count": 1, "lines": [89]}
]
Use these type names (match the error case filenames in errors/cases/):
chart_mount_zero_width— gave mount div explicit width/min-width/displayfull_bleed_centering— fixed breakout math or cleared inherited max-widthlayout_overlap— wrapped unwrapped visual elements in containerscomposite_chart_overflow— added width constraints to facet/vconcat childrenfigure_caption_not_centered— centered figcaption textmissing_image_responsive— added max-width/height:auto to imagesmissing_video_responsive— added responsive constraints to videos
If you made no fixes, write an empty array: [].
Output
Modified PROJECT_DIR/index.html with layout issues fixed.
PROJECT_DIR/auditor.json with structured fix report.
Done when:
- All visual elements are properly wrapped and spaced
- No elements overlap with text content
- Responsive constraints are in place
- All original content and attributes are preserved
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.