blocking-first
Skill9 starsChanged 12 days agoMITView on GitHub
Blocking, previs, stand-ins, layout, animatic, rough camera, shot by shot, scene handoff: use when starting a new video or scene, when shots keep getting rebuilt, or when the creator wants to direct the shots one at a time. Blocks the whole video on the real song with simple stand-in shapes and keyed animation, locks the camera, framing and timing first, then hands each signed-off scene to its own session, which builds the real look on top of the same paths.
In this repository8 other files it gives its agents.
- animation-principlesSkill
- directing-sessionsSkill
- look-and-lightSkill
- render-checksSkill
- renderingSkill
- review-pageSkill
- shot-designSkill
- song-timingSkill
The file
We split this skill into the rules it gives an agent
8 rules. About 0 are common, 6 are distinctive, and 2 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈6
Distinctive · estimate
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 10
Before any scene gets detail.
- Distinctive: line 25
every channel passes through its keys exactly.
- Very specific: line 50
run the smoothness check over the whole scene, not just the changed shot (shot-design Verify).
- Distinctive: line 52
follow every moving object until it leaves the frame.
- Distinctive: line 53
check the main character is seen (50%+ of them reached by rays from the lens) and nothing covers their head.
- Distinctive: line 54
when a note is acted on ("keep him in frame"), check the move it produced as well as the note.
- Very specific: line 55
When they sign a scene off,: write its spec (scene-spec.md) and freeze its data.
- Distinctive: line 70
Rebuilding the whole section every round: instead of the one shot.
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Blocking first
When to use
Before any scene gets detail. On Everybody's Got A Home the blocking became the source of the camera and of every path in the film: simple shapes iterate in minutes, and detail added on top no longer moves the camera. Use it whenever framing is still open, or when detailed scenes keep being rebuilt because the shot changed.
Build the blocking as data
- Data, not code. One file per scene (the song's sections by default), plus a cast list saying what each stand-in really is (the character, the piano, the crowd). Times are film frames on the song clock; fractional frames are fine.
- Keys per channel.
- The camera: position; where it looks (a point, an anchor on an object, or a rotation); field of view; focus.
- Objects: position, rotation, scale,
show(0–1), and their own channels (a head's look angle, a transformation's progress). - A key can name a parent: it rides with another object, or with a point on it (an anchor such as
subject.head). Where the parent changes, hand over in world space with speed and acceleration matched.
- Interpolation that behaves:
- every channel passes through its keys exactly;
- between keys, a smooth curve whose speed and acceleration carry through the key (C2), so momentum never breaks;
- kept monotone, so uneven key spacing can't swing past a key;
- explicit options per key or channel:
stop(arrive and leave at rest),hold(steps),gravity(a ballistic arc to the next key).
- Scenes cover the song with no gaps. The boundary frame belongs to both scenes, and a key there is written the same in both files. Each object has one track across all files, so a boundary is never a seam.
- Pure functions read it:
cameraAt(f),objectAt(id, f),anchorAt("subject.head", f), and the text's place if the film has words in it. They're the only way any code reads a path. - Stand-ins are flat: simple shapes, flat colors, no materials, particles, fog, shadows or post. Use a color code, and never give anything round the main character the main character's color. Text placeholders get one translucent color of their own.
- Slow motion is one setting per scene (the world's clock rate over a span). The camera and the song stay on the song clock.
- Blocking clips render in seconds: muted at 720p, with the song muxed from the WAV at the same offset. A shot's clip carries its own audio, so it plays on its own.
Work with the creator shot by shot
- Every shot starts with a question. Give the stretch's line and story, quote any earlier note of theirs that touches it, and ask them to describe the shot. Build nothing ahead of their answer, stand-ins included.
- Build their words literally. "Aim at the piano with him on the right" means the aim is the piano and he sits on the
right third, with a real camera turn to get there. Use the word-to-number table in
shot-design. - One shot per round. Change that shot and nothing else.
- Fast, but never unchecked. "Fast" means no polish, not skipped checks. Every round:
- run the smoothness check over the whole scene, not just the changed shot (
shot-designVerify); - step every frame (or every second frame) of the changed shot;
- follow every moving object until it leaves the frame; nothing stops in mid-air;
- check the main character is seen (50%+ of them reached by rays from the lens) and nothing covers their head;
- when a note is acted on ("keep him in frame"), check the move it produced as well as the note.
- run the smoothness check over the whole scene, not just the changed shot (
- When they sign a scene off, write its spec (
scene-spec.md) and freeze its data.
Hand off to a scene session
- A fresh session per scene builds the real look from the spec alone: the detail, references, lighting, materials.
- It imports the paths read-only. The camera comes from
cameraAtfor every shutter sample. Each detailed model hangs onobjectAt(id, f)(its matrix, or its position and rotation). A rig's pose, simulation pieces and particles are the scene's own, relative to that. - It never copies a path into its own code. A scene that needs a path the blocking doesn't have asks the blocking's owner for it. If the creator moves the blocking later, because the real objects frame better somewhere else, the scene follows by itself.
Failure modes
- Building ahead of the creator: a crowd simulation for the whole verse before shot 1 was agreed.
- Rebuilding the whole section every round instead of the one shot.
- The main character lost in a crowd that shares their stand-in color.
- Sparse keys on an orbit stall where a coordinate turns round. Key along a computed path.
- A scene's own copy of the camera drifts from the blocking, and the approved framing quietly changes.
- A wrong id that "passes": a lookup for a deleted object that falls through to the first child turned every text card into cloth. Every lookup refuses an unknown id.
Verify
- A data check that flags gaps between scenes, boundary keys that differ between files, and unknown ids.
- The smoothness, seen and waypoint-size probes over the whole scene, every round.
- Once a scene is built, a blocking still and the real scene's still at the same frames: the camera matches exactly.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

