Que fait motion-video — réaliser un film entièrement rendu par code ?
Compétence de routage pour le travail au niveau FILM. Les mouvements au niveau des éléments (durée, assouplissement, ressorts, changements de couleur dans un même composant) relèvent de motion-design ; lisez le fichier ~/.claude/skills/motion-design/local/element-motion-params.md pour les valeurs de ressort mesurées. Les preuves se trouvent dans le laboratoire <lab> (fiches techniques/Tnn, documents, mesures) ; les outils y restent également (utilisateur 2026-09-30), cette compétence cite donc leurs chemins au lieu de les copier.
Chaque règle dans les références porte un niveau de preuve (references/evidence-and-instruments.md § Niveaux) : utilisateur (l'utilisateur l'a jugée en regardant des films), mesurée (un instrument calibré l'a lue sur des films sources), vérifiée (un test A/B en aveugle l'a déplacée, plages disjointes), non validée (mesurée sur des sources, jamais testée par imitation). Ne présentez pas une règle non validée comme prouvée.
Table de routage
| Si la tâche concerne… | Lire |
|---|---|
| Ce qu'il faut décider en premier ; public, ton, couleur de fond, quelle information appartient ; association appareil-ton ; matériaux et texte | references/whole-film-rules.md |
| Quel type de film ; squelettes de sections (publicité d'introduction, publicité dynamique, visite de produit, showreel de données, vidéo explicative narrée) ; storyboard vs un paragraphe | references/film-types.md |
| Changements de section sur la barre ou sur la ligne de narration ; alignement des battements ; transitions (forme-à-forme, fondu, volet) ; mouvements de caméra | references/rhythm-transitions-camera.md |
| Construction de la page, rendu basé sur le temps, exportation en MP4, fidélité du produit (fichier de revendications), tournage d'un composant interactif en direct (§4 point 9), couverture, boucle de révision, sourcing musical et licences (§5) | references/build-and-export.md |
| Niveaux de preuve ; quel instrument de laboratoire mesure quoi ; d'où vient chaque nombre | references/evidence-and-instruments.md |
| Images ou médias générés (images ComfyUI locales, clips), coupe sur les battements musicaux, une EDL échangeable — la voie du montage, pas une page basée sur le temps (décision de l'utilisateur 2026-10-18) ; chaque asset porte un fichier de provenance ou le rendu est refusé | laboratoire tools/edit/README.md, laboratoire de conception docs/edit-route-design.md |
| Un processus physique ou algorithmique continu (une pousse, un champ qui s'étend, une vague) — un ASSET manim (séquence PNG + provenance) composé dans la page basée sur le temps, jamais un film manim entier. La production de film entier et le montage-et-composition (assets qui doivent être utilisés) sont des couches séparées (décision de l'utilisateur 2026-10-20) ; les règles de composition sont minces, première sonde en cours | laboratoire experiments/probe-manim-insert-ow2010/README.md ; proposition ~/.claude/outputs/manim-explainer-route-20261020/ |
| Paramètres de ressort / changement de couleur pour un élément | motion-design/local/element-motion-params.md |
| Avant le storyboard, chaque film : la couche de conception partagée comme copie propre du film — la liste des échecs qu'elle contient est contraignante (travail rejeté par l'auteur ; ne le répétez jamais) | <item>/inputs/design-axes.md, copié par works_contract.py open (étape 0) ; un bras de laboratoire obtient le même fichier depuis run_arm.py |
| Le même principe dans les publications, présentations ou pages web (forme multi-support, axes A–I, axes de génération J/K, écoles nommées) — théorie, lisez lors du choix | ~/.claude/references/design-axes/ |
Ordre de travail (chaque étape avant la suivante)
- Confirmer avant tout (
whole-film-rules.md§0) : but / type de film (publicité d'introduction, publicité dynamique, visite de produit, vidéo explicative, profil), où il sera diffusé, ce que le spectateur devrait faire après le visionnage, le public, la SEULE chose à retenir, l'ÉNERGIE (calme / vivant / dynamique ; demandée, jamais déduite du produit seul) et le fond, les matériaux et limites, la voix du contenu (marketing vs technique léger) et la forme de présentation (paginée vs scène continue). Un utilisateur présent → demandez ces éléments et attendez. Sans surveillance → écrivez chaque élément ouvert dansbuild/questions.mdet prenez l'interprétation la plus littérale de la demande, indiquée dansbuild/plan.md. « 產品介紹片 » seul ne tranche pas entre publicité et visite (utilisateur r14) ; « 廣告 » seul ne tranche pas entre introduction et dynamique (utilisateur r15). Un nom de genre ou de forme dans la demande (MAD, PV, showreel, …) est un type de film ET le nom du produit que le film sert comme sujet : résolvez-le par rapport àfilm-types.md§Nommage et confirmez cette définition avec l'utilisateur avant le storyboard ; un nom sans entrée là-bas est demandé, jamais déduit — un nom non confirmé est l'échec de cible erronée / attentes sous-estimées (utilisateur 2026-10-19 : demande MAD d'une ligne dont la première version est revenue en MV pur code). Élément formel ou tour de laboratoire ? (formel = quelque chose que l'auteur enverra ou remettra à quelqu'un ; la définition unique se trouve dans<works>/README.md). Formel → la PREMIÈRE écriture de la tâche estpython -X utf8 ~/.claude/tools/design-axes-mount/works_contract.py open <works>/films/<film_id> --medium video --actor main-loop [--toolbox PATH:ROLE:FACET ...], quel que soit le dossier d'où vient la demande ; collez la ligne創作輸入qu'il imprime dans le contrat de périmètre, et construisez à l'intérieur de l'élément. Un générateur, composant ou page provenant d'UN AUTRE livrable (script d'illustration d'un livre, film précédent) est une entrée de boîte à outils avec son rôle et facette, jamais une valeur par défaut (un projet de livre 2026-10-11 : le générateur de traits du livre mis à l'échelle en 1080p a été rejeté, maintenant une référence négative). Tour de laboratoire →run_arm.pymonte la même couche. - Film entier en premier (
whole-film-rules.md§1) : nommez l'UNIQUE public, ce que ce public doit savoir, le ton (l'énergie nommée à l'étape 0 ; seulement si aucun, du produit + du public), et l'UNIQUE couleur de fond (une publicité dynamique l'assouplit,whole-film-rules.md§6). Ces quatre sont fixés avant que tout appareil ne soit choisi. Si les documents du produit ne disent pas ce qu'une fonctionnalité résout, demandez au propriétaire (build-and-export.md§4 point 7) ; sans surveillance, écrivezbuild/questions.mdau lieu d'inventer un point douloureux. - Type de film (
film-types.md) : publicité d'introduction, publicité dynamique, visite de produit, showreel de données, vidéo explicative narrée, ou bande de profil — à partir du but de l'étape 0, jamais à partir du squelette le plus proche. Choisissez le squelette ; décidez storyboard (contenu fixe) vs un paragraphe (lancez plusieurs exécutions). - Source de rythme (
rhythm-transitions-camera.md§1) : musique uniquement → changements de section sur les barres ; narration ou paroles présentes → changements de section sur les débuts de ligne, et la musique n'est pas non plus verrouillée. Si un film a une narration ou non suit le type de film et le ton (étape 1-2) ; un film calme peut encore utiliser de la musique avec des sections lentes. - Table de storyboard avant le code : lisez d'abord
inputs/design-axes.md(table de routage, ligne « Avant le storyboard »). Par sectiont, titre, visuel, données, mise en page, transition entrée/sortie, objectif de caméra, intention de mouvement (une ligne par élément mobile et par couche d'effet empilée : ce que le mouvement dit ; un élément sans ligne reste immobile ou disparaît,whole-film-rules.md§2a ; un effet nommé obtient cette ligne comme description, car un nom seul dont le catalogue et les significations industrielles s'entrechoquent est construit comme la signification industrielle — lab r28, 3/3 exécutions, lecteur en aveugle ; laboratoiredocs/text-motion-vocabulary.md§3/§5), images clés (keys[]dans la timeline : au moins unrole: keypar section — le moment où un spectateur doit lire ou voir clairement, avec unholdoptionnel ;role: breakdownpour une pose intra-section qui décide comment le mouvement se déplace ; les jonctions entre sections sont dérivées, jamais écrites ; laboratoiredocs/agent-review-kbt-design.md§3), et référence rôle K/boîte à outils (nonepar défaut ; un générateur ou composant réutilisé nomme son rôle K et la facette empruntée, et doit correspondre à une entrée--toolboxdeopen). Montrez-la à l'utilisateur et attendez confirmation lorsqu'un utilisateur est présent. Enregistrez chaque décision de conception que vous prenez vous-même avecpython ~/.claude/tools/process-ledger/ledger.py addau moment où vous la prenez. Le support de la table est régi (utilisateur 2026-10-08, laboratoiredocs/production-order.mddernière section) : un JSONfilm.timeline.jsonplus une page de timeline en lecture seule générée ; requis à l'approbation = film_type, public, énergie, rhythm_source et par section at, dur, freedom (verrouillé / guidé / libre), motion_intent ; objectif de caméra / méthode prennent les vocabulaires fixes D1 / D2. L'outil (tools/timeline/, laboratoiredocs/timeline-layer-design.md) n'est PAS construit avant son jalon TL-1 — jusqu'alors conservez le tableau markdown, en utilisant ces noms de champs (les noms d'enregistrement de plan qui ont changé sont mappés dans le tableau §6.1 du design). - Appareils : chaque appareil a son propre ton ; un appareil en conflit avec le ton de l'étape 1 est abandonné, le ton n'est jamais changé pour s'adapter à l'appareil (utilisateur 2026-09-30). Un appareil standard (explosion de particules, tunnel, pile de cartes flottantes, glitch, grand-texte-comme-design, faux chiffres HUD) est utilisé uniquement avec une ligne d'intention de mouvement le liant au contenu (§2a).
- Construction (
build-and-export.md§1) : une page HTML dont chaque image est une fonction pure du temps (window.__setTime(t)) ; pas de minuteurs, pas de transitions CSS. - Exportation (
build-and-export.md§2) : exportez avec filmkit, l'outil du laboratoiretools/filmkit/render.py(profillab-round), jamais un script de capture écrit à la main. Il capture image par image, encode, vérifie, et seulement ensuite publie le nom de sortie ; soncheck.pydécide si le FICHIER est livrable. Les films formels regroupent leurs polices avec@font-face(une famille sans empattement sous licence ouverte couvrant le CJK et le latin, par exemple Noto Sans TC ; ne comptez jamais sur les polices installées sur la machine d'exportation ou de visualisation, laboratoire D26). Un film formel exporte avec--profile delivery-web(champs de format, plus blocage FK-R-18 / FK-R-19 lorsque le film n'est pas un élément de travaux ouvert avecopenou que son montage est obsolète). La sonie et le pic vrai sont rapportés parcheck.pycomme un fait (FK-R-17, info). Pour les juger par rapport à une plateforme, passez--rules <fichier de règles> --target <nom>; une cible est une revendication dans le fichier de règles avec sa source etreview_when, jamais supposée par la compétence. - Révision (
build-and-export.md§3) : feuille complète du film à 1 ips d'abord, puis détails ; retour comme « seconde / où / changement » ; un changement à la fois ; au plus 3 tours. Un film formel est ensuite révisé CÔTE À CÔTE :works_contract.py review <item>place la feuille du candidat à côté d'un film approuvé du même type choisi par balises (ou écritreference: none), et le réviseur n'est pas le constructeur (§3 point 9) — dans une session unique, un sous-agent en contexte propre litdeliver/_review/side-by-side.pnget la première ligne du verdict estreviewer: subagent-clean-context.works_contract.py deliver <item>refuse jusqu'à ce quedeliver/_review/verdict.mdsoit plus récent que le candidat. Chemin de révision par agent (utilisateur 2026-10-19, laboratoiredocs/agent-review-kbt-design.md; l'utilisateur donne la direction et le contenu de conception uniquement) : un sous-agent constructeur construit, la session de boucle principale de répartition révise et ne modifie jamais le film ; ils communiquent via des fichiers (tools/review/review.py), portes G0 storyboard (le constructeur révise le réalisateur) → G1 images clés (objets durs uniquement) → G2 fenêtres K/T (ressenti = POLISH) → G3 film complet, au plus 3 tours chacun ; seule la liste des échecs, les lignes de blocage filmkit, la fidélité du produit et les défauts vus une fois peuvent BLOQUER ; après le tour 3, la meilleure version est livrée avec les éléments ouverts listés, et le verdict ditreviewer: dispatcher-main-loop,user_watched: no(build-and-export.md§3 point 10). - Livraison avec la forme d'acceptation ci-dessous. Destination : un élément de travaux (
<works>/films\<film_id>\, prédicat dans<works>/README.md) ; le projet nommé par l'utilisateur conserve un pointeur (_MOVED_<date>.txt) ou seulement son propre livre / données. Un film construit dans son propre projet et adopté (générateur étranger) entre à nouveau avecworks_contract.py adopt <même racine> --id <id> --reviseaprès chaque tour accepté. Où se trouve chaque élément :<works>/STATUS.md(lisez-le d'abord). Un tour de laboratoire va dans<lab>\experiments\<round>\.
Modèles (utilisateur 2026-10-10, laboratoire CLAUDE.md Décisions ; causes experiments/r22-haiku/REPORT.md) : Haiku ne fait jamais un film, ni comme chef d'orchestre ni comme travailleur sur aucune étape ci-dessus ; le contenu fixe d'un composant compte comme production (laboratoire D-T12).
Verdicts que cette compétence peut donner, et comment chacun est vérifié
- « Les changements de section sont sur la barre / la ligne » →
tools/measure_product.pyoutools/narrlock.pysur le MP4 rendu (chemins du laboratoire). - « Le mouvement est continu sous la narration » →
tools/density.pypart mobile et passages fixes. - « Chaque nombre / fonctionnalité est réel » →
tools/fidelity.py+build/claims.json(T05). - « Il y a un mouvement de caméra » →
tools/camflow.py; les exécutionsat_boundarynécessitent un regard sur l'image. - « Le fichier est livrable » (lisible, longueur, taille et codec attendus, son présent quand attendu, écrit par filmkit à partir des entrées maintenant sur disque) →
tools/filmkit/check.py(render.pyl'exécute lui-même). Code de sortie 0 signifie aucune ligne bloquante, rien sur l'image. - « Ça a l'air bon / correspond à la référence » → JAMAIS à partir de chiffres. Une feuille d'images lue par modèle ET le propre visionnage de l'utilisateur (laboratoire INV-6). Les chiffres prouvent le chemin des données, pas l'image. Sur le chemin de révision par agent, ce verdict n'est jamais donné : le film est « livré sous révision par agent, non visionné par l'utilisateur » (verdict
user_watched: no). - « La sonie est sur la cible » →
check.py --rules F --target NAME; un INDÉTERMINÉ pour une cible sans tolérance est un écart dans le fichier de règles, pas un succès.
Forme de livraison (un humain doit regarder le film)
Collez les sections check.md 1 à 4 (bloquant / confirmé / nécessite un regard / indéterminé) textuellement (la section 5, les exemptions déclarées par l'auteur, reste dans le fichier) — pour un film formel à partir de la vérification --profile delivery-web, afin que les lignes FK-R-18 (montage design-axes) et FK-R-19 (timbre des travaux) soient parmi elles, plus la ligne reference: de deliver/_review/report.md, y compris les lignes rerun, avant la liste de vérification ; les propres questions de la session suivent séparément et ne sont jamais mélangées dans les sections collées. Toute opération transform.py (normalize existe depuis filmkit M3 : transform.py normalize <in> --out <new> --target-lufs X --true-peak Y ou --rules F --target NAME ; duck et convert ne sont pas construits) sur un film formel est d'abord demandée, nommant le nouveau fichier qu'elle produirait, puis exécutée avec l'accord de l'utilisateur ; un film formel transformé est revérifié avec check.py, et deliver/_review/ contient la nouvelle vérification ; aucun transform.py n'existe sur le chemin de révision par agent (le constructeur livre le fichier tel quel, la revue est sur le rendu). La livraison finit par le verdict du réviseur écrit explicitement (une phrase) dans le composant _review et, pour un film formel, la commande works_contract.py deliver <item>.
Cette compétence ne fait pas : animation d'un seul élément d'interface utilisateur (→ motion-design), étude de vidéos de référence (→ case-library).
Références
tools/filmkit/— exportation, vérification, transformation.tools/timeline/— outil de construction de timeline ; JALON TL-1 requis avant utilisation.tools/review/review.py— échange de révision par agent (portes G0–G3).tools/measure_product.py— vérifier la fidélité du produit.tools/narrlock.py— vérifier la synchronisation narration/image.tools/density.py— mesurer la densité de mouvement.tools/camflow.py— détecter les mouvements de caméra.tools/fidelity.py— vérifier les revendications du produit.- Laboratoire
docs/— notes de conception détaillées pour chaque sous-système.