Dalang — du sujet à la vidéo
Mode et look définis dans le Brief et verrouillés après celui-ci (references/looks.md). Mode : Express (par défaut ; 2.5D dans Canvas 2D, references/express.md) ou Studio (précision : three.js, un héros code-first, des planches de référence, un benchmark, une revue). Look : la famille isométrique (isometric-world principal, cutaway, blueprint) ou object-studio (un modèle d'étude sur un fond pâle). Un look 3D ne déplace jamais un film en mode Studio. Un changement de look après l'étape 6 déclenche : arrêter tous les builders, réécrire SPEC.md, redémarrer tous les groupes en un message ; la narration et la voix restent.
Principes
7 est spécifique au Studio ; les autres s'appliquent dans les deux modes.
- Thèse visuelle d'abord (
references/looks.md) : les règles numérotées du look décident de chaque plan et du contrôle qualité. Object-studio : studio pâle, une accentuation, héros entier 60–70 %, une machine à une entrée, instruments live, plans fixes. - Les mots d'abord, les images ensuite : script approuvé → voix → chaque mot chronométré → visuels.
- Chaque changement à l'écran atterrit sur un mot, à partir des données de synchronisation.
- Le sujet agit dans chaque plan ; une caméra sur un plan fixe est un diaporama.
- Mesure, ne devine pas : chaque nombre rapporté provient d'un log ou d'un script.
- Toutes les questions upfront, pas de passerelle utilisateur. Toutes les questions à l'étape 1 ; rien n'attend l'utilisateur ensuite. Passe toi-même chacune des 4 portes dès que ses vérifications sont passées, dis-le en une ligne, exécute jusqu'au film terminé. Un changement ultérieur est un nouveau cycle. Pas de rendu final avant le dernier (sauf les style frames du Gate 3 et l'échantillon d'accroche).
- Stylisé, fidèle à la réalité. Un look par film ; pas de séquences, rendu photoréaliste, image générée ou clip. Pièces, proportions, échelle et comportement correspondent à une référence réelle (
references/visual-direction.md§1). - Studio de haut niveau, jamais trop chargé : style frames, polissage, grille de révision. Brouillons à 10 ips ; le final
--quality high --fps <ips du brief>passe toutes les vérifications. - Gratuit par défaut. Services payants ou mesurés (ElevenLabs, HeyGen) seulement quand l'utilisateur le demande, étiquetés "payant". Privilégie les licences commerciales acceptables ; dis-le quand ce n'est pas le cas.
Objectif général. N'importe quel sujet, langue, plateforme. N'ouvre jamais un autre dossier video/<slug>/ ; rien ne se reporte sauf un kit de série choisi par l'utilisateur (references/brief.md "Kit série"). engine/three/ est une boîte à outils, pas une limite : un sujet qu'elle ne possède pas est modélisé selon sa propre loi ou montré dans un look sans 3D.
Langue. Discute dans la langue de l'utilisateur. Chaque AskUserQuestion est en anglais. Ne déduis jamais une langue d'un nom.
Travaille vite, dépense peu de tokens
- Une vidéo = une session ; l'état vit dans les fichiers. Reprendre :
node <skill-dir>/scripts/state.mjs next,BRIEF.md, la fin dePRODUCTION.md. - Types de sous-agents, quand listés : builders (tours de correction, script, voix)
dalang-builder, chaque verdictdalang-checker, faitsdalang-research; sinon usage général. - Version de la compétence : dis
nexten premier ; jamaisgit. - Lis paresseusement : à chaque étape, seulement ce que
state.mjs next --printimprime, en entier, en un appel (l'étape 0 imprime aussi l'étape 1 ; un premierapprove <n>imprime l'étape suivante : pas de tournext, pas de--stepen avance) ; "Recherche au besoin" seulement quand on y est envoyé. Ne lis jamais une référence, un README de moteur oulessons.mden entier, ou une section deux fois ; de/hyperframes, seulement les guides nécessaires. - Petite sortie : filtre
--json; n'imprime jamaiswords.json,*.response.jsonou des logs complets ; sortie en arrière-plan par octets (tail -c 1500). Les changements de scène sont des appelsEdit, jamaissed -iou un Write de fichier entier. - Le code des scènes reste dans les sous-agents builders. L'agent principal n'écrit ni ne lit jamais
src/ouassets/*.js(sauf données générées ; les style frames vont à un builder). Le pilote, chaque groupe, l'assemblage et chaque tour de correction vont à un nouveau builder (dernier rapport + chemins, son budget danslook-build.md/express.md). Le reviewer n'est jamais un builder. - Les images restent dans les sous-agents. L'agent principal ne
Readjamais une image fixe, une bande, une planche, un scope ou un style frame : un sous-agent reçoit les chemins et la commande "Pour le sous-agent" denext, retourne un verdict textuel. Exception : l'auteur destyle-frames/src/ouvre chaquereview/refs-board-<frame>.jpgune fois avant sa première écriture. - Modèle par tâche, jamais demandé :
state.mjs nextimprime pour chaque étape les tâches de sous-agent avec modèle et effort (state.mjs models: tous, et ce que top/mid/light signifie). Escalade, ne répète jamais. Une tâche échouée (rouge, inutilisable, un P0 laissé) va à un nouvel agent d'un cran au-dessus : effort (bas → moyen → élevé), puis modèle (light → mid → top) ; top · élevé la termine : un P0 laissé est classifié (hero-asset.md§3). Jamais de descente ni de répétition ; une tâche propre n'est jamais relancée. ≤ 3 corrections de copie ou de synchronisation : un cran en dessous. Log chaque paramètre. - L'agent principal orchestre, ne fait jamais le travail. Ton tour relit la session (~10× celle d'un sous-agent) ; une boucle (écriture ↔ lint, prise ↔ reprise, correction ↔ vérification) s'exécute dans une seule tâche (étapes 3–4 aussi) ; chaque réponse te réveille : une tâche s'exécute jusqu'à son verdict ; N tâches démarrées ensemble terminent ce message avec
wait.mjs . --expect N(timeout: 600000) : un tour, une ligne. Un runner (express.mjs/studio.mjs <étape>) est un appel foreground (timeout: 600000) quand il se termine en ~9 min, jamais une chaîne ni un poll. Un prompt d'Agent est la tâche et les chemins (≤ 15 lignes ; il lit vianext --step <n> --sub). Les checkers écrivent leur fichier de verdict, les buildersreview/reports/<job>.md; les deux répondent brièvement, jamais retapé.state.mjs logaccompagne la commande de l'étape avec&&, jamais son propre tour. - Compact :
workspace.mjs initdéfinit le compactage automatique (200K) ; aux Portes 2–4, dis une fois que/compactest sûr. - Parallèle par défaut. Les tâches indépendantes démarrent dans un même message, chaque agent sur ses propres fichiers. Les tâches lourdes (VoxCPM, rendu, vérification, snapshot) s'exécutent seules, jamais à côté d'une tâche modèle ; mets en file d'attente avec
while kill -0 <pid>. Ensemble : preflight ‖ la question sujet ; référence ‖ la tâche de recherche ; après la Porte 1, la tâche voix ‖ assets, jamais scènes ; à la Porte 2, planificateur et musique ; Étape 6 Studio : pilote, puis tous les groupes ; Express : tous les groupes en même temps, pas de pilote (une prise propre passe les Portes 1–2 elle-même viaexpress.mjs after-voice; le planificateur exécuteexpress.mjs scaffold .) ; Étape 7 les vérifications du brouillon, puis reviewer ‖ quiz ‖ Vérification Set / Réalité ; Étape 8POST.mdpendant le rendu. - Pas cher avant coûteux :
--sampleavant une prise ;--from-responsequand seul{}bouge ; snapshots pendant l'itération ; corrections regroupées par tour ; QC à--fps 10 --quality draft; un seul rendu final. - La demande de l'utilisateur gagne : signale une règle qui la contredit en une ligne ; ne la transmets jamais en silence.
- Messages courts : ce qui a changé, quoi décider, liens ; à une attente, l'heure de la prochaine porte ; une étape de plus de ~2 minutes reçoit une estimation.
Fichiers du projet (video/<topic-slug>/)
Log avec state.mjs log "<étape> | <sortie> | <problèmes ou ->". Le dossier est le projet HyperFrames ; exécute les commandes depuis celui-ci. Modifie seulement *.tpl.html ; node <skill-dir>/scripts/fill_times.mjs src/index.tpl.html index.html régénère index.html (jamais à la main, pas de second .html racine).
Étapes
| Étape | Faire | Se termine par | Lire (references/) |
|---|---|---|---|
| 0 Configuration | preflight.mjs, corrige ce qu'il rapporte, dossier projet | PRODUCTION.md | brief.md §0 |
| 1 Brief | sujet d'abord, toutes les questions maintenant | BRIEF.md | brief.md §1 |
| 2 Référence (optionnelle) | mesurer le savoir-faire, jamais copier | reference-measurements.md | measure-reference.md |
| 3 Script | tâches de recherche, rédaction, lecture ; approve 1 exécute les lints | Porte 1 | script-voice.md §3 |
| 4 Voix | une tâche voix ; after-voice ajoute des pads, Portes 1–2 | Porte 2 | script-voice.md §4 |
| 5 Look | SPEC.md, héros, storyboard, assets, style frames, benchmark | Porte 3 | look-build.md §5 |
| 6 Construction | builders, tempos depuis BEATS/WORDS, mix audio | index.html, lints propres | look-build.md §6 |
| 7 QC | brouillon, vérifications, bandes, reviewer, quiz, tours de correction | Porte 4 | qc.md §7 |
| 8 Final | vérification assets, rendu haute qualité, re-vérification | final.mp4, POST.md, rapport | qc.md §8 |
À chaque étape : les portes passent par state.mjs approve <n> --by agent (dans l'ordre ; il exécute les vérifications de la porte et refuse avec leurs erreurs ; un fichier verrouillé modifié plus tard est STALE jusqu'à re-validation) ; les règles de BRIEF.md formatent et définissent la langue ; une voix enregistrée ou clonée seulement avec la permission du locuteur ; les pages seulement dans le navigateur intégré de Claude, jamais le Chrome de l'utilisateur ; log chaque étape et problème dans PRODUCTION.md ; les retours de série via series.mjs note, jamais en mémoire.
Mode autonome
Si l'utilisateur donne un sujet et part, utilise ce qu'il a dit, sinon : Express ; YouTube 16:9, 60–90 s (Shorts 9:16 pour court ou ≤ 60 s) ; sa langue ; object-studio (Studio : isometric-world) ; "modern balanced" ; public général ; VoiceStudio, voix par défaut, selon brief.md Étape 0 (pas prêt à l'étape 4 : arrête et dis-le). Écris "defaults used" d'abord dans PRODUCTION.md, log chaque décision, termine le film. Règles de livraison : references/qc.md "User away" (un audio_qc.mjs exit 2 qui reste est nommé dans le transfert, jamais un pass). Saute les offres d'installation (log-les). Ne modifie jamais la compétence installée.
Quand quelque chose tourne mal
grep -n -i '<mot>' <skill-dir>/references/lessons.md.