Communitygithub.com

TheAngryPit/TheAngrySkills

Un breve gráfico en movimiento con diseño, donde el movimiento es el mensaje: tipografía cinética, contadores, visualización de datos, animación de logotipos, mapas animados, tuits animados, animaciones de UI, etc. Generalmente de menos de 10 segundos, sin narración.

¿Qué es TheAngrySkills?

Este skill permite crear motion graphics cortos y centrados en el diseño, donde el movimiento es el mensaje principal. Está diseñado para funcionar de forma autónoma, requiriendo como máximo una pregunta aclaratoria antes de proceder a la construcción y renderizado. El skill prioriza la obtención de activos reales (como logotipos, imágenes o datos) antes de diseñar la animación, adaptando el diseño a los recursos disponibles. Soporta múltiples categorías, desde tipografía cinética y gráficos estadísticos basados en datos proporcionados por el usuario, hasta animaciones basadas en búsquedas web, como páginas web, artículos de noticias o tuits. El flujo de trabajo se divide en fases claras: inicialización, planificación, obtención de activos (si es necesario), diseño, construcción según un catálogo de bloques reutilizables, verificación con linting y capturas de pantalla, y finalmente renderizado en formato MP4 o con superposición transparente. Está diseñado para ser usado con la herramienta HyperFrames y se integra con Figma para la exportación de activos y tokens de marca. El renderizado final requiere la aprobación explícita del usuario.

Compatible con~Claude Code~Codex CLI✓Cursor✓Gemini CLI
npx skills add https://github.com/TheAngryPit/TheAngrySkills/tree/HEAD/skills/mirrors-hyperframes/hyperframes-motion-graphics

Preguntar en tu IA favorita

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

Documentación

Instalación del plugin: Antes de ejecutar comandos de configuración o actualización, siga las reglas de ejecución del plugin cuando este skill esté dentro de un plugin de HyperFrames. Las instalaciones independientes conservan las instrucciones de actualización a continuación.

Primero, mantenga este skill actualizado — confirme con el usuario antes de ejecutar: npx hyperframes skills update motion-graphics. Es una operación rápida y sin cambios cuando todo está actualizado; de lo contrario, actualiza este skill y los skills del dominio central de los que depende antes de que usted confíe en ellos.

fuente figma: Si el logotipo/activo/animación a construir proviene de una URL de figma.com, ejecute /figma primero — exportación de activos, tokens de marca y traducción Motion→GSAP si el gráfico es una importación de Figma Motion — luego construya a partir de su salida. No maneje Figma directamente con herramientas MCP sin procesar: eso omite la sanitización de SVG, la procedencia de .media/manifest.jsonl y la vinculación var() de los tokens de marca, por lo que un cambio posterior de marca no se puede propagar sin una reimportación completa.

motion-graphics — punto de entrada

La puerta principal es /hyperframes. Este skill crea un gráfico en movimiento corto, con diseño, sin narración (el movimiento es el mensaje; ~menos de 10s, sin voz en off). Cualquier cosa más larga, narrada o de varias escenas — o cualquier incertidumbre → lea /hyperframes primero: la capa de intención es dueña de cada decisión de ruta.

Este flujo de trabajo es autónomo por diseño — como máximo una pregunta aclaratoria (agents/director.md), luego construye hasta la verificación sin revisión intermedia. La capa de intención (/hyperframes → references/intent-interview.md) enruta aquí directamente sin preguntas sobre la forma de ejecución; un guion gráfico y una sesión complementaria aportan poco a una pieza tan corta. El renderizado sigue estando controlado por el usuario: después de que las comprobaciones y las capturas de prueba pasen, haga la pregunta canónica "¿vista previa o renderizar?" de ../hyperframes/references/brief-contract.md. Cuando exista un BRIEF.md, léalo antes de la pregunta del director.

Un gráfico en movimiento corto con diseño. Primero los activos: decida la estrategia de activos y obtenga material real antes de diseñar la toma, luego diseñe la toma en torno a lo que tiene, luego componga reutilizando las capacidades del catálogo. Todos los artefactos van a PROJECT_DIR = videos/<project-name>/ (creado en el Paso 0); todas las rutas a continuación son relativas a él.

FaseEjecuciónArtefacto principalFlujo detallado
initBashhyperframes.jsonPaso 0
plansubagente — ¿decidir búsqueda? + clasificar + estrategia de activosshot-plan.json (borrador: categoría, consultas asset_needs, brief)agents/director.md (Parte 1)
fuente ◇Bash — resolución de medios (omitir si asset_needs está vacío)assets/ + assets/index.mdphases/source/guide.md
diseñosubagente — diseño de toma en torno a los activos resueltosshot-plan.json (final: bloque(s) + diseño + movimiento + posiciones)agents/director.md (Parte 2)
buildsubagente — composición con reutilización primerocompositions/index.htmlagents/builder.md
verificarBash — lint, check, capturas de prueba; reparar en caso de errorsnapshots/contact-sheet.jpgPaso 5
aprobarPreguntar vista previa o renderizar; esperar la respuestaaprobación explícita del renderizadoPaso 6
renderBash — hyperframes render (MP4, o --format webm/mov para superposición)renders/video.mp4 o superposición transparentePaso 6

