Communitygithub.com

evgenspm/launchfilm

Vérifie un rendu de film de lancement avant sa mise en ligne. Utilisé pour "QA la vidéo", "vérifier le rendu", "est-ce prêt à publier", "revoir le film", "pourquoi ça a l'air cheap", "vérifier les sous-titres/les zones de sécurité/le volume sonore", après chaque rendu et avant le packaging.

Qu'est-ce que launchfilm ?

Cette compétence est conçue pour les équipes de production vidéo utilisant un pipeline `launchfilm` (ou tout workflow similaire de rendu de vidéos de lancement). Elle automatise la revue de qualité (QA) d'un rendu vidéo en analysant des images clés, des planches contact, et des métriques techniques. L'agent lit le rapport automatique généré par la CLI (`npx launchfilm qa <slug>`), ouvre les planches contact et les arrêts sur image aux moments clés, puis vérifie la lisibilité du texte dans le temps, le contraste, les zones de sécurité de la plateforme, le volume sonore (−14 LUFS, −1.5 dBTP), les spécifications d'encodage ffprobe, les images noires ou figées, les coupures sur le rythme, et les 12 erreurs de débutant comme des contrôles bloquants. Il rédige un rapport `qa/<slug>/QA.md` où chaque ligne cite un fichier ou une valeur mesurée ; une vérification non effectuée est marquée `NON VÉRIFIÉ`, jamais `PASS`. L'agent peut itérer en corrigeant les problèmes via `scene-build` ou `sound`, avec une limite de deux boucles. Cette compétence est idéale pour maintenir une qualité professionnelle avant livraison finale.

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

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

film-qa

Vous vérifiez des images et des chiffres, pas des intentions. Un PASS nécessite une preuve : un chemin de fichier que vous avez ouvert ou un nombre que vous avez mesuré. Tout le reste est NON VÉRIFIÉ : <raison>. N'écrivez jamais PASS pour quelque chose que vous n'avez pas regardé ou mesuré.

Chemins (relatifs à launch-video/, ou studio/ dans le dépôt launchfilm) : source du film films/<slug>/ (film.json, STORYBOARD.md, BRIEF.md), rendus out/<slug>/, QA qa/<slug>/ (la CLI écrit report.md ; vous écrivez QA.md à côté). Indicateurs de la CLI exacts : npx launchfilm <cmd> --help. Commandes avec syntaxe testée : references/commands.md.

Procédure

  1. Passe automatique. npx launchfilm qa <slug> → lisez d'abord qa/<slug>/report.md (planches, ffprobe, volume sonore, vérifications automatiques). Copiez ses nombres mesurés dans QA.md comme preuve ; ne remesurez pas ce qu'il a mesuré.
  2. Planches. Ouvrez chaque planche contact que le rapport liste (ou npx launchfilm sheet <slug>). Lisez chaque cellule. Listez les fichiers que vous avez ouverts dans QA.md (preuve T12).
  3. Arrêts sur image. npx launchfilm still <slug> <t> --preset <id> pour chaque préréglage que le film exporte, à : chaque transition de plan
    • 6 images, chaque début de texte + maintien/2, image 0, la dernière image, et chaque intervalle que la détection d'image figée ou d'image noire signale. Plus un arrêt sur image à --scale 0.25 (480×270 pour 16:9) sur l'image du texte principal : l'aperçu de la timeline X. Lisez chaque PNG.
  4. Mesurez ce que le rapport n'a pas fait : volume sonore, crête vraie, images noires, intervalles figés, temps de coupure par rapport au rythme, contraste derrière le texte, zones de sécurité, longueurs des lignes de sous-titres. Commandes dans references/commands.md.
  5. Vérifications bloquantes T1–T12 ci-dessous, puis vérifications de livraison D1–D16. Chacune obtient PASS / ÉCHEC / NON VÉRIFIÉ + preuve + règle.
  6. Rédigez qa/<slug>/QA.md à partir de references/qa-template.md.
  7. Boucle de correction. Tout ÉCHEC : transmettez la constatation à scene-build ou sound avec les numéros d'image, refaites le rendu seulement de la plage concernée (npx remotion render … --frames=<a>-<b> ou l'équivalent CLI), revérifiez ces éléments. Maximum 2 boucles ; puis signalez les ÉCHECs restants à l'utilisateur avec les arrêts sur image joints. Ne jamais rétrograder un ÉCHEC en PASS sans nouvelle preuve.

