A skill you clone into your agent's own config directory
Build motion-first, high-touch creative websites on vanilla Three.js / Canvas 2D / WebGL / CSS. A Claude Agent Skill with real physics and automated verification.
At a glance
- What is it?
- motion-web is a Claude agent skill for motion-heavy web pages, shipping seven single-file cases and a Playwright verifier that gives each case its own assertion mode. It installs by cloning the repository straight into a skills folder, and its licence is non-commercial while its own Chinese section carries the only technical detail.
- Who is it for?
- Read the licence before the code, because the install step puts a non-commercial repository inside your agent's configuration and the terms forbid commercial integration, platform bundling and for-profit distribution without permission. Two practical notes: verification is seven commands with seven different flag sets rather than one pass, and the engineering detail behind each case lives only in the Chinese section of the README.
- Can I use it commercially?
- Check first. The repository uses a licence we do not classify automatically, so read its LICENSE file before any commercial use.
- Is it still maintained?
- Yes. The repository last received commits 20 days ago.
- What is it written in?
- Mainly HTML, according to GitHub's language statistics.
Answers come from the project's GitHub data, last synced on October 4, 2026, and from our analysis. They are not legal advice.
Editorial analysis
The install step is a clone into your agent's own directory
There is no package to publish and no install script. Installation is a clone into the agent's skills folder, and there are two destinations depending on which agent you run.
git clone https://github.com/feitangyuan/motion-web.git ~/.claude/skills/motion-webgit clone https://github.com/feitangyuan/motion-web.git ~/.agents/skills/motion-webThe first path is for Claude Code, the second for Codex and Antigravity. Either way you end up with a nested git working copy inside a directory your agent reads as instructions, which means the repository history travels with the skill and no update path is described beyond re-cloning or pulling.
The file the agent will act on is SKILL.md at the root. The rest of the tree, cases, scripts, references, assets and data, is what that skill points at.
One verifier, seven flag sets, no run-everything mode
Verification is the project's answer to generated placeholder code, and it is built on a single Python script driven from the command line. Each case has its own mode, so the comment above the block reads verify all cases and then shows seven separate commands.
python3 scripts/verify_case.py cases/string-clock/index.html --strings
python3 scripts/verify_case.py cases/ink-crowd/index.html --layer webgl --follow
python3 scripts/verify_case.py cases/press-stack/index.html --stack
python3 scripts/verify_case.py cases/wheel-rail/index.html --railThe remaining three take a shape count and a case flag: `--min-shapes 1 --flipbook`, `--min-shapes 1 --curtain`, `--min-shapes 1 --lyre`. Seven invocations, seven different flag combinations, and no aggregate mode is documented.
The galleries are served the same manual way, with a bare Python http server pointed at the cases directory on port 8899.
The licence forbids the use an agent skill gets put to
The repository is released under CC BY-NC 4.0, a non-commercial licence, and the terms are spelled out rather than left to a badge. Personal study, academic research and non-commercial display are free. Unauthorised commercial integration, platform bundling and for-profit distribution are prohibited, and commercial authorisation or partnership goes through the author.
That matters here more than it would for a gallery of demos. The documented installation path is to clone this into the directory where a coding agent keeps its skills, which is exactly how material ends up inside someone else's product, and the licence names that case first.
There is also a metadata mismatch worth noting: the repository's licence field identifies nothing, while both the README and the file tree describe the file as CC BY-NC 4.0. The tree comment names the non-commercial restriction explicitly, so the intent is documented even though the metadata is silent.
The engineering detail exists only in the Chinese section
The README has two halves, English and Chinese, and they are not equivalent. The English half lists seven cases with a one-line tag for each: a softbody clock with accurate endpoints, a WebGL2 ink crowd, sticky stacked vinyls, a wheel-driven rail, a hard-cut flipbook, a cloth curtain, a causal ecosystem of words and crows.
The numbers are all in the Chinese half. There you learn that the ink crowd draws 620 capsule instances into multiple render targets and outlines only where depth is discontinuous, that the curtain hangs 576 characters on 24 independent Verlet ropes with no horizontal constraints between columns, that the rail uses three parallax planes at a seven times depth ratio with labels pinned along an SVG curve, that the flipbook pre-renders four yaw frames and hard-cuts with rounded spring displacement at 11Hz stepped jitter, and that the press stack makes nine screens each sticky at the top of the viewport.
So an English reader gets the ideas and a Chinese reader gets the constraints. That split is the first thing to be aware of if you plan to extend any of it.
The directory diagram stops three entries early
The structure block in the README is meant to be the map of the project, and it stops before the interesting parts. It shows SKILL.md, LICENSE and README.md at the root, then a cases directory containing a gallery entry page, an authoring guide and the seven case folders, and then a single line reading references with nothing after it.
The actual top-level listing has eight entries. Three of them, assets, data and scripts, do not appear in that diagram at all, and the reference line is left dangling.
The missing scripts entry is the one that costs you time, since scripts/verify_case.py is the tool the whole verification argument depends on, and you learn its path from the command block rather than from the map. The unexplained one is data: nothing in either half of the README says what it holds or which case reads it.
The oracles assert physics, not appearance
What the verifier checks is worth understanding, because it defines what this project counts as finished. Each case has a headless Chromium oracle that simulates pointer sweeps, wheel events and inertial decay, and only code that passes mathematical assertions is allowed to ship. The named assertions are displacement ratio, deformation error, rebound anchor and state convergence.
Those four are physics quantities, so a case can fail on behaviour even while looking finished. The design rules behind them are stated just as bluntly: meaningless fades from zero opacity to one and linear constant-speed easing are forbidden, and every action is supposed to carry damping, momentum and overshoot from a second-order spring-damper system, with anisotropic push and stepped jitter where appropriate.
Set against that, the anti-slop framing in the prose is about preventing synthetic drift rather than about taste. Whether the oracles catch what a human reviewer would call dead interaction depends on the thresholds inside the script, which are not shown.
Offline by construction, and a gallery served by a bare http server
The self-contained claim is specific and easy to check. Cases are single HTML pages that run standalone, with no build tools and no external CDN dependencies, drawing with native WebGL2 or Canvas 2D and carrying subsetted inline fonts. The project states that they run fully with the network disconnected.
That constraint explains several of the implementation choices. A clock that must keep accurate time cannot depend on a web font arriving late, an ink crowd drawn from depth buffers cannot borrow a rendering library, and the flipbook's hard-cut frames have to exist before the first paint because there is nothing to fetch.
It also shapes the demo path. There is no build and no dev server, so the gallery is a directory served by Python's http module on port 8899 and opened in a browser. For an agent skill that is a pleasant property: the same file the agent reads is the file you run.
Editorial conclusion
Read the licence before the code, because the install step puts a non-commercial repository inside your agent's configuration and the terms forbid commercial integration, platform bundling and for-profit distribution without permission. Two practical notes: verification is seven commands with seven different flag sets rather than one pass, and the engineering detail behind each case lives only in the Chinese section of the README.
Frequently asked questions
What is motion-web?
A code-first, motion-driven web engineering skill for AI agents and front-end engineers. It treats motion as the core material of the interface rather than as decoration, and ships seven runnable single-file cases with automated headless verification.
How do I install motion-web as an agent skill?
Clone the repository into your agent's skills directory. For Claude Code that is ~/.claude/skills/motion-web, and for Codex or Antigravity it is ~/.agents/skills/motion-web. The instructions the agent reads are in SKILL.md at the root.
How do I verify the motion-web cases?
Run scripts/verify_case.py once per case with that case's mode, such as --strings for string-clock, --layer webgl --follow for ink-crowd, --stack for press-stack, --rail for wheel-rail, and --flipbook, --curtain or --lyre for the last three. No aggregate mode is documented.
Can I use motion-web commercially?
Not without authorisation. The project is released under CC BY-NC 4.0 for personal study, research and non-commercial display, and forbids unauthorised commercial integration, platform bundling and for-profit distribution. Commercial licensing goes through the author.
Does motion-web need a CDN or network connection?
No. Each case is a single HTML page that runs standalone without build tools or external CDN dependencies, using subsetted inline fonts and native WebGL2 or Canvas 2D drawing, so the gallery runs from a local http server offline.
Official sources
Add this badge to your README
If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.
[](https://hysenlabs.com/projects/feitangyuan-motion-web)