Docs/Skills and code/skill video-beat-build
.claude/skills/video-beat-build/SKILL.md
Stage 3 of the video beat pipeline (mechanical, long-running, run on HAIKU only). Build one storyboarded beat into an MP4, run the checks, fix only the mechanical failures with the troubleshooting table, and report.
name: video-beat-build
description: Stage 3 of the video beat pipeline (mechanical, long-running, run on HAIKU only). Build one storyboarded beat into an MP4, run the checks, fix only the mechanical failures with the troubleshooting table, and report. Use via the video-beats-orchestrate skill or the video-beat-build agent.
Build one beat (Haiku)
Model rule. Building takes minutes and is a fixed procedure. Run it on Haiku: Agent(subagent_type: "video-beat-build", model: "haiku", prompt: "Build beat B3"). Do not use a larger model for it.
You work on one beat B# from the repo root <home>/OneDrive/Desktop/ecosystem-generic. Prerequisite: the storyboarder has left research/the-fall-of-moser-baer/video/beat-sheet-B#.json with the lint at 0 hard gates. The sheet path below is SHEET=research/the-fall-of-moser-baer/video/beat-sheet-B#.json and S=.claude/skills/video-visual-production/scripts.
Steps
- Lint:
node $S/beatsheet-lint.js --sheet $SHEET. Must sayHard gates failing: 0. If not, go to "If something fails" (lint table). Do not build with hard failures. - (No preview build: go straight to step 3.) A build waits in a queue if two builds are already running (it prints
waiting for a build slot: that is normal, wait; do not start another copy, do not kill anything). - Full build and check (about 4 minutes):
node $S/build-beat.js --sheet $SHEET. Run it in the background if your tool times out after 2 minutes, and read the output file when it finishes. It ends withBUILD PASSED (...)orBUILD FAILED: <stage>. - Read
research/the-fall-of-moser-baer/video/STATUS-video-B#.md: every rowpassorwarn; the verdict lineHARD GATES PASS, BAR NOT YET MET. Any**FAIL**row: go to "If something fails". - Look at the contact sheet
C:/video-build/moser-baer-v7-hinglish/B#/contact-sheet.pngwith the image viewer (Read tool on the PNG). List anything visibly wrong by scene id (text cut off, overlap, an empty scene, a wrong picture). Do not fix taste issues; list them for the reviewer.
There is no review stage after you. If the check still fails after your mechanical fixes, you are done: the MP4 exists, report the failing rows plainly and stop. Do not retry more than twice.
If something fails (mechanical fixes only)
Use .claude/skills/video-visual-production/references/troubleshooting.md (the table by message). You may fix only these, with node $S/edit.js ... --sheet $SHEET --note "<why>" (it lints and reverts bad edits by itself):
T1text held too briefly: move a cue to an earlier word (edit.js words a b --sheet $SHEETto find one) or shorten the text.A3sounds too close or too many: remove one (edit.js sfx-remove <scene> <index>).STRUCTa cue outside its span: move the cue to a word inside the span.LABEL,S1,Pwarnings: leave them.
You may not: change scene types or props to make a gate pass, edit the ledger, change what is shown, edit code or rules, delete a scene. A H2, H3, H4, H5, H8 failure, a failed capture without a fallback, a T2/T3/T4 check failure, or anything you do not understand: stop and report it (the storyboarder or reviewer decides). Stop after two failed attempts at the same problem.
Report (final message, under 20 lines)
Beat; lint line; build result (BUILD PASSED or the failed stage); the status verdict; each warn row; render time; file sizes (B#.mp4); the list of visible problems from the contact sheet by scene id; any edit you made (command and note); paths: C:/video-build/moser-baer-v7-hinglish/B#/B#.mp4, contact-sheet.png, research/the-fall-of-moser-baer/video/STATUS-video-B#.md, REVIEW-B#.md. Do not call the video good.
Rules (all parallel roles)
- Touch only your beat's files. Never edit code, skills,
tools.md,CLAUDE.md, memory, another beat's files or the lint/check rules. - Never commit, push or deploy. Never kill a process you did not start. Use only
build-beat.jsto build (it holds the two-at-a-time build slots: this machine has little free memory).
Show the raw text
---
name: video-beat-build
description: Stage 3 of the video beat pipeline (mechanical, long-running, run on HAIKU only). Build one storyboarded beat into an MP4, run the checks, fix only the mechanical failures with the troubleshooting table, and report. Use via the video-beats-orchestrate skill or the video-beat-build agent.
---
# Build one beat (Haiku)
**Model rule.** Building takes minutes and is a fixed procedure. Run it on **Haiku**: `Agent(subagent_type: "video-beat-build", model: "haiku", prompt: "Build beat B3")`. Do not use a larger model for it.
You work on **one beat** `B#` from the repo root `<home>/OneDrive/Desktop/ecosystem-generic`. Prerequisite: the storyboarder has left `research/the-fall-of-moser-baer/video/beat-sheet-B#.json` with the lint at 0 hard gates. The sheet path below is `SHEET=research/the-fall-of-moser-baer/video/beat-sheet-B#.json` and `S=.claude/skills/video-visual-production/scripts`.
## Steps
1. Lint: `node $S/beatsheet-lint.js --sheet $SHEET`. Must say `Hard gates failing: 0`. If not, go to "If something fails" (lint table). Do not build with hard failures.
2. (No preview build: go straight to step 3.) A build waits in a queue if two builds are already running (it prints `waiting for a build slot`: that is normal, wait; do not start another copy, do not kill anything).
3. Full build and check (about 4 minutes): `node $S/build-beat.js --sheet $SHEET`. Run it in the background if your tool times out after 2 minutes, and read the output file when it finishes. It ends with `BUILD PASSED (...)` or `BUILD FAILED: <stage>`.
4. Read `research/the-fall-of-moser-baer/video/STATUS-video-B#.md`: every row `pass` or `warn`; the verdict line `HARD GATES PASS, BAR NOT YET MET`. Any `**FAIL**` row: go to "If something fails".
5. Look at the contact sheet `C:/video-build/moser-baer-v7-hinglish/B#/contact-sheet.png` with the image viewer (Read tool on the PNG). List anything visibly wrong by scene id (text cut off, overlap, an empty scene, a wrong picture). Do not fix taste issues; list them for the reviewer.
**There is no review stage after you.** If the check still fails after your mechanical fixes, you are done: the MP4 exists, report the failing rows plainly and stop. Do not retry more than twice.
## If something fails (mechanical fixes only)
Use `.claude/skills/video-visual-production/references/troubleshooting.md` (the table by message). You may fix **only** these, with `node $S/edit.js ... --sheet $SHEET --note "<why>"` (it lints and reverts bad edits by itself):
- `T1` text held too briefly: move a cue to an earlier word (`edit.js words a b --sheet $SHEET` to find one) or shorten the text.
- `A3` sounds too close or too many: remove one (`edit.js sfx-remove <scene> <index>`).
- `STRUCT` a cue outside its span: move the cue to a word inside the span.
- `LABEL`, `S1`, `P` warnings: leave them.
You may **not**: change scene types or props to make a gate pass, edit the ledger, change what is shown, edit code or rules, delete a scene. A `H2`, `H3`, `H4`, `H5`, `H8` failure, a failed capture without a fallback, a `T2/T3/T4` check failure, or anything you do not understand: **stop and report it** (the storyboarder or reviewer decides). Stop after two failed attempts at the same problem.
## Report (final message, under 20 lines)
Beat; lint line; build result (`BUILD PASSED` or the failed stage); the status verdict; each `warn` row; render time; file sizes (`B#.mp4`); the list of visible problems from the contact sheet by scene id; any edit you made (command and note); paths: `C:/video-build/moser-baer-v7-hinglish/B#/B#.mp4`, `contact-sheet.png`, `research/the-fall-of-moser-baer/video/STATUS-video-B#.md`, `REVIEW-B#.md`. Do not call the video good.
## Rules (all parallel roles)
- Touch only your beat's files. Never edit code, skills, `tools.md`, `CLAUDE.md`, memory, another beat's files or the lint/check rules.
- Never commit, push or deploy. Never kill a process you did not start. Use only `build-beat.js` to build (it holds the two-at-a-time build slots: this machine has little free memory).
Shown as it is in the repository at build time (2026-11-03); the home directory appears as <home>. If this page and the file differ, the file is right. Back to the catalogue.