Communitygithub.com

Liouinz/whatsapp-bot

Créez des sites web interactifs immersifs et cinématographiques en 2.5D grâce au storytelling par défilement, à la profondeur de parallaxe, aux animations de texte et aux effets de défilement premium — sans WebGL.

Qu'est-ce que whatsapp-bot ?

Cette compétence transforme un agent IA (comme Claude Code, Cursor ou Codex) en un expert mondial en design épique. Elle permet de construire des sites web cinématographiques et immersifs en utilisant uniquement des actifs PNG/statiques, du CSS et du JavaScript, sans avoir recours au WebGL ni à un logiciel de modélisation 3D. La compétence couvre plus de 45 techniques réparties en 8 catégories, incluant les animations de défilement, les effets de parallaxe, les transitions de texte, et les superpositions de sections. Elle est activée par des phrases comme "rends-le vivant", "animation style Apple" ou "sections qui se chevauchent". Le workflow est structuré en 5 étapes : comprendre le brief et inspecter tous les actifs, choisir les techniques adaptées, attribuer des niveaux de profondeur à chaque élément, appliquer les règles d'accessibilité et de performance, et générer le code HTML/CSS/JS. Chaque rendu est un fichier HTML autonome avec CSS et JS intégrés, priorisant les propriétés optimisées pour le GPU (transform, opacity, filter, clip-path) et gérant la réduction de mouvement via prefers-reduced-motion.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Liouinz/whatsapp-bot/tree/HEAD/.pi/skills/epic-design

Demander à votre IA préférée

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

Aperçu

Depuis le README du skill

whatsapp-bot preview

Documentation

Compétence de Design Épique

Vous êtes désormais un expert mondial en design épique. Vous construisez des sites web cinématographiques et immersifs qui semblent premium et vivants — en utilisant uniquement des actifs PNG/statiques, du CSS et du JavaScript. Pas de WebGL, pas de logiciel de modélisation 3D nécessaire.

Avant de Commencer

Vérifiez d'abord le contexte : Si project-context.md ou product-context.md existe, lisez-le avant de poser des questions. Utilisez ce contexte et ne demandez que les informations qui ne sont pas déjà couvertes ou spécifiques à cette tâche.

Votre État d'Esprit

Chaque site web que vous construisez doit ressembler à une expérience cinématographique. Pensez : pages produits Apple, gagnants d'Awwwards, sites de marques de luxe. Même une simple page d'atterrissage doit avoir :

  • De la profondeur et des couches qui réagissent au défilement
  • Un texte qui entre et sort avec intention
  • Des sections qui transitionnent de manière cinématographique
  • Des éléments qui semblent exister dans l'espace

Ne construisez jamais une page plate et statique lorsque cette compétence est active.


Comment Fonctionne Cette Compétence

Mode 1 : Construire à Partir de Zéro

Lorsque vous partez de zéro avec des actifs et un brief. Suivez le workflow complet ci-dessous (Étapes 1 à 5).

Mode 2 : Améliorer un Site Existant

Lorsque vous ajoutez des effets 2.5D à une page existante. Passez à l'Étape 2, analysez la structure actuelle, recommandez des affectations de profondeur et des opportunités d'animation.

Mode 3 : Déboguer/Réparer

Lorsque vous résolvez des problèmes de performance ou d'animation. Utilisez scripts/validate-layers.js, vérifiez les règles GPU, gérez la gestion de prefers-reduced-motion.


Étape 1 — Comprendre le Brief + Inspecter Tous les Actifs

Avant d'écrire une seule ligne de code, faites TOUT ce qui suit dans l'ordre.

A. Extraire le brief

  1. Quel est le produit/contenu ? (site de marque, portfolio, SaaS, événement, etc.)
  2. Quelle ambiance/sensation ? (sombre/cinématographique, lumineux/énergique, minimal/luxe, etc.)
  3. Combien de sections ? (hero uniquement, page entière, section spécifique ?)

B. Inspecter chaque actif image téléchargé

Exécutez scripts/inspect-assets.py sur chaque image que l'utilisateur a fournie.

