MotionKit
Raíz del kit: la carpeta donde reside este skill, un nivel arriba (llámese $KIT; si el skill fue enlazado simbólicamente, resuelve el enlace — ej. ~/.claude/skills/motionkit → <clon>/skill, así que $KIT = <clon>). Está destilado a partir de 60 videos de referencia que el usuario ha curado; síguelo en lugar de usar valores predeterminados genéricos de motion.
No negociables (preferencias permanentes del usuario)
- Sin cortes bruscos. Cada cambio de escena se realiza mediante un elemento que aparece en ambos lados de la costura (
$KIT/grammar/01-continuity.md). Como máximo ⅓ de las uniones pueden ser cortes duros, y solo en un beat fuerte. - Líquido, fluido, redondeado. Eases de salida largos (cola larga), squash/stretch en el contacto, cambios de material antes que de forma, desenfoque como pegamento (
02-motion-easing.md). - Nunca generar ni sintetizar música. Usa la pista del usuario. Si no se proporciona ninguna, pide una. El kit no incluye música.
- Cámara decidida por el contenido (rondas 3–4): planifica una ruta variada (nunca la misma dirección dos veces seguidas: camiones L/R, pedestales arriba/abajo, diagonales, empujes, tirones, pausas) y alterna los beats de cámara con beats de elemento donde elementos pulidos interactúan bajo una cámara fija; sincroniza eventos con la música (
sync_check.pylevanta ≥ ×1.35;beatSync()para pistas ambientales, cuadrícula de beats para rítmicas). Películas impulsadas por texto → cámara de seguimiento en movimiento que SE DESLIZA (splinee:"glide"a través de destinos de palabra, eases de campana entre regiones — nunca saltos por palabra); películas impulsadas por elementos → cámara casi fija con solo movimientos motivados y sembrados (camSeed,seed) — nunca viajar por viajar, nunca un patrón repetido. Regla anterior, aún vigente para películas de texto: (ronda 2: "es solo la perspectiva, la cámara no se mueve"): cámara de seguimiento sobre la palabra activa / protagonista a través de un mundo más grande que el encuadre, viaje portador entre estaciones para historias de un solo objeto, capa de referencia de paralaje siempre ($KIT/grammar/08-camera.md§ v3,$KIT/research/camera-notes.md, primitives §19–20). También: (el usuario llamó a su ausencia "FALLO GRAVE GRAVE GRAVE"): construye cada película como un mundo 3D visto a través decamera-rig.js; cámara moviéndose ≥ 65 % de los fotogramas (referencias: mediana 77 %, medida conresearch/camera_motion.py); los subtítulos cabalgan el mundo, las pausas mantienen el viaje, ritmo de pausa-y-barrido, ≥ 3 capas de profundidad con paralaje, DOF, deriva de mano, desenfoque de movimiento en barridos ($KIT/grammar/08-camera.md). - Nivel de pulido (
$KIT/grammar/09-polish-bar.md): solo brillos ajustados (sin halos, nunca escalar un elemento brillante, sin filtros grandes de desenfoque SVG — degradados + grano); las transformaciones de contenedor son geometría SVG para que las esquinas permanezcan redondeadas en cada fotograma (sin revelaciones por clip-path); la interfaz con texto llega desde profundidad / desenfoque suave — sin escalados emergentes, sin diseños de pegatina inclinados; cada objeto plano obtiene sombra + borde + sombra de contacto. - Elementos y fuentes profesionales: construye piezas de UI/3D a partir de
$KIT/elements/(verelements/showcase/yresearch/element-notes.md); tipografía desde$KIT/fonts/FONTS.md— nunca valores predeterminados genéricos. - Acabado profesional: un acento por línea, énfasis en cursiva-serif o salto de peso, cada fotograma tiene ≤ 3 elementos focales, una constante persistente (lienzo, título, horizonte o niebla) a lo largo de la película.
- Reels primero a menos que se indique lo contrario: 1080×1920, texto en la banda de 168–1330 px, ≤ 5 palabras por línea, nada por debajo de 28 px, el fotograma 0 es el gancho (nunca negro, nunca un logotipo).
- Sé eficiente en tokens: un archivo de escena por capítulo (o uno para toda una transformación continua), captura solo los cambios de estado.
Flujo de trabajo
- Brief (breve). Tema/marca, mensaje, formato, duración, el archivo de música. Pregunta solo lo que falta; una ronda.
- Elige un estilo de
$KIT/styles/STYLES.md(la tabla al final asigna briefs → estilos). Lee esa ficha completa; abre 1–2 de sus notas de referencia en$KIT/research/video-notes/para detalles. - Analiza la música:
npx hyperframes audio <track> --only kind,bpm,beats,downbeats,sections,onsets --json. Rítmica → cuadrícula de beats (beat(n),bar(k), primitives §1). Ambiental → capítulos en los límites de las secciones, eventos principales en los onsets más fuertes (--threshold 0.3). - Planifica en una tabla: capítulos × (ventana de tiempo, portador hacia el siguiente, estado del objeto, título, movimiento de cámara). Nombra el portador y el movimiento de cámara para cada costura; si no puedes, rediseña la costura. Distribuye los capítulos como lugares en un único mundo 3D.
- Construye con HyperFrames (carga
/hyperframesprimero para el contrato). Comienza desde la muestra más cercana (v2 = con cámara):$KIT/samples/a-ember-lumen(S1),b-morph-nook(S2),c-neon-aura(S3),d-saas-tally(S4) —cp -Ra un nuevo proyecto, luego reescribe. Usa los bloques de$KIT/primitives/PRIMITIVES.md. Pon la paleta + las fuentes en la raízdata-composition-variables. - Verifica:
npx hyperframes check --json 2>/dev/null(stderr es ruidoso) → corrige errores, sopesa advertencias →npx hyperframes snapshot --at <cada cambio de estado + medio barrido> -o .snap/x→ lee la hoja de contactos → corrige (acércate a las esquinas y brillos:snapshot --zoom). Repasa07-engineering-pitfalls.mdy la lista de verificación de09-polish-bar.md. Después de renderizar, mide el movimiento de cámara:python3 $KIT/research/camera_motion.py <dir-con-mp4> out.json— objetivomoving_frac≥ 0.65 (cuartil inferior de las referencias; mediana 0.77). - Renderiza:
npx hyperframes render -o <out>.mp4. Abre la vista previa de Studio antes de una entrega final cuando el usuario esté revisando.
Referencias rápidas
- Portadores (elige 3–5 por película): elemento-se-convierte-en-mundo · zoom a través · morph de forma · objeto guía · una tarjeta muchos estados · iris · inundación de color · látigo de desenfoque · mundo continuo de cámara · palabra anclada · rima de forma · arrastre · disolución de partículas · wipe de medio.
- Paleta de eases: llegada
expo.out/power4.out0.5–0.9 s · salidapower3.in(40–50 % de la entrada) · cámara/morphpower2.inOut· resorte premiumback.out(1.4)· lineal solo para órbita/rotación/progreso. - Tipografía: blur-in por palabra (sin traslación) · gris→tinta lectura al unísono · palabra como máquina tragaperras · píldora de resaltado como palabra clave · acento en cursiva-serif · icono en línea dentro de la frase.
- Formas narrativas: problema(oscuro)→revelación→características→CTA · caos→orden · un protagonista muchos estados · solicitud→resultado · manifiesto con palabra anclada · micro-bucle.
Cómo hacer crecer el kit
Cuando el usuario añada nuevos videos de referencia: haz hojas de contactos (con marca de tiempo, muestreo de 0.33–1 s) + tiras a 10 fps en las transiciones, escribe una nota por video en research/video-notes/, añade filas a research/INDEX.md, e incorpora nuevos patrones en los archivos de gramática/estilo. Cuando una construcción enseñe un nuevo error o primitiva, añádelo a 07-engineering-pitfalls.md / PRIMITIVES.md.