The page this skill built from examples/thale, working in your browser. Opens in a new tab. Also: .
12-second example rendered by this skill from examples/thale · 1280×720
Example settingswhat each example above was built from
examples/thalehero.json
- Brand
- Thale Optical
- Headline
- MADE FOR LOW LIGHT.
- Colors
- background #121213 · ink #efe9dc · accent #d9a35c · plate #121213
- Mode
- dark
- Fonts
- Jost and IBM Plex Sans
examples/cortehero.json
- Brand
- Corte Lenta
- Headline
- NOON IN THE COOL COURT.
- Colors
- background #efe8dc · ink #1d1a16 · accent #a8442a · plate #efe8dc
- Mode
- light
- Fonts
- Fraunces and Instrument Sans
What you get
- A self-contained index.html and a paste-in embed.html
- A 12 s loop of the aperture ring clicking between f/22, f/1.4 and f/4, with holds
- The iris centred and sized from the counter of an O in your headline
- A printed f-number scale and a pointer that turns the ring on a live page
- Two scenes: a pier with lanterns at night and a stone courtyard with a fountain at noon
- A baked still picture for reduced motion and when WebGL is missing
- A 1080p MP4 of the loop and stills from record.mjs
- Open-source licenses for every part it builds on
Good fit
- Camera and lens makers, photographers and studios who want the product's own mechanism to be the hero.
- Cafes, hotels and venues with a place worth looking at, shown sharp stopped down and soft wide open.
- Brands about seeing clearly or letting the light in, from eyewear to architecture, with a headline that has an O.
Not for
- Headlines without a round O in them
- Pages that need a photo or video of the real product behind the type
- Scroll-driven stories
- Long headlines of more than 3 short lines
About this skill
A website hero seen through a real lens iris whose aperture lives in the headline. 9 curved black blades turn on their own pins, and the opening, round wide open and a sharp 9-sided window stopped down, sits in the counter of an O. At f/22 it fits inside the letter, with the scene's lights burst into 18-point stars; as the aperture ring clicks open, the scene pours out of the O and floods the frame, brighter and shallow, its lights melted into soft discs in the iris's own shape. The ring clicks to a different stop, holds and returns in one 12 s loop, and the pointer turns it on a live page. Two scenes ship: a pier with lanterns at night and a stone cloister with a fountain at noon.
Example request
Build a hero where a real 9-blade lens iris sits in the O of the headline and clicks open until the scene floods the frame.
How it works
Your agent
- 1
Collect the brand and the words
Name and a logo (
.svg) or a monogram. - 2
Write hero.json
Copy
examples/thale/hero.json(the pier at night, lockup, dark) orexamples/corte/hero.json(the courtyard at noon, editorial, light) and replace everything. - 3
Build, check, look, record
Take stills only from inside a hold: the page lists them as
window.__apertureHolds(for22 1.4 4: 0 to 2.4 s, 4.32 to 7 s, 7.96 to 10 s, 11.2 to 12 s). - 4
Put it live
Upload
index.htmlwith itsassets/folder, or pasteembed.htmlinto your page and copyassets/next to it (the still picture lives there).
- 1
You get
- index.html
- embed.html


