Communitygithub.com

coder-xieshijie/filmsmith

Cortometrajes técnicos realizados por cualquier agente de código, dibujados y musicalizados íntegramente en código (HyperFrames) a partir de una plantilla de modo. Diez modos —Thread, Ink, Plakat, Blueprint, Phosphor, Tally, Trace, Morph, Halftone, Pulse— cada uno con preajustes de paleta, una variante formal, un registro de escenas y una plantilla renderizable; la duración sigue el contenido, el ritmo es ágil, cada render se mide. Úsalo cuando te pidan crear, recrear o reestilizar un lanzamiento, promoción, teaser, reel, historia de datos o video explicativo para un producto técnico, o para elegir un estilo visual para uno.

¿Qué es filmsmith?

Filmsmith es una habilidad para agentes de código (como Claude Code, Cursor o Codex) que permite crear cortometrajes técnicos animados y sonorizados enteramente mediante código, sin necesidad de actores ni equipos de producción. Utiliza el framework HyperFrames para dibujar cada imagen y sintetizar cada sonido, requiriendo solo Node.js, ffmpeg y un agente capaz de ejecutar comandos de shell. La habilidad ofrece diez modos visuales distintos (Thread, Ink, Plakat, Blueprint, Phosphor, Tally, Trace, Morph, Halftone, Pulse), cada uno con una paleta de colores predefinida, una variante formal y un registro de escenas que dicta la estructura narrativa. El flujo de trabajo guía al agente desde la clarificación del contenido y el modo, pasando por el andamiaje del proyecto con `new-film`, la planificación conceptual y de ritmo, la edición de `content.js`, la generación de vistas previas y el render final, hasta la revisión automatizada con `check-film`. La habilidad enfatiza un estilo visual 'rápido, directo y limpio', donde cada cambio trae un elemento nuevo y el espectador nunca espera. Además, incluye un proceso de medición y revisión para garantizar la calidad del render, y un sistema de mantenimiento para incorporar veredictos del usuario en reglas futuras.

Compatible con✓Claude Code~Codex CLI~Cursor
npx skills add coder-xieshijie/filmsmith

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

¿Qué hace filmsmith?

Diez formas de filmar tu código. Crea un cortometraje técnico —una demostración de tecnología, un informe técnico o explicador, el lanzamiento de un producto técnico— a partir de un resumen. Su duración se calcula a partir del contenido, sin personas en pantalla: elige un modo, copia su plantilla, completa content.js, renderiza. Cada imagen se dibuja en código y cada sonido se sintetiza en código (una pista musical generada puede reemplazar la base), por lo que una película solo necesita un agente de código que pueda ejecutar comandos de shell. La habilidad se sustenta en una teoría del gusto (fundamentos), diez principios fundamentales derivados de ella y de los veredictos del propietario, un sistema compartido de colores, tipografía, espacio y movimiento, y diez modos que los aplican, cada uno a un lenguaje visual propio.

El estilo característico de cada modo: rápido, directo y limpio — algo cambia aproximadamente en cada pulso, cada cambio trae algo nuevo, y el espectador nunca espera por la película — y limpio no es simple: pocos elementos, cada uno moviéndose con la fluidez suficiente para mantener la atención (principios 4–6).

Requisitos

  • Cualquier agente de código que pueda ejecutar comandos de shell. SKILL_ROOT a continuación es la carpeta que contiene este SKILL.md.
  • Node 22 o superior, ffmpeg y ffprobe en el PATH. new-film los verifica y se detiene con un mensaje si falta alguno.
  • Red mientras se configura y renderiza una película: fuentes de un commit fijo de google/fonts y la compilación fija de GSAP del registro npm (ambos almacenados en la carpeta de la película), la primera ejecución de npx [email protected] (que también obtiene su Chrome sin interfaz gráfica), y en el momento del render el compilador de HyperFrames puede obtener faces de fuente de Google Fonts también. No se verifica el renderizado sin conexión. Mantén la versión de hyperframes que fijan las plantillas; no la actualices dentro de una película.
  • El texto en pantalla está en inglés en esta versión; cuando el usuario solicite chino u otro idioma, indica que las plantillas aún no lo admiten.

Modos

