hyperframes (heygen-com/hyperframes)
Crée, modifie, anime et rend des vidéos HyperFrames, du film de lancement à l'explication en passant par graphiques et sous-titres.
skill HyperFrames : même qualité vidéo que sans skill, mais 1.9 fois les tokens et une structure de projet plus facile à modifier
Codex CLI · gpt-6-astra
19.9 / 30
Gain par rapport à sans skill : -0.01 · Selon les cas · 18 exécutions
Selon les cas : le total 19.9/30 est inférieur à 22 et le gain -0.01 est inférieur à +1.0. Pour être recommandé, il faut un total de 22/30, une qualité de sortie de 3.5 et un gain de +1.0.
SOTA
RéussiTesté avec Codex.
Couvre Codex, Claude Code
Codex CLI 0.166 (palier SOTA) : 18 exécutions notées. Une réussite ici couvre aussi Claude Code selon notre règle de palier ; elle ne dit rien du second palier.
Scores
Chaque dimension va de 0 à 5 et les six forment le total sur 30. 5 est la meilleure note dans chaque dimension. Coût 5 signifie bon marché et rapide. Installation 5 signifie facile.
- Fiabilité du déclenchement
- 5.0
- Gain par rapport à sans skill
- 2.0
- Qualité de sortie
- 4.9
- Coût en tokens et en temps
- 2.0
- Installation et portabilité
- 3.0
- Sécurité
- 3.0
Revue de sécurité
PrudenceScan statique : 27 CRITIQUE / 26 ÉLEVÉ / 88 MOYEN. Revue manuelle : sûr à exécuter (bac à sable sans réseau). Un scan propre ne prouve pas qu'un skill est sûr.
Installer
npx skills@latest add heygen-com/hyperframes --skill hyperframes
Commit épinglé: af0d68d612ebd9c419f27d9ebc8068512667bae4
Testé: 2026-11-02
Ce que nous avons testé
- Teaser produit de 15 s — Dans ce projet HyperFrames (composition racine index.html, timeline GSAP, rendu par npx hyperframes render), construisez un teaser produit de 15 secondes, 1920x1080, 30 fps pour Tidepool, un abonnement mensuel de snacks aux algues. Texte à l'écran obligatoire : le nom « Tidepool »,…
- Explainer animé de 20 s avec graphique en barres — Dans ce projet HyperFrames (composition racine index.html, timeline GSAP, rendu par npx hyperframes render), construisez un explainer animé de 20 secondes, 1920x1080, 30 fps : un graphique en barres du chiffre d'affaires mensuel (août $42k, sept. $58k, oct. $71k). Titre « Revenue, last 3 months…
- Short vertical de 30 s avec sous-titres incrustés — Dans ce projet HyperFrames (composition racine index.html, timeline GSAP, rendu par npx hyperframes render), construisez un short social vertical de 30 secondes, 1080x1920, 30 fps avec des sous-titres incrustés. Les sous-titres, dans l'ordre, chacun à l'écran environ 5 secondes à partir de…
Points forts
- Le skill a été détecté sans être nommé : son fichier a été lu dans 6/6 exécutions avec skill.
- Qualité absolue élevée avec le skill : 4.89 sur 5.
Points faibles
- Aucun gain mesurable par rapport à sans skill (-0.01, dans le bruit).
- Un prompt d'une phrase obtient 4.91, contre 4.89 avec le skill (-0.01).
- Consomme 1.95 fois plus de tokens que sans skill.
- Le contrôle atteint déjà 4.9 : effet plafond, le test ne peut donc pas montrer de gain.
- Réserve de test : note uniquement les consignes du skill : la boucle de la CLI hyperframes (vérification, aperçu, rendu) n'était pas disponible dans le bac à sable. La CLI est un paquet npm distinct que nous n'avons ni audité ni exécuté, et qui envoie des données de télémétrie d'usage sauf désactivation. Les skills frères hyperframes-core et hyperframes-animation ont été testés au commit plus ancien 207c8a4 ; celui-ci à af0d68d.
- n=2 par tâche et par bras ; les écarts inférieurs à environ 1 point sont du bruit.
Avis
Codex CLI 0.166 (gpt-6-astra, low reasoning) sur un Mac de test, un projet temporaire neuf et des HOME/TMPDIR/caches temporaires à chaque exécution, skill installé (traitement) ou absent (contrôle) ou absent avec l'exigence centrale du skill compressée en une phrase ajoutée au prompt (groupe « prompt d'une phrase »), 2 exécutions par groupe et par tâche, réseau coupé, écritures dans /tmp bloquées. Les prompts ne mentionnent jamais le skill (sauf la formulation indiquée ci-dessous). Environnement : le modèle de projet (index.html avec la balise de script GSAP, les métadonnées de composition) est le même pour tous les groupes. Le bac à sable n'a ni réseau ni CLI HyperFrames, donc aucun groupe n'a pu lancer check, snapshot ou render ; ils ont seulement écrit la source. Nous avons ensuite rendu chaque projet sur une machine hors ligne séparée avec HyperFrames 0.8.226 épinglé (qualité draft). Cela teste le texte du skill, pas sa boucle CLI.
Comparaison à trois bras
| Bras | Score moyen (0-5) | Tokens par exécution |
|---|---|---|
| Sans le skill | 4.9 | 128k |
| Prompt d'une phrase | 4.91 | 150k |
| Avec le skill | 4.89 | 249k |
Mesuré avec Codex CLI sur 18 exécutions, noté par des contrôles basés sur des règles, sans juge LLM. Total 19.9 / 30, verdict Selon les cas.
Divulgation : note uniquement les consignes du skill : la boucle de la CLI hyperframes (vérification, aperçu, rendu) n'était pas disponible dans le bac à sable. La CLI est un paquet npm distinct que nous n'avons ni audité ni exécuté, et qui envoie des données de télémétrie d'usage sauf désactivation. Les skills frères hyperframes-core et hyperframes-animation ont été testés au commit plus ancien 207c8a4 ; celui-ci à af0d68d.
Verdict : selon les cas (19.9 / 30). Source : heygen-com/hyperframes, skills/hyperframes, épinglé au commit af0d68d. Installation : npx skills@latest add heygen-com/hyperframes --skill hyperframes. Licence : Apache-2.0.
Présentation
Le skill hyperframes de heygen-com/hyperframes (Apache-2.0) : un SKILL.md de 1 100 mots, environ 25 fichiers de référence et quelques scripts utilitaires, pour fabriquer des vidéos sous forme de HTML rendu en MP4 en parcourant image par image une timeline GSAP mise en pause. Il impose un contrat de rendu en 12 règles (chaque élément temporisé est class="clip" avec data-start/data-duration, une seule timeline en pause enregistrée sur window.__timelines, rien de non déterministe), une structure éditable (une scène par sous-composition) et une boucle de travail articulée autour de la CLI npx hyperframes (check, snapshot, preview, render).
Notre méthode de test
Codex CLI 0.166 (gpt-6-astra, raisonnement faible) sur une machine de test Mac, un projet temporaire neuf et des HOME/TMPDIR/caches temporaires à chaque exécution, skill installé (groupe traité) ou absent (groupe témoin), ou absent avec l'exigence centrale du skill compressée en une phrase ajoutée au prompt (groupe « une phrase »), 2 exécutions par groupe et par tâche, réseau coupé, écritures dans /tmp bloquées. Les prompts ne mentionnent jamais le skill (sauf la formulation indiquée ci-dessous).
Environnement : le modèle de projet (index.html avec la balise de script GSAP, les métadonnées de composition) est le même pour tous les groupes. La sandbox n'a ni réseau ni CLI HyperFrames, donc aucun groupe n'a pu exécuter check, snapshot ou render ; ils ont seulement écrit le source. Nous avons ensuite rendu chaque projet sur une machine hors ligne séparée avec HyperFrames 0.8.226 épinglé (qualité brouillon). Cela teste le texte du skill, pas sa boucle CLI.
- Teaser produit de 15 s — Dans ce projet HyperFrames (composition racine index.html, timeline GSAP, rendu par
npx hyperframes render), construisez un teaser produit de 15 secondes, 1920x1080, 30 fps pour Tidepool, un abonnement mensuel à des snacks aux algues. Texte à l'écran obligatoire : le nom « Tidepool »,… - Explication animée en graphique à barres de 20 s — Dans ce projet HyperFrames (composition racine index.html, timeline GSAP, rendu par
npx hyperframes render), construisez une explication animée de 20 secondes, 1920x1080, 30 fps : un graphique à barres du chiffre d'affaires mensuel (Aug $42k, Sep $58k, Oct $71k). Titre « Revenue, last 3 months… » - Short vertical sous-titré de 30 s — Dans ce projet HyperFrames (composition racine index.html, timeline GSAP, rendu par
npx hyperframes render), construisez un short social vertical de 30 secondes, 1080x1920, 30 fps, avec des sous-titres incrustés. Les sous-titres, dans l'ordre, chacun à l'écran environ 5 secondes à partir de…
Le scoring est programmatique (tests cachés / rappel des anomalies introduites / vérifications de contraintes / rendu + OCR le cas échéant), 0–5 par exécution. Aucun juge LLM n'a décidé d'un seul score.
Résultats
Le prompt d'une phrase donné au troisième groupe : « Construisez-la comme une composition HTML HyperFrames : une racine avec data-composition-id/data-width/data-height/data-duration, chaque élément temporisé doté de class="clip" plus data-start et data-duration en secondes, une seule timeline GSAP en pause enregistrée sous window.__timelines["<composition-id>"], et rien de non déterministe (pas de Date.now(), de Math.random() non amorcé, de timers, de réseau ni de repeat:-1). »
| Tâche | Score témoin | Une phrase | Avec le skill | Tokens témoins | Tokens (une phrase) | Tokens avec le skill | Skill lu |
|---|---|---|---|---|---|---|---|
| t1-teaser | 5.0 | 5.0 | 4.97 | 140k | 173k | 364k | 2/2 |
| t2-chart | 4.71 | 4.72 | 4.71 | 125k | 116k | 184k | 2/2 |
| t3-vertical | 5.0 | 5.0 | 5.0 | 117k | 158k | 197k | 2/2 |
Score moyen : 4.9 sans contre 4.89 avec le skill (delta -0.01). Tokens par exécution : 128k contre 249k (1.95x) ; temps 154s contre 208s. Groupe « une phrase » : 4.91 (gain du skill sur le prompt d'une phrase : -0.01 ; gain du prompt d'une phrase sur l'absence de skill : +0.0) ; 150k tokens par exécution pour le prompt d'une phrase, donc le skill coûte 1.67x ce prompt.
Ce qui s'est passé
- La qualité vidéo était la même. Les 18 projets ont été rendus à la bonne taille, la bonne durée et la bonne fréquence d'images du premier coup, et le texte requis (nom, accroche, $14 / box, phrase de clôture, sous-titres) a été détecté à l'écran par OCR dans chaque exécution qui aurait dû le contenir. Score moyen 4.90 sans le skill, 4.91 avec seulement la version en une ligne de ses règles, 4.89 avec le skill. Les seuls points perdus, dans les trois groupes, viennent de l'explication en graphique à barres qui reste immobile pendant de longs passages (images avec du mouvement : 15-23%).
- La version en une ligne a fait aussi bien que le skill. Donner à l'agent témoin une seule phrase du contrat (classe clip, data-start/data-duration, une timeline en pause, aucun code non déterministe) a produit les mêmes scores et le même rendu : nous avons examiné les planches-contacts du teaser, du graphique et du short vertical des trois groupes sans pouvoir les classer par qualité.
- Le skill est lu à chaque fois (6/6 exécutions avec le skill) mais il change la façon dont le projet est construit, pas son apparence. Les 6 exécutions avec le skill ont découpé le film en sous-compositions (compositions/*.html, une par scène) comme le demande sa section « keep it editable » ; aucune des 12 exécutions sans le skill ne l'a fait. Le marquage des éléments temporisés en
clips variait selon le groupe, pas selon le skill : les exécutions sans skill en utilisaient 0 à 6 par projet, celles avec le skill 1 à 9, et celles avec le prompt d'une phrase 3 à 25. C'est la partie du skill qui compte si quelqu'un doit ensuite ouvrir le projet dans HyperFrames Studio, et elle n'est pas notée ici. - Il coûte cher. 249k tokens par exécution contre 128k sans le skill (1.94x) et 150k avec le prompt d'une phrase (1.66x), 15 commandes par exécution contre 8, et environ 35% de temps en plus. L'agent lit d'abord SKILL.md et plusieurs fichiers de référence, et en mode autonome il écrit encore
SPEC.md,REVIEW.mdet un README que personne n'a demandé (4.7 fichiers par exécution contre 1). - Une partie du skill n'a pas pu tourner. La boucle de SKILL.md est check, snapshot, review, puis render ; faute de CLI, les agents se rabattaient sur des fichiers REVIEW.md écrits à la main. Une installation où la CLI fonctionne pourrait donner un résultat différent et rattraper des erreurs que les projets de cette première passe n'avaient pas.
Scores par dimension
| Dimension | Score | Pourquoi |
|---|---|---|
| 1_output_quality | 4.89 | Score moyen de 4.89/5 avec le skill (vérifications programmatiques, voir le tableau par tâche). |
| 2_lift_vs_no_skill | 1.99 | -0.01 point contre 4.90 sans le skill (n=2 par tâche ; en dessous d'environ 1 point, c'est du bruit). |
| 3_trigger | 5.0 | Fichier du skill lu dans 6/6 exécutions avec le skill. |
| 4_instructions_portability | 3 | S'appuie sur la CLI |
| 5_efficiency | 2 | 1.95x de tokens (249k contre 128k par exécution) et 1.35x de temps (208s contre 154s). |
| 6_safety_hygiene | 3 | Textes et scripts examinés : seules des occurrences documentaires de |
Limites de ce test
- La boucle CLI (check, snapshot, preview, render) n'était pas disponible dans la sandbox, donc ce test ne note que les consignes du skill ; sa prémisse même est que la CLI ferme la boucle.
- Trois tâches : un teaser produit, un graphique à trois barres et un short vertical sous-titré, tous dessinés en code. Les séquences vidéo, l'audio, les cartes, les blocs du registre et les fonctions média basées sur HeyGen n'ont pas été testés.
- Rendus en qualité brouillon sur une machine Linux ; la vérification du mouvement repose sur un seuil grossier de différence entre images, et la même tâche de graphique perd des points dans tous les groupes.
- Les comptages structurels (sous-compositions, éléments clip) proviennent de la lecture des fichiers source et ne font pas partie du score sur 0-30.
- La licence est Apache-2.0, mais la CLI sur laquelle repose le skill est un paquet npm séparé que nous n'avons pas audité ni exécuté sur la machine de test ; elle envoie de la télémétrie d'usage sauf désactivation.
- n = 2 par groupe et par tâche : les différences inférieures à environ 1 point relèvent du bruit.
- Le scoring basé sur des règles mesure ce que les vérifications peuvent voir ; il ne peut juger du goût ni du caractère optimal d'un résultat.
Sécurité
Voir security.md. Scan : 27 CRITICAL / 26 HIGH / 88 MEDIUM. Verdict : sûr à exécuter (sandbox sans réseau). Un scan propre ne prouve pas qu'un skill est sûr.
En résumé
Pour des vidéos ponctuelles dessinées en code dans cette sandbox, le skill n'a pas amélioré les vidéos et a coûté environ le double de tokens ; une phrase de son contrat a fait le même travail. Son intérêt réside dans la structure du projet (une scène par sous-composition, des clips marqués) pour ceux qui continueront à éditer dans HyperFrames Studio, et dans la boucle CLI que nous n'avons pas pu exercer. Installez-le si vous travaillez régulièrement dans HyperFrames ; passez votre chemin pour des rendus jetables rapides.
Transcription
Journal d'exécution : hyperframes (Codex CLI, network off, per-run temp HOME/TMPDIR, one row per graded run.) Colonnes : tâche, groupe-exécution, score (0-5), tokens, secondes, vérifications réussies, fichiers de la skill ouverts par l'agent. t1-teaser control-1: score 5.0, tokens 158742, s 258.0, vérifications 5/5, rien ouvert t1-teaser control-2: score 5.0, tokens 122491, s 163.4, vérifications 5/5, rien ouvert t1-teaser oneliner-1: score 5.0, tokens 194827, s 274.5, vérifications 5/5, rien ouvert t1-teaser oneliner-2: score 5.0, tokens 151350, s 215.4, vérifications 5/5, rien ouvert t1-teaser treatment-1: score 4.94, tokens 359882, s 360.9, vérifications 5/5, ouvert hyperframes t1-teaser treatment-2: score 5.0, tokens 370088, s 251.3, vérifications 5/5, ouvert hyperframes t2-chart control-1: score 4.73, tokens 159545, s 126.0, vérifications 4/5, rien ouvert t2-chart control-2: score 4.69, tokens 91764, s 107.4, vérifications 4/5, rien ouvert t2-chart oneliner-1: score 4.74, tokens 118117, s 146.0, vérifications 4/5, rien ouvert
18 exécutions, 21 artefacts
Exemple de sortie
SOTA · With the skill: compositions/arrival.html (t1-teaser, run 1, Codex)
<template> <style>*{box-sizing:border-box}#root{position:absolute;inset:0;font-family:Arial,Helvetica,sans-serif;color:#173E32}.stage,.artboard{position:absolute;inset:0;width:1920px;height:1080px;overflow:hidden}.artboard{background:#F5F0DF}h1,h2,p{margin:0}.eyebrow{font-size:24px;font-weight:700;letter-spacing:4px;text-transform:uppercase}.rule{height:2px;background:currentColor;opacity:.3}.pouch{position:absolute;width:470px;height:650px}.pouch svg{width:100%;height:100%}.wipe{position:absolute;z-index:20}.serial{position:absolute;left:192px;top:930px;font-size:22px;letter-spacing:3px}.wordmark{font-weight:900;letter-spacing:-8px}.chip{position:absolute;width:400px;height:472px}.chip svg{width:100%;height:100%} </style> <div id="root" data-composition-id="arrival" data-width="1920" data-height="1080" data-duration="5"> <div id="arrival-stage" class="clip stage" data-start="0" data-duration="5" data-track-index="0" data-track-kind="graphics"><div class="artboard"> <svg id="arrival-rings" width="1920" height="1080" style="position:absolute" aria-hidden="true"><g fill="none" stroke="#173E32" stroke-width="2" opacity=".16"><ellipse cx="1450" cy="530" rx="335" ry="335"/><ellipse cx="1450" cy="530" rx="445" ry="445"/><ellipse cx="1450" cy="530" rx="560" ry="560"/></g></svg> <div id="arrival-kicker" class="eyebrow" style="position:absolute;left:192px;top:202px">Meet your monthly ocean fix</div> <div style="position:absolute;left:192px;top:299px;overflow:hidden;width:1000px;height:220px"><h1 id="arrival-title" class="wordmark" data-var-text="brand" style="font-size:192px;line-height:1.1">Tidepool</h1></div> <p id="arrival-copy" data-var-text="tagline" style="position:absolute;left:194px;top:555px;width:820px;font-size:48px;line-height:1.25;letter-spacing:-1px">Crisp seaweed snacks, delivered monthly</p> <div id="arrival-rule" class="rule" style="position:absolute;left:194px;top:750px;width:710px"></div> <p id="arrival-note" style="position:absolute;left:194px;top:785px;font-size:24px;letter-spacing:2px">FROM THE SEA. TO YOUR SNACK DRAWER.</p> <div id="arrival-pouch" class="pouch" style="left:1190px;top:201px"><svg viewBox="0 0 470 650" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="Illustrated Tidepool seaweed snack pouch"><defs><linearGradient id="a-foil" x1="0" x2="1"><stop stop-color="#BACA99"/><stop offset=".12" stop-color="#E3E8BC"/><stop offset=".7" stop-color="#D7DFAE"/><stop offset="1" stop-color="#AABA8C"/></linearGradient><pattern id="a-seal" width="8" height="8" patternUnits="userSpaceOnUse"><path d="M0 0V8" stroke="#173E32" opacity=".2" stroke-width="2"/></pattern></defs><path d="M40 15Q235 0 430 15L420 68Q436 350 445 605Q235 640 25 605L48 68Z" fill="url(#a-foil)" stroke="#173E32" stroke-width="3"/><path d="M40 15Q235 0 430 15L425 50H44Z" fill="url(#a-seal)"/><path d="M30 580Q235 600 441 580L445 605Q235 640 25 605Z" fill="url(#a-seal)"/><path d="M48 68H420" stroke="#173E32" stroke-width="3" opacity=".4"/><path d="M64 82L47 565M405 80L423 564" stroke="#FFFBE2" stroke-width="4" opacity=".6"/><text x="235" y="157" text-anchor="middle" fill="#173E32" font-family="Arial, sans-serif" font-size="71" font-weight="900" letter-spacin [... excerpt: first 3200 of 5490 characters]