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.

Compare on GitHub

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.

Compare on GitHub

View on GitHubAdd to my skills

Verified commit 5f4e40f1253e11e28850d08dce28b9b7e4320115

846GitHub stars
27stars in 7 days
1skill in this repository
1commit in 30 days

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

Sep 6, 2026Nov 6, 2026846

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 tokens

Always available to the agent

SKILL.md

18,491 tokens

When the skill is activated

Reference documents

122,347 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. Agentic Intent Detection (CRITICAL — Read This First)
  2. Video Reference Protocol (硬规则 — 不许猜)
  3. Replicate Mode (复刻模式)
  4. Freeform Build Mode (When User Gives Zero Direction)
  5. Document / Article Drop
  6. Modes (for explicit user direction)
  7. Build Order (Always Follow This)
  8. Load Only What You Need
  9. Core Rules
  10. Data
  11. Cases
  12. Reference Files
  13. Scripts
  14. Output Contracts

Scripts executed separately

  • scripts/measure_churn.py
  • scripts/measure_frames.py
  • scripts/measure_structure.py
  • scripts/record_showcases.py
  • scripts/subset_fonts.py
  • scripts/verify_case.py

Files

  • .gitignoreasset64 bytes
  • LICENSEasset2,731 bytes
  • README.mddoc10,777 bytes
  • SKILL.mdcore75,751 bytes
  • SKILL.mdcore75,751 bytes
  • SKILL.mdcore75,751 bytes
  • SKILL.mdcore75,751 bytes
  • SKILL.mdcore75,751 bytes
  • SKILL.mdcore75,751 bytes
  • SKILL.mdcore75,751 bytes
  • assets/cases/char-curtain.gifasset3,207,359 bytes
  • assets/cases/char-curtain.pngasset98,089 bytes
  • assets/cases/char-curtain.webpasset1,492,156 bytes
  • assets/cases/ink-crowd.gifasset4,648,906 bytes
  • assets/cases/ink-crowd.pngasset708,502 bytes
  • assets/cases/ink-crowd.webpasset3,375,814 bytes
  • assets/cases/lyre-crows.gifasset2,233,461 bytes
  • assets/cases/lyre-crows.pngasset86,138 bytes
  • assets/cases/lyre-crows.webpasset837,872 bytes
  • assets/cases/press-stack.gifasset748,705 bytes
  • assets/cases/press-stack.pngasset10,768 bytes
  • assets/cases/press-stack.webpasset250,576 bytes
  • assets/cases/string-clock.gifasset1,013,007 bytes
  • assets/cases/string-clock.pngasset74,150 bytes
  • assets/cases/string-clock.webpasset566,950 bytes
  • assets/cases/toy-flipbook.gifasset3,660,697 bytes
  • assets/cases/toy-flipbook.pngasset385,016 bytes
  • assets/cases/toy-flipbook.webpasset1,330,460 bytes
  • assets/cases/wheel-rail.gifasset4,250,534 bytes
  • assets/cases/wheel-rail.pngasset571,614 bytes
  • assets/cases/wheel-rail.webpasset795,568 bytes
  • assets/hero.gifasset1,526,863 bytes
  • assets/motion-web-15s.mp4asset853,904 bytes
  • cases/AUTHORING.mddoc15,217 bytes
  • cases/char-curtain/README.mddoc9,748 bytes
  • cases/char-curtain/index.htmlasset15,229 bytes
  • cases/index.htmlasset9,336 bytes
  • cases/ink-crowd/README.mddoc7,097 bytes
  • cases/ink-crowd/index.htmlasset79,605 bytes
  • cases/lyre-crows/README.mddoc9,833 bytes
  • cases/lyre-crows/index.htmlasset22,975 bytes
  • cases/press-stack/README.mddoc6,526 bytes
  • cases/press-stack/index.htmlasset140,293 bytes
  • cases/string-clock/README.mddoc19,667 bytes
  • cases/string-clock/index.htmlasset37,913 bytes
  • cases/toy-flipbook/README.mddoc10,685 bytes
  • cases/toy-flipbook/img/cartridge.webpasset22,782 bytes
  • cases/toy-flipbook/img/dice.webpasset28,066 bytes
  • cases/toy-flipbook/img/donut.webpasset28,890 bytes
  • cases/toy-flipbook/img/f0.webpasset76,644 bytes
  • cases/toy-flipbook/img/f5.webpasset86,036 bytes
  • cases/toy-flipbook/img/f6.webpasset83,404 bytes
  • cases/toy-flipbook/img/f7.webpasset78,236 bytes
  • cases/toy-flipbook/img/heart.webpasset25,848 bytes
  • cases/toy-flipbook/img/star.webpasset20,406 bytes
  • cases/toy-flipbook/index.htmlasset54,756 bytes
  • cases/wheel-rail/README.mddoc7,869 bytes
  • cases/wheel-rail/index.htmlasset102,718 bytes
  • data/visual-bank.jsonasset11,266 bytes
  • references/affordance.mddoc22,228 bytes
  • references/baseline-ui.mddoc4,578 bytes
  • references/build-mode.mddoc25,583 bytes
  • references/choreography-arc.mddoc5,524 bytes
  • references/components.mddoc22,376 bytes
  • references/composition-guide.mddoc12,523 bytes
  • references/design-slop.mddoc6,623 bytes
  • references/handfeel.mddoc12,917 bytes
  • references/image-asset-pipeline.mddoc14,914 bytes
  • references/image-plane-3d.mddoc22,684 bytes
  • references/light-3d.mddoc5,753 bytes
  • references/motion-spec.mddoc3,438 bytes
  • references/motion-tokens.mddoc6,499 bytes
  • references/page-blueprints.mddoc12,980 bytes
  • references/page-design.mddoc13,407 bytes
  • references/pattern-recipes.mddoc48,025 bytes
  • references/production-polish.mddoc13,173 bytes
  • references/project-setup.mddoc18,707 bytes
  • references/render-layer.mddoc9,999 bytes
  • references/scene-audio.mddoc11,081 bytes
  • references/scene-streaming.mddoc6,051 bytes
  • references/shaders-spec.mddoc22,365 bytes
  • references/tactile-texture.mddoc6,557 bytes
  • references/timeline-orchestration.mddoc14,858 bytes
  • references/verification-harness.mddoc22,749 bytes
  • scripts/measure_churn.pyruns7,487 bytes
  • scripts/measure_frames.pyruns16,300 bytes
  • scripts/measure_structure.pyruns16,689 bytes
  • scripts/record_showcases.pyruns4,798 bytes
  • scripts/subset_fonts.pyruns6,062 bytes
  • scripts/verify_case.pyruns66,376 bytes