◇ fuente solo se ejecuta cuando la categoría elegida declara activos. Las categorías de solo código/texto (por ejemplo, kinetic-type, la mayoría de charts/stat) tienen asset_needs: [] y pasan directamente del plan al diseño.

Categorías — divididas por la decisión de búsqueda

La primera decisión de plan es: ¿esto necesita una búsqueda? Esa bifurcación divide las categorías en dos grupos; luego se elige la categoría específica — para las basadas en búsqueda, por el tipo de contenido que devuelve la búsqueda. Cada categoría es un categories/<id>/module.md (sus reglas de planificación + construcción); el vocabulario de movimiento compartido vive en references/motion-vocabulary.md (→ reglas/planos de hyperframes-animation + bloques del registro).

Categorías de formulario — sin búsqueda; el usuario proporciona el contenido:

CategoríaIntenciónSe apoya en
kinetic-typelínea/ cita / título impactante, texto con movimiento como prioridadbloques caption-* + reglas de animación
statnúmero heroico único / contador + anilloapple-money-count / rules/{counting-dynamic-scale, stat-bars-and-fills}
chartsgráfico de barras / líneas / circular / carrera / % a partir de datosbloque data-chart
logo-revealstinger de logotipo / bloque de marca (logotipo del usuario)logo-outro / rules/svg-path-draw
lower-thirdsbarras de nombre / título, llamadas, superposiciones socialescaption-* + bloques de superposición del registro
mapsmovimiento geográfico — resaltar regiones, conectar lugares, acercar a una ubicación (capa vectorial o capa de mapa base horneada)familia us-map / world-map + bake-basemap.mjs

Categorías basadas en búsqueda — buscar primero, luego animar por tipo de contenido (la ruta RWA):

Contenido devueltoCategoríaAnimación
página web / enlacewebpageAnimación de página web / UI (desplazamiento, revelación, cursor, llamadas)
artículo de noticiasnewsRevelación de titular + tarjeta de fuente + llamadas de datos clave
tuittweetTarjeta de tuit animada
imagen / entidadasset-fusionLa geometría del activo se convierte en el gráfico (fusión diegética RWA)

Orden de construcción: uno a la vez, priorizando la cobertura (lo aproximado está bien). kinetic-type portado del prototipo; el resto sigue.

Requisitos previos

macOS Apple Silicon o Linux x64. Herramientas del sistema: brew install node ffmpeg. npx hyperframes doctor una vez. Renderizado con GPU en macOS: export PRODUCER_BROWSER_GPU_MODE=hardware.

Claves opcionales (fallos locales si no se configuran) — solo necesarias para categorías que obtienen/generan activos a través de media-use:

ClaveUsada paraFallback
GEMINI_API_KEY / GOOGLE_API_KEYgeneración de imágenes (resolución media-use)omitir generar / solo búsqueda
(proveedores de búsqueda asset_scout)búsqueda de activos reales para webpage/news/tweet + asset-fusionla categoría se degrada a sin activos

Flujo

Paso 0 — Inicializar

cwd es la raíz del espacio de trabajo del agente; escriba todos los artefactos bajo PROJECT_DIR = videos/<project-name>/. <project-name>: use el directorio que el usuario proporcionó, si no, un nombre corto en kebab-case a partir de la intención (<subject>-motion). No el nombre base del espacio de trabajo ni una marca de tiempo.

Solo cuando $PROJECT_DIR/hyperframes.json está ausente:

PROJECT_DIR="${MOTION_GRAPHICS_DIR:-videos/<project-name>}"
mkdir -p "$(dirname "$PROJECT_DIR")"
npx hyperframes init "$PROJECT_DIR" --non-interactive --example=blank --skill=motion-graphics

init verifica los skills instalados contra los últimos en GitHub y actualiza el conjunto global si alguno está desactualizado.

Restricciones: nunca ejecute hyperframes init en la raíz del espacio de trabajo; nunca anide otro hyperframes/ dentro de PROJECT_DIR; cada comando Bash (maestro + subagentes) es un sub-shell (cd "$PROJECT_DIR" && ...) — nunca cd desnudo.

Paso 1 — Planificar (subagente: Director Parte 1)

