Punto de entrada de HyperFrames
HyperFrames renderiza video desde HTML — una composición es un archivo HTML cuyo DOM declara tiempos con atributos data-*, cuyo runtime de animación es buscable, y cuya reproducción multimedia es propiedad del marco. El contrato completo de autoría se encuentra en /hyperframes-core; léelo antes de escribir el HTML de la composición.
1. Comenzar desde el estado del proyecto
Aplica la primera fila coincidente; no evalúes filas de estado inferiores:
| Estado | Acción |
|---|---|
| Puerto explícito de una fuente Remotion existente a HyperFrames | Lee la sección /remotion-to-hyperframes de references/workflow-catalog.md, luego enruta directamente a ese flujo de trabajo. Omite la capa de intención. |
| Operación específica en un proyecto HyperFrames existente: inspeccionar, diagnosticar, validar, previsualizar, renderizar, publicar o renderizar por lotes | Realiza solo esa operación. Omite la intención y el enrutamiento de flujo de trabajo; carga /hyperframes-cli y cualquier habilidad de dominio necesaria. |
| Edición específica a un proyecto existente | Realiza la edición. No ejecutes la capa de intención. |
BRIEF.md existe | Lee workflow y flow. Ejecuta ese flujo de trabajo; flow: companion siempre se ejecuta en /general-video. No hagas preguntas de resumen. |
Sin resumen, pero existe hyperframes.json o STORYBOARD.md | Reanuda desde los archivos del proyecto y las preferencias registradas. Infiere el flujo de trabajo propietario de los artefactos existentes. Si no se puede determinar de manera única, haz una sola pregunta de enrutamiento; no ejecutes la entrevista de intención. |
| Creación nueva | Ejecuta la capa de intención (§ 4), luego enruta una vez usando las reglas a continuación. |
Continúa con los adaptadores de entrada en § 2. Una ruta de flujo de trabajo directa o reanudada omite §§ 3–4 y procede a la instalación del flujo de trabajo en § 5. Una operación o edición específica omite §§ 3–5 y carga solo las habilidades de dominio que necesita de § 6.
Si una solicitud nueva no identifica el tema o la entrada, pregunta de qué trata el video antes de enrutar. Verifica preferencias y recetas antes de preguntar cualquier cosa (§ 4, paso 1).
Mantén actualizado el CLI del proyecto
Un proyecto andamiado fija hyperframes@<versión> en los scripts de su package.json para que los renders sean reproducibles; la fijación nunca avanza por sí sola, y una ejecución fijada de un CLI antiguo no muestra ninguna advertencia al respecto. Al reanudar un proyecto cuyos scripts llevan una fijación, prueba una vez antes del primer comando que afecte el render:
npx hyperframes@latest upgrade --project . --check
La prueba es de solo lectura e informa la fijación contra la última versión; mantén el . explícito — en versiones antiguas del CLI, un --project desnudo seguido de otra bandera consume esa bandera como su valor de directorio. Cuando informa que el proyecto está desactualizado — o cualquier salida del CLI ya lo muestra (el aviso de stderr Este proyecto fija hyperframes@… (última …), o _meta.updateAvailable: true en un resultado --json de un script fijado) — aplica con npx hyperframes@latest upgrade --project ., luego verifica con npx hyperframes check. Una verificación exitosa confirma que las composiciones del proyecto aún validan en la nueva versión — no que la salida renderizada sea idéntica cuadro a cuadro a la fijación antigua — por lo que un aumento exitoso nunca es silencioso: nombra la versión antigua y la nueva en el resumen de la ejecución. Un proyecto sin composición aún no necesita verificación. Si la verificación falla, revierte el cambio en package.json, continúa con la versión fijada, e informa en qué versión se queda el proyecto y por qué. Actúa sobre la señal en lugar de transmitirla al usuario; nunca dejes una fijación aumentada sin verificar.
2. Adaptar entradas ortogonales antes de enrutar
Una fuente de Figma cambia cómo los activos y el diseño entran al proyecto, no qué flujo de trabajo es propietario del entregable.
Si alguna entrada es una URL de figma.com:
- Para creación nueva, comienza la capa de intención (§ 4) y completa las lecturas de memoria y recetas.
- Durante el triaje de entrada, ejecuta
/figmapara extraer activos, tokens de marca, componentes y cuadros de guión gráfico cuando estén presentes. Para una edición de proyecto existente, ejecuta/figmasin reabrir la intención. - Enruta el entregable solicitado usando la salida de
/figma, luego continúa solo las preguntas de intención no respondidas de la ruta seleccionada. - No manejes Figma a través de herramientas MCP en bruto. Eso omite la sanitización de SVG, la procedencia de
.media/manifest.jsonly la vinculación devar()de tokens de marca.
Una URL de PR de GitHub no es una fuente de sitio web. Una receta nombrada o adoptada ya lleva su flujo de trabajo; confirma la adopción a través de la capa de intención, luego enruta a ese flujo de trabajo.
3. Enrutar creación nueva
Usa la primera fila coincidente. Coincide con el entregable solicitado, no con una palabra o tipo de archivo mencionado de pasada.
| Prioridad | Solicitud | Flujo de trabajo |
|---|---|---|
| 1 | Puerto explícito de una fuente Remotion existente | /remotion-to-hyperframes |
| 2 | Autorizar una presentación, mazo de presentación o mazo interactivo navegable | /slideshow |
| 3 | Agregar subtítulos o leyendas simples a metraje de talking-head existente sin cambiarlo | /embedded-captions |
| 4 | Agregar superposiciones gráficas diseñadas a metraje existente de talking-head, entrevista o podcast sin cambiar el metraje | /talking-head-recut |
| 5 | Construir un video sincronizado con el ritmo a partir de una pista de música, sin narración ni captura de sitio web | /music-to-video |
| 6 | Crear una unidad explícitamente corta, sin narración, centrada en el movimiento, típicamente de menos de 10s | /motion-graphics |
| 7 | Explicar una solicitud de extracción de GitHub o cambio de código desde una referencia de PR | /pr-to-video |
| 8 | Comercializar o mostrar un sitio web, sitio de producto, aplicación o empresa desde una URL o resumen específico del sitio | /product-launch-video |
| 9 | Explicar un tema, artículo o notas con visuales inventados y sin captura de producto o sitio | /faceless-explainer |
| 10 | Cualquier otro video o composición personalizada | /general-video |
Antes de finalizar la ruta, lee la sección coincidente de references/workflow-catalog.md. Es el contrato canónico de entrada/salida/disparador disponible antes de que las habilidades de flujo de trabajo instaladas perezosamente estén presentes. Si el candidato no cumple con esa entrada, continúa enrutando en lugar de forzar la coincidencia.
Resolver ambigüedades comunes
- Un título animado corto, sting de logotipo, golpe de estadística, golpe de gráfico, golpe de mapa o tercio inferior independiente es
/motion-graphicscuando no está narrado y el movimiento es el mensaje. Una tarjeta de título estática, secuencia narrada, montaje más largo o bucle personalizado es/general-video. - Un gráfico en movimiento explícitamente corto puede usar una URL, tweet, artículo o captura de pantalla como material fuente. Una solicitud genérica de "haz un video desde este sitio" es
/product-launch-video. - Metraje existente con subtítulos se enruta a
/embedded-captions; metraje con tarjetas de información diseñadas se enruta a/talking-head-recut. Re-temporizar, reordenar, recolorear, re-enmarcar o remezclar metraje es una edición personalizada y cae en/general-video. - Un archivo de música selecciona
/music-to-videosolo cuando su cuadrícula de ritmo impulsa la pieza. La música utilizada como fondo no anula la ruta coincidente con el tema. - "Quiero un guión gráfico" cambia el proceso de revisión, no el flujo de trabajo. Sin otra señal de enrutamiento, usa
/general-video. Un guión gráfico dibujado confirmado puede ser en sí mismo el entregable solicitado; el bucle de revisión define ese punto de parada. - Los flujos de trabajo narrativos especializados admiten hasta aproximadamente 3 minutos y son más sólidos entre 30 y 90 segundos. Enruta una pieza claramente más larga a
/general-video. La duración nunca anula un puerto explícito, mazo, subtítulo, superposición o entregable impulsado por música.
4. La capa de intención — una conversación, antes de que se ejecute cualquier flujo de trabajo
Solo para creación nueva — la tabla de estado de § 1 ya decide si esta sección se ejecuta o no (ediciones, operaciones de proyecto, proyectos con resumen y reanudables, y puertos explícitos de Remotion nunca entran aquí). Una conversación en la puerta principal convierte "hazme un video" en un resumen confirmado — la ruta, las respuestas imprescindibles, la forma de la ejecución y todo lo demás en la cabeza del usuario — entregado al flujo de trabajo que se ejecutará y hecho duradero como BRIEF.md (forma: ../hyperframes-core/references/brief-format.md). Los flujos de trabajo son dueños de la ejecución; esta capa es dueña de la comprensión. La regla de apertura de cada flujo de trabajo apunta de vuelta aquí, por lo que las preguntas se hacen una vez sin importar por qué puerta haya entrado el usuario.
Estas lecturas son obligatorias cuando su condición coincide; no las reemplaces con recuerdo, y lee solo la sección coincidente cuando una referencia está organizada por flujo de trabajo:
| Condición | Leer antes de actuar |
|---|---|
| Una ruta es candidata, antes de confirmarla | Su sección en references/workflow-catalog.md |
| La ruta es conocida, antes de hacer preguntas específicas de la ruta | Su sección en references/route-briefs.md |
| El triaje juzgó la solicitud como informe, antes de cualquier trabajo conceptual | references/pitch-round.md |
| Ofrecer capacidades opcionales o recopilar medios proporcionados | Las filas filtradas por ruta en references/capability-menu.md |
Derivar flow, storyboard, modo o campos canónicos | ../hyperframes-core/references/brief-contract.md |
1 — Memoria antes que preguntas. Dos lecturas, ambas obligatorias, antes de que se pregunte algo:
- Valores predeterminados recordados. Sea
<MEDIA_DIR>el directorio de habilidad/media-useinstalado. Para un proyecto existente,<MEMORY_ROOT>es su raíz. Antes del andamiaje, usa una ruta de sonda deliberadamente inexistente sin.media, como/tmp/hyperframes-intent-memory-<run-id>; nunca uses el espacio de trabajo actual. Ejecutanode <MEDIA_DIR>/scripts/prefs.mjs get --hyperframes <MEMORY_ROOT> --json. Haz que cada valor recordado sea la opción recomendada y nombra su fuente. La sonda previa al proyecto ve solo el nivel personal; no reclames procedencia del proyecto. - Recetas. Ejecuta
node <MEDIA_DIR>/scripts/recipe.mjs list --hyperframes <MEMORY_ROOT> --json. Si el usuario nombra una receta, dice "como la última vez", o una receta coincide con la ruta probable, pregunta si adoptarla antes de otras preguntas breves — y haz que la oferta se gane el sí: di por qué coincide y qué ahorra adoptar ("esto coincide con tu receta de lanzamiento promocional — adoptar completa el destino, la orientación, el idioma y la especificación de diseño; confirmarías el mensaje y las dos preguntas de forma de ejecución"). Cuando varias coinciden, enuméralas e incluye "ninguna." Una receta adoptada bloquea los campos que contiene; pregunta solo sus campos faltantes y las preguntas de forma de ejecución. No elimina las puertas de revisión o aprobación de render.
2 — Triaje de la entrada. ¿De qué trata el video — un sitio web (vendido o mostrado), un PR, un tema, una pista de música, metraje existente? ¿Y la solicitud está formada — el mensaje, el material y la ocasión se pueden leer de lo que el usuario dio — o informe, un tema sin opinión al respecto? El material fuente no resuelve esto por sí solo: un sitio, documento o PR lleva su propia tesis, pero cinco versiones de esa tesis son cinco videos diferentes — una solicitud cuya única forma proviene de su fuente ("haz un video sobre esta URL") está formada sobre los hechos e informe sobre la versión, y entra a la ronda para presentar la versión. Una solicitud formada ejecuta la capa exactamente como siempre; nada a continuación se agrega para ella. Una solicitud informe pasa por la ronda de presentación después del enrutamiento (paso 4) y gana una pregunta aquí, antes de que se genere algo: ¿qué está imaginando ya el usuario? Su respuesta siembra la ronda (references/pitch-round.md). Un usuario que dice que no sabe nada de videos recibe el mapa de decisiones de esa referencia en lugar de una secuencia de preguntas. Para una solicitud genuinamente exploratoria ("necesitamos un video pero no estoy seguro de qué tipo"), no interrogues — establece el tema y lo que existe para mostrar, una pregunta a la vez, luego cierra preguntando...