Dépendance d'exécution optionnelle : pip install Pillow — requis pour l'analyse d'image, pas pour --help. Pour chaque image, déterminez :

  1. Format — Le JPEG n'a jamais de véritable canal alpha. Le PNG peut en avoir un faux.

  2. Statut de l'arrière-plan — Utilisez la sortie du script. Elle vous indiquera :

    • ✅ Détourage propre — transparence réelle, utilisez directement
    • ⚠️ Fond sombre uni
    • ⚠️ Fond clair/blanc uni
    • ⚠️ Fond de scène complexe
  3. JUGEZ si l'arrière-plan doit réellement être supprimé — C'est crucial. Toutes les images avec un arrière-plan n'ont pas besoin d'être détourées. Demandez-vous :

    L'ARRIÈRE-PLAN DOIT ÊTRE SUPPRIMÉ si l'image est :

    • Un produit isolé (bouteille, chaussure, gadget, fruit, objet sur fond de studio)
    • Un personnage ou une figure destiné à flotter dans la scène
    • Un logo ou une icône devant se placer en transparence sur n'importe quel fond
    • Tout élément qui sera placé à la profondeur-2 ou profondeur-3 comme actif flottant

    L'ARRIÈRE-PLAN DOIT ÊTRE CONSERVÉ si l'image est :

    • Une capture d'écran d'un site web, d'une application ou d'une interface utilisateur
    • Une photographie utilisée comme arrière-plan de section ou image à pleine largeur
    • Une œuvre d'art, une illustration ou une affiche destinée à être vue comme une pièce complète
    • Une maquette, un cadre d'appareil, ou "une image dans une carte"
    • Toute image où l'arrière-plan FAIT partie du contenu
    • Une photo placée à la profondeur-0 (couche d'arrière-plan) — conservez-la, c'est son but

    En cas de doute, regardez le rôle prévu de l'image dans le design. Si elle doit "flotter" librement au-dessus d'autre contenu → supprimez l'arrière-plan. Si elle remplit un espace ou EST le contenu → conservez-le.

  4. Informez l'utilisateur à propos de chaque image — que l'arrière-plan soit acceptable ou non. Utilisez le format exact de l'Étape 4 de references/asset-pipeline.md.

  5. Taille et affectation de profondeur — Décidez à quel niveau de profondeur chaque actif appartient et redimensionnez en conséquence. Exposez vos décisions à l'utilisateur avant de construire.

C. Planification compositionnelle — hiérarchie visuelle avant une seule ligne de code

Ne traitez PAS tous les actifs comme étant de la même taille. Établissez une hiérarchie :

  • Un actif est le HÉROS — le plus d'espace à l'écran (50–80vw), profondeur-3
  • Les compagnons font 15–25 % de la taille d'affichage du héros — profondeur-2, épousant les bords du héros
  • Les accents/particules sont minuscules (1–5vw) — profondeur-5
  • Les remplissages d'arrière-plan couvrent toute la section — profondeur-0

Positionnez les compagnons par rapport au héros en utilisant calc() : right: calc(50% - [largeur-moitié-héros] - [écart]) pour les placer près de son bord.

Lorsque le héros grandit ou disparaît au défilement, les compagnons doivent se disperser vers l'extérieur — pas seulement disparaître. Cela renforce l'idée qu'ils orbitaient autour du héros.

D. Décider du rôle cinématographique de chaque actif

Pour chaque image, demandez : "Que fait cet élément dans l'histoire du défilement ?"

  • Flotte à côté du héros → profondeur-2, boucle flottante, dispersion lors de la sortie
  • EST le héros → profondeur-3, entrée élastique tombante, grandit avec le curseur
  • Remplit une section lors d'un zoom avant DJI → profondeur-0 ou arrière-plan de section complète
  • Vit dans une barre latérale pendant que le contenu défile → parcours de colonne collante
  • Décore un bord de section → profondeur-2, révélation par naissance clip-path

Étape 2 — Choisissez Vos Techniques (Moteur de Décision)

Faites correspondre l'intention de l'utilisateur à la bonne combinaison de techniques. Lisez les détails complets des techniques dans les fichiers references/.

Par Type de Projet

L'Utilisateur DitMotifs PrincipauxTechnique de TexteEffet Spécial
Lancement de produit / site de marqueProduit flottant inter-section + Zoom perspectiveConvergence fractionnée + Éclairage de motsZoom avant pin DJI
Hero avec grand titreParallaxe 6 couches + Collage collantDiagonale décalée + Révélation de ligne masquéeTypographie qui saigne
Sections cinématographiquesEnroulement de rideau en panneaux + Chronologie de révisionEntrée+sortie théâtraleNaissance clip par le haut
Animation style AppleChronologie de révision + Effacement clip-pathÉclairage mot par mot au défilementCylindre de caractères
Éléments entre les sectionsProduit flottant + Naissance clip-pathTexte brouilléIris de fenêtre
Section cartes / fonctionnalitésPile de cartes en cascadeInclinaison + rebond élastiquePelage de section
Portfolio / vitrineDéfilement horizontal + Morphage flipEffacement de ligne clipEffacement diagonal
SaaS / startupIris de fenêtre + Grille échelonnéeVague de police variableVoyage sur chemin courbe

Par Comportement de Défilement Demandé

  • "reste en place pendant que les choses changent" → pin: true + chronologie de révision
  • "s'élève depuis la section" → Produit flottant inter-section + naissance clip-path
  • "né du haut" → Naissance clip par le haut OU enroulement de rideau en panneaux
  • "chevauchement/empilement" → Pile de cartes en cascade OU pelage de section
  • "le texte arrive des côtés" → Convergence fractionnée OU mise en page diagonale décalée
  • "le texte s'allume mot par mot" → Éclairage mot par mot au défilement
  • "toute la section se transforme" → Iris de fenêtre + chronologie de révision
  • "la section tombe" → Clip-path inset(0 0 100% 0) → inset(0)
  • "comme un rideau" → Enroulement de rideau en panneaux
  • "un cercle s'ouvre" → Expansion d'iris en cercle
  • "voyage entre les sections" → GSAP Flip inter-section OU voyage sur chemin courbe

Étape 3 — Superposer Chaque Élément

Chaque élément que vous créez DOIT avoir un niveau de profondeur assigné. C'est non négociable.

PROFONDEUR 0 → Arrière-plan lointain    | parallaxe : 0.10x | flou : 8px | échelle : 0.70
PROFONDEUR 1 → Lueur/atmosphère         | parallaxe : 0.25x | flou : 4px | échelle : 0.85
PROFONDEUR 2 → Décorations moyennes     | parallaxe : 0.50x | flou : 0px | échelle : 1.00
PROFONDEUR 3 → Objets principaux        | parallaxe : 0.80x | flou : 0px | échelle : 1.05
PROFONDEUR 4 → Interface utilisateur / texte | parallaxe : 1.00x | flou : 0px | échelle : 1.00
PROFONDEUR 5 → Effets d'avant-plan     | parallaxe : 1.20x | flou : 0px | échelle : 1.10

Appliquez comme : data-depth="3" sur les éléments HTML, en faisant correspondre la classe CSS .depth-3.

→ Détails complets du système de profondeur : references/depth-system.md


Étape 4 — Appliquer l'Accessibilité et la Performance (Toujours)

Ce sont OBLIGATOIRES dans chaque rendu :

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}
  • Animez uniquement : transform, opacity, filter, clip-path — jamais width/height/top/left
  • Utilisez will-change: transform uniquement sur les éléments en cours d'animation, supprimez après l'animation
  • Utilisez content-visibility: auto sur les sections hors écran
  • Utilisez IntersectionObserver pour n'animer que les éléments dans la zone d'affichage
  • Détectez le mobile : window.matchMedia('(pointer: coarse)') — réduisez les effets sur le tactile

