CommunityImagegithub.com

teardown

Build a live, physically driven 3D simulator of a real machine (engine, robot, linkage, gearbox, landing gear, turbine, excavator, watch, any mechanism) from its real published dimensions, with a dashboard whose every gauge is computed from the same simulation state, plus a clipping-plane cutaway. Use when the user asks to build, simulate, rebuild, animate, tear down, cut away or "show how it works" for a machine, engine, vehicle, robot or mechanism, especially when they name a real model or att

What is teardown?

teardown is a Cursor agent skill that build a live, physically driven 3D simulator of a real machine (engine, robot, linkage, gearbox, landing gear, turbine, excavator, watch, any mechanism) from its real published dimensions, with a dashboard whose every gauge is computed from the same simulation state, plus a clipping-plane cutaway. Use when the user asks to build, simulate, rebuild, animate, tear down, cut away or "show how it works" for a machine, engine, vehicle, robot or mechanism, especially when they name a real model or att.

Works with~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/Felixo-gif/teardown/tree/HEAD/skills/teardown

Installed? Explore more Image skills: steipete/songsee, affaan-m/frontend-design, mattpocock/improve-codebase-architecture · View all 6 →

Ask in your favorite AI

Open a new chat with this agent skill pre-loaded.

Documentation

What does teardown do?

You rebuild a real machine part by part from real numbers, drive it from one physical state, and build an engineering dashboard around it. The result must read as a real simulator, not an illustration. Never skip a step and never invent a number without marking it.

Inputs

  • The machine (a named real model is best: "Chevrolet 350 small-block", "Mantis hexapod", "Airbus A320 main gear").
  • One reference photo of the real thing. If the user attached one, use it. If not, ask for one; if they cannot provide it, find one freely licensed photo (Wikimedia Commons, check the licence on the file page) and record author, licence and URL. Look at the photo before modelling: proportions, part layout, colours and what moves.

Workflow (do these in order)

  1. Identify. Pin down the exact machine and variant. Say which one you chose in one line.
  2. Real numbers first, one data block. Research and write the DATA block before any geometry: every dimension, mass, ratio, speed, angle and timing the build will use, each with kind (published, derived, estimated) and a numbered source. Read references/research.md. Rules: prefer manufacturer sheets, manuals, standards, papers and records bodies; cross-check two sources when you can; a number you scaled off the photo is estimated; a number you computed from others is derived. Show this block to the user in chat as a short table before building.
  3. Start from the kit. Copy kit/template.html to <machine>-live.html in the output folder and copy kit/three.js next to it. Edit only the MACHINE:CSS, MACHINE:DASH and <script id="machine"> blocks. The kit gives you the stage, three.js setup, simple orbit, cutaway, gauges, and the clock. Read references/dashboard.md for the API.
  4. Build parts from the numbers. Every mesh dimension comes from N.<key> (the data block) or from a derivation written in code next to it. No magic numbers for anything that has a real counterpart. Match the photo's proportions and part shapes; use kit helpers (TD.span, extrude shapes, TD.glow).
  5. One physical state drives everything. Define the minimal integrated state (crank angle, distance walked, time, valve position). step() integrates it; derive() computes the whole machine from it with real kinematics (references/kinematics.md): positions, angles, velocities, forces, pressures. pose() only copies derived values onto meshes. No Math.sin(time) decoration on moving parts.
  6. Dashboard around the same state. Every readout, chart, strip and bar reads from the derived object S, never from its own timer. Charts over a cycle are computed by calling the same solver at sampled phases. Include: the headline number, the current phase/stroke label, at least one chart vs angle or phase with a moving cursor, a per-part selector, the data block with sources, the reference photo with credit, and controls. Layout and gauge choice: references/dashboard.md.
  7. Cutaway. Add the clipping-plane cutaway (TD.cutaway) through the part that hides the action, hollow shells so only the wall section shows the cap colour, ghost what sits in front, and make the hidden action visible (combustion flash, oil column, gear mesh). references/cutaway.md.
  8. Look. Apply references/look.md (dark sci-fi default, light engineering variant on request).
  9. Self-check by rendering stills. Run node kit/stills.mjs <abs html> 0.5,2,4 <abs dir>/check-%.png (needs playwright; otherwise open the page in the browser tool and call __render). Read every PNG. Fix until: no console errors, the machine is framed and legible, the cutaway shows the inside, gauges visibly differ between stills (the script flags identical dashboards), and deterministic: yes. Then walk references/qa.md. Delete the check PNGs.
  10. Ship. Run node kit/inline.mjs <machine>-live.html to fold three.js and images into <machine>-live.standalone.html, a single offline file. Reply with: the files, the data block (numbers + sources), the photo credit, and what is estimated rather than published.

Hard contract for the output file

  • Opens from disk with no network; three.js is a classic script exposing window.THREE (no ES modules, no CDN).
  • window.__render(t): t in seconds, deterministic, no wall clock; it resets controls to defaults, re-integrates the state from 0 in fixed steps and draws one frame. The kit's TD.run does this for you; do not bypass it.
  • Plays live with requestAnimationFrame when opened normally; controls change the state, and every gauge follows.
  • Desktop stage 1600x1000, scaled to fit any window.
  • The data block, sources and photo credit are visible in the page.

Honesty rules

  • Never present an estimated number as published. Tag it.
  • If the published numbers disagree, pick one, show the other in the note, and say so.
  • If a behaviour is modelled simply (static loads, ideal gas, no friction), say it in the reply in one line.

Related Skills