Communitygithub.com

destilação-de-estilo

Mede um conjunto de vídeos de referência para criar um pacote de estilo reutilizável: LUT 3D para correção de cor, distribuição de duração de planos para ritmo de edição, imagens-chave, placas de sobreposição de blend e uma especificação textual para modelos generativos. Use quando quiser capturar a aparência de imagens de referência, construir um visual repetível, gerar ativos a partir de referências ou reproduzir um estilo.

O que é destilação-de-estilo?

Este skill, chamado Taste Distillation, transforma vídeos de referência em um 'pacote de estilo' (style pack) — um conjunto de medições e ativos determinísticos que podem ser reutilizados para replicar o visual e o ritmo das referências. Ele suporta plataformas como DaVinci Resolve, modelos generativos e ferramentas de edição tradicionais, funcionando offline inicialmente (sem API key) e com uma etapa opcional de VLM. O pacote inclui uma LUT 3D (look.cube), estatísticas de cor por zona de luminância, distribuição de duração de planos (cadence), imagens-chave, placas de sobreposição (plates) e uma descrição textual baseada nas medições, evitando o uso de prompts de cor que são ineficazes. O skill é implementado em Python, com scripts robustos que mascaram interferências de interface, usam mediana + MAD (em vez de média + desvio padrão) para estatísticas de croma, e detectam cortes de edição com um limiar adaptativo. É ideal para quem precisa de repetibilidade e precisão técnica na captura e reprodução de estilos visuais.

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

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Destilação de Estilo

Este skill independente contém sua implementação em scripts/; use taste-application para a edição subsequente, seja gerada ou local. Mantenha cada gênero nomeado em seu próprio pacote. Medições do Flash Ethereal não devem ser reutilizadas silenciosamente para Fluid Sketch ou 3D Cyber Glitch. Uma medição zero é um dado válido; diferencie-a de um campo ausente.

As dependências locais estão em scripts/requirements.txt. Trabalhos de provedor autorizados separadamente também precisam de scripts/requirements-live.txt, credenciais e TASTE_FORGE_ALLOW_LIVE=1 explícito. --dry-run não lê credenciais nem submete tarefas. Nunca presuma que um fluxo de trabalho foi salvo a partir de um endpoint local; use o fluxo de trabalho real do lado do provedor ou evidência da requisição.

Transforme vídeos de referência em um pacote de estilo: uma pasta de medições e ativos que etapas posteriores consomem deterministicamente.

Quando Ativar

  • "capturar a aparência destes clipes" / "destilar a vibe" / "tornar isso repetível"
  • O usuário tem imagens de referência e deseja uma LUT, uma correção de cor ou ritmo correspondente
  • Construir uma biblioteca de visuais particionados por gênero
  • Qualquer solicitação onde a resposta seria "descreva o estilo em um prompt"

A Descoberta Central

Prompts não conseguem entregar uma correção de cor. A medição sim.

Medido em imagens reais: três gerações pagas com direção de cor crescente moveram o a* dos tons médios de +1,9 → +2,8 → +0,3 contra um alvo de +24,9, e o contraste nunca saiu de ~19 contra um alvo de 34,7. Aplicar um pacote medido às mesmas imagens atingiu MAE de croma 1,88 e contraste 33,7 em uma passagem determinística, de graça.

Portanto, a divisão é: o modelo fornece conteúdo, movimento e estrutura de iluminação; o pacote fornece o visual. Palavras de cor em um prompt de geração são piores que inúteis — custam dinheiro e afastam a renderização da base neutra que a LUT deseja. Diga isso explicitamente no prompt: "Cor: nenhuma. Renderize neutro. A correção de cor é aplicada depois."

O Que um Pacote Contém

stylepacks/<gênero>/
  grade.json      estatísticas de cor medidas (veja abaixo)
  cadence.json    cada corte de cena detectado e a distribuição derivada
  look.cube       LUT 33^3, arraste diretamente para o Resolve como uma LUT de nó
  spec.json       descrição VLM, fundamentada nas medições
  grounding.txt   os fatos medidos fornecidos ao VLM
  stills/         quadros em resolução total dos planos mais longos (imagens de condicionamento)
  plates/         elementos de sobreposição blend levantados sobre preto
  props/          malhas GLB cunhadas
  pack.json       manifesto

Executando

python mint.py --genre <nome> --refs a.mov b.mov c.mov     # offline, sem chave de API
python distill.py --genre <nome>                            # uma chamada VLM

mint.py é pura análise numérica — sem rede, sem chave, determinística, portanto um pacote pode ser regenerado em vez de ter backup.

As Medições Que Importam

Croma por zona de luminância, não globalmente

A identidade cromática geralmente reside em uma faixa de luminância. Um deslocamento global a*/b* matematicamente não pode representar split-toning. Meça o croma dentro de zonas (bordas L* [0,15,35,55,75,100]).

Uma assinatura real: violeta em L25 (a +24,9, b* −17,5), quase neutro em ambas as extremidades. Relatar apenas as zonas mais escuras e mais claras chama isso de "tonalidade uniforme" — sempre imprima a curva inteira.

Mediana + MAD, nunca média + desvio padrão

O croma em conjuntos de referência reais é fortemente assimétrico à direita. Em um rolo medido, a média do croma dos tons médios foi 36,9 contra uma mediana de 17,5, então uma LUT baseada na média empurrou a cor cerca de 3x mais forte do que o material justificava.

Contraste é std(L*), não branco menos preto

O intervalo branco−preto é ~100 em quase qualquer imagem real e não discrimina nada.

A proporção de fundo é uma estatística de primeira classe