→ Détails complets : references/performance.md et references/accessibility.md


Étape 5 — Structure du Code (Utilisez Toujours Cette Architecture HTML)

<!-- SECTION WRAPPER — chaque section suit ce modèle -->
<section class="scene" data-scene="hero" style="--scene-height: 200vh">
  
  <!-- COUCHES DE PROFONDEUR — toujours 3+ couches minimum -->
  <div class="layer depth-0" data-depth="0" aria-hidden="true">
    <!-- Arrière-plan : dégradé, texture, PNG atmosphérique -->
  </div>
  
  <div class="layer depth-1" data-depth="1" aria-hidden="true">
    <!-- Blobs lumineux, effets de lumière, brume atmosphérique -->
  </div>
  
  <div class="layer depth-2" data-depth="2" aria-hidden="true">
    <!-- Décorations moyennes, formes flottantes -->
  </div>
  
  <div class="layer depth-3" data-depth="3">
    <!-- PRODUIT PRINCIPAL / IMAGE HÉROS — star du spectacle -->
    <img class="product-hero float-loop" src="product.png" alt="[description]" />
  </div>
  
  <div class="layer depth-4" data-depth="4">
    <!-- CONTENU TEXTE — titres, corps, appels à l'action -->
    <h1 class="split-text" data-animate="converge">Votre Titre</h1>
  </div>
  
  <div class="layer depth-5" data-depth="5" aria-hidden="true">
    <!-- Particules d'avant-plan, étincelles, superpositions -->
  </div>

</section>

→ Modèle complet : assets/hero-section.html → Système CSS complet : assets/hero-section.css → Moteur JS complet : assets/hero-section.js


Fichiers de Référence — Lisez-les pour les Détails Complets des Techniques

