Anatomy — навык, который объясняет идею через работающую механическую модель

· 8 мин чтения
agent-skills claude-code visualization svg 3d
📂 Исходный код на GitHub

Навык /anatomy для ИИ-ассистентов: объясняет техническую идею, рисуя её как настоящий работающий механизм в изометрии. Ассистент сам придумывает предмет, собирает его из десятков мелких деталей, добавляет живую подпись с числами и проверяет каждый стык в headless Chrome. Три режима: SVG, SVG с WebGL-шейдерами и 3D (бета). Ноль зависимостей, только встроенные модули Node.

Anatomy — навык, который объясняет идею через работающую механическую модель

Навык Anatomy отвечает на запрос «объясни мне, как работает X» не схемой из квадратиков со стрелками, а настоящей движущейся моделью. Вы спрашиваете у ассистента про устройство rate limiter, cache key или пул соединений — он придумывает физический предмет, который работает ровно так же, и собирает его из десятков мелких деталей в изометрии.

Обычная блок-схема говорит только «эти блоки связаны». Работающая модель показывает, что происходит: ключ кеша превращается в штифтовый замок, который поворачивается только когда совпали все штифты. Один GPU-контекст на много холстов — это мостовой плоттер с одной печатной головой, которая обходит 16 лунок.

Как это выглядит

Каждая фигура живёт в карточке: заголовок, подсказка и живая цифровая панель. Под курсором и с клавиатуры детали двигаются плавно, без рывков. Ассистент после сборки сам себя проверяет: приближает каждое соединение и смотрит, что нигде нет наложения и невидимой ошибки.

Важное свойство: любое число на рисунке берётся из той же маленькой модели, которая двигает детали. Цифры на панели — не текст, приклеенный для красоты.

Три вида фигур

Вид Что это Пример
SVG Базовый режим. Сплошные изометрические детали с четырехтоновой заливкой, которые рисуются сзади наперёд. Отдаётся как отдельная HTML-страница, как один файл .svg со встроенными стилями или как компонент для React и Next.js. dial-indicator, desk-computer, arcade-cabinet, test-rig
SVG + WebGL Для того, чего линии не передают: огонь, выхлоп, вода, каустики, свет лампы, свечение, пар. Шейдер запускается на canvas между задним и передним слоями SVG, в той же изометрической камере, поэтому он будто лежит внутри рисунка. Без WebGL картинка всё равно читается. raptor-engine, ripple-tank
3D (бета) Детали, которые вращаются по-настоящему: диск, который крутится, пальцы, которые сгибаются, кусок, который отламывается и падает. Движущиеся детали каждый кадр пересчитываются и пересвечиваются по правилам самого набора, остальная картинка остаётся статичной. turning-dial

Светлая и тёмная темы есть у каждой фигуры. Сначала набор проектирует светлую тему — вместе с шейдерами.

Установка

Это обычный Agent Skill: папка с файлом SKILL.md в корне. Сам репозиторий и есть эта папка.

npx skills add wheresryan22/anatomy -g

CLI спросит, для каких ассистентов поставить навык. Чтобы не спрашивал, добавьте флаг: -a claude-code, -a antigravity, -a opencode, -a codex или -a minimax-code.

Куда ставится:

Ассистент Папка
Claude Code ~/.claude/skills/anatomy
Antigravity ~/.gemini/antigravity/skills/anatomy
OpenCode ~/.config/opencode/skills/anatomy
Codex ~/.agents/skills/anatomy
MiniMax Code ~/.minimax/skills/anatomy

Без ключей API и без npm install — набор использует только встроенные модули Node. CLI копирует репозиторий целиком, вместе с примерами: около 10 МБ.

Если не хочется использовать CLI, есть клон через git и распаковка архива вручную. Важно, чтобы файл SKILL.md оказался по пути <папка навыков>/anatomy/SKILL.md. Внутри папки навык обновляется обычным git pull.

Использование

В Claude Code, Antigravity, OpenCode и MiniMax Code команда называется /anatomy, в Codex — $anatomy.

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

Имя навыка можно и не называть: ассистент сам загрузит его, если попросить изометрическую иллюстрацию, поясняющий рисунок для документации, статьи или страницы сайта.

Три привычки дают лучший результат:

  1. Называйте идею, а не рисунок. Опишите, что нужно объяснить, и дайте настоящие числа: размеры, количество, скорости, пороги. Предмет ассистент придумает сам — это и есть основная работа.
  2. Или называйте предмет. Если вы точно знаете, какая машина нужна (кофемашина, горелка, замок), скажите это и добавьте, что должно двигаться.
  3. Скажите, где будет жить фигура. Отдельная HTML-страница, один SVG-файл или компонент для React и Next.js; светлая или тёмная тема. Сборка под каждый случай своя.

Пример запроса из документации:

/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.

На выходе — исходники, которые вам принадлежат: скрипт сборки на Node и страница, которую он пишет, либо для React — модули геометрии, серверный компонент для статичной картинки и один клиентский компонент на движение. Набор инструментов идёт в комплекте.

Примеры из репозитория

