Communitygithub.com

destilación-de-estilo

Mide un conjunto de videos de referencia para crear un paquete de estilo reutilizable: corrección de color como LUT 3D, ritmo de corte como distribución de duración de planos, fotogramas clave, placas de superposición con fusión de pantalla y una especificación de texto para un modelo generativo. Úsalo cuando el usuario quiera capturar el aspecto de metraje de referencia, construir un aspecto repetible, acuñar activos a partir de referencias o reproducir a alguien.

¿Qué es destilación-de-estilo?

Destilación de estilo es una skill independiente que transforma metraje de referencia en un paquete de estilo estructurado (carpeta `stylepacks/<género>/`) que contiene mediciones de color, LUT 3D, distribución de ritmo de corte, imágenes fijas, placas de superposición y una especificación textual para modelos generativos. Funciona en dos fases: primero, `mint.py` realiza un análisis numérico puro (sin red, sin clave API) y deterministico para extraer estadísticas de color por zonas de luminancia, distribución de cortes adaptativa y máscara de interfaz temporal; segundo, `distill.py` invoca un VLM (Modelo de Lenguaje Visual) opcional para generar una descripción textual basada en esas mediciones. La skill está disponible para desarrolladores que trabajan con Claude, Cursor, Codex y plataformas similares, y su documentación enfatiza que la medición supera al prompting para lograr una gradación precisa: el color se mide con mediana + MAD (no media + desviación estándar), la cadencia con un umbral adaptativo de detección de cortes, y se rechazan patrones como confiar solo en MAE o usar rangos de color globales. El resultado es un paquete determinista y reutilizable que luego se aplica con la skill `taste-application` o se entrega directamente a un colorista.

Compatible con~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/affaan-m/ECC/tree/main/skills/taste-distillation

Preguntar en tu IA favorita

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

Documentación

Destilación de Estilo

Esta skill independiente incluye su implementación en scripts/; usa taste-application para la edición posterior generada o local. Mantén cada género nombrado en su propio paquete. Las mediciones de Flash Ethereal no deben reutilizarse en silencio para Fluid Sketch o 3D Cyber Glitch. Un valor medido de cero es dato válido; distínguelo de un campo ausente.

Las dependencias locales están en scripts/requirements.txt. El trabajo de proveedor autorizado por separado también necesita scripts/requirements-live.txt, credenciales y TASTE_FORGE_ALLOW_LIVE=1 explícito. --dry-run no lee credenciales ni envía trabajos. Nunca infieras que un flujo de trabajo se guardó desde un nombre de endpoint local; usa la evidencia real del flujo de trabajo o solicitud del proveedor.

Convierte videos de referencia en un paquete de estilo: una carpeta de mediciones y activos que las etapas posteriores consumen de forma determinista.

Cuándo Activar

  • "capturar el aspecto de estos clips" / "destilar la vibra" / "hacer esto repetible"
  • El usuario tiene metraje de referencia y quiere un LUT, una gradación o un ritmo coincidente
  • Construir una biblioteca de looks divididos por género
  • Cualquier solicitud donde la respuesta sería "describe el estilo en un prompt"

El Hallazgo Clave

El prompting no puede entregar una gradación. La medición sí.

Medido en metraje real: tres generaciones de pago con dirección de color creciente movieron el a* de tonos medios de +1.9 → +2.8 → +0.3 frente a un objetivo de +24.9, y el contraste nunca se apartó de ~19 frente a un objetivo de 34.7. Aplicar un paquete medido al mismo metraje logró croma MAE 1.88 y contraste 33.7 en un solo paso determinista, de forma gratuita.

Por lo tanto, la división es: el modelo proporciona contenido, movimiento y es tructura de iluminación; el paquete proporciona el aspecto. Las palabras de color en un prompt de generación son peores que inútiles: cuestan dinero y aléjan el render de la base neutra que el LUT desea. Dilo explícitamente en el prompt: "Color: ninguno. Render neutro. La gradación se aplica después."

Qué Contiene un Paquete

