--- name: ice-film description: "Internal part of Ice Motion Director, not a command: start with /ice. Workflow of Ice Motion Director for motion films made from scratch: product launch films, app ads, brand films, logo stings, kinetic type, data stories, social shorts, hype promos, UI walkthroughs, music videos, art films and industry spots. Started by the Ice Motion Director router (ice-motion-director), which creates the project first; use only when the router hands off or the user names ice-film." license: Apache-2.0 metadata: author: Omar-Tnzxo version: 0.2.7 --- # ice-film Workflow for motion films made from scratch, from the brief to the delivered film on the ten-stage spine. It never restates a domain rule; it points to the skill that holds it. ## 1. First step Look for `ice/state.json` in the working folder. - Missing: stop reading this skill. Open the router (`ice-motion-director/SKILL.md`) and follow it; it creates the project, runs the stage 01 intake and calls this workflow back. - Present: read it and resume at `current` in the recorded `mode`. Never re-ask what the files answer. Wrong route, now or mid-run (a teaching voiceover, footage to cut, a reference to remake, ideas only, Lottie or UI motion; a logo sting rendered as video stays here): go back through the router and record why in `history`. ## 2. Inputs and start 1. Read `ice/BRIEF.md` and `ice/DIRECTION.md`. When `ice/DIRECTION.md` is missing, create it with the header of `ice-direction/references/decision-process.md` section 7; never hand back for it. 2. Read the truth sheet `ice/assets/TRUTH.md` (ice-assets). No claim, number, logo, face or screen enters the film unless it is there or marked illustrative. 3. Size the job (depth table below) and pick the crew row (`references/film-setup.md` section 2) before dispatching any sub-agent. A short prompt gets the same floor as a detailed one: fill gaps from the type file and ice-direction, log each decision, never fall back to a template. **Read budget.** Each `## Spine stages` row marks its files **Required** (open them, in the order listed) or **Only if ** (open only when the condition holds). A file named with a section: read only that section. Open nothing else, and nothing a file merely mentions, unless the stage cannot be finished without it. `references/` and `roles/` paths are inside this skill; a path starting with another skill's name is in that skill's folder, next to this one. **Stops and approvals.** The run waits for the user only at the router's stops table (`ice-motion-director/SKILL.md` section 5, "Stops"). Every other "ask" in this skill and its files means, in auto mode, decide, log it in `ice/DIRECTION.md` and report it in the delivery note; in step mode, put it in that stage's review card. Approval: the user in step mode; in auto mode the stage critic the crew row assigns (`references/film-setup.md` section 2), then the approver role (`ice-direction/references/roles.md` section 5), who checks the row's "Done when" item by item. **Clarity reads** 1 to 3 in the rows below are the cold-viewer gate (`ice-qa/references/clarity-gate.md`): a FAIL blocks 07 or 10 in every mode. ## Spine stages The router owns the spine and `ice/state.json`; this section says what each stage means for a film made from scratch. Stage numbers are always two digits; steps inside a stage carry names. Each type file has one machine-readable line `Stage order: `, copied into `order`. **Parallel lanes** and the machine-readable `Stage order:` form: `ice-motion-director/SKILL.md` section 4 (`01 02 03 [04 05] 06 [07 08a] 08b 09 10` by default; a bracket is a lane). Real-screens-led films (app ad, UI walkthrough, product launch with screens) capture the real screens in 01 and run 05 before 04 (the look is the captured UI). | Stage | What this workflow does in it | Files to open | Done when | |---|---|---|---| | 01 brief | ice-direction intake first: research RQ-business, RQ-brand and RQ-rules, then the question rounds; it writes the business brief, the brand material plan and the compliance note (steps the router already ran are not repeated). Then: pick the film type and copy its `Stage order:` line; size and crew row; truth pass (every claim, number, logo, face and screen on the truth sheet or marked illustrative). Real-screens-led types capture the real screens now. Music at 01 (`references/film-setup.md` 3): track-led types take, check and measure their track now; other music-led types (brand film by default) only when a licensed track leads; otherwise they shortlist real tracks at 05, picked by ear from 2 to 3 options (`ice-audio/SKILL.md` section 5) | Required: `ice-direction/SKILL.md` section 3 Part A (stage 01 intake, steps 1 to 7, and their files); `references/film-setup.md`; `references/film-types/.md`, only its `Stage order:` line and the sections Fit, Purpose, Timing master, Truth and content, Deliverables (the other sections at the stage that uses them); `ice-assets/SKILL.md`; `ice-assets/references/truth-sheet.md` sections 1 to 4, 6 and 12. Only if a real or reference brand: `ice-assets/references/brand-authenticity.md` sections 3 and 10 (section 4 only when no official logo file exists). Only if real screens: `ice-assets/references/screen-capture.md` sections 1 and 2. Only if the film shows a product: `references/launch-principles.md` section 4. Only if a track leads: `ice-audio/references/music-choice-and-licensing.md` section 5 and `ice-audio/references/cue-map-and-beat-sync.md` section 3 | `ice/BRIEF.md` has its business brief filled or marked "not a business"; `ice/research/COMPLIANCE.md` exists; a real brand has `ice/assets/BRAND-MATERIAL.md` and `ice/assets/brand-sheet.json`; `subtype`, `size`, `order`, `crew` and `crew_flags` are in `ice/state.json`; every planned claim, number, logo and screen is in `ice/assets/TRUTH.md` or marked illustrative; real-screens-led: captures on disk; a track that leads has its sync check recorded and `ice/audio/beatgrid.png` exists | | 02 concept | ice-direction runs the pitch round; a critic picks one concept. Then three structure options from the type file that carry it; a critic picks | Required: `ice-direction/references/pitch-round.md` section A; `references/structure.md`; `references/film-types/.md` (Structure options); `ice-qa/references/clarity-gate.md` sections 2 and 6; `ice-direction/references/treatment.md` section "Craft plan". Only if a brand: `ice-qa/references/identity-tests.md`. Only if the film shows a product: `references/launch-principles.md` sections 6-7 | for a brand, the chosen concept passed the brand test and competitor swap on its blind description; the concept is logged in `ice/DIRECTION.md` and written to `ice/plan/concepts.md` with its viewer takeaway; `ice/plan/structure.md` names the chosen option, the rejected ones with one-line reasons, and a structure fingerprint that differs from previous films; `ice/plan/craft-plan.json` is drafted | | 03 script | Script step: copy, on-screen text and voiceover per beat and language. Openings step: three provisional openings and the first-3-seconds gate. Versions step: every version the brief or the type's Deliverables list (languages, aspect ratios, 15 s and 6 s cutdowns, chapters), each cutdown with its own hook | Required: `references/script.md`; `references/openers-and-endings.md`; `references/film-types/.md` (Rhythm ranges, Text density); `ice-assets/references/truth-sheet.md` section 5. Only if a beat needs a script shape: `references/script-shapes.md`. Only if voiced: `ice-audio/references/voiceover.md` section 3. Only if Arabic or mixed: `ice-arabic/SKILL.md` | `ice/plan/script.md` passes the claim test, fits its word budget, is cue-segmented and has every language checked; `ice/plan/versions.md` lists each version with its length, aspect, language and hook (or says "master only"); `ice/plan/hooks.md` holds three openings and the gate's choice | | 04 storyboard | Rough boards, composition and timing, without the look: beat table, carry and handoff contract, rough board (grey blocking frames with real copy), shot plan, motion plan. Lock lines `Style:` and `Palette:` read `set at 05` until 06 (real-screens-led films ran 05 first and write them now) | Required: `references/storyboard.md` sections 1-6; `ice-qa/references/storyboard-lint.md` sections 1-2; `references/film-types/.md` (Transition policy, Camera policy during holds, Richness floor); `ice-qa/references/clarity-gate.md` sections 1, 3, 6 and 8. Only if the film shows a product: `references/launch-principles.md` sections 1-3, 8-9. Only if a composition rule is needed: `ice-motion/references/composition-and-staging.md` section 7. Only if a beat uses a motion blueprint: `ice-motion/SKILL.md` | `ice/plan/storyboard.md` lints clean and every beat has a job, a carrier and an exit; `ice/plan/rough-board.png` exists; `ice/plan/shot-plan.md` gives every shot start, decisive and handoff states, a camera reason and a richness estimate; `ice/plan/motion-plan.md` exists; the craft plan's `use` rows carry `craft:` tags and `craft_gate.py plan` passes; clarity read 1 passes (with 05) | | 05 look | ice-direction decides palette, type, style, motion language and sound lead, each with options and a critic. This workflow makes the mood board and the style frames with real copy, real fonts and the brand's real material | Required: `ice-direction/references/pitch-round.md` section B; `references/storyboard.md` section 7; `ice-styles/SKILL.md`; `ice-qa/references/clarity-gate.md` sections 1, 3 and 8; `ice-qa/references/studio-benchmark.md`. Only if a brand: `ice-qa/references/identity-tests.md` sections 3-6. Only if type is not locked by a design file: `ice-type/SKILL.md`. Only if art is drawn in code: `ice-styles/references/code-illustration-craft.md`. Only if a real brand: `ice-assets/references/brand-authenticity.md` sections 3-4 | look entries in `ice/DIRECTION.md` each have a reason and a source; the mood board is in `ice/plan/mood-board/` and the style frames in `ice/plan/style-frames/`; the default-look gate and the 4-of-6-axes distance check pass (ice-qa measures); clarity read 1 passes (with 04, run when the later is drawn), with the brand test and swap on masked frames; the studio benchmark is logged and a capped gap was told to the user; code-drawn frames pass the art check (`references/storyboard.md` section 7); the craft plan is locked with the style's craft profile | | 06 animatic | Merge 04 and 05: fill the lock lines, build the stills board (every shot in its settled pose with the look), re-run the lint. Cue sheet step: one timing master, every cue placed. Animatic step: the stills board timed to the cue sheet with temp or final sound, or a full animatic when the depth table asks. Usual preview for the router's approval stop | Required: `references/storyboard.md` section 7; `references/cue-sheet.md`; `ice-audio/references/cue-map-and-beat-sync.md` sections 1-2; `ice-qa/references/clarity-gate.md` sections 3 and 8. Only if a full animatic: `ice-ideas/references/storyboards-and-animatics.md` section 6 | `ice/plan/stills-board.png` is at or above the type's richness floor and the lint passes with real lock lines; `ice/plan/cue-sheet.json` is locked, every cue naming its source (word, beat, transient, reading time); a full animatic is at `ice/renders/animatic.mp4`; clarity read 2 passes | | 07 build | Hardest beat and one critical transition first, stills at every cue, then the full draft at the richness floor; builders split by file on long films. Runs beside 08a | Required: `references/build.md`; `ice-engines/SKILL.md`. Only if real UI: `ice-assets/references/screen-capture.md` and `references/launch-principles.md` section 5. Only if a real brand: `ice-assets/references/brand-authenticity.md` section 11. Only if a logo sting or end lockup: `references/logo-sting-pipeline.md`. Only if `ice/plan/hooks.md` says `Render study: pending (07)`: `references/openers-and-endings.md` section 3. Only if a builder sub-agent: `roles/builder.md` | the composition builds; stills at every cue pass; the draft is a new file `ice/renders/draft-.mp4`; the art check confirms 05 on the build; `craft_gate.py build` passes | | 08 sound | 08a, beside 07: score, SFX list and voice from the locked cue sheet under the type's sound policy; no track is used before its sync license check. 08b, after 07: mix and master on the draft | Required: `ice-audio/SKILL.md`; `references/film-types/.md` (Sound policy); `references/cue-sheet.md` | 08a: score, SFX and voice are in `ice/audio/` with rows in `ice/assets/CREDITS.md`; 08b: the mix sits on the latest draft, hits land on their cues, the ice-audio loudness gate passes | | 09 review | Critic loop on the draft with its sound: fresh read-only reviewers, passes, fix order, stop rule | Required: `ice-qa/references/clarity-gate.md` sections 3 and 8; `references/build.md` (section "Review loop"); `roles/reviewer.md`; `ice-qa/references/critic-loop.md`; `ice-qa/references/critic-prompts.md`; `references/film-types/.md` (QA thresholds, Richness floor) | clarity read 3 passed before the first film round; the verdict SHIP, or the stop rule reached and written in the delivery note, is in `ice/review/`; the type's QA thresholds are measured; `craft_gate.py build` passes | | 10 deliver | Final render and master after 09 (no further approval in auto mode), then every version planned at 03 (rendered in parallel), naming, the report, the fingerprint | Required: `references/build.md` section 4; `references/delivery.md`; `ice-qa/references/delivery-report.md`. Only if a finalizer sub-agent: `roles/finalizer.md` | finals are new files in `ice/renders/final/`; every version in `ice/plan/versions.md` is rendered; `ice/review/NOTE.md` reports measured numbers honestly and lists the permissions a brand owner would need; the fingerprint is written | **Depth by size.** Sized at 01; the size changes the paperwork, never the truth pass, the stills, the richness floor or the critic. | Size | Film jobs | How the spine runs here | |---|---|---| | Micro: 6 s or less, or one asset | logo sting, one stat, effect loop, quote card | Three passes: 01, 02 and 05 condensed (the micro count of style frames in `references/storyboard.md` section 7), with 03, 04 and 06 `not_used` and folded into one plan in `ice/plan/structure.md` (structure, script, beats, cues); then 07 and 08; then 09 (the micro clarity read, one critic round plus a repair pass) and 10. Lean crew | | Standard: 7 to 60 s, its cutdowns and versions included | app ad, social short, hype promo, launch, industry spot, short brand film | Full spine and every plan file; 06 is the cue sheet plus the timed stills board, a full animatic only with final music; review rounds by the crew row | | Long or campaign: over 60 s, or chapters | narrated launch, UI walkthrough, brand film, music video, campaign | Full spine; a full animatic with the final audio before any expensive build; builders split by file; standard or full crew | | Polish of an existing film | a film that "looks basic" | 01 writes a defect list against the type's QA thresholds; work opens the stage that owns each defect; change one element at a time, never restart | **Supplied or partial material.** The router's intake table sets what each supplied item does to its stage. Differences on this route: a supplied concept still gets a structure option at 02 unless the structure was given too; a supplied script gets the first-3-seconds gate on its own opening (result reported, no new openings); a supplied storyboard is checked against the type's rhythm ranges and richness floor and its missing shot plan fields are filled; recorded voiceover or licensed music is the timing master at 06. Partial material: only the missing fields are filled, each fill logged in `ice/DIRECTION.md`, the user's own fields unchanged, the stage `partial` until the fills are approved. **Run files and changes.** Plan files in `ice/plan/`: `concepts.md`, `craft-plan.json`, `structure.md` (type, option, rejected options, length, aspect, fps, fingerprint line), `script.md` (the only home of the spoken words), `versions.md`, `hooks.md`, `storyboard.md`, `shot-plan.md`, `motion-plan.md`, `cue-sheet.json` (read by every builder, the sound and the captions). Every decision not yet in `ice/DIRECTION.md` goes there with its reason and source. Stages 01 to 03 loop until truth, structure and script agree. A later stage that exposes an earlier problem fixes the owning plan file, never the render. A change to a finished film edits the plan file, then the build, then renders a new versioned file, keeping the strong beats. The user's newest explicit note outranks earlier notes, brand rules and every default here. ## 4. Film types Twelve types: product launch, app ad, brand film, logo sting, kinetic type, data story, social short, hype promo, UI walkthrough, music video, art film, industry spot. Read `references/film-setup.md` (section 1, Film types) at stage 01 to pick the type: the shared type file fields, the signals table, and what to do when two types fit. ## 5. Rules that are scoped, not global Each source rule is right in its scope; the type file states which side applies. Timing master (voice-led, music-led, hybrid, free): the `ice-audio` skill, `references/cue-map-and-beat-sync.md` section 1, plus `references/cue-sheet.md` section 1. Cuts, crossfades, holds, camera during holds, end holds: the `ice-motion` skill, `SKILL.md` section 4. ## 6. Hard rules - Approved numbers only; truth before style. Illustrative content is labelled. - A real brand (named in the brief, or a reference brand for the field) appears only through its real material: live captures of its site and app, official brand or press kits, colours and fonts read from its own site, untouched official logos, UI rebuilt at 90 percent fidelity or better; never a guessed look. Third-party content inside its screens (cover art, user content, photos, real people's names) is replaced with licensed or neutral content (ice-assets). - Full and alive: every shot meets the type's "Richness floor". "Premium" and "minimal" subtract clutter, never fullness (`ice-motion/references/composition-and-staging.md` section 7). - Story, then frames, then style, then copy, then motion. A film styled before its story is a template. - Three different options at every creative fork this workflow owns (structures, openings); a critic chooses, never the builder. Concept and direction counts follow the ice-direction tier. - Carry, do not replace: every boundary has something that survives and moves, except inside a burst of hits and into the end card. - Differs from its nearest template or demo on 4 of 6 axes and from previous films in structure, except where a look the user chose fixes an axis (`references/structure.md` 7; `ice-direction` anti-sameness 4a). - Builders never grade their own work; reviewers are fresh and read-only. - Stills before drafts, drafts before finals, finals as new files. Never overwrite a render. - Never publish, post or schedule. Installs, downloads and spending happen only where the router's stops table (`ice-motion-director/SKILL.md` section 5, "Stops") allows; without a yes, take the path that needs none, log it, and say in the delivery note what a yes would add. ## 7. Crew size and sub-agent roles Crews are Lean, Standard and Full, by film length and complexity. Read `references/film-setup.md` (section 2, Crew size and sub-agent roles) at stage 01 to pick the row, and at any stage when you need its critic, approver, review rounds or roles. ## 8. Noncommercial folder `noncommercial/onetake/` holds PolyForm Noncommercial files. Open them only when `commercial_use` in `ice/state.json` is `no`, confirmed by the user in words. When it is `yes` or `unknown`, do not open, copy or adapt them and do not ask only to unlock them: this skill's references cover the same ground with permissive sources. ## 9. Owned elsewhere Every domain rule has one owner, named in the router's skill map (`ice-motion-director/SKILL.md`); point to it, never restate it. Sources of this workflow's method: AbubakrChan/product-launch-motion, commercial-motion-design (Omar-Tnzxo), video-production-studio (Omar-Tnzxo), echris6/motion-video-kit, heygen-com/hyperframes, imMamdouhaboammar/motion-graphics-skills (ideas only).