| name | viz-frame-audit |
| description | Trigger when: (1) the user mentions "noise", "slop", "frame audit", "video
review", "letter spacing", "padding intrusion", "frame extract", "naive
arrow", or Korean equivalents (노이즈, slop, 프레임 검수, 글자 깨짐), or
(2) after rendering a new or modified Manim scene, or (3) the user asks to
review an mp4 in `media/videos/` or `~/Downloads/`.
Post-render audit workflow for Manim 1080p60 videos. Extracts keyframes via
ffmpeg, inspects them through Claude Code's Read tool, and classifies any
defects into four standing categories (naive arrow / padding intrusion /
glyph kerning drift / frame-order error). Catalogues 12+ verified incidents
across the four GEODE scenes so each is caught the first time, not
rediscovered. The companion authoring skill is [[manim-scene-craft]].
|
Viz Frame Audit
Use after a render or re-render to verify the four defect categories. Skip it
when only the deterministic layout --static-check is needed.
The four categories
Videos are inspected against the four standing defect categories below. The
catalogue of verified incidents per category lives in
references/defect-catalogue.md.
| # | Category | Definition | Detection signal |
|---|
| 1 | Naive arrow | Head too small, head colour mismatch with body, label crossing the dashed line | head_size ≤ 0.24, head_color ≠ body color with near-vertical arrow + label at UP * 0.25 |
| 2 | Padding intrusion | Text or box within 0.1 of another box edge, or crossing the canvas edge | Box height < content height, row labels at LEFT * 6.0+, 7+ outline lines in a small box |
| 3 | Glyph kerning drift | Helvetica Neue + Pango misreads specific glyph pairs ("GE ODE", "g eneration", "fit ness", "cr itic") | Spurious space inside a word, more pronounced at smaller font_size |
| 4 | Frame-order error | Empty / half-empty transition frame, content not accumulating, line endpoint missing the last dot | _clear_section + _set_section_title called separately, LaggedStart then separate Create(connectors) |
Workflow
- Decide timestamps — cover the changed sections and adjacent transitions;
use existing key-frame manifests when applicable. Stable layout frames and
transition frames answer different questions.
- Extract —
ffmpeg -ss <t> -frames:v 1 -update 1 -q:v 2 per timestamp.
- Inspect — Use the available image-viewing tool so the model sees the
actual frame;
Bash(cat / tail) will NOT show the image.
- Classify — for every finding, assign one of the four category numbers.
- Report — present findings with timestamps and visible evidence. A review
request does not authorize edits; if fixes were requested, implement clear
defects and ask only about choices that materially change the intended design.
- When fixes are in scope, re-render and inspect the same timestamps. Compare
before/after; check for collateral regressions in adjacent bits.
Workflow details in rules/audit-workflow.md and
rules/reporting.md.
File map
Quick reference — extract + inspect
Use the isolated extraction example in
audit workflow, then inspect each
PNG with the available image viewer. Preserve prior renders and audit frames.
KO is audited separately because
Korean text width differs from English — typographic and padding defects
do not transfer 1:1.
Standing line of defence
The verify_hero_layout.py ratchet (covered in
[[manim-scene-craft]]'s rules/layout-ratchet.md) catches text-vs-container
geometry overflow at compile time. This skill's job is everything the
geometric ratchet cannot see: arrow / label spatial relationships,
typography drift inside the box, and animation timing. Steps 2 and 3
(uharfbuzz, pixelmatch) extend the compile-time ratchet so the model spends
less time inspecting frames manually — see rules/typography-drift-gate.md
and rules/pixel-ratchet.md.