Communitygithub.com

phido0410/rive

Animations Rive interactives (fichiers .riv) sur le Web — runtimes @rive-app/webgl2 / canvas, hooks React (useRive, hooks de liaison de données), machines d'état, liaison de données (modèles de vue) et @remotion/rive pour la vidéo. À utiliser lorsque l'utilisateur fournit un fichier .riv ou demande Rive, des mascottes/icônes interactives ou une animation pilotée par machine d'état.

Qu'est-ce que rive ?

Cette compétence permet aux développeurs d'intégrer et de contrôler des animations Rive interactives (fichiers .riv) dans des applications web, que ce soit en JavaScript vanilla ou avec des frameworks comme React et Remotion. Elle couvre l'utilisation des runtimes officiels (webgl2 et Canvas2D), la liaison de données via des modèles de vue (view models), la gestion des machines d'état et des entrées numériques, booléennes, chaînes, couleurs, énumérations et déclencheurs. Elle explique également comment configurer correctement les animations pour la lecture vidéo avec Remotion. Les interactions avec les machines d'état sont désormais effectuées via des instances de modèle de vue (view model instances) plutôt que les entrées de machine d'état dépréciées. Cette compétence prend en charge les packages @rive-app/webgl2, @rive-app/canvas, @rive-app/react-canvas et @remotion/rive, et inclut des exemples concrets pour chaque cas d'usage.

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

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Que fait rive ?

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

Les fichiers .riv sont créés dans l'éditeur Rive (rive.app). Le code peut les lire et les contrôler, mais pas les modifier. Demandez le fichier à l'utilisateur, ou utilisez un fichier communautaire depuis la marketplace Rive.

Packages

BesoinPackage
JavaScript vanilla, recommandé@rive-app/webgl2
JavaScript vanilla, Canvas2D@rive-app/canvas (@rive-app/canvas-lite si pas de texte, mises en page, scripts, audio)
React@rive-app/react-webgl2 ou @rive-app/react-canvas
Remotion@remotion/rive

JavaScript vanilla

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

const r = new Rive({
  src: '/hero.riv',
  canvas: document.getElementById('canvas'),
  stateMachines: 'State Machine 1',  // nom dans l'éditeur
  autoplay: true,
  autoBind: true,                     // lier l'instance de modèle de vue par défaut
  onLoad: () => r.resizeDrawingSurfaceToCanvas(),
})
window.addEventListener('resize', () => r.resizeDrawingSurfaceToCanvas())
// plus tard : r.cleanup()

Liaison de données (méthode actuelle pour piloter un .riv)

Les entrées de machine d'état (r.stateMachineInputs(name), .value, .fire()) sont dépréciées dans les types du runtime. Utilisez-les uniquement pour les anciens fichiers sans modèle de vue.

const vmi = r.viewModelInstance          // nécessite autoBind: true
vmi.number('Progress').value = 0.75
vmi.string('Title').value = 'Bonjour'
vmi.boolean('Active').value = true
vmi.color('Accent').value = 0xFFFF5500    // ARGB
vmi.enum('Mood').value = 'Heureux'
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} />

Le conteneur doit avoir une taille explicite ; RiveComponent remplit son parent.

Pour la vidéo

Dans Remotion, utilisez <RemotionRiveCanvas src="..." /> depuis @remotion/rive — il joue le fichier en synchronisation avec l'image courante (consultez la documentation de Remotion pour ses propriétés). La logique interactive de machine d'état qui attend des clics ou des survols ne s'exécutera pas lors d'un rendu ; concevez le .riv avec une animation temporelle pour une utilisation vidéo.

Individual skills in this repo

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

Skills associés