stylepacks/<género>//
  grade.json      estadísticas de color medidas (ver abajo)
  cadence.json    cada límite de plano detectado + la distribución derivada
  look.cube       LUT 33^3, arrastra directamente a Resolve como LUT de nodo
  spec.json       descripción VLM, basada en las mediciones
  grounding.txt   los hechos medidos alimentados al VLM
  stills/         fotogramas a resolución completa de los planos más largos (imágenes de acondicionamiento)
  plates/         elementos de superposición con fusión de pantalla extraídos sobre negro
  props/          mallas GLB acuñadas
  pack.json       manifiesto

Cómo Ejecutarlo

python mint.py --genre <nombre> --refs a.mov b.mov c.mov     # offline, sin clave API
python distill.py --genre <nombre>                            # una llamada VLM

mint.py es análisis numérico puro — sin red, sin clave, determinista, por lo que un paquete se puede regenerar en lugar de respaldar.

Las Mediciones que Importan

Croma por zona de luminancia, no global

La identidad de color suele vivir en una banda de luminancia. Un desplazamiento global de a*/b* matemáticamente no puede representar un split-toning. Mide croma dentro de zonas (L* bordes [0,15,35,55,75,100]).

Una firma real: violeta en L25 (a +24.9, b* −17.5), casi neutro en ambos extremos. Reportar solo las zonas más oscuras y más claras lo llama "tinte uniforme" — siempre imprime toda la curva.

Mediana + MAD, nunca media + desviación estándar

El croma en conjuntos de referencia reales tiene una fuerte asimetría a la derecha. En un reel medido, la media del croma en tonos medios fue 36.9 frente a una mediana de 17.5, por lo que un LUT basado en la media empujó el color ~3x más de lo que justificaba el material.

El contraste es std(L*), no blanco menos negro

El rango blanco−negro es ~100 en casi cualquier metraje real y no discrimina nada.

La proporción de fondo es una estadística de primera clase

Registra la proporción de píxeles por debajo de L*10. Ningún momento de la distribución puede verlo: un clip puede tener la media, desviación estándar y croma correctos mientras sus negros han sido elevados a gris. Así es exactamente como una gradación una vez obtuvo MAE 1.88 / contraste 33.7 mientras que el fotograma real era un desastre púrpura embarrado.

Enmascara la interfaz antes de medir

Las referencias grabadas de pantalla llevan mobiliario estático — barras de letterbox, una barra de estado, un icono de me gusta, texto de subtítulos. Todo ello llega a las estadísticas como si fuera el aspecto: las barras negras inflan el peso de las sombras, un corazón rojo sesga a* hacia el magenta. La varianza temporal los separa limpiamente — el metraje se mueve, la interfaz no — por lo que no se necesita un recorte manual. En material real esto mantiene ~65% de los píxeles.

La cadencia necesita un umbral adaptativo

El umbral correcto del detector de contenido depende del material: una referencia de acción de alto contraste corta lo suficiente para 30, una de ambiente oculta sus cortes debajo de él. Barre umbrales descendentes y toma el más alto que aún recupere ≥90% de los cortes que encuentra la configuración más sensible — eso se sesga hacia cortes reales sobre ruido. Rechaza umbrales que impliquen una tasa de corte absurda (>100/min); los movimientos de cámara continuos activan el detector en cada fotograma.

Ejecuta todo el barrido en una pasada de decodificación con un StatsManager compartido. La versión ingenua re-decodifica por umbral, lo que en fuente de 60fps es la diferencia entre segundos y minutos.

Placas de Superposición: Activos, No Capturas de Pantalla

Un fotograma fijo es un fotograma completo — componer uno simplemente pone una segunda imagen encima. Una placa es el vocabulario gráfico de la referencia ( destellos, rayas, fragmentos de glitch) extraído sobre negro para que se fusione por pantalla sin necesidad de keying.

Dos trampas, ambas encontradas en material real:

  1. Los umbrales absolutos fallan. En una referencia brillante, una selección L>55 AND croma>12 toma ~90% del fotograma, y la "placa" es la imagen — incluida una cara reconocible. Selecciona por percentil (~top 3%) y rechaza cualquier placa que cubra más de ~22% del fotograma.
  2. Clasifica por separación, no por brillo. "Proporción de píxeles brillantes saturados" clasifica un fotograma lavado en primer lugar y un fotograma negro con un destello intenso — la firma real — cerca del final. Puntúa p99.5(energía) / mediana(energía).

