Communitygithub.com

AlessandroFare/fluxychat

Utiliser lorsque l'audio déjà placé dans une composition HyperFrames doit être mixé : un fond musical qui lutte avec une voix off (évidement de la voix), des effets sur une piste (EQ, compresseur, limiteur, gate, saturation, delay, reverb, chorus, phaser, bitcrush), ou des enveloppes d'automatisation dessinées sur le volume d'une piste ou sur n'importe quel paramètre d'effet. Ne pas utiliser pour la recherche ou la génération audio – trouver de la musique de fond, des effets sonores ou créer une voix off relève de `/media-use`. Ne pas utiliser pour le calage des clips ou la disposition des pistes, qui relève de `/hyperframes-core`.

Qu'est-ce que fluxychat ?

Cette compétence pour HyperFrames se concentre exclusivement sur le mixage audio au sein d'une composition, en offrant des outils pour résoudre les conflits entre pistes audio (comme une voix off et un fond musical), appliquer des effets, et créer des automatisations. Contrairement à une approche par empilement de processeurs, elle considère le mix comme un ensemble de relations : chaque outil existe pour exprimer l'une de ces relations, que ce soit l'évidement spectral d'une voix (carve), la dynamique (compression, gate) ou le traitement temporel (reverb, delay). Les effets sont stockés dans l'attribut `data-fx-chain` de l'élément, et les enveloppes d'automatisation dans `data-fx-automation`. La prévisualisation et le rendu utilisent le même graphe AudioContext, garantissant que ce qui est entendu pendant l'édition est exactement ce qui sera rendu. La compétence est conçue pour être utilisée en mode 'Studio' (interface graphique) ou en mode 'headless' via des scripts, et elle détecte automatiquement quelle piste est une voix et laquelle est un fond musical pour appliquer l'évidement par défaut.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/AlessandroFare/fluxychat/tree/HEAD/agent/skills/hyperframes-audio

Demander à votre IA préférée

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

Documentation

HyperFrames Audio

Un mix est un ensemble de relations, pas une pile de processeurs. Deux pistes qui sonnent bien individuellement peuvent être inécoutables ensemble, et la solution n'est presque jamais de "baisser l'une" — il s'agit de trouver sur quoi elles se battent et de le donner à celle qui en a besoin. Chaque outil présent ici existe pour exprimer une de ces relations.

Les effets vivent sur l'élément en tant que data-fx-chain, et la prévisualisation et le rendu exécutent le même graphe AudioContext — le studio dans un contexte en direct, le moteur dans un contexte hors ligne à l'intérieur du navigateur qu'il pilote déjà. Il n'y a qu'une seule implémentation de chaque effet, donc ce que vous entendez en déplaçant la tête de lecture est ce qui sera écrit. Vous ne réglez jamais deux fois.

Trois attributs portent tout, tous sur l'élément audio/vidéo lui-même :

AttributContient
data-fx-chainles effets, dans l'ordre du signal
data-automationles enveloppes sur le volume de cette piste ou ses paramètres d'effet
data-fx-carveles propres réglages de l'évidement, afin qu'il puisse être redérivé

Le JSON exact pour chacun, et les règles qu'une piste doit satisfaire : references/attributes.md. Chaque effet avec ses paramètres, plages et unités : references/fx-registry.md. Comment déterminer ce qui ne va pas avec un fichier que vous ne pouvez pas entendre : references/diagnosis.md. Presets, tâches nommées et profils à un bouton, plus un tableau symptôme-à-correction : references/presets.md — lisez-le avant de construire une chaîne à la main, car l'un des presets ou des tâches nommées nomme généralement déjà le problème.

Comment tout s'assemble

Deux surfaces de création écrivent ces attributs ; deux environnements d'exécution les lisent via les mêmes constructeurs. Ce noyau partagé est la raison pour laquelle la prévisualisation prédit le rendu.

