Claude skill
A self-contained WebGL component that coils your images and video around a vertical cylinder. Idle drift, scroll scrub, and pointer drag add together. Hover zooms a tile, and a click opens it. It drops into any project in three steps.
The component running live. Scroll to spin it, drag to explore, and click a tile to open that project.
A self-contained WebGL component that arranges images and video as planes coiled around a vertical cylinder. Three motion sources add together: a gentle idle drift, scroll scrub, and pointer drag. A custom shader gives every plane rounded corners, a cover-fit crop, and a blurred back face.
It was generalized out of a production build, so there are no hardcoded IDs or media paths left in it. Integration is three steps: copy three files in, give a container a real height, and call it with your media array. Three.js is bundled, so there’s nothing to install.
This is for anyone with a body of visual work and nowhere interesting to put it.
A media gallery is the most-built and least-loved component on the web, and the interesting versions are almost never reusable.
The download is a finished component with its dependency bundled, plus a demo that proves it works before you wire anything in.
| Step | What happens |
|---|---|
| Copy the engine in | Three files, kept together |
| Add a container with real height | The one integration gotcha, handled up front |
| Initialize with your media | One call, one array |
| Open the bundled demo first | Confirm it works before wiring your own media in |
| Tune the coil | Shape, speed, and colour, from a documented option table |
| Add scroll-scrub if you want it | Optional, and feature-detected |
The component is opinionated where it needs to be and configurable everywhere else, so it can carry a brand without being rebuilt.
It’s one WebGL canvas with a bundled dependency and a deliberate mobile strategy.
A gallery that people play with is a gallery people remember.
Worth knowing before you download it.
The component as it runs on this site, captured live at both sizes.


This is for anyone with a body of visual work and nowhere interesting to put it. The “Who this skill is for” section above lists the three cases it fits best.
A Claude skill: the full method, plus the scripts and reference material it needs. It installs into your own Claude Code setup and runs there, so it never sends anything about your project to me. You can also take just the SKILL.md if you want to read the method before installing it.
Yes. The zip and the raw SKILL.md are both free downloads. You just need a free account so the downloads can be tracked.
It’s almost always a zero-height container. The canvas fills its container, so if the container has no height, the canvas is zero pixels tall and you see nothing. Give it a real height and clip overflow. The skill calls this out as the number one integration gotcha.
Yes. It’s a plain ES module with no framework requirement, and the customization reference covers React, Next, and Vue integration specifically. Three.js is bundled, so there’s no dependency to add.
Every step in the sidebar and the overview table is part of how this skill runs. There are 6 of them, and the “Skill steps” panel beside the article describes each one. Expand any row to read what it does.
That’s the intended path. Nothing ships as is. I rebuild it around your brand, your copy, and your goals. Start a project and tell me what you’re building.
Spiral Gallery ships as a Claude skill: one download with the whole method inside it. Install it, point Claude at it, and build.
Download skill (.zip) or just read the SKILL.md