Communitygithub.com

AlessandroFare/fluxychat

Se utiliza cuando el audio ya colocado en una composición de HyperFrames necesita ser mezclado: una base musical que lucha contra una locución (tallado de locución), efectos en una pista (EQ, compresor, limitador, puerta, saturación, delay, reverberación, chorus, phaser, bitcrush) o envolventes de automatización dibujadas en el volumen de una pista o en cualquier parámetro de efecto. No se usa para buscar o generar audio (encontrar BGM, SFX o hacer una locución es `/media-use`). No se usa para el tiempo de los clips o la disposición de pistas, que es `/hyperframes-core`.

¿Qué es fluxychat?

Esta habilidad, 'AlessandroFare/fluxychat', está diseñada para profesionales de audio y video que trabajan con la plataforma HyperFrames. Su propósito es la mezcla de audio dentro de una composición, abordando problemas comunes como la lucha entre una base musical y una locución, la aplicación de efectos dinámicos y de ecualización, y la creación de envolventes de automatización. La habilidad se centra en un enfoque basado en relaciones: en lugar de apilar procesadores, busca identificar el conflicto espectral entre pistas y resolverlo mediante herramientas como el tallado de locución (voiceover carve), que permite que la base musical mantenga su presencia mientras cede espacio a la voz en las frecuencias que esta necesita. El resumen destaca que la habilidad es útil para cualquier persona que necesite mezclar audio en HyperFrames, desde locutores hasta productores de video, y que su uso evita procesos manuales complejos al automatizar la detección de pistas y la aplicación de efectos. Las plataformas soportadas incluyen HyperFrames Studio y la línea de comandos, con implementaciones compartidas que garantizan que la previsualización coincida con el render final. La habilidad se basa en un análisis espectral comparativo y en la escritura de atributos en elementos HTML, como `data-fx-chain`, `data-automation` y `data-fx-carve`, que definen el procesamiento de audio.

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

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Audio de HyperFrames

Una mezcla es un conjunto de relaciones, no una pila de procesadores. Dos pistas que cada una suena bien por separado pueden ser insoportables juntas, y la solución casi nunca es "bajar una" — es encontrar por qué están peleando y dárselo a la que más lo necesita. Cada herramienta aquí existe para expresar una de esas relaciones.

Los efectos viven en el elemento como data-fx-chain, y la previsualización y el renderizado usan el mismo gráfico de Audio Web — el estudio en un contexto en vivo, el motor en uno offline dentro del navegador que ya maneja. Hay una implementación de cada efecto, así que lo que escuchas mientras haces scrub es lo que se escribe. Nunca ajustas dos veces.

Tres atributos lo llevan todo, todos en el propio elemento de audio/video:

AtributoContiene
data-fx-chainlos efectos, en orden de señal
data-automationenvolventes en el volumen de esta pista o sus parámetros de efecto
data-fx-carvela configuración del tallado, para que pueda ser re-derivada

El JSON exacto para cada uno, y las reglas que debe cumplir un carril: references/attributes.md. Cada efecto con sus parámetros, rangos y unidades: references/fx-registry.md. Cómo averiguar qué está mal en un archivo que no puedes escuchar: references/diagnosis.md. Presets, trabajos nombrados y perfiles de un solo knob, además de una tabla de síntoma a solución: references/presets.md — léelo antes de construir una cadena manualmente, porque uno de los presets o trabajos nombrados generalmente ya nombra el problema.

Cómo encaja todo

Dos superficies de autoría escriben esos atributos; dos tiempos de ejecución los leen a través de los mismos constructores. Esa parte intermedia compartida es por lo que la previsualización predice el render.