flowchart TB
  voice["piste voix<br/>fichier média"]
  bed["piste fond musical<br/>fichier média"]

  subgraph AUTHOR["Création — les seules choses qui écrivent les attributs"]
    panel["Studio<br/>Contrôle d'évidement de la voix off"]
    script["scripts/carve.mjs<br/>détecte la paire, dynamique par défaut"]
    analysis["core/audioCarve.ts<br/>carveProfile · analyseCarveBands<br/>analyseCarveDuck · analyseCarveDynamics"]
    panel --> analysis
    script --> analysis
  end

  voice --> analysis
  bed --> analysis

  subgraph ATTRS["Écrits sur l'élément du fond musical"]
    carveAttr["data-fx-carve<br/>source · strength · dynamic"]
    chainAttr["data-fx-chain<br/>peaking xN + gain, tagué fromCarve"]
    autoAttr["data-automation<br/>une piste par paramètre évidé"]
  end

  analysis --> carveAttr
  analysis --> chainAttr
  analysis --> autoAttr

  subgraph SHARED["Une seule implémentation, lue par les deux"]
    build["audioFxGraph.ts · buildFxChain"]
    sched["audioFxAutomation.ts · scheduleChainAutomation"]
  end

  chainAttr --> build
  autoAttr --> sched

  build --> preview["Prévisualisation<br/>AudioContext en direct<br/>attachElementFxChain"]
  sched --> preview
  build --> render["Rendu<br/>OfflineAudioContext dans le navigateur headless<br/>applyAudioFxChain"]
  sched --> render

  preview --> heard["ce que vous entendez en déplaçant la tête de lecture"]
  render --> wav["WAV traité<br/>+ chainTailSeconds pour que le mix laisse passer la queue"]
  wav --> mix["moteur · audioMixer<br/>la piste de volume est intégrée dans le PCM ici, pas dans le graphe"]
  mix --> out["le mix rendu"]

  edit["modification de l'attribut en cours de lecture"] -.->|MutationObserver| preview

Les propres réglages de l'évidement ne sont jamais lus lors de la lecture — la chaîne et les pistes qu'il a produites sont ce qui est joué. data-fx-carve existe pour que la force puisse être modifiée sur un évidement existant au lieu d'être devinée à partir des filtres.

À l'intérieur d'un fond musical évidé, le signal passe d'abord par les creux, puis par l'adaptation de niveau, puis par tout ce que vous avez construit vous-même — c'est pourquoi un limiteur que vous ajoutez agit toujours comme le plafond final :

flowchart LR
  src["fond musical décodé"] --> p1["peaking<br/>400 Hz"]
  p1 --> p2["peaking<br/>1 kHz"]
  p2 --> p3["peaking<br/>1,6 kHz"]
  p3 --> g["gain<br/>adaptation de niveau"]
  g --> hand["vos propres effets<br/>par ex. limiteur"]
  hand --> dest["gain de piste, puis sortie"]

  l1["piste fx.n1.gain"] -.->|"enveloppe du niveau de la voix<br/>dans cette bande"| p1
  l4["piste fx.n4.gain"] -.->|"à quel point le fond musical<br/>s'efface globalement"| g

Un évidement statique est le même graphe avec des valeurs fixes et aucune piste du tout.

D'abord, déterminer ce qui ne va pas

Le tableau ci-dessous part de "ça sonne sourd" — ce qui suppose que quelqu'un a déjà écouté et l'a dit. Recevoir un fichier avec "corrige ça", vous n'avez pas une telle phrase et vous ne pouvez pas écouter, vous devez donc mesurer. Une règle gouverne tout cela :

Le spectre absolu d'une seule voix inconnue ne peut pas être diagnostiqué. Les formants sont de ±10 dB, les fondamentales vont de 85 à 255 Hz, et les phrases baissent de 5 à 6 dB à mesure qu'elles se terminent. Chacun de ces éléments ressemble à un défaut en soi, et chacun d'eux est le locuteur.

