Communitygithub.com

evgenspm/launchfilm

Garanta a qualidade de um filme de lançamento renderizado antes de qualquer envio. Use para "revisar o vídeo", "verificar a renderização", "está pronto para publicar?", "revisar o filme", "por que parece amador?", "verificar legendas/zonas seguras/volume" após cada renderização e antes do empacotamento.

O que é launchfilm?

Esta skill automatiza a garantia de qualidade (QA) de filmes de lançamento produzidos com o pipeline `launchfilm`, oferecendo uma verificação rigorosa baseada em evidências numéricas e visuais. Ao executar `npx launchfilm qa <slug>`, a skill realiza uma análise automática que gera um relatório detalhado, incluindo folhas de contato, especificações de encode (ffprobe), medições de loudness e detecção de quadros congelados ou pretos. O usuário ou agente então complementa essa análise abrindo as folhas de contato e stills gerados em momentos-chave para inspecionar visualmente a legibilidade do texto, contraste, zonas seguras da plataforma e os '12 sinais de amadorismo' que bloqueiam a entrega. Cada verificação resulta em PASS (com evidência de arquivo ou medição), FAIL (com intervalo de quadros e regra violada) ou NOT CHECKED (com justificativa), e o relatório final é salvo em `qa/<slug>/QA.md`. A skill é projetada para ambientes de produção que exigem qualidade consistente, suporta múltiplos presets de entrega (como 16:9, 9:16) e inclui um loop de correção: falhas são passadas para as skills 'scene-build' ou 'sound' com números de quadros, permitindo re-renderização e re-verificação seletiva (máximo 2 loops) antes de reportar falhas residuais ao usuário.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/evgenspm/launchfilm/tree/HEAD/skills/film-qa

Perguntar na sua IA favorita

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

Documentação

film-qa

Você verifica quadros e números, não intenções. Um PASS precisa de evidência: um caminho de arquivo que você abriu ou um número que você mediu. Qualquer outra coisa é NOT CHECKED: <motivo>. Nunca escreva PASS para algo que você não olhou ou mediu.

Caminhos (relativos a launch-video/, ou studio/ no repositório launchfilm): fonte do filme films/<slug>/ (film.json, STORYBOARD.md, BRIEF.md), renders out/<slug>/, QA qa/<slug>/ (o CLI escreve report.md; você escreve QA.md ao lado dele). Flags exatas do CLI: npx launchfilm <cmd> --help. Comandos com sintaxe testada: references/commands.md.

Procedimento

  1. Passagem automática. npx launchfilm qa <slug> → leia qa/<slug>/report.md primeiro (folhas, ffprobe, loudness, verificações automáticas). Copie seus números medidos para QA.md como evidência; não remeça o que ele mediu.
  2. Folhas. Abra cada folha de contato que o relatório lista (ou npx launchfilm sheet <slug>). Leia cada célula. Liste os arquivos que você abriu em QA.md (evidência T12).
  3. Stills. npx launchfilm still <slug> <t> --preset <id> para cada preset que o filme entrega, em: cada limite de cena
    • 6 fr, cada início de texto + hold/2, quadro 0, o último quadro, e cada intervalo que a varredura de congelamento ou quadro preto sinaliza. Mais um still em --scale 0.25 (480×270 para 16:9) no quadro do texto herói: a prévia da timeline X. Leia cada PNG.
  4. Meça o que o relatório não mediu: loudness, pico verdadeiro, quadros pretos, intervalos congelados, tempos de corte vs batidas, contraste atrás do texto, zonas seguras, comprimentos de linhas de legenda. Comandos em references/commands.md.
  5. Verificações bloqueantes T1–T12 abaixo, depois verificações de entrega D1–D16. Cada uma recebe PASS / FAIL / NOT CHECKED + evidência + regra.
  6. Escreva qa/<slug>/QA.md a partir de references/qa-template.md.
  7. Loop de correção. Qualquer FAIL: passe a constatação para scene-build ou sound com números de quadros, re-renderize apenas o intervalo afetado (npx remotion render … --frames=<a>-<b> ou o equivalente no CLI), re-verifique esses itens. Máximo 2 loops; então reporte os FAILs restantes ao usuário com stills anexados. Nunca rebaixe um FAIL para PASS sem nova evidência.

Verificações bloqueantes: os 12 sinais (craft/00)