flowchart TB
  voice["pista de voz<br/>archivo de medios"]
  bed["base musical<br/>archivo de medios"]

  subgraph AUTHOR["Autoría — las únicas cosas que escriben atributos"]
    panel["Estudio<br/>Control de tallado de locución"]
    script["scripts/carve.mjs<br/>detecta el par, dinámico por defecto"]
    analysis["core/audioCarve.ts<br/>carveProfile · analyseCarveBands<br/>analyseCarveDuck · analyseCarveDynamics"]
    panel --> analysis
    script --> analysis
  end

  voice --> analysis
  bed --> analysis

  subgraph ATTRS["Escrito en el elemento de la base musical"]
    carveAttr["data-fx-carve<br/>fuente · fuerza · dinámico"]
    chainAttr["data-fx-chain<br/>peaking xN + gain, etiquetado fromCarve"]
    autoAttr["data-automation<br/>un carril por parámetro tallado"]
  end

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

  subgraph SHARED["Una implementación, leída por ambos"]
    build["audioFxGraph.ts · buildFxChain"]
    sched["audioFxAutomation.ts · scheduleChainAutomation"]
  end

  chainAttr --> build
  autoAttr --> sched

  build --> preview["Previsualización<br/>AudioContext en vivo<br/>attachElementFxChain"]
  sched --> preview
  build --> render["Render<br/>OfflineAudioContext en el navegador headless<br/>applyAudioFxChain"]
  sched --> render

  preview --> heard["lo que escuchas mientras haces scrub"]
  render --> wav["WAV procesado<br/>+ chainTailSeconds para que la mezcla permita que la cola pase"]
  wav --> mix["motor · audioMixer<br/>el carril de volumen se hornea en el PCM aquí, no en el gráfico"]
  mix --> out["la mezcla renderizada"]

  edit["editar el atributo durante la reproducción"] -.->|MutationObserver| preview

La configuración del tallado nunca se lee durante la reproducción — la cadena y los carriles que produjo son lo que se reproduce. data-fx-carve existe para que la fuerza se pueda cambiar en un tallado existente en lugar de adivinarse a partir de los filtros.

Dentro de una base musical tallada, la señal pasa primero por los cortes, luego por el ajuste de nivel, y luego por cualquier cosa que hayas construido tú mismo — por eso un limitador que añadas sigue actuando como el techo final:

flowchart LR
  src["base musical decodificada"] --> p1["peaking<br/>400 Hz"]
  p1 --> p2["peaking<br/>1 kHz"]
  p2 --> p3["peaking<br/>1.6 kHz"]
  p3 --> g["gain<br/>ajuste de nivel"]
  g --> hand["tus propios efectos<br/>ej. limitador"]
  hand --> dest["ganancia de pista, luego salida"]

  l1["carril fx.n1.gain"] -.->|"envolvente del nivel de<br/>la voz en esa banda"| p1
  l4["carril fx.n4.gain"] -.->|"cuánto se reduce<br/>la base musical en general"| g

Un tallado estático es el mismo gráfico con valores fijos y sin carriles.

Primero, averigua qué está mal

La tabla a continuación comienza con "suena retumbante" — lo que presupone que alguien ya escuchó y lo dijo. Si te dan un archivo y "arréglalo", no tienes esa frase y no puedes escuchar, así que tienes que medir. Una regla lo gobierna todo:

El espectro absoluto de una sola voz desconocida no se puede diagnosticar. Los formantes son ±10 dB, los fundamentales 85–255 Hz, y las oraciones decaen 5–6 dB al terminar. Cada uno de estos se lee como un defecto por sí mismo, y cada uno de ellos es el hablante.

Así que compara, y compara contra algo dentro del mismo archivo: el original limpio si existe, de lo contrario las pausas — lo que sea audible en un silencio es aditivo, y el espectro del silencio es el canal en lugar de la voz. Comparar contra un espectro promedio publicado o una voz de control sintetizada no funciona: dos hablantes difieren más que la mayoría de los defectos, y ambas respuestas erróneas en la evaluación detrás de esta guía provinieron exactamente de eso.

Cuando no hay original ni silencio utilizable, un defecto tonal estático está genuinamente subdeterminado. Dilo y ofrece las lecturas que encajan, en lugar de elegir una y construir una cadena sobre ella.

Comandos, trampas y recetas probadas: references/diagnosis.md. Léelo antes de diagnosticar un archivo que nadie ha descrito.

Empieza por el síntoma

Una vez que sepas la banda y el tipo, nombra qué está mal con el audio. La mayoría del audio malo es uno o dos de estos, y cada uno tiene una respuesta integrada:

