Communitygithub.com

Geschmacks-Destillation

Misst eine Reihe von Referenzvideos und erstellt daraus ein wiederverwendbares Stilpaket: Farbkorrektur als 3D-LUT, Schnittrhythmus als Einstellungslängen-Verteilung, Helden-Standbilder, Screen-Blend-Overlay-Platten sowie eine Text-Spezifikation für ein generatives Modell. Verwende dies, wenn der Nutzer den Look von Referenzmaterial einfangen, einen wiederholbaren Look erstellen, Assets aus Referenzen generieren oder den Stil einer anderen Person reproduzieren möchte.

Was ist Geschmacks-Destillation?

Die Fertigkeit 'Geschmacks-Destillation' wandelt Referenzvideos in ein strukturiertes Stilpaket um, das aus quantitativen Messungen und generierten Assets besteht. Sie ist vollständig in Python implementiert und wird lokal über `mint.py` (rein numerische Analyse, ohne Netzwerk) und `distill.py` (ein einziger VLM-Aufruf) ausgeführt. Das resultierende Paket enthält eine 3D-LUT (`look.cube`), Farbstatistiken, eine Einstellungslängenverteilung, Helden-Standbilder, Overlay-Platten und eine durch Messungen fundierte Textbeschreibung. Die Fertigkeit unterstützt sowohl Offline-Betrieb (ohne API-Schlüssel) als auch optionale Live-Anbieter (z. B. FAL), die durch die Umgebungsvariable `TASTE_FORGE_ALLOW_LIVE=1` gesteuert werden. Sie ist besonders nützlich für Coloristen und Entwickler, die einen konsistenten Look über mehrere Produktionen hinweg reproduzieren möchten, und hebt sich durch ihre fachliche Fundierung von rein promptbasierten Ansätzen ab. Die Fertigkeit kann in der Regel mit `taste-application` kombiniert werden, um auf Basis eines generierten Stilpakets neue Inhalte zu erstellen.

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

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Was macht Geschmacks-Destillation?

Diese eigenständige Fertigkeit bringt ihre Implementierung in scripts/ mit. Verwende taste-application für die anschließende generierte oder lokale Bearbeitung. Behalte jedes benannte Genre in einem eigenen Paket. Messungen von „Flash Ethereal“ dürfen nicht stillschweigend für „Fluid Sketch“ oder „3D Cyber Glitch“ wiederverwendet werden. Ein gemessener Nullwert sind gültige Daten; unterscheide ihn von einem fehlenden Feld.

Lokale Abhängigkeiten befinden sich in scripts/requirements.txt. Für separat autorisierte Anbieter-Arbeiten werden außerdem scripts/requirements-live.txt, Anmeldeinformationen und der explizite Schalter TASTE_FORGE_ALLOW_LIVE=1 benötigt. --dry-run liest keine Anmeldeinformationen und sendet keine Aufträge ab. Leite niemals daraus ab, dass ein Workflow von einem lokalen Endpunkt-Namen gespeichert wurde; verwende stattdessen den tatsächlichen anbieterseitigen Workflow oder Anfragebelege.

Wandle Referenzvideos in ein Stilpaket um: einen Ordner mit Messungen und Assets, die von späteren Phasen deterministisch konsumiert werden.

Aktivierungsbedingungen

  • „Erfasse den Look dieser Clips“ / „Destilliere die Stimmung“ / „Mach dies wiederholbar“
  • Der Nutzer hat Referenzmaterial und möchte eine LUT, eine Gradierung oder eine passende Kadenz
  • Aufbau einer Bibliothek von Looks, aufgeteilt nach Genre
  • Jede Anfrage, deren Antwort andernfalls „Beschreibe den Stil in einem Prompt“ wäre

Die Kern-Erkenntnis

Ein Prompt kann keine Gradierung liefern. Messung kann das.

Gemessen an echtem Filmmaterial: Drei kostenpflichtige Render-Durchgänge mit zunehmender Farbsteuerung bewegten das Mittelton-a* von +1,9 → +2,8 → +0,3 gegenüber einem +24,9 Zielwert, und der Kontrast verließ nie ~19 gegenüber einem 34,7 Zielwert. Die Anwendung eines gemessenen Pakets auf dasselbe Filmmaterial erzielte einen Chroma-MAE von 1,88 und einen Kontrast von 33,7 in einem einzigen deterministischen Durchlauf – kostenlos.

Die Aufteilung ist also: Das Modell liefert Inhalt, Bewegung und Lichtstruktur; das Paket liefert den Look. Farbwörter in einem Generierungs-Prompt sind schlimmer als nutzlos – sie kosten Geld und treiben den Render vom neutralen Basisbild weg, das die LUT benötigt. Sage dies explizit im Prompt: „Farbe: keine. Neutral darstellen. Die Gradierung erfolgt nachträglich.“