Donc comparez, et comparez à quelque chose dans le même fichier : l'original propre s'il existe, sinon les pauses — tout ce qui est audible dans un silence est additif, et le spectre du silence est celui du canal plutôt que de la voix. Comparer à un spectre moyen publié ou à une voix de contrôle synthétisée ne fonctionne pas : deux locuteurs diffèrent plus que la plupart des défauts, et les deux mauvaises réponses dans l'évaluation derrière ces conseils provenaient exactement de cela.

Lorsqu'il n'y a pas d'original et pas de silence utilisable, un défaut tonal statique est véritablement sous-déterminé. Dites-le et proposez les lectures qui correspondent, plutôt que d'en choisir une et de construire une chaîne dessus.

Commandes, pièges et recettes éprouvées : references/diagnosis.md. Lisez-le avant de diagnostiquer un fichier que personne n'a décrit.

Partir du symptôme

Une fois que vous connaissez la bande et le type, nommez ce qui ne va pas avec l'audio. La plupart des mauvais audios se résument à un ou deux de ces éléments, et chacun a une réponse intégrée :

Ça ressemble àUtilisez
Ronflement ou bruit sourd en dessousrumble-cut, ou un highpass à 80 Hz
Sourd, caverneuxTame Boominess tâche (200 Hz)
Étouffé, comme derrière du cartonReduce Mud tâche (250 Hz)
Mots difficiles à comprendreAdd Clarity tâche (3 kHz), ou évidez le fond musical
Âpre et fatiguantSoften Harshness tâche (3,2 kHz)
Certains mots beaucoup plus forts que d'autresEvenness sur un compresseur, ou Even Out Levels
Bruit ambiant entre les phrasesroom-gate
Voix et musique en conflitÉvidement de la voix off — pas un EQ sur l'un ou l'autre
Sec, enregistré nulle partroom-tight ou room-natural
Juste "amateur"voice-clean, qui est quatre des éléments ci-dessus en ordre

Catalogue complet, ce que contient chaque preset, le vocabulaire des bandes, et ce qui n'est DÉLIBÉRÉMENT PAS couvert (dé-essing, suppression de bruit, adaptation tonale) : references/presets.md.

Soustrayez avant d'ajouter, égalisez après avoir filtré, réglez les relations après le niveau, le caractère et le plafond en dernier. Chaque étape change ce que la suivante entend — un compresseur réglé avant un filtre passe-haut passe son temps à chasser les grondements.

Choisissez une famille selon le problème, pas le nom

Filtres (highpass, lowpass, peaking, lowshelf, highshelf) décident quelles fréquences une piste est autorisée à occuper. C'est le premier outil pour deux sources qui entrent en collision, car les collisions se produisent dans des bandes : un fond musical et une voix veulent tous deux 1–3 kHz, et retirer cela du fond musical coûte bien moins au fond musical que de baisser le tout ne coûte au mix. Un filtre passe-haut sur une voix est la solution standard pour le grondement ; un filtre passe-bas assombrit ou étouffe délibérément.

Dynamiques (gain, compressor, limiter, gate) décident comment le niveau d'une piste se comporte dans le temps. La compression réduit la distance entre le fort et le faible pour que les parties faibles puissent remonter. Un limiteur est un plafond — il ne façonne rien, il garantit que rien ne dépasse. Un gate supprime ce qui est en dessous d'un seuil, c'est ainsi que l'on fait taire le bruit ambiant entre les phrases. gain est un simple étage de niveau, et c'est ce qu'une piste d'automatisation pilote lorsqu'une piste doit se déplacer pour laisser passer autre chose.

Non linéaires (saturate, bitcrush) modifient la forme d'onde, ajoutant des harmoniques qui n'étaient pas là. Utilisez-les lorsqu'une piste a besoin de caractère ou de grain plutôt que de correction — et rappelez-vous qu'il est génératif : il rend une source fine plus dense, pas plus propre.

Temporels (delay, reverb, chorus, phaser) placent une piste dans un espace ou lui donnent de la largeur. Ce sont ceux qui risquent le plus de gâcher un mix, car une queue ou une copie désaccordée occupe la même pièce dont une voix a besoin. Utilisez-les sur ce qui doit se situer derrière autre chose, et gardez le niveau humide plus bas que ce qui sonne bien isolément.

