Commandes
/umd:go suffit au quotidien. Les autres commandes servent à piloter une étape précise.
| Commande | Pour |
|---|---|
/umd:go [ce que tu veux faire] | La commande à retenir. Lance l'étape suivante et enchaîne jusqu'à la prochaine décision. /umd:go audit, /umd:go livrer… force une étape |
/umd:kickoff [ce que tu veux faire] | Configurer ou mettre à jour le projet : brief, profil, format, route, moteur, politique de licences, outils |
/umd:storyboard [notes] | Écrire le découpage et valider le look sur images fixes avant d'animer |
/umd:build [beats ou notes] | Construire la pièce, avec des brouillons relus jusqu'à 3 tours |
/umd:render · /umd:render draft | Rendu final, fait deux fois pour prouver le déterminisme, puis analysé · brouillon rapide |
/umd:audit | Audit incrémental : seul ce qu'un changement peut affecter est revérifié. Il est complet au premier audit, après une mise à jour du plugin, ou si le dernier audit complet a plus de 30 jours |
/umd:audit quick | Vérifications automatiques seulement, sans agent : le moins cher |
/umd:audit full | Tout revérifier depuis zéro |
/umd:audit story | Un seul groupe : story, motion, sound ou delivery |
/umd:audit TXT · /umd:audit TXT-01 SAF-01 · /umd:audit blockers | Un domaine, des vérifications précises, ou seulement les points bloquants |
/umd:fix · /umd:fix blockers · /umd:fix AUD-01 | Corriger par priorité (bloquants puis majeurs), seulement les bloquants, ou un problème précis |
/umd:deliver [nom] | Livrer le rendu audité, puis les versions par plateforme demandées |
/umd:tokens [jours] | Consommation de tokens par commande, et le conseil qui ferait le plus économiser |
/umd:doctor · /umd:doctor fix | Vérifier ou installer les outils |
/umd:handoff | Écrire .motion/handoff.md pour reprendre dans une autre session |
Toutes ces commandes s'appuient sur une CLI sans dépendance, que tu peux aussi lancer toi-même : node <plugin>/scripts/umd.mjs (sans argument, elle affiche son aide). On y trouve notamment :
- rendu :
capture,still,render; - analyse :
analyze(coupes, mouvement, temps morts, flashs, loudness, planche contact),frames(--cuts: 12 images autour de chaque coupe),compare,vmaf,webperf,lint,licenses; - son :
mix(ducking, loudness,--backtimepour caler la fin de la musique sur le carton final),hits(les coups finaux d'un morceau),sync(chaque son contre son image),normalize,loudness,captions,burn; - ressources :
styles(1 323 styles, prompts et blocs ;styles matchchoisit d'après le brief),moves(120 techniques nommées),commons(images libres de Wikimedia Commons),sounds(effets et musiques libres),sfx(effets fabriqués sur place),characters(personnages, rigs, mouvements et kits 2D libres),lipsync(formes de bouche depuis une voix) ; - suivi :
next,status,tokens,estimate(durée d'un rendu à partir d'une image test),adopt(fait passer une vidéo rendue par ton propre pipeline par l'analyse, l'audit et la livraison).
Ce qu'il crée dans ton projet
BRIEF.md le brief (écrit par /umd:kickoff)
.motion/
project.json profil, route, moteur, format, rendu, politique de licences, seuils
storyboard.md les beats, les événements, les repères sonores et la ligne « Stills validated » datée
motion-tokens.json durées et courbes (format DTCG)
assets.lock.json chaque asset avec sa source et sa licence
styles/ le prompt du style choisi, avec sa ligne de crédit
LEDGER.md chaque tour de critique : ce qui a été trouvé, changé et mesuré
stills/ les images fixes clés
renders/<id>/ vidéo, render.json, analysis.json, sheet.jpg, determinism.json, logs
renders/latest.json le dernier rendu
AUDIT.md le dernier rapport d'audit
audits/<date>.json chaque audit, pour suivre la note dans le temps
audits/<date>/ evidence.json, plan.json, parts/ (résultats des auditeurs)
token-savings.json tokens évités par les sorties compactes
handoff.md le passage de relais entre sessions
assets/commons/ les images téléchargées par umd commons
deliverables/ livrables, avec leur manifeste et credits.txtVersionne BRIEF.md et .motion/, sauf les rendus, pour garder l'historique des notes. LEDGER.md et le rapport d'audit montrent le soin apporté : tu peux les joindre à une livraison client. /umd:kickoff ajoute à ton .gitignore les rendus, les logs d'audit et le compteur de tokens.
La CLI umd
Toutes les commandes s'appuient sur node <plugin>/scripts/umd.mjs, sans dépendance. Tu peux la lancer toi-même ; c'est aussi ce que les agents utilisent.
Setup
next The next step for this project (what /umd:go runs), from local files only
doctor [--fix] [--blender] [--rhubarb] Check FFmpeg, Playwright, Chromium and the route's tools (--blender: Blender and the GPU Cycles sees); --fix installs what it safely can
detect Guess engine, route and profile from the current folder
init [--force] Create .motion/ (project.json, storyboard, tokens, assets lock) and BRIEF.md from templates
rules [domain|group...] Build rules of the domains that apply to this project (compact)
Make
styles match [words] [--project p] [--limit 6] Rank the library against BRIEF.md and project.json: looks and blocks, with reasons
styles <words> [--project promo|presentation|explainer|social|logo|film|web|3d] [--mood m] [--medium m] [--format 9:16]
[--tier 2] [--kind style|prompt|block|component] [--source lemo|oscar|mg|opus|hf] Search 1323 styles, prompts and blocks (no tokens)
styles get <id> Copy that style prompt (or block card) into .motion/styles/
moves <words> [--family transitions|camera|type|...] 120 named motion techniques (match cut, whip pan, split-flap…)
commons <words> [--allow-sa] [--limit 12] Wikimedia Commons media under PD, CC0 or CC BY (BY-SA on request)
commons get "File:Name.jpg" [--dir assets/commons] [--width 1920] Download it and record it in assets.lock.json
still <html|url> --at 0,1.5 [--out dir] [--width W --height H] [--hero "#tv"] [--hero-min 170] [--seek-check]
Key stills on virtual time; measures the hero's width (an element, or window.umdHero(t) for canvas/WebGL) and
checks that each frame drawn cold equals the same frame drawn in sequence
capture <html|url> --out f.mp4 [--fps 30] [--duration s] [--width 1920 --height 1080] [--from s]
[--draft] [--transparent] [--format mp4|webm|mov|gif|png] [--audio f] [--seed n] [--subframes 16 --shutter 0.5]
Deterministic HTML → video; --subframes averages that many sub-frames per frame over the shutter (motion blur)
adopt <video> [--draft] Make a video rendered by your own pipeline the latest render (analysis, audit, deliver apply)
render [--draft] [--twice] [--no-analyze] [--engine eevee|cycles] Render the project (project.json "render"), then analyze; --engine reaches a
Blender command as UMD_ENGINE (default: render.engine)
mix --voice v.wav --music m.wav [--sfx a.wav@1.2 ...] --out mix.wav [--duck 9] [--lufs -14] [--length s] (length defaults to duration_s)
[--backtime | --hit s --card s | --music-start s] Back-time the music: its own ending lands on the end card, one continuous piece
hits <music> Strong attacks near the end of a track (candidates for its final hit)
sounds <words> [--music] [--max 8] [--cc0] Free sound effects (Freesound, Wikimedia) or music (Jamendo) via Openverse: CC0, CC BY, public domain only
sounds get <id> [--dir assets/audio] Download as 48 kHz WAV, record author, licence and credit line in assets.lock.json
characters [words] [--dims 3d|2d] [--style anime|film|low-poly|flat…] [--age child|senior…] [--face visemes|full] [--kind pack|avatars|generator|rig|motion|kit2d|code|tool] [--route blender|threejs|html]
Free characters, rigs, animation clips and 2D kits for commercial work (catalogue + live lists: Mesh2Motion, KayKit, Open Source Avatars)
characters get <id> | info <id> | add <file> --id <entry> [--licence --author --url] Download (or record a manual download) with its licence in assets.lock.json
lipsync <voice.wav> [--text script.txt] [--fps 30] Mouth shapes A–H, X per frame (Rhubarb, MIT) for character.py and the 2D puppet
sfx [<kind>] [--dur s] [--seed n] [--gain dB] Synthesise an effect (whoosh, swipe, riser, impact, subdrop, click, tick, pop, chime, shimmer, glitch, roomtone)
normalize <in> <out> [--lufs -14] [--tp -1] loudness <file>
captions <words.json> --out subs.ass|srt|vtt [--style karaoke|pop|line] [--max-chars 32] [--width --height --font --color --highlight]
burn <video> <subs.ass> --out f.mp4 Burn captions in (libass)
Check
analyze <video> [--out dir] [--loop] Probe, cuts, freezes, dead air, black, flashes, loudness, contact sheet; --loop checks the seam
frames <video> --at 1,2.5 | --every 2 | --cuts | --sheet [--out dir] [--width 960] (--cuts: 12 frames around each cut)
sync <video> [--timing timing.json | --cues storyboard.md] [--tolerance-ms 45] Do the sound hits land on their visual events?
(.motion/timing.json, the master clock, when it exists; else the storyboard's "## Sound cues")
compare <a> <b> Frame-hash equality + SSIM vmaf <encode> <master>
lint [dir] licenses webperf <url> captions-check <subs> <words.json>
evidence [--date D] All automatic checks for the audit + statuses of auto criteria
plan [scope...] [--incremental] Criteria left for the auditors assemble [--date D] status
Deliver and account
deliver [--name n] Copy the audited render to deliverables/ (refused while a blocker is open)
tokens [--days 30] [--session id] [--json] Token use per /umd:* command, from the session transcripts
run <label> "<command>" Run a command, keep the log on disk, print a compact summary
estimate --frames N [--parallel P] -- <command rendering one frame> Time one frame, multiply: render time before committing
version Plugin version
a path to show: relative inside the project, absolute outside it (never ......AppData…)
everything after a lone "--" is a command line for umd estimate, never parsed as options
boolean flags never take a value, so `umd capture --draft page.html` keeps page.html as the input
"music" is a switch only for `umd sounds --music`; `umd mix --music file.wav` takes a file
Compact output for large results: full JSON on disk, summary on stdout.
the per-second motion timeline stays in analysis.json; stdout gets its shape
---------- audit pipeline ----------
A film rendered outside umd (the project's own scripts, Blender, After Effects…) becomes the project's latest render,
so analyze, the audit and deliver judge it like any other. It never replaces the checks: it lets them run.