Communitygithub.com

empro-labs-animation-skill

Conçoit et construit des animations web UI (micro-interactions, transitions de composants et de pages, loaders, défilements révélateurs et effets liés au défilement) en CSS, Web Animations API ou GSAP. D'abord un cahier des charges : rédige une spécification de mouvement ANIMATION.md, obtient l'approbation de l'utilisateur, puis génère un code d'animation qui respecte prefers-reduced-motion et un budget de performance. À utiliser lorsque l'utilisateur demande des animations, du mouvement, des transitions, des effets de survol ou de clic, des animations de défilement, des chargeurs, ou dit « rends ça fluide », « donne-lui vie » ou « ajoute du mouvement à cette page ». Pas pour le rendu vidéo, les moteurs 3D ou la logique backend.

Qu'est-ce que empro-labs-animation-skill ?

Cette compétence pour agent IA est conçue pour les développeurs web qui souhaitent ajouter des animations UI professionnelles et respectueuses des bonnes pratiques à leurs projets. Elle couvre trois technologies principales : CSS (transitions, keyframes), Web Animations API et GSAP, avec un support optionnel pour d'autres bibliothèques comme Motion, Lottie ou View Transitions. Le flux de travail est structuré en quatre phases : (A) comprendre le contexte (personnalité du mouvement, niveau d'interaction, stack technique), (B) rédiger un cahier des charges de mouvement au format ANIMATION.md qui spécifie chaque animation avec ses tokens (durées, easings, propriétés), (C) implémenter le code en priorisant les propriétés peu coûteuses (transform, opacity) et en utilisant systématiquement des variables CSS pour les durées et easings, (D) auditer avec des scripts d'analyse statique (analyse_motion.py) et des vérifications navigateur (mode réduit, CPU ralenti, mobile 390px). La compétence insiste sur l'accessibilité : chaque animation doit avoir un fallback reduced-motion, les boucles infinies doivent pouvoir être arrêtées, et les retours interactifs doivent apparaître en moins de 100 ms. Elle s'intègre avec les frameworks modernes (React, Vue, Svelte, Next.js) et nettoie proprement les timers et observateurs au démontage des composants. Un système de tokens centralisé évite les valeurs magiques, et une checklist de qualité de 100 points garantit que chaque item passe avant validation.

Compatible avec✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/aj9599995/Empro-Lab-Animation-Skill/tree/main

Demander à votre IA préférée

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

Documentation

Compétence d'Animation Empro Labs

Compétence de conception de mouvement web. Deux étapes : écrire d'abord le cahier des charges du mouvement (ANIMATION.md), puis écrire le code.

ANIMATION.md est un fichier sauvegardé dans le projet. Il peut être modifié à la main, réutilisé dans d'autres projets et lu par d'autres outils.

Les chemins dans ce fichier sont relatifs au dossier de la compétence (~/.claude/skills/empro-labs-animation-skill/). Utilisez des chemins absolus lorsque vous exécutez les scripts.

Requête

La requête de l'utilisateur provenant de la commande slash :

$ARGUMENTS

Si la requête ci-dessus est vide, posez une question : qu'est-ce qui doit bouger, et où ? Puis commencez la Phase A.

Flux principal

Phase A  Comprendre l'entrée  ──→  Phase B  Écrire ANIMATION.md (approbation utilisateur)  ──→  Phase C  Implémenter  ──→  Phase D  Auditer

Vérifications de démarrage (dans cet ordre)

  1. Le projet a-t-il déjà ANIMATION.md ? → Réutilisez-le, modifiez-le ou reconstruisez-le, selon ce que demande l'utilisateur.
  2. A-t-il DESIGN.md (de la compétence web-design) ? → Héritez de ses couleurs, polices et direction stylistique. Maintenez la cohérence du mouvement avec lui.
  3. A-t-il des tokens de mouvement (--motion-* variables ou un fichier de mouvement) ? → Réutilisez-les. N'inventez pas de nouvelles valeurs.
  4. A-t-il déjà du code d'animation ? → Exécutez d'abord python scripts/analyze_motion.py <projet> --inventory pour savoir ce qui existe avant de proposer des changements.
  5. Rien de tout cela → Phase A.

Phase A : Comprendre

Les entrées peuvent être combinées :

