Communitygithub.com

taste-distillation

Mede um conjunto de vídeos de referência e os transforma em um pacote de estilo reutilizável — grade de cor como LUT 3D, ritmo de corte como distribuição de duração de planos, stills hero, placas de sobreposição com blend de tela e uma especificação textual para modelo generativo. Use quando o usuário quiser capturar o visual de referências, construir um look repetível, gerar ativos a partir de referências ou reproduzir o estilo de alguém.

O que é taste-distillation?

O skill **taste-distillation** é uma ferramenta autônoma que transforma vídeos de referência em um pacote de estilo completo e determinístico, separando a aparência (look) do conteúdo gerado por modelos de IA. Ele realiza medições numéricas precisas (croma por zona de luminância, mediana + MAD, contraste como desvio padrão de L*, proporção de pixels escuros) e gera ativos como LUT 3D (look.cube), distribuição de cortes (cadence.json), stills, placas de sobreposição (plates/) e uma especificação textual para modelos generativos (spec.json). Diferente de prompts de cor, que são caros e imprecisos, a medição garante fidelidade cromática (MAE de ~1.88) e de contraste em uma única passada determinística. O skill suporta modos offline (sem API key) e online com provedores autorizados (exige `TASTE_FORGE_ALLOW_LIVE=1`). Seu código em `scripts/` é funcional e livre de suposições de projeto, funcionando com qualquer vídeo de referência. A saída é um pacote que pode ser consumido pelo skill **taste-application** ou diretamente por um colorista. O pacote inclui ainda uma máscara automática para remover elementos de interface (barras, logotipos) e um processo de 'grounding' para o VLM, evitando descrições vagas. Anti-padrões documentados previnem erros comuns como confiar apenas em MAE, usar média para croma ou comparar apenas zonas extremas de luminância.

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

Perguntar na sua IA favorita

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

Documentação

Taste Distillation

Este skill autônomo possui sua implementação em scripts/; use taste-application para a edição subsequente gerada ou baseada em takes locais. Mantenha cada gênero nomeado em seu próprio pacote. Medições de Flash Ethereal não devem ser reutilizadas silenciosamente para Fluid Sketch ou 3D Cyber Glitch. Um valor zero medido é dado válido; distinga-o de um campo ausente.

As dependências locais estão em scripts/requirements.txt. O trabalho com provedores separadamente autorizados também precisa de scripts/requirements-live.txt, credenciais e a variável explícita TASTE_FORGE_ALLOW_LIVE=1. --dry-run não lê credenciais nem envia jobs. Nunca inferir que um fluxo de trabalho foi salvo a partir de um nome de endpoint local; use o fluxo de trabalho real 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 as etapas posteriores consomem de forma determinística.

Quando Ativar

  • "capturar o visual desses clipes" / "destilar a vibe" / "tornar isso repetível"
  • O usuário possui imagens de referência e deseja um LUT, uma correção de cor ou um ritmo correspondente
  • Construir uma biblioteca de looks 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 consegue.

Medido em imagens reais: três gerações pagas com direção de cor crescente moveram o a* dos meios-tons 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 na mesma imagem atingiu MAE de croma 1,88 e contraste 33,7 em uma passada determinística, de graça.

Portanto, a separaçã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 o 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/<genero>/
  grade.json      estatísticas de cor medidas (veja abaixo)
  cadence.json    cada borda de plano detectada + a distribuição derivada
  look.cube       LUT 33^3, arraste diretamente para o Resolve como um LUT de nó
  spec.json       descrição VLM, baseada nas medições
  grounding.txt   os fatos medidos alimentados para o VLM
  stills/         frames em resolução total dos planos mais longos (imagens de condicionamento)
  plates/         elementos de sobreposição com blend de tela extraídos sobre preto
  props/          malhas GLB cunhadas
  pack.json       manifesto

Executando

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

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

As Medições Que Importam

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

A identidade de cor geralmente reside em uma faixa de luminância. Um deslocamento global de 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 "cast 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 meios-tons foi 36,9 contra uma mediana de 17,5, portanto um LUT baseado na média empurrou a cor cerca de 3x mais forte do que o material justificava.

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

A faixa branco−preto é de aproximadamente 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 consegue enxergá-la: um clipe pode ter a média, o desvio padrão e o croma corretos enquanto seus pretos foram elevados 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

Referências capturadas de tela carregam mobília estática — barras de letterbox, uma barra de status, um ícone de like, texto de legenda. Tudo isso cai nas estatísticas como se fosse o visual: barras pretas inflam o peso das sombras, um coração vermelho distorce o a* em direção ao magenta. A variância temporal separa-os de forma limpa — 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 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 forte o suficiente para 30, uma melancólica 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 — isso tende a favorecer cortes reais em vez de ruído. Rejeite limiares que impliquem uma taxa de corte absurda (>100/min); movimentos contínuos de câmera disparam o detector a cada quadro.

