Skip to content
Skills Library
Design & UX · Building & coding

wireframe

/wireframe

Build accurate 3D models in three.js drawn as technical illustrations: clean ink outlines with hidden lines removed, crease lines, section cuts with hatched cut faces, phantom lines for casings, dash-dot centre lines, flow lines coloured by temperature or pressure, and exploded views, on paper, blueprint or print palettes. Engines, turbines, gearboxes, pumps, mechanisms, machines and products at real dimensions, moving by real kinematics when they move, measured and photographed by a headless check loop; exports one offline HTML file. Researches the real object first, hunting for the maker's o

Repository
craft3d ↗
Licence
MIT
Last repository change
08.11.2026

Assessment and security

87/ 100Class: good
Format20 / 25
Frontmatter with name and description, valid name, description up to 1,024 characters, name matching the folder.
Discoverability17 / 25
Description explains when to use the skill, has a reasonable length and uses third person.
Content35 / 35
At least 150 words and at most 500 lines, headings, step lists, examples or code.
Hygiene15 / 15
No placeholders such as TODO, no Windows paths, with a licence.
Riskno signals detected in the scan
Files in this package
1
Scripts
0
HTML comments
0
URLs in SKILL.md
0
Deprecation

No signals detected. Repository changed on 08.11.2026, without references to retired models or APIs.

Licence

MIT, open: use and modify while retaining author attribution.

What it does and when to use it

Build accurate 3D models in three.js drawn as technical illustrations: clean ink outlines with hidden lines removed, crease lines, section cuts with hatched cut faces, phantom lines for casings, dash-dot centre lines, flow lines coloured by temperature or pressure, and exploded views, on paper, blueprint or print palettes. Engines, turbines, gearboxes, pumps, mechanisms, machines and products at real dimensions, moving by real kinematics when they move, measured and photographed by a headless check loop; exports one offline HTML file. Researches the real object first, hunting for the maker's o

Original author description

Build accurate 3D models in three.js drawn as technical illustrations: clean ink outlines with hidden lines removed, crease lines, section cuts with hatched cut faces, phantom lines for casings, dash-dot centre lines, flow lines coloured by temperature or pressure, and exploded views, on paper, blueprint or print palettes. Engines, turbines, gearboxes, pumps, mechanisms, machines and products at real dimensions, moving by real kinematics when they move, measured and photographed by a headless check loop; exports one offline HTML file. Researches the real object first, hunting for the maker's o

How it works

  1. Why the drawing is the harder test
  2. Set the look
  3. The drawing toolkit (lib/ink.js and friends)
  4. Drawing checklist (with the shared one in METHOD.md)
Original SKILL.md headings · 50 lines, 827 words
SKILL.md preview
---
name: wireframe
description: Build accurate 3D models in three.js drawn as technical illustrations: clean ink outlines with hidden lines removed, crease lines, section cuts with hatched cut faces, phantom lines for casings, dash-dot centre lines, flow lines coloured by temperature or pressure, and exploded views, on paper, blueprint or print palettes. Engines, turbines, gearboxes, pumps, mechanisms, machines and products at real dimensions, moving by real kinematics when they move, measured and photographed by a headless check loop; exports one offline HTML file. Researches the real object first, hunting for the maker's own CAD (STEP), spec tables and drawings, and builds on the maker's geometry when it is published. Use for "wireframe", "line drawing", "line art", "technical drawing", "technical illustration", "cutaway", "cross-section", "section view", "exploded view", "blueprint", "patent drawing", "how it works diagram", or recreating an object from a photo, spec or idea in that style. For shaded, realistic or worn metal use /3d-model instead.
---

# /wireframe: the drawing look

One engine with two looks; this command is the drawn one. The method, the library, the model contract and the proof are shared with `/3d-model` and live in the engine's `METHOD.md`. The drawing renderer is `lib/ink.js`.

**First, find the engine and read the method:**

```
ENGINE="$(cd -P "<this skill's base directory>/../.." && pwd)"   # the craft3d repo this skill links into
cat "$ENGINE/METHOD.md" "$ENGINE/references/drawing.md"
```

Read both in full before building, then `references/recreate.md` or `references/from-idea.md`. **For anything real, research comes first** (`references/research.md`): a background research agent hunting for the maker's own CAD, spec table, drawings and measured reviews, started the moment the object is named. A published STEP becomes the geometry, and a section through it (`tools/step2mesh.py section`) shows how the parts nest before you draw them. For a product, `wooting80he` is the closest example: it opens as a blueprint with a title block (`info.sheet`), dimension lines and callouts (`annot.js`), section A–A and an exploded build, all on the maker's CAD. The closest example is usually `turbojet` (`node "$ENGINE/tools/new.mjs" ./my-model --example turbojet`): it opens in the drawing look and shows every feature below. Everything below is what is specific to drawings.

## Why the drawing is the harder test

A drawing shows every edge. A blade with too few sections, a casing that is a stack of overlapping boxes, a part that pokes through another: shading hides these, ink does not. So the accuracy rules in `METHOD.md` matter more here, not less. Build closed solids the way the part is made (`turned` for anything round, `profile`/`slab` for plate, `blade` for airfoils), never a shell of planes.

## Set the look

- `info.look: 'drawing'` opens the model drawn; `info.palette`: `'paper'` (warm paper, black ink, blue section, the default), `'blueprint'`, `'print'`. `info.wear: false`.
- The viewer's `realistic` button (or `L`) still switches to shaded metal, so give parts sensible materials anyway.

## The drawing toolkit (lib/ink.js and friends)