Registre a proporção de pixels abaixo de L*10. Nenhum momento da distribuição pode vê-lo: um clipe pode ter a média, o desvio padrão e o croma corretos enquanto suas áreas escuras foram elevadas para cinza. Isso é exatamente como uma correção de cor uma vez obteve MAE 1,88 / contraste 33,7 enquanto o quadro real era uma bagunça roxa lamacenta.

Mascarar a interface antes de medir

As referências gravadas da tela carregam mobília estática — barras de letterbox, barra de status, ícone de like, texto de legenda. Tudo isso cai nas estatísticas como se fosse o estilo: barras pretas inflam o peso das sombras, um coração vermelho distorce a* em direção ao magenta. A variância temporal separa-os limpa e claramente — a imagem se move, a interface não — portanto nenhum corte manual é necessário. Em material real, isso mantém aproximadamente 65% dos pixels.

O ritmo (cadence) precisa de um limiar adaptativo

O limiar correto do detector de conteúdo depende do material: uma referência de ação de alto contraste corta com força suficiente para 30, uma atmosférica esconde seus cortes abaixo disso. Varra limiares decrescentes e pegue o mais alto que ainda recupere ≥90% dos planos que a configuração mais sensível encontra — assim tende a cortes reais em vez de ruído. Rejeite limiares que impliquem uma taxa de corte absurda (>100/min); movimentos contínuos de câmera acionam o detector a cada quadro.

Execute toda a varredura em uma passagem de decodificação com um StatsManager compartilhado. A versão ingênua redecodifica por limiar, o que em fonte de 60fps é a diferença entre segundos e minutos.

Placas de Sobreposição: Ativos, Não Screenshots

Uma imagem estática é um quadro inteiro — compor uma apenas coloca uma segunda imagem em cima. Uma placa é o vocabulário gráfico da referência (flares, traços, fragmentos de glitch) levantados sobre preto para que se misturem em blend sem necessidade de keying.

Duas armadilhas, ambas enfrentadas em material real:

  1. Limiares absolutos falham. Em uma referência clara, uma seleção L>55 E croma>12 leva ~90% do quadro, e a "placa" é a imagem — incluindo um rosto reconhecível. Selecione por percentil (~topo 3%) e rejeite qualquer placa que cubra mais de ~22% do quadro.
  2. Classifique por separação, não por brilho. "Proporção de pixels claros e saturados" classifica um quadro lavado no topo e um quadro preto com um único flare intenso — a assinatura real — perto do final. Pontue p99.5(energia) / mediana(energia).

Também mascare antes de pontuar: tipografia incrustada é clara, saturada e de alto contraste, então uma execução sem máscara produz uma placa perfeita do cartão de título de outra pessoa.

Fundamentando o VLM

Alimente as medições no prompt do sistema antes de pedir a descrição. Sem fundamentação, um VLM relatará "nenhuma correção de cor aparente, neutro" em imagens com um deslocamento a* de +24,9. Fundamentado, ele descreve o deslocamento corretamente e infere o acento secundário independentemente.

Proíba palavras de hesitação (variado, misturado, dinâmico, algum, frequentemente, neutro, ou) — um modelo não pode renderizar "iluminação variada". Imponha a proibição no código, não apenas no prompt: foi violada em aproximadamente uma em cada três execuções. Repergunte por campo, mantenha a resposta menos hesitante após N tentativas, em vez de falhar.

Ressalva digna de ser dita ao usuário: uma vez que a especificação é fundamentada nas medições, ela não é mais uma verificação independente delas.

Pegadinhas da Geração de LUT

  • Uma LUT só pode codificar uma função RGB por pixel. Qualquer coisa dependente de distribuição (correspondência de histograma, âncoras de percentil) devem ser reduzidos a uma constante antes de assar, ou ela mede silenciosamente a grade uniforme da LUT em vez da imagem.
  • cv2.cvtColor(LAB2RGB) limita internamente, portanto um teste fora de gamut usando-a relata 0%. Converta Lab→sRGB linear manualmente; uma medição real foi 83,3% fora de gamute.
  • Transfira deslocamento de croma, não afim. A transformação afim divide pelo σ da fonte e ultrapassa — em imagens reais inverteu b* para +11,6 contra um alvo de −17,5. O deslocamento reduziu o MAE de 6,23 para 2,13.
  • A compressão de gamute custou 3,8x o tempo de execução para MAE idêntico. Torne-a opt-in.

Anti-Padrões

Não fazerPor quê
Ajustar com base em imagens de teste sintéticasCustou quatro conclusões erradas separadas em um projeto; imagens reais derrubaram todas
Confiar apenas no MAE1,88 MAE parecia sucesso em um quadro visivelmente quebrado
Usar média/desvio padrão para cromaAssimétrico à direita; empurra ~3x mais forte
Comparar apenas zonas extremasAmbas as extremidades são quase neutras por construção
Descrever o estilo e pararA especificação é para conteúdo e estrutura; o pacote é para a cor

Handoff

O pacote é a interface. Uma vez que ele existe, use o skill taste-application para gerar e montar contra ele, ou entregue look.cube diretamente a um colorista.

Código Fornecido

scripts/ neste skill é uma implementação funcional, não pseudocódigo. Não tem suposições específicas de projeto: aponte-o para quaisquer vídeos de referência e ele produz um pacote.

pip install -r scripts/requirements.txt
export FAL_KEY=...            # necessário apenas para os estágios que chamam fal

Toda chamada de rede é simulada sob TASTE_FORGE_DRY_RUN=1 ou --dry-run, portanto o plano, prompts, layout de faixas e manifesto podem ser inspecionados sem gastos.

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.

Habilidades Relacionadas