La chaîne est en série : chaque effet traite ce que le précédent a produit. Donc le filtrage correctif va tôt, le caractère au milieu, et un limiteur en dernier là où il peut effectivement agir comme un plafond.

Évidement de la voix off

Le problème qu'il résout. Un fond musical sous une voix rend la voix difficile à suivre. Le réflexe est de baisser tout le fond musical, ce qui fonctionne mais coûte au fond musical toute sa présence — la musique devient molle pendant toute la voix off. Mais la voix n'a pas besoin de tout le spectre. Elle a besoin des quelques bandes qu'elle occupe réellement. L'évidement ne prend que celles-ci, et le fond musical garde ses basses et ses aigus, donc il reste de la musique pendant que la voix reste intelligible.

C'est une relation, pas un effet. Les réglages vivent sur le fond musical — la piste qui est traitée — et ils nomment les voix à écouter, exactement comme le ferait un compresseur sidechain : vous sélectionnez la piste qui devient plus silencieuse et choisissez ce qui la rend plus silencieuse. Ne mettez jamais d'évidement sur une piste de voix. Une voix évidée contre elle-même est un bug, pas un choix de mix subtil.

Chaque voix, pas une seule d'entre elles. sources est une liste, car un fond musical passe généralement sous une séquence entière — un narrateur, une réponse d'interview, un deuxième présentateur. Elles sont additionnées sur l'horloge propre du fond musical avant que quoi que ce soit ne soit mesuré (mixCarveSources), de sorte qu'une analyse les couvre toutes : les bandes proviennent de toute la parole présente, et les enveloppes montent chaque fois que l'une d'elles se produit. Les voix qui ne jouent jamais pendant que le fond musical joue sont laissées de côté ; elles ne peuvent pas le masquer.

Un seul bouton. strength est de 0 à 1 et dérive tout : la profondeur de la coupe, le nombre de bandes, leur largeur, à quel point favoriser l'intelligibilité plutôt que l'énergie vocale brute, jusqu'où le niveau peut baisser, et à quel point viser sous la voix. Ces six paramètres évoluent ensemble dans tout mix réel — un évidement doux est une coupe peu profonde dans quelques bandes avec peu de ducking, un évidement dur est plus profond dans plus de bandes avec plus — donc ils sont une seule relation écrite une fois, dans carveProfile. La valeur par défaut est 0.25 — une atténuation de 6 dB dans trois bandes avec 6 dB de marge de niveau, audible sans ressembler à un trou. À 0.5, l'atténuation atteint 10 dB, ce qui est le point où un évidement commence à être perçu comme un effet plutôt que comme de l'espace pour la voix ; au-dessus, c'est un territoire délibéré pour un fond musical fort sous une voix faible. 0 est uniquement spectral — une bande, pas d'adaptation de niveau du tout.

Évidement par défaut. Un fond musical jouant sous une narration veut un évidement ; ce n'est pas une étape de polissage à faire si le temps le permet. Placez les deux pistes, exécutez la commande ci-dessous, écoutez. Ne l'ignorez que lorsqu'il n'y a pas de narration sous laquelle la musique doit se placer — une vidéo musicale, un carton titre, un montage calé sur le morceau.

Il suit toujours la voix. Il n'y a pas de mode statique : une profondeur fixe aplatit le fond musical pendant chaque pause, et une fois que vous avez entendu les deux, il n'y a aucune raison de vouloir cela. Chaque valeur devient une enveloppe du niveau propre de la parole — le silence laisse le fond musical tranquille, un passage fort pousse l'évidement à pleine profondeur — écrite comme une automatisation ordinaire, c'est pourquoi les pistes apparaissent dans la timeline et peuvent être modifiées par la suite.

