Communitygithub.com

AlessandroFare/fluxychat

Utilise la boucle de développement CLI HyperFrames : init, add, catalog, capture, lint, check, snapshot, compare, grade-compare, preview, play, present, beats, keyframes, rendu simple ou par lot, publish, cloud, cloudrun, feedback, lambda, doctor, browser, info, upgrade, skills, compositions, docs, benchmark, telemetry, transcribe, auth, tts et remove-background. À utiliser également pour diagnostiquer les échecs de build ou de rendu. validate, inspect et layout sont des alias dépréciés ; utilisez check. Couvre le rendu local, hébergé sur HeyGen Cloud, AWS Lambda et Google Cloud Run.

Qu'est-ce que fluxychat ?

L'extension « AlessandroFare/fluxychat » pour les agents IA (comme Claude Code, Cursor ou Codex) fournit une interface complète vers la CLI HyperFrames, un outil de création vidéo automatisée. Elle guide l'agent à travers une boucle de développement structurée : initialisation d'un projet, recherche de primitives de mouvement dans un catalogue local, vérification de la qualité, prévisualisation et rendu final. L'extension assure la cohérence en exigeant des références de commandes obligatoires avant chaque action et en imposant des contrôles comme `lint` et `check` avant le rendu. Elle supporte plusieurs cibles de rendu : local, hébergé par HeyGen Cloud, AWS Lambda et Google Cloud Run, permettant des workflows flexibles. Des fonctionnalités avancées comme le rendu par lots, les instantanés de sous-compositions et le rapport de feedback avec paquet de reproduction assurent la fiabilité et la traçabilité dans les environnements CI ou de bureau assisté.

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

Demander à votre IA préférée

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

Documentation

CLI HyperFrames

Exécutez les commandes sous la forme npx hyperframes ... sauf si les instructions du projet fournissent un wrapper. Respectez le wrapper lorsqu'il est présent. La CLI nécessite Node.js 22 ou plus récent et FFmpeg.

Boucle de développement

  1. Échafaudage : npx hyperframes init <projet> ou capturez un site. En mode non-TTY, passez --non-interactive --example=<nom>.
  2. Trouver le mouvement : avant d'écrire un mouvement à la main, cherchez une primitive qui le fait déjà : npx hyperframes catalog --query "révéler un titre ligne par ligne". Demandez l'effet souhaité plutôt que le mécanisme envisagé. Installez avec npx hyperframes add <nom> (voir /hyperframes-registry). N'écrivez à la main que si rien ne correspond.
  3. Écrire : rédigez la composition en utilisant /hyperframes-core.
  4. Obtenez un retour rapide pendant l'édition : exécutez npx hyperframes lint après le premier passage HTML et après les changements structurels.
  5. Exécutez la vérification finale : exécutez npx hyperframes check ; il relance lint avant d'ouvrir le navigateur. N'ajoutez pas d'appel lint autonome redondant. Ajoutez --snapshots pour des vues d'ensemble annotées et trouver les recadrages.
  6. Inspectez les sous-compositions : lorsque index.html monte data-composition-src, capturez des instantanés au milieu et inspectez chaque scène montée.
  7. Ouvrez l'aperçu final Studio : exécutez npx hyperframes preview, donnez l'URL du projet de timeline à l'utilisateur et demandez s'il faut réviser ou rendre.
  8. Rendez uniquement après approbation : utilisez la qualité brouillon pour l'itération et la qualité élevée pour la livraison.
  9. Vérifiez la sortie : confirmez que le fichier existe, n'est pas vide et a une durée plausible.
# Vérification rapide d'itération ; répétez si nécessaire pendant l'écriture.
npx hyperframes lint

# Vérification finale obligatoire ; inclut lint.
npx hyperframes check
npx hyperframes preview
npx hyperframes render --quality high --output out.mp4
test -s out.mp4
ffprobe -v error -show_format out.mp4

check exécute lint en premier, puis utilise une session navigateur et un seul passage de recherche pour auditer les erreurs d'exécution, les requêtes échouées, la mise en page, les assertions *.motion.json et le contraste WCAG. Les problèmes persistants bloquent le code de sortie ; les problèmes transitoires d'entrée ou de sortie sont informatifs. Utilisez --strict pour bloquer les avertissements. validate, inspect et layout restent des alias pour la compatibilité mais ne doivent pas apparaître dans les nouvelles instructions ou scripts.

