reels-maker / audit de film

Les contrôles obligatoires que tout film généré par code doit passer avant d'être vu. Une passe de collision à 40 ips (aucun objet mobile ne touche un solide ou un autre mobile), des sondes de pixels (rien ne chevauche ni ne se trouve derrière un visage, une tête, un sous-titre ou le bord du cadre), puis un vérificateur indépendant (un nouvel agent) qui lit les feuilles d'images à ≥2 ips et signe. Le créateur ne signe jamais son propre film. À utiliser avant d'ENVOYER tout rendu, après chaque série de corrections, et chaque fois que quelqu'un dit « vérifie le film », « audite ça », « c'est prêt ? », ou « pourquoi cette image a l'air bizarre ».

Qu'est-ce que audit de film ?

Cette compétence définit un processus d'audit rigoureux en trois étapes pour les films générés par code (comme ceux produits par le dépôt `reels-maker`). Elle garantit qu'aucune sortie visuelle n'est livrée sans avoir passé des contrôles automatisés de collisions 3D et de positionnement des pixels à l'écran, suivis d'une validation finale par un agent indépendant. Elle est conçue pour les environnements d'agents IA comme Claude Code, Cursor, ou Codex, et peut être exécutée via des commandes Node.js. La première étape (`node tools/collide.mjs`) vérifie, à 40 images par seconde, qu'aucun objet mobile (classe AUD_M) n'entre en collision avec des objets statiques (AUD_S) ou avec d'autres mobiles. La deuxième étape (`node tools/probe.mjs`) mesure le chevauchement de boîtes englobantes sur l'écran 2D, par exemple pour détecter si un sous-titre recouvre un visage ou si un élément sort du cadre. La troisième étape fait appel à un agent fraîchement instancié (jamais le créateur) qui examine la vidéo finale rendue à ≥2 images par seconde, génère des feuilles d'images horodatées, et produit un rapport structuré (CORRIGÉ / NON CORRIGÉ / RÉGRESSION / NOUVEAU) avec une note MUS-TE / MIEUX-SI et une signature finale. L’ensemble permet de détecter en priorité des problèmes fréquents : objets traversant des têtes, véhicules qui se pénètrent, personnages hors cadre, sauts d’une image, textes masqués par des boutons, ou incohérences de logique. Chaque correction donne lieu à un ré-audit ciblé, sans rejouer toute la séquence.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/thativanng/reels-maker/tree/HEAD/skills/film-audit

Installed? Explore more Développement et programmation skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Demander à votre IA préférée

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

Documentation

audit-film : aucun film ne sort sans ces contrôles

Où se trouve le kit : exécutez chaque commande de cette compétence depuis le dossier reels-maker (le clone de github.com/thativanng/reels-maker qui contient template/ et tools/). Si le projet n'en a pas, configurez-le d'abord en suivant le SETUP.md de ce dépôt.

