agentleFS
aurelioagencyaurelioagency/skills/motion-reel/SKILL.md

motion-reel

Skill1 starsChanged 3 months agoMITView on GitHub

Create code-rendered product reels, launch videos, showreels and promos, or animate the user's talking-head footage with resource demos, punch-ins, cutaways, synchronized sound, subtitles and a cover. Use for motion-reel requests and motion graphics on filmed videos. Branch A starts from a product; Branch B starts from footage, including a whole folder of raw phone takes for several topics plus their script file (batch mode).

14 other projects use a version of this.

Adopted by

Most recently taken up by

The file

We split this skill into the rules it gives an agent

3 rules. 0 are common, 1 is distinctive, and 2 are very specific to this project.

  • 0

    Common

    Most of the 11 edited versions we read keep these.

  • 1

    Distinctive

    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
  1. Very specific:

    Read references only for the current stage.

    line 16
  2. Very specific:

    Review: follow the shared process below, then obtain separate draft approval on the latest video before final.

    line 38
  3. Distinctive:

    Stop at all scores ≥8 or after three rounds.

    line 51

“Common” is measured: kept by at least 6 in 10 of the 11 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Motion reel

Sonnet (this session, medium) runs the mechanical work through scripts; an Opus subagent (high) plans, writes the animation code and judges visual quality. Scripts perform the mechanical work. A film is window.seek(t) in Chromium, encoded by FFmpeg; Opus does not generate video pixels. Local Whisper is also AI, but consumes no Claude tokens.

Execution contract

Use python "<skill>/scripts/pipeline.py" <stage> --project "<project>". Read PIPELINE.md once for config and commands. Run scripts from the installed skill; project copies are recovery snapshots. Standalone projects live at <Documents>/motion-reel/.work/<descriptive-topic-slug>; delivery at <Documents>/motion-reel/<slug>. Watched jobs use the root supplied by motion-reel-ingest: <Videos>/Motion Reel/Entregas/.work/<unique-topic-slug>, delivering to <Videos>/Motion Reel/Entregas/<unique-topic-slug>. Never relocate existing projects. Resolve Documents from the environment. Init refuses nonempty folders. Infer the topic before naming; never reuse another session's project.

Read references only for the current stage. Do not load all scripts, logs or images. stdout is compact; inspect manifests/logs only on failure. Reuse cached results rather than re-transcribing, re-capturing, re-rendering or rebuilding captions manually. Run status when resuming.

Approvals are real user decisions: show the actual material in the message body and wait. Record received approval using approve --gate ... --note "<actual user OK>". Never fabricate approval or treat a successful script as approval. Changed inputs invalidate dependent approvals. Existing authorization counts when it covers the exact material; direct-to-draft mode (Branch B) is such a standing authorization, for its four gates only.