| Want | Do |
|---|---|
| See inside | `section: {normal, from, to, value}` on the model: the plane keeps `normal·p <= offset`; the slider runs from `from` (no cut) to `to`. Cut faces are tinted and hatched automatically. |
| Keep parts whole through the cut | `obj.userData.noCut = true` (shafts, rotors, pistons, rods, valves, fasteners: drawings do not section them) |
| Phantom casing | transparent materials (opacity < 0.6) draw as thin grey lines behind and in front; or `userData.ink = 'ghost'` |
| Colour on the drawing | `userData.ink = 'color'`: drawn with its own material (gas, sparks, heat). `inkLine(points, {colors})` for flow lines, `ramp(t)` for cold-to-hot colour |
| Flow lines through the cut | give their `LineMaterial` `clippingPlanes = ink.planes` and set `depthTest = false` while the cut is open, so they run over the blades the way a cutaway illustration draws them |
| Centre lines | `centerline(A, B)` on every axis of rotation (drawn in the drawing look only) |
| Exploded view | `exploder([{obj, dir, dist, at}])`, a slider 0..1; outermost parts first, along the direction they really come off |
| Only in one look | `userData.inkOnly` / `userData.realOnly` (a display stand is `realOnly`) |
| Line weight | `info.lines = {sil: 2.2, crease: 1.2, ghost: 1, creaseAngle: 32, hatch: 7}` (CSS px, degrees) |
| Blueprint sheet | `info.palette: 'blueprint'` and `info.sheet = {marks, title, dwg, rows}`: a border, a header line and a title block, drawn by the viewer in the drawing look |
| Dimensions and callouts | `dim(A, B, side, offset)`, `leader(at, to, text)`, `label(text, at)` from `examples/wooting80he/annot.js` (copy it in): extension lines, arrowheads, values, leaders ordered so none cross; tag them `inkOnly` |
| The maker's CAD | `tools/step2mesh.py list / section / export`, `tools/cadpack.mjs`, `unpackCad()` from `lib/cad.js`: build on the real geometry (`references/research.md`) |

## Drawing checklist (with the shared one in METHOD.md)

- **No line noise.** Stray lines across a smooth surface mean too few segments or smoothed corners. Use `turned`/`creased` so corners are sharp and curves are smooth; raise segment counts on large round parts.
- **Cut faces where the material is.** A cut casing shows its wall as a thin hatched band; a solid block shows a filled section. A hatched face where there should be air means a shell that is not closed or faces that point inward (`outward()` fixes the winding).
- **Lines read at the size it will be seen.** Read a close-up and the full view. Tiny parts that turn into scribble at full view are too detailed for it or need thinner lines.
- **Every axis has its centre line.** Every moving part reads as whole in the section (`noCut`).
- **The cut and the explode tell the story.** One frame of the section through the working part, one of the exploded view, one close-up.

Review with the same `shoot.mjs` loop. Add `look=drawing` to `--query`, and shoot the section at a few slider values (`{"eval": "VIEW.set('section', 0.4)"}`) and the exploded view.

Versions

RepositoryScoreLicence
This page · yesith0106/craft3d87MIT
paperclipai/paperclip100MIT
bendrucker/claude100MIT
kurtstohrer/wireframe100MIT
teezeit/wiremd100MIT
event4u-app/agent-config90MIT
manalkaff/opendesign90MIT

Database snapshot: 13.11.2026 · package version bafaeaefe25b (SHA-256 digest of the entire package)

Downloads in the last 30 days: 0 · ranking

Report a problem with this skill: harmful content, incorrect descriptions or an author’s removal request.

Similar skills

  • 1003d-model
    Build accurate, realistic 3D models in three.js entirely from code: machines, engines, vehicles, mechs, robots, weapons, tools, props and environments, at real dimensions, with shaded metal, paint, glass and rubber, clean or worn and battle-damaged (shader wear, no textures),…
  • 100draft-wireframe
    Wireframe a screen — text/ASCII by default, or hand-drawn HTML when the user says "sketch", "hand-drawn", "lo-fi HTML", "whiteboard", "graph paper", or "visual wireframe". Text mode produces a buildable ASCII spec Form and Prism can act on. HTML mode produces a single…
  • 100wireframe-to-3d
    Convert 2D orthographic wireframe PNG drawings to 3D Blender models exported as glTF/GLB. Use this skill whenever the user provides wireframe images (technical drawings, line drawings, orthographic views, side/front/back panels) and wants to generate a 3D model, mesh, or .glb…
  • 100wireframe-to-3d
    Convert 2D orthographic wireframe PNG drawings to 3D Blender models exported as glTF/GLB. Use this skill whenever the user provides wireframe images (technical drawings, line drawings, orthographic views, side/front/back panels) and wants to generate a 3D model, mesh, or .glb…
  • 100blueprint-deck
    Builds a pitch or product deck drawn like an engineering blueprint, as one self-contained HTML file (fonts inlined, no libraries, works offline) that also prints to a 1920 × 1080 PDF. It uses the same content file as blueprint-landing and blueprint-film. Each slide is a sheet of…
  • 100local-wireframe-sketch-bc2b641e
    A hand-drawn wireframe exploration — graph-paper background, marker / pencil tone, multiple tab labels for variants, sticky-note annotations, scribbled chart placeholders, hatched fills. Reads like a designer's whiteboard before any pixels are committed. Use when the brief asks…

Feedback and reports

Your message goes to Bartosz Sokoliński. An email address is needed only for a reply. See the privacy policy.