vid-qa

Installation
SKILL.md

Video QA (temporal + frame gate)

The automated vision gate for AI-generated ad VIDEO. vid-ad (and the format directors auto-cartoon-animation-director, ugc-street-interview-director, sitcom-parody-ad-director) make the video; this checks it before a human watches. The static counterpart is static-qa; this skill calls it on a sampled frame set, then adds the four time-only layers.

Core principle: a still can be perfect frame-by-frame and the video still be broken. Mouths float, faces morph between frames, cuts jump space, audio sounds robotic, a "tap" plays in dreamy slow-motion. Those are invisible to image QA. So video QA = the static-qa rubric on sampled frames PLUS the temporal layers below.

Two laws sit above everything: generate wide, gate hard at one place; and files-exist is never QA, watch the pixels. A green ffmpeg exit only means a file got written (a blank render passes exists / correct-dims / exit-0).

Every threshold here (lip-sync ms, cut length, slow-mo seconds) is a heuristic / tripwire, not a constant. Re-verify platform specs at use time.


Part 0. When it runs, and against what (non-negotiable)

  • Before EVERY handoff to a human, every time, INCLUDING after any re-roll. A re-roll is a new render; it gets the FULL gate, not a glance. The failure this prevents (2026-06-24): a later cut the owner found WORSE shipped because QA ran on the first pass and the re-roll was only eyeballed. No video reaches the owner until vid-qa passes on the CURRENT cut.
  • Test against the video's video-criteria.yaml (the binary checks video-success-criteria wrote). The verdict is pass/fail PER criterion, with the evidence. Those criteria are anchored to the reference + the core feel (not the client's literal feedback words), so a render can be "technically clean" and still FAIL the reference-match criterion. That failing is the whole point: a QA that passes a worse version is broken.
  • Missing or empty criteria = FAIL-CLOSED, never pass. If video-criteria.yaml is absent, empty, or (for a reference-recreation) carries no blocking: true reference-match check, vid-qa returns BLOCKED (not PASS) and routes back to video-success-criteria to write them. A render with no binary criteria cannot pass QA: skipping the criteria is the exact door the literal-words failure walked through. Record criteria_present + criteria_source in vid_qa.json.
  • After ANY change, re-QA the WHOLE affected set, not just the changed shot. A re-rolled shot drifts wardrobe / footwear / props / accumulation against its neighbors. Cross-shot continuity (Layer 4) is checked across the full set every time, never just the one shot you touched.
Installs
5
First Seen
Today
vid-qa — joydai2026-del/skills