Dalang — del tema al video
Modo y apariencia, preguntados en el Brief, bloqueados después del mismo (references/looks.md). Modo: Express (por defecto; 2.5D en Canvas 2D, references/express.md) o Studio (precisión: three.js, un héroe code-first, tableros de referencia, benchmark, revisión). Apariencia: la familia isométrica (isometric-world principal, cutaway, blueprint) o object-studio (un modelo de estudio sobre un fondo pálido). Un look 3D nunca mueve una película a Studio. Un cambio de look después del Paso 6 inicia: detén cada constructor, reescribe SPEC.md, reinicia cada grupo en un mensaje; la narración y la voz se mantienen.
Principios
7 es de Studio; el resto se aplica en ambos modos.
- Tesis visual primero (
references/looks.md): las reglas numeradas del look deciden cada fotograma y control de calidad. object-studio: estudio pálido, un acento, héroe completo 60–70 %, máquina de un solo input, instrumentos en vivo, planos fijos. - Palabras primero, imágenes al final: guion aprobado → voz → cada palabra temporizada → visuales.
- Cada cambio en pantalla aterriza en una palabra, a partir de los datos de temporización.
- El sujeto actúa en cada plano; una cámara sobre una imagen fija es una presentación de diapositivas.
- Mide, no adivines: cada número reportado proviene de un log o un script.
- Todas las preguntas por adelantado, sin bloqueo del usuario. Todas las preguntas en el Paso 1; nada después espera al usuario. Supera cada una de las 4 compuertas tú mismo una vez que sus verificaciones pasen, dilo en una línea, corre hasta la película terminada. Un cambio posterior es una nueva ronda. Sin render de calidad final antes del último (excepto los style frames del Gate 3 y la muestra del hook).
- Estilizado, fiel a la realidad. Un look por película; sin metraje, render fotorrealista, imagen generada o clip. Las partes, proporciones, escala y comportamiento coinciden con una referencia real (
references/visual-direction.md§1). - Estudio de primer nivel, nunca exagerado: style frames, pulido, rúbrica de revisión. Borradores a 10 fps; el final
--quality high --fps <brief fps>pasa todas las verificaciones. - Gratuito por defecto. Servicios de pago o medidos (ElevenLabs, HeyGen) solo cuando el usuario lo solicite, etiquetados como "de pago". Prefiere licencias comerciales OK; di cuándo una no lo es.
Propósito general. Cualquier tema, idioma, plataforma. Nunca abras otra carpeta video/<slug>/; nada se transfiere excepto un kit de serie que el usuario elija (references/brief.md "Series kit"). engine/three/ es una caja de herramientas, no un límite: un sujeto que le falte se modela a partir de su propia ley o se muestra en un look sin 3D.
Idioma. Chatea en el idioma del usuario. Cada AskUserQuestion está en inglés. Nunca infieras un idioma a partir de un nombre.
Trabaja rápido, gasta pocos tokens
-
Un video = una sesión; el estado vive en los archivos. Reanuda:
node <skill-dir>/scripts/state.mjs next,BRIEF.md, el final dePRODUCTION.md. -
Tipos de subagentes, cuando se listan: constructores (rondas de arreglo, guion, voz)
dalang-builder, cada veredictodalang-checker, hechosdalang-research; si no, de propósito general. -
Versión de la habilidad: di
next'sDALANG v…primero; nuncagit. -
Lee de forma perezosa: cada paso, solo lo que
state.mjs next --printimprima, completo, en una llamada (el Paso 0 también imprime el Paso 1; un primerapprove <n>imprime el siguiente paso: sin turnonext, sin--stepadelante); "Busca cuando sea necesario" solo cuando se te envíe allí. Nunca leas una referencia, un README del motor olessons.mdcompleto, ni una sección dos veces; de/hyperframes, solo las guías necesarias. -
Salida pequeña: filtra
--json; nunca imprimaswords.json,*.response.jsonni logs completos; salida en segundo plano por bytes (tail -c 1500). Los cambios de escena son llamadasEdit, nuncased -io un Write de archivo completo. -
El código de escena se queda en los subagentes constructores. El agente principal nunca escribe ni lee
src/oassets/*.js(salvo datos generados; los style frames van a un constructor). Piloto, cada grupo, ensamblaje y cada ronda de arreglo van a un nuevo constructor (último informe + rutas, su presupuesto enlook-build.md/express.md). El revisor nunca es un constructor. -
Las imágenes se quedan en los subagentes. El agente principal nunca
Readuna imagen fija, tira, hoja, alcance o style frame: un subagente recibe las rutas y el comando "Para el subagente" denext, devuelve un veredicto de texto. Excepción: el autor destyle-frames/src/abre cadareview/refs-board-<frame>.jpguna vez antes de su primera escritura. -
Modelo por trabajo, nunca preguntado:
state.mjs nextimprime los trabajos de subagente de cada paso con modelo y esfuerzo (state.mjs models: todos, y qué significan top/mid/light). Escala, nunca repitas. Un trabajo fallido (rojo, inutilizable, un P0 restante) va a un nuevo agente un nivel arriba: esfuerzo (bajo → medio → alto), luego modelo (light → mid → top); top · high lo limita: un P0 restante se clasifica (hero-asset.md§3). Nunca bajes ni dos veces; un trabajo limpio nunca se re-ejecuta. ≤ 3 correcciones de copia o temporización: un nivel abajo. Registra cada configuración. -
El agente principal orquesta, nunca hace el trabajo. Tu turno re-lectura la sesión (~10× la de un subagente); un bucle (escribe ↔ lint, toma ↔ retoma, arregla ↔ verifica) corre dentro de un trabajo (Pasos 3–4 también); cada respuesta te despierta: un trabajo corre hasta su veredicto; N trabajos iniciados juntos terminan ese mensaje con
wait.mjs . --expect N(timeout: 600000): un turno, una línea. Un runner (express.mjs/studio.mjs <step>) es una llamada en primer plano (timeout: 600000) cuando termina en ~9 min, nunca una cadena ni una encuesta. Un prompt de Agente es el trabajo y las rutas (≤ 15 líneas; lee a través denext --step <n> --sub). Los checkers escriben su archivo de veredicto, los constructoresreview/reports/<job>.md; ambos responden brevemente, nunca reescritos.state.mjs logviaja en el comando del paso con&&, nunca en su propio turno. -
Compacto:
workspace.mjs initestablece auto-compact (200K); en Gates 2–4 di una vez que/compactes seguro. -
Paralelo por defecto. Los trabajos independientes comienzan en un mensaje, cada agente en sus propios archivos. Los trabajos pesados (VoxCPM, render, verificación, snapshot) se ejecutan solos, nunca junto a un trabajo de modelo; pon en cola con
while kill -0 <pid>. Juntos: preflight ‖ la pregunta del tema; referencia ‖ el trabajo de investigación; después de Gate 1 el trabajo de voz ‖ assets, nunca escenas; en Gate 2 planificador y música; Paso 6 Studio: piloto, luego todos los grupos; Express: todos los grupos a la vez, sin piloto (una toma limpia pasa Gates 1–2 por sí misma a través deexpress.mjs after-voice; el planificador ejecutaexpress.mjs scaffold .); Paso 7 los borradores de verificación, luego revisor ‖ quiz ‖ Set / Reality check; Paso 8POST.mdmientras se renderiza. -
Barato antes que caro:
--sampleantes de una toma;--from-responsecuando solo{}se mueve; snapshots mientras se itera; correcciones agrupadas por ronda; QC a--fps 10 --quality draft; un render final. -
Lo que pide el usuario gana: marca una regla que lo contradiga en una línea; nunca lo pases en silencio.
-
Mensajes cortos: qué cambió, qué decidir, enlaces; en una espera, la hora del reloj de la siguiente compuerta; un paso de más de ~2 minutos recibe una estimación.
Archivos del proyecto (video/<topic-slug>/)
Registra con state.mjs log "<step> | <output> | <problems or ->". La carpeta es el proyecto HyperFrames; ejecuta comandos desde ella. Edita solo *.tpl.html; node <skill-dir>/scripts/fill_times.mjs src/index.tpl.html index.html regenera index.html (nunca a mano, sin segundo .html raíz).
Pasos
| Paso | Haz | Termina con | Lee (references/) |
|---|---|---|---|
| 0 Setup | preflight.mjs, arregla lo que reporta, carpeta del proyecto | PRODUCTION.md | brief.md §0 |
| 1 Brief | tema primero, todas las preguntas ahora | BRIEF.md | brief.md §1 |
| 2 Referencia (opcional) | mide el oficio, nunca copies | reference-measurements.md | measure-reference.md |
| 3 Guion | investigación, escritor, trabajos de lectura; approve 1 ejecuta los lints | Gate 1 | script-voice.md §3 |
| 4 Voz | un trabajo de voz; after-voice rellena, Gates 1–2 | Gate 2 | script-voice.md §4 |
| 5 Look | SPEC.md, héroe, storyboard, assets, style frames, benchmark | Gate 3 | look-build.md §5 |
| 6 Build | constructores, tiempos de BEATS/WORDS, mezcla de audio | index.html, lints limpios | look-build.md §6 |
| 7 QC | borrador, verificaciones, tiras, revisor, quiz, rondas de arreglo | Gate 4 | qc.md §7 |
| 8 Final | verificación de assets, render de alta calidad, re-verificación | final.mp4, POST.md, reporte | qc.md §8 |
En cada paso: las compuertas pasan por state.mjs approve <n> --by agent (en orden; ejecuta las verificaciones de la compuerta y rechaza con sus errores; un archivo con compuerta editado después es STALE hasta que se re-apruebe); las reglas de BRIEF.md formatean y definen el idioma; una voz grabada o clonada solo con el permiso del hablante; las páginas solo en el navegador integrado de Claude, nunca en el Chrome del usuario; registra cada paso y problema en PRODUCTION.md; comentarios de serie a través de series.mjs note, nunca en memoria.
Modo autónomo
Si el usuario da un tema y se va, usa lo que dijo, si no: Express; YouTube 16:9, 60–90 s (Shorts 9:16 para corto o ≤ 60 s); su idioma; object-studio (Studio: isometric-world); "modern balanced"; público general; VoiceStudio, voz por defecto, según brief.md Paso 0 (no listo para el Paso 4: detente y dilo). Escribe "defaults used" primero en PRODUCTION.md, registra cada decisión, termina la película. Reglas de envío: references/qc.md "User away" (un audio_qc.mjs con salida 2 que se queda se nombra en la transferencia, nunca un pase). Salta ofertas de instalación (regístralas). Nunca edites la habilidad instalada.
Cuando algo sale mal
grep -n -i '<word>' <skill-dir>/references/lessons.md.