EntréeQue faire
URL de référenceExécutez python scripts/capture_motion.py --url [URL] --output ./motion-capture. Lisez capture.json pour les durées, easings, propriétés animées et effets de défilement réels. Utilisez top.png pour l'ambiance.
Vidéo ou capture d'écran du mouvementDécrivez le déclencheur, la durée approximative et la sensation d'easing. Confirmez les chiffres avec l'utilisateur.
Mots-clés ("snappy", "cinématographique")Associez-les à une personnalité dans references/motion-personalities.md.
Nom de marque ("comme Linear")Capturez le site en ligne s'il est accessible. Sinon, demandez une URL de référence. Ne devinez pas le mouvement de mémoire d'une marque.
Code existantExécutez le script d'inventaire et conservez ce qui fonctionne.

A1. Personnalité (posez au maximum deux questions)

  • Sensation : calme, snappy, ludique ou cinématographique ?
  • Type de page : riche en contenu (le mouvement reste discret) ou vitrine (le mouvement peut guider) ?

Montrez un ou deux candidats de references/motion-personalities.md, chacun avec une justification d'une ligne. L'utilisateur confirme.

A2. Niveau d'interaction (obligatoire, ne sautez pas)

Voir references/interaction-tiers.md.

NiveauExpérienceOutillage
L1 MicroSurvol, focus, appui, toggles, petits changements d'étatTransitions CSS uniquement
L2 ChorégraphiéEntrée et sortie, listes en cascade, modales, tiroirs, changements de route, chargeursKeyframes CSS, Web Animations API ou une timeline GSAP
L3 Histoire de défilementRévélations liées au défilement, épinglage, parallaxe, sections pilotées par une timelineGSAP + ScrollTrigger, ou animations CSS pilotées par le défilement avec une solution de repli

L3 est limité à deux sections épinglées par page. Chaque section de page indique son niveau dans le cahier des charges.

A3. Stack

Vérifiez package.json et le framework (HTML simple, React, Vue, Svelte, Next.js). Choisissez l'outillage avec references/tooling.md. Par défaut : CSS et Web Animations API. Ajoutez GSAP uniquement pour L3 ou les timelines complexes.

Phase B : Écrire ANIMATION.md