La règle : un film n'est transmis à la personne que lorsque (1) la passe de collision indique AUCUNE COLLISION, (2) chaque inquiétude du type « X chevauche-t-il un visage » a un nombre de pixels, et (3) un auditeur indépendant a signé sans aucun MUST-FIX ouvert. Un simple coup d'œil à 1 ips par la personne qui a construit le film n'est qu'une vérification d'esquisse, pas un barrage. Une correction en déplace d'autres (un jour, déplacer une bulle de dialogue l'a poussée hors du cadre), donc chaque série de corrections fait l'objet d'une re-vérification ciblée des zones qu'elle a touchées.

Barrière 1 · Collisions en 3D (node tools/collide.mjs)

  • La page expose window.collide(t). Elle compare les boîtes englobantes de chaque maillage dans AUD_M (ce qui bouge) contre AUD_S (ce qui est fixe), et entre eux, après avoir réduit chaque boîte de 0,03.
  • Enregistrez chaque nouveau mobile et chaque nouveau solide, sinon le contrôle ne peut pas le voir. Les boîtes lancées, les tasses portées, les cubes qui passent et les virus flottants comptent comme des mobiles.
  • Les contacts qui sont voulus (une tasse dans une main) sont exclus par leur nom, dans HELD.
  • Les maillages de moins de 0,12 unité de hauteur (décalcomanies de sol, marquages routiers, plaques fines) sont ignorés, afin qu'un objet plat ne déclenche pas une fausse alerte. Un vrai mobile fin nécessite son propre contrôle.
  • Exécutez-le à 40 ips (STEP=.025, la valeur par défaut). À 10 ips, il a manqué deux contacts d'une seule image : des boîtes lancées à travers la tête de deux personnes.
  • La sortie est une ligne par paire : de–vers s A × B profondeur (images). N'expédiez qu'avec AUCUNE COLLISION.

Barrière 2 · Pixels à l'écran (node tools/probe.mjs)

Certains défauts ne touchent jamais en 3D. Un bouchon de bouteille à 3 m derrière la tête de quelqu'un peut quand même sembler pousser dans ses cheveux. Mesurez l'écran :

node tools/probe.mjs "4.4,4.6,4.8" "D.CUPS[0]" "head"   # chevauchement d'une tasse et de la tête du héros, en pixels
node tools/probe.mjs "24.5,26" "head" "pill"           # la tête est-elle derrière le sous-titre ?
node tools/probe.mjs "3.0,3.5" "D.GUESTS[1].v.root"    # un rectangle : est-ce que cette personne est dans le cadre ?
  • Lisez overlap: [x, y] (les deux > 0 signifie qu'ils sont l'un sur l'autre), gapY, et inside (A est entièrement dans B).
  • Sur n'importe quelle page, y compris la 2D : sel:<sélecteur css> correspond à ce qu'un élément peint réellement (ses lettres, mesurées ligne par ligne, plus tout arrière-plan, bordure ou image) et safe est la zone de réserve de la plateforme (depuis window.FILM.safe). Chaque mot à l'écran doit être inside: true par rapport à safe à chaque battement :
    node tools/probe.mjs --page reels/<nom>/page.html --format 9:16 "2,6.4,10.4" "sel:.title,.line,.kicker,.handle,.cap" "safe"
    
  • Pour essayer une clé de caméra sans modifier le fichier, passez PRE (elle s'exécute avant chaque appel) : PRE="window._CK.find(k => k[0] === 23.8)[1] = window._dbg.A(72.2, 10, 31, 72, 5.2, 1.5)" node tools/probe.mjs "25,28" "head".
  • Les boîtes sont conservatrices (une boîte englobante est plus grande que la forme), donc un chevauchement de quelques px peut être en réalité clair. C'est l'auditeur qui décide du rognage.

Vérifiez chacun de ces points avec un nombre avant de faire le rendu :

  • Chaque mot, légende et logo à l'intérieur de la zone de réserve de la plateforme (safe, depuis template/formats.json). Sur les reels organiques en 9:16, c'est la bande centrale (l'application couvre le quart inférieur et le rail de boutons à droite) ; sur un reel payant, tout ce qui est au-dessus des 35 % inférieurs.
  • Tout ce qui est près d'un visage : casquettes, écrans derrière la tête (le halo), cubes qui passent, accessoires près de la bouche.
  • Le héros par rapport à la pastille de sous-titre pendant les mouvements de caméra.
  • La bulle de dialogue par rapport au bord du cadre et aux accessoires proches.
  • Personnes et véhicules par rapport au bord du cadre (≥24 px est sûr).
  • Objets volants (boîtes lancées, pièces, amas de virus) contre chaque tête qu'ils croisent.

Barrière 3 · L'auditeur indépendant

Démarrez un NOUVEL agent (jamais le créateur, jamais un qui a vu la construction) avec references/auditor-brief.md.

  • Il lit le MP4 rendu, pas la page en direct : ffmpeg -i out/film.mp4 -vf fps=2 …, puis des feuilles horodatées (tools/sheet.py).
  • ≥2 ips pour tout le film, ≥4 ips sur chaque fenêtre modifiée, image par image (30 ips) aux points de contact comme une prise ou un échange.
  • Il répond par élément : CORRIGÉ / NON CORRIGÉ / RÉGRESSION / NOUVEAU, classé MUST-FIX / MIEUX-SI, puis une ligne : SIGN-OFF ou NOT.
  • Une re-vérification après corrections est ciblée : uniquement les fenêtres que les corrections ont touchées, plus un court examen de régression. Il peut être moins coûteux de démarrer un nouvel agent que de reprendre un agent qui porte tout son historique.

Ce que les auditeurs n'arrêtaient pas de trouver (cherchez d'abord ces points)

  • Quelque chose qui touche ou est derrière une tête : un bouchon de bouteille dans les cheveux, des épingles sur une carte derrière la tête, un écran qui brille derrière la tête, un cube traversant un menton.
  • Des objets qui se traversent : des camions à travers des bâtiments et les uns à travers les autres, une camionnette garée sous un bureau.
  • Logique : un camion qui accoste par l'avant, un second camion qui double le premier, une tasse laissée au bord d'une table qui devrait tomber.
  • Personnes : deux personnes debout si proches que leurs têtes fusionnent en une seule silhouette ; quelqu'un à moitié hors du cadre.
  • Mouvement : un saut d'une seule image (téléportation), des objets qui traversent le sol en 0,1 s, le héros qui disparaît entre les scènes.
  • Texte : texte à l'intérieur d'une zone couverte par les boutons de la plateforme, chinois coupé en milieu de mot, bannière décalée par rapport à sa scène, orthographe mélangeant UK/US, un nombre que personne ne peut défendre, le sous-titre couvrant le héros.
  • Son : bruits de souffle, un signal inaudible sous la musique, des signaux qui dérivent après un battement inséré.

Individual skills in this repo

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

thativanng/reels-maker

Build and render a film, reel or animation as code. One HTML page draws any frame on demand with window.seek(t), and a headless browser renders every frame at 2x into an MP4 with sound. Use it whenever someone wants a video made with code rather than a video generator, says "make a film / reel / animated explainer / career video", "render this to MP4", "turn this page into a video", or needs the finishing steps (audio cues, loudness, colour-safe encode, phone preview). It is style-agnostic and renders 9:16, 4:5, 1:1 or 16:9. It runs after reel-intake (the brief) and reel-style (the look), builds on template/starter.html or a style pack such as voxel-walk, and passes film-audit before anything is shown to anyone.

thativanng/reels-maker

The interview before any video is built. It reads what the person already gave (source text, CV, links, brand files), then asks the rest in a few short rounds of numbered questions with a recommended answer marked, always including the format (platform, reel or video, ratio, layout, length, sound). It ends in a one-screen brief that splits "you said" from "I assumed", plus a storyboard, and builds nothing until the person says yes. Use it whenever someone asks for a reel, a video, an explainer, a career film, an animation or a "make a video about X", before film-engine or any style pack, and again when a request changes its purpose, platform or audience mid-way.

thativanng/reels-maker

Picks the look of a reel or film before it is built. It shows three genuinely different looks as stills of the same opening frame with the same words, so the person judges the look and not the content. It keeps a log of every look ever shown, so no look comes back unless asked for, and it locks one look on purpose for a series. Use it after reel-intake's brief is signed and before any test strip, whenever someone says "what should it look like", "give me options", "make it look different from last time", "it looks cheap", or starts a new reel or a new series.

thativanng/reels-maker

The voxel career-film style. A blocky 3D version of the person walks, without ever vanishing, through one scene per role. Their outfit changes as they walk, each scene rises out of the floor ahead of them, and a dark banner tracks year, company and role. Use it when someone wants their career, a journey or a "how I got here" told as a short 3D film for LinkedIn or a portfolio, says "make my career film", "turn my CV into a video", "voxel film", or wants a new chapter added to an existing one. It runs on film-engine (render, audio, finish) and must pass film-audit before anything is sent.

Skills associés