También enmascara antes de puntuar: la tipografía incrustada es brillante, saturada y de alto contraste, por lo que una ejecución sin enmascarar produce una placa perfecta de la tarjeta de título de otra persona.

Fundamentando el VLM

Alimenta las mediciones en el prompt del sistema antes de pedir una descripción. Sin fundamento, un VLM reportará "sin gradación de color aparente, neutro" en metraje con un tinte a* de +24.9. Con fundamento, describe el tinte correctamente e infiere el acento secundario de forma independiente.

Prohíbe palabras de evasión (variado, mixto, dinámico, algo, a menudo, neutral, o) — un modelo no puede renderizar "iluminación variada". Haz cumplir la prohibición en el código, no solo en el prompt: se violó en aproximadamente una de cada tres ejecuciones. Vuelve a preguntar por campo, mantén la respuesta menos evasiva después de N intentos en lugar de fallar.

Advertencia que vale la pena mencionar al usuario: una vez que la especificación se fundamenta en las mediciones, ya no es una verificación independiente de ellas.

Errores Comunes al Hornear LUT

  • Un LUT solo puede codificar una función RGB por píxel. Cualquier cosa dependiente de la distribución (coincidencia de histograma, anclajes de percentil) debe reducirse a una constante antes de hornear, o mide silenciosamente la cuadrícula uniforme del LUT en lugar del metraje.
  • cv2.cvtColor(LAB2RGB) recorta internamente, por lo que una prueba fuera de gama que lo use reporta 0%. Convierte Lab→sRGB lineal a mano; una medición real fue 83.3% fuera de gama.
  • Transfiere croma por desplazamiento, no afín. La transformación afín divide por la σ de origen y se sobrescribe — en metraje real invirtió b* a +11.6 frente a un objetivo de −17.5. El desplazamiento llevó el MAE de 6.23 a 2.13.
  • La compresión de gama costó 3.8x el tiempo de ejecución para un MAE idéntico. Hazla optativa.

Anti-Patrones

No hacerPor qué
Ajustar contra metraje de prueba sintéticoCostó cuatro conclusiones erróneas separadas en un proyecto; el metraje real las derribó todas
Confiar solo en MAE1.88 MAE parecía éxito en un fotograma visiblemente roto
Usar media/desviación estándar para cromaAsimétrico a la derecha; empuja ~3x demasiado fuerte
Comparar solo zonas de los extremosAmbos extremos son casi neutros por construcción
Describir el aspecto y detenerseLa especificación es para contenido y estructura; el paquete es para el color

Entrega

El paquete es la interfaz. Una vez que existe, usa la skill taste-application para generar y ensamblar contra él, o entrega look.cube directamente a un colorista.

Código Incluido

scripts/ en esta skill es una implementación funcional, no pseudocódigo. No tiene suposiciones específicas del proyecto: apúntalo a cualquier video de referencia y produce un paquete.

pip install -r scripts/requirements.txt
export FAL_KEY=...            # solo necesario para las etapas que llaman a fal

Cada llamada de red está simulada bajo TASTE_FORGE_DRY_RUN=1 o --dry-run, por lo que el plan, prompts, diseño de pistas y manifiesto se pueden inspeccionar sin coste.

Individual skills in this repo

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

accessibility

Design, implement, and audit inclusive digital products using WCAG 2.2 Level AA. Use when building or auditing UI that must meet WCAG 2.2 Level AA, or when reviewing a change for keyboard, contrast, or screen-reader support.

affaan-m/content-engine

Create platform-native content systems for X, LinkedIn, TikTok, YouTube, newsletters, and repurposed multi-platform campaigns. Use when the user wants social posts, threads, scripts, content calendars, or one source asset adapted cleanly across platforms.

affaan-m/ECC

Multi-platform content distribution across X, LinkedIn, Threads, and Bluesky. Adapts content per platform using content-engine patterns. Never posts identical content cross-platform. Use when the user wants to distribute content across social platforms.

affaan-m/fal-ai-media