Deux surfaces d'aperçu différentes

Ne confondez pas ces états :

SurfaceQuand elle peut s'ouvrirBut
Planche de storyboardAvant les vérifications de composition, uniquement si storyboard: yesExaminer les fiches de plan et les croquis fil de fer. Ouvrir ?view=storyboard#project/<nom>.
Aperçu final de compositionAprès la réussite de checkExaminer la timeline assemblée avant le rendu. Ouvrir #project/<nom>.

La planche précoce n'est pas une approbation de la vidéo finale. Le rendu nécessite toujours l'approbation finale définie par hyperframes-core/references/review-loop.md.

Test de fumée des sous-compositions

Les audits statiques ne peuvent pas détecter tous les échecs de montage. Lorsque le projet utilise des sous-compositions, capturez au moins un point médian visible pour chaque emplacement hôte :

npx hyperframes snapshot --at <t1>,<t2>,<t3>

Traitez le contenu minuscule non stylisé, les icônes de taille canevas, les éléments héros manquants ou les délais d'enregistrement de timeline comme des défauts de montage bloquant le rendu. Voir hyperframes-core/references/sub-compositions.md pour les correctifs correspondants.

Conventions pour les agents

  • Recherchez dans le catalogue avant d'écrire un mouvement à la main. npx hyperframes catalog --query "<le beat, en langage clair>". La recherche est entièrement locale : il n'y a pas de niveau hébergé, pas de compte, et le texte de la requête n'est jamais envoyé nulle part. Par défaut, il classe en fonction du vocabulaire partagé avec le nom, le titre et la description de l'élément, ce qui manque toute formulation qui ne réutilise pas le propre vocabulaire du catalogue. Ajoutez --on-device pour classer par sens à la place (voir le niveau hors ligne ci-dessous).

  • Lisez quel niveau a répondu ; ne le déduisez jamais de l'apparence des résultats. Avec --json, l'enveloppe contient query, tier (on-device ou words), tier_detail, dropped, unindexed, shown, total et results, plus top_score lorsque le niveau répondant en produit un et warnings lorsqu'un niveau a été demandé et n'a pas pu s'exécuter. Un résultat faible sur words est attendu ; le même résultat sur on-device est un bug. top_score est uniquement sur appareil et n'a pas de seuil derrière : le classeur retourne l'ensemble du catalogue dans un certain ordre pour chaque requête, lisez-le donc comme une preuve plutôt que comme une réussite ou un échec.

  • dropped et unindexed sont des biais opposés entre le registre et l'index sur appareil, et reformuler la requête ne corrige ni l'un ni l'autre. dropped compte les noms classés que ce registre ne peut pas installer, donc les meilleures correspondances sont celles perdues. unindexed compte les déplacements du registre que l'index ne peut pas voir du tout, qu'aucune requête ne peut jamais retourner. Actualiser le registre n'est la réponse ni pour l'un ni pour l'autre : son manifeste a un TTL de 24h et se guérit tout seul, tandis que les vecteurs sont un artefact publié séparément récupéré dans ~/.hyperframes/catalog/. Réexécuter avec --on-device récupère à nouveau cet index lorsque unindexed est supérieur à zéro, c'est donc le remède à donner à l'utilisateur. Un biais de surcouverture pure (dropped supérieur à zéro tandis que unindexed est nul) ne déclenche pas la récupération ; vider ~/.hyperframes/catalog/ est la seule issue pour celui-ci. Les deux comptent des noms plutôt que des résultats, donc l'un ou l'autre peut dépasser total.

  • Lorsque la recherche par sens ne donne rien qui vaille la peine d'être installé, dites-le. npx hyperframes feedback --search-miss "<la requête que vous avez exécutée>" --wanted "<le mouvement dont vous aviez besoin>" --tier on-device. C'est le seul chemin qui envoie une requête quelque part, et c'est une commande délibérée distincte précisément pour que catalog --query simple tienne sa promesse de n'envoyer rien. Signalez l'absence lorsque le niveau sur appareil a répondu et que les meilleurs résultats ne font toujours pas l'affaire ; un résultat faible sur le niveau words est attendu et ne vaut pas la peine d'être signalé. Ce qui revient est une liste de mouvements que le catalogue n'a pas encore, lue directement plutôt que devinée à partir des comptes d'installation, donc la formulation qui compte est l'effet que vous souhaitiez, pas le nom d'élément que vous imaginiez. Il ne comporte aucune évaluation et n'atterrit jamais dans la métrique d'évaluation.

  • Proposez le niveau hors ligne ; ne l'activez jamais silencieusement. Un téléchargement unique d'environ 33 Mo (une version quantifiée ONNX de bge-small-en-v1.5 plus son tokenizer, épinglée à une révision fixe) et les vecteurs du catalogue depuis le registre, tous deux mis en cache sous ~/.hyperframes/, aucun ajouté au projet ou à un package. Une fois en cache, il classe par sens sans rien envoyer. Dites la taille à voix haute et laissez la personne décider, puis passez --on-device (avec -y pour ignorer l'invite) une fois qu'elle a accepté. L'offre interactive ne se déclenche que sur un TTY, et sous --json, rien à ce sujet n'est imprimé du tout, donc dans une exécution d'agent, vous devez le soulever vous-même auprès de l'utilisateur.

  • Préférez --json pour les appels d'agent et CI. Les modes serveur render, preview et play ne fournissent pas de sortie JSON ordinaire ; preview --selection --json et preview --context --json sont des exceptions en mode requête.

  • doctor --json se termine toujours par zéro. Filtrez sur sa charge utile :

    npx hyperframes doctor --json | jq -e '.ok' >/dev/null
    
  • Le mode non-TTY est automatique. init nécessite --example là-bas ; utilisez --non-interactive pour forcer un comportement déterministe sur un TTY.

  • Utilisez un seul HYPERFRAMES_RUN_ID pour toutes les commandes dans la même boucle de vérification.

  • Utilisez --strict, --strict-all et --strict-variables lorsque les avertissements, variables ou conditions CI correspondants doivent bloquer le rendu.

  • Les chemins JSON masquent le répertoire personnel en tant que $HOME ; n'essayez pas d'inverser le masquage.

  • Lorsqu'un projet cloud hébergé approche ou dépasse la limite de téléchargement de 200 Mo, utilisez cloud render --dry-run --json et suivez l'investigation .hyperframesignore dans references/cloud.md. N'ignorez jamais un actif simplement parce qu'il est volumineux.

  • Ne rendez jamais simplement parce que les vérifications réussissent. Pausez sur l'aperçu final et attendez l'approbation.

Éditions dirigées par Studio

Lorsque l'utilisateur fait référence à « cet élément » ou à la sélection en cours, interrogez Studio au lieu de deviner :

npx hyperframes preview --context --json --context-fields selection

Utilisez selection.target.hfId lorsqu'il est disponible, sinon son sélecteur et son fichier source. Si le résultat signale no-selection, demandez à l'utilisateur de cliquer sur l'élément et de réexécuter. Demandez uniquement les tranches de contexte dont vous avez besoin ; utilisez --context-detail full uniquement pour les styles calculés ou les métadonnées de texte modifiable. Le comportement complet et les codes d'échec se trouvent dans references/preview-render.md.

Choix de rendu

BesoinCommande
Itération locale rapidenpx hyperframes render --quality draft
Livraison locale finalenpx hyperframes render --quality high --output out.mp4
Rendu conteneur reproductiblenpx hyperframes render --docker --strict --output out.mp4
Rendu par lots local piloté par variablesnpx hyperframes render --batch rows.json --output "rendus/{nom}.mp4"
Rendu hébergé HeyGen sans infrastructurenpx hyperframes cloud render
Rendu distribué AWS autogérénpx hyperframes lambda render <projet> --width 1920 --height 1080 --wait
Rendu distribué GCP autogérénpx hyperframes cloudrun render <projet> --width 1920 --height 1080 --wait

L'attribution de compétence est automatique — les exemples ci-dessus n'ont pas besoin de --skill. Un projet échafaudé par un workflow (hyperframes init --skill=<workflow>) enregistre sa compétence propriétaire dans hyperframes.json, et chaque rendu ultérieur l'hérite sur la télémétrie anonyme : re-rendus, npm run render et --batch inclus. Passez explicitement --skill=<slug> uniquement pour étamper un projet qui n'a pas été créé via un workflow (son premier rendu le persiste ensuite).

Utilisez le rendu cloud lorsque l'utilisateur souhaite un rendu hébergé sans Chrome local, FFmpeg ou AWS. Utilisez Lambda uniquement lorsque la propriété AWS est une exigence. Utilisez Cloud Run uniquement lorsque la propriété GCP est une exigence. Lisez la référence correspondante avant d'exécuter un chemin cloud.

Après avoir vérifié un rendu réussi, envoyez un rapport de feedback sauf si la télémétrie est désactivée ou que l'utilisateur s'est désinscrit :

npx hyperframes feedback --rating <0-10> --comment "<résultat spécifique ou friction>"

Gardez les commentaires pour les exécutions propres concis. Pour tout bug ou friction, capturez un paquet de reproduction avant de soumettre ; n'envoyez pas seulement un résumé des symptômes. Incluez la commande réexécutable (relative au répertoire du projet — le feedback est soumis à un canal public, donc ne collez pas de chemins absolus, de préfixes de répertoire personnel ou d'identifiants d'utilisateur/machine), le comportement attendu versus réel, l'erreur exacte (supprimez également les chemins absolus des traces de pile — conservez nom de base + ligne, supprimez le répertoire de tête), si la sortie s'est terminée/est tombée en panne/a échoué, la solution de contournement et le statut du projet de repro. Pour une note ≤ 7 qui décrit un défaut visuel (image noire, scintillement, sortie corrompue, mauvaise image, sortie blanche, autre anomalie visuelle), incluez également un bloc COMPOSITION_STRUCTURE: — une anatomie structurelle préservant la vie privée (recensement des éléments + présence d'attributs + forme de la timeline) afin que les mainteneurs puissent faire correspondre des motifs avec des familles de bugs connues sans le ZIP de la composition. Les agents remplissent automatiquement ceci via l'assistant de recensement de composition ; l'utilisateur humain ne le remplit pas à la main. Si le problème ne s'est pas reproduit, dites-le et incluez quand même la dernière commande ayant échoué et les logs. Utilisez --file-issue uniquement avec consentement : il publie une reproduction minimale sur une URL publique. Le format de paquet requis et l'avertissement de confidentialité se trouvent dans references/preview-render.md.

