engineering-drawing

engineering-drawing is a skill for Claude Code, Codex from earthtojake/text-to-cad. It costs 86 tokens per session (1,942 once invoked), scanned A, original, MIT.

A skill that creates a dimensioned engineering drawing of a part as a PDF. It projects views, hidden lines, centre marks, measurements, notes, and a title block from the part's geometry.

In plain words
What is it for?
Use it to produce a shop drawing for a part from a STEP file or a live build123d model, with orthographic views and manufacturing dimensions.
Why use it?
It keeps the drawing tied to the model, so changing the model and rerunning the script updates the views and measured values instead of leaving stale hand-drawn details.

Skill for Claude CodeCodex

Written for Claude Code and Codex: shipped in a Claude Code plugin, but also agents/openai.yaml present.

Part of the text-to-cad plugin — 13 skills shipped together

Good fit Use it to produce a shop drawing for a part from a STEP file or a live build123d model, with orthographic views and manufacturing dimensions.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/earthtojake/text-to-cad/engineering-drawing
About the project

text-to-cad is a collection of agent workflows for creating, examining, finding, preparing, and transferring CAD, engineering, manufacturing, and robot-description files. It is for agents working with mechanical design, fabrication, simulation, and robotics projects. Catalogue skills, instructions, and a plugin implement these workflows.

earthtojake/text-to-cad · 20,702 stars · on GitHub · texttocad.dev

Install

Getting it into your agent

One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.

Any agent
npx skills add earthtojake/text-to-cad --skill engineering-drawing
Clone the repo
git clone --depth 1 https://github.com/earthtojake/text-to-cad

Made for: Claude Code, Codex.

Or install text-to-cad, the plugin that ships this one along with the rest of its 13 skills.

Wrote this? Show the measurements

A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.

agentmods badge for engineering-drawing

README.md
[![agentmods](https://agentmods.dev/badge/skills/earthtojake/text-to-cad/engineering-drawing/github.svg)](https://agentmods.dev/skills/earthtojake/text-to-cad/engineering-drawing)
Your own site
<a href="https://agentmods.dev/skills/earthtojake/text-to-cad/engineering-drawing"><img src="https://agentmods.dev/badge/skills/earthtojake/text-to-cad/engineering-drawing/github.svg" alt="Measured on agentmods" height="20"></a>

Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.

agentmods 80×15 button for engineering-drawing

Your own site · 80×15
<a href="https://agentmods.dev/skills/earthtojake/text-to-cad/engineering-drawing"><img src="https://agentmods.dev/badge/skills/earthtojake/text-to-cad/engineering-drawing.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 86 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,942 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe. Third-party audits
  • Socket pass 10 Oct 2026
  • Snyk pass 10 Oct 2026
How audits are shown
Origin original No closer match found in the catalogue.
Token cost

What it costs to keep this loaded

Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.

ModelPer sessionOnce invoked
Fable 5.1 $0.00086 $0.01942
Opus 5.5 $0.00034 $0.00777
Sonnet 5.5 $0.00017 $0.00388
Haiku 4.5 $0.00009 $0.00194

Measured 4d ago against content hash cf1b2fe1fc14, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

engineering-drawing scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 4d ago.

A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.

Nothing flagged

None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.

skills/engineering-drawing/SKILL.md · 133 lines

How it starts

The opening of the file, as written. The whole thing — 133 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Engineering drawing

Provenance: maintained in earthtojake/text-to-cad. Use the installed local skill files as the runtime source of truth.

An engineering drawing is a DOCUMENT derived from a part. cadgen.eng_drawing projects views from the part's geometry, places dimensions between points ON that geometry, finds centre marks on it, and lays the result out on an ISO sheet with a frame and a title block. Change the model, rerun the drawing script, and the views, hidden lines and measured values move with it. Nothing on the sheet is drawn by hand, and nothing on it is a number you typed unless you chose to override a value.

The output is one PDF. That is what a shop receives and what every operating system opens. No DXF is written, nothing is paired or linked, and there is no CLI: the script is the interface. $dxf makes cut layouts and flat patterns, which are toolpaths, not documents; the two are different jobs.

Setup

Run cadgen through uv, so this skill's commands share one installation, and its warm build daemon, with the CAD app's server:

  • cadgen below means uvx --no-config --managed-python --python 3.13 --from cadgen==0.7.21 cadgen
  • python below means uvx --no-config --managed-python --python 3.13 --from cadgen==0.7.21 python

The first run downloads that installation; later runs reuse it.

Workflow

  1. Get the part. cadgen.read_step(Path(__file__).parent / "../STEP/part.step") reads the artifact a @step model wrote (run python <model>.py first); a live build123d shape works just as well. The drawing documents geometry, it does not build it.
  2. Write <name>_drawing.py beside the model, from the template. Import the model facts the dimensions reference (hole pitch, overall size, wall) from the model module rather than retyping them, so moving a feature moves its dimension.
  3. Place views with sheet.three_views(part, iso=True), which returns FOUR views: top, front and right in third angle with room for two rows of dimensions, plus an isometric in the free corner. sheet.three_views(part) returns three. Use sheet.view(part, name, at=(x, y)) (sheet millimetres from the bottom-left corner; A3 is 420 × 297, A4 is 297 × 210) only for a custom layout.
  4. Dimension what a maker needs, in MODEL coordinates: overall size per view (view.overall()), feature positions and sizes (view.dim, with tol= or fit= where the design requires one), holes as callouts (view.hole: thru, depth, counterbore, countersink, thread), and notes with leaders (view.note). Leave text unset so the dimension is measured; give a value only where the model does not define it. Leave offset unset too and the dimension takes the next free row outside the view; pass one only to place a dimension deliberately, and remember it is measured from the dimension's own points, not the view's edge. Keep notes few and short; one wider than the sheet's note column is refused, and notes= takes a LIST (notes="BREAK EDGES" is a sequence of eleven characters, so it is refused too).
  5. Run python <name>_drawing.py. It prints the PDF it wrote, and anything it noticed while drawing — read those first:
    • "measures blank paper": the dimension's model points do not land on the view's geometry. Almost always the part was built from a corner and the script assumed it was centred. Check the part's bounding box.
    • "annotation overlaps": two callouts print on top of each other, usually one view's outermost dimension against the label of the view above it. Pass a bigger three_views(gap=...) or place one with offset=. The text is measured as the renderer draws it, glyph by glyph, so this fires on ink and not on markup: a chain of toleranced dimensions is silent when the values clear each other.

Read the full file on GitHub · 133 lines

Files

What ships with it

3 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.

Changes

What this file has done since we first saw it

Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.

  1. 4d ago Changed cf1b2fe1fc14
  2. 5d ago Changed aa01e074cdc6
  3. 6d ago Changed 403f0ffb6783
  4. 7d ago Changed 7e0cb809c9b5
  5. 9d ago Changed 7b6cf05641e5
  6. 10d ago Changed · +10 lines a0fec37b96e7
  7. 12d ago Changed · +1 lines 4a1c700921ea
  8. 24d ago First seen · 122 lines · 86 tokens per session scan A 06dfddcada69

Subscribe to this mod's changes

engineering-drawing is a skill published in the GitHub repository earthtojake/text-to-cad (20,702 stars, last pushed today), licensed MIT. It adds 86 tokens to every session and 1,942 once invoked, about $0.0003 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-22.