The page this skill built from examples/lumalto, working in your browser. Opens in a new tab. Also: Kelvane.
12-second example rendered by this skill from examples/lumalto · 1280×720
Example settingswhat each example above was built from
examples/lumaltohero.json
- Brand
- Lumalto
- Headline
- Every curve, under the glass.
- Badge
- New: Lumalto Grotesk
- Colors
- background #f4f1ea · ink #15140f · accent #e8461e
- Mode
- light
- Fonts
- Bricolage Grotesque and Inter
examples/kelvanehero.json
- Brand
- Kelvane
- Headline
- Clear, cold and a little bent.
- Badge
- Sparkling tonic, Edition 01
- Colors
- background #0e1024 · ink #f2efe6 · accent #ff7a59
- Mode
- dark
- Fonts
- Outfit and DM Sans
What you get
- A self-contained index.html hero and an embed.html to paste into an existing site
- A liquid glass lens with magnification, rim refraction, RGB dispersion, a specular rim and a drop shadow
- Four background patterns drawn in your colors: wordmark, stripes, grid and gradient bands
- 17 documented settings, from lens size and magnification to dispersion, wobble, path travel and loop length
- Pointer following on a spring, and a seamless Lissajous loop of 6 to 24 seconds for the video
- Contrast and layout checks at 390, 768, 1024 and 1440 px, plus an SVG still for reduced motion or no WebGL
- A frame-perfect MP4 (1080p by default, portrait sizes too) and a poster, the same on any machine
- Open-source licenses for every part it builds on
Good fit
- Type foundries and studios can set a new typeface or name huge in rows and let a glass lens magnify every curve.
- Drinks, fashion and beauty brands can run bold stripes in two accents under the lens for a playful, premium launch page.
- Teams preparing a launch post can record a seamless loop of 6 to 24 seconds as a 1080p video.
Not for
- Showing your product: the lens bends a drawn pattern, not a photo or 3D model
- Full landing pages below the hero (see the Landing Pages series)
- Very old devices without WebGL, which get the still picture
- Quiet, minimal brands that want nothing behind the headline
About this skill
A hero section with a round lens of liquid glass drifting over a bold composition drawn in your colors: your brand's word set huge in rows, diagonal stripes, a drafting grid or gradient bands. The lens magnifies what sits under it, bends the world outside into its rim and splits the edge into a thin red, green and blue fringe, with a bright specular rim, a glint and a soft drop shadow. It follows the pointer on a spring and stretches like a drop as it moves; left alone, it glides along a figure eight that loops seamlessly. The pattern calms down behind the copy so the words always read. Your agent puts in your colors, fonts, logo, headline and buttons, checks contrast at four widths and records a 1080p loop.
Example request
Build a Liquid Lens hero for Lumalto's new Lumalto Grotesk typeface: warm paper page, the word Lumalto set huge in black, orange, outlined and blue rows, a glass lens drifting over them, headline 'Every curve, under the glass.', and record the 12-second loop.
How it works
Your agent
- 1
Collect the brand
Every claim, price and date in the copy must come from the person.
- 2
Write hero.json
Copy the closer example and replace everything:
examples/lumalto/hero.json(light, copy on the left, a wordmark pattern, a type foundry) orexamples/kelvane/hero.json(dark, copy on the right, stripes, a sparkling tonic). - 3
Build
It lists every problem in
hero.jsonat once (missing fields, text over its limit, a setting out of range, colours that don't contrast, a pattern colour too close to the background) and writes nothing until they're fixed. - 4
Check
It loads the page at 390, 768, 1024 and 1440 px and must say
okat each: nothing wider than the screen or cut off, readable contrast for every line of text (measured against the background colour the effect is drawn on; the build has already checked the text against the pattern colours behind the copy after the quiet zone and the scrim), names on every link and button, one h1. - 5
Look at it
The first two save
out/still-1440x900.pngandout/still-390x844.png, the live lens at 3 seconds. - 6
Record the video
It steps the hero through 12 seconds at 30 fps at 1920×1080, drawing each frame at exactly its time, and writes
out/preview.mp4(H.264, for X, LinkedIn, Product Hunt or a README) andout/poster.png(the frame at 3 s). - 7
Put it live
As a page: upload
out/index.htmlandout/assets/to any static host (Cloudflare Pages, Netlify, Vercel, GitHub Pages, S3).
- 1
You get
- out/index.html
- out/embed.html
- out/still-1440x900.png
- out/still-390x844.png
- out/preview.mp4
- out/poster.png


What you need
- Node.js 18 or newer. Nothing to install.
- Chrome, Chromium or Edge, for the checks and the recording (the scripts find it; set
CHROME_PATHif they don't). - ffmpeg, for the video (
brew install ffmpeg,winget install ffmpeg,apt install ffmpeg; or setFFMPEG_PATH). - Internet access when the page is opened, for the fonts only (jsDelivr at pinned versions with integrity hashes, or Google Fonts). The effect itself is inlined: no libraries. Without the fonts, the page and the wordmark use system fonts; it still works.
Last checked Nov 1, 2026: the package’s own build and render commands ran and passed.
If something goes wrong
build: fix hero.json firstEach line names the field and what to change; colour problems suggest a colour that works.
record: the effect didn't startThe page fell back to its still picture: Chrome has no WebGL. On a server without a GPU, Chrome uses its software renderer, which the recorder enables; it is slower but works.
ffmpeg not foundInstall it or set
FFMPEG_PATHto the ffmpeg program.
What’s in the download
- SKILL.md15.3 KB
- examples/
- examples/kelvane/1.81 KBa sparkling tonic, dark, stripes, mirrored · 2 files
- examples/lumalto/2.01 KBa type foundry, light, wordmark · 2 files
- scripts/
- scripts/effect/the liquid lens itself:
effect.mjs(its settings, checks and still picture),effect.js(the pattern drawing, the refraction shader, the path and the spring),effect.css(the corner caption). - scripts/effect/effect.css502 B
- scripts/effect/effect.js17.9 KB
- scripts/effect/effect.mjs12.6 KB
- scripts/kit/the kit shared by every Motion Heroes skill: the build and checks (
build.mjs), the section's CSS (shell.css), the browser runtime (runtime.js: clock, pausing, pixel ratio, reduced motion, fallback), the recorder (record.mjs,cdp.mjs), the pinned fonts (fonts.json) andKIT.md, which explains them. - scripts/kit/build.mjs34.5 KB
- scripts/kit/cdp.mjs4.90 KB
- scripts/kit/fonts.json5.42 KB
- scripts/kit/KIT.md16.0 KB
- scripts/kit/record.mjs8.11 KB
- scripts/kit/runtime.js15.1 KB
- scripts/kit/shell.css9.41 KB
- scripts/kit/three.json6.35 KB
- scripts/build.mjs263 Bwhat you run. They call the Motion Heroes kit.
- scripts/check.mjs9.48 KBLookbk's checks, screenshots, colour maths and HTML writer.
- 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.90 KBwhere the effect comes from, and the fonts it loads.
- TESTED.json859 B
26 files · 177 KB · installs to ~/.claude/skills/liquid-lens-hero for Claude Code and ~/.agents/skills/liquid-lens-hero for other agents
Credits and licenses: NOTICE.md plus any LICENSE files inside the ZIP.
Similar Skills
View allDetails
- Output
- Animated WebGL hero · page + embed · 1080p loop
- Needs
- Node.js 18+, Chrome (or Chromium/Edge), and ffmpeg for the video
- Series
- Motion Heroes · 71 skills
- Updated
- Nov 1, 2026
- Checked
- Nov 1, 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
Does the lens follow the visitor's pointer?
Yes. On a live page it follows the pointer on a spring, with a little overshoot, and stretches along its motion like a drop. When the pointer leaves or rests for 2.5 seconds it glides back to its Lissajous path. Recordings always use the path, so every machine gives the same frames.
Which backgrounds can the lens refract?
Four patterns drawn in code in your colors: your word set huge in rows, diagonal stripes, a drafting grid with filled cells, or gradient bands with hairlines. Big letters, stripes and grid lines show the refraction best. The pattern fades behind the copy so the headline always reads.
Will it run smoothly on phones?
On a phone the lens comes first, above the words, and the runtime lowers the pixel ratio by itself on slow devices. The effect is one shader with no libraries to download. Browsers without WebGL and visitors who ask for reduced motion get a still picture instead.
Which agents is Liquid Lens Hero 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 from scratch: the background patterns, the refraction shader, the Lissajous path and pointer spring, the still, the Motion Heroes kit and the examples. It uses no libraries; one hash function is adapted from Dave Hoskins' "Hash without Sine" (MIT). 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.