Modo中文AspectoVariante formalÚsalo para
thread一线Una línea que se convierte en todo, sin cortesthread: regla uniforme o línea ensanchadaReels de una cadena de herramientas de video, movimiento o renderizado
ink落墨Tipografía pesada que golpea en cada pulso, una gota de tinta que florece en colortypeWidth: tipo comprimido o extendidoRevelaciones de nombre, stings de lanzamiento, afirmaciones de una línea
plakat招贴Carteles de estilo internacional en movimiento, un color señalform: campos cuadrados o diagonalesUna afirmación más pasos y la persona que decide
blueprint蓝图Un dibujo de ingeniería trazado hoja por hoja, sellos ámbarlinework: tinta o lápizSistemas y flujos de trabajo con partes y aprobaciones
phosphor荧屏Terminal nocturna, un acento fósforo, HUD de lanzamientoscreen: raster CRT o planoHerramientas CLI y de desarrollador
tally算筹Un cuadrado por elemento, reagrupando de gráfico en gráficomark: cuadrado, punto o glifo IsotypeRecuentos, cuotas, historias de conjuntos de datos
trace演算Diagrama en vivo oscuro del estado de un algoritmostroke: vectorial o bocetoCómo funciona un mecanismo o algoritmo
morph一笔Una forma de tinta que asciende punto → línea → plano → sólido → interfaz → marca, sin cortescorners: redondeado o rectoHerramientas de desarrollador y productos de interfaz: una fuente se convierte en cada superficie
halftone网点Impresión de dos tintas: una pieza de la marca permanece quieta mientras cada mundo se imprime a su alrededor, luego retrocede a la marca completadot: pantalla redonda, cuadrada o linealLanzamientos de modelos y productos: algunas características, un número, el nombre
pulse节拍Una pregunta representada como una consulta: una palabra por pulso, fondos cambiando a lo largo de un tono, un fundido a blanco para la respuestaaperture: corte o redondoLanzamientos de versiones y respuestas de benchmarks: una conclusión medida

Cada modo tiene preajustes de color (en su ficha) y una variante formal, ambos configurados en content.js; el renderizado por defecto es como antes. Cada ficha enumera sus casos de uso con un ejemplo práctico y marca la mejor opción. Los nombres anteriores al 2026-10-19 (thread-reel, ink-beat, swiss-poster, blueprint-drafting, terminal-launch, unit-data, diagram-explainer) aún funcionan en new-film.

Reglas de selección y formato de ficha de modo: references/modes/README.md. Los modos no se mezclan. Temas (esqueletos narrativos y reglas por tipo de película): lanzamiento-producto-técnico para thread, ink, plakat, blueprint, phosphor, morph, halftone y pulse; explicador-técnico para tally y trace.

Flujo de trabajo

1. Aclarar

Omite lo que el usuario ya ha proporcionado; pregunta el resto, el modo primero. Pregunta en conversación sencilla, como máximo tres preguntas a la vez; cuando una laguna no bloquee el inicio, asume y dilo. Cada película es 16:9, 1920×1080, para reproducción horizontal a pantalla completa; cuando te pidan una película vertical o cuadrada, indica que la habilidad no la crea.

#PreguntaPor qué
1¿Cuál es el contenido: una herramienta, una afirmación con pasos, un sistema, un nombre, un reel, números, un mecanismo?Decide el modo (tabla de selección); proponlo y explica por qué
2¿De dónde vienen los datos (repositorio, documento, conjunto de datos, algoritmo)?Cada hecho en pantalla proviene de ahí; cada número se calcula
3¿Plataforma y una duración objetivo, si la hay?La duración se calcula a partir del contenido (principio 5); un objetivo mueve el tempo dentro del rango del modo, luego se cortan o añaden escenas
4¿Qué preajuste de paleta?Solo preajustes, listados en la ficha del modo; sin valores hexadecimales personalizados
5¿Restricciones estrictas (debe mostrar, no debe mostrar, URL, nombre)?Evita retrabajo
6¿Música: este agente puede llamar a una API de generación de música?Si es así, una base generada al tempo de la película reemplaza la sintetizada (sistema); si no, se usa la base sintetizada y se indica en la entrega

Se completa cuando el modo, la fuente y el preajuste están nombrados, la fuente musical se conoce y la duración objetivo, si la hay, está definida.

2. Andamiar

