#81 by GitHub stars

wheresryan22/anatomy

Build crafted, highly detailed, interactive isometric SVG figures that explain a technical idea as a real physical object (a test rig, a dial gauge, a cabinet of drawers, a plotter, a lock), with many small precise solid parts, four-tone shading, correct painter's order, a framed card with title, hi

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 Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 1482e8469b0a

No earlier version was observed for comparison.

Compare on GitHub

View on GitHubAdd to my skills

Verified commit 1482e8469b0a9e0d8cc18ea2740a01423d29ae80

25.5kGitHub stars
2.5kstars in 7 days
1skill in this repository
153commits in 30 days

Heat

8.4
  • Star growth, last 7 daysAhead of 98% of tracked repositories
  • Star growth, last 24 hoursAhead of 98% of tracked repositories
  • Rank movement, last 7 daysAhead of 88% of tracked repositories
  • Commits, last 30 daysAhead of 96% of tracked repositories
  • Accounts asking about it through MCP, last 7 daysNot available
  • Hot votes this weekAhead of 0% of tracked repositories

Heat never changes the order by stars, and sponsorship never touches it. How heat works

Stars over time

Oct 4, 2026Nov 6, 202625,458

Individual skills in this repository

How it works

anatomy

When your agent uses it

Build crafted, highly detailed, interactive isometric SVG figures that explain a technical idea as a real physical object (a test rig, a dial gauge, a cabinet of drawers, a plotter, a lock), with many small precise solid parts, four-tone shading, correct painter's order, a framed card with title, hint and live readout, and calm eased motion. Use this whenever someone wants an isometric illustration, an explanatory diagram or figure for docs, a blog post, a landing page or an article, a "Linear-style" or "premium" technical drawing, an interactive explainer, or an SVG that shows how a system, algorithm or component works, even if they never say "isometric". Works framework-free (TypeScript/JS that writes SVG and HTML) and in React/Next.js, and can add realistic WebGL shaders (fire, exhaust, water, caustics, lamp light) that live inside the drawing in the same isometric perspective. Also prints a figure as an A4 PDF (poster, drawing or handout) and publishes it to the Anatomy community gallery when asked.

What it loads into context

Frontmatter

288 tokens

Always available to the agent

SKILL.md

8,372 tokens

When the skill is activated

Reference documents

98,592 tokens

Loaded on request

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

The playbook

  1. The one idea that matters
  2. Workflow
  3. Setup
  4. Craft rules (short form)
  5. WebGL inside the drawing
  6. 3D: figures that turn (beta)
  7. Printable sheets (A4)
  8. References

Scripts executed separately

  • examples/arcade-cabinet/build.mjs
  • examples/arcade-cabinet/live.js
  • examples/arcade-cabinet/parts.mjs
  • examples/arcade-cabinet/screen.mjs
  • examples/arcade-cabinet/sheet.mjs
  • examples/desk-computer/build.mjs
  • examples/dial-indicator/build.mjs
  • examples/push-button/build.mjs
  • examples/push-button/sheet.mjs
  • examples/raptor-engine/build.mjs
  • examples/raptor-engine/live.js
  • examples/raptor-engine/sheet.mjs
  • examples/ripple-tank/build.mjs
  • examples/ripple-tank/live.js
  • examples/ripple-tank/model.mjs
  • examples/spot-plate/art.tsx
  • examples/spot-plate/drops.ts
  • examples/spot-plate/fan.ts
  • examples/spot-plate/figure.tsx
  • examples/spot-plate/geometry.ts
  • examples/spot-plate/live.tsx
  • examples/spot-plate/rig.ts
  • examples/test-rig/art.tsx
  • examples/test-rig/figure.tsx
  • examples/test-rig/geometry.ts
  • examples/test-rig/live.tsx
  • examples/test-rig/pose.ts
  • examples/test-rig/rig.ts
  • examples/test-rig/view.ts
  • examples/turning-dial/build.mjs
  • examples/turning-dial/live.js
  • examples/turning-dial/stress.mjs
  • kit/audit.mjs
  • kit/canvas-painter.mjs
  • kit/gl-shared.mjs
  • kit/gl.mjs
  • kit/iso-kit.mjs
  • kit/iso-kit.ts
  • kit/lathe.mjs
  • kit/pdf-button.mjs
  • kit/react/draw.tsx
  • kit/react/live.tsx
  • kit/tube.mjs
  • kit/turn-audit.mjs
  • kit/turn-build.mjs
  • kit/turn-fixed.mjs
  • kit/turn.mjs
  • scripts/audit-affine-bounds.test.mjs
  • scripts/audit-cache.test.mjs
  • scripts/audit-clearance-envelope.test.mjs
  • scripts/audit-empty-clipping.test.mjs
  • scripts/audit-order-convergence.test.mjs
  • scripts/audit-path-origin.test.mjs
  • scripts/audit-profile.test.mjs
  • scripts/audit-projection.test.mjs
  • scripts/audit-slide-clearance.test.mjs
  • scripts/audit-svg-attributes.test.mjs
  • scripts/audit-taper.test.mjs
  • scripts/audit-tube-support.test.mjs
  • scripts/capture-current-geometry.test.mjs
  • scripts/capture-selector.test.mjs
  • scripts/capture.mjs
  • scripts/capture.test.mjs
  • scripts/chrome-port.mjs
  • scripts/chrome-startup.test.mjs
  • scripts/curve-density.test.mjs
  • scripts/drive-actions.test.mjs
  • scripts/drive-async-until.test.mjs
  • scripts/drive-page-load.test.mjs
  • scripts/drive-turn-controller.test.mjs
  • scripts/drive.mjs
  • scripts/drive.test.mjs
  • scripts/enter-key.test.mjs
  • scripts/fidelity-cut.test.mjs
  • scripts/fidelity-tube-coverage.test.mjs
  • scripts/fingerprint.mjs
  • scripts/inline-kit.mjs
  • scripts/line-ends.mjs
  • scripts/lines-arcs.test.mjs
  • scripts/lines-bezier.test.mjs
  • scripts/lines-round.test.mjs
  • scripts/lines-rounded-rect.test.mjs
  • scripts/lines.mjs
  • scripts/lines.test.mjs
  • scripts/navigation.test.mjs
  • scripts/orbit-sampling.test.mjs
  • scripts/print-sheet.mjs
  • scripts/print-sheet.test.mjs
  • scripts/print.mjs
  • scripts/publish.mjs
  • scripts/publish.test.mjs
  • scripts/react-dots-opacity.test.mjs
  • scripts/react-readout-first-write.test.mjs
  • scripts/react-readout-target.test.mjs
  • scripts/react-solid-seamless.test.mjs
  • scripts/react-visibility-target.test.mjs
  • scripts/session.mjs
  • scripts/session.test.mjs
  • scripts/turn-audit-samples.test.mjs
  • scripts/turn-bench.mjs
  • scripts/turn-check.mjs
  • scripts/turn-convex-check.test.mjs
  • scripts/turn-fidelity.mjs
  • scripts/turn-group-reference.test.mjs
  • scripts/turn-rounded-polygon.test.mjs
  • scripts/turn-split-owner.test.mjs

