Communitygithub.com

Geschmacksdestillation

Analysiere Videoreferenzen, messe Farbgebung, Schnittrhythmus und mehr und erstelle daraus ein wiederverwendbares Style-Pack mit 3D-LUT, Standbildern und Overlay-Platten.

Was ist Geschmacksdestillation?

Dieses Skill extrahiert den visuellen 'Geschmack' aus Referenzvideos in ein messbares, wiederverwendbares Paket (Style-Pack). Es erstellt eine 3D-LUT, eine Schnittlängenverteilung, Helden-Standbilder, Overlay-Platten und eine Textvorgabe für generative Modelle. Entwickler wenden es an, wenn sie einen konsistenten Look über mehrere Szenen erzeugen oder die Ästhetik eines Referenzmaterials reproduzieren möchten. Es wird von Claude Code lokal ausgeführt, ohne API-Aufrufe für die Messungen zu benötigen (nur die finale Zusammenfassung verwendet ein VLM). Das Skill stellt sicher, dass Messungen materialabhängig sind und nicht zwischen Genres ausgetauscht werden. Es umfasst eine vollständige Python-Implementierung in `scripts/` und erzeugt ein deterministisches Style-Pack im Ordner `stylepacks/`.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/affaan-m/ECC/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 Geschmacksdestillation?

Dieses eigenständige Skill liefert seine Implementierung in scripts/ aus. Verwende taste-application für die anschließende generierte oder lokale Bearbeitung. Jedes benannte Genre bleibt in einem eigenen Paket. Messungen von Flash Ethereal dürfen nicht stillschweigend für Fluid Sketch oder 3D Cyber Glitch wiederverwendet werden. Eine gemessene Null ist ein gültiger Datenpunkt; unterscheide sie von einem fehlenden Feld.

Lokale Abhängigkeiten befinden sich in scripts/requirements.txt. Separate autorisierte Provider-Arbeiten benötigen ebenfalls scripts/requirements-live.txt, Anmeldedaten und explizit TASTE_FORGE_ALLOW_LIVE=1. --dry-run liest keine Anmeldedaten und sendet keine Aufträge. Gehe nie davon aus, dass ein Workflow von einem lokalen Endpunktnamen gespeichert wurde; verwende die tatsächlichen Provider-seitigen Workflow- oder Anfragedaten.

Verwandle Referenzvideos in ein Style-Pack: einen Ordner mit Messungen und Assets, die spätere Schritte deterministisch verarbeiten.

Wann zu aktivieren

  • "Halte den Look dieser Clips fest" / "Destilliere den Vibe" / "Mach das reproduzierbar"
  • Der Benutzer hat Referenzmaterial und möchte eine LUT, eine Gradierung oder passendes Timing
  • Aufbau einer Look-Bibliothek, aufgeteilt nach Genres
  • Jede Anfrage, deren Antwort sonst "Beschreibe den Stil in einem Prompt" wäre

Die Kern-Erkenntnis

Ein Prompt liefert keine Gradierung. Messung schon.

Gemessen an echtem Filmmaterial: Drei bezahlte Generationen mit zunehmender Farbrichtung bewegten den Mittelton a* von +1,9 → +2,8 → +0,3 gegenüber einem +24,9 Zielwert, und der Kontrast verließ niemals ~19 gegenüber einem 34,7 Zielwert. Die Anwendung eines gemessenen Pakets auf dasselbe Material erzielte in einem deterministischen Durchlauf einen Chroma-MAE von 1,88 und einen Kontrast von 33,7, kostenlos.

Die Aufteilung ist also: Das Modell liefert Inhalt, Bewegung und Lichtstruktur; das Paket liefert den Look. Farbwörter in einem Generierungsprompt sind schlimmer als nutzlos – sie kosten Geld und treiben das Rendering von der neutralen Basis weg, die die LUT wünscht. Sage dies explizit im Prompt: "Farbe: keine. Neutral rendern. Gradierung wird nachträglich angewendet."

Was ein Paket enthält

stylepacks/<genre>/
  grade.json      gemessene Farbstatistiken (siehe unten)
  cadence.json    jede erkannte Schnittgrenze + die abgeleitete Verteilung
  look.cube       33^3 LUT, direkt in Resolve als Knoten-LUT einfügbar
  spec.json       VLM-Beschreibung, basierend auf den Messungen
  grounding.txt   die gemessenen Fakten, die dem VLM übergeben wurden
  stills/         Vollauflösungs-Frames der längsten Einstellungen (Konditionierungsbilder)
  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-Key
python distill.py --genre <name>                            # ein VLM-Aufruf

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

Die relevanten Messungen

Chroma nach Leuchtdichte-Zone, nicht global

Eine Farbidentität lebt normalerweise in einem Leuchtdichteband. Ein globaler a*/b*-Offset mathematisch unmöglich Split-Toning abbilden. Miss Chroma innerhalb von Zonen (L* Kanten [0,15,35,55,75,100]).

Ein echtes Merkmal: Violett bei L25 (a +24,9, b* −17,5), nahezu neutral an beiden Enden. Die Angabe nur der dunkelsten und hellsten Zonen nennt das "einheitlichen Stich" – drucke immer die ganze Kurve.

Median + MAD, niemals Mittelwert + Std

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

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

Die Weiß−Schwarz-Spanne liegt bei fast jedem echten Filmmaterial bei ~100 und diskriminiert nichts.

Hintergrundanteil ist eine Statistik erster Klasse

Erfasse den Anteil der Pixel unter L*10. Kein Moment der Verteilung kann das sehen: ein Clip kann den richtigen Mittelwert, die richtige Std und das richtige Chroma haben, während seine Schwarztöne zu Grau angehoben wurden. Genau so erzielte eine Gradierung einmal MAE 1,88 / Kontrast 33,7, während das tatsächliche Bild ein matschiges lila Durcheinander war.

Maskiere die Benutzeroberfläche vor der Messung

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

Kadenz benötigt eine adaptive Schwelle

Der richtige Content-Detector-Schwellwert ist materialabhängig: Ein kontrastreicher Action-Referenzschneidet hart genug für 30, ein stimmungsvoller versteckt seine Schnitte darunter. Durchlaufe absteigende Schwellwerte und nimm den höchsten, der immer noch ≥90 % der von der empfindlichsten Einstellung gefundenen Einstellungen wiederherstellt – das tendiert zu echten Schnitten statt Rauschen. Lehne Schwellwerte ab, die eine absurde Schnittrate (>100/min) implizieren; kontinuierliche Kamerabewegungen lösen den Detektor bei jedem Frame aus.

Führe den gesamten Durchlauf in einem Dekodierungsdurchlauf mit einem gemeinsamen StatsManager durch. Die naive Version dekodiert für jeden Schwellwert neu, was bei einer 60fps-Quelle den Unterschied zwischen Sekunden und Minuten ausmacht.

Overlay-Platten: Assets, keine Screenshots

Ein Standbild ist ein ganzer Frame – Compositing fügt nur ein zweites Bild darüber. Eine Platte ist das grafische Vokabular der Referenz (Flares, Streaks, Glitch-Fragmente), auf Schwarz gehoben, sodass es als Screen-Blend ohne Keying überlagert werden kann.

Zwei Fallstricke, beide an echtem Material aufgetreten:

  1. Absolute Schwellwerte versagen. Bei einer hellen Referenz nimmt eine Auswahl von L>55 AND chroma>12 ~90 % des Frames ein, und die "Platte" ist das Bild – einschließlich eines erkennbaren Gesichts. Wähle nach Perzentil (~top 3 %) aus und lehne jede Platte ab, die mehr als ~22 % des Frames bedeckt.
  2. Sortiere nach Trennung, nicht nach Helligkeit. "Anteil heller, gesättigter Pixel" reiht ein ausgewaschenes Bild ganz oben und ein schwarzes Bild mit einem intensiven Flare – die eigentliche Signatur – ganz unten ein. Punktzahl: p99.5(energie) / median(energie).

Maskiere auch vor der Bewertung: eingebrannte Typografie ist hell, gesättigt und kontrastreich, daher ergibt eine unmaskierte Ausführung eine perfekte Platte der Titelcard von jemand anderem.

Grundierung des VLM

Füttere die Messungen in den System-Prompt ein, bevor du eine Beschreibung anforderst. Ungrounded meldet ein VLM "Keine offensichtliche Farbkorrektur, neutral" bei Filmmaterial mit einem +24,9 a*-Stich. Grounded beschreibt es den Stich korrekt und leitet unabhängig den sekundären Akzent ab.

Verbiete Hedging-Wörter (variiert, gemischt, dynamisch, etwas, oft, neutral, oder) – ein Modell kann "variierte Beleuchtung" nicht rendern. Erzwinge das Verbot im Code, nicht nur im Prompt: es wurde etwa in einem von drei Durchläufen verletzt. Frage feldweise erneut an, behalte die am wenigsten gehedgte Antwort nach N Versuchen, anstatt zu scheitern.

Einschränkung, die dem Benutzer mitgeteilt werden sollte: Sobald die Vorgabe in den Messungen verankert ist, ist sie keine unabhängige Überprüfung mehr.

LUT-Baking-Fallstricke

  • Eine LUT kann nur eine Pixel-für-Pixel-RGB-Funktion codieren. Alles Verteilungsabhängige (Histogramm-Matching, Perzentilanker) 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 mit dieser Funktion 0 %. Konvertiere Lab→lineares sRGB von Hand; eine echte Messung ergab 83,3 % OOG.
  • Verschiebe Chroma per Offset, nicht affin. Affin teilt durch die Quell-σ und überschießt – bei echtem Material drehte es b* auf +11,6 gegenüber einem −17,5 Ziel. Offset senkte den MAE von 6,23 auf 2,13.
  • Gamut-Kompression kostete 3,8x Laufzeit für identischen MAE. Mach es opt-in.

Anti-Patterns

Nicht tunWarum
Gegen synthetisches Testmaterial optimierenKostete vier separate Fehlschlüsse in einem Projekt; echtes Filmmaterial widerlegte jeden einzelnen
MAE allein vertrauen1,88 MAE wirkte wie Erfolg bei einem sichtbar kaputten Frame
Mittelwert/Std für Chroma verwendenRechtsschief; drückt ~3x zu stark
Nur Endpunktzonen vergleichenBeide Enden sind konstruktionsbedingt nahezu neutral
Den Look beschreiben und aufhörenDie Vorgabe ist für Inhalt und Struktur; das Paket ist für den Look

Übergabe

Das Paket ist die Schnittstelle. Sobald es existiert, verwende das Skill taste-application, um dagegen zu generieren und zu montieren, oder übergebe look.cube direkt an einen Coloristen.

Gebündelter Code

scripts/ in diesem Skill ist eine funktionierende Implementierung, kein Pseudocode. Es enthält keine projektspezifischen Annahmen: Richte es auf beliebige Referenzvideos und es erzeugt ein Paket.

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

Jeder Netzwerkaufruf ist unter TASTE_FORGE_DRY_RUN=1 oder --dry-run gestubbt, 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/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.

Verwandte Skills