node <SKILL_ROOT>/scripts/new-film.mjs <modo> <directorio-pelicula> --palette <id>

Esto verifica Node y FFmpeg, copia la plantilla, añade el runtime compartido como lib/ (sellado con lib/VERSION), escribe el esqueleto de PLAN.md, descarga las fuentes listadas en el fonts.json de la plantilla desde un commit fijo de google/fonts y la compilación fija de GSAP en lib/vendor/; se detiene si alguna falla, por lo que una película nunca se renderiza con un face de respaldo ni depende de una CDN. Las plantillas que necesitan los ejes de una fuente variable los declaran en fonts.json (rangos de weight y stretch, consulta CONTRACT.md). Luego lee la ficha del modo y el TEMPLATE.md de la carpeta por completo: el registro de escenas, el límite de caracteres de cada ranura y la coreografía fija se encuentran allí. Completa cuando puedas nombrar cada tipo de escena que ofrece el modo.

3. Concepto y plan de ritmo

new-film ha escrito un esqueleto de PLAN.md en la carpeta de la película. Complétalo antes de tocar content.js; una película sin plan no se renderiza (principio 10):

  1. Frase de concepto, en la forma "En esta película, [algo que solo tiene este producto] se convierte en [el dispositivo característico del modo]", y la prueba del rival: con el competidor más cercano en la frase, ya no debe cumplirse. Luego el hilo conductor (el objeto o marco que guía el ojo del primer al último fotograma).
  2. Lista de prohibiciones: comienza con los valores predeterminados de fábrica del modo y ai-tells.md; añade cualquier cosa demasiado cercana a la película de referencia más cercana.
  3. Referencia más cercana y tabla de motivos: nombra la película de referencia más cercana y enumera los motivos que la película comparte con ella; en un modo con una referencia conocida, más de la mitad compartidos falla P1.
  4. Plan de ritmo: una fila por escena — tipo de escena, texto en pantalla y cuál es texto principal o de vistazo, la fuente del dato, en qué se convierte esta escena en la siguiente, y dónde la música hace una pausa para lectura o baja para el momento clave. Las duraciones no se eligen: escribe las escenas en content.js y ejecuta npm run fit, que imprime el inicio de cada escena, los pulsos, la necesidad de lectura, el relleno antes de un giro y su parte del redondeo de frase, y la duración de la película, escribe renders/timing.json, y copia la tabla en PLAN.md entre sus marcadores fit. npm run fit se detiene si falta PLAN.md y advierte si aún tiene partes <!-- fill --> sin completar.

Antes de escribir texto, lee la tabla de duración en el TEMPLATE.md del modo: indica qué ranuras de cada escena cuentan como texto principal y cómo ingresan, para que cada estado pueda presupuestarse en lugar de descubrirse. Completa cuando cada tipo de escena esté en el registro, cada cadena quepa en su límite de caracteres, cada número nombre el código que lo calcula, y npm run fit no reporte errores. Los límites de caracteres son solo un primer filtro: el ancho de una ranura puede depender de sus vecinas, por lo que la verificación de píxeles es la barrera roja en el paso 4. En una plantilla cuyas reglas declaren API de tiempo 3, un error significa que la película rompe uno de los cuatro niveles de cambio (principio 5): más de cinco palabras de texto principal entrando a la vez (ocho para una afirmación, leída en una pausa marcada), una pausa después de un aterrizaje de más de dos pulsos, una composición de más de 6 s, un intervalo de más de cuatro pulsos sin un cambio, o el número o ubicación incorrectos de transiciones expresivas y picos. Divide las líneas largas en frases que entran una tras otra primero, luego convierte las etiquetas repetidas en texto de vistazo, luego divide la escena; nunca reduzcas el tipo ni aceleres por debajo del umbral de lectura. Debajo de la tabla de tiempo, npm run fit imprime las medidas de los niveles; una plantilla que aún esté en API 2 mantiene sus límites de página (doce palabras principales, la pausa de un paso un compás y la última uno y medio, una página cuatro compases) y muestra los niveles como una nota INFORMATIVA.

4. Rellenar y encuadrar primero

Edita content.js (y data/ o run.js donde el modo los use); nunca escribas duration o bars de escena para alcanzar una duración. Luego renderiza fotogramas fijos de los fotogramas clave y míralos antes de animar (el script ejecuta fit primero, por lo que los fotogramas fijos usan la duración actual):

