如需下载,请在电脑端打开本页操作。
README.md

Anatomy

一个 Claude 技能:通过把想法做成一件真实、可运转的物件,来解释这个想法。 用 SVG、WebGL 和 3D 打造精心制作、可交互的等距图,由许多细小而精确的零件组成。

An isometric drawing of a Raptor 2 rocket engine hanging in a test stand, firing: a red exhaust plume, drawn by a WebGL shader, pours onto the stand's base plate. The card reads Fig 1, Raptor 2 test stand, Pc 300 bar, 230 tf.

examples/raptor-engine,浅色主题,点火状态。发动机与试验台是 SVG;尾焰是同一等距相机下的 WebGL 着色器。

让 Claude 画一张解释某个技术概念的图,Anatomy 会让他发明一件实体物件,让这件物件的运转方式本身就是那个想法。一个"内容没变就跳过工作"的缓存键,变成一把只有每根弹子都对齐到位才能转动的弹子锁。一个为多块画布提供服务的 GPU 上下文,变成一台单打印头依次巡访 16 个孔位的龙门绘图仪。

随后 Claude 用几十个细小、实心、带光影的零件把物件搭建起来,放进一张带标题、提示语和实时读数的框式卡片里,让它在指针和键盘下平稳地动起来,并通过放大检查每一个关节来验证自己的作品。图中显示的每个数字,都来自驱动零件运动的同一个小型模型。

快速开始

npx skills add wheresryan22/anatomy -g -a claude-code

然后在 Claude Code 中:

/anatomy explain how a token bucket rate limiter works, interactive

就这些。不需要 API 密钥,也无需 npm install:这套工具只使用 Node 的内置模块。

画廊

The Raptor 2 engine taken apart in its test stand: its assemblies, pipes and harness hang apart from each other between the posts of the stand.A school ripple tank on four tall legs, with a lamp on an arm above it. Two dippers on a vibrating bar make interfering waves, and their caustics are projected onto the paper screen under the tank.
raptor-engine:悬停可拆解成 11 个组件。审查证明:无论静止、拆解还是两者之间的每一帧,都没有任何管道穿过其他物体。ripple-tank:SVG 装置叠加两层 WebGL(投在纸上的灯光与焦散、水中的倒影),由色散与光学模型驱动。
A combination dial on a raised door plate. A small gold and chrome robot hand lies on the dial and turns with it; a green light glows under one fingertip.A dial indicator gauge on a stand above a base plate with a ruler strip. Its plunger rests on one of three gauge blocks on a sliding carriage.
turning-dial:3D 模式(beta)。拖动拨盘时,约 90 个零件在每一帧都被重新投影、重新着色。dial-indicator:最小的示例,约 300 行。悬停滑动托架,表针逐块读数。

每一张截图都是 examples/ 中某个页面的浅色主题,由技能自带的 scripts/capture.mjs 和 scripts/drive.mjs拍摄。构建好的页面已提交:打开 examples/ 中任意 .html 即可试玩。

它会做出什么

三种图形。三者共用同一套工具、同一台相机和同一套工艺规则。

类型是什么示例
SVG核心。四色调明暗的实心等距零件,从后到前绘制,放进带实时读数和缓动动画的卡片里。以独立 HTML 页面、内嵌样式的独立 .svg 文件或 React/Next.js 组件形式交付。dial-indicator、desk-computer、test-rig
SVG + WebGL用于线条画不出的东西:火焰、尾气、水、焦散、灯光、辉光、蒸汽。着色器运行在后层与前层 SVG 之间的画布上,使用图形自身的等距相机,因此它嵌在画面内部。没有 WebGL 时 SVG 依然可读。raptor-engine、ripple-tank
3D beta真正在三维中转动的零件:旋转的拨盘或转台、弯曲的手指、断裂坠落的碎片。活动零件在每一帧都由工具自身的规则重新投影、重新着色;图形其余部分保持静态艺术。turning-dial

每张图都有浅色与深色两种主题。浅色是技能优先设计的主题,着色器也包括在内。

安装

Anatomy 是一个标准的 Agent Skill:一个根目录下带 SKILL.md 的文件夹。本仓库就是那个文件夹。任选一种方式:

命令安装到
skills CLI,个人npx skills add wheresryan22/anatomy -g -a claude-code~/.claude/skills/anatomy
skills CLI,单个项目npx skills add wheresryan22/anatomy.claude/skills/anatomy
git,个人git clone https://github.com/wheresryan22/anatomy.git ~/.claude/skills/anatomy~/.claude/skills/anatomy
git,单个项目git clone https://github.com/wheresryan22/anatomy.git .claude/skills/anatomy.claude/skills/anatomy
下载,不用 git见下文~/.claude/skills/anatomy

使用 skills CLI

skills CLI 会找到本仓库根目录下的 SKILL.md,并将其安装为 anatomy。默认情况下它安装到当前项目,并询问要为哪些代理设置。-g 表示按用户安装,-a claude-code 表示只为 Claude Code 设置。