L'adaptation de niveau en fait partie. Un évidement spectral ne peut pas corriger un fond musical qui est simplement plus fort que la voix. Ainsi, l'évidement mesure également à quel point le fond musical est plus fort que la voix et écrit un étage gain : maintenu à une valeur pour un évidement statique, piloté par une enveloppe pour un évidement dynamique. Cette enveloppe se relâche délibérément lentement — la musique qui revient à plein volume instantanément après qu'un mot se termine sonne comme une machine.

Exécution. Dans Studio, l'évidement est un module en haut de la chaîne d'effets d'une piste — voix, force, dynamique, et l'analyse qu'il a produite, dans une seule carte. Il est présent chaque fois qu'une autre piste pourrait être la voix, et un fond musical avec exactement un candidat au-dessus est évidé par défaut, de manière dynamique, à la force par défaut : c'est ce qu'un fond musical sous une narration veut, et le module est l'endroit où vous le modifiez ou le désactivez. Plusieurs candidats laissent le sélecteur en attente plutôt que de deviner. Headless — la voie lorsque vous créez une composition plutôt que de l'éditer :

node <SKILL_DIR>/scripts/carve.mjs --comp index.html

C'est toute la commande. Elle trouve elle-même la voix et le fond musical, évide dynamiquement à la force par défaut, et affiche ce qu'elle a décidé :

bed    music-bed (le nom ressemble à de la musique)
voice  narration (seule piste restante)
carve  strength 0.25 dynamic
bands  400Hz -6dB q1.4, 1000Hz -3dB q1.4, 1600Hz -3.17dB q1.4
level  216-point envelope, floor -6 dB

Nommez les pistes avec --bed / --voice (répétable) lorsque le choix automatique est incorrect, --strength pour pousser la force, --dry-run pour voir ce rapport sans rien écrire.

Comment il sélectionne les pistes. Les noms d'abord, parce que c'est ce que vous lui avez déjà dit et la réponse est explicable — classifyAudioName dans le core, le même classifieur utilisé par le sélecteur de Studio, donc ils ne peuvent pas être en désaccord. Une piste dont l'id ou le nom de fichier ressemble à de la musique (music, bgm, bed, score…) est le fond musical ; tout le reste qui joue par-dessus et qui n'a pas une forme de SFX est une voix. Les éléments audio sont préférés : la vidéo compte seulement lorsqu'aucune piste audio ne reste pour être la voix, ou que chaque clip B-roll de la composition serait interprété comme quelqu'un parlant. Il refuse lorsqu'il ne peut pas trancher — deux noms ressemblant à de la musique ou deux ressemblant à des voix, car forcer l'évidement en devinant produit un mauvais mix, et la seule issue est de lui donner le nom de la piste.

À quoi cela ressemble : les pistes sont écrites dans la timeline. Les filtres peaking sont visibles en tant qu'entrées de chaîne ; leur gain est piloté par des enveloppes dans data-automation afin que le fond musical respire entre les mots. L'étage de niveau a également sa propre enveloppe. Tout est éditable, tout est supprimable. Pour revenir à la vitesse de l'audio décodé non traité, effacez les trois attributs et le nœud de module est supprimé. Pour désactiver l'évidement sur cette piste mais conserver les réglages et les filtres en tant que piste illustr ative, supprimez data-fx-carve et les pistes dont les noms commencent par carve: dans le tableau d'automatisation.

Automatisation

Ce qu'elle est. Une enveloppe est une piste de forme d'onde dans data-automation qui pilote n'importe quel paramètre connectable du graphe d'effets. Chaque enveloppe a une cible — soit le volume de la piste entière, soit fx.<index>.<nom du param> — et un tableau de points [time, value]. Les temps sont en secondes, relatives au début de la piste. Les valeurs sont dans l'unité du paramètre : le gain en dB, la fréquence en Hz, le Q sans unité, le wet en ratio 0–1, etc.

Commentaire traduit. Les points sont linéaires, crénelés par défaut, et peuvent être lissés avec un coefficient de traînée optionnel. Les enveloppes sont évaluées au même taux que la fréquence d'échantillonnage du projet pendant le rendu, donc les changements brusques sont audibles comme des clics à moins d'être intentionnels.