Lisez la référence correspondante avant d'exécuter une commande

Les références et compétences propriétaires suivantes sont des contrats de commande obligatoires, pas une lecture de fond facultative. Avant d'exécuter une commande dans le tableau, lisez sa ligne correspondante.

BesoinRéférence
init, capture, skillsreferences/init-and-scaffold.md
lint, check, sidecars de mouvement, snapshotreferences/lint-validate-inspect.md
compare, grade-compare, render --batch piloté par variablesreferences/compare-and-batch.md
beats pour la grille de beats Studio d'un projet existantreferences/beats.md
preview, play, render, publish, contexte Studio, feedbackreferences/preview-render.md
doctor, gestion du navigateurreferences/doctor-browser.md
auth, rendu cloud hébergé HeyGen et variables de modèlereferences/cloud.md
Déploiement et rendu AWS Lambdareferences/lambda.md
Déploiement et rendu Google Cloud Runreferences/cloudrun.md
info, upgrade, compositions, docs, benchmark, télémétrie, prétraitement multimédiareferences/upgrade-info-misc.md

Pour les variables de composition, al

…

[tronqué pour la traduction]

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 when audio already placed in a HyperFrames composition needs to be mixed: a music bed that fights a voiceover (voiceover carve), effects on a track (EQ, compressor, limiter, gate, saturation, delay, reverb, chorus, phaser, bitcrush), or automation envelopes drawn on a track's volume or any effect parameter. Don't use for sourcing or generating audio — finding BGM, SFX, or making a voiceover is `/media-use`. Don't use for clip timing or track layout, which is `/hyperframes-core`.\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