No excerpt is shown for this license. Read the source on GitHub.

View the complete source on GitHub

Skills 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

  1. #881 on Oct 20
  2. #894 on Oct 21
  3. #857 on Oct 22
  4. #868 on Oct 23
  5. #816 on Oct 24
  6. #981 since Oct 25
42 earlier periods
  1. #921 on Sep 6
  2. #950 on Sep 8
  3. #939 on Sep 9
  4. #932 on Sep 10
  5. #894 on Sep 11
  6. #892 on Sep 12
  7. #888 on Sep 13
  8. #925 on Sep 14
  9. #912 on Sep 15
  10. #923 on Sep 16
  11. #915 on Sep 17
  12. #899 on Sep 18
  13. #873 on Sep 19
  14. #891 on Sep 20
  15. #912 on Sep 21
  16. #930 on Sep 22
  17. #922 on Sep 23
  18. #882 on Sep 24
  19. #831 on Sep 25
  20. #851 on Sep 26
  21. #867 on Sep 27
  22. #913 on Sep 28
  23. #942 on Sep 29
  24. #907 on Sep 30
  25. #840 on Oct 1
  26. #849 on Oct 2
  27. #823 on Oct 3
  28. #859 on Oct 4
  29. #866 on Oct 5
  30. #851 on Oct 6
  31. #882 on Oct 7
  32. #913 on Oct 8
  33. #874 on Oct 9
  34. #846 from Oct 10 to Oct 11
  35. #868 on Oct 12
  36. #875 on Oct 13
  37. #883 on Oct 14
  38. #866 on Oct 15
  39. #870 on Oct 16
  40. #845 on Oct 17
  41. #826 on Oct 18
  42. #866 on Oct 19

Before you install

Network or broad shell

