Builds an interactive isometric machine page. Each station of one invented machine stands for one step of a process. A pure, tested state model drives the motion, the readouts and the copy. The page has controls and a verification loop. Trigger phrases: "isometric explainer", "machine explainer", "explain this as a machine", "interactive isometric figure", "explorable explainer", "show how it works inside".
95%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Passed
No findings from the security scan
This skill makes a single-page interactive figure. The figure is a solid isometric machine on a bench. Each station of the machine stands for one step of a process. For example, a request card moves on a carriage, a probe drops, and a press stamps the card. A pure state model decides every move, so the picture, the numbers and the words match. The templates/ folder holds a working starter, and kit/ holds the geometry library it uses.
blueprint-figure.Invent the machine. Write one sentence: "X moves through Y, and that motion means Z." If you cannot write it, pick another machine. See references/concept.md.
Count the parts on paper before you draw, and pick a tier.
| Tier | Parts | Approval |
|---|---|---|
| Figure | 40 to 80 | not needed |
| Hero | 80 to 150 | not needed |
| Larger | more than 150 | get the user's approval first |
Write the state model first. Make model.mjs pure and deterministic, with no DOM and no clock. simulate(config) returns an event list and totals. Test it before any geometry. See references/state-model.md.
Map each concept to a station. Write a table: station, concept word for its label, what it does, what fails without it.
Write the parts list. List each part with its assembly, size in world units, tone and whether it moves. Geometry comes after the list.
Set the camera. Use world units and one isometric camera. Set elevation to 30 degrees. Pick the azimuth so the working faces point at the viewer. Fit the projection over the assembled and the exploded pose.
Build the static geometry once. Each part becomes one SVG group with a depth key. Movers get a data-live hook. See references/geometry.md.
Animate by translation. Move a part by changing its transform only. Rebuild a path only when its shape changes, such as a rod that gets longer.
Paint from back to front. Sort groups by depth key plus the depth of their current offset. Reorder the DOM only when the order changes.
Paint with colour and ink. Each material has three flat tones, the main bodies have a heavy ink silhouette, and each body casts a short, flat, warm grey shadow on the bench. Exactly one accent colour marks the active part and its pill label. See references/colour-and-ink.md.
Add controls that change the model. Run, step, break, repair, reset and the config switches all act on a real simulate run. Write the config to the URL. See references/live.md.
Verify the page in a headless browser. Take screenshots at desktop and phone width in both themes. Add 4x close-ups, a line-end check, a scenario sweep with zero console errors and a contact sheet. See references/verify.md.
Truth:
simulate with the same config returns the same events. A test proves this for every config combination.Geometry:
inkSolid from kit/ink.mjs: three flat tones for each material, an ink outline, and a heavier silhouette round each main body.data-free="start", "end" or "".CACHE or VERIFIER. The page has a Labels switch and reads ?labels=0.Motion:
transform only. A path that changes shape is rebuilt from cached results where it can be.Page:
100svh.role="img" and an aria-label that names every station.aria-live="polite" region announces the outcome when a run ends.simulate and updates the URL.? parameters restores the same config.?labels=0 starts with the labels off.references/concept.md: invent the machine, the one-sentence test, concept mapping, sizing.references/state-model.md: the model contract, event shape, tests, URL state.references/geometry.md: units, camera, parts list, kit functions, shading, depth keys, labels.references/colour-and-ink.md: materials, tones, ink weights, cast shadows, glass, status lights, pill labels, wobble and the dark theme.references/live.md: the beat timeline, the draw loop, sorting, accent, controls, accessibility, layout.references/verify.md: the headless verification loop with a script.templates/model.mjs, templates/model.test.mjs, templates/build.mjs, templates/live.js: a working cache machine. Run node templates/build.mjs to write templates/out.html. Run node --test templates/model.test.mjs for the model tests.kit/iso-kit.mjs, kit/lathe.mjs, kit/tube.mjs: projection, solids, lathe bodies, tubes and the base CSS. Keep kit/LICENSE with the kit.kit/ink.mjs: the colour and ink layer: inkSolid, silhouetteSvg, castShadowSvg, glassSvg, pillSvg, wobbleFilter, PALETTES and INK_CSS.Inside the AI Engineering from Scratch repo, also see scripts/decompiler-machine/ and site/test_decompiler_machine.js for a full hero build in the colour and ink look, and scripts/agent-machine/ for the older grey look.
rohitg00/ai-engineering-from-scratch
3f9715c
Also appears in
since Oct 23, 2026
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.