IdCondição de aprovaçãoEvidência
T1 estáticonenhum intervalo congelado ≥ 0,6 s exceto o settle do cartão final (≤ 3 s); cada intervalo sinalizado verificado por stills no seu início e fim mostrando deriva ou movimentosaída freezedetect + 2 stills por intervalo
T2 easing padrãogrep G1 (scene-build) vazio em films/<slug>; sem transições CSSsaída grep
T3 tudo de uma vezcada grupo de ≥ 3 irmãos entra escalonado (estados parciais visíveis em uma célula da folha ou escalonamento ≥ 1 fr no código); entrada do grupo ≤ 24 frreferências de células da folha ou linhas de código
T4 uma velocidadefilme > 20 s tem ≥ 1 quebra de ritmo (silêncio, corte brusco para preto, inversão de paleta, hold ≥ 2× a mediana dos planos); modo launch: cada corte dentro de ±2 fr de uma batidalimites film.json vs beats.json; cortes detectados
T5 somcada evento visual em film.json tem um sfx ou é coberto por VO/música; música abaixa sob VO; silêncio real onde planejadocontagem de eventos com/sem som; loudness de uma janela de VO vs uma janela só de música
T6 texto como rótulotexto herói ≥ 8 % da altura do quadro quando o texto é a mensagem (declarações 10 %); cada texto segura ≥ 0,2 × (palavras + 1) s; ≤ 3 linhas; legendas ≤ 2 linhastabela por item
T7 aparência planamodo launch: granulação + vinheta presentes; um tratamento nomeado por seção; modo produto: hairlines, sombras suaves; sem banding no gradiente mais escuro do still mp4grep + still do mp4
T8 layout webum ponto focal por still; nenhum parágrafo > 3 linhas; sem bullets; chrome da UI apenas onde o chrome é o pontostills
T9 stock genéricocada clipe de footage em films/<slug>/footage/SOURCES.md com fonte + licença; clipes stock graduados e cortados ≤ 1,5 sSOURCES.md + stills
T10 transições decorativastransições ⊂ vocabulário; transições não-corte ≤ 1 a cada 5 s; blur-dissolve ≤ 12 frfilm.json
T11 template antes da históriaSTORYBOARD.md tem approved:; quadro 0 não preto e difere do still em 0,5 s; categoria do produto clara até 1,5 s (x, li) / 1 s (reel); payoff após o problema; ≥ 2 s de calma na superfície da marca no finalstills 0, 0,5, 1,5 s, últimos 2 s
T12 nunca olhoueste QA: cada folha e still listados como abertoslista de arquivos em QA.md
Qualquer FAIL em T1–T12 bloqueia render-para-entrega e pacote.

