Individual skill
html-explainer-video
Turn a product, a feature or an idea into a finished one-minute explainer video in any look: a script (hook, benefit, quick tutorial, try it), a voice whose words are the clock, HTML scenes drawn from that one clock and rendered frame by frame at 2×, and an edit in Fil's video editor over MCP with captions, music, sound effects and chapters. The look is an input, read from the person's site or a named style, so the same film can wear any type, colour, corners and motion. The shape is an input (4:3, 16:9, 1:1, 9:16). No camera by default: a voice-led film whose scenes fill the frame; ask for a camera and it adds record slots, layouts by keyframes and a teleprompter. Use when someone wants an explainer, a feature video, a product walkthrough, an onboarding video, a how-it-works video or a launch video, wants one in their own brand, or wants it without filming anything.
agent-skills/media/html-explainer-video/SKILL.md
Source commit 5ea1661a0e05d82b054553daaa6baf6d0233c33c
What was checked
- Matches the observed repository HEAD
- Yes
- Scanner rules are current
- Yes
- Repository scan complete
- No
- Skill scan complete
- No
- Observed behavior
- Network or broad shell
- Last checked
- Nov 9, 2026
These are observations at the recorded commit, not a guarantee of safety. Review the source before running it.
Install this skill
Choose an agent in your Stack or copy a command below. Commands fetch the pinned commit and copy only this skill directory. Existing destinations are refused. Copying a command does not install anything.
An install command is unavailable: current rules, complete repository and skill scans, an eligible behavior level and a permitted license are required.
Repository context
- Repository stars (not skill ratings)
- 7,353
- Repository last updated
- Nov 8, 2026
- License
- MIT
Observed agent integration: No specific integration evidence. Standard SKILL.md installation does not imply verified compatibility.
Files and excerpt
File metadata and permitted, redacted excerpts come from the recorded scan. Source links are pinned to that commit.
Browse files
SKILL.mdcore · 16,370 bytesSKILL.mdcore · 16,370 bytesSKILL.mdcore · 16,370 bytesSKILL.mdcore · 16,370 bytesSKILL.mdcore · 16,370 bytesSKILL.mdcore · 16,370 bytesSKILL.mdcore · 16,370 bytesagents/openai.yamlasset · 250 bytesdemo/PROMPT.mddoc · 1,458 bytesdemo/film.cssasset · 20,934 bytesdemo/film.htmlasset · 8,960 bytesdemo/film.jsruns · 21,592 bytesdemo/index.htmlasset · 4,323 bytesdemo/looks/night.cssasset · 1,380 bytesdemo/looks/paper.cssasset · 2,342 bytesdemo/looks/poster.cssasset · 2,894 bytesdemo/looks/terminal.cssasset · 2,336 bytesdemo/looks/terminal.mddoc · 1,741 bytesdemo/pictures/box.webpasset · 99,740 bytesdemo/pictures/fil.pngasset · 16,535 bytesdemo/pictures/ridge.webpasset · 64,544 bytesdemo/preview.jpgasset · 84,531 bytesdemo/script.txtdoc · 761 bytesdemo/voice.mp3asset · 901,998 bytesdemo/words.jsruns · 3,626 bytesdemo/words.jsonasset · 3,817 bytesreferences/camera.mddoc · 6,263 bytesreferences/checks.mddoc · 4,553 bytesreferences/fil-editor.mddoc · 7,091 bytesreferences/format.mddoc · 5,264 bytesreferences/looks.mddoc · 7,418 bytesreferences/sound.mddoc · 3,737 bytesscripts/check-film.mjsruns · 10,192 bytesscripts/explainer.cssasset · 6,852 bytesscripts/explainer.jsruns · 28,558 bytesscripts/preview.mjsruns · 4,039 bytesscripts/read-look.mjsruns · 13,269 bytesscripts/render.mjsruns · 8,493 bytesscripts/sfx.mjsruns · 5,790 bytesscripts/words.pyruns · 4,958 bytessounds/LICENSE.txtdoc · 1,065 bytessounds/bell_A4.mp3asset · 8,493 bytessounds/bell_C5.mp3asset · 8,109 bytessounds/bell_E5.mp3asset · 8,109 bytessounds/click-confirm_1.mp3asset · 7,725 bytessounds/click_1.mp3asset · 3,117 bytessounds/click_2.mp3asset · 3,117 bytessounds/drop_1.mp3asset · 6,189 bytessounds/hit_1.mp3asset · 5,421 bytessounds/key-return_1.mp3asset · 4,269 bytessounds/key_1.mp3asset · 4,269 bytessounds/key_2.mp3asset · 3,885 bytessounds/key_3.mp3asset · 4,653 bytessounds/kit.jsonasset · 4,750 bytessounds/land-light_1.mp3asset · 3,117 bytessounds/land_1.mp3asset · 3,885 bytessounds/land_2.mp3asset · 3,885 bytessounds/pop_1.mp3asset · 3,885 bytessounds/pop_2.mp3asset · 3,885 bytessounds/riser_1.mp3asset · 16,173 bytessounds/snap_1.mp3asset · 5,037 bytessounds/swell_1.mp3asset · 15,789 bytessounds/tick-crisp_1.mp3asset · 1,581 bytessounds/whoosh-long_1.mp3asset · 17,325 bytessounds/whoosh-short_1.mp3asset · 18,093 bytessounds/whoosh-short_2.mp3asset · 17,325 bytes
Read excerpt
# HTML Explainer Video
**HTML scenes · Fil's video editor over MCP · Playwright · ffmpeg.** A scene engine without a framework is in `scripts/explainer.js`.
An explainer is a voice with pictures cut to it. This skill writes the voice, then draws every picture in HTML from one number: the film's seconds. Each thing on screen lands on the word that names it, because its time *is* that word's time (`T.clock` is when the voice says "clock"). It looks like motion design and it's a web page, so its look, its shape and its camera are settings, not rebuilds.
**Boundary.** Use `html-demo` for a live app window on a web page (no video file). Use `html-reel` to turn an existing post, video or page into a 9:16 reel in that source's look. Use `website-to-motion-design` for a short piece with no voice. Use this skill when the deliverable is a finished explainer film, about one minute, that explains something.
**Provenance.** Extracted from seven one-minute onboarding films for Fil, 31 October to 1 November 2026. Each had a hook, a benefit, a quick tutorial with numbered headings and an ask, with scenes rendered at 2× and 60 fps and assembled in Fil's video editor. Those were locked to one dark look, one shape (4:3) and a camera slot, and built on Fil's own demo components. Here all three are inputs and nothing depends on Fil's components. The film in `demo/` is this skill's own explainer, made with it: one script, in four looks and four shapes, with the camera off or on, and no change to a scene. The rules below are what those films cost to learn.
## The mechanism
**Every frame is a pure function of one number, and every time is a word.** A scene sets everything from `t`, the film's seconds. `HTMLExplainer.times(WORDS)` names each word of the voice (`T.clock`, `T.clockEnd`, a word said again `T.look2`). A renderer calls `window.__frame(t)` once a frame and screenshots; nothing reads a clock.