Files

  • .gitattributesasset89 bytes
  • .github/ISSUE_TEMPLATE/bug_report.ymlasset2,808 bytes
  • .github/ISSUE_TEMPLATE/config.ymlasset213 bytes
  • .github/ISSUE_TEMPLATE/figure_request.ymlasset1,917 bytes
  • .github/PULL_REQUEST_TEMPLATE.mddoc1,005 bytes
  • .github/assets/dial-indicator.webpasset17,360 bytes
  • .github/assets/raptor-engine-apart.webpasset35,144 bytes
  • .github/assets/raptor-engine-firing.webpasset37,752 bytes
  • .github/assets/ripple-tank.webpasset34,680 bytes
  • .github/assets/turning-dial.webpasset29,958 bytes
  • .github/workflows/ci.ymlasset2,070 bytes
  • .gitignoreasset216 bytes
  • CHANGELOG.mddoc14,983 bytes
  • CODE_OF_CONDUCT.mddoc5,673 bytes
  • CONTRIBUTING.mddoc8,949 bytes
  • LICENSEasset1,061 bytes
  • README.mddoc26,199 bytes
  • SECURITY.mddoc1,240 bytes
  • SKILL.mdcore33,589 bytes
  • SKILL.mdcore33,589 bytes
  • SKILL.mdcore33,589 bytes
  • SKILL.mdcore33,589 bytes
  • SKILL.mdcore33,589 bytes
  • SKILL.mdcore33,589 bytes
  • agents/openai.yamlasset120 bytes
  • evals/evals.jsonasset8,226 bytes
  • examples/arcade-cabinet/arcade-cabinet-detailed-a4.pdfasset2,355,870 bytes
  • examples/arcade-cabinet/arcade-cabinet-drawing-a4.pdfasset1,849,170 bytes
  • examples/arcade-cabinet/arcade-cabinet-light.htmlasset1,008,995 bytes
  • examples/arcade-cabinet/arcade-cabinet-poster-a4.pdfasset726,591 bytes
  • examples/arcade-cabinet/arcade-cabinet.cssasset3,221 bytes
  • examples/arcade-cabinet/arcade-cabinet.htmlasset1,008,994 bytes
  • examples/arcade-cabinet/build.mjsruns51,665 bytes
  • examples/arcade-cabinet/live.jsruns21,286 bytes
  • examples/arcade-cabinet/parts.mjsruns4,296 bytes
  • examples/arcade-cabinet/screen.mjsruns6,701 bytes
  • examples/arcade-cabinet/sheet.mjsruns5,525 bytes
  • examples/desk-computer/build.mjsruns23,023 bytes
  • examples/desk-computer/desk-computer-light.htmlasset237,394 bytes
  • examples/desk-computer/desk-computer.htmlasset237,393 bytes
  • examples/dial-indicator/build.mjsruns14,973 bytes
  • examples/dial-indicator/dial-indicator-light.htmlasset136,489 bytes
  • examples/dial-indicator/dial-indicator.htmlasset136,488 bytes
  • examples/push-button/build.mjsruns16,283 bytes
  • examples/push-button/push-button-detailed-a4.pdfasset956,064 bytes
  • examples/push-button/push-button-drawing-a4.pdfasset696,985 bytes
  • examples/push-button/push-button-light.htmlasset127,449 bytes
  • examples/push-button/push-button-poster-a4.pdfasset463,972 bytes
  • examples/push-button/push-button.htmlasset127,448 bytes
  • examples/push-button/sheet.mjsruns4,050 bytes
  • examples/raptor-engine/build.mjsruns70,875 bytes
  • examples/raptor-engine/live.jsruns30,752 bytes
  • examples/raptor-engine/raptor-engine-detailed-a4.pdfasset4,350,759 bytes
  • examples/raptor-engine/raptor-engine-drawing-a4.pdfasset2,965,335 bytes
  • examples/raptor-engine/raptor-engine-light.htmlasset1,611,624 bytes
  • examples/raptor-engine/raptor-engine-poster-a4.pdfasset613,368 bytes
  • examples/raptor-engine/raptor-engine.htmlasset1,611,623 bytes
  • examples/raptor-engine/raptor.cssasset6,792 bytes
  • examples/raptor-engine/sheet.mjsruns6,324 bytes
  • examples/ripple-tank/build.mjsruns32,062 bytes
  • examples/ripple-tank/live.jsruns21,741 bytes
  • examples/ripple-tank/model.mjsruns5,004 bytes
  • examples/ripple-tank/ripple-tank-light.htmlasset505,499 bytes
  • examples/ripple-tank/ripple-tank.htmlasset505,498 bytes
  • examples/ripple-tank/ripple.cssasset1,675 bytes
  • examples/spot-plate/art.tsxruns4,491 bytes
  • examples/spot-plate/drops.tsruns19,131 bytes
  • examples/spot-plate/fan.tsruns2,715 bytes
  • examples/spot-plate/figure.tsxruns1,078 bytes
  • examples/spot-plate/geometry.tsruns10,962 bytes
  • examples/spot-plate/live.tsxruns11,718 bytes
  • examples/spot-plate/rig.tsruns8,160 bytes
  • examples/spot-plate/spot-plate.cssasset1,518 bytes
  • examples/test-rig/art.tsxruns7,372 bytes
  • examples/test-rig/figure.tsxruns850 bytes
  • examples/test-rig/geometry.tsruns13,085 bytes
  • examples/test-rig/live.tsxruns17,463 bytes
  • examples/test-rig/pose.tsruns3,894 bytes
  • examples/test-rig/rig.tsruns5,604 bytes
  • examples/test-rig/stretch.cssasset1,210 bytes
  • examples/test-rig/view.tsruns3,116 bytes
  • examples/turning-dial/build.mjsruns32,098 bytes
  • examples/turning-dial/dial.cssasset509 bytes
  • examples/turning-dial/live.jsruns12,523 bytes
  • examples/turning-dial/stress.mjsruns19,414 bytes
  • examples/turning-dial/turning-dial-light.htmlasset673,894 bytes
  • examples/turning-dial/turning-dial-verify-light.htmlasset701,752 bytes
  • examples/turning-dial/turning-dial.htmlasset673,893 bytes
  • examples/turning-dial/turning-stress-light.htmlasset1,228,774 bytes
  • kit/audit.mjsruns92,618 bytes
  • kit/canvas-painter.mjsruns27,535 bytes
  • kit/gl-shared.mjsruns8,863 bytes
  • kit/gl.mjsruns8,763 bytes
  • kit/iso-kit.mjsruns35,175 bytes
  • kit/iso-kit.tsruns38,631 bytes
  • kit/iso.cssasset7,698 bytes
  • kit/lathe.mjsruns48,028 bytes
  • kit/pdf-button.mjsruns1,314 bytes
  • kit/react/draw.tsxruns6,602 bytes
  • kit/react/live.tsxruns4,359 bytes
  • kit/tube.mjsruns14,230 bytes
  • kit/turn-audit.mjsruns57,356 bytes
  • kit/turn-build.mjsruns65,975 bytes
  • kit/turn-fixed.mjsruns147,055 bytes
  • kit/turn.mjsruns139,815 bytes
  • references/3d.mddoc44,644 bytes
  • references/craft.mddoc50,299 bytes
  • references/kit.mddoc67,873 bytes
  • references/motion.mddoc22,611 bytes
  • references/print.mddoc7,043 bytes
  • references/publish.mddoc4,113 bytes
  • references/react.mddoc3,614 bytes
  • references/verify.mddoc43,574 bytes
  • references/walkthrough.mddoc5,276 bytes
  • references/webgl.mddoc61,104 bytes
  • scripts/audit-affine-bounds.test.mjsruns4,175 bytes
  • scripts/audit-cache.test.mjsruns1,603 bytes
  • scripts/audit-clearance-envelope.test.mjsruns2,407 bytes
  • scripts/audit-empty-clipping.test.mjsruns3,936 bytes
  • scripts/audit-order-convergence.test.mjsruns2,875 bytes
  • scripts/audit-path-origin.test.mjsruns1,594 bytes
  • scripts/audit-profile.test.mjsruns2,171 bytes
  • scripts/audit-projection.test.mjsruns1,934 bytes
  • scripts/audit-slide-clearance.test.mjsruns2,875 bytes
  • scripts/audit-svg-attributes.test.mjsruns3,484 bytes
  • scripts/audit-taper.test.mjsruns1,267 bytes
  • scripts/audit-tube-support.test.mjsruns2,636 bytes
  • scripts/capture-current-geometry.test.mjsruns5,109 bytes
  • scripts/capture-selector.test.mjsruns7,665 bytes
  • scripts/capture.mjsruns15,024 bytes
  • scripts/capture.test.mjsruns3,224 bytes
  • scripts/chrome-port.mjsruns1,083 bytes
  • scripts/chrome-startup.test.mjsruns1,838 bytes
  • scripts/curve-density.test.mjsruns4,196 bytes
  • scripts/drive-actions.test.mjsruns3,061 bytes
  • scripts/drive-async-until.test.mjsruns2,743 bytes
  • scripts/drive-page-load.test.mjsruns1,318 bytes
  • scripts/drive-turn-controller.test.mjsruns2,702 bytes
  • scripts/drive.mjsruns23,905 bytes
  • scripts/drive.test.mjsruns3,690 bytes
  • scripts/enter-key.test.mjsruns2,560 bytes
  • scripts/fidelity-cut.test.mjsruns4,852 bytes
  • scripts/fidelity-tube-coverage.test.mjsruns3,223 bytes
  • scripts/fingerprint.mjsruns1,241 bytes
  • scripts/inline-kit.mjsruns648 bytes
  • scripts/line-ends.mjsruns16,206 bytes
  • scripts/lines-arcs.test.mjsruns2,059 bytes
  • scripts/lines-bezier.test.mjsruns1,769 bytes
  • scripts/lines-round.test.mjsruns2,458 bytes
  • scripts/lines-rounded-rect.test.mjsruns2,527 bytes
  • scripts/lines.mjsruns1,700 bytes
  • scripts/lines.test.mjsruns1,537 bytes
  • scripts/navigation.test.mjsruns2,255 bytes
  • scripts/orbit-sampling.test.mjsruns2,810 bytes
  • scripts/print-sheet.mjsruns29,023 bytes
  • scripts/print-sheet.test.mjsruns6,734 bytes
  • scripts/print.mjsruns14,801 bytes
  • scripts/publish.mjsruns20,276 bytes
  • scripts/publish.test.mjsruns7,780 bytes
  • scripts/react-dots-opacity.test.mjsruns2,817 bytes
  • scripts/react-readout-first-write.test.mjsruns3,846 bytes
  • scripts/react-readout-target.test.mjsruns4,657 bytes
  • scripts/react-solid-seamless.test.mjsruns2,752 bytes
  • scripts/react-visibility-target.test.mjsruns3,844 bytes
  • scripts/session.mjsruns4,834 bytes
  • scripts/session.test.mjsruns2,663 bytes
  • scripts/turn-audit-samples.test.mjsruns1,370 bytes
  • scripts/turn-bench.mjsruns3,863 bytes
  • scripts/turn-check.mjsruns38,355 bytes
  • scripts/turn-convex-check.test.mjsruns1,875 bytes
  • scripts/turn-fidelity.mjsruns20,340 bytes
  • scripts/turn-group-reference.test.mjsruns2,174 bytes
  • scripts/turn-rounded-polygon.test.mjsruns1,533 bytes
  • scripts/turn-split-owner.test.mjsruns3,411 bytes
  • tests/fixtures/react-dots-dark.pngasset4,032 bytes
  • tests/fixtures/react-dots-light.pngasset3,848 bytes
  • tests/fixtures/react-solid-dark.pngasset9,416 bytes
  • tests/fixtures/react-solid-light.pngasset9,847 bytes
Read SKILL.md

# Anatomy

This skill makes figures like a small instrument on a bench: a heavy base on feet, rails with tick rulers, a carriage on bushings, knurled knobs, coil springs, a dial gauge whose needle moves, screws as tiny dots. The reader understands the idea because they recognise the machine. Every number the figure shows comes from the same model that moves its parts.

Eight complete examples ship with the skill. Open the closest one before you start. Each framework-free example is built with `node examples/<name>/build.mjs`, which writes a standalone HTML page next to the script; add `--light` for the light theme.