Unified media generation via fal.ai MCP — image, video, and audio. Covers text-to-image (Nano Banana), text/image-to-video (Seedance, Kling, Veo 3), text-to-speech (CSM-1B), and video-to-audio (ThinkSound). Use when the user wants to generate images, videos, or audio with AI.

affaan-m/manim-video

日本語翻訳:このファイルは manim-video 用の日本語翻訳が必要です

affaan-m/remotion-video-creation

Remotion のベストプラクティス - React で動画を作成する。3D、アニメーション、音声、字幕、チャート、トランジションなどをカバーするドメイン固有の29のルール。

affaan-m/video-editing

AI-assisted video editing workflows for cutting, structuring, and augmenting real footage. Covers the full pipeline from raw capture through FFmpeg, Remotion, ElevenLabs, fal.ai, and final polish in Descript or CapCut. Use when the user wants to edit video, cut footage, create vlogs, or build video content.

agent-architecture-audit

Full-stack diagnostic for agent and LLM applications. Audits the 12-layer agent stack for wrapper regression, memory pollution, tool discipline failures, hidden repair loops, and rendering corruption. Produces severity-ranked findings with code-first fixes. Essential for developers building agent applications, autonomous loops, or any LLM-powered feature. Use when an agent or LLM feature misbehaves and the failing layer is unknown, or before shipping an agent stack.

agent-eval

Head-to-head comparison of coding agents (Claude Code, Aider, Codex, etc.) on custom tasks with pass rate, cost, time, and consistency metrics. Use when choosing between coding agents, or when a change to an agent setup needs measured pass rate, cost, and time rather than an impression.

agent-harness-construction

Design and optimize AI agent action spaces, tool definitions, and observation formatting for higher completion rates. Use when defining or revising an agent

agentic-engineering

Operate as an agentic engineer using eval-first execution, decomposition, and cost-aware model routing. Use when planning or executing engineering work that agents will carry out end to end.

agentic-os

Build persistent multi-agent operating systems on Claude Code. Covers kernel architecture, specialist agents, slash commands, file-based memory, scheduled automation, and state management without external databases. Use when building a persistent multi-agent system on Claude Code with its own memory, commands, and scheduling.

agent-introspection-debugging

Structured self-debugging workflow for AI agent failures using capture, diagnosis, contained recovery, and introspection reports. Use when an agent run fails and you need a reproducible diagnosis instead of a retry.

agent-payment-x402

Add x402 payment execution to AI agents with per-task budgets, spending controls, and non-custodial wallets. Supports Base through agentwallet-sdk and X Layer through OKX Payments / OKX Agent Payments Protocol. Use when an agent must pay for something itself and needs per-task budgets, spending controls, and a non-custodial wallet.

agent-self-evaluation

Use after completing any non-trivial task. The agent self-rates its output on 5 axes — accuracy, completeness, clarity, actionability, conciseness — with concrete evidence per criterion. Produces a structured 1-5 scorecard with specific improvement suggestions.

agent-sort

Build an evidence-backed ECC install plan for a specific repo by sorting skills, commands, rules, hooks, and extras into DAILY vs LIBRARY buckets using parallel repo-aware review passes. Use when ECC should be trimmed to what a project actually needs instead of loading the full bundle.

ai-first-engineering

Engineering operating model for teams where AI agents generate a large share of implementation output. Use when setting team process, review gates, or ownership rules for a codebase largely written by agents.

ai-regression-testing

Regression testing strategies for AI-assisted development. Sandbox-mode API testing without database dependencies, automated bug-check workflows, and patterns to catch AI blind spots where the same model writes and reviews code. Use when adding regression coverage to AI-assisted code, or when the same model both wrote and reviewed a change.

android-clean-architecture

Clean Architecture patterns for Android and Kotlin Multiplatform projects — module structure, dependency rules, UseCases, Repositories, and data layer patterns. Use when structuring modules, layers, or data flow in an Android or KMP project.

angular-developer

Generates Angular code and provides architectural guidance. Trigger when creating projects, components, or services, or for best practices on reactivity (signals, linkedSignal, resource), forms, dependency injection, routing, SSR, accessibility (ARIA), animations, styling (component styles, Tailwind CSS), testing, or CLI tooling.

Skills relacionados