Execute toda a varredura em uma passada 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 Capturas de Tela

Um still é um quadro inteiro — compor um apenas coloca uma segunda imagem por cima. Uma placa é o vocabulário gráfico da referência (flares, estrias, fragmentos de glitch) extraído sobre preto para que se misture com a tela sem necessidade de keying.

Duas armadilhas, ambas encontradas em material real:

  1. Limiares absolutos falham. Em uma referência clara, uma seleção L>55 E croma>12 pega ~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 pela separação, não pelo brilho. "Proporção de pixels brilhantes e saturados" classifica um quadro desbotado no topo e um quadro preto com um flare intenso — a assinatura real — perto da base. Pontue p99.5(energia) / mediana(energia).

Além disso, mascare antes de pontuar: tipografia embutida é brilhante, saturada e de alto contraste, portanto, uma execução sem máscara produz uma placa perfeita do título de outra pessoa.

Fundamentando o VLM

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

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

Ressalva que vale a pena declarar ao usuário: uma vez que a especificação está fundamentada nas medições, ela deixa de ser uma verificação independente sobre elas.

Armadilhas na Geração do LUT

  • Um LUT só pode codificar uma função RGB por pixel. Qualquer coisa dependente de distribuição (correspondência de histograma, âncoras de percentil) deve ser reduzida a uma constante antes da geração, ou ela mede silenciosamente a grade uniforme do LUT em vez da imagem.
  • cv2.cvtColor(LAB2RGB) limita internamente, portanto, um teste fora de gamute usando-o relata 0%. Converta Lab→sRGB linear manualmente; uma medição real mostrou 83,3% fora do gamute.
  • Transfira croma por deslocamento, não afim. 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 o mesmo MAE. Torne-a opt-in.

Anti-Padrões

Não fazerPor quê
Ajustar com imagens de teste sintéticasCustou quatro conclusões erradas separadas em um projeto; imagens reais derrubaram todas
Confiar apenas no MAEMAE 1,88 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 visual e pararA especificação é para conteúdo e estrutura; o pacote é para a cor

Handoff

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

Código Empacotado

scripts/ neste skill é uma implementação funcional, não pseudocódigo. Não possui suposições específicas de projeto: aponte 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 as etapas que chamam fal

Cada chamada de rede é simulada com TASTE_FORGE_DRY_RUN=1 ou --dry-run, para que o plano, prompts, layout da faixa e manifesto possam ser inspecionados sem gastar.

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/claude-api

Anthropic Claude API patterns for Python and TypeScript. Covers Messages API, streaming, tool use, vision, extended thinking, batches, prompt caching, and Claude Agent SDK. Use when building applications with the Claude API or Anthropic SDKs.

affaan-m/everything-claude-code

End-to-end marketing campaign planning and execution. Covers audience research, positioning, campaign angle definition, landing page copy, email sequences, social posts, ad copy, short-form video scripts, and content calendars. Use as the orchestration layer for multi-channel product launches. Use when planning or executing a multi-channel product launch, or producing landing page, email, social, or ad copy.

affaan-m/everything-claude-code

Development conventions and patterns for everything-claude-code. JavaScript project with conventional commits.

affaan-m/everything-claude-code-conventions

Development conventions and patterns for everything-claude-code. JavaScript project with conventional commits.

affaan-m/frontend-design

Create distinctive, production-grade frontend interfaces with high design quality. Use when the user asks to build web components, pages, or applications and the visual direction matters as much as the code quality.

affaan-m/gget

gget CLI and Python workflow for quick genomic database queries, sequence lookup, BLAST-style searches, enrichment checks, and reproducible bioinformatics evidence logs.

affaan-m/literature-review

Systematic literature-review workflow for academic, biomedical, technical, and scientific topics, including search planning, source screening, synthesis, citation checks, and evidence logging.

affaan-m/motion-ui

Production-ready UI motion system for React/Next.js. Use when implementing animations, transitions, or motion patterns.

affaan-m/project-guidelines-example

Example project-specific skill template based on a real production application.

affaan-m/pubmed-database

Direct PubMed and NCBI E-utilities search workflows for biomedical literature, MeSH queries, PMID lookup, citation retrieval, and API-backed literature monitoring.

affaan-m/scholar-evaluation

Structured scholarly-work evaluation for papers, proposals, literature reviews, methods sections, evidence quality, citation support, and research-writing feedback.

affaan-m/uspto-database

USPTO patent and trademark data workflow for official record lookup, PatentSearch queries, TSDR checks, assignment data, and reproducible IP research logs.

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.

Habilidades Relacionadas