Suena comoRecurre a
Zumbido o golpeteo debajorumble-cut, o un highpass a 80 Hz
Retumbante, pectoralTrabajo Domar Retumbo (200 Hz)
Apagado, detrás de cartónTrabajo Reducir Turbidez (250 Hz)
Palabras difíciles de entenderTrabajo Añadir Claridad (3 kHz), o talla la base musical
Áspero y cansinoTrabajo Suavizar Aspereza (3.2 kHz)
Algunas palabras más fuertes que otrasUniformidad en un compresor, o Uniformizar Niveles
Sonido de sala entre frasesroom-gate
Voz y música compitiendoTallado de locución — no un EQ en ninguna
Seco, grabado en ninguna parteroom-tight o room-natural
Simplemente "amateur"voice-clean, que son cuatro de los anteriores en orden

Catálogo completo, lo que contiene cada preset, el vocabulario de bandas y lo que está DELIBERADAMENTE NO CUBIERTO (de-essing, eliminación de ruido, coincidencia de tono): references/presets.md.

Resta antes de sumar, nivela después de filtrar, relaciones después del nivel, carácter y techo al final. Cada paso cambia lo que el siguiente escucha — un compresor configurado antes de un high-pass pasa su tiempo persiguiendo el retumbo.

Recurre a una familia por el problema, no por el nombre

Filtros (highpass, lowpass, peaking, lowshelf, highshelf) deciden qué frecuencias puede ocupar una pista. Esta es la primera herramienta para dos fuentes que chocan, porque los choques ocurren en bandas: una base musical y una voz ambas quieren 1–3 kHz, y quitar eso de la base musical le cuesta mucho menos que bajar todo el volumen a la mezcla. Un high-pass en una voz es la solución estándar para el retumbo; un low-pass oscurece o amortigua deliberadamente.

Dinámicas (gain, compressor, limiter, gate) deciden cómo se comporta el nivel de una pista a lo largo del tiempo. La compresión reduce la distancia entre alto y bajo para que las partes bajas puedan subir. Un limitador es un techo — no moldea nada, garantiza que nada pase. Una puerta elimina lo que está por debajo de un umbral, que es cómo silencias el sonido de sala entre frases. gain es una etapa de nivel simple, y es lo que monta un carril de automatización cuando una pista tiene que moverse para dejar espacio.

No lineales (saturate, bitcrush) cambian la forma de la onda, lo que añade armónicos que no estaban allí. Recurre a ella cuando una pista necesita carácter o agresividad en lugar de corrección — y recuerda que es generativa: hace que una fuente delgada sea más densa, no más limpia.

Temporales (delay, reverb, chorus, phaser) ponen una pista en un espacio o le dan amplitud. Estos son los que más fácilmente arruinan una mezcla, porque una cola o una copia desafinada ocupa el mismo espacio que necesita una voz. Úsalos en la cosa que debe estar detrás de otra cosa, y mantén la cantidad de efecto húmedo más baja de lo que suena bien en aislamiento.

La cadena es serial: cada efecto procesa lo que el anterior produjo. Así que aplicar filtros correctivos va temprano, el carácter en el medio, y un limitador al final donde puede actuar realmente como un techo.

Tallado de locución

El problema que resuelve. Una base musical debajo de una voz hace que la voz sea difícil de seguir. El reflejo es bajar toda la base musical, lo que funciona pero le cuesta toda su presencia — la música se vuelve débil durante toda la locución. Pero la voz no necesita todo el espectro. Necesita las pocas bandas que realmente ocupa. El tallado toma solo esas, y la base musical conserva sus graves y agudos, por lo que sigue siendo música mientras la voz sigue siendo inteligible.

Es una relación, no un efecto. Los ajustes viven en la base musical — la pista que se procesa — y nombran las voces a las que escuchar, exactamente como lo hace un compresor de sidechain: seleccionas la pista que se vuelve más baja y eliges qué la hace más baja. Nunca pongas un tallado en una pista de voz. Una voz tallada contra sí misma es un error, no una elección de mezcla sutil.

