Communitygithub.com

taste-application

Genera un nuevo vídeo a partir de un pack de estilo destilado y lo edita en una pieza completa. El plan se toma del material de referencia.

¿Qué es taste-application?

Este skill representa la segunda mitad del pipeline, que toma un pack de estilo destilado (generado por 'taste-distillation') y produce un vídeo editado final. Está diseñado para agentes de IA que necesiten aplicar un estilo visual medido a material nuevo, recortar tomas largas en secuencias rítmicas y verificar la adherencia métrica al pack. Soporta ejecución local y remota (con credenciales y `TASTE_FORGE_ALLOW_LIVE=1` para operaciones en vivo), e incluye integraciones con Fal, Blender, DaVinci Resolve y ffmpeg. El pipeline prioriza la eficiencia económica agrupando fotogramas en tomas de ~5s (77% de eficiencia frente al 21% de generar un fotograma por plano), impone reglas de edición sin recodificación para preservar el ritmo sub-segundo, y proporciona un conjunto de verificación métrica (fondo, croma, contraste, bandas y cadencia) que se compara contra la distribución del pack en lugar de contra la media simple.

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

Preguntar en tu IA favorita

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

Documentación

Taste Application

La segunda mitad del pipeline. taste-distillation mide las referencias en un pack de estilo; esto genera contra ese pack y corta el resultado.

Contrato de Ejecución y Entrega

La implementación original se incluye aquí en scripts/; no se necesita un checkout separado de ito-video. Instala scripts/requirements.txt para procesamiento local. Instala scripts/requirements-live.txt solo para ejecución en un proveedor. Las cargas, envíos y descargas en vivo requieren TASTE_FORGE_ALLOW_LIVE=1 además de las credenciales; actívalo solo para la ejecución autorizada del usuario. --dry-run sigue siendo libre de credenciales y produce marcadores etiquetados. Un tiempo de espera ambiguo del proveedor no se reintenta como un nuevo trabajo pago. Inspecciona la solicitud al proveedor antes de decidir si merece otro envío.

Usa tomas completadas existentes sin llamadas al proveedor:

python scripts/pipeline.py --genre ejemplo --root stylepacks \
  --takes media/take-a.mp4 media/take-b.mp4 --duration 12 --fps 30 \
  --out out/review-v1.mp4

--duration es un objetivo de cadencia de mejor esfuerzo, no un tiempo de ejecución exacto. Los planos completos pueden producir una edición más corta o más larga; el ensamblador no duplica clips ni añade relleno para alcanzar el objetivo. El manifiesto de salida conserva la duration real y añade duration_contract con los segundos solicitados y reales, déficit, exceso y la política cadence_target. Las diferencias de al menos un fotograma de salida se advierten explícitamente. No se proporciona un modo de duración exacta; cuando se requiere un tiempo de ejecución exacto, inspecciona el recibo y revisa o rechaza el corte antes de la entrega.

El pipeline conserva los archivos de plano graduados de cada ejecución porque el FCPXML y EDL editables los referencian. Rechaza colisiones de salida e informa fallos de exportación de la línea de tiempo. Un render completado no es un proyecto de editor guardado ni una aprobación creativa. Conserva los activos fuente y los puntos de control del proyecto versionados antes y después de las ediciones en vivo; registra la ruta guardada y el resumen por separado del recibo de la línea de tiempo en memoria.

Los grafos de Fal listos para clonar y su compilador de entrada fuera de línea están documentados en workflows/README.md. Compila el resumen y la dirección de estilo antes del envío; no asumas que un campo de esquema desconectado afecta a un prompt de modelo. Valida los campos de endpoint actuales contra el proveedor real antes de una ejecución paga.

Para Blender, usa el GLB texturizado fuente completo; la retopología es un derivado con nombre separado y nunca reemplaza esa fuente. blender_prop.py soporta --width 1920 --height 1080 --fps 30 --receipt receipt.json explícitos y conserva la iluminación de borde y las texturas de material derivadas del pack. Guardar una escena es distinto de renderizarla; inspecciona el estado del recibo y las imágenes empaquetadas.

Para superposiciones de Resolve, usa taste.resolve.apply_placements con objetos inyectados de un objetivo versionado seleccionado explícitamente. Establece source_end_mode en la convención verificada en ese host. No asumas un final de fuente inclusivo entre versiones de Resolve. El adaptador asigna efectos superpuestos sobre pistas preservadas y verifica cada colocación inmediatamente y de nuevo después de todas las inserciones. Los números enteros compuestos deben coincidir con la API instalada; para el host verificado Studio 21, Screen es 5, no el incorrecto 22 del constructor histórico. El recibo prueba solo la colocación en memoria. Guarda el proyecto, verifica su punto de control, luego inspecciona la salida renderizada exacta antes de informar la entrega.

Cuándo Activar

  • "haz un vídeo en este estilo" / "aplica el pack" / "complementa este metraje"
  • Ensamblar clips generados en algo con un ritmo de edición real
  • Acuñar props 3D a partir de un look y devolverlos al vídeo
  • Verificar que una pieza terminada realmente coincide con su referencia

División del Trabajo

El modelo proporciona contenido, movimiento, encuadre y estructura de iluminación. El pack proporciona color y ritmo. Esto se mide, no es una preferencia estilística — ver taste-distillation para los números. Consecuencias prácticas:

  • El prompt de generación contiene cero lenguaje de color. Añade "Color: ninguno. Render neutro. La gradación se aplica después."
  • Mantén dos banderas separadas: --brief (lo que OCURRE: sujeto, acción, lugar) y --style-steer (cómo SE VE). Fusionarlas filtra palabras de estilo en la escena ("azul verdoso" se convierte en un objeto azul verdoso) y palabras de sujeto en la gradación.
  • El modelo responde mucho mejor a reglas locales y comprobables que a globales. "Fondos negro puro y sin luz; los sujetos tendiendo al blanco" funciona; "contraste extremo" no funciona.

Generar TOMAS, No Planos

La lectura obvia de "coincidir con la cadencia" es una generación por plano. Es económicamente absurdo. Una referencia que promedia 0.78s/plano contra un endpoint con un suelo de 4 segundos convierte una pieza de 10s en 12 llamadas, 48 segundos generados por 10 usados (21% de eficiencia), y doce clips no relacionados unidos en lo que debería leerse como continuo.

Los editores ruedan una toma más larga y cortan dentro de ella. Agrupar planos en tomas de ~5s: 3 llamadas, 13 segundos generados, 77% de eficiencia, y planos consecutivos que realmente pertenecen entre sí porque vinieron de la misma generación.

Dile al modelo qué forma quieres, o renderiza un lento push bloqueado y seis cortes dentro de él se leen como un tartamudeo:

"Filmado como UNA toma continua sin cortes duros dentro de ella. Se cortará en 6 piezas de aproximadamente 0.8s en la edición, por lo que el encuadre, el sujeto y la luz deben seguir cambiando a lo largo — cualquier ventana de 0.8s tiene que valerse por sí misma como su propio plano."

Reglas de Corte

  • Recodifica, nunca copies en streaming. La copia en streaming solo corta en keyframes, que a 0.78s significa que la longitud del plano redondea cada límite al GOP más cercano — destruyendo lo exacto que el pipeline existe para preservar.
  • Al complementar metraje existente, usa sus propios límites de plano. Dividir un vídeo base en piezas contiguas y reproducirlas en orden simplemente reensambla el original: cada "corte" cae a medio plano y es invisible. Medido, un ensamblaje de 20 planos registró solo 12 cortes detectados. Detecta límites reales y toma cada N para que las selecciones consecutivas estén garantizadas como discontinuas. Eso movió una medición de corte de 1.29s a 0.83s contra un objetivo de 0.78s.
  • Muestrea las longitudes de plano de la distribución de la referencia, no de su media, para que el corte herede la varianza del ritmo en lugar de aplanarse a clips uniformes.

Reglas de Gradación

  • La medición directa supera a un LUT horneado cuando tienes el clip: mídela, empareja su CDF L*, aplica croma por zona. grade_clip_direct alcanzó MAE 1.58 y contraste 34.0 contra 34.7.
  • Ancla, no uses CDF-match, cuando el histograma del clip no se parezca al de la referencia. Forzar un clip generado con 68% de negro sobre un histograma de referencia ocupado levantó todo el fondo del negro: la preservación del fondo cayó al 26.0% (CDF) frente al 69.0% (ancla), mientras que MAE y contraste seguían viéndose excelentes. Por defecto, usa tono anclado.
  • El tamaño del lote importa. Graduar 48 fotogramas a la vez mató el proceso por falta de memoria; 6 es seguro.

Comportamiento Recuperado de la Plataforma fal

Estas observaciones y ejemplos de endpoint provienen del flujo de trabajo recuperado. Vuelve a verificar los metadatos del endpoint actual; no son garantías sobre cada versión futura del proveedor. Las plantillas de grafo incluidas registran las entradas de flujo de trabajo verificadas por separado, incluido el control explícito de audio generado.

Esto cuesta tiempo real de descubrimiento. Compruébalos antes de diseñar un grafo.

LímiteDetalle
No hay ningún renderizador 3Dfal tiene image-to-3d, text-to-3d, 3d-to-3d y nada más. Cada endpoint 3d-to-3d emite otra malla. No hay una categoría 3d-to-image/3d-to-video, por lo que un GLB acuñado no puede volver a entrar en un grafo de vídeo de fal. Renderiza localmente, luego usa fal-ai/ffmpeg-api/images-to-video.
compose no puede superponerfal-ai/ffmpeg-api/compose rechaza una segunda pista con "No se admiten múltiples pistas de vídeo" — y cuenta una pista de image como una pista de vídeo. Solo secuencia una pista de vídeo. Compón localmente con ffmpeg.
compose keyframes están en milisegundosNada en la respuesta lo dice. Una ejecución enviada en segundos se acepta y devuelve un vídeo que es 1000x demasiado corto.
extract-frame ofrece solo primero/medio/últimoSin marca de tiempo arbitraria. Usa los tres como tres imágenes de acondicionamiento distintas.
Sin bucles, sin concatenación de cadenas en el DAGEl fan-out por plano tiene que ser creado nodo por nodo, o mantenerse local.
Kling 3.0 no tiene referencia-a-vídeoLa línea v3 es solo texto/imagen/control de movimiento; referencia-a-vídeo vive en la línea o3: fal-ai/kling-video/o3/pro/reference-to-video.
Los prefijos no son uniformesbytedance/*, tripo3d/*, meshy/*, minimax/*, openai/* no llevan el prefijo fal-ai/. kling-video, veo3.1, flux-*, hunyuan-3d, ffmpeg-api sí lo llevan.

Selecciones de endpoint

EspacioMejorAlternativa de valor
referencia→vídeobytedance/seedance-2.5/reference-to-video (~$0.473/s @720p)fal-ai/kling-video/o3/pro/reference-to-video (~$0.112/s)
imagen→3Dfal-ai/hunyuan-3d/v3.1/pro/image-to-3d ($0.375, hasta 8 vistas)tripo3d/h3.1/image-to-3d ($0.20)
texto→3Dfal-ai/hunyuan-3d/v3.1/pro/text-to-3dtripo3d/h3.1/text-to-3d
retopologíafal-ai/hunyuan-3d/v3.1/smart-topology ($0.75)tripo3d/tripo/remesh (~75x más barato)
división de partesfal-ai/hunyuan-3d/v3.1/part (solo FBX)tripo3d/tripo/segment
texto→imagenfal-ai/nano-banana-pro ($0.15 fijo)fal-ai/flux-2-pro ($0.03/MP)

Seedance es ~4x el precio de Kling o3 por los mismos 5 segundos. Lo gana en fidelidad de múltiples referencias (hasta 50 refs mixtos de imagen/vídeo/audio) y no lo gana cuando se condiciona sobre una sola imagen fija.

Los IDs de modelo y los precios cambian. Verifícalos contra fal.ai/models antes de prometer cualquiera de ellos.

La Rama 3D

python mint3d.py --genre <nombre> --from-stills 4 --retopo --render
python mint3d.py --genre <nombre> --prompt "un visor de cromo agrietado" --render
  • Genera una placa limpia primero; no tomes de imágenes de referencia. El requisito de entrada declarado del endpoint es fondo simple, objeto único, objeto >50% del fotograma. Los carretes de referencia son lo contrario de eso — collages, planos generales, varios sujetos, gráficos quemados — y producen ruido esculpido. Texto → placa de objeto único → malla cuesta ~$0.15 extra y es la diferencia entre una malla utilizable y una descartada.
  • La vista múltiple se nombra por campos por ángulo, no una lista. input_image_url (frontal, obligatorio), luego back_image_url, left_image_url, right_image_url, left_front_image_url, right_front_image_url, top_image_url, bottom_image_url. No hay input_image_urls ni un flag multi_view — inventarlos degrada cada acuñación a una sola vista mientras parece funcionar. Una etiqueta de ángulo incorrecta es peor que omitir la vista, porque el modelo confía en ella.
  • Accede al GLB por clave, no por posición. La respuesta lleva un PNG thumbnail y un bloque model_urls junto a model_glb; tomar la primera URL funciona solo hasta que las claves se reordenan, y un PNG de vista previa se descarga bien — nada falla hasta que Blender se niega a abrirlo.
  • Solicita mapas PBR. Sin ellos, la malla se ilumina como cartón pintado.
  • Retopologiza si alguien va a editar o riguear la malla. Las mallas generadas son densas y caóticas.
  • Renderiza localmente para cerrar el bucle. Una vez que un plato giratorio son fotogramas, es metraje, y cada etapa posterior ya maneja metraje — gradúalo, córtalo, utilízalo como elemento o súbelo como referencia de acondicionamiento. Usa Blender cuando haya un binario en PATH; mantén un rasterizador de software ligero como valor predeterminado, porque un contexto GL sin cabeza es lo más común que falta en un contenedor y un renderizador que solo funciona en una estación de trabajo no es parte de un pipeline.

Verifica, Luego Cree

Cada otra etapa afirma un resultado. Compruébalo, y comprueba la forma de la distribución, no solo los momentos:

  • background — proporción del fotograma por debajo de L*10 contra la cifra del pack. Compáralo con la referencia, no con el clip fuente: una fuente generada al 68% de negro es más negra que cualquier referencia en una banda de 24–55%, por lo que "preservar los negros de la fuente" exige lo incorrecto e igualmente excusa una gradación levantada.
  • chroma_mae — error a*/b* por zona, usando la mediana (coincidiendo con cómo se midieron los objetivos del pack; una media aquí compara una estadística sensible a la asimetría con una robusta e informa un desajuste de definición como un error).
  • contrast / black_point / white_point
  • banding — bins vacíos del histograma L* entre bins ocupados. Contar bins vacíos totales no funciona: un clip legítimamente oscuro tiene bins vacíos de altas luces.
  • cadence — longitud media de plano detectada frente a la de la referencia.

Cuidado con la trampa de unidades: OpenCV cambia la convención de Lab con el dtype. En float32, L* es 0–100 y a*/b* están firmados; en uint8, L* es 0–255 y a*/b* tienen sesgo +128. Mezclarlos informa errores de croma en los cientos.

Cadena Completa

python pipeline.py --genre <nombre> --refs a.mov b.mov \
  --brief "lo que sucede" --duration 12 \
  --base-video existente.mp4 --out out/FINAL.mp4

acuñar → destilar → (mint3d) → aplicar → forjar → verificar. Las etapas 1–3 están cacheadas, por lo que iterar sobre briefs nunca vuelve a medir nada. --dry-run simula cada llamada de red: el plan, los prompts, la disposición de pistas y el manifiesto aún se ejecutan.

Anti-patrones

No hacerPor qué
Una generación por plano21% de eficiencia, 12 clips no relacionados
Poner color en el promptMedido que no funciona; aleja de la base neutra que el LUT quiere
Copiar en streaming los cortesLos límites solo en keyframes destruyen el ritmo sub-segundo
Cortar un vídeo base de forma contiguaReensambla el original; cada corte invisible
Confiar en compose para superponerNo puede; rechaza la segunda pista
Enviar segundos a composeSilenciosamente 1000x demasiado corto
Entregar solo con MAEAñade la comprobación de proporción de fondo

El Metraje Prestado Lleva la UI de la App de Captura

El peor defecto único encontrado en un corte entregado: el vídeo finalizado enviaba el botón de me gusta, el contador de vistas y la burbuja de comentarios de otra persona, porque el base...

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.

Skills relacionados