npm run snapshot -- --at <t1>,<t2>,<t3>

Una barra roja en un fotograma fijo nombra una ranura cuyo texto es más ancho que su caja: acorta ese texto. Corrige cualquier fotograma que falle un principio fundamental o un principio del modo: texto informativo por debajo de 25 px, texto ilegible, más de tres niveles tipográficos, dos protagonistas, un segundo acento, copia recortada o desbordada, cualquier cosa de ai-tells.md. Completa cuando cada fotograma clave pase las verificaciones P0 de la ficha del modo.

5. Renderizar

npm run film        # fit → audio → check → render, escribe renders/film.mp4

npm run check debe reportar 0 errores. Sus advertencias se evalúan contra la lista de verificación: una advertencia de contraste solo es aceptable en texto que aún está entrando (escribiendo, apareciendo gradualmente) y se lee una vez que se ha posado; cualquier otra advertencia se corrige o se enumera en Problemas conocidos. El sonido sigue content.js en la misma cuadrícula de pulsos; para usar música generada en su lugar, renderízala al tempo y duración ajustados de la película (renders/timing.json), guárdala en assets/audio/ y configura content.bed = { file, offset } (consulta el TEMPLATE.md del modo).

6. Medir y revisar

node <SKILL_ROOT>/scripts/check-film.mjs renders/film.mp4 --film-dir .
sh <SKILL_ROOT>/scripts/contact-sheet.sh renders/film.mp4 renders/contact-sheet.jpg 20

check-film lee renders/timing.json y mide el render contra él: formato y duración, sonoridad con saltos a corto plazo y momentáneos, fotogramas negros, destellos por área, eventos clave en el pulso (dentro de 2 fotogramas) con un evento de imagen y un inicio de sonido (≥ 3 dB dentro de 1 fotograma), tramos estáticos por escena dentro de la máscara de contenido contra un piso de ruido consciente de grano, el ritmo (sin secuencia larga de pulsos casi estáticos, no más de la mitad de la película casi estática), pausas que se estabilizan, traspasos, secuencias de escenas de igual duración, y los cuatro niveles de cambio en los eventos declarados (brechas T0, duraciones de composición T1, transiciones expresivas T2, picos T3, duraciones de pausa), que FALLAN solo para plantillas en API de tiempo 3; los inicios de imagen, los cambios de área grande y el momento más fuerte son estimaciones de píxeles y señal junto a ellos. Texto más pequeño, contraste de texto, niveles tipográficos, área de acento, balance de octava, repetición de cuatro compases y limitación son estimaciones de píxeles o señal, reportadas como INFO. Un elemento sin nada que medir reporta N/A, no PASS; --json da cada resultado con el elemento de la lista de verificación al que sirve.

Luego recorre references/checklist.md y las verificaciones de la ficha del modo: P0 desde la base de la pirámide hacia arriba, luego juzga de arriba hacia abajo (ajuste, frescura, textura). Mide antes de cambiar nada; corrige la causa y luego vuelve a medir. Completa cuando cada P0 pase y cada fallo P1/P2 esté corregido o escrito en "Problemas conocidos" en el README de la película.

7. Entregar

Proporciona la ruta del MP4, la hoja de contactos y un README con el plan, el modo y el preajuste, la fuente musical (sintetizada o generada), los comandos, el informe de check-film y los problemas conocidos; indica "aún no confirmado auditivamente" a menos que alguien haya escuchado. Pide el veredicto del usuario y cítalo textualmente con la fecha; cuando el usuario no esté disponible, escribe "veredicto pendiente" y detente.

Mantenedores: del veredicto a la regla

Solo para quien mantiene el código fuente de esta habilidad; el creador de una película se detiene en el paso 7. Un veredicto no edita directamente una ficha de modo ni los principios. Primero colócalo en una capa de la pirámide y verifícalo contra fundamentos.md: en las capas 1–2 decide el estándar, en las 3–4 el consenso del dominio a menos que se escriba una excepción con su razón, en las 5–6 el propietario elige entre candidatos que la teoría juzga igualmente buenos. Una tendencia se convierte en regla después de dos veredictos consistentes.

Skills relacionados