Communitygithub.com

angles

Crea un video de producto fotográfico y calmado (movimiento lento de cámara, ángulo cerrado, apariencia de pantalla real, enfoque suave) a partir de una grabación de pantalla o captura, renderizado localmente con el estudio Angles. Ideal para videos demo, tomas de producto, clips de lanzamiento y 'videos mockup'.

¿Qué es angles?

Angles es una habilidad especializada para generar videos de producto con apariencia fotográfica y calmada a partir de una grabación de pantalla o captura, renderizado localmente. Su flujo de trabajo se basa en un archivo JSON de especificación: primero se ejecuta un comando de verificación (`check`) que produce una hoja con hasta cuatro fotogramas por variante, permitiendo comparar estilos, ángulos y enfoques sin renderizar videos completos. Luego se selecciona una variante y se ejecuta el comando de renderizado (`make`), que produce un video MP4 (1920 de ancho) y una hoja de contacto. La habilidad incluye campos configurables como `source` (grabación o captura), `style` (close, raking, float, etc.), `level` (velocidad del movimiento: still, whisper, gentle, lively, bold), `trim`, `loop`, `aspect`, `beats` (múltiples estilos en un clip), `look`, `background`, `shadow`, `focus`, `overlays` y parámetros de interpolación (`ease`, `dir`, `travel`). Está diseñada para Claude Code, Cursor, Codex y otras herramientas de agente de IA, y requiere Chrome, ffmpeg, Node 18+, y python3 con numpy y pillow. La habilidad se sirve a sí misma en el puerto 8790 (ajustable con ANGLES_PORT). Su filosofía es la sutileza: usar movimientos como `whisper` o `gentle`, una idea por clip (un estilo o dos o tres beats) y recortes de 3–8 segundos que terminen en la acción.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/HansEngebretsen/angles/tree/main

Preguntar en tu IA favorita

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

Documentación

¿Qué hace angles?

Escribe una pequeña especificación JSON, ejecuta un comando y lee una línea JSON. No abras ni edites el estudio; la especificación alcanza todo lo que puede crear y rechaza todo lo que no puede.

node <esta carpeta>/angles.mjs check spec.json   # ~5s, sin video: una hoja, una fila de 4 fotogramas por variante
node <esta carpeta>/angles.mjs make spec.json    # el mp4 (1920 de ancho, aproximadamente 4s de trabajo por segundo de video) + una hoja
  1. Verifica antes de crear. Pon las opciones que estás considerando en variants. Una sola check las muestra todas como filas etiquetadas en una pequeña imagen. Observa la hoja, elige una fila y luego ejecuta make una vez con los campos de esa fila fusionados en la especificación (y variants eliminada). No renderices videos para comparar apariencias.
  2. Examina una hoja, nunca el mp4. Lee la ruta de la sheet que imprime. Es suficiente para juzgar el encuadre, el ángulo y el enfoque.
  3. Si ok: false, corrige solo lo que mencionen los warnings. Estos enumeran las opciones válidas. node angles.mjs schema imprime todas las opciones si las necesitas. No adivines.
{ "source": "~/Desktop/demo.mov", "out": "~/Desktop/angles", "trim": { "in": 2, "out": 8 },
  "look": "bright", "background": "mist", "shadow": "soft",
  "variants": [{ "style": "close", "level": "gentle" }, { "style": "raking" }, { "style": "float" }] }
CampoValores
sourceuna grabación (.mov .mp4 .webm) o captura de pantalla (.png .jpg). Las grabaciones se cortan en fotogramas una vez y se reutilizan (--fresh lo rehace).
styleclose, raking (de cerca en un ángulo real); float, angle, flyby, focus, push, reveal, rise, tiltshift
levelstill, whisper (predeterminado), gentle, lively, bold. Cada uno es un presupuesto de velocidad, y el movimiento se reduce para ajustarse a él. speed ≤ budget se lee como calmado.
trim, loop, aspect{ "in": s, "out": s }; true funde el final con el inicio; 16:9 (predeterminado), 1:1, 9:16, cualquier W:H
beatsvarios estilos en un solo clip: [{ "at": 0, "style": "float" }, { "at": 4, "style": "close" }]
look, lookAmountbright, crisp grain, glossy, sunlit, pixel macro, cool studio, film print, none; 0–1
background, shadowmist linen sky sage blush dusk o #hex; none soft close float
focus{ "at": s, "u": 0–1, "v": 0–1, "size": 30 }. Omitir u/v para enfocar donde cambia la grabación.
overlays[{ "at": 1, "dur": 1.5, "keys": ["⌘", "K"] }] o { "text": "…" }: insignias sobre la cámara
ease, dir, travelsteady soft settle constant; left right; 0–2 (predeterminado .8)

Gusto: la sutileza gana (whisper o gentle), una idea por clip (un estilo, o dos o tres beats), y un recorte de 3–8s que termina en la acción.

Requiere Chrome, ffmpeg, node 18+ y python3 con numpy y pillow; ejecuta npm i una vez aquí. Se sirve a sí mismo en el puerto 8790 (ajusta ANGLES_PORT para cambiarlo).

Skills relacionados