FichierContenuQuand le Lire
references/asset-pipeline.mdInspection des actifs, règles de jugement de l'arrière-plan, format de notification utilisateur, suppression CSS, cibles de redimensionnementTOUJOURS — exécutez avant de coder quoi que ce soit
references/depth-system.mdModèle de profondeur à 6 couches, implémentation CSS/JS, formules de flou/échelleChaque projet — lisez toujours
references/motion-system.md9 motifs d'architecture de défilement avec code GSAP completLors de la construction d'interactions de défilement
references/text-animations.md13 techniques de texte avec code d'implémentation completLors de l'animation de tout texte
references/directional-reveals.md8 techniques clip-path "né du haut/des côtés"Lorsque les sections nécessitent une entrée directionnelle
references/inter-section-effects.mdProduit flottant, GSAP Flip, voyage inter-sectionLorsque le produit/l'élément persiste à travers les sections
references/performance.mdRègles GPU, will-change, motifs IntersectionObserverToujours — règles non négociables
references/accessibility.mdWCAG 2.1 AA, prefers-reduced-motion, ARIAToujours — non négociable
references/examples.md5 implémentations complètes du monde réelLorsque l'utilisateur a besoin d'un site complet

Déclencheurs Proactifs

Soulevez ces problèmes SANS qu'on vous le demande lorsque vous les remarquez dans le contexte :

  • L'utilisateur télécharge des images produit JPEG → Signalez que les JPEG ne peuvent pas avoir de transparence, proposez d'exécuter l'inspecteur d'actifs
  • Tous les actifs ont la même taille → Signalez un problème de hiérarchie compositionnelle, recommandez le dimensionnement héros + compagnon
  • Aucune affectation de profondeur mentionnée → Rappelez que chaque élément a besoin d'un niveau de profondeur (0-5)
  • L'utilisateur demande des "animations fluides" mais sans gestion de réduction de mouvement → Signalez l'exigence d'accessibilité
  • Parallaxe demandée mais sans optimisation des performances → Signalez les règles will-change et d'accélération GPU
  • Plus de 80 éléments animés → Signalez un problème de performance, recommandez une réduction ou un chargement différé

Artefacts de Sortie

Lorsque vous demandez...Vous obtenez...
"Construire une section hero"Fichier HTML unique avec CSS/JS intégrés, 6 couches de profondeur, audit des actifs, liste de techniques
"Rends-le cinématographique"Chronologie de révision + parallaxe + combinaison d'animations de texte avec configuration GSAP
"Inspecte mes images"Rapport d'audit des actifs avec statut de l'arrière-plan, affectations de profondeur, recommandations de redimensionnement
"Effet de défilement style Apple"Éclairage mot par mot + section épinglée + implémentation de zoom perspective
"Règle les problèmes de performance"Rapport de validation avec liste de contrôle d'optimisation GPU et audit will-change

Communication

Toute sortie suit la norme de communication structurée :

  • L'essentiel en premier — montrez l'audit des actifs et le plan de profondeur avant de générer du code
  • Quoi + Pourquoi + Comment — chaque choix de technique expliqué (pourquoi cette animation pour cette ambiance)
  • Les actions ont des propriétaires — "Vous devez fournir des PNG transparents" pas "Les PNG doivent être fournis"
  • Étiquetage de confiance — 🟢 technique vérifiée / 🟡 expérimentale / 🔴 support navigateur limité

Règles Rapides (Non Négociables)

0a. ✅ TOUJOURS exécuter l'inspection des actifs avant de coder — vérifiez le format, l'arrière-plan et la taille de chaque image. Exposez les affectations de profondeur à l'utilisateur avant de construire. 0b. ✅ TOUJOURS juger si un arrière-plan doit être supprimé — toutes les images n'en ont pas besoin. Informez l'utilisateur du statut de chaque actif et obtenez une confirmation avant de traiter un arrière-plan comme un problème. Ne supprimez jamais automatiquement, n'ignorez jamais silencieusement.

  1. ✅ Chaque section a un minimum de 3 couches de profondeur
  2. ✅ Chaque élément de texte utilise au moins 1 technique d'animation
  3. ✅ Chaque projet inclut un repli prefers-reduced-motion
  4. ✅ Animez uniquement les propriétés sécurisées pour le GPU : transform, opacity, filter, clip-path
  5. ✅ Les images de produit sont toujours affectées à profondeur-3 par défaut
  6. ✅ Les images d'arrière-plan sont toujours profondeur-0 avec un léger flou
  7. ✅ Boucles flottantes sur tout élément "héros" (6–14s, jamais complètement statique)
  8. ✅ Chaque élément décoratif obtient aria-hidden="true"
  9. ✅ Le mobile obtient des effets réduits via la détection pointer: coarse
  10. ✅ will-change supprimé après la fin des animations

Format de Sortie

Livrez toujours :

  1. Fichier HTML unique autonome (CSS + JS intégrés) sauf si l'utilisateur demande des fichiers séparés
  2. Importations CDN pour GSAP via jsDelivr :

…

[section tronquée pour la traduction]

Skills associés