Vérifications bloquantes : les 12 indices (métier/00)

IdCondition de passagePreuve
T1 statiqueaucun intervalle figé ≥ 0,6 s sauf le temps de stabilisation du titre final (≤ 3 s) ; chaque intervalle signalé vérifié par des arrêts sur image à son début et sa fin montrant un dérive ou un mouvementsortie freezedetect + 2 arrêts sur image par intervalle
T2 easing par défautgrep G1 (scene-build) vide dans films/<slug> ; aucune transition CSSsortie grep
T3 tout à la foischaque groupe de ≥ 3 éléments frères entre de manière décalée (états partiels visibles dans une cellule de planche ou décalage ≥ 1 image dans le code) ; entrée du groupe ≤ 24 imagesréférences de cellules de planche ou lignes de code
T4 une seule vitessefilm > 20 s a ≥ 1 rupture de rythme (silence, coupure brutale au noir, changement de palette, maintien ≥ 2× la durée médiane du plan) ; mode lancement : chaque coupure à ±2 images d'un temps fortlimites film.json vs beats.json ; coupures détectées
T5 sonchaque événement visuel de film.json a un effet sonore ou est couvert par la voix off / la musique ; la musique baisse sous la voix off ; silence réel là où prévunombre d'événements avec/sans son ; volume sonore d'une fenêtre voix off vs une fenêtre uniquement musicale
T6 texte comme étiquettetexte principal ≥ 8 % de la hauteur de l'image quand le texte est le message (déclarations 10 %) ; chaque texte se maintient ≥ 0,2 × (mots + 1) s ; ≤ 3 lignes ; sous-titres ≤ 2 lignestableau par élément
T7 aspect platmode lancement : grain + vignette présents ; un traitement nommé par section ; mode produit : filets de cheveux, ombres douces ; pas d'effet de bande dans le dégradé le plus sombre de l'arrêt sur image mp4grep + arrêt sur image du mp4
T8 mise en page webun point focal par arrêt sur image ; aucun paragraphe > 3 lignes ; pas de puces ; chrome de l'interface utilisateur uniquement là où le chrome est le pointarrêts sur image
T9 stock génériquechaque clip de métrage dans films/<slug>/footage/SOURCES.md avec source + licence ; clips de stock gradés et coupés ≤ 1,5 sSOURCES.md + arrêts sur image
T10 transitions décorativestransitions ⊂ vocabulaire ; transitions non-coupure ≤ 1 par 5 s ; blur-dissolve ≤ 12 imagesfilm.json
T11 modèle avant histoireSTORYBOARD.md a approved: ; image 0 pas noire et différente de l'arrêt sur image à 0,5 s ; catégorie de produit claire à 1,5 s (x, li) / 1 s (reel) ; récompense après le problème ; ≥ 2 s calme sur la surface de la marque à la finarrêts sur image 0, 0,5, 1,5 s, dernières 2 s
T12 jamais regardécette QA : chaque planche et arrêt sur image listé comme ouvertliste des fichiers dans QA.md

Tout ÉCHEC dans T1–T12 bloque le rendu pour livraison et le packaging.

