design-video-render — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited design-video-render (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Les "vidéos" produites par Claude Design sont des animations HTML/React, pas des fichiers vidéo. Ce skill les rend hors-ligne et les encode en MP4 déterministe (frame-accurate), sans la barre de lecture ni le letterboxing.
Déclencher quand l'utilisateur demande de :
.mp4Promo.jsx (carré) ou un promo.html modulaire (vertical)render.html autonome qui :data-capture-canvas (on screenshote exactement cet élément, taille pixel exacte) ;window.__seek(t) (un React.useEffect injecté dans le Stage) pour piloter l'animation image par image.render.html, attend window.__seek + les polices (document.fonts.ready), puis pour chaque frame appelle __seek(t), attend 2× requestAnimationFrame, et screenshote [data-capture-canvas]. 30 fps. Sort des PNG dans _render/frames/.ffmpeg-static assemble les PNG : -c:v libx264 -pix_fmt yuv420p -crf 18 -movflags +faststart._ds/<id>/styles.css et la source du composant).scripts/ de ce skill dans la racine de l'export, en le renommant `_render/`. cd _render && npm install
cd .. && node _render/build.js && node _render/render.js && node _render/encode.jsnode_modules peut être supprimé par le ménage de Downloads → réinstaller (npm i). Chromium reste en cache ~/.cache/puppeteer, donc la réinstallation est rapide.
*.dc.html (système <x-dc> / <x-import> via support.js), mais le composant `Promo.jsx` est AUTONOME (moteur + scènes, expose window.VideoRoot).DUR / width / height définis dans Promo.jsx. Icônes/SVG inline → ni animations.jsx ni support.js nécessaires.build.js → SOURCE='Promo.jsx', ROOT_GLOBAL='VideoRoot' ; render.js → W=1080,H=1080, TOTAL = la valeur DUR.video/ avec promo.html modulaire + jsx séparés (icons.js, animations.jsx, promo-parts.jsx, promo-scenes.jsx). Format 1080×1920. TOTAL dans promo.html.<script type="text/babel"> casse hors-ligne (window.HEC undefined) → précompiler chaque .jsx avec @babel/standalone, chaque fichier dans sa propre IIFE (sinon collision const Stage), puis assembler en un seul render.html à scripts ordonnés. Le composant Seeker (qui expose __seek) est déjà présent dans cet export.render.js → W=1080,H=1920, TOTAL = la valeur dans promo.html. build.js doit être adapté à l'assemblage multi-fichiers (cette variante n'est pas couverte telle quelle par le build.js par défaut). autonome** : ses polices/assets pointent vers des IDs opaques résolus uniquement par claude.ai → ne rend pas hors claude.ai. Toujours partir de la source modulaire / du Promo.jsx`.scale = 1 du Stage et un rendu 1:1.Voir README.md pour les commandes npm. Scripts : scripts/build.js, scripts/render.js, scripts/encode.js.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.