Not in the top 1,000 by GitHub stars
feitangyuan/motion-web
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.
History
Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.
View weekly changes
SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
5f4e40f1253e → 5f4e40f1253e
Diff text is unavailable under the recorded licenses. Line counts and the GitHub link remain available.
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 5f4e40f1253e
No earlier version was observed for comparison.
Heat
7.4- Star growth, last 7 daysNot available
- Star growth, last 24 hoursNot available
- Rank movement, last 7 daysNot available
- Commits, last 30 daysNot available
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekNot available
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
Individual skills in this repository
How it works
motion-web
When your agent uses it
Design and build motion-first creative websites — page design (structure, type scale, palette, spacing) plus interaction choreography: scroll animation, Framer Motion, GSAP, and light 3D via Three.js/R3F. Use for animated landing pages, creative portfolios, product showcases, WebGL-lite scenes, and motion audits. Also use when tuning interaction handfeel (手感差/太生硬/不跟手), replicating motion from a video or URL reference (复刻), building 3D depth from flat image assets (伪3D/抠图), diagnosing dead scroll-timeline stretches, mixing scene audio, auditing discoverability (点不开/没人会发现), building headless verification probes, or fixing a page that moves well but looks generated (不好看/像AI做的/没设计感). Equally for building a whole site from nothing (从0到1做个网页/落地页/官网/作品集): stack choice, sections and copy, components (导航/hero/表单/卡片/定价表), and production polish (favicon/OG/404/空状态/暗色模式). Not for dashboards, admin UI, or full 3D scene generation.
What it loads into context
Frontmatter
260 tokensAlways available to the agent
SKILL.md
18,491 tokensWhen the skill is activated
Reference documents
122,347 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Agentic Intent Detection (CRITICAL — Read This First)
- Video Reference Protocol (硬规则 — 不许猜)
- Replicate Mode (复刻模式)
- Freeform Build Mode (When User Gives Zero Direction)
- Document / Article Drop
- Modes (for explicit user direction)
- Build Order (Always Follow This)
- Load Only What You Need
- Core Rules
- Data
- Cases
- Reference Files
- Scripts
- Output Contracts
Scripts executed separately
scripts/measure_churn.pyscripts/measure_frames.pyscripts/measure_structure.pyscripts/record_showcases.pyscripts/subset_fonts.pyscripts/verify_case.py
Files
.gitignoreasset64 bytesLICENSEasset2,731 bytesREADME.mddoc10,777 bytesSKILL.mdcore75,751 bytesSKILL.mdcore75,751 bytesSKILL.mdcore75,751 bytesSKILL.mdcore75,751 bytesSKILL.mdcore75,751 bytesSKILL.mdcore75,751 bytesSKILL.mdcore75,751 bytesassets/cases/char-curtain.gifasset3,207,359 bytesassets/cases/char-curtain.pngasset98,089 bytesassets/cases/char-curtain.webpasset1,492,156 bytesassets/cases/ink-crowd.gifasset4,648,906 bytesassets/cases/ink-crowd.pngasset708,502 bytesassets/cases/ink-crowd.webpasset3,375,814 bytesassets/cases/lyre-crows.gifasset2,233,461 bytesassets/cases/lyre-crows.pngasset86,138 bytesassets/cases/lyre-crows.webpasset837,872 bytesassets/cases/press-stack.gifasset748,705 bytesassets/cases/press-stack.pngasset10,768 bytesassets/cases/press-stack.webpasset250,576 bytesassets/cases/string-clock.gifasset1,013,007 bytesassets/cases/string-clock.pngasset74,150 bytesassets/cases/string-clock.webpasset566,950 bytesassets/cases/toy-flipbook.gifasset3,660,697 bytesassets/cases/toy-flipbook.pngasset385,016 bytesassets/cases/toy-flipbook.webpasset1,330,460 bytesassets/cases/wheel-rail.gifasset4,250,534 bytesassets/cases/wheel-rail.pngasset571,614 bytesassets/cases/wheel-rail.webpasset795,568 bytesassets/hero.gifasset1,526,863 bytesassets/motion-web-15s.mp4asset853,904 bytescases/AUTHORING.mddoc15,217 bytescases/char-curtain/README.mddoc9,748 bytescases/char-curtain/index.htmlasset15,229 bytescases/index.htmlasset9,336 bytescases/ink-crowd/README.mddoc7,097 bytescases/ink-crowd/index.htmlasset79,605 bytescases/lyre-crows/README.mddoc9,833 bytescases/lyre-crows/index.htmlasset22,975 bytescases/press-stack/README.mddoc6,526 bytescases/press-stack/index.htmlasset140,293 bytescases/string-clock/README.mddoc19,667 bytescases/string-clock/index.htmlasset37,913 bytescases/toy-flipbook/README.mddoc10,685 bytescases/toy-flipbook/img/cartridge.webpasset22,782 bytescases/toy-flipbook/img/dice.webpasset28,066 bytescases/toy-flipbook/img/donut.webpasset28,890 bytescases/toy-flipbook/img/f0.webpasset76,644 bytescases/toy-flipbook/img/f5.webpasset86,036 bytescases/toy-flipbook/img/f6.webpasset83,404 bytescases/toy-flipbook/img/f7.webpasset78,236 bytescases/toy-flipbook/img/heart.webpasset25,848 bytescases/toy-flipbook/img/star.webpasset20,406 bytescases/toy-flipbook/index.htmlasset54,756 bytescases/wheel-rail/README.mddoc7,869 bytescases/wheel-rail/index.htmlasset102,718 bytesdata/visual-bank.jsonasset11,266 bytesreferences/affordance.mddoc22,228 bytesreferences/baseline-ui.mddoc4,578 bytesreferences/build-mode.mddoc25,583 bytesreferences/choreography-arc.mddoc5,524 bytesreferences/components.mddoc22,376 bytesreferences/composition-guide.mddoc12,523 bytesreferences/design-slop.mddoc6,623 bytesreferences/handfeel.mddoc12,917 bytesreferences/image-asset-pipeline.mddoc14,914 bytesreferences/image-plane-3d.mddoc22,684 bytesreferences/light-3d.mddoc5,753 bytesreferences/motion-spec.mddoc3,438 bytesreferences/motion-tokens.mddoc6,499 bytesreferences/page-blueprints.mddoc12,980 bytesreferences/page-design.mddoc13,407 bytesreferences/pattern-recipes.mddoc48,025 bytesreferences/production-polish.mddoc13,173 bytesreferences/project-setup.mddoc18,707 bytesreferences/render-layer.mddoc9,999 bytesreferences/scene-audio.mddoc11,081 bytesreferences/scene-streaming.mddoc6,051 bytesreferences/shaders-spec.mddoc22,365 bytesreferences/tactile-texture.mddoc6,557 bytesreferences/timeline-orchestration.mddoc14,858 bytesreferences/verification-harness.mddoc22,749 bytesscripts/measure_churn.pyruns7,487 bytesscripts/measure_frames.pyruns16,300 bytesscripts/measure_structure.pyruns16,689 bytesscripts/record_showcases.pyruns4,798 bytesscripts/subset_fonts.pyruns6,062 bytesscripts/verify_case.pyruns66,376 bytes
No excerpt is shown for this license. Read the source on GitHub.
View the complete source on GitHubSkills included
- motion-web
Repository facts
- License
- No license detected
- Created
- Sep 8, 2026
- Last pushed
- Nov 5, 2026
- Forks
- 63
- Open issues
- 3
- Project activity
- Active
Rank over the last 12 weeks
Now #981 · best #816 · down 150 in 30 days
- #881 on Oct 20
- #894 on Oct 21
- #857 on Oct 22
- #868 on Oct 23
- #816 on Oct 24
- #981 since Oct 25
42 earlier periods
- #921 on Sep 6
- #950 on Sep 8
- #939 on Sep 9
- #932 on Sep 10
- #894 on Sep 11
- #892 on Sep 12
- #888 on Sep 13
- #925 on Sep 14
- #912 on Sep 15
- #923 on Sep 16
- #915 on Sep 17
- #899 on Sep 18
- #873 on Sep 19
- #891 on Sep 20
- #912 on Sep 21
- #930 on Sep 22
- #922 on Sep 23
- #882 on Sep 24
- #831 on Sep 25
- #851 on Sep 26
- #867 on Sep 27
- #913 on Sep 28
- #942 on Sep 29
- #907 on Sep 30
- #840 on Oct 1
- #849 on Oct 2
- #823 on Oct 3
- #859 on Oct 4
- #866 on Oct 5
- #851 on Oct 6
- #882 on Oct 7
- #913 on Oct 8
- #874 on Oct 9
- #846 from Oct 10 to Oct 11
- #868 on Oct 12
- #875 on Oct 13
- #883 on Oct 14
- #866 on Oct 15
- #870 on Oct 16
- #845 on Oct 17
- #826 on Oct 18
- #866 on Oct 19
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 4, 2026
Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.
Show 24 notes
SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedSKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedcases/ink-crowd/index.html:11Analysis incomplete: physical or joined line exceeds character limitcases/ink-crowd/index.html:9Analysis incomplete: physical or joined line exceeds character limitcases/ink-crowd/index.html:10Analysis incomplete: physical or joined line exceeds character limitcases/press-stack/index.html:9Analysis incomplete: physical or joined line exceeds character limitcases/press-stack/index.html:7Analysis incomplete: physical or joined line exceeds character limitcases/press-stack/index.html:10Analysis incomplete: physical or joined line exceeds character limitcases/press-stack/index.html:8Analysis incomplete: physical or joined line exceeds character limitcases/press-stack/index.html:11Analysis incomplete: physical or joined line exceeds character limitcases/press-stack/index.html:12Analysis incomplete: physical or joined line exceeds character limitcases/toy-flipbook/index.html:25Analysis incomplete: physical or joined line exceeds character limitcases/toy-flipbook/index.html:23Analysis incomplete: physical or joined line exceeds character limitcases/toy-flipbook/index.html:26Analysis incomplete: physical or joined line exceeds character limitcases/toy-flipbook/index.html:24Analysis incomplete: physical or joined line exceeds character limitcases/wheel-rail/index.html:9Analysis incomplete: physical or joined line exceeds character limit
- No broad tool permissions
- 10 dangerous shell commandsin 4 files: cases/ink-crowd/index.html:189 cases/press-stack/index.html:231 cases/wheel-rail/index.html:277 and 1 more
- 69 network referencesin 17 files: README.md:6 SKILL.md:555 cases/toy-flipbook/index.html:9 and 14 more
- No hidden or obfuscated text
- No instruction overrides
- 6 executable scriptsin 6 files: scripts/measure_churn.py:1 scripts/measure_frames.py:1 scripts/measure_structure.py:1 and 3 more
- No access to secrets
- No requests to vote in Hot
Show all 85 signals by file
LICENSE
- Network accessline 1
Creative Commons Attribution-NonCommercial 4.0 International Public License (CC BY-NC 4.0) - Network accessline 47
Contact / 商务与授权联系: - GitHub: https://github.com/feitangyuan - Network accessline 48
- GitHub: https://github.com/feitangyuan - Network accessline 49
- Repository: https://github.com/feitangyuan/motion-web
README.md
- Network accessline 6
[](LICENSE) - Network accessline 7
[](SKILL.md) - Network accessline 8
[](cases/) - Network accessline 9
[](cases/) - Network accessline 95
git clone https://github.com/feitangyuan/motion-web.git ~/.claude/skills/motion-web - Network accessline 100
git clone https://github.com/feitangyuan/motion-web.git ~/.agents/skills/motion-web - Network accessline 121
python3 -m http.server 8899 -d cases/ # Open http://localhost:8899 - Network accessline 122
# Open http://localhost:8899 - Network accessline 163
motion-web/ ├── SKILL.md # Agent 核心执行规范与工作流定义 ├── LICENSE # CC BY-NC 4.0 许可证(非商用) - Network accessline 164
├── SKILL.md # Agent 核心执行规范与工作流定义 ├── LICENSE # CC BY-NC 4.0 许可证(非商用) ├── README.md # 规范与展示文档 - Network accessline 165
├── LICENSE # CC BY-NC 4.0 许可证(非商用) - Network accessline 203
本项目采用 [CC BY-NC 4.0](LICENSE)(知识共享署名-非商业性使用 4.0 国际)许可证。个人学习、学术研究与非商业展示可免费使用;禁止任何未经授权的商业集成、平台内置或营利性分发。如需商业授权或企业合作,请联系作者。项目内嵌入的第三方开源字体子集保留原各自开源许可(SIL Open Font License)。
SKILL.md
- Network accessline 555
# ── MEASURE STRUCTURE (the static-page half: sections, components, tokens, polish) ─ # Answers "how is it built as a page": sections, nav, buttons, token scales, forms, media, meta, mobile overflow. python3 scripts/measure_structure.py htt - Network accessline 556
# Answers "how is it built as a page": sections, nav, buttons, token scales, forms, media, meta, mobile overflow. python3 scripts/measure_structure.py https://example.com python3 scripts/measure_structure.py --urls-file urls.txt --out data/ - Network accessline 557
python3 scripts/measure_structure.py https://example.com - Network accessline 579
python3 scripts/verify_case.py cases/char-curtain/index.html --min-shapes 1 --curtain # parts AND stays independent python3 scripts/verify_case.py cases/lyre-crows/index.html --min-shapes 1 --lyre # releases AND stays limited pyt - Network accessline 581
python3 scripts/verify_case.py http://localhost:5173 # works on a dev server too - Network accessline 585
# right mechanisms that reads as dead. Drives a REAL wheel; scrollTo teleports # past the arriving-and-leaving window where the motion lives. python3 scripts/measure_churn.py https://a-reference.com # characterise it first - Network accessline 586
# past the arriving-and-leaving window where the motion lives. python3 scripts/measure_churn.py https://a-reference.com # characterise it first python3 scripts/measure_churn.py cases/foo/index.html --against https://a-reference.com - Network accessline 587
python3 scripts/measure_churn.py https://a-reference.com # characterise it first - Network accessline 588
python3 scripts/measure_churn.py cases/foo/index.html --against https://a-reference.com
cases/AUTHORING.md
- Network accessline 73
safe-x tweet <url> --json | grep -i 'http\|figma\|jitter\|rive\|gsap\|built\|dev' curl -sSL -o /dev/null -w '%{url_effective}\n' <the t.co link> # resolve it - Network accessline 74
curl -sSL -o /dev/null -w '%{url_effective}\n' <the t.co link> # resolve it - Network accessline 81
safe-x tweet <url> --json # or the platform's own CLI — routing doc first curl -sL -o ref.mp4 "<the media url in that json>" - Network accessline 82
curl -sL -o ref.mp4 "<the media url in that json>"
cases/char-curtain/index.html
- Network accessline 9
<meta property="og:description" content="A character grid as 24 hanging Verlet strings, parted by the pointer."> <meta property="og:type" content="website"> <link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' v - Network accessline 11
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'><rect width='32' height='32' fill='%23fff'/><g stroke='%23181b1b' stroke-width='1.4' fill='none'><path d='M8 4v24'/><path d='M14 4c0 8-2 1
cases/ink-crowd/README.md
cases/ink-crowd/index.html
cases/lyre-crows/index.html
- Network accessline 9
<meta property="og:description" content="A closed causal loop: strum, release, hunt, rewrite."> <meta property="og:type" content="website"> <link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32 - Network accessline 11
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'><rect width='32' height='32' fill='%23d6c8b3'/><path d='M6 20h20M6 24h20' stroke='%23b91c1c' stroke-width='1.2'/><path d='M20 9l-5 2 5 2-2
cases/press-stack/index.html
cases/string-clock/README.md
- Network accessline 13
> **Correction, 2026-09-02.** This README used to say "there is no live URL, so the page > could not be measured." That was wrong: the author posted one in his own replies — > **`https://focus.itshassco.com/`** ("Try it"). Nobody read the t - Network accessline 14
> could not be measured." That was wrong: the author posted one in his own replies — > **`https://focus.itshassco.com/`** ("Try it"). Nobody read the thread. The physics here was derived > from first principles and still stands, but the pal - Network accessline 15
> **`https://focus.itshassco.com/`** ("Try it"). Nobody read the thread. The physics here was derived
cases/string-clock/index.html
- Network accessline 9
<meta property="og:description" content="An analogue clock whose hands are slack elastic strings."> <meta property="og:type" content="website"> <link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 3 - Network accessline 11
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'><circle cx='16' cy='16' r='14' fill='%23e9e9e9'/><path d='M16 24 Q9 20 10 9' stroke='%23111' stroke-width='2.6' fill='none' stroke-linecap - Network accessline 380
/* ── dial furniture ────────────────────────────────────────────────── */ const NS = 'http://www.w3.org/2000/svg'; - Network accessline 381
const NS = 'http://www.w3.org/2000/svg';
cases/toy-flipbook/index.html
- Network accessline 9
<meta property="og:description" content="Stop-motion turnaround driven by pointer X, with desk toys that hop when you spin it."> <meta property="og:type" content="website"> <link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3 - Network accessline 11
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'><rect width='32' height='32' rx='9' fill='%2317150f'/><text x='16' y='23' font-size='19' font-family='sans-serif' font-weight='700' fill=' - Network accessline 15
Subset to the characters this page actually renders, then embedded, so the case has ZERO network requests and its verification cannot fail on a flaky font fetch (it did, once, in a hundred runs — see README). - Network accessline 16
the case has ZERO network requests and its verification cannot fail on a flaky font fetch (it did, once, in a hundred runs — see README). Fraunces, Space Grotesk and Gochi Hand are all SIL Open Font License 1.1, - Network accessline 17
a flaky font fetch (it did, once, in a hundred runs — see README). - Network accessline 21
Space Grotesk © The Space Grotesk Project Authors Gochi Hand © Huerta Tipografica Full licence: https://scripts.sil.org/OFL - Network accessline 22
Gochi Hand © Huerta Tipografica Full licence: https://scripts.sil.org/OFL ───────────────────────────────────────────────────────────────────── */ - Network accessline 23
Full licence: https://scripts.sil.org/OFL
cases/wheel-rail/README.md
- Network accessline 12
Reference: `https://blink.trade/` — measured live on 2026-09-03, headless
cases/wheel-rail/index.html
references/affordance.md
- Network accessline 371
A page-curl was built for act ①: corner lifts, crease softens, backside paper is a stop darker, drop
references/production-polish.md
- Network accessline 45
<title>Nome — what it is in five words</title> <!-- 40–60 chars --> <meta name="description" content="One sentence, 120–155 chars, written for a human."> <link rel="canonical" href="https://example.com/"> - Network accessline 47
<link rel="canonical" href="https://example.com/"> - Network accessline 49
<!-- link previews: Slack, iMessage, X, WeChat, Feishu all read these --> <meta property="og:type" content="website"> <meta property="og:url" content="https://example.com/"> - Network accessline 50
<meta property="og:type" content="website"> <meta property="og:url" content="https://example.com/"> <meta property="og:title" content="…"> - Network accessline 51
<meta property="og:url" content="https://example.com/"> - Network accessline 52
<meta property="og:title" content="…"> <meta property="og:description" content="…"> <meta property="og:image" content="https://example.com/og.png"> <!-- absolute URL --> - Network accessline 53
<meta property="og:description" content="…"> <meta property="og:image" content="https://example.com/og.png"> <!-- absolute URL --> <meta property="og:image:width" content="1200"> - Network accessline 54
<meta property="og:image" content="https://example.com/og.png"> <!-- absolute URL -->
references/project-setup.md
- Network accessline 148
[utopia.fyi](https://utopia.fyi) generates both the type and space scales in this form; use it rather
scripts/measure_churn.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 11
# characterise a reference before building anything python3 scripts/measure_churn.py https://example.com - Network accessline 12
python3 scripts/measure_churn.py https://example.com - Network accessline 17
# both at once python3 scripts/measure_churn.py cases/foo/index.html --against https://example.com - Network accessline 18
python3 scripts/measure_churn.py cases/foo/index.html --against https://example.com
scripts/measure_frames.py
- Executable scriptline 1
#!/usr/bin/env python3
scripts/measure_structure.py
scripts/record_showcases.py
- Executable scriptline 1
#!/usr/bin/env python3
scripts/subset_fonts.py
- Executable scriptline 1
#!/usr/bin/env python3
scripts/verify_case.py
- Executable scriptline 1
#!/usr/bin/env python3 - Network accessline 9
python3 scripts/verify_case.py cases/press-stack/index.html --stack python3 scripts/verify_case.py cases/wheel-rail/index.html --rail python3 scripts/verify_case.py http://localhost:5173 --no-js-expected - Network accessline 11
python3 scripts/verify_case.py http://localhost:5173 --no-js-expected - Dangerous shell operationline 1067
rm = p2.evaluate("""()=>{const sel='h1,h2,h3,p,[class*=num]';
How the signals fit together
Facts from a static read of the files at the pinned commit. They describe what the code does, not why.
Some files could not be read; the facts below still hold.
Signal confidence: 6 facts
- Network access in code of documentationREADME.md:95Low confidence
- Network access in code of documentationREADME.md:100Low confidence
- Network access in code of the SKILL.mdSKILL.md:557High confidence
- Network access in code of the SKILL.mdSKILL.md:581High confidence
- Network access in code of the SKILL.mdSKILL.md:587High confidence
- Network access in code of the SKILL.mdSKILL.md:588High confidence
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Compatible | Standard SKILL.md SKILL.md | .claude/skills/<skill-name>/ |
| Codex | Compatible | Standard SKILL.md SKILL.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md SKILL.md | .opencode/skills/<skill-name>/ |
- Native The repository ships a manifest, folder or frontmatter field for this agent.
- Compatible A standard SKILL.md that this agent can read.
- Unknown No evidence either way.
Derived automatically from paths, manifests and frontmatter. Not tested on each agent.