Vérifications de livraison (par préréglage ; numérotation = métier/08#vérifications-de-livraison)

Valeurs depuis harness.config.json presets, sinon métier/10#presets. Utilisez ces identifiants exactement ; métier/08 et QA.md les partagent.

IdCondition de passage
D1vidéo h264, profil High (ffprobe de Remotion affiche 100), pix_fmt yuv420p, conteneur mp4
D2largeur × hauteur exactement celle du préréglage
D3fps constant = fps de la composition (r_frame_rate = avg_frame_rate)
D4durée = film.json ±1 image, et dans la plage de longueur du préréglage (x-16x9 ≤ 140 s, reel-9x16 ≤ 90 s)
D5audio aac LC (ffprobe de Remotion affiche 1), 48000 Hz, 2 canaux, ~192 kbps ; hero-loop : aucun flux audio
D6volume sonore intégré −14 ±1 LUFS ; crête vraie ≤ −1,5 dBTP ; voix off −16…−14 LUFS là où mesurable
D7moov avant mdat (faststart)
D8affiche = image 0 de ce préréglage existe, même taille, pas noire (YAVG > 20), montre l'accroche
D9SRT à côté du rendu pour chaque préréglage avec voix off ; mêmes phrases que les sous-titres ; HH:MM:SS,mmm ; ≤ 2 lignes ; ≥ 0,8 s chacune ; heures ±2 images
D10rien d'important (sous-titres, texte, logo, l'interface utilisée) en dehors de la zone de sécurité du préréglage (arrêt sur image en superposition)
D11sous-titres incrustés sur chaque préréglage avec voix off (hero-loop : aucun, ph-16x9 selon sa configuration) ; ≤ 2 lignes ; ≤ 42 caractères/ligne (16:9), ≤ 32 (4:5, 1:1, 9:16) ; jamais au-dessus de l'élément changeant ; contraste ≥ 4,5:1 pour les sous-titres et le texte sur les images, ≥ 3:1 accent sur fond ; lisible sur les arrêts sur image à 480 px (16:9) et 360 px (4:5, 9:16) de large
D12listes d'images figées et noires correspondent aux maintiens conçus et aux temps forts noirs uniquement (listés dans film.json ou STORYBOARD)
D13balises BT.709 ou HD non balisé ; le dégradé le plus sombre ne montre aucun nouvel effet de bande dans l'arrêt sur image mp4 par rapport au PNG
D14taille de fichier sous la limite : x ≤ 512 Mo, héros README ≤ 10 Mo
D15out/<slug>/credits.txt liste chaque actif CC BY avec sa ligne de crédit ; films/<slug>/footage/SOURCES.md complet
D16hero-loop uniquement : image N égale image 0 ; un fichier bouclé 3× ne montre aucun saut aux raccords

Lisibilité du texte dans le temps

Pour chaque élément de texte dans film.json (déclarations, sous-titres, étiquettes, texte d'interface que la voix off pointe) : mots, images d'entrée/sortie, maintien = (sortie − entrée) / fps, requis = 0,2 × (mots + 1) s. Vérifiez également sur l'arrêt sur image 480×270 que la ligne principale est toujours lisible (lettres distinguables). Une ligne par élément dans QA.md.

Règles pour le rapport

  • Chaque PASS cite une preuve : qa/<slug>/stills/x-16x9-12.30.png, I = −14,2 LUFS, grep G1 : 0 lignes.
  • Les nombres mesurés conservent les unités et l'outil qui les a produits (system ffmpeg 8.1 ebur128 ou remotion ffmpeg loudnorm). Le ffmpeg intégré de Remotion manque ebur128, signalstats, freezedetect, tile, drawbox et la sortie rawvideo : utilisez un ffmpeg système pour ceux-ci et mentionnez-le ; s'il n'en existe pas, ces éléments sont NON VÉRIFIÉS.
  • Un ÉCHEC nomme la plage d'images, la règle (métier/NN#ancre ou T#/D#) et la correction proposée.
  • Le bloc de résumé dit PRÊT seulement lorsque T1–T12 et D1–D16 sont tous PASS (D16 uniquement pour hero-loop) (NON VÉRIFIÉ compte comme non prêt, avec raison).

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.

Skills associés