该 CLI 会复制整个仓库,包括示例(约 10 MB)。它需要较新的 Node.js:CLI 的 1.7.1 版本要求 Node 22.20 或更高。

使用 git

把仓库克隆进 Claude Code 的某个技能文件夹,使 SKILL.md 位于 <skills folder>/anatomy/SKILL.md。项目级安装时,请提交 .claude/skills/anatomy,这样你的团队也能得到它。之后更新时,在该文件夹内执行 git pull。

下载,不用 git

下载 ZIP,解压,然后移入 ~/.claude/skills/。

或者在 macOS 或 Linux 上一行搞定:

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

Claude Code 会在运行中的会话里识别新技能。如果会话启动时 skills 文件夹尚不存在,请运行 /reload-skills。

用法

输入 /anatomy 并说明这张图应该解释什么:

/anatomy explain how a token bucket rate limiter works, interactive

你不一定非要指名这个技能。当你要求画一张等距插画、为文档/博客/落地页配说明图,或要一个可交互的解释器时,Claude 也会加载它。

更多提示词,来自技能的评测集

/anatomy a figure for our Next.js docs on database connection pooling: a pool of 10 connections, requests borrow one and give it back, and when all 10 are busy new requests wait in a queue. A React component plus a static HTML preview, dark theme.
/anatomy an isometric SVG explaining how a CDN edge cache works, cache hit vs miss, TTL of 60 s, for a dark landing page. Just the SVG file and a PNG preview.
/anatomy a Bunsen burner on a lab bench: opening the air collar turns the lazy yellow flame into a roaring blue cone. WebGL for the flame, one HTML file, dark theme.
/anatomy a heat-exchanger espresso machine with the side panel off: boiler, heat-exchanger tube, group head, pump, steam wand and gauge. Show the water flowing when you pull a shot. Standalone HTML, light theme.

三个习惯能换来最好的图:

  1. 说出想法,而不是画法。 说明它应该解释什么,并给出真实数字(尺寸、数量、速率、阈值)。Anatomy 负责发明那个物件;这是大部分工作,而且它做得比描述一堆方框和箭头更好。
  2. 或者说出物件。 如果你已经知道想要什么机器(意式咖啡机、本生灯、一把锁),直接说,并说明什么应该动。
  3. 说明它会在哪里使用。 独立 HTML 页面、独立 SVG 文件,还是 React/Next.js 组件;浅色还是深色。不同用途的构建方式不同。

成品以归你所有的源码形式交付:一个 Node 构建脚本和它写出的页面;如果是 React,则是几何模块、一个负责静态艺术的服务端组件和一个负责动画的客户端组件。整套工具随附其中。

示例

每个无框架示例都带一个 Node 构建脚本,在旁边写出独立页面。加 --light 使用浅色主题。

示例展示什么构建
dial-indicator一个架在量块滑座上的百分表。最小的示例,约 300 行。node examples/dial-indicator/build.mjs
desk-computer一台 1984 风格、带可打字键盘的台式电脑。打出的字出现在画在机壳正面平面上的 CRT 里;关机时画面塌缩成一条线和一点。约 85 个实体。node examples/desk-computer/build.mjs
raptor-engine试验台上的 Raptor 2 发动机。可拆解成 11 个组件,WebGL 尾焰、激波、水花与蒸汽渲染在后层与前层 SVG 之间。密集管道、平滑明暗、淡入淡出与审查的标杆。构建需要几分钟。node examples/raptor-engine/build.mjs
ripple-tank一个架在纸屏上方高腿上的教学波纹水槽,从 44° 俯角观看。两层 WebGL 与等距平面严格对齐,由 model.mjs 中的纯模型驱动。node examples/ripple-tank/build.mjs
test-rig一个来自 React/Next.js 网站的生产级图形:弹簧托架上的玻璃按钮、轨道上的指形探针,以及读取倾角的百分表。53 个实体。无构建脚本:直接复制进 React 应用。无
spot-plate同一网站的第二个图形:点滴板上的六对玻璃液滴,当一把扇形塞尺片张开时,它们汇流成一块玻璃。每对都由同一个距离场绘制。无构建脚本:直接复制进 React 应用。无
turning-dial3D 模式:一个真正在三维中转动的密码拨盘,上面停着一只小机器人手、一根三铰链手指会抬起,还有一个吊舱作为自由体断裂脱离。stress.mjs 是杂乱工坊里一只 380 零件的机械手,用于测量性能。node examples/turning-dial/build.mjs

node examples/raptor-engine/build.mjs --audit 和 node examples/turning-dial/build.mjs --light --audit 也会运行几何审查。3D 审查较慢;见 references/3d.md。