What you need
- Node.js 18 or newer. Nothing to install.
- Chrome, Chromium or Edge, for the checks and the recording (set
CHROME_PATHif it isn't found). - ffmpeg, for the video (or set
FFMPEG_PATH). - Internet access when the page is opened, for the fonts (pinned with integrity hashes).
Last checked Nov 8, 2026: the package’s own build and render commands ran and passed.
If something goes wrong
The page shows the plain headline over a picture of the scene
WebGL2 isn't available; the baked still and the real headline stay. Rebake it with
node scripts/effect/bake.mjs out/index.html scripts/effect/stills/aperture-pier.jpgafter changing a scene.The iris isn't in the O you wanted
Name the word in
effect.word; the first O of that word holds it.The build stops on
effect.sceneThe pier needs a dark theme and the courtyard a light one, because the guard and the letters' colours depend on it.
What’s in the download
- SKILL.md9.82 KB
- examples/
- examples/corte/1.61 KBthe cloister cafe, the courtyard at noon (light, editorial). · 2 files
- examples/thale/1.45 KBthe lens maker, the pier at night (dark, lockup). · 2 files
- scripts/
- scripts/effect/
- scripts/effect/bake.mjs1.94 KBbakes the still pictures from a built page.
- scripts/effect/effect.js50.6 KBthe iris on its pins, the two scenes, the lights and their bokeh, the loop and the ring under the pointer, the letters and the scale, and the legibility check (WebGL2).
- scripts/effect/effect.mjs5.79 KBthe settings, the build checks, the guaranteed type grounds and the still picture.
- scripts/kit/the Motion Heroes kit v2, unchanged (see
KIT.md). - scripts/kit/build.mjs47.4 KB
- scripts/kit/cdp.mjs5.07 KB
- scripts/kit/check.mjs15.7 KB
- scripts/kit/fonts.json5.42 KB
- scripts/kit/KIT.md13.7 KB
- scripts/kit/record.mjs8.11 KB
- scripts/kit/runtime.js22.5 KB
- scripts/kit/shell.css18.7 KB
- scripts/kit/three.json6.35 KB
- scripts/build.mjs263 Bthe entry points the buyer runs.
- scripts/check.mjs179 B
- scripts/chrome.mjs3.63 KB
- scripts/color.mjs1.40 KB
- scripts/inline.mjs1.67 KB
- scripts/markup.mjs6.15 KB
- scripts/record.mjs255 B
- scripts/screenshot.mjs1.79 KB
- NOTICE.md1.32 KB
- TESTED.json962 B
27 files · 232 KB · installs to ~/.claude/skills/aperture-reveal-hero for Claude Code and ~/.agents/skills/aperture-reveal-hero for other agents
Credits and licenses: NOTICE.md plus any LICENSE files inside the ZIP.
Similar Skills
View allDetails
- Output
- Lens iris in the headline's O · page + embed · 1080p loop
- Needs
- Node.js 18+, Chrome (or Chromium/Edge), and ffmpeg for the video
- Series
- Motion Heroes · 87 skills
- Updated
- Nov 8, 2026
- Checked
- Nov 8, 2026: its own commands ran and passed. That is a working check, not a security audit.
Written for
See all 31 agents that read skill folders.
Install guides
For your agent
Generates with
Installed it? Tell others how it went. Reviews come from people who installed this skill.
Write a reviewFAQ
How does the iris find the O?
The effect reads the headline's measured layout, finds the first O of the word you name in effect.word, scans the drawn letter for its counter and centres the iris there. At f/22 the opening is a little smaller than the counter, so a ring of blade shows inside the letter.
Can I change which stops the loop clicks through?
Yes. effect.loop takes 3 f-numbers from the ring, like 22 1.4 4: the stop at frame 0, the stop it clicks to, and a different stop before it returns. The whole loop is 12 s and the recording's last frame meets its first.
What happens without WebGL?
The page shows a baked still picture of the scene from the package's stills folder, with the real headline over it in your theme's ink. Reduced motion shows the first frame of the loop and stays still.
Which agents is Aperture Reveal written for?
Any agent that reads SKILL.md folders, including Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI and OpenCode.
Do I own what I make with it?
Yes. Everything your agent makes with this skill is yours, including for client and commercial work.
What if it doesn’t work for me?
Email support@lookbk.dev within 7 days of buying and we’ll fix it or refund you.
Credits and licensesWritten by Lookbk
Lookbk wrote this package, including the Motion Heroes kit v2, the iris, both scenes and the stills, with no third-party library; fonts load from pinned Fontsource packages under the SIL Open Font License 1.1. Written by Lookbk, no third-party code.
Credits and licenses for the open-source software and fonts it uses are in NOTICE.md inside the download.