Despache un subagente. prompt = agents/director.md completo + ## Contexto de despacho (SKILL_DIR / PROJECT_DIR / la solicitud del usuario / Schema: <SKILL_DIR>/references/shot-plan-ir.md). Debe:

  1. Decidir: ¿esto necesita una búsqueda? (la primera bifurcación)
    • No → elegir una categoría de formulario (kinetic-type / stat / charts / logo-reveal / lower-thirds); el contenido lo proporciona el usuario; asset_needs: [].
    • Sí → emitir un plan de búsqueda en asset_needs[] (noticias / web / tuit / imagen; consultas de dos polos). La categoría basada en búsqueda específica (webpage / news / tweet / asset-fusion) se confirma por el tipo de contenido devuelto en el Paso 2 y se finaliza en el Paso 3.
  2. Escribir un borrador de shot-plan.json (envoltorio + categoría de formulario elegida o intención de búsqueda + asset_needs + un breve resumen de la toma de un párrafo). Esquema: references/shot-plan-ir.md.

Validación: [ -s "$PROJECT_DIR/shot-plan.json" ] && echo ok || echo missing.

Paso 2 — Fuente ◇ (Bash: media-use, condicional)

Si shot-plan.json.asset_needs no está vacío, resolver activos (buscar / generar / obtener → rutas locales congeladas del proyecto + registro). Consulte phases/source/guide.md (envuelve media-use resolve; las categorías basadas en búsqueda usan la búsqueda de noticias/web/tuit/imagen). Si asset_needs está vacío, saltar al Paso 3.

# ilustrativo — consulte phases/source/guide.md
(cd "$PROJECT_DIR" && node <SKILL_DIR>/phases/source/resolve.mjs --plan ./shot-plan.json --out ./assets)

Degradar con elegancia: si un motor de búsqueda/proveedor no está disponible, la categoría retrocede a sin activos (anótelo en context.log).

Paso 3 — Diseñar (subagente: Director Parte 2)

Despache un subagente (prompt = agents/director.md Parte 2 + contexto de despacho que incluya el assets/index.md resuelto si el Paso 2 se ejecutó + catalog-map.md). Diseña la toma en torno a los activos disponibles: elija el/los bloque(s) del catálogo + las reglas/planos de hyperframes-animation, el diseño, el movimiento, los tiempos y (para asset-fusion) las element_positions + la paleta del cuentagotas. Finaliza shot-plan.json (content.block + content.customize + contenido por categoría).

Paso 4 — Construir (subagente: Constructor, reutilizar primero)

Despache un subagente. prompt = agents/builder.md completo + contexto de despacho (shot-plan.json, catalog-map.md, el module.md de la categoría, references/motion-vocabulary.md, references/builder-contract.md). Reutilizar primero: npx hyperframes add <block> + personalizar en el lugar; escribir a mano solo los huecos + la funcionalidad de fusión de activos. Salida compositions/index.html respetando el contrato HF (línea de tiempo de GSAP pausada en window.__timelines, class="clip" + ids estables, tl.seek(0), determinista).

Paso 5 — Verificar (Bash → subagente de reparación en caso de error)

(cd "$PROJECT_DIR" && npx hyperframes lint .)
(cd "$PROJECT_DIR" && npx hyperframes check .)
(cd "$PROJECT_DIR" && npx hyperframes snapshot --at <proof-times>)

Elija tiempos de prueba que muestren el estado inicial, el movimiento característico y la pausa final. Inspeccione la hoja de contactos o capturas generada antes de continuar. En caso de error de lint, check o captura, despache el subagente de reparación (agents/finalize.md) para una pasada de corrección en el lugar, luego vuelva a ejecutar la compuerta fallida. Nunca cambie una duración fija solo para ocultar un defecto.

Paso 6 — Aprobar y renderizar (Bash)

Haga una pregunta: "¿vista previa o renderizar?" Si el usuario elige vista previa, abra Studio y regrese a la misma compuerta de aprobación después de las revisiones:

(cd "$PROJECT_DIR" && npx hyperframes preview --background)

Renderizar solo después de una respuesta explícita de renderizado:

(cd "$PROJECT_DIR" && npx hyperframes render . --skill=motion-graphics -q high -o ./renders/video.mp4)
# variante de superposición transparente: --format webm  (o mov)

Verifique que la salida exista, no esté vacía y tenga la duración prevista. La entrega final nombra el artefacto, la duración real, el id de la composición o fotograma, los tiempos de prueba y la hoja de contactos o capturas inspeccionada. Las banderas viven en /hyperframes-cli → references/preview-render.md.

Tabla de reanudación

EstadoContinuar desde
no hay shot-plan.jsonPaso 1 (planificar)
shot-plan.json tiene asset_needs, no hay assets/Paso 2 (fuente)
shot-plan.json final, no hay compositions/index.htmlPaso 3/4 (diseñar+construir)
compositions/index.html existe, faltan capturas de pruebaPaso 5 (verificar)
comprobaciones y capturas de prueba pasan, sin renderizado aprobadoPaso 6 (aprobación)
el renderizado aprobado existeverificar salida, luego informar

Notas de diseño (mantenedores — la ejecución no lee esto)

  • Razón de ser de "activos primero": la obtención se carga al frente e informa el diseño de la toma (el flujo RWA: analizar → buscar → revisar → c

…

[truncado para traducción]

Skills relacionados