工作原理

  • SKILL.md 是 Claude 阅读的入口。它规定工作流:先收集真实数字,发明物件,写零件清单,规划世界,用工具一次性构建几何,从后到前绘制,装框,让它活起来,然后像批评家一样验证。它也以短形式承载工艺规则。
  • kit/ 是图形所基于的绘图库:等距相机、实体与零件库(iso-kit)、任意轴上的圆形零件(lathe.mjs)、管道与线缆(tube.mjs)、WebGL 层(gl.mjs)、3D 运行时(turn*.mjs)以及 React 组件(react/)。除这些组件所需的 React 外,它没有任何依赖。
  • references/ 是 Claude 需要时打开的长文指南:工艺、工具 API、动画、React、验证、WebGL、设计走查和 3D 模式。
  • 验证。 kit/audit.mjs证明几何:没有任何零件穿过另一个零件,每个端点都落在安装座上,每一处重叠都按深度顺序绘制(node build.mjs --audit)。在无头 Chrome 中,scripts/capture.mjs和 scripts/drive.mjs拍摄截图、特写和慢放关联表,scripts/lines.mjs让任何悬在半空的线条检查失败,scripts/turn-check.mjs检查 3D 图形。技能会指示 Claude 阅读它生成的每一张 PNG。

仓库结构

anatomy/
├── SKILL.md                  技能本体:工作流、设置与工艺规则
├── kit/                      绘图库
│   ├── iso-kit.ts            核心:相机、实体、零件、SVG 渲染器、卡片与页面、CSS
│   ├── iso-kit.mjs           同一核心的纯 ESM 版本,供 Node 构建脚本使用
│   ├── iso.css               该库的 CSS,含两套主题
│   ├── react/                draw.tsx(服务端安全组件)、live.tsx(客户端钩子)
│   ├── lathe.mjs             任意轴上的圆形零件
│   ├── tube.mjs              管道、管子与线缆
│   ├── audit.mjs             几何审查
│   ├── gl.mjs                用于图形内部着色器的 WebGL 层
│   ├── turn.mjs              3D 运行时(beta)
│   ├── turn-build.mjs        3D 构建器
│   ├── turn-audit.mjs        3D 环绕审查
│   └── turn-fixed.mjs, canvas-painter.mjs, gl-shared.mjs
│                             实验性变体,尚未文档化,示例也未使用
├── references/               长文指南,Claude 按需阅读
│   ├── craft.md  kit.md  motion.md  react.md
│   └── verify.md  webgl.md  walkthrough.md  3d.md
├── scripts/                  无头 Chrome 检查与构建辅助
│   ├── capture.mjs           截图与特写
│   ├── drive.mjs             脚本化会话与联系表
│   ├── lines.mjs             线条端点检查(配合 line-ends.mjs)
│   ├── inline-kit.mjs        以源码形式内联进独立页面的绘图库
│   ├── turn-check.mjs        浏览器内的 3D 检查(配合 turn-fidelity.mjs)
│   └── turn-bench.mjs        Node 中的 3D 计时
├── examples/                 七个完整示例,构建后的页面已提交
├── evals/evals.json          测试提示词与合格答案应包含的内容
└── .github/                  问题表单、PR 模板、CI、README 图片

要求

用于说明
Claude Code一切该技能是为它编写的。
Node.js 20.10+构建、工具、检查仅使用内置模块:无需 npm install。示例在 Node 20.19 和 22.11 上逐字节重建。在 Node 20 上,浏览器脚本以 --experimental-websocket 自行重启。
Chrome 或 Chromium检查capture.mjs、drive.mjs、lines.mjs 和 turn-check.mjs 会在 macOS、Linux 和 Windows 的常规位置以及 Playwright 的缓存中查找。其他任何二进制文件请设置 CHROME_PATH。它们以开启 WebGL 的无头模式运行。
React 18+仅 React 输出kit/react/、examples/test-rig/ 和 examples/spot-plate/。

局限

  • 它不是图表库。 没有坐标轴、序列或数据绘图。数字以模型驱动的实时读数形式出现,也以零件的真实尺寸和数量形式出现。
  • 它画机器、仪表、工具和家具。 不画人物或精确地图。一个没有机制可构建的想法,产出的图会偏弱。
  • 它刻意很慢。 一张图需要很长一段会话:零件清单、几何、审查,以及两种主题下每个关节的特写。Raptor 的构建要花几分钟,而对 30 个零件做一次完整的 3D 环绕审查需要 15 到 20 分钟。
  • 着色器需要 WebGL。 没有它 SVG 依然可读;在"减少动态效果"模式下,每张图都会静止。

[!NOTE] 3D 模式是 beta。 它只在自身示例和一个测试图形上验证过,尚未在生产级图形上验证。小型 3D 图形可跑 60 帧/秒;380 零件的压力测试机械手在 1440 像素宽、高负载机器上测得约 20 帧/秒,在限速的手机模拟档下为 13 到 15 帧/秒。

贡献

欢迎提交 issue 和 pull request。请先阅读 CONTRIBUTING.md:它涵盖如何构建示例、运行检查,以及任何改动都必须遵守的内部规则(其中包括:代码中不写注释,且对工具的改动必须让每个现有示例保持逐字节一致)。请遵守行为准则,并按 SECURITY.md 中的说明报告安全问题。

许可

MIT © 2026 Ryan · @wheresryan22

如果 Anatomy 为你画出了有用的东西,一个 ⭐ 能帮更多人找到它。