Prompt validator
Skill event4u-app/agent-config/dist/agent-src/skills/prompt-validator
Universal AI Agent OS — audited skills, governance rules, replayable state. One contract, every host agent.
npx -y skills add event4u-app/agent-config --skill prompt-validatorAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 7 stars7 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.
What its author says it does
Copied from the file, not written here
Pre-spend contradiction gate for AI-video runs: checks every prompt in the batch, blocks on style / character / physics mismatch. Triggers 'validate the prompts', 'check the storyboard'.
SKILL.md
6.9 KB, as published. Nobody here has run it
prompt-validator
Deterministic pre-spend gate: collect every prompt a video run is about to send (all scenes, all blocks), cross-check against each other and against the run's locked facts (character lock, vocal map, model capabilities), block with a specific error on contradiction. Skills are deterministic — a multi-scene batch fails by contradiction, not drift: two prompts that cannot both be true of the same video (AI-council convergence, 2026-06-06). One blocked batch costs a re-edit; one rendered contradiction costs the whole spend.
When to use
- Immediately before the unified storyboard/cost preview gate in
/video:from-songStep 8 //video:from-script— after every scene's eight-block prompt exists, before anything is shown for approval or sent live. - After an operator hand-edits scene prompts (
/video:scenere-runs) — re-validate the batch, not just the edited scene.
Do NOT use when:
- Only a single scene exists (nothing to contradict) — per-scene checks
in
video-directorcover internal consistency. - Pure preview with no approval intent — validate when the batch is about to be gated, not on every draft keystroke.
Inputs
<project>/script.md— every## Scene N(duration, mood, action, camera, dialogue).- Every rendered scene prompt (eight-block image/video prompts from
video-director/ blueprint JSON), in scene order. <project>/character.json— when present, the locked identity (subject, palette, wardrobe, prop, seed).<project>/vocal-map.json— when present, the signed-off line → singer assignments.- The chosen model's capability entry (
capability --model <id>).
Procedure
1. Collect the full prompt set
Read every scene's prompt blocks into one table:
scene → {style, subject, environment, action, camera, lens, lighting, mood, duration, aspect, dialogue/singer}. Prompt missing or
unparseable → block: scene N: prompt missing/unreadable — an
incomplete batch already contradicts the script.
2. Style consistency
style block must agree across all scenes — one look per video unless
the script names an intentional break (e.g. "dream sequence").
- Conflicting render families (
photorealisticvscel-shaded/claymation/watercolor) with no scripted break →style mismatch: scene 3 'photorealistic' vs scene 7 'cel-shaded'. - Conflicting era/grade tokens (
1970s film grainvsclean digital HDR) → same error shape, name both scenes + both tokens.
3. Character consistency (character mode)
With character.json present, every scene naming the subject must
match the lock:
- Wardrobe / palette / prop drift (
red coatlocked, scene saysblue jacket) →character mismatch: scene 5 'blue jacket' vs lock 'red coat'. - A scene inventing a second recurring subject the script never cast → flag — uncast identities break continuity AND the likeness gate.
- Lip-sync ownership: a scene with a
dialogue:line must name the vocal map's singer for that line — wrong mouth on wrong words is the render-money-burning failure (media-sync-ground-truth). A"?"singer with a lip-sync scene → block until resolved.
4. Physics + continuity
- Day/night or weather flips inside one contiguous song section
with no scripted transition →
continuity: scene 4 'noon sun' → scene 5 'starry night' within the same chorus. - Impossible camera/action pairs (
locked-off tripod+whip pan), (underwater+desert dust) → name scene + both tokens. - Duration / aspect vs. model envelope: any scene outside
[min_duration, max_duration]or with an unlisted aspect → block with the violated bound (defense-in-depth aftersong-to-scriptStep 1 — hand-edited prompts re-open this hole).
5. Verdict
- Zero findings → emit
prompt-validator: N scenes, no contradictions, hand the batch to the preview gate. - Any finding → block the gate. Report every finding (not just
the first), each as
class: scene(s) + conflicting values + fix hint. Operator (or calling command) fixes prompts, re-runs the validator — never "approve anyway" past a contradiction; an intentional break gets scripted (named inscript.md), which legitimizes it on the next pass.
Output format
- One line per finding —
class: scene(s) + conflicting values + fix hint— and report every finding, never just the first. - Terminal
verdict:line:OKwith the scene count, orBLOCKED (N contradictions) — fix and re-run; a blocked verdict never hands the batch to the preview gate.
prompt-validator: 12 scenes checked
✅ style: one look (neo-noir, consistent)
❌ character: scene 5 'blue jacket' vs character.json 'red coat' — align scene 5 or update the lock
❌ lip-sync: scene 9 dialogue assigned to 'Freya' but vocal-map line 24.5-27.8 is singer '?' — resolve the singer first
verdict: BLOCKED (2 contradictions) — fix and re-run
Gotchas
- An intentional style break is scripted, not waved through. Only a
break
script.mdnames is accepted; "operator said it's fine in chat" does not survive to the next run. - Re-validate after every hand-edit. One edited scene can contradict five untouched ones; the batch is the unit, not the scene.
verified: falsecapability entries still gate. Blocking on a documented-best-effort bound beats rendering past a real one; the report names the unverified flag — override by editing the manifest, never by skipping the check.
Do NOT
- Do NOT auto-fix prompts — report and block; the fix is the operator's (or calling skill's) edit, visible in the diff.
- Do NOT validate only changed scenes — always the full batch.
- Do NOT soften a contradiction into a warning — contradictions block; only consistency passes.
- Do NOT duplicate
video-director's per-scene craft checks — this skill owns cross-scene contradiction only.
See also
/video:from-song— invokes this before the unified storyboard/cost preview gate (Step 8).video-director— produces the prompts this skill cross-checks.character-consistency— the lock this skill enforces against.song-to-script— upstream timing + vocal-map source.