slide-audit
Skill0 starsChanged 6 months agoMITView on GitHub
Render HTML slide decks to per-slide PNGs and verify layout by (1) deterministic Playwright bounding-rect diagnostic and (2) parallel subagents that visually review the screenshots. Catches text overlap, clipping, overflow, layout bugs. Triggers - 글자 겹침, 슬라이드 스크린샷, 슬라이드 검수, 슬라이드 검증, deck 리뷰, slide audit, slide overlap, slide verify, HTML 슬라이드 점검.
- Installs packages
1 other project uses a version of this.
Adopted by
Most recently taken up by
- s-choung/Research-Skillsword for word, first seen May 16, 2026
Other versions1 project uses a version of this.
Word for word · 1
- s-choung/Research-Skills★ 36100% same
Edited · 0
None found.
Wrote their own version · 0
None found.
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository15 other files it gives its agents.
- analysis-protocolSkill
- blender-atom-renderSkill
- corpus-phrase-checkSkill
- docx-scientific-formattingSkill
- html-minimalSkill
- layout-guardSkill
- matplotlib-scientificSkill
- paper-sectionsSkill
- paper-sentence-loopSkill
- paper-styleSkill
- reference-crosscheckSkill
- smart-compactSkill
- transcript2htmlSkill
- youtube2mp4Skill
- youtubeSkill
The file
Files
slide-audit
HTML 슬라이드 덱 (1920×1080, .slide + .is-active 토글 방식)의 레이아웃을 두 단계로 검증:
- Rect diagnostic (deterministic) — Playwright 로
.slide-content,.card,.two-col > .col,.hero,.timeline의getBoundingClientRect()를 측정해 content 경계/캔버스 초과를 탐지. 서브에이전트보다 정확하고 재현성 있음. - Visual audit (subagent) — 각 슬라이드 PNG 를 병렬 서브에이전트가 이미지로 열어 텍스트 겹침·잘림을 확인.
메인 에이전트는 절대 PNG 를 직접 Read 하지 말 것. 컨텍스트 낭비. 모든 이미지 판독은 서브에이전트로 위임.
핵심 원칙 — 순서 엄수
1. measure.mjs → rect 로 구조 버그부터 잡는다 (덱 1회 실행, ~10초)
2. screenshot.mjs → PNG 생성
3. 서브에이전트 dispatch (병렬) → 시각 품질 확인2025-04-14 교훈 (스킬 존재 이유): 서브에이전트가 "카드 하단이 footer 에 겹친다" 를 persistently 보고했는데, 표면 처리 (padding 조정) 로 2라운드 실패. Rect 측정으로 카드가 실제로 1033~1213px 까지 부풀어 캔버스 밖까지 튀어나왔다는 걸 확인 → 구조 CSS 버그 (grid auto-row + aspect-ratio + min-height 미설정) → 정확한 수정. 서브에이전트는 증상을 보고, measure.mjs 는 원인을 보여준다. 둘 다 돌려라.
트리거
- 사용자가 슬라이드/덱/HTML 프레젠테이션의 글자 겹침·레이아웃 이슈·검증을 요청할 때
- 예: "슬라이드 겹침 확인", "deck 검증", "HTML 슬라이드 점검", "14페이지 잘린다"
전제 조건
대상 HTML 규약:
- 슬라이드는
<section class="slide" data-index="NN">구조 .slide { opacity: 0 },.slide.is-active { opacity: 1 }- 1920×1080 캔버스, center-anchored
설치 (최초 1회)
cd ~/.claude/skills/slide-audit
[ -d node_modules/playwright ] || npm install
npx playwright install chromium중요 (Claude Code 환경): Bash 샌드박스가 Chromium 서브프로세스를 killEPERM 으로 죽입니다. Playwright 실행 Bash 호출은 dangerouslyDisableSandbox: true 로.
워크플로
1. Rect diagnostic
node ~/.claude/skills/slide-audit/measure.mjs <html-path>출력:
✓ slide 01 ok
✗ slide 14 col[0] bottom=1041 exceeds content bottom=860 by 181
...
30/30 slides clean, 0 with issues- 문제 있는 슬라이드 있으면 exit 2
- ISSUE 발견 시 즉시 CSS 수정 후 재측정. 다음 단계로 넘어가지 말 것.
- rect 가 모두 clean 이면 구조는 안전. 다음으로.
2. Screenshot 생성
node ~/.claude/skills/slide-audit/screenshot.mjs <html-path> [outdir]outdir생략 시<html디렉토리>/_screenshots/<파일명>/에 저장- 각 슬라이드 →
slide_NN.png manifest.json에 목록 기록.progress오버레이는 자동 숨김 (스크린샷에 "keys to navigate" 힌트 안 들어감)
3. 서브에이전트 병렬 dispatch (필수)
슬라이드를 8장 이하씩 배치로 나눠서 병렬 호출. 단일 메시지에 multi Agent tool_use.
배치 크기 규칙:
- 30장 → 4 배치 (8+8+7+7)
- 20장 → 3 배치 (7+7+6)
- 10장 이하 → 1 배치
각 서브에이전트에 다음 프롬프트 템플릿을 그대로 전달 (경로만 치환):
You are visually auditing screenshots of N slides from an HTML presentation deck.
Each PNG is a 1920×1080 render of one slide. Read each image using the Read tool
(it handles PNGs as images) and inspect it visually.
Target files:
1. <abs path>/slide_NN.png
...
Background: <1-2 lines about the deck — palette, structure, layout components>.
For EVERY slide, apply this checklist:
- Does the h1 title overlap or touch the pagenum on the right?
- Does text inside any card/container overflow its boundary (visible cut or extending past edge)?
- In 2-column or 3-column grids, do left/right contents encroach on each other?
- In hero layouts, does text overlap the image?
- Timeline nodes: do connector lines align with nodes?
- Does the slide-footer overlap any body content above it?
- Any element extending past the 1920×1080 canvas (clipped at edges)?
- Bullet lists visibly cut at card bottom?
RESPOND in this exact Markdown format, ONE SECTION PER SLIDE, no prose outside:
## Slide NN
- status: OK | ISSUE
- issues:
- <short description — suspected cause>
- suggested-fix: <one-line CSS hint, or "none">
Rules:
- If OK, write `- status: OK`, `- issues:` (empty), `- suggested-fix: none`.
- Keep each issue to one line.
- Do NOT open any file other than the N PNGs listed.
- Do NOT provide a summary at the end.
- Do NOT echo the checklist.4. 리포트 취합 + 의심스러우면 rect 재측정
서브에이전트 응답을 병합해 사용자에게 제시. 이슈가 보고됐는데 수정했는데도 "persistent" 가 반복되면 measure.mjs 로 돌아가서 실제 bounding rect 확인. 서브에이전트 vision 판단은 hallucination 가능 (없는 텍스트 "수석/차석" 을 보고한 실제 사례 있음). Rect 는 거짓말 안 한다.
파일
screenshot.mjs— 슬라이드 PNG 렌더러measure.mjs— rect diagnosticpackage.json— Playwright 의존성SKILL.md— 이 문서
공통 CSS 버그 카탈로그 (경험 축적)
이 카탈로그는 rect diagnostic 이 실패했을 때 체크할 구조적 원인.
| 증상 (rect) | 원인 | 수정 |
card bottom > content bottom | .slide-content grid auto-row + .card-img { aspect-ratio } | .slide-content { grid-auto-rows: 100%; overflow: hidden } + .card { min-height: 0 } + .card-img { flex: 1 1 auto; min-height: 0; } (aspect-ratio 제거) + .card-body { flex: 0 0 auto } |
col bottom > content bottom | .two-col > .col { flex column } 에 min-height 없음, 내부 img intrinsic size | .two-col { min-height: 0 } + .two-col > .col { min-height: 0; overflow: hidden } + .two-col > .col > img { flex: 0 1 auto; min-height: 0; max-height: 50%; object-fit: contain } |
timeline::before 선이 끝 node 밖으로 | 노드 개수 ≠ 5 (기본 설계) | 노드 개수별 left/right % 재설정 (4노드 = 12.5%, 3노드 = 16.6%) |
| footer overlap | --content-h 가 가용 높이 초과 | 240 (content-top) + content-h + gap + 60 (footer) + 80 (safe-y) ≤ 1080 만족하는 content-h. 80px gap 권장 → content-h: 620 |
주의
- 수정은 항상 별도 턴에서 사용자 승인 후 (검수만 이 스킬의 역할)
- 외부 리소스 (폰트·이미지 CDN) 의존 시
networkidle대기로 충분 - measure.mjs 는 30 슬라이드 ≈ 8초, screenshot.mjs 는 ≈ 12초. 검수 1회 1분 이내에 완료됨
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

