Communitygithub.com

phido0410/rive

Animaciones interactivas de Rive (.riv) en la web: runtimes @rive-app/webgl2 / canvas, hooks de React (useRive, hooks de enlace de datos), máquinas de estado, enlace de datos (modelos de vista) y @remotion/rive para video. Úsalo cuando el usuario tenga un archivo .riv o pregunte por Rive, mascotas/iconos interactivos o animaciones controladas por máquina de estado.

¿Qué es rive?

Este skill permite trabajar con archivos de animación interactiva Rive (.riv) en proyectos web y de video. Proporciona una guía completa para usar los runtimes oficiales de Rive (@rive-app/webgl2, @rive-app/canvas) así como integraciones específicas para React (@rive-app/react-canvas) y Remotion (@remotion/rive). Cubre tanto la forma tradicional de controlar máquinas de estado (deprecated) como el nuevo enfoque basado en modelos de vista (view models) y enlace de datos (data binding), que permite modificar números, cadenas, booleanos, colores, enumerados y disparar triggers directamente desde el código. Es ideal para desarrolladores que necesitan integrar animaciones interactivas controladas por lógica de aplicación, como mascotas animadas, iconos dinámicos o animaciones sincronizadas con video, y está actualizado para las versiones más recientes de los paquetes (Octubre 2026).

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/phido0410/claude-video-skills/tree/HEAD/skills/rive

Preguntar en tu IA favorita

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

Documentación

¿Qué hace rive?

Verificado 2026-10: @rive-app/canvas 2.45, @rive-app/react-canvas 4.37, @remotion/rive 4.0.

Los archivos .riv se crean en el editor de Rive (rive.app). El código puede reproducirlos y controlarlos, pero no crearlos. Pide al usuario el archivo, o usa un archivo de la comunidad desde el marketplace de Rive.

Paquetes

NecesidadPaquete
Vanilla JS, recomendado@rive-app/webgl2
Vanilla JS, Canvas2D@rive-app/canvas (@rive-app/canvas-lite si no requiere Texto, Diseños, Scripting, Audio)
React@rive-app/react-webgl2 o @rive-app/react-canvas
Remotion@remotion/rive

Vanilla

import { Rive } from '@rive-app/webgl2'

const r = new Rive({
  src: '/hero.riv',
  canvas: document.getElementById('canvas'),
  stateMachines: 'State Machine 1',  // nombre del editor
  autoplay: true,
  autoBind: true,                     // vincula la instancia de modelo de vista por defecto
  onLoad: () => r.resizeDrawingSurfaceToCanvas(),
})
window.addEventListener('resize', () => r.resizeDrawingSurfaceToCanvas())
// luego: r.cleanup()

Enlace de datos (forma actual de controlar un .riv)

Las entradas de máquina de estado (r.stateMachineInputs(name), .value, .fire()) están obsoletas en los tipos del runtime. Úsalas solo para archivos antiguos sin modelos de vista.

const vmi = r.viewModelInstance          // necesita autoBind: true
vmi.number('Progress').value = 0.75
vmi.string('Title').value = 'Hola'
vmi.boolean('Active').value = true
vmi.color('Accent').value = 0xFFFF5500    // ARGB
vmi.enum('Mood').value = 'Feliz'
vmi.trigger('Jump').trigger()
vmi.number('Progress').on((e) => console.log(e.data))

React

import { useRive, useViewModel, useViewModelInstance,
  useViewModelInstanceNumber, useViewModelInstanceTrigger } from '@rive-app/react-canvas'

const { rive, RiveComponent } = useRive({ src: '/hero.riv', stateMachines: 'State Machine 1', autoplay: true })
const vm = useViewModel(rive)
const vmi = useViewModelInstance(vm, { useDefault: true, rive })
const { setValue: setProgress } = useViewModelInstanceNumber('Progress', vmi)
const { trigger: jump } = useViewModelInstanceTrigger('Jump', vmi)

return <RiveComponent style={{ width: 400, height: 400 }} onClick={jump} />

El contenedor necesita un tamaño explícito; RiveComponent llena su elemento padre.

Para video

En Remotion usa <RemotionRiveCanvas src="..." /> de @remotion/rive — reproduce el archivo sincronizado con el fotograma actual (revisa la documentación de Remotion para sus props). La lógica interactiva de la máquina de estado que espera clics/eventos de ratón no se ejecutará en un render; diseña el .riv con una animación de línea de tiempo para uso en video.

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

Skills relacionados