Keep creative decisions with Opus: the session (Sonnet) prepares, joins, transcribes, corrects the transcript, writes docs/codex-handoff.md, then starts ONE Opus subagent (Agent tool, model: "opus", high effort) that reads only that file and what it points to, writes docs/overlay_plan.md and film/film.js (hook 1 plus the other hooks' openings), reviews the draft frames and returns a short result. Never create a subagent to run a script. See MODELS.md.

One wake per job (user 2026-10-31): every turn re-reads the whole session history, so never end a turn to wait for a render or a step. Chain all remaining mechanical work (join, transcribe, or draft render plus the other hooks' openings and checks) into ONE background command and end the turn once; wake only when it finishes, then send the videos. No "espero que termine" turns, no polling, no intermediate checks between chained steps. A command under 10 minutes runs in the foreground instead. Do not promise a token saving percentage without comparable measured runs.

Branch B: filmed talking head

Direct-to-draft mode (default for every Branch B job, user 2026-10-31: "paso los crudos y recibo ya los borradores"): the user's standing authorization (2026-10-29) covers gates cuts, union, transcript and plan. Run every check as usual, record each with approve --gate <g> --note "borrador directo: autorización del usuario 2026-10-29", and do not stop at them: cut false starts and settling, cut a long inner pause only when it is clearly a mistake, correct the transcript against audio and script, write the plan and animate. Do not message the user with progress, plans, transcripts or cut lists: they cost the user tokens. Stop at the first look and send only the videos (the subtitled hook-1 draft plus the openings of the other hooks, VARIANTS.md), with at most one line for a doubtful word or a missing resource; transcript, cuts and plan stay in the project files. Still stop and ask for anything destructive, a full disk, or footage that cannot be used. From first look on, every gate is a real user decision again.

Codex fallback: before writing film/film.js, save the full plan in docs/overlay_plan.md and a docs/codex-handoff.md (state, approved choices, project path, the next pipeline commands, what to deliver) so Codex can animate with the same plan and these scripts. When usage is running low or the remaining work is long, delegate it with the official Codex plugin (/codex:rescue --background, codex-plugin-cc) pointing at that file, instead of stopping. A session that has already hit its limit cannot delegate, so the handoff file must exist before animation starts.

Use actual SDR 9:16 footage at native resolution. Raw takes need preparation; edited footage goes directly to transcription. Infer spoken language before setting language; Spanish is only the initial default. Ask only for missing information that cannot be found. Use the user's resources; disclose additional sites/assets you find in the plan.

  1. Mixed raw batch: use the sibling motion-reel-ingest skill for scanning, classification, map approval, renaming and shared SDR conversion. Continue here with its per-topic briefs and approved resource URLs. For multiple hooks read VARIANTS.md: animate/draft only the first hook and replicate the approved animation to other hooks. Hooks of one topic share ONE caption, identical text in every hook (user 2026-11-02); only the hook and cover headline vary.
  2. Initialize: init --branch B --source "<edited-video>" or init --branch B --takes "<take1>" "<take2>". Determine take order from numbered/descriptive names, then speech if needed. For raw takes read PREP.md, run prepare, inspect ranges, start/end faces, false-start evidence, color and cover candidates. Color defaults to 35%; joined voice to -21.5 LUFS, true peak ≤ -1 dBTP. Set edits.keep/cut and cover input in config. Show cuts/color/cover; obtain cuts approval. Run join, send union preview, obtain union approval before transcription of the joined source.
  3. Transcript: transcribe extracts audio, runs local Whisper, freezes the font and produces shot evidence. Correct spelling/register against the audio; ask only about ambiguous spoken words/names/numbers. Preserve raw JSON; write transcript/approved.json. Show full corrected text, hook, CTA, shot ranges and check strip; obtain transcript approval. SUBTITLES.md S2 details corrections.
  4. Plan: read RULES.md and ANIMATION.md. Configure resource URLs (a batch brief already brings the approved one: use it, do not search again) and run assets. First propose layouts and reasons: full footage, split, cutaways or a mix. Write docs/overlay_plan.md: trigger/time, shot type, what the image adds beyond subtitles, exact text, entrance, sound and a Slam / impact column. Explicitly list every slam/impact with second and trigger word. Nothing animates from second 0: the first row starts once the camera has settled and 1–3 s after the first spoken word; the Aurelio close lands early enough to finish (RULES.md Branch B). Keep faces, subtitle band and platform UI clear. Show the table; obtain plan approval before writing scenes.
  5. Animate: Opus writes film/film.js, one scene per approved moment with the OV kit. Real assets, no invented UI, no copied reference motifs, no non-key phrase echoing subtitles. Animate the footage too: punch-ins, reframing, demos and cutaways under uninterrupted speech. Optional, only when the user asks: the 500 % → 100 % opening zoom with whoosh (OPENING-ZOOM.md); never by default. No HTML subtitles. Read ENGINE.md only for unfamiliar APIs; use matte.py only when a behind-person layer is needed. Visual code must not depend on TL.mix or TL.sfx.
  6. First look: run draft for automatic cues, SFX, mandatory music, mix, capture, captions, width checks and review sheets. SFX bus -3 dB, bed 34 dB below narration (when the user asks for louder music, set bed.under in pipeline.json, e.g. 24, so every later run keeps it); edited voice keeps its original level. Send the subtitled draft immediately as an unpolished first build. Apply feedback until the user approves first-look, before creative critique.
  7. Review: follow the shared process below, then obtain separate draft approval on the latest video before final.
  8. Finish: choose the cover photo; for the headline, show three options in the message (with the tool's name when it fits) and wait for the user's pick before running cover (COVER.md). Then set the caption content in config. Read COVER.md for composition exceptions and DELIVERY.md for text rules. Run final, then deliver: native master, subtitles, one cover frame with matching silence, checks and explicit final files. Inspect full cover/grid crop and final review images. Show video, cover and full caption. publish needs their explicit approval and retains work for future revisions.

Captions: Neue Montreal Bold 104px at design width 1080, white, shadow 6, outline/blur 0, one word at a time. One continuous shot uses one Y despite punch-ins; actual separate shots may have separate zones. Correct placement in the draft via captions.zones. Final scales approved draft zones and typography to native resolution, never re-detects them. No-face fallback zones require visual verification. Cover: white, three lines, sizes 68/166, never auto-fit; headline above the head when the free space is there (cover.anchor: "top"), torso only otherwise (COVER.md).

Branch A: product film

Read BRANCH_A.md for intake/creative details. init --branch A [--preset <name>]; fill brief, resource URLs, timeline, style guide and shotlist. Run assets. Use supplied music or synth; external voiceover only when requested with applicable credit approval. Obtain plan approval, then Opus builds deterministic spring-driven scenes with beat timing. draft handles music/grid, configured VO placement, sound, capture and review. Follow the same first-look, critique, draft approval, final and delivery stages. Final: 60fps, requested formats, -14 ±0.5 LUFS, true peak ≤ -1 dBTP. Never apply that normalization target to Branch B narration.

Shared review and completion

Technical checks are code; creative quality still needs visual judgment. Verify determinism once (node <skill>/scripts/render.mjs --verify --all from the project). After first-look approval, read CRITIQUE.md, inspect rendered contact, phone/safe-zone views and motion strips; record eight scores with evidence in docs/review_log.md. An independent Opus critic may receive only the plan, approved transcript, compact metrics and relevant images.

Stop at all scores ≥8 or after three rounds. Another round requires an unresolved issue or new change. Fix the three largest problems; inspect changed moments and affected outputs, with a final whole-film check. Never change an approved creative idea while polishing. Report unresolved scores below 8.

Send the latest draft for draft approval. final uses resource-bounded parallel segments at native size (2160×3840 for vertical 4K sources), with the timeline fps and final motion blur. Never substitute a draft or lower resolution/fps/effects to meet a deadline. --range is a layout-size preview, never a final segment. For legacy projects use render-final.py; read PIPELINE.md. Keep the owning command alive in the host's background execution session and wait for completion; never launch orphan workers. Code verifies every segment and the joined master before delivery. Report measured durations from manifests/commands.jsonl, never invented ETAs or guaranteed speedups. Deliver accessible links/previews using the host's conventions. Publishing is a separate approved action; local Drive copy does not prove cloud upload finished. Shared visual conventions do not authorize editing other skills.

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.