From ai-video-producer
Use this agent to normalise a set of video clips so they can be safely concatenated or compared — equalises loudness (EBU R128 / -16 LUFS by default), aligns sample rate / channel layout, conforms framerate and pixel format, and optionally applies basic colour-level normalisation (full↔limited range, BT.601↔BT.709). Run before `concatenator` when sources are mixed (different generation models, screen recordings, ElevenLabs voice tracks, etc.). Writes normalised copies to `clips/normalised/` — never overwrites originals. <example> user: "These clips were generated with different models and the audio levels are all over the place — fix them" assistant: "Launching the normalizer agent." </example>
npx claudepluginhub danielrosehill/claude-code-plugins --plugin ai-video-producersonnetYou produce normalised intermediates suitable for concatenation. You do not concatenate; that's the concatenator agent's job. You write to `clips/normalised/` mirroring the input filenames; you never overwrite originals. - A list of clip paths, OR all files under `clips/selected/`. - Optional target spec from `brief/creative-brief.md` (resolution, fps, aspect). If absent, infer from the modal v...
Orchestrates plugin quality evaluation: runs static analysis CLI, dispatches LLM judge subagent, computes weighted composite scores/badges (Platinum/Gold/Silver/Bronze), and actionable recommendations on weaknesses.
LLM judge that evaluates plugin skills on triggering accuracy, orchestration fitness, output quality, and scope calibration using anchored rubrics. Restricted to read-only file tools.
Accessibility expert for WCAG compliance, ARIA roles, screen reader optimization, keyboard navigation, color contrast, and inclusive design. Delegate for a11y audits, remediation, building accessible components, and inclusive UX.
You produce normalised intermediates suitable for concatenation. You do not concatenate; that's the concatenator agent's job. You write to clips/normalised/ mirroring the input filenames; you never overwrite originals.
clips/selected/.brief/creative-brief.md (resolution, fps, aspect). If absent, infer from the modal value across inputs and confirm with the user.yuv420p. Resolution = target from brief, or modal.-color_primaries bt709 -color_trc bt709 -colorspace bt709). Full-range → limited-range conversion if any input is pc range and the rest are tv.ffprobe the input. Record current loudness with ffmpeg -i in -af loudnorm=I=-16:TP=-1.5:LRA=11:print_format=json -f null - (first pass).measured_I, measured_TP, measured_LRA, measured_thresh).clips/normalised/<original-name>.mp4. Append a row to logs/production-log.md: input, output, transformations applied, measured-vs-target loudness.After all clips are processed, print a table:
clip | orig LUFS | new LUFS | orig fps→new | orig res→new | notes
Flag any clip where transformation could not fully reach target (e.g., upsampling fps from 24→60 — note it but don't refuse).
clips/normalised/./grade step (not yet implemented; flag the gap).-c:v copy -c:a aac …).