Inhalt eines Pakets

stylepacks/<genre>/
  grade.json      gemessene Farbstatistiken (siehe unten)
  cadence.json    jede erkannte Einstellungsgrenze + die daraus abgeleitete Verteilung
  look.cube       33^3 LUT, direkt in Resolve als Node-LUT ladbar
  spec.json       VLM-Beschreibung, fundiert durch die Messungen
  grounding.txt   die gemessenen Fakten, die dem VLM übergeben wurden
  stills/         Vollauflösungsframes aus den längsten Einstellungen (Conditioning-Bilder)
  plates/         Screen-Blend-Overlay-Elemente, auf Schwarz gehoben
  props/          gemünzte GLB-Meshes
  pack.json       Manifest

Ausführung

python mint.py --genre <name> --refs a.mov b.mov c.mov     # offline, kein API-Schlüssel
python distill.py --genre <name>                            # ein VLM-Aufruf

mint.py ist reine numerische Analyse – kein Netzwerk, kein Schlüssel, deterministisch, sodass ein Paket neu generiert statt gesichert werden kann.

Die relevanten Messungen

Chroma nach Luminanzzonen, nicht global

Die Farbidentität lebt normalerweise in einem Luminanzband. Ein globaler a*/b*-Offset kann Splittoning mathematisch nicht darstellen. Miss Chroma innerhalb von Zonen (L*-Grenzen [0,15,35,55,75,100]).

Ein echtes Signatur: Violett bei L25 (a +24,9, b* −17,5), nahezu neutral an beiden Enden. Nur die hellsten und dunkelsten Zonen zu melden, bezeichnet das als „gleichmäßigen Farbstich“ – drucke immer die gesamte Kurve.

Median + MAD, niemals Mittelwert + Std

Die Chroma in echten Referenzmengen ist stark rechtsschief. In einem gemessenen Filmstreifen lag der mittlere Mittelton-Chroma bei 36,9 gegenüber einem Median von 17,5, sodass eine mittelwertbasierte LUT die Farbe etwa 3x stärker drückte, als das Material rechtfertigte.

Kontrast ist std(L*), nicht Weiß minus Schwarz

Der Weiß−Schwarz-Bereich liegt bei fast jedem echten Filmmaterial bei ~100 und unterscheidet nichts.

Der Hintergrundanteil ist eine erstklassige Statistik

Erfasse den Anteil der Pixel unter L*10. Kein Moment der Verteilung kann dies erkennen: Ein Clip kann den richtigen Mittelwert, die richtige Std und das richtige Chroma aufweisen, während seine Schwarzwerte ins Graue gehoben wurden. Genau so erreichte eine Gradierung einst MAE 1,88 / Kontrast 33,7, während das tatsächliche Bild eine matschige lila Katastrophe war.

Maskiere die Benutzeroberfläche vor der Messung

Bildschirmaufgezeichnete Referenzen tragen statische Möbel – Letterbox-Balken, eine Statusleiste, ein Like-Symbol, Untertiteltext. All das landet in den Statistiken, als wäre es der Look: Schwarze Balken blähen das Schattengewicht auf, ein rotes Herz verzerrt a* in Richtung Magenta. Temporale Varianz trennt sie sauber – das Filmmaterial bewegt sich, die Benutzeroberfläche nicht –, sodass kein manueller Zuschnitt nötig ist. Bei echtem Material bleiben so ~65 % der Pixel erhalten.

Kadenz benötigt einen adaptiven Schwellenwert

Der richtige Content-Detektor-Schwellenwert ist materialabhängig: Ein kontrastreicher Action-Referenzclip schneidet hart genug für 30, ein stimmungsvoller versteckt seine Schnitte darunter. Durchlaufe absteigende Schwellenwerte und nimm den höchsten, der immer noch ≥90 % der Einstellungen wiederfindet, die die empfindlichste Einstellung findet – das begünstigt echte Schnitte gegenüber Rauschen. Verwerfe Schwellenwerte, die eine absurde Schnittrate (>100/Minute) implizieren; kontinuierliche Kamerafahrten lösen den Detektor in jedem Bild aus.

Führe den gesamten Durchlauf in einem Dekodierungs-Durchgang mit einem gemeinsamen StatsManager aus. Die naive Version dekodiert pro Schwellenwert neu, was bei 60fps-Quelle den Unterschied zwischen Sekunden und Minuten ausmacht.

Overlay-Platten: Assets, Keine Screenshots

Ein Standbild ist ein vollständiger Frame – das Compositing eines solchen legt nur ein zweites Bild darüber. Eine Platte ist das grafische Vokabular des Referenzmaterials (Flächen, Streifen, Glitch-Fragmente), das auf Schwarz gehoben wurde, sodass es ohne Keying per Screen-Blend mischt.

Zwei Fallstricke, beide an echtem Material getroffen:

  1. Absolute Schwellenwerte versagen. Bei einer hellen Referenz erfasst eine L>55 AND chroma>12-Auswahl ~90 % des Frames, und die „Platte“ ist das Bild – inklusive eines erkennbaren Gesichts. Wähle nach Perzentil (~obere 3 %) und lehne jede Platte ab, die mehr als ~22 % des Frames bedeckt.
  2. Sortiere nach Trennung, nicht nach Helligkeit. „Anteil heller, gesättigter Pixel“ setzt ein verwaschenes Bild an die Spitze und ein schwarzes Bild mit einer intensiven Fläche – der eigentlichen Signatur – ans Ende. Bewerte p99.5(Energie) / median(Energie).

Maskiere außerdem vor der Bewertung: Eingebrannte Typografie ist hell, gesättigt und kontrastreich, daher liefert ein unmaskierter Durchlauf eine perfekte Platte der Titelkarte eines anderen.

Fundierung des VLM

Füge die Messungen in den System-Prompt ein, bevor du eine Beschreibung anforderst. Unfundiert meldet ein VLM „keine offensichtliche Farbkorrektur, neutral“ für Filmmaterial mit einem a*-Farbstich von +24,9. Fundiert beschreibt es den Farbstich korrekt und leitet die sekundäre Akzentfarbe unabhängig ab.

Verbiete abschwächende Wörter (unterschiedlich, gemischt, dynamisch, etwas, oft, neutral, oder) – ein Modell kann „unterschiedliche Beleuchtung“ nicht rendern. Setze das Verbot im Code durch, nicht nur im Prompt: es wurde in etwa jedem dritten Durchlauf verletzt. Frage feldweise erneut an und behalte nach N Versuchen die am wenigsten abgeschwächte Antwort, anstatt zu scheitern.

Einschränkung, die dem Nutzer mitgeteilt werden sollte: Sobald die Spezifikation auf den Messungen basiert, ist sie keine unabhängige Prüfung dieser Messungen mehr.

LUT-Baking-Fallstricke

  • Eine LUT kann nur eine per-Pixel-RGB-Funktion kodieren. Alles, was von der Verteilung abhängt (Histogramm-Matching, Perzentil-Anker), muss vor dem Baking auf eine Konstante reduziert werden, sonst misst es stillschweigend das gleichmäßige LUT-Gitter anstelle des Filmmaterials.
  • cv2.cvtColor(LAB2RGB) clamped intern, daher meldet ein Out-of-Gamut-Test, der dies verwendet, 0 %. Konvertiere Lab→lineares sRGB von Hand; eine echte Messung ergab 83,3 % OOG.
  • Versetze Chroma per Offset, nicht affin. Affin dividiert durch die Quell-σ und überschießt – bei echtem Filmmaterial kehrte es b* auf +11,6 gegenüber einem Ziel von −17,5. Offset senkte den MAE von 6,23 auf 2,13.
  • Gamut-Kompression kostete 3,8x Laufzeit bei identischem MAE. Mach es opt-in.

Anti-Patterns

Mach das nichtWarum
Gegen synthetisches Testmaterial optimierenKostete vier separate Fehlschlüsse in einem Projekt; echtes Filmmaterial widerlegte jeden
MAE allein vertrauen1,88 MAE sah wie ein Erfolg aus, bei einem sichtbar defekten Frame
Mittelwert/Std für Chroma verwendenRechtsschief; drückt ~3x zu stark
Nur Endpunkt-Zonen vergleichenBeide Enden sind konstruktionsbedingt nahezu neutral
Den Look beschreiben und aufhörenDie Spezifikation ist für Inhalt und Struktur; das Paket für die Farbe

Übergabe

Das Paket ist die Schnittstelle. Sobald es existiert, verwende die Fertigkeit taste-application, um darauf basierend zu generieren und zu montieren, oder übergib look.cube direkt an einen Coloristen.

Gebündelter Code

scripts/ in dieser Fertigkeit ist eine funktionierende Implementierung, kein Pseudocode. Sie enthält keine projektspezifischen Annahmen: Richte sie auf beliebige Referenzvideos und sie erzeugt ein Paket.

pip install -r scripts/requirements.txt
export FAL_KEY=...            # nur für die Phasen benötigt, die fal aufrufen

Jeder Netzwerkaufruf wird unter TASTE_FORGE_DRY_RUN=1 oder --dry-run stubbed, sodass der Plan, die Prompts, das Track-Layout und das Manifest ohne Kosten inspiziert werden können.

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.

Verwandte Skills