The page this skill built from examples/halden-press, working in your browser. Opens in a new tab. Also: Solvik sound.
14-second example rendered by this skill from examples/halden-press · 1280×720
Example settingswhat each example above was built from
examples/halden-presshero.json
- Brand
- Halden Press
- Headline
- Stories worth reading slowly.
- Badge
- Independent publisher · spring list
- Colors
- background #f3eee4 · ink #17130f · accent #c8402a
- Mode
- light
- Fonts
- Fraunces and Inter
examples/solvik-soundhero.json
- Brand
- Solvik Sound
- Headline
- Three nights of sound and light.
- Badge
- Three nights by the fjord · August
- Colors
- background #0c0a1a · ink #f4f1ff · accent #ff5fa2
- Mode
- dark
- Fonts
- Big Shoulders Display and Space Grotesk
What you get
- A self-contained index.html hero and an embed.html to paste into an existing site
- Two to four ribbons of your own phrases, each set letter by letter along a long, smoothly morphing curve
- Ribbons that cross over and under each other, with far parts smaller and faded toward the page
- A gentle twist that turns each band, shades it and squashes its letters, with fine rules along the edges
- Type that scrolls by whole phrase lengths per loop, so the video loops exactly
- An SVG still set with textPath for visitors whose browser can't run the effect
- Contrast and layout checks at four widths, plus a frame-exact 1080p MP4 and poster
- Open-source licenses for every part it builds on
Good fit
- Publishers, magazines and bookshops that want their categories and promises to read as moving type rather than sit in a list.
- Festivals, venues and music labels with a handful of short lines, such as dates, stages and genres, to set in bold colour.
- Fashion, streetwear and studio brands launching a campaign that needs a typographic hero and a 1080p loop for social posts.
Not for
- Long sentences or paragraphs (each phrase is up to 48 characters and reads best at two to five words)
- Photo or video backgrounds
- Logos or wordmarks that must keep their exact drawing
- Scroll-driven stories
- Fonts without a sturdy weight, which thin out when set small along a curve
About this skill
A hero where the brand's own words are the ribbons. Two to four long, smooth curves sweep across the whole hero, each one a band of colour with a short phrase set letter by letter along its centre line, repeated end to end and scrolling slowly along the path. The curves morph over the loop and roll through depth, so the ribbons cross over and under each other, with the far parts smaller and faded toward the page. A gentle twist turns each band, shades it and squashes its letters, and fine rules run along the edges. With the copy on one side, the ribbons gather above the headline and fan out across the rest. Plain Canvas 2D with no libraries, on light or dark pages, shipped as a page, a paste-in embed and a frame-exact 1080p loop.
Example request
Make our homepage hero three ribbons of our taglines in vermilion, navy and ochre, sweeping across the page and crossing over each other.
How it works
Your agent
- 1
Collect the brand
Every claim, price, date and spec in the copy and the ribbons must come from the person.
- 2
Write hero.json
Copy the closer example and replace everything:
examples/halden-press/hero.json(an independent publisher, paper-white page, vermilion, navy and ochre ribbons in a serif, copy on the left) orexamples/solvik-sound/hero.json(a music festival, near-black page, four neon ribbons in a condensed sans, copy on the right). - 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 band that would vanish into the page, letters too faint on their band) 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 (the build has already checked the text against every colour the ribbons can put behind it), names on every link and button, one h1. - 5
Look at it
They save
out/still-1440x900.pngandout/still-390x844.png, the live hero at 3 seconds. - 6
Record the video
It steps the hero through 8 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). - At runtime, nothing but a 2D canvas: the effect is inlined in the page. Fonts load from jsDelivr (the pinned list) or Google Fonts; without the network the page and the ribbons use system fonts. If the canvas can't run, visitors see the still.
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.
The phrases are hard to read
Raise
bandor a ribbon'ssize, lowertwist(it squashes the letters), lowerdepth(it shrinks the far parts), or pick a sturdier display face.Two ribbons lie on top of each other
Try another
seed, or raisespread.
What’s in the download
- SKILL.md15.3 KB
- examples/
- examples/halden-press/2.21 KBHalden Press, an independent publisher, light · 2 files
- examples/solvik-sound/2.32 KBSolvik Sound, a music festival, dark · 2 files
- scripts/
- scripts/effect/the ribbons of type:
effect.mjs(their settings, checks, the wash over the still and the still picture itself, set with SVG textPath),effect.js(the curves, the depth sort that lets ribbons cross over and under, the bands, rules and letters placed along each curve). - scripts/effect/effect.js16.6 KB
- scripts/effect/effect.mjs10.5 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), the pinned three.js catalogue (three.json, unused by this effect) 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.52 KBwhere the effect comes from, and the fonts it loads.
- TESTED.json804 B
25 files · 174 KB · installs to ~/.claude/skills/text-on-path-hero for Claude Code and ~/.agents/skills/text-on-path-hero for other agents
Credits and licenses: NOTICE.md plus any LICENSE files inside the ZIP.
Similar Skills
View allDetails
- Output
- Canvas 2D type ribbons · 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
How many phrases can it carry, and how long can they be?
Two to four ribbons, one phrase each, up to 48 characters per phrase. Each phrase repeats end to end along its curve with a separator, so two to five words read best. The build warns when a phrase is long enough that a phone shows only part of it.
Will the video loop without a jump?
Yes, if you record cycle divided by motion.speed seconds, which is 14 by default. The curves morph on that period, the type moves by whole phrase lengths per loop, and in the recording the pointer follows a closed path on the same loop. Only the copy's intro plays once at the start.
Does the text behind the headline hurt readability?
No. The ribbons pale almost to the page colour under the copy and under the bar's logo, links and button, and the build checks every line of text against the colours the ribbons can leave behind it. The check script then tests contrast and layout at 390, 768, 1024 and 1440 px.
Which agents is Text on Path 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 on a plain 2D canvas with SVG textPath for the still; it uses no third-party libraries, only pinned Fontsource fonts 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.