Motion taste
Animation premium à la française. Gestes élégants, transitions raffinées, micro-interactions subtiles. Spring physics uniquement, GSAP ScrollTrigger, motion/react.From its SKILL.md
npx -y skills add mud-mos23/nstup-taste --skill motion-tasteAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
- runs commandsInstructs the agent to run 1 command, including `npm install gsap @gsap/react`.
SKILL.md
5.2 KB, ~1.6k tokens by cl100k_base, as published. Nobody here has run it
Motion Taste — Le Geste Français
La motion n'est pas un effet spécial. C'est un langage qui guide, surprend, enchante.
1. Philosophie du Mouvement
Principes Fondamentaux
- Subtilité — Si l'utilisateur remarque l'animation, elle est trop forte
- Noblesse — Spring physics uniquement. Rien d'artificiel ou mécanique
- Performance — Tout doit tourner à 60fps.
will-change,transform,opacityseulement - Progressif — L'expérience doit être complète sans animation (respecte
prefers-reduced-motion) - Utilité — Chaque animation a un but : guider, informer, célébrer
Les 3 Usages de la Motion
| Usage | Exemple | Durée |
|---|---|---|
| Fonctionnel | Navigation, hover, focus | 200-300ms |
| Information | Notification, loader, transition | 300-500ms |
| Narratif | Scroll reveal, hero intro, timeline | 600-1000ms |
2. Spring Physics Configs
Standard — la base
transition: {
type: 'spring',
stiffness: 100,
damping: 20,
mass: 1,
}
Élastique — boutons, cartes, clics
transition: {
type: 'spring',
stiffness: 200,
damping: 15,
mass: 0.8,
}
Flottant — modaux, menus, dropdowns
transition: {
type: 'spring',
stiffness: 80,
damping: 25,
mass: 1.2,
}
Rebond — notifications, badges
transition: {
type: 'spring',
stiffness: 300,
damping: 10,
mass: 0.6,
}
Élégant — hero, titres, entrées solennelles
transition: {
type: 'spring',
stiffness: 60,
damping: 28,
mass: 1.5,
}
CSS équivalent
/* Spring physics en CSS */
.button {
transition: transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);
}
3. Micro-Interactions Obligatoires
Boutons
button {
transition:
transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1),
background-color 0.2s ease;
&:hover {
transform: scale(1.02);
}
&:active {
transform: scale(0.98);
}
}
Liens
a {
background-image: linear-gradient(currentColor, currentColor);
background-position: 0% 100%;
background-repeat: no-repeat;
background-size: 0% 1px;
transition: background-size 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
&:hover {
background-size: 100% 1px;
}
}
Images
img {
transition: transform 0.6s cubic-bezier(0.34, 1.56, 0.64, 1);
.card:hover & {
transform: scale(1.02);
}
}
4. Scroll Animations (GSAP)
Installation
npm install gsap @gsap/react
Fade-in au scroll
gsap.utils.toArray('.reveal').forEach(el => {
gsap.from(el, {
opacity: 0,
y: 40,
duration: 0.8,
ease: 'power2.out',
scrollTrigger: {
trigger: el,
start: 'top 85%',
toggleActions: 'play none none reverse',
}
})
})
Sticky panels
gsap.utils.toArray('.panel').forEach((panel, i) => {
ScrollTrigger.create({
trigger: panel,
start: 'top top',
pin: true,
pinSpacing: false,
end: '+=100%',
})
})
Parallax doux
gsap.to('.parallax-bg', {
y: '30%',
ease: 'none',
scrollTrigger: {
trigger: '.parallax-section',
start: 'top bottom',
end: 'bottom top',
scrub: true,
}
})
5. Motion avec React (motion/react)
Entrée de page
<motion.div
initial={{ opacity: 0, y: 20 }}
animate={{ opacity: 1, y: 0 }}
transition={{ type: 'spring', stiffness: 80, damping: 20 }}
>
<Content />
</motion.div>
Stagger (enfants)
<motion.div
variants={{
hidden: { opacity: 0 },
show: {
opacity: 1,
transition: { staggerChildren: 0.1 }
}
}}
initial="hidden"
animate="show"
>
{items.map(item => (
<motion.div
key={item.id}
variants={{
hidden: { opacity: 0, y: 20 },
show: { opacity: 1, y: 0 }
}}
>
<Item {...item} />
</motion.div>
))}
</motion.div>
Layout animations
<motion.div layout transition={{ type: 'spring', stiffness: 100, damping: 20 }}>
<AnimatedContent />
</motion.div>
6. Règles Strictes
Interdictions
- ❌
transition: all(toujours spécifier les propriétés) - ❌
ease-in-out,ease-in,ease-out(préférer cubic-bezier personnalisé) - ❌ Animations > 1000ms (sauf scroll d'arrivée)
- ❌ Animation au scroll qui bloque la lecture du contenu
- ❌
setInterval/requestAnimationFramepour des animations simples - ❌ Hover scale > 1.05 (sauf cas très spécifiques)
- ❌
@keyframesbounce / pulse / shake - ❌ Opacité en transition seule sans
transform - ❌ AOS.js, Wow.js, ou autres bibliothèques d'animation au scroll (utiliser GSAP)
- ❌
framer-motion(obsolète — utilisermotion)
Obligations
- ✅ Toujours
prefers-reduced-motion: reducerespecté - ✅ Toujours
will-change: transformsur les éléments animés - ✅
transformetopacityseulement pour la performance - ✅ Durées cohérentes dans tout le projet
- ✅ Accessibilité :
motion-safe/motion-reducemedia queries
What ships with it
Read from the repository
Just SKILL.md. No reference files, no scripts.