- `examples/dial-indicator/` is the smallest: a dial gauge on a stand, about 300 lines in all.
- `examples/desk-computer/` is framework-free SVG: a desk computer with a keyboard you can type on. The typed line appears on a CRT screen drawn in the plane of the case front, and the picture collapses to a line and a dot when you switch it off. It has about 85 solids and 850 paths.
- `examples/arcade-cabinet/` is an upright arcade cabinet with its side panel off, a Hero of about 240 solids and 15 cables. A quarter flies into the slot, rolls down the coin chute at the speed a rolling disc reaches on a 30° slope, trips the coin-switch wire and drops into the cash box; the switch's pulse runs chunk by chunk along its cable to the board, and the CRT warms up, self-tests and runs an attract mode drawn in the plane of the tilted monitor. The stick tilts and closes a microswitch under the panel. It shows how to place a camera so a cutaway's mechanism stays in view, a concave board drawn as a prism along any axis, moving parts rebuilt in the page from the same module the build uses, and live coins and a wire drawn in reserved slots of the settled order. `node build.mjs --audit` proves the geometry.
- `examples/raptor-engine/` is a rocket engine hanging in a test stand. Its round parts come from `kit/lathe.mjs` and its pipes and harness from `kit/tube.mjs`. It comes apart into 11 assemblies with staggered springs and per-frame depth re-sorting. Every part records its true shape, and `node build.mjs --audit` (`kit/audit.mjs`) proves, at rest, apart and in every replayed frame of the explode, that nothing passes through anything, that every end sits on a real mount, that no bend pinches, folds or lands on another line, that no curved profile's slope wobbles, and that every overlap is drawn in depth order. A WebGL plume, shock, splash and steam render between the back and front SVG. It is the reference for dense pipework, smooth shading and fades.
- `examples/ripple-tank/` is a school ripple tank on tall legs over a paper screen, seen from 44° up. Two WebGL layers (lamp light, shadows and caustics on the paper, and the water's reflections and glass) are registered to the isometric planes and driven by a pure dispersion and optics model (`model.mjs`); a frequency change travels out from the dippers through a history texture.
- `examples/test-rig/` is a production figure from a real site (React/Next): a glass button on a spring-mounted carriage, a finger probe on a rail that presses and pulls, and a dial gauge reading the lean. It has 53 solids and about 470 paths.
- `examples/spot-plate/` is a second production figure from the same site: six pairs of glass drops on a spot plate, each pair drawn from one distance field, so a pair closer than `merge` runs together into one piece of glass. A fan of feeler blades sets `merge`, one blade per gap. It is the reference for shapes that morph into each other and for one control driving many parts.
- `examples/turning-dial/` is the optional 3D mode: a combination dial that turns in true 3D with a small robot hand on it. It has about 90 live parts in metal materials, a second turn group, a hinge, a three-hinge finger that lifts and a pod that breaks off as a free body. A WebGL LED, its light pool and sparks follow the moving parts. `stress.mjs` beside it is a dense hand of about 380 parts in a cluttered workshop, used to measure performance.
View the complete source on GitHub

Skills included

  • anatomy

Repository facts

License
MIT
Created
Oct 8, 2026
Last pushed
Oct 18, 2026
Forks
2,113
Open issues
16
Project activity
Active

Rank over the last 12 weeks

Now #81 · best #81 · up 840 in 30 days

  1. #85 on Oct 30
  2. #84 on Oct 31
  3. #83 on Nov 1
  4. #82 on Nov 2
  5. #83 on Nov 3
  6. #81 since Nov 4
19 earlier periods
  1. #921 on Oct 4
  2. #918 on Oct 10
  3. #272 on Oct 11
  4. #198 on Oct 12
  5. #157 on Oct 13
  6. #129 on Oct 14
  7. #113 on Oct 15
  8. #110 on Oct 16
  9. #106 on Oct 17
  10. #105 on Oct 18
  11. #101 on Oct 19
  12. #100 on Oct 20
  13. #95 on Oct 21
  14. #93 on Oct 22
  15. #90 on Oct 23
  16. #88 on Oct 24
  17. #89 on Oct 25
  18. #85 on Oct 28
  19. #84 on Oct 29

Before you install

Network or broad shell

Automated signals, not a guarantee

Checked Nov 2, 2026

Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.

Show 68 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
  • examples/arcade-cabinet/arcade-cabinet-light.html:161 Analysis incomplete: physical or joined line exceeds character limit
  • examples/arcade-cabinet/arcade-cabinet-light.html:159 Analysis incomplete: physical or joined line exceeds character limit
  • examples/arcade-cabinet/arcade-cabinet-light.html:160 Analysis incomplete: physical or joined line exceeds character limit
  • examples/arcade-cabinet/arcade-cabinet-light.html:2225 Analysis incomplete: physical or joined line exceeds character limit
  • examples/arcade-cabinet/arcade-cabinet.html:161 Analysis incomplete: physical or joined line exceeds character limit
  • examples/arcade-cabinet/arcade-cabinet.html:159 Analysis incomplete: physical or joined line exceeds character limit
  • examples/arcade-cabinet/arcade-cabinet.html:160 Analysis incomplete: physical or joined line exceeds character limit
  • examples/arcade-cabinet/arcade-cabinet.html:2225 Analysis incomplete: physical or joined line exceeds character limit
  • examples/desk-computer/desk-computer-light.html:137 Analysis incomplete: physical or joined line exceeds character limit
  • examples/desk-computer/desk-computer-light.html:135 Analysis incomplete: physical or joined line exceeds character limit
  • examples/desk-computer/desk-computer-light.html:136 Analysis incomplete: physical or joined line exceeds character limit
  • examples/desk-computer/desk-computer.html:137 Analysis incomplete: physical or joined line exceeds character limit
  • examples/desk-computer/desk-computer.html:135 Analysis incomplete: physical or joined line exceeds character limit
  • examples/desk-computer/desk-computer.html:136 Analysis incomplete: physical or joined line exceeds character limit
  • examples/dial-indicator/dial-indicator-light.html:114 Analysis incomplete: physical or joined line exceeds character limit
Show all 330 signals by file

.github/ISSUE_TEMPLATE/config.yml

  • Network accessline 2
    contact_links:   - name: Security problem     url: https://github.com/wheresryan22/anatomy/security/advisories/new
  • Network accessline 3
    - name: Security problem     url: https://github.com/wheresryan22/anatomy/security/advisories/new     about: Report security problems privately, not in a public issue.
  • Network accessline 4
    url: https://github.com/wheresryan22/anatomy/security/advisories/new

.github/workflows/ci.yml

  • Dangerous shell operationline 31
    trap 'rm -rf "$test_deps"' EXIT

.gitignore

  • Access to secretsline 5
    [Credential-related source omitted]

CHANGELOG.md

  • Network accessline 3
    All notable changes to Anatomy are recorded here. The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/). Releases follow [Semantic Versioning](https://semver.org/spec/v2.0.0.html); entries from before the first release
  • Network accessline 15
    - A Figure no longer quotes a time to the user. The 30–90 minute estimate was often far longer than the build itself ([#41](https://github.com/wheresryan22/anatomy/issues/41)).

CODE_OF_CONDUCT.md

  • Network accessline 61
    Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement by direct message to [@wheresryan22](https://x.com/wheresryan22) on X, or, when the report does
  • Network accessline 62
    reported to the community leaders responsible for enforcement by direct message to [@wheresryan22](https://x.com/wheresryan22) on X, or, when the report does not need to be private, through an issue on the
  • Network accessline 63
    to [@wheresryan22](https://x.com/wheresryan22) on X, or, when the report does
  • Network accessline 64
    not need to be private, through an issue on the [GitHub repository](https://github.com/wheresryan22/anatomy/issues). All complaints will be reviewed and investigated promptly and fairly.
  • Network accessline 65
    [GitHub repository](https://github.com/wheresryan22/anatomy/issues).
  • Network accessline 119
    This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 2.1, available at [https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
  • Network accessline 121
    [https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1].
  • Network accessline 126
    For answers to common questions about this code of conduct, see the FAQ at [https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
  • Network accessline 127
    [https://www.contributor-covenant.org/faq][FAQ]. Translations are available at
  • Network accessline 128
    [https://www.contributor-covenant.org/translations][translations].
  • Network accessline 130
    [homepage]: https://www.contributor-covenant.org
  • Network accessline 131
    [v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html
  • Network accessline 132
    [Mozilla CoC]: https://github.com/mozilla/diversity
  • Network accessline 133
    [FAQ]: https://www.contributor-covenant.org/faq
  • Network accessline 134
    [translations]: https://www.contributor-covenant.org/translations

CONTRIBUTING.md

  • Network accessline 16
    git clone https://github.com/wheresryan22/anatomy.git
  • Network accessline 167
    Use the [issue forms](https://github.com/wheresryan22/anatomy/issues/new/choose). For a figure that came out wrong, include the prompt, the theme, where the figure lives (HTML, SVG or React), and a screenshot or close-up of the fault.

README.md

  • Network accessline 5
    <p align="center">   <a href="https://code.claude.com/docs/en/skills"><img src="https://img.shields.io/badge/Claude_Code-skill-1b1b19?style=flat-square&logo=claude&logoColor=white" alt="Claude Code skill"></a>
  • Network accessline 6
    <a href="https://code.claude.com/docs/en/skills"><img src="https://img.shields.io/badge/Claude_Code-skill-1b1b19?style=flat-square&logo=claude&logoColor=white" alt="Claude Code skill"></a>
  • Network accessline 7
    <a href="https://agentskills.io"><img src="https://img.shields.io/badge/Agent_Skills-compatible-1b1b19?style=flat-square" alt="Agent Skills compatible"></a>
  • Network accessline 8
    <a href="LICENSE"><img src="https://img.shields.io/badge/license-MIT-1b1b19?style=flat-square" alt="MIT license"></a>
  • Network accessline 9
    <a href="#requirements"><img src="https://img.shields.io/badge/node-%E2%89%A5%2020.10-1b1b19?style=flat-square&logo=nodedotjs&logoColor=white" alt="Node 20.10 or later"></a>
  • Network accessline 10
    <a href="#requirements"><img src="https://img.shields.io/badge/dependencies-0-1b1b19?style=flat-square" alt="No dependencies"></a>
  • Network accessline 11
    <a href="https://github.com/wheresryan22/anatomy/actions/workflows/ci.yml"><img src="https://github.com/wheresryan22/anatomy/actions/workflows/ci.yml/badge.svg" alt="CI"></a>
  • Network accessline 14
    <p align="center">   <a href="https://skills.wheresryan.sh/anatomy"><img src="https://img.shields.io/badge/Website-skills.wheresryan.sh%2Fanatomy-1b1b19?style=for-the-badge" alt="Website: skills.wheresryan.sh/anatomy"></a>
  • Network accessline 15
    <a href="https://skills.wheresryan.sh/anatomy"><img src="https://img.shields.io/badge/Website-skills.wheresryan.sh%2Fanatomy-1b1b19?style=for-the-badge" alt="Website: skills.wheresryan.sh/anatomy"></a>   &nbsp;   <a href="https://github.com
  • Network accessline 16
    &nbsp;   <a href="https://github.com/wheresryan22/anatomy/archive/refs/heads/main.zip"><img src="https://img.shields.io/badge/Download-ZIP-1b1b19?style=for-the-badge&logo=github&logoColor=white" alt="Download ZIP"></a>   &nbsp;
  • Network accessline 17
    <a href="https://github.com/wheresryan22/anatomy/archive/refs/heads/main.zip"><img src="https://img.shields.io/badge/Download-ZIP-1b1b19?style=for-the-badge&logo=github&logoColor=white" alt="Download ZIP"></a>
  • Network accessline 18
    &nbsp;   <a href="#install"><img src="https://img.shields.io/badge/Install-npx_skills_add-d7d7d0?style=for-the-badge&labelColor=1b1b19&logo=npm&logoColor=white" alt="Install with npx"></a> </p>
  • Network accessline 19
    <a href="#install"><img src="https://img.shields.io/badge/Install-npx_skills_add-d7d7d0?style=for-the-badge&labelColor=1b1b19&logo=npm&logoColor=white" alt="Install with npx"></a>
  • Network accessline 100
    Anatomy is a standard [Agent Skill](https://agentskills.io): a folder with a `SKILL.md` at its root. This repository is that folder. Pick one way in:
  • Network accessline 108
    | **skills CLI**, for you (MiniMax Code) | `npx skills add wheresryan22/anatomy -g -a minimax-code` | `~/.minimax/skills/anatomy` | | **skills CLI**, for one project | `npx skills add wheresryan22/anatomy` | `.claude/skills/anatomy` for Cla
  • Network accessline 109
    | **skills CLI**, for one project | `npx skills add wheresryan22/anatomy` | `.claude/skills/anatomy` for Claude Code, `.agents/skills/anatomy` for Antigravity, OpenCode and Codex, `.minimax/skills/anatomy` for MiniMax Code | | **git**, for 
  • Network accessline 110
    | **git**, for you (Claude Code) | `git clone https://github.com/wheresryan22/anatomy.git ~/.claude/skills/anatomy` | `~/.claude/skills/anatomy` |
  • Network accessline 111
    | **git**, for you (Antigravity) | `git clone https://github.com/wheresryan22/anatomy.git ~/.gemini/antigravity/skills/anatomy` | `~/.gemini/antigravity/skills/anatomy` |
  • Network accessline 112
    | **git**, for you (OpenCode) | `git clone https://github.com/wheresryan22/anatomy.git ~/.config/opencode/skills/anatomy` | `~/.config/opencode/skills/anatomy` |
  • Network accessline 113
    | **git**, for you (Codex) | `git clone https://github.com/wheresryan22/anatomy.git ~/.agents/skills/anatomy` | `~/.agents/skills/anatomy` |
  • Network accessline 114
    | **git**, for you (MiniMax Code) | `git clone https://github.com/wheresryan22/anatomy.git ~/.minimax/skills/anatomy` | `~/.minimax/skills/anatomy` | | **git**, for one project | `git clone https://github.com/wheresryan22/anatomy.git .claud
  • Network accessline 115
    | **git**, for one project | `git clone https://github.com/wheresryan22/anatomy.git .claude/skills/anatomy` | `.claude/skills/anatomy` (Claude Code and OpenCode) or `.agents/skills/anatomy` (Antigravity, OpenCode, Codex and MiniMax Code) |
  • Network accessline 123
    The [`skills`](https://github.com/vercel-labs/skills) CLI finds the `SKILL.md` at the root of this repository and installs it as `anatomy`. By default it installs into the current project and asks which agents to set up. `-g` installs it fo
  • Network accessline 143
    [Download the ZIP](https://github.com/wheresryan22/anatomy/archive/refs/heads/main.zip), unpack it, rename the folder from `anatomy-main` to `anatomy`, and move it into `~/.claude/skills/` (Claude Code), `~/.gemini/antigravity/skills/` (Ant
  • Network accessline 148
    mkdir -p ~/.claude/skills/anatomy && curl -L https://github.com/wheresryan22/anatomy/archive/refs/heads/main.tar.gz | tar -xz --strip-components=1 -C ~/.claude/skills/anatomy
  • Network accessline 154
    mkdir -p ~/.gemini/antigravity/skills/anatomy && curl -L https://github.com/wheresryan22/anatomy/archive/refs/heads/main.tar.gz | tar -xz --strip-components=1 -C ~/.gemini/antigravity/skills/anatomy
  • Network accessline 158
    mkdir -p ~/.config/opencode/skills/anatomy && curl -L https://github.com/wheresryan22/anatomy/archive/refs/heads/main.tar.gz | tar -xz --strip-components=1 -C ~/.config/opencode/skills/anatomy
  • Network accessline 299
    | | Needed for | Notes | |---|---|---| | **[Claude Code](https://code.claude.com/docs/en/overview)**, or [Antigravity](https://antigravity.google), [OpenCode](https://opencode.ai/docs/skills/), [Codex](https://developers.openai.com/codex/sk
  • Network accessline 300
    |---|---|---| | **[Claude Code](https://code.claude.com/docs/en/overview)**, or [Antigravity](https://antigravity.google), [OpenCode](https://opencode.ai/docs/skills/), [Codex](https://developers.openai.com/codex/skills) or [MiniMax Code](h
  • Network accessline 301
    | **[Claude Code](https://code.claude.com/docs/en/overview)**, or [Antigravity](https://antigravity.google), [OpenCode](https://opencode.ai/docs/skills/), [Codex](https://developers.openai.com/codex/skills) or [MiniMax Code](https://github.
  • Network accessline 318
    Made something good? Ask your agent to *"publish this figure to the Anatomy community gallery"*. It asks for a title and your GitHub name, shows what it will send, and after your yes opens a pull request on [anatomy-community](https://githu
  • Network accessline 324
    - [Report a bug](https://github.com/wheresryan22/anatomy/issues/new?template=bug_report.yml)
  • Network accessline 325
    - [Request a figure](https://github.com/wheresryan22/anatomy/issues/new?template=figure_request.yml)
  • Network accessline 330
    [MIT](LICENSE) © 2026 Ryan · [@wheresryan22](https://x.com/wheresryan22)

SECURITY.md

  • Network accessline 15
    Please don't open a public issue for a security problem. Report it privately through GitHub's [private vulnerability reporting](https://github.com/wheresryan22/anatomy/security/advisories/new) for this repository. If that link does not work

examples/arcade-cabinet/arcade-cabinet-light.html

  • Network accessline 159
    .iso-plate-pdf:hover,.iso-plate-pdf:focus-visible{color:var(--anatomy-strong);background:color-mix(in srgb,var(--anatomy-text) 14%,transparent);outline:none} .iso-plate-pdf svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-wid
  • Network accessline 160
    .iso-plate-pdf svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:1.3;stroke-linecap:round;stroke-linejoin:round} .iso-plate:has(.iso-plate-pdf) .iso-plate-corner[data-corner="title"]{right:52px}</style><a class="iso-plat
  • Network accessline 161
    .iso-plate:has(.iso-plate-pdf) .iso-plate-corner[data-corner="title"]{right:52px}</style><a class="iso-plate-pdf" href="arcade-cabinet-poster-a4.pdf" target="_blank" rel="noopener" aria-label="Open the printable PDF"><svg viewBox="0 0 12 12
  • Network accessline 692
    const style = standalone ? `<style>${ISO_CSS}</style>` : "";     return `<svg${attrs({         xmlns: "http://www.w3.org/2000/svg",
  • Network accessline 693
    return `<svg${attrs({         xmlns: "http://www.w3.org/2000/svg",         class: `iso-svg${standalone ? " iso" : ""}${className ? ` ${className}` : ""}`,
  • Network accessline 694
    xmlns: "http://www.w3.org/2000/svg",

examples/arcade-cabinet/arcade-cabinet.html

  • Network accessline 159
    .iso-plate-pdf:hover,.iso-plate-pdf:focus-visible{color:var(--anatomy-strong);background:color-mix(in srgb,var(--anatomy-text) 14%,transparent);outline:none} .iso-plate-pdf svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-wid
  • Network accessline 160
    .iso-plate-pdf svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:1.3;stroke-linecap:round;stroke-linejoin:round} .iso-plate:has(.iso-plate-pdf) .iso-plate-corner[data-corner="title"]{right:52px}</style><a class="iso-plat
  • Network accessline 161
    .iso-plate:has(.iso-plate-pdf) .iso-plate-corner[data-corner="title"]{right:52px}</style><a class="iso-plate-pdf" href="arcade-cabinet-poster-a4.pdf" target="_blank" rel="noopener" aria-label="Open the printable PDF"><svg viewBox="0 0 12 12
  • Network accessline 692
    const style = standalone ? `<style>${ISO_CSS}</style>` : "";     return `<svg${attrs({         xmlns: "http://www.w3.org/2000/svg",
  • Network accessline 693
    return `<svg${attrs({         xmlns: "http://www.w3.org/2000/svg",         class: `iso-svg${standalone ? " iso" : ""}${className ? ` ${className}` : ""}`,
  • Network accessline 694
    xmlns: "http://www.w3.org/2000/svg",

examples/arcade-cabinet/build.mjs

  • Executable scriptline 1
    Executable file

examples/arcade-cabinet/live.js

  • Executable scriptline 1
    Executable file

examples/arcade-cabinet/parts.mjs

  • Executable scriptline 1
    Executable file

examples/arcade-cabinet/screen.mjs

  • Executable scriptline 1
    Executable file

examples/arcade-cabinet/sheet.mjs

  • Executable scriptline 1
    Executable file

examples/desk-computer/build.mjs

  • Executable scriptline 1
    Executable file

examples/desk-computer/desk-computer-light.html

  • Network accessline 135
    .iso-stage:focus{outline:none} .iso-stage:focus-visible{outline:1px solid var(--anatomy-muted);outline-offset:6px} </style><figure class="iso-figure"><div class="iso-plate"><div class="iso-plate-corners" aria-hidden="true"><span class="iso-
  • Network accessline 136
    .iso-stage:focus-visible{outline:1px solid var(--anatomy-muted);outline-offset:6px} </style><figure class="iso-figure"><div class="iso-plate"><div class="iso-plate-corners" aria-hidden="true"><span class="iso-plate-corner" data-corner="fig"
  • Network accessline 137
    </style><figure class="iso-figure"><div class="iso-plate"><div class="iso-plate-corners" aria-hidden="true"><span class="iso-plate-corner" data-corner="fig">Fig 2</span><span class="iso-plate-corner" data-corner="title">Desk computer</span>
  • Network accessline 668
    const style = standalone ? `<style>${ISO_CSS}</style>` : "";     return `<svg${attrs({         xmlns: "http://www.w3.org/2000/svg",
  • Network accessline 669
    return `<svg${attrs({         xmlns: "http://www.w3.org/2000/svg",         class: `iso-svg${standalone ? " iso" : ""}${className ? ` ${className}` : ""}`,
  • Network accessline 670
    xmlns: "http://www.w3.org/2000/svg",

examples/desk-computer/desk-computer.html

  • Network accessline 135
    .iso-stage:focus{outline:none} .iso-stage:focus-visible{outline:1px solid var(--anatomy-muted);outline-offset:6px} </style><figure class="iso-figure"><div class="iso-plate"><div class="iso-plate-corners" aria-hidden="true"><span class="iso-
  • Network accessline 136
    .iso-stage:focus-visible{outline:1px solid var(--anatomy-muted);outline-offset:6px} </style><figure class="iso-figure"><div class="iso-plate"><div class="iso-plate-corners" aria-hidden="true"><span class="iso-plate-corner" data-corner="fig"
  • Network accessline 137
    </style><figure class="iso-figure"><div class="iso-plate"><div class="iso-plate-corners" aria-hidden="true"><span class="iso-plate-corner" data-corner="fig">Fig 2</span><span class="iso-plate-corner" data-corner="title">Desk computer</span>
  • Network accessline 668
    const style = standalone ? `<style>${ISO_CSS}</style>` : "";     return `<svg${attrs({         xmlns: "http://www.w3.org/2000/svg",
  • Network accessline 669
    return `<svg${attrs({         xmlns: "http://www.w3.org/2000/svg",         class: `iso-svg${standalone ? " iso" : ""}${className ? ` ${className}` : ""}`,
  • Network accessline 670
    xmlns: "http://www.w3.org/2000/svg",

examples/dial-indicator/build.mjs

  • Executable scriptline 1
    Executable file

examples/dial-indicator/dial-indicator-light.html

  • Network accessline 112
    body{margin:0;background:var(--anatomy-page);color:var(--anatomy-text);font:14px/1.6 ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;-webkit-font-smoothing:antialiased} .iso-page{width:min(650px,100% - 32px);margin:64px auto 96p
  • Network accessline 113
    .iso-page{width:min(650px,100% - 32px);margin:64px auto 96px} </style></head><body class="iso" data-theme="light"><main class="iso-page"><figure class="iso-figure"><div class="iso-plate"><div class="iso-plate-corners" aria-hidden="true"><sp
  • Network accessline 114
    </style></head><body class="iso" data-theme="light"><main class="iso-page"><figure class="iso-figure"><div class="iso-plate"><div class="iso-plate-corners" aria-hidden="true"><span class="iso-plate-corner" data-corner="fig">Fig 1</span><spa
  • Network accessline 645
    const style = standalone ? `<style>${ISO_CSS}</style>` : "";     return `<svg${attrs({         xmlns: "http://www.w3.org/2000/svg",
  • Network accessline 646
    return `<svg${attrs({         xmlns: "http://www.w3.org/2000/svg",         class: `iso-svg${standalone ? " iso" : ""}${className ? ` ${className}` : ""}`,
  • Network accessline 647
    xmlns: "http://www.w3.org/2000/svg",

examples/dial-indicator/dial-indicator.html

  • Network accessline 112
    body{margin:0;background:var(--anatomy-page);color:var(--anatomy-text);font:14px/1.6 ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;-webkit-font-smoothing:antialiased} .iso-page{width:min(650px,100% - 32px);margin:64px auto 96p
  • Network accessline 113
    .iso-page{width:min(650px,100% - 32px);margin:64px auto 96px} </style></head><body class="iso" data-theme="dark"><main class="iso-page"><figure class="iso-figure"><div class="iso-plate"><div class="iso-plate-corners" aria-hidden="true"><spa
  • Network accessline 114
    </style></head><body class="iso" data-theme="dark"><main class="iso-page"><figure class="iso-figure"><div class="iso-plate"><div class="iso-plate-corners" aria-hidden="true"><span class="iso-plate-corner" data-corner="fig">Fig 1</span><span
  • Network accessline 645
    const style = standalone ? `<style>${ISO_CSS}</style>` : "";     return `<svg${attrs({         xmlns: "http://www.w3.org/2000/svg",
  • Network accessline 646
    return `<svg${attrs({         xmlns: "http://www.w3.org/2000/svg",         class: `iso-svg${standalone ? " iso" : ""}${className ? ` ${className}` : ""}`,
  • Network accessline 647
    xmlns: "http://www.w3.org/2000/svg",

examples/push-button/build.mjs

  • Executable scriptline 1
    Executable file

examples/push-button/push-button-light.html

  • Network accessline 126
    .iso-plate-pdf:hover,.iso-plate-pdf:focus-visible{color:var(--anatomy-strong);background:color-mix(in srgb,var(--anatomy-text) 14%,transparent);outline:none} .iso-plate-pdf svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-wid
  • Network accessline 127
    .iso-plate-pdf svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:1.3;stroke-linecap:round;stroke-linejoin:round} .iso-plate:has(.iso-plate-pdf) .iso-plate-corner[data-corner="title"]{right:52px}</style><a class="iso-plat
  • Network accessline 128
    .iso-plate:has(.iso-plate-pdf) .iso-plate-corner[data-corner="title"]{right:52px}</style><a class="iso-plate-pdf" href="push-button-poster-a4.pdf" target="_blank" rel="noopener" aria-label="Open the printable PDF"><svg viewBox="0 0 12 12" a
  • Network accessline 659
    const style = standalone ? `<style>${ISO_CSS}</style>` : "";     return `<svg${attrs({         xmlns: "http://www.w3.org/2000/svg",
  • Network accessline 660
    return `<svg${attrs({         xmlns: "http://www.w3.org/2000/svg",         class: `iso-svg${standalone ? " iso" : ""}${className ? ` ${className}` : ""}`,
  • Network accessline 661
    xmlns: "http://www.w3.org/2000/svg",

examples/push-button/push-button.html

  • Network accessline 126
    .iso-plate-pdf:hover,.iso-plate-pdf:focus-visible{color:var(--anatomy-strong);background:color-mix(in srgb,var(--anatomy-text) 14%,transparent);outline:none} .iso-plate-pdf svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-wid
  • Network accessline 127
    .iso-plate-pdf svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:1.3;stroke-linecap:round;stroke-linejoin:round} .iso-plate:has(.iso-plate-pdf) .iso-plate-corner[data-corner="title"]{right:52px}</style><a class="iso-plat
  • Network accessline 128
    .iso-plate:has(.iso-plate-pdf) .iso-plate-corner[data-corner="title"]{right:52px}</style><a class="iso-plate-pdf" href="push-button-poster-a4.pdf" target="_blank" rel="noopener" aria-label="Open the printable PDF"><svg viewBox="0 0 12 12" a
  • Network accessline 659
    const style = standalone ? `<style>${ISO_CSS}</style>` : "";     return `<svg${attrs({         xmlns: "http://www.w3.org/2000/svg",
  • Network accessline 660
    return `<svg${attrs({         xmlns: "http://www.w3.org/2000/svg",         class: `iso-svg${standalone ? " iso" : ""}${className ? ` ${className}` : ""}`,
  • Network accessline 661
    xmlns: "http://www.w3.org/2000/svg",

examples/push-button/sheet.mjs

  • Executable scriptline 1
    Executable file

examples/raptor-engine/build.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 890
    const backSvg = k.figureSvg({ width: W, height: H, label: LABEL_TEXT, body: back, className: "rp-back" }); const frontSvg = `<svg xmlns="http://www.w3.org/2000/svg" class="iso-svg rp-front" viewBox="0 0 ${W} ${H}" aria-hidden="true"><g clas
  • Network accessline 891
    const frontSvg = `<svg xmlns="http://www.w3.org/2000/svg" class="iso-svg rp-front" viewBox="0 0 ${W} ${H}" aria-hidden="true"><g class="rp-engine">${groups.join("")}</g></svg>`;
  • Network accessline 924
    const corners = `<div class="iso-plate-corners" aria-hidden="true"><span class="iso-plate-corner" data-corner="fig">Fig 1</span><span class="iso-plate-corner" data-corner="title">Raptor 2 · test stand</span><span class="iso-plate-corner" da
  • Network accessline 925
    const controls = `<div class="rp-controls"><button type="button" class="rp-fire" data-fire><span class="rp-lamp" aria-hidden="true"></span><span data-fire-label>Ignite</span></button><span class="rp-hint">Hover the engine to take it apart</
  • Network accessline 926
    const glowSvg = `<svg xmlns="http://www.w3.org/2000/svg" class="iso-svg rp-glow" viewBox="0 0 ${W} ${H}" aria-hidden="true"><g class="rp-glow-g"><path class="rp-rim rp-rim-soft" d="${LIP}"/><path class="rp-rim" d="${LIP}"/></g></svg>`;

examples/raptor-engine/live.js

  • Executable scriptline 1
    Executable file

examples/raptor-engine/raptor-engine-light.html

  • Network accessline 474
    .iso-plate-pdf:hover,.iso-plate-pdf:focus-visible{color:var(--anatomy-strong);background:color-mix(in srgb,var(--anatomy-text) 14%,transparent);outline:none} .iso-plate-pdf svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-wid
  • Network accessline 476
    .iso-plate:has(.iso-plate-pdf) .iso-plate-corner[data-corner="title"]{right:52px}</style><a class="iso-plate-pdf" href="raptor-engine-poster-a4.pdf" target="_blank" rel="noopener" aria-label="Open the printable PDF"><svg viewBox="0 0 12 12"

examples/raptor-engine/raptor-engine.html

  • Network accessline 474
    .iso-plate-pdf:hover,.iso-plate-pdf:focus-visible{color:var(--anatomy-strong);background:color-mix(in srgb,var(--anatomy-text) 14%,transparent);outline:none} .iso-plate-pdf svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-wid
  • Network accessline 476
    .iso-plate:has(.iso-plate-pdf) .iso-plate-corner[data-corner="title"]{right:52px}</style><a class="iso-plate-pdf" href="raptor-engine-poster-a4.pdf" target="_blank" rel="noopener" aria-label="Open the printable PDF"><svg viewBox="0 0 12 12"

examples/raptor-engine/sheet.mjs

  • Executable scriptline 1
    Executable file

examples/ripple-tank/build.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 529
    const backSvg = k.figureSvg({ width: W, height: H, label: LABEL_TEXT, body: back, className: "rt-back" }); const layerSvg = (name, body) => `<svg xmlns="http://www.w3.org/2000/svg" class="iso-svg rt-layer ${name}" viewBox="0 0 ${W} ${H}" ar
  • Network accessline 530
    const layerSvg = (name, body) => `<svg xmlns="http://www.w3.org/2000/svg" class="iso-svg rt-layer ${name}" viewBox="0 0 ${W} ${H}" aria-hidden="true">${body.join("")}</svg>`;

examples/ripple-tank/live.js

  • Executable scriptline 1
    Executable file

examples/ripple-tank/model.mjs

  • Executable scriptline 1
    Executable file

examples/ripple-tank/ripple-tank-light.html

  • Network accessline 215
    } } </style><div class="rt"><figure class="iso-figure"><div class="iso-plate"><div class="iso-plate-corners" aria-hidden="true"><span class="iso-plate-corner" data-corner="fig">Fig 3</span><span class="iso-plate-corner" data-corner="title">
  • Network accessline 216
    } </style><div class="rt"><figure class="iso-figure"><div class="iso-plate"><div class="iso-plate-corners" aria-hidden="true"><span class="iso-plate-corner" data-corner="fig">Fig 3</span><span class="iso-plate-corner" data-corner="title">Ri
  • Network accessline 217
    </style><div class="rt"><figure class="iso-figure"><div class="iso-plate"><div class="iso-plate-corners" aria-hidden="true"><span class="iso-plate-corner" data-corner="fig">Fig 3</span><span class="iso-plate-corner" data-corner="title">Ripp
  • Network accessline 748
    const style = standalone ? `<style>${ISO_CSS}</style>` : "";     return `<svg${attrs({         xmlns: "http://www.w3.org/2000/svg",
  • Network accessline 749
    return `<svg${attrs({         xmlns: "http://www.w3.org/2000/svg",         class: `iso-svg${standalone ? " iso" : ""}${className ? ` ${className}` : ""}`,
  • Network accessline 750
    xmlns: "http://www.w3.org/2000/svg",

examples/ripple-tank/ripple-tank.html

  • Network accessline 215
    } } </style><div class="rt"><figure class="iso-figure"><div class="iso-plate"><div class="iso-plate-corners" aria-hidden="true"><span class="iso-plate-corner" data-corner="fig">Fig 3</span><span class="iso-plate-corner" data-corner="title">
  • Network accessline 216
    } </style><div class="rt"><figure class="iso-figure"><div class="iso-plate"><div class="iso-plate-corners" aria-hidden="true"><span class="iso-plate-corner" data-corner="fig">Fig 3</span><span class="iso-plate-corner" data-corner="title">Ri
  • Network accessline 217
    </style><div class="rt"><figure class="iso-figure"><div class="iso-plate"><div class="iso-plate-corners" aria-hidden="true"><span class="iso-plate-corner" data-corner="fig">Fig 3</span><span class="iso-plate-corner" data-corner="title">Ripp
  • Network accessline 748
    const style = standalone ? `<style>${ISO_CSS}</style>` : "";     return `<svg${attrs({         xmlns: "http://www.w3.org/2000/svg",
  • Network accessline 749
    return `<svg${attrs({         xmlns: "http://www.w3.org/2000/svg",         class: `iso-svg${standalone ? " iso" : ""}${className ? ` ${className}` : ""}`,
  • Network accessline 750
    xmlns: "http://www.w3.org/2000/svg",

examples/spot-plate/art.tsx

  • Executable scriptline 1
    Executable file

examples/spot-plate/drops.ts

  • Executable scriptline 1
    Executable file

examples/spot-plate/fan.ts

  • Executable scriptline 1
    Executable file

examples/spot-plate/figure.tsx

  • Executable scriptline 1
    Executable file

examples/spot-plate/geometry.ts

  • Executable scriptline 1
    Executable file

examples/spot-plate/live.tsx

  • Executable scriptline 1
    Executable file

examples/spot-plate/rig.ts

  • Executable scriptline 1
    Executable file

examples/test-rig/art.tsx

  • Executable scriptline 1
    Executable file

examples/test-rig/figure.tsx

  • Executable scriptline 1
    Executable file

examples/test-rig/geometry.ts

  • Executable scriptline 1
    Executable file

examples/test-rig/live.tsx

  • Executable scriptline 1
    Executable file

examples/test-rig/pose.ts

  • Executable scriptline 1
    Executable file

examples/test-rig/rig.ts

  • Executable scriptline 1
    Executable file

examples/test-rig/view.ts

  • Executable scriptline 1
    Executable file

examples/turning-dial/build.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 449
    const LABEL = "A combination dial on a raised door plate. A small robot hand lies on the dial's hub and turns with it: a palm with a cover plate, a connector block, a piston on two saddles with a ball joint, three jointed fingers whose tips
  • Network accessline 450
    const backSvg = k.figureSvg({ width: WIDTH, height: HEIGHT, label: LABEL, body: BACK }); const staticSvg = (list) => `<svg xmlns="http://www.w3.org/2000/svg" class="iso-svg iso-layer" viewBox="0 0 ${WIDTH} ${HEIGHT}" aria-hidden="true">${li
  • Network accessline 451
    const staticSvg = (list) => `<svg xmlns="http://www.w3.org/2000/svg" class="iso-svg iso-layer" viewBox="0 0 ${WIDTH} ${HEIGHT}" aria-hidden="true">${list.join("")}</svg>`;

examples/turning-dial/live.js

  • Executable scriptline 1
    Executable file

examples/turning-dial/stress.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 191
    for (let f = 0; f < 5; f++) {     const tag = f < 4 ? `f${f}` : "thumb";     const curl = (Math.sin(t * 1.3 + f * 0.9) * 0.5 + 0.5) * lift;
  • Network accessline 192
    const tag = f < 4 ? `f${f}` : "thumb";     const curl = (Math.sin(t * 1.3 + f * 0.9) * 0.5 + 0.5) * lift;     out[`${tag}.j0`] = -5 + 10 * curl;
  • Network accessline 193
    const curl = (Math.sin(t * 1.3 + f * 0.9) * 0.5 + 0.5) * lift;
  • Network accessline 223
    const BACK = [`<path class="iso-halo" d="${k.haloOf(BENCH, BENCH_TOP - 6, 6, P)}"/>`, ...layerOf("back")]; const backSvg = k.figureSvg({ width: WIDTH, height: HEIGHT, label: "A dense robot hand on a turntable in a workshop: a stress scene f
  • Network accessline 224
    const backSvg = k.figureSvg({ width: WIDTH, height: HEIGHT, label: "A dense robot hand on a turntable in a workshop: a stress scene for the 3D mode.", body: BACK }); const staticSvg = (list) => `<svg xmlns="http://www.w3.org/2000/svg" class
  • Network accessline 225
    const staticSvg = (list) => `<svg xmlns="http://www.w3.org/2000/svg" class="iso-svg iso-layer" viewBox="0 0 ${WIDTH} ${HEIGHT}" aria-hidden="true">${list.join("")}</svg>`;

examples/turning-dial/turning-dial-light.html

  • Network accessline 167
    .td-led-core{fill:var(--td-led-pale)} .td-stage[data-gl] .td-led{opacity:var(--td-fallback,0)} </style><div class="iso-stage iso-turn td-stage" tabindex="0" role="slider" aria-label="Combination dial: drag around the dial or use the arrow k
  • Network accessline 168
    .td-stage[data-gl] .td-led{opacity:var(--td-fallback,0)} </style><div class="iso-stage iso-turn td-stage" tabindex="0" role="slider" aria-label="Combination dial: drag around the dial or use the arrow keys to turn it, press B to break the p
  • Network accessline 169
    </style><div class="iso-stage iso-turn td-stage" tabindex="0" role="slider" aria-label="Combination dial: drag around the dial or use the arrow keys to turn it, press B to break the pod off" aria-valuemin="0" aria-valuemax="99" aria-valueno

examples/turning-dial/turning-dial-verify-light.html

  • Network accessline 167
    .td-led-core{fill:var(--td-led-pale)} .td-stage[data-gl] .td-led{opacity:var(--td-fallback,0)} </style><div class="iso-stage iso-turn td-stage" tabindex="0" role="slider" aria-label="Combination dial: drag around the dial or use the arrow k
  • Network accessline 168
    .td-stage[data-gl] .td-led{opacity:var(--td-fallback,0)} </style><div class="iso-stage iso-turn td-stage" tabindex="0" role="slider" aria-label="Combination dial: drag around the dial or use the arrow keys to turn it, press B to break the p
  • Network accessline 169
    </style><div class="iso-stage iso-turn td-stage" tabindex="0" role="slider" aria-label="Combination dial: drag around the dial or use the arrow keys to turn it, press B to break the pod off" aria-valuemin="0" aria-valuemax="99" aria-valueno

examples/turning-dial/turning-dial.html

  • Network accessline 167
    .td-led-core{fill:var(--td-led-pale)} .td-stage[data-gl] .td-led{opacity:var(--td-fallback,0)} </style><div class="iso-stage iso-turn td-stage" tabindex="0" role="slider" aria-label="Combination dial: drag around the dial or use the arrow k
  • Network accessline 168
    .td-stage[data-gl] .td-led{opacity:var(--td-fallback,0)} </style><div class="iso-stage iso-turn td-stage" tabindex="0" role="slider" aria-label="Combination dial: drag around the dial or use the arrow keys to turn it, press B to break the p
  • Network accessline 169
    </style><div class="iso-stage iso-turn td-stage" tabindex="0" role="slider" aria-label="Combination dial: drag around the dial or use the arrow keys to turn it, press B to break the pod off" aria-valuemin="0" aria-valuemax="99" aria-valueno

examples/turning-dial/turning-stress-light.html

  • Network accessline 157
    .iso-turn{position:relative} .iso-turn>.iso-layer{position:absolute;inset:0;width:100%;height:100%;pointer-events:none} .ts-stage{outline:none}</style><div class="iso-stage iso-turn ts-stage" tabindex="0" role="img" aria-label="A dense robo
  • Network accessline 158
    .iso-turn>.iso-layer{position:absolute;inset:0;width:100%;height:100%;pointer-events:none} .ts-stage{outline:none}</style><div class="iso-stage iso-turn ts-stage" tabindex="0" role="img" aria-label="A dense robot hand turning on a turntable
  • Network accessline 159
    .ts-stage{outline:none}</style><div class="iso-stage iso-turn ts-stage" tabindex="0" role="img" aria-label="A dense robot hand turning on a turntable"><svg xmlns="http://www.w3.org/2000/svg" class="iso-svg" viewBox="0 0 760 560" role="img" 

kit/audit.mjs

  • Executable scriptline 1
    Executable file
  • Dangerous shell operationline 230
    const rm = Math.max(...poly.map(([, r]) => r));
  • Dangerous shell operationline 233
    const spread = [0, 1, 2].map((i) => rm * Math.sqrt(Math.max(0, 1 - F.a[i] * F.a[i])));
  • Dangerous shell operationline 340
    const { aV, uV, vV, s0, s1, rm } = shape._f;
  • Dangerous shell operationline 356
    const qc = xc * xc + yc * yc - rm * rm;
  • Dangerous shell operationline 362
    } else if (xc * xc + yc * yc > rm * rm) return null;

kit/canvas-painter.mjs

  • Network accessline 1
    const CP_Q = 64; const CP_SVG = "http://www.w3.org/2000/svg";
  • Executable scriptline 1
    Executable file
  • Network accessline 2
    const CP_SVG = "http://www.w3.org/2000/svg";
  • Network accessline 689
    const theme = holder ? holder.getAttribute("data-theme") : "dark";       const card = getComputedStyle(stage.closest(".iso-plate") || stage).getPropertyValue("--anatomy-card").trim() || "#fff";       return `<svg xmlns="http://www.w3.org/20
  • Network accessline 690
    const card = getComputedStyle(stage.closest(".iso-plate") || stage).getPropertyValue("--anatomy-card").trim() || "#fff";       return `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ${W} ${H}" width="${W}" height="${H}"><style>${css.r
  • Network accessline 691
    return `<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ${W} ${H}" width="${W}" height="${H}"><style>${css.replace(/<\/style/gi, "")}</style><g class="iso" data-theme="${theme}"><g class="iso-plate" style="padding:0;box-shadow:none">${

kit/gl-shared.mjs

  • Executable scriptline 1
    Executable file

kit/gl.mjs

  • Executable scriptline 1
    Executable file

kit/iso-kit.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 532
    const style = standalone ? `<style>${ISO_CSS}</style>` : "";     return `<svg${attrs({         xmlns: "http://www.w3.org/2000/svg",
  • Network accessline 533
    return `<svg${attrs({         xmlns: "http://www.w3.org/2000/svg",         class: `iso-svg${standalone ? " iso" : ""}${className ? ` ${className}` : ""}`,
  • Network accessline 534
    xmlns: "http://www.w3.org/2000/svg",

kit/iso-kit.ts

  • Executable scriptline 1
    Executable file
  • Network accessline 669
    const style = standalone ? `<style>${ISO_CSS}</style>` : "";   return `<svg${attrs({     xmlns: "http://www.w3.org/2000/svg",
  • Network accessline 670
    return `<svg${attrs({     xmlns: "http://www.w3.org/2000/svg",     class: `iso-svg${standalone ? " iso" : ""}${className ? ` ${className}` : ""}`,
  • Network accessline 671
    xmlns: "http://www.w3.org/2000/svg",

kit/lathe.mjs

  • Executable scriptline 1
    Executable file

kit/pdf-button.mjs

  • Executable scriptline 1
    Executable file

kit/react/draw.tsx

  • Executable scriptline 1
    Executable file

kit/react/live.tsx

  • Executable scriptline 1
    Executable file

kit/tube.mjs

  • Executable scriptline 1
    Executable file

kit/turn-audit.mjs

  • Executable scriptline 1
    Executable file
  • Dangerous shell operationline 763
    for (const Rm of rotations) {
  • Dangerous shell operationline 764
    const t = Rm ? apply(Rm, t0) : t0;

kit/turn-build.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 1275
    };   const out = { svg: markup, data: packed, css: TURN_CSS, report, scene, frames, planesByName };   out.layerSvg = (name, { width, height, label = "" }) => `<svg xmlns="http://www.w3.org/2000/svg" class="iso-svg iso-live iso-layer" data-l
  • Network accessline 1276
    const out = { svg: markup, data: packed, css: TURN_CSS, report, scene, frames, planesByName };   out.layerSvg = (name, { width, height, label = "" }) => `<svg xmlns="http://www.w3.org/2000/svg" class="iso-svg iso-live iso-layer" data-live="
  • Network accessline 1277
    out.layerSvg = (name, { width, height, label = "" }) => `<svg xmlns="http://www.w3.org/2000/svg" class="iso-svg iso-live iso-layer" data-live="${esc(name)}" viewBox="0 0 ${width} ${height}" aria-hidden="true"${label ? ` aria-label="${esc(la

kit/turn-fixed.mjs

  • Executable scriptline 1
    Executable file
  • Possible obfuscationline 463
    const text = atob(value);

kit/turn.mjs

  • Executable scriptline 1
    Executable file
  • Possible obfuscationline 428
    const text = atob(value);

references/verify.md

  • Network accessline 14
    node scripts/capture.mjs page.html --out shots/joint.png --zoom 200,80,220,170  # close-up at 4x, in card px node scripts/capture.mjs page.html --out shots/still.png --reduced              # reduced motion node scripts/capture.mjs http://lo
  • Network accessline 16
    node scripts/capture.mjs http://localhost:3000/docs --select "figure:nth-of-type(3) .iso-plate"   # one figure on a dev-server page

references/webgl.md

  • Network accessline 166
    const DATA = { W, H, camera: glCamera(P), plateR: 40, deck: [DECK.w / 2, DECK.r] }; const backSvg = k.figureSvg({ width: W, height: H, label: LABEL, body: back }); const frontSvg = `<svg xmlns="http://www.w3.org/2000/svg" class="iso-svg fx-
  • Network accessline 167
    const backSvg = k.figureSvg({ width: W, height: H, label: LABEL, body: back }); const frontSvg = `<svg xmlns="http://www.w3.org/2000/svg" class="iso-svg fx-layer" viewBox="0 0 ${W} ${H}" aria-hidden="true">${front.join("")}</svg>`; const st
  • Network accessline 168
    const frontSvg = `<svg xmlns="http://www.w3.org/2000/svg" class="iso-svg fx-layer" viewBox="0 0 ${W} ${H}" aria-hidden="true">${front.join("")}</svg>`;

scripts/audit-affine-bounds.test.mjs

  • Executable scriptline 1
    Executable file

scripts/audit-cache.test.mjs

  • Executable scriptline 1
    Executable file

scripts/audit-clearance-envelope.test.mjs

  • Executable scriptline 1
    Executable file

scripts/audit-empty-clipping.test.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 21
    try{   const page=join(directory,"figure.html");await writeFile(page,'<!doctype html><div class="iso-plate"></div>');   const expression=`(async()=>{const fixtures=${JSON.stringify(fixtures.map(([,m])=>m))};const result=[];for(const m of fi
  • Network accessline 22
    const page=join(directory,"figure.html");await writeFile(page,'<!doctype html><div class="iso-plate"></div>');   const expression=`(async()=>{const fixtures=${JSON.stringify(fixtures.map(([,m])=>m))};const result=[];for(const m of fixtures)
  • Network accessline 23
    const expression=`(async()=>{const fixtures=${JSON.stringify(fixtures.map(([,m])=>m))};const result=[];for(const m of fixtures){const svg='<svg xmlns="http://www.w3.org/2000/svg" width="64" height="64" viewBox="0 0 64 64">'+m+'</svg>';const

scripts/audit-order-convergence.test.mjs

  • Executable scriptline 1
    Executable file

scripts/audit-path-origin.test.mjs

  • Executable scriptline 1
    Executable file

scripts/audit-profile.test.mjs

  • Executable scriptline 1
    Executable file

scripts/audit-projection.test.mjs

  • Executable scriptline 1
    Executable file

scripts/audit-slide-clearance.test.mjs

  • Executable scriptline 1
    Executable file

scripts/audit-svg-attributes.test.mjs

  • Executable scriptline 1
    Executable file

scripts/audit-taper.test.mjs

  • Executable scriptline 1
    Executable file

scripts/audit-tube-support.test.mjs

  • Executable scriptline 1
    Executable file

scripts/capture-current-geometry.test.mjs

  • Executable scriptline 1
    Executable file

scripts/capture-selector.test.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 15
    const out = join(directory, "capture.png");     const content = svgOnly       ? '<svg width="80" height="40" xmlns="http://www.w3.org/2000/svg"><rect width="80" height="40" fill="green"/></svg>'
  • Network accessline 16
    const content = svgOnly       ? '<svg width="80" height="40" xmlns="http://www.w3.org/2000/svg"><rect width="80" height="40" fill="green"/></svg>'       : `<div class="iso-plate" tabindex="0" id="first" style="width:100px;height:80px;backgr
  • Network accessline 17
    ? '<svg width="80" height="40" xmlns="http://www.w3.org/2000/svg"><rect width="80" height="40" fill="green"/></svg>'

scripts/capture.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 145
    };   try {     const target = await (await fetch(`http://127.0.0.1:${port}/json/new?about:blank`, { method: "PUT" })).json();
  • Network accessline 146
    try {     const target = await (await fetch(`http://127.0.0.1:${port}/json/new?about:blank`, { method: "PUT" })).json();     const socket = new WebSocket(target.webSocketDebuggerUrl);
  • Network accessline 147
    const target = await (await fetch(`http://127.0.0.1:${port}/json/new?about:blank`, { method: "PUT" })).json();

scripts/capture.test.mjs

  • Executable scriptline 1
    Executable file

scripts/chrome-port.mjs

  • Executable scriptline 1
    Executable file

scripts/chrome-startup.test.mjs

  • Executable scriptline 1
    Executable file

scripts/curve-density.test.mjs

  • Executable scriptline 1
    Executable file

scripts/drive-actions.test.mjs

  • Executable scriptline 1
    Executable file

scripts/drive-async-until.test.mjs

  • Executable scriptline 1
    Executable file

scripts/drive-page-load.test.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 25
    const { port } = server.address();     const actions = JSON.stringify([["eval", "document.readyState + ' ' + Boolean(window.slowScriptRan)"]]);     const result = await execute(process.execPath, [drive, `http://127.0.0.1:${port}/`, actions]
  • Network accessline 26
    const actions = JSON.stringify([["eval", "document.readyState + ' ' + Boolean(window.slowScriptRan)"]]);     const result = await execute(process.execPath, [drive, `http://127.0.0.1:${port}/`, actions], { timeout: 30000 });     assert.match
  • Network accessline 27
    const result = await execute(process.execPath, [drive, `http://127.0.0.1:${port}/`, actions], { timeout: 30000 });

scripts/drive-turn-controller.test.mjs

  • Executable scriptline 1
    Executable file

scripts/drive.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 143
    };   try {     const page = await (await fetch(`http://127.0.0.1:${port}/json/new?about:blank`, { method: "PUT" })).json();
  • Network accessline 144
    try {     const page = await (await fetch(`http://127.0.0.1:${port}/json/new?about:blank`, { method: "PUT" })).json();     const socket = new WebSocket(page.webSocketDebuggerUrl);
  • Network accessline 145
    const page = await (await fetch(`http://127.0.0.1:${port}/json/new?about:blank`, { method: "PUT" })).json();

scripts/drive.test.mjs

  • Executable scriptline 1
    Executable file

scripts/enter-key.test.mjs

  • Executable scriptline 1
    Executable file

scripts/fidelity-cut.test.mjs

  • Executable scriptline 1
    Executable file

scripts/fidelity-tube-coverage.test.mjs

  • Executable scriptline 1
    Executable file

scripts/fingerprint.mjs

  • Executable scriptline 1
    Executable file

scripts/inline-kit.mjs

  • Executable scriptline 1
    Executable file

scripts/line-ends.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 116
    }       else if (C === "A") {         const arc = document.createElementNS("http://www.w3.org/2000/svg", "path");
  • Network accessline 117
    else if (C === "A") {         const arc = document.createElementNS("http://www.w3.org/2000/svg", "path");         arc.setAttribute("d", `M${x} ${y}${command}${args}`);
  • Network accessline 118
    const arc = document.createElementNS("http://www.w3.org/2000/svg", "path");
  • Network accessline 306
    problems.sort((a, b) => b.gap - a.gap);   if (show) {     const ns = "http://www.w3.org/2000/svg";
  • Network accessline 307
    if (show) {     const ns = "http://www.w3.org/2000/svg";     const overlay = document.createElementNS(ns, "svg");
  • Network accessline 308
    const ns = "http://www.w3.org/2000/svg";

scripts/lines-arcs.test.mjs

  • Executable scriptline 1
    Executable file

scripts/lines-bezier.test.mjs

  • Executable scriptline 1
    Executable file

scripts/lines-round.test.mjs

  • Executable scriptline 1
    Executable file

scripts/lines-rounded-rect.test.mjs

  • Executable scriptline 1
    Executable file

scripts/lines.mjs

  • Executable scriptline 1
    Executable file

scripts/lines.test.mjs

  • Executable scriptline 1
    Executable file

scripts/navigation.test.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 19
    const server = createServer();       await new Promise((resolve) => server.listen(0, "127.0.0.1", resolve));       target = `http://127.0.0.1:${server.address().port}/`;
  • Network accessline 20
    await new Promise((resolve) => server.listen(0, "127.0.0.1", resolve));       target = `http://127.0.0.1:${server.address().port}/`;       await new Promise((resolve) => server.close(resolve));
  • Network accessline 21
    target = `http://127.0.0.1:${server.address().port}/`;

scripts/orbit-sampling.test.mjs

  • Executable scriptline 1
    Executable file

scripts/print-sheet.mjs

  • Executable scriptline 1
    Executable file

scripts/print-sheet.test.mjs

  • Executable scriptline 1
    Executable file

scripts/print.mjs

  • Executable scriptline 1
    Executable file

scripts/publish.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 251
    ...(canPush ? [] : [{ say: `make (or reuse) your fork, ${target}`, gh: ["repo", "fork", upstream, "--clone=false"] }]),     { say: "let git use your GitHub CLI login", gh: ["auth", "setup-git"] },     { say: `start ${branch} from the galler
  • Network accessline 252
    { say: "let git use your GitHub CLI login", gh: ["auth", "setup-git"] },     { say: `start ${branch} from the gallery's latest main`, git: ["fetch", "--quiet", `https://github.com/${upstream}.git`, "main"] },     { git: ["switch", "--quiet"
  • Network accessline 253
    { say: `start ${branch} from the gallery's latest main`, git: ["fetch", "--quiet", `https://github.com/${upstream}.git`, "main"] },
  • Network accessline 256
    { git: ["add", "--", folder] },     { git: ["commit", "--quiet", "-m", `Add ${title}`, "--", folder] },     { say: `push it to ${target}`, git: ["push", "--quiet", "--force", `https://github.com/${target}.git`, `HEAD:refs/heads/${branch}`] 
  • Network accessline 257
    { git: ["commit", "--quiet", "-m", `Add ${title}`, "--", folder] },     { say: `push it to ${target}`, git: ["push", "--quiet", "--force", `https://github.com/${target}.git`, `HEAD:refs/heads/${branch}`] },     { say: `open the pull request
  • Network accessline 258
    { say: `push it to ${target}`, git: ["push", "--quiet", "--force", `https://github.com/${target}.git`, `HEAD:refs/heads/${branch}`] },
  • Network accessline 275
    const repo = resolve(options.into);   const who = gh(["api", "user", "--jq", ".login"]);   if (who.error || who.status !== 0) throw new Error("--submit needs the GitHub CLI, signed in: install it from https://cli.github.com and run gh auth 
  • Network accessline 276
    const who = gh(["api", "user", "--jq", ".login"]);   if (who.error || who.status !== 0) throw new Error("--submit needs the GitHub CLI, signed in: install it from https://cli.github.com and run gh auth login");   const login = who.stdout.tr
  • Network accessline 277
    if (who.error || who.status !== 0) throw new Error("--submit needs the GitHub CLI, signed in: install it from https://cli.github.com and run gh auth login");

scripts/publish.test.mjs

  • Executable scriptline 1
    Executable file

scripts/react-dots-opacity.test.mjs

  • Executable scriptline 1
    Executable file

scripts/react-readout-first-write.test.mjs

  • Executable scriptline 1
    Executable file

scripts/react-readout-target.test.mjs

  • Executable scriptline 1
    Executable file

scripts/react-solid-seamless.test.mjs

  • Executable scriptline 1
    Executable file

scripts/react-visibility-target.test.mjs

  • Executable scriptline 1
    Executable file

scripts/session.mjs

  • Executable scriptline 1
    Executable file

scripts/session.test.mjs

  • Executable scriptline 1
    Executable file

scripts/turn-audit-samples.test.mjs

  • Executable scriptline 1
    Executable file

scripts/turn-bench.mjs

  • Executable scriptline 1
    Executable file

scripts/turn-check.mjs

  • Executable scriptline 1
    Executable file
  • Network accessline 62
    const chrome = spawn(binary, ["--headless=new", ...(process.platform === "linux" ? ["--no-sandbox"] : []), ...(process.platform === "win32" ? ["--do-not-de-elevate"] : []), "--remote-debugging-port=0", `--user-data-dir=${profile}`, "--no-fi
  • Network accessline 63
    const port = await chromePort(chrome, profile);   const page = await (await fetch(`http://127.0.0.1:${port}/json/new?about:blank`, { method: "PUT" })).json();   const socket = new WebSocket(page.webSocketDebuggerUrl);
  • Network accessline 64
    const page = await (await fetch(`http://127.0.0.1:${port}/json/new?about:blank`, { method: "PUT" })).json();
  • Network accessline 297
    }     }     return '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ' + W + " " + H + '" width="' + w + '" height="' + h + '" shape-rendering="crispEdges"><rect width="100%" height="100%" fill="rgb(0,0,0)"/>' + out.join("") + "</svg>";
  • Network accessline 298
    }     return '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ' + W + " " + H + '" width="' + w + '" height="' + h + '" shape-rendering="crispEdges"><rect width="100%" height="100%" fill="rgb(0,0,0)"/>' + out.join("") + "</svg>";   };
  • Network accessline 299
    return '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ' + W + " " + H + '" width="' + w + '" height="' + h + '" shape-rendering="crispEdges"><rect width="100%" height="100%" fill="rgb(0,0,0)"/>' + out.join("") + "</svg>";
  • Network accessline 369
    const h = H * SCALE;   let hidden = null;   const svgString = () => '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ' + W + " " + H + '" width="' + w + '" height="' + h + '" class="iso iso-svg" data-theme="' + theme + '" style="--anat
  • Network accessline 370
    let hidden = null;   const svgString = () => '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ' + W + " " + H + '" width="' + w + '" height="' + h + '" class="iso iso-svg" data-theme="' + theme + '" style="--anatomy-paper:var(--anatomy
  • Network accessline 371
    const svgString = () => '<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 ' + W + " " + H + '" width="' + w + '" height="' + h + '" class="iso iso-svg" data-theme="' + theme + '" style="--anatomy-paper:var(--anatomy-card)"><style>' + cs
  • Network accessline 613
    if (argv.includes("--lines")) {       const angles = Array.from({ length: 24 }, (_, i) => i * 15);       const planted = await page.evaluate(`(() => { window.__isoTurn.set(0); const part = document.querySelector("svg[data-live] [data-p]"); 
  • Network accessline 614
    const angles = Array.from({ length: 24 }, (_, i) => i * 15);       const planted = await page.evaluate(`(() => { window.__isoTurn.set(0); const part = document.querySelector("svg[data-live] [data-p]"); const el = document.createElementNS("h
  • Network accessline 615
    const planted = await page.evaluate(`(() => { window.__isoTurn.set(0); const part = document.querySelector("svg[data-live] [data-p]"); const el = document.createElementNS("http://www.w3.org/2000/svg", "path"); el.setAttribute("class", "iso-

scripts/turn-convex-check.test.mjs

  • Executable scriptline 1
    Executable file

scripts/turn-fidelity.mjs

  • Executable scriptline 1
    Executable file

scripts/turn-group-reference.test.mjs

  • Executable scriptline 1
    Executable file

scripts/turn-rounded-polygon.test.mjs

  • Executable scriptline 1
    Executable file

scripts/turn-split-owner.test.mjs

  • Executable scriptline 1
    Executable file

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.

Declared and executed: 10 facts
Signal confidence: 249 facts

and 199 more

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.

Add this badge to your README

It updates every night and links to this page.

wheresryan22/anatomy: #81 on hotskills, 25.5k stars

[![wheresryan22/anatomy on hotskills](https://hotskills.dev/badge/wheresryan22-anatomy.svg)](https://hotskills.dev/skill/wheresryan22-anatomy/)