Automated 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:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • cases/ink-crowd/index.html:11 Analysis incomplete: physical or joined line exceeds character limit
  • cases/ink-crowd/index.html:9 Analysis incomplete: physical or joined line exceeds character limit
  • cases/ink-crowd/index.html:10 Analysis incomplete: physical or joined line exceeds character limit
  • cases/press-stack/index.html:9 Analysis incomplete: physical or joined line exceeds character limit
  • cases/press-stack/index.html:7 Analysis incomplete: physical or joined line exceeds character limit
  • cases/press-stack/index.html:10 Analysis incomplete: physical or joined line exceeds character limit
  • cases/press-stack/index.html:8 Analysis incomplete: physical or joined line exceeds character limit
  • cases/press-stack/index.html:11 Analysis incomplete: physical or joined line exceeds character limit
  • cases/press-stack/index.html:12 Analysis incomplete: physical or joined line exceeds character limit
  • cases/toy-flipbook/index.html:25 Analysis incomplete: physical or joined line exceeds character limit
  • cases/toy-flipbook/index.html:23 Analysis incomplete: physical or joined line exceeds character limit
  • cases/toy-flipbook/index.html:26 Analysis incomplete: physical or joined line exceeds character limit
  • cases/toy-flipbook/index.html:24 Analysis incomplete: physical or joined line exceeds character limit
  • cases/wheel-rail/index.html:9 Analysis incomplete: physical or joined line exceeds character limit
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: CC BY-NC 4.0](https://img.shields.io/badge/License-CC%20BY--NC%204.0-lightgrey.svg)](LICENSE)
  • Network accessline 7
    [![Type](https://img.shields.io/badge/Type-Agent%20Skill-333.svg)](SKILL.md)
  • Network accessline 8
    [![Cases](https://img.shields.io/badge/Cases-7%2F7%20PASS-brightgreen.svg)](cases/)
  • Network accessline 9
    [![Platform](https://img.shields.io/badge/Platform-Vanilla%20JS%20%7C%20Canvas%20%7C%20WebGL2-orange.svg)](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

  • Network accessline 10
    Reference: `https://ink-crowd.vercel.app/` (a browser game by @pallavmac,
  • Network accessline 11
    posted at `https://x.com/pallavmac/...`, clip `refs/3-into-the-void.mp4`,

cases/ink-crowd/index.html

  • Dangerous shell operationline 189
    const RM = matchMedia("(prefers-reduced-motion: reduce)").matches;
  • Dangerous shell operationline 654
    const t = RM ? 0 : (now - t0)/1000;
  • Dangerous shell operationline 655
    uStep = RM ? 0 : Math.floor(t * BOIL_HZ);     // 11 Hz against a 60 fps render

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

  • Dangerous shell operationline 231
    const RM = matchMedia("(prefers-reduced-motion: reduce)").matches;
  • Dangerous shell operationline 445
    const q = RM ? 1 : ease(clamp((progress[i] * 1.5 - k * d) / 0.34));
  • Dangerous shell operationline 456
    const q = RM ? 1 : ease(clamp((sw - w.key) / SWEEP.span));

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

  • Dangerous shell operationline 277
    const RM = matchMedia("(prefers-reduced-motion: reduce)").matches;
  • Dangerous shell operationline 295
    const ease  = (q) => RM ? 1 : q * q * (3 - 2 * q);
  • Dangerous shell operationline 555
    const a = RM ? 40 : ((age / SWEEP.period + S.phase) % 1) * 360;

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

  • Executable scriptline 1
    #!/usr/bin/env python3
  • Network accessline 9
    Usage:   python3 scripts/measure_structure.py https://example.com
  • Network accessline 10
    python3 scripts/measure_structure.py https://example.com

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 compatibility, from the files in this repository
AgentStatusEvidenceInstall to
Claude CodeCompatibleStandard SKILL.md SKILL.md.claude/skills/<skill-name>/
CodexCompatibleStandard SKILL.md SKILL.md.agents/skills/<skill-name>/
CursorCompatibleStandard SKILL.md SKILL.md.cursor/skills/<skill-name>/
Gemini CLICompatibleStandard SKILL.md SKILL.md.gemini/skills/<skill-name>/
GitHub CopilotCompatibleStandard SKILL.md SKILL.md.github/skills/<skill-name>/
OpenCodeCompatibleStandard 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.