Cada voz, no una de ellas. sources es una lista, porque una base musical generalmente se reproduce bajo una secuencia completa — un narrador, una respuesta de entrevista, un segundo presentador. Se suman en el propio reloj de la base musical antes de que se mida nada (mixCarveSources), así que un análisis cubre todas: las bandas provienen de todo el discurso que hay, y las envolventes suben dondequiera que esté sucediendo. Las voces que nunca se reproducen mientras la base musical lo hace se quedan fuera; no pueden enmascararla.

Un knob. strength es 0..1 y lo deriva todo: qué tan profundo cortar, cuántas bandas, qué tan anchas, hasta dónde favorecer la inteligibilidad sobre la energía vocal bruta, cuánto puede caer el nivel, qué tan por debajo de la voz apuntar. Esos seis se mueven juntos en cualquier mezcla real — un tallado suave es un corte superficial en pocas bandas con poca reducción, uno fuerte es más profundo en más bandas con más — así que son una relación escrita una vez, en carveProfile. El valor predeterminado es 0.25 — un corte de 6 dB en tres bandas con 6 dB de margen de nivel, audible sin sonar a un agujero. A 0.5 el corte alcanza 10 dB, que es donde un tallado comienza a escucharse como un efecto en lugar de como espacio para la voz; por encima de eso es territorio deliberado para una base musical fuerte bajo una voz suave. 0 es solo espectral — una banda, sin ajuste de nivel.

Tallado por defecto. Una base musical reproducida bajo narración quiere un tallado; no es un paso de pulido al que llegar si hay tiempo. Coloca ambas pistas, ejecuta el comando a continuación, escucha. Omítelo solo cuando no haya narración para que la música esté debajo — un video musical, una tarjeta de título, un montaje cortado con la pista.

Sigue siempre a la voz. No hay modo estático: una profundidad fija adelgaza la base musical en cada pausa, y una vez que has escuchado ambas no hay razón para quererlo. Cada valor se convierte en una envolvente del propio nivel del habla — el silencio deja sola a la base musical, un pasaje fuerte empuja el tallado a plena profundidad — escrita como automatización ordinaria, por eso los carriles aparecen en la línea de tiempo y se pueden editar después.

El ajuste de nivel es parte de ello. El tallado espectral no puede arreglar una base musical que simplemente es más fuerte que la voz. Así que el tallado también mide qué tan por encima de la voz está la base musical y escribe una etapa de gain: mantenido en un valor para un tallado estático, impulsado por una envolvente para uno dinámico. Esa envolvente se libera lentamente a propósito — la música que vuelve a todo volumen en el instante en que termina una palabra suena a máquina.

Ejecutarlo. En el Estudio, el tallado es un módulo en la parte superior del rack de efectos de una pista — voz, fuerza, dinámico y el análisis que produjo, en una tarjeta. Está allí siempre que otra pista podría ser la voz, y una base musical con exactamente un candidato encima es tallada por defecto, dinámicamente, con la fuerza predeterminada: eso es lo que una base musical bajo narración quiere, y el módulo es donde puedes cambiarlo o desactivarlo. Varios candidatos dejan al selector esperando en lugar de adivinar. Sin cabeza (headless) — que es la ruta cuando estás creando una composición en lugar de editando una:

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

Ese es el comando completo. Encuentra la voz y la base musical, talla dinámicamente con la fuerza predeterminada e imprime lo que decidió:

bed    music-bed (name looks like music)
voice  narration (only track left)
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

Nombra las pistas con --bed / --voice (repetible) cuando la elección automática sea incorrecta, --strength para empujarlo, --dry-run para ver ese informe y no escribir nada.

Cómo elige las pistas. Nombres primero, porque eso es lo que ya le dijiste y la respuesta es explicable — classifyAudioName en core, el mismo clasificador que usa el selector del Estudio, así que no pueden estar en desacuerdo. Una pista cuyo id o nombre de archivo se parece a música (music, bgm, bed, score…) es la base musical; todo lo demás que se reproduce sobre ella y no tiene forma de SFX es una voz. Se prefieren los elementos de audio: el video cuenta solo cuando no queda pista de audio para ser la voz, o cada clip de B-roll en la composición se leería como alguien hablando. Se niega cuando puede …

[truncado para la traducción]

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 relacionados