Пример Что показывает Сборка
dial-indicator Стрелочный индикатор на стойке над кареткой с блочными пробниками. Самый маленький пример, около 300 строк. node examples/dial-indicator/build.mjs
desk-computer Настольный компьютер в духе 1984 года с клавиатурой, на которую можно печатать. Набранная строка появляется на экране, а выключение сворачивает картинку в линию и точку. Около 85 сплошных деталей. node examples/desk-computer/build.mjs
arcade-cabinet Игровой автомат со снятой боковой панелью. Монета катится вниз мимо проволоки датчика в кассу, импульс бежит по кабелю к плате, CRT разогревается в режим ожидания. Около 240 деталей и 15 кабелей. node examples/arcade-cabinet/build.mjs
raptor-engine Двигатель Raptor 2 на испытательном стенде. Разбирается на 11 узлов, а факел, скачок давления, брызги и пар рисуются WebGL между задним и передним SVG. Сборка занимает несколько минут. node examples/raptor-engine/build.mjs
ripple-tank Школьная волновая ванна на высоких ножках над бумажным экраном, вид сверху под 44°. Два WebGL-слоя привязаны к изометрическим плоскостям и считаются чистой моделью. node examples/ripple-tank/build.mjs
test-rig Стеклянная кнопка на тележке на пружине, пальцевой щуп на рельсе и стрелочный индикатор, показывающий наклон. 53 детали. Скрипта сборки нет: файлы копируются в проект на React. нет
spot-plate Шесть пар капель стекла на предметном стекле сливаются в одно целое, когда веер щупов расходится. нет
turning-dial Режим 3D: кодовый диск вращается по-настоящему, рядом лежит маленькая роботизированная рука, палец на трёх шарнирах приподнимается. node examples/turning-dial/build.mjs

Готовые страницы лежат в репозитории: откройте любой .html в папке examples и посмотрите, что получилось. Скриншоты сняты собственным набором — scripts/capture.mjs и scripts/drive.mjs.

Что внутри репозитория

  • SKILL.md — то, что читает ассистент. Задаёт порядок работы: сначала собрать настоящие числа, потом придумать предмет, написать список деталей, спланировать сцену, собрать геометрию набором, покрасить сзади наперёд, оформить карточку, оживить и проверить как критик. Здесь же правила работы коротким списком.
  • kit/ — библиотека рисования: изометрическая камера, сплошные детали, тела вращения на любой оси, трубы и кабели, WebGL-слой, среда выполнения 3D и компоненты для React.
  • references/ — длинные руководства, которые ассистент открывает по мере надобности: работа с набором, движение, React, проверка, WebGL, разбор проектирования и режим 3D.
  • evals/evals.json — тестовые запросы и признаки хорошего ответа.

Проверка качества

Отдельная часть набора — самопроверка. kit/audit.mjs доказывает геометрию: ничто не проходит сквозь другое, каждый конец трубы стоит на креплении, каждое перекрытие нарисовано в правильном порядке глубины. Запуск — node build.mjs --audit.

Дальше включается headless Chrome. scripts/capture.mjs снимает скриншоты и приближения, scripts/drive.mjs прогоняет сценарии и собирает раскадровки, scripts/lines.mjs отклоняет любую линию, оборвавшуюся в воздухе, а scripts/turn-check.mjs проверяет 3D-фигуры. Навык велит ассистенту открыть и посмотреть каждый снимок, который тот сделал.

Требования

Что Для чего Детали
Claude Code, Antigravity, OpenCode, Codex или MiniMax Code всё остальное Навык написан под Claude Code и следует открытому формату Agent Skills, поэтому остальные ассистенты тоже его грузят
Node.js 20.10+ сборка, набор, проверки Только встроенные модули: устанавливать нечего
Chrome или Chromium проверки Ищется в обычных местах на macOS, Linux и Windows, а также в кеше Playwright. Другой путь задаётся через CHROME_PATH
React 18+ только для вывода на React Касается kit/react/, examples/test-rig/ и examples/spot-plate/

Примеры пересобирались байт в байт на Node 20.19 и 22.11.

Ограничения

  • Это не библиотека графиков. Осей, серий и диаграмм нет. Числа появляются как живая панель, посчитанная моделью, и как настоящие размеры деталей.
  • Набор рисует машины, приборы, инструменты и мебель — не людей и не точные карты. Идея без механизма получится слабее.
  • Это медленно и сделано так намеренно. Фигура собирается долго: список деталей, геометрия, проверка и приближение каждого стыка в обеих темах. Полный обзор 3D на 30 деталях занимает 15–20 минут.
  • Режим 3D — бета. Он проверен на своём примере и одной тестовой фигуре, но не на рабочей. Маленькая 3D-фигура идёт на 60 fps; тестовая рука из 380 деталей показала около 20 fps на ширине 1440 px и 13–15 fps на замедленном профиле телефона, на сильно нагруженной машине.
  • Шейдерам нужен WebGL. Без него SVG всё равно читается, а при включённом prefers-reduced-motion любая фигура замирает.

Участие и лицензия

Сделали что-то хорошее? Попросите ассистента опубликовать фигуру в общую галерею — он спросит название и ваш GitHub-ник, покажет, что именно отправит, и после вашего «да» сам откроет pull request. Без терминала есть форма отправки на GitHub Gist.

Задачи и pull request приветствуются. Перед правкой прочитайте CONTRIBUTING.md: там описаны сборка примеров, проверки и правила, которые обязаны выдержать изменения, — в том числе запрет комментариев в коде и требование, чтобы правки набора оставляли каждый существующий пример байт в байт прежним. Изменения перечислены в CHANGELOG.md.

Лицензия — MIT, © 2026 Ryan.

Источник: https://github.com/wheresryan22/anatomy