Suivez references/animation-md-template.md. Dix sections :

  1. Personnalité et Principes du Mouvement
  2. Tokens de Mouvement (durées, easings, distances)
  3. Inventaire Chorégraphique (tableau : élément, déclencheur, propriété, durée, easing, délai, solution de repli en mouvement réduit)
  4. Mouvement des Composants (par défaut, survol, focus-visible, actif, désactivé, entrée, sortie)
  5. Comportement de Défilement
  6. Transitions de Page et de Route
  7. Budget de Performance
  8. Accessibilité
  9. À faire et à ne pas faire (au moins 8 éléments, au moins 5 d'entre eux des "À ne pas faire")
  10. Dépendances

Affichez un résumé à l'utilisateur et attendez l'approbation. Ensuite, sauvegardez ANIMATION.md à la racine du projet.

Phase C : Implémenter

  1. Des tokens partout. Chaque durée et easing est une variable, par exemple var(--motion-duration-base). Pas de nombres magiques dans les composants.
  2. Animez uniquement les propriétés peu coûteuses. transform et opacity en premier. clip-path et filter sont autorisés sur les petits éléments. N'animez jamais width, height, top, left, margin ou padding sauf si ANIMATION.md enregistre une exception avec une justification.
  3. Le mouvement réduit fait partie de la première version, pas d'un correctif ultérieur. Le mouvement est supprimé et les changements d'état restent. Les tokens de distance passent à zéro sous mouvement réduit, et le bloc prefers-reduced-motion dans templates/motion-tokens.css montre le modèle.
  4. Utilisez les fichiers de démarrage lorsque le projet n'a pas encore de couche de mouvement : templates/motion-tokens.css et templates/reveal.js.
  5. Les boucles ont besoin d'une issue. Toute animation infinite s'arrête ou se simplifie sous mouvement réduit. Toute boucle de plus de cinq secondes a un contrôle de pause.
  6. Nettoyez le JavaScript. Détruisez les timelines GSAP et ScrollTriggers au démontage (utilisez gsap.context() ou useGSAP). Déconnectez les observateurs et supprimez les écouteurs.
  7. Gardez le mouvement à un seul endroit. Mettez les tokens dans un fichier et les recettes dans de petits modules. Ne dispersez pas les valeurs de synchronisation entre les composants.

Phase D : Auditer

  1. Exécutez l'audit statique : python scripts/analyze_motion.py <projet> --strict. Corrigez chaque erreur. Examinez chaque avertissement et soit corrigez-le, soit justifiez-le dans ANIMATION.md.
  2. Exécutez les vérifications navigateur :
    • Activez le mouvement réduit (DevTools → Rendering → prefers-reduced-motion: reduce). Confirmez qu'il n'y a plus de mouvement et que le contenu est toujours visible.
    • Limitez le CPU (4×) et enregistrez le panneau Performance pendant que le mouvement se joue. Recherchez les longues trames.
    • Vérifiez une largeur de téléphone (390 px). Recherchez un débordement horizontal dû aux éléments animés.
  3. Parcourez references/quality-checklist.md.
  4. Rapportez ce qui a réussi, ce qui a échoué et ce que vous avez corrigé.

Lignes rouges (chaque élément doit passer)

  • Chaque animation dans ANIMATION.md a une solution de repli pour mouvement réduit.
  • Seules transform, opacity et les exceptions enregistrées sont animées.
  • Toutes les durées et easings proviennent de tokens.
  • Toute boucle infinite respecte le mouvement réduit, et toute boucle de plus de cinq secondes a un contrôle de pause.
  • Rien ne clignote plus de trois fois par seconde.
  • Le feedback interactif apparaît dans les 100 ms. Les micro-animations durent 250 ms ou moins. Les animations d'entrée et les transitions de route durent 500 ms ou moins.
  • Le feedback uniquement au survol a un état de focus clavier et un équivalent tactile.
  • Pour des largeurs de 600 px ou moins, aucun élément animé ne provoque de défilement horizontal, et les sections épinglées sont désactivées ou simplifiées.
  • Les animations JavaScript sont nettoyées au démontage.

Index de référence

Lisez uniquement les fichiers dont la phase actuelle a besoin. Ne les chargez pas tous.

FichierContenuQuand le lire
references/animation-md-template.mdModèle de sortie ANIMATION.md (10 sections)Phase B
references/motion-principles.mdPourquoi et quand animer, règles de timing et d'easingPhases A et B
references/interaction-tiers.mdDéfinitions des niveaux L1, L2 et L3 avec des modèles de codePhase A2 et B
references/motion-personalities.mdQuatre préréglages de personnalité avec valeurs de tokensPhase A1 et B
references/tooling.mdCSS vs WAAPI vs GSAP vs Motion vs View Transitions vs LottiePhase A3
references/component-recipes.mdBouton, carte, accordéon, modale, tiroir, toast, onglets, chargeursPhase C
references/gsap-recipes.mdTimelines GSAP, ScrollTrigger, matchMedia, nettoyage ReactPhase C (GSAP uniquement)
references/scroll-patterns.mdRévélation, barre de progression, pile collante, parallaxe, défilement horizontalPhase B (défilement) et C
references/performance.mdBudget de trame, règles favorables au compositeur, rétrogradation mobilePhases B et D
references/accessibility.mdMouvement réduit, critères de mouvement WCAG, déclencheurs vestibulairesPhases B et D
references/quality-checklist.mdChecklist d'audit de 100 pointsPhase D

Scripts

ScriptUtilisationPrérequis
scripts/analyze_motion.pyAudit statique du CSS et JS d'un projet. Détecte les animations de mise en page, transition: all, les boucles infinies, les longues durées et l'absence de gestion du mouvement réduit. --inventory liste les valeurs de timing existantes.Python 3 (bibliothèque standard uniquement)
scripts/capture_motion.pyEnregistre les animations déclarées et en cours sur une URL en direct, fait défiler la page et vérifie ce qui fonctionne encore avec un mouvement réduit. Écrit capture.json et top.png.Python 3, pip install playwright, python -m playwright install chromium

Les deux scripts acceptent --help.

Modèles

FichierUtilisation
templates/motion-tokens.cssVariables de tokens, keyframes de base, règles de révélation et le bloc de mouvement réduit. Copiez dans le projet.
templates/reveal.jsRévélation au défilement sans dépendance avec IntersectionObserver qui respecte le mouvement réduit.

Langue

Rédigez ANIMATION.md et les résumés dans la langue de l'utilisateur. Gardez les noms en CSS, JavaScript et tokens en anglais.

Chaîne de repli

  • Le script de capture échoue (pas de Playwright, ou le site bloque le navigateur) → demandez une capture d'écran ou un court enregistrement d'écran et construisez à partir de cette description.
  • La référence utilise une bibliothèque d'animation que vous ne pouvez pas identifier → dites-le et demandez si vous devez reproduire la sensation ou le mouvement exact.
  • Aucune entrée du tout → posez une question sur la sensation, puis utilisez la personnalité calme.

Skills associés