{
  "lanes": [
    {
      "target": "volume",
      "points": [
        [0, -6],
        [2, -3],
        [4, 0],
        [6, -3],
        [8, -6]
      ],
      "smooth": 0.1
    }
  ]
}

Ce qu'elle résout. Les enveloppes permettent au mix de changer au fil du temps. La piste de volume est intégrée dans le PCM avant que le mix ne soit assemblé, car le moteur fonctionne en espace audio planaire et n'applique pas de gain de piste en temps réel. L'atténuation d'évidement est une enveloppe sur l'étage de gain de la chaîne d'effets. Toute modification commence ici.

Comment la créer. Dans Studio, l'automatisation est dessinée en mode timeline de la piste. Headless, via scripts/automate.mjs :

node <SKILL_DIR>/scripts/automate.mjs --comp index.html --target "fx.0.gain" --points "0,-6 1,-3 2,0"

ÉVITEMENT de l'audio

Ne pas utiliser pour les effets sonores qui ont juste besoin d'être plus forts. Un coup de feu n'a besoin ni d'un évidement ni d'une enveloppe ; il a besoin d'un compresseur pour que l'attaque passe, ou d'un limiteur s'il est déjà assez fort. C'est un outil de mixage, pas de dynamique de la source.

Ne pas utiliser lorsque la piste problématique est un battement de boucle qui n'a pas besoin d'interaction.

Ne pas utiliser lorsqu'un fichier audio a des crêtes qui clippent. C'est de la correction de source, pas de la dynamique de mix. Le limiteur est là pour les crêtes que le mix produit, pas pour celles que le fichier contient déjà.

Flux de travail recommandé

  1. Lisez references/presets.md avant de construire quoi que ce soit à la main — la plupart des problèmes ont déjà un nom.
  2. Pour les fonds musicaux sous narration : exécutez d'abord l'évidement, écoutez, ajustez la force si la voix n'est pas assez claire.
  3. Pour les corrections de piste individuelles : diagnostiquez via references/diagnosis.md, puis appliquez le preset nommé.
  4. Pour les réglages personnalisés : construisez la chaîne manuellement dans data-fx-chain, en commençant par les filtres, puis la dynamique, puis le caractère, puis le plafond.
  5. Testez en prévisualisation : l'animation en boucle du fichier audio applique les effets en temps réel, donc écoutez en boucle et modifiez.
  6. Validez : le rendu écrit exactement ce que la prévisualisation jouait.

Références

FichierContenu
references/attributes.mdSpécifications des attributs et règles de piste
references/fx-registry.mdTous les effets, paramètres, plages et unités
references/diagnosis.mdComment diagnostiquer les défauts audio que vous ne pouvez pas entendre
references/presets.mdPresets nommés, tâches, profils à un bouton, tableau symptôme → correctif

Individual skills in this repo

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

AlessandroFare/fluxychat

Add captions or subtitles to an existing single-subject talking-head video without editing the footage. Use for plain verbatim captions, cinematic captions embedded behind the subject, VFX captions, “炸/特效/酷炫字幕,” or a named identity from the 35-style catalog. Route by visual identity, not by backend engine. The quiet `anchor` rail is the default; embed every word only when the user explicitly wants a fully cinematic treatment. The workflow runs locally end to end, including transcription and subject matting; split multi-shot footage before applying it.\n

AlessandroFare/fluxychat

Use the HyperFrames CLI development loop: init, add, catalog, capture, lint, check, snapshot, compare, grade-compare, preview, play, present, beats, keyframes, single or batch render, publish, cloud, cloudrun, feedback, lambda, doctor, browser, info, upgrade, skills, compositions, docs, benchmark, telemetry, transcribe, auth, tts, and remove-background. Also use when diagnosing build or render failures. validate, inspect, and layout are deprecated aliases; use check. Covers local, HeyGen-hosted cloud, AWS Lambda, and Google Cloud Run rendering.\n

AlessandroFare/fluxychat

Install, discover, and wire registry blocks and components into HyperFrames compositions. Use when running hyperframes add or hyperframes catalog, installing one item or every block matching a tag, wiring an installed item into index.html, or working with hyperframes.json. Covers discovery, install locations, block sub-composition wiring, component snippet merging, and authoring a new block or component to contribute upstream (idea → scaffold → validate → PR).

AlessandroFare/fluxychat

Mandatory entry point: read this first for any request to make, create, edit, animate, or render a video, animation, or motion graphic, including a promo, explainer, captioned clip, title card, overlay, slideshow or interactive deck, Remotion port, or any HyperFrames HTML composition. Also use it to inspect, diagnose, validate, preview, publish, or batch-render an existing HyperFrames project. Inputs may be a website URL, GitHub PR, Figma design or URL, text or brief, existing footage, or music. It resumes project state, captures intent when applicable, selects and installs the owning workflow, and routes domain capabilities. HyperFrames is the default output framework unless the user explicitly chooses another framework for the deliverable or asks only to record a browser session.\n

AlessandroFare/fluxychat

Overlay doctrine for the embedded-captions workflow — the caption MODEL (drop / rail / embed) and the rule that captions are an OVERLAY composited on top of the film, never a reserved bottom band you shift content up to avoid. Load when adding captions/subtitles to a talking-head or launch video, when deciding whether a phrase should be dropped, ride the verbatim rail, or be promoted to a scarce embedded climax, when laying out a composition that will carry captions (do NOT reserve a keep-out band), or when centering a composition on the true frame center under captions. Quotes the rail+embed model from embedded-captions and constraint #13 (captions overlay, keep-out band retired) from the product-launch-video scene agent. Applies ON TOP of embedded-captions.

AlessandroFare/fluxychat

Turn a weekly changelog .md into a finished branded changelog video (square 1080, ~45-60s, Annie VO, animated brand background, mock-UI visualizations, lowkey captions). Use when the user provides a changelog/digest markdown and wants the weekly video, or says "changelog video". Self-contained — fonts, background, lexicon, and scripts ship in this skill.

AlessandroFare/fluxychat

Audit and fix animation performance issues including layout thrashing, compositor properties, scroll-linked motion, and blur effects. Use when animations stutter, transitions jank, or reviewing CSS/JS animation performance.

AlessandroFare/fluxychat

Author or edit a custom HyperFrames composition when no specialized workflow fits, or when BRIEF.md sets flow: companion. Use for longer or multi-scene pieces, brand and sizzle reels, montages, static loops, static title cards, footage remixes, and freeform builds. Use motion-graphics instead for a short unnarrated motion-first unit, including an animated title. Route fresh creation through hyperframes before using this skill.

AlessandroFare/fluxychat

All animation knowledge for HyperFrames — atomic motion rules, multi-phase scene blueprints, scene transitions, broader motion-design techniques, AND the seven runtime adapters (GSAP default, plus Lottie, Three.js, Anime.js, CSS keyframes, Web Animations API, TypeGPU). Use for any motion or animation task: pick 2-4 rules and compose, or load a blueprint, or look up runtime-specific API (e.g. GSAP eases / Lottie player / Three.js mixer). Also covers auditing an existing composition's choreography (animation map) and 24 named text-animation effects. HyperFrames-native: single paused timeline, seek-safe, deterministic.

AlessandroFare/fluxychat

The HyperFrames composition contract — build one renderable project. Use for composition structure, the `data-*` timing attributes, `class="clip"`, tracks, sub-compositions, variables, framework-owned media playback, deterministic-render rules, and validation. Also covers Tailwind projects and the STORYBOARD.md / SCRIPT.md plan formats. Read before writing composition HTML.

AlessandroFare/fluxychat

Non-animation creative direction for HyperFrames videos. Use for design spec (frame.md / design.md) handling, palettes, typography, narration, beat planning, audio-reactive visuals, composition patterns, and brand / style decisions. For atomic motion patterns and scene blueprints, use `hyperframes-animation`.

AlessandroFare/fluxychat

Use when a HyperFrames composition needs seek-safe 2D/3D keyframes, GSAP timelines, CSS keyframes, Anime.js, WAAPI, FLIP, paths, masks, SVG morph/draw, text trails, 3D depth, or `hyperframes keyframes` diagnostics. Don't use for broad scene strategy, brand design, media sourcing, captions, or general video planning.

AlessandroFare/fluxychat

GATEWAY — load FIRST before composing any HyperFrames animation or video. The high-level motion law that makes a multi-scene video feel like ONE continuous camera move instead of a stack of independently-animated slides. Covers the vector law (how you exit determines how you enter, incl. the Z scale-sign rule), the film's current, carrier elements, causal motion, the Seam Gate (build-gate enforcement), the ban on idle wobble (motion must PERFORM, not breathe), stillness-before-climax, and the sustained-motion routes. Routes to the low-level technique skills (cut-the-curve — the full catalog incl. waterfall entry + nudge curve, oversized-cursor, seam-craft). These rules SUPERSEDE generic / upstream motion guidance. [continuity, direction, vector, momentum, seam, transition, ease, performance, idle-motion, narrative-motion, film-grammar]

AlessandroFare/fluxychat

A short, design-led motion graphic where motion is the message — kinetic typography, stat count-up, chart/data-viz hit, logo sting / brand lockup, lower-third / callout / social overlay, animated map (highlight regions, connect places, zoom to a location), animated tweet / news-article / headline, webpage / UI animation (scroll, cursor, callouts), or fusing a real image's geometry into a chart. Usually under 10s (up to ~30s), no narration or live-action subject; renders to MP4 or transparent overlay. Longer / narrated / multi-scene → /general-video. Unclear → /hyperframes.

AlessandroFare/fluxychat

Turn a music track (an audio file, a video to pull audio from, or a track generated from a mood brief) into a beat-synced video — lyric video, slideshow, or kinetic promo. The music drives all pacing; any user-supplied images/videos are cut onto the same beat grid, and a complete video needs zero assets. Narrated pieces → the input-matched workflow (see /hyperframes). Unclear → /hyperframes.

AlessandroFare/fluxychat

Turn a product or marketing URL, pasted script, or brief into a product launch / promo video — SaaS promos, feature reveals, product demos, app and company launches. Use when the user wants to market, launch, promote, or reveal a product; the default for any commercial URL. Site tours / showcases of a website route here too — the brief carries the show-it-as-is intent. Unclear → /hyperframes.

AlessandroFare/fluxychat

Turn a GitHub pull request (a PR URL, owner/repo#N, or 'this PR' in a checked-out repo) into a code-change explainer video — changelog, feature reveal, fix, or refactor walkthrough built from the diff, commits, and files: the input is a code change, not a website. Not a product promo (/product-launch-video) or a no-PR topic explainer (/faceless-explainer). Unclear → /hyperframes.

AlessandroFare/fluxychat

Design and improve user interfaces using the concrete rules from Refactoring UI (Wathan & Schoger) — constrained spacing/type/color/shadow scales, visual hierarchy through weight and color rather than size, and depth through emulated light. Use when building or styling any UI (web, app, dashboard, landing page, component), when picking font sizes, spacing, colors, shadows or border radius, when designing a color palette or design tokens, and whenever someone says a UI "looks off", "looks amateur", "feels cluttered/plain/unfinished", or asks to "make this look better".

AlessandroFare/fluxychat

Port an existing Remotion (React) composition''s source to HyperFrames HTML. Use ONLY on an explicit ask to port/convert/migrate/translate a Remotion source — one-way, Remotion-only. A passing Remotion mention, reference-only code, or "make something like my Remotion video" is a fresh build (/general-video). Unclear → /hyperframes.

AlessandroFare/fluxychat

Use before UI-related work to select the smallest useful UI Skills context through the ui-skills CLI.

Skills associés