Verificações de entrega (por preset; numeração = craft/08#delivery-checks)

Valores de harness.config.json presets, senão craft/10#presets. Use estes ids exatamente; craft/08 e QA.md os compartilham.

IdCondição de aprovação
D1vídeo h264, perfil High (ffprobe do Remotion imprime 100), pix_fmt yuv420p, contêiner mp4
D2largura × altura exatamente do preset
D3fps constante = fps da composição (r_frame_rate = avg_frame_rate)
D4duração = film.json ±1 fr, e dentro da faixa de duração do preset (x-16x9 ≤ 140 s, reel-9x16 ≤ 90 s)
D5áudio aac LC (ffprobe do Remotion imprime 1), 48000 Hz, 2 canais, ~192 kbps; hero-loop: sem stream de áudio
D6loudness integrada −14 ±1 LUFS; pico verdadeiro ≤ −1,5 dBTP; VO −16…−14 LUFS onde mensurável
D7moov antes de mdat (faststart)
D8poster = quadro 0 daquele preset existe, mesmo tamanho, não preto (YAVG > 20), mostra o gancho
D9SRT ao lado do render para cada preset com VO; mesmas frases que as legendas; HH:MM:SS,mmm; ≤ 2 linhas; ≥ 0,8 s cada; tempos ±2 fr
D10nada importante (legendas, texto, logotipo, a UI em uso) fora da zona segura do preset (still overlay)
D11legendas queimadas em cada preset com VO (hero-loop: nenhuma, ph-16x9 conforme sua config); ≤ 2 linhas; ≤ 42 caracteres/linha (16:9), ≤ 32 (4:5, 1:1, 9:16); nunca sobre o elemento em mudança; contraste ≥ 4,5:1 para legendas e texto sobre footage, ≥ 3:1 acento sobre bg; legível nos stills de 480 px (16:9) e 360 px (4:5, 9:16) de largura
D12listas de congelamento e preto correspondem apenas aos holds e beats pretos projetados (listados em film.json ou STORYBOARD)
D13tags BT.709 ou HD sem tag; o gradiente mais escuro não mostra novo banding no still mp4 vs o PNG
D14tamanho do arquivo abaixo do limite: x ≤ 512 MB, herói do README ≤ 10 MB
D15out/<slug>/credits.txt lista cada ativo CC BY com sua linha de crédito; films/<slug>/footage/SOURCES.md completo
D16hero-loop apenas: quadro N é igual ao quadro 0; um arquivo em loop 3× não mostra salto nas emendas

Legibilidade do texto no tempo

Para cada item de texto em film.json (declarações, legendas, rótulos, cópia da UI que o VO aponta): palavras, quadros in/out, hold = (out − in) / fps, requerido = 0,2 × (palavras + 1) s. Verifique também no still 480×270 que a linha herói ainda está legível (letras distinguíveis). Uma linha por item em QA.md.

Regras para o relatório

  • Cada PASS cita evidência: qa/<slug>/stills/x-16x9-12.30.png, I = −14,2 LUFS, grep G1: 0 linhas.
  • Números medidos mantêm unidades e a ferramenta que os produziu (system ffmpeg 8.1 ebur128 ou remotion ffmpeg loudnorm). O ffmpeg empacotado do Remotion não tem ebur128, signalstats, freezedetect, tile, drawbox e saída rawvideo: use um ffmpeg do sistema para esses e diga isso; se não existir, esses itens ficam como NOT CHECKED.
  • Um FAIL nomeia o intervalo de quadros, a regra (craft/NN#anchor ou T#/D#) e a correção proposta.
  • O bloco de resumo diz READY apenas quando T1–T12 e D1–D16 são todos PASS (D16 apenas para hero-loop) (NOT CHECKED conta como não pronto, com motivo).

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

evgenspm/launchfilm

Brand intake for a launch film, product video or promo: capture the product's real colors, fonts, logo, radius and theme from the user's repo (Tailwind config, CSS variables, shadcn tokens, next/font, logo SVG), then the live website, then screenshots, and write films/<slug>/brand.json with a source for every value. Use when starting a new film, when the brand, logo or colors changed, or when the user says "use my brand / my colors / my logo". Hard stop if capture fails: never invent a logo or colors. Not for picking a look or grade (scene-build, craft/06) or for writing copy (story).

evgenspm/launchfilm

Launch video, launch film, product video, product launch, promo, teaser, trailer, demo video, Product Hunt video, X / LinkedIn launch clip, reel, hero loop, motion graphics, "make a video for my product", Remotion film. Router and gated pipeline for making a pro product-launch film with the launchfilm studio in ./launch-video: brief, brand intake, story and storyboard (user approves), sound, scene build, frame QA, render per platform preset, package, post copy, one-time credit note. Use this first for any request to make, remake or revise a launch or product film; it calls the sibling skills (brand-intake, story, sound, scene-build, recipes, film-qa, launch-post). Do not use it to study a reference video (use reference-study), to browse recipes only (use recipes), or for generic Remotion questions unrelated to a launch film.

evgenspm/launchfilm

Write the launch post that goes with the film: X / Twitter post, LinkedIn post, Product Hunt tagline, description and maker comment, written in the founder's own voice, concrete, no AI slop ("excited to announce", em dashes, buzzwords). Triggers: write the tweet, launch post, LinkedIn post, Product Hunt copy, PH tagline, maker comment, caption for the video, announcement copy. Use after the film is rendered (or when the user asks for post copy for an existing film); starts from `npx launchfilm post <slug>` and the film's BRIEF.md and STORYBOARD.md, writes out/<slug>/POST.md. Never posts anything. Not for the film's own on-screen script or VO (story).

evgenspm/launchfilm

Find launchfilm recipes (published launch films studied frame by frame and written down as text, some with ready Remotion code) and build the user's film from 1 to 3 of them. Use for "use a template", "start from a recipe", "make a 30s launch film from recipe <id>", "something like this style", "show me options", "which recipe fits a 30 s vertical launch", "remix recipe X with our brand", or when a storyboard needs a proven hook, feature beat, logo reveal or end card. Searches recipes/CATALOG.md or recipes/index.json, scores and picks 1 to 3, shows each with its source link, reads the recipe.md beat sheet, then scaffolds with `npx launchfilm new <slug> --recipe <id>`: ready code when Recipe.tsx exists, else TODO scenes built from the beat sheet with studio presets, keeping the recipe's timings, springs and sounds re-timed to the user's length and beat grid. Use reference-study to make a new recipe, story for the storyboard, scene-build for scenes, launch-film for the whole pipeline.

Habilidades Relacionadas