Agent skill

CAD Engineering Drawing Generator

by earthtojake in earthtojake/text-to-cad

Projects orthographic views, dimensions, hole callouts and a title block from a part's actual geometry into a single ISO-sheet PDF drawing that updates when the model changes.

MITAuto-check passedDevelopment

Install CAD Engineering Drawing Generator

skills CLI
$ npx skills add earthtojake/text-to-cad --skill engineering-drawing -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install earthtojake/text-to-cad engineering-drawing --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/earthtojake/text-to-cad.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/engineering-drawing .claude/skills/engineering-drawing && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
engineering-drawing
GitHub stars
19k
Token cost
~1.9k tokens
SKILL.md length
1,151 words
Files
4 (incl. references)
Skills in repo
12
Repo updated
First seen
Licence
MIT

At a glance

Projects orthographic views, dimensions, hole callouts and a title block from a part's actual geometry into a single ISO-sheet PDF drawing that updates when the model changes.

  • Works in 6 steps: Get the part.… → Write _drawing.py beside the model, from → Place views with sheet.three_views(part,… → …
  • Producing a dimensioned shop drawing PDF from a CAD part
  • SKILL.md covers Setup, Workflow, What the sheet contains and What fails loudly, plus 1 more section
  • Calls uvx and python

What it does

cadgen.eng_drawing turns a CAD part into a document rather than a hand-drawn sheet: it projects views straight from the part's geometry, places dimensions between points on that geometry, finds centre marks automatically and lays everything out on an ISO sheet with a frame and title block. Because every value comes from the model, changing the part and rerunning the drawing script moves the views, hidden lines and measurements with it, and nothing is a typed number unless you deliberately override it. The only output is one PDF; no DXF is written, since DXF flat patterns are a separate tool's job, not this one, and there is no CLI beyond running the script.

Everything runs through uv, pinned to cadgen 0.7.15 on Python 3.13, so the skill's commands share one installation and warm build daemon with the CAD app's server; the first run downloads it and later runs reuse it. The workflow reads the part with cadgen.read_step from a STEP file a model script already wrote, writes a new drawing script beside the model that imports the model's own facts such as hole pitch and wall thickness rather than retyping them, places views with sheet.three_views for a standard four-view layout with an isometric or sheet.view for a custom A3 or A4 layout, then dimensions what a maker actually needs in model coordinates.

When your agent uses it

  • Producing a dimensioned shop drawing PDF from a CAD part
  • Keeping a drawing's dimensions and views in sync after the model changes
  • Generating a title-blocked ISO sheet with hole callouts for manufacturing

Example prompts

  • “Make an engineering drawing PDF for the bracket part in ./STEP/part.step.”
  • “Generate a dimensioned drawing with top, front, right and isometric views for this model.”
  • “The hole pitch changed in the model; rerun the drawing so the dimensions update.”

Requirements

  • uv with Python 3.13 to run cadgen 0.7.15
  • A STEP file or build123d shape produced by a model script

Workflow steps

6 steps, taken from the first numbered list in SKILL.md.

  1. Get the part. cadgen.read_step(Path(file).parent / "../STEP/part.step")
  2. Write _drawing.py beside the model, from
  3. Place views with sheet.three_views(part, iso=True), which returns FOUR
  4. Dimension what a maker needs, in MODEL coordinates: overall size per view
  5. Run python _drawing.py. It prints the PDF it wrote, and **anything
  6. Read the PDF and fix what collides. Check that no dimension text sits on

What it can do on your machine

Read from SKILL.md and the folder at commit b48ff49. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • uvx
    • python

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • docs.astral.sh

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

CAD Engineering Drawing Generator loads about 1.9k tokens when it runs, and up to ~3.7k if it reads all its reference files. Until then it costs about 99 tokens; SKILL.md has 1,151 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~99
When it runs · the whole SKILL.md, loaded when a task matches
~1.9k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~3.7k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from earthtojake/text-to-cad at commit b48ff49, republished under its MIT licence (© earthtojake). 1,151 words, ~1,950 tokens.

Download SKILL.mdSave it as .claude/skills/engineering-drawing/SKILL.md (or your agent's skills folder). This skill also uses 3 other files; get the full folder from GitHub.
name
engineering-drawing
description
Make an engineering drawing of a part as a PDF - orthographic views with hidden lines and centre marks, real dimensions, hole callouts, notes and a title block on ISO sheets, all projected from the part's geometry so the drawing follows the model. Use when the user asks for a drawing, a dimensioned sheet, shop or manufacturing drawings, a print, or "2D views of this part".
license
MIT

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.20 cadgen
  • python below means uvx --no-config --managed-python --python 3.13 --from cadgen==0.7.20 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.

    Steps 3 and 5 stand on their own: a sheet of views with no dimensions on it yet is a drawing, and writes its PDF.

    When running unattended, set MPLCONFIGDIR to a writable directory so matplotlib's font cache does not warn.

  6. Read the PDF and fix what collides. Check that no dimension text sits on a view, that hidden lines appear where features are behind faces, that every hole has a centre mark, and that no leader crosses the part. Very small dimensions (a few mm) put their value on their own extension line; dimension the larger feature instead. Move at= or offset= and rerun.

Show full SKILL.md (454 more words)Show less

What the sheet contains

  • Layers with meaning: VISIBLE (heavy outline), HIDDEN (dashed), CENTER (centre marks), DIM, NOTES, TITLE, SHEET (frame), each printed at its own weight — 0.5 mm down to 0.18 mm, so thick reads against thin on paper. An edge is drawn once: a silhouette that the kernel returns as both visible and hidden stays on VISIBLE. Hidden TANGENT transitions are not drawn at all — a fillet running into a face, or the seam where a cylinder closes on itself, marks nothing a shop can see, and drawn dashed it reads as a hidden edge that is not there (on a bore, as a line down the hole's own axis).
  • Dimensions measured from the geometry, with filled arrowheads and witness lines, and true-size values at any drawing scale.
  • A title block with title, part number, material, author, scale, units, projection, revision, SHEET n OF m and the drawing function's name; numbered notes above it (the general tolerance, when given, is note 1); a revision table top-right when revisions= is given. Text longer than its cell is set smaller, and cut with an ellipsis rather than overrun.
  • PDF bytes that are a function of the content: no creation date is stamped, so an unchanged drawing rebuilds to an identical file.

What fails loudly

The script raises rather than writing a wrong or missing document:

  • Views that run off the frame, naming a scale that has been laid out and verified to fit, or saying that no standard scale does.
  • A part argument the vocabulary does not define: an unknown view name, sheet size or projection, orientation= other than "h"/"v", a negative or zero diameter, a counterbore that is not a (diameter, depth) pair, a tol that is not a number or a pair, a hole that is both thru and given a depth, notes= or revisions= given a bare string, a note wider than the sheet, angle() legs that are collinear or zero-length, a non-finite at= or offset=.
  • A missing renderer. The PDF is the drawing, so no matplotlib is a failure, not a skipped half. A failed render leaves no file behind.
  • out= missing or not naming a .pdf, at import time.

Limits to state in the handoff

  • Tolerances come only from tol=, fit= and general_tolerance= that you write; get the values from the design requirements or the user, never invented. A dimension without one is nominal.
  • Views are orthographic projections with hidden lines from the kernel; no sections, details, or auxiliary views yet. Say what a view does not show.
  • The sheet keeps callouts clear of the views it knows about, and reports annotation that still prints over other annotation, but it does not check annotation against line work. Read the PDF.

© earthtojake, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 3 other files (references) in skills/engineering-drawing of earthtojake/text-to-cad.

  • SKILL.md
  • LICENSE
  • agents/openai.yaml
  • references/sheet-api.md

Open the folder on GitHubat commit b48ff49

Compare with similar skills

CAD Engineering Drawing Generator next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

CAD Engineering Drawing Generator compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
CAD Engineering Drawing Generator this skillearthtojake/text-to-cad19k—~1.9kAutomated safety check: PassMIT
Code Review ChecklistshareAI-lab/learn-claude-code78k4 repos~1.1kAutomated safety check: PassMIT
Minimizing Ty Ecosystem Changesastral-sh/ruff50k—~4.6kAutomated safety check: PassMIT
Merge Dependabot PRsonyx-dot-app/onyx32k1 repos~2.2kAutomated safety check: PassMIT
Summarise Ecosystem Resultsastral-sh/ruff50k—~2.2kAutomated safety check: PassMIT
Senior Architect Toolkitmaslennikov-ig/claude-code-orchestrator-kit2608 repos~1.2kAutomated safety check: NotesCustom licence

Similar skills

  • Code Review Checklist

    shareAI-lab/learn-claude-code

    Reviews code against a five-part checklist covering security, correctness, performance, maintainability and testing, and reports findings in a fixed format.

    78k GitHub starsUsed in 4 repos~1.1k tokens
    DevelopmentAuto-check passed
  • Official

    A skill your agent uses when a user says "minimize this ty ecosystem change", "reproduce this ecosystem result", "investigate a primer difference", "investigate a mypyprimer difference"…

    50k GitHub stars~4.6k tokensUpdated today
    DevelopmentAuto-check passed
  • Merge Dependabot PRs

    onyx-dot-app/onyx

    Triages and lands a batch of open Dependabot PRs in the Onyx repo, where main is gated exclusively by GitHub's merge queue: approves and enqueues green PRs, closes superseded duplicates, fixes…

    32k GitHub starsUsed in 1 repo~2.2k tokens
    DevelopmentAuto-check passed
  • Official

    A skill your agent uses when a user says "summarise ecosystem results", "summarize this ty ecosystem report", "what changed in this ecosystem run?", or asks to summarise or summarize ty ecosystem…

    50k GitHub stars~2.2k tokensUpdated today
    DevelopmentAuto-check passed
  • Senior Architect Toolkit

    maslennikov-ig/claude-code-orchestrator-kit

    Comprehensive software architecture skill for designing scalable, maintainable systems using ReactJS, NextJS, NodeJS, Express, React Native, Swift, Kotlin…

    260 GitHub starsUsed in 8 repos~1.2k tokens
    DevelopmentAuto-check: notes
  • Kedro Babysit

    kedro-org/kedro

    Run Kedro's local lint / format / type-check / tests on changed files (uses the project's pre-commit hooks, ruff, mypy, pytest, lint-imports, detect-secrets, Make targets — in the right venv), or…

    11k GitHub stars~4k tokensUpdated today
    DevelopmentAuto-check passed

More from earthtojake/text-to-cad

All 12 skills in this repo
  • DfAM Printability Check

    earthtojake/text-to-cad

    Measures STL, OBJ, PLY or 3MF mesh files against additive manufacturing design limits and reports printability findings for each print process.

    19k GitHub starsUsed in 2 repos~1.5k tokens
    Auto-check passed
  • Step Parts

    earthtojake/text-to-cad

    Find, evaluate, and download common purchasable CAD parts from step.parts, including named off-the-shelf actuators, servos, motors, electronics boards, connectors, screws, bolts, nuts, washers…

    19k GitHub starsUsed in 1 repo~1.5k tokens
    Auto-check passed
  • Design for Manufacturing Review

    earthtojake/text-to-cad

    Guided DFM review of a part for sheet metal, CNC machining or injection molding, covering bends, tool access, draft and undercuts, with evidence-first measurement rules.

    19k GitHub stars~1.4k tokensUpdated today
    Auto-check passed
  • DXF Drawing Generation

    earthtojake/text-to-cad

    Generates, regenerates and validates 2D DXF drawings from Python build123d sources for profiles, gaskets, panels and cut layouts, and reviews them in CAD Viewer.

    19k GitHub starsUsed in 1 repo~4.3k tokens
    Auto-check passed
  • OrcaSlicer G-code Slicing

    earthtojake/text-to-cad

    Slices STL, 3MF or OBJ models into printer-ready G-code with OrcaSlicer, either headless from the command line or by opening the model in the app.

    19k GitHub stars~989 tokensUpdated today
    Auto-check passed
  • URDF Robot Description Authoring

    earthtojake/text-to-cad

    Guides writing, editing and validating URDF robot description files, with a design ledger, exact frame semantics and computed inertials checked by a validator.

    19k GitHub starsUsed in 1 repo~2.3k tokens
    Auto-check passed

Works with

Categories

Questions about CAD Engineering Drawing Generator

What does CAD Engineering Drawing Generator do?

Projects orthographic views, dimensions, hole callouts and a title block from a part's actual geometry into a single ISO-sheet PDF drawing that updates when the model changes. eng_drawing turns a CAD part into a document rather than a hand-drawn sheet: it projects views straight from the part's geometry, places dimensions between points on that geometry, finds centre marks automatically and lays everything out on an ISO sheet with a frame and title block. Because every value comes from the model, changing the part and rerunning the drawing script moves the views, hidden lines and measurements with it, and nothing is a typed number unless you deliberately override it.

When should I use CAD Engineering Drawing Generator?

CAD Engineering Drawing Generator fits situations like: producing a dimensioned shop drawing PDF from a CAD part; keeping a drawing's dimensions and views in sync after the model changes; generating a title-blocked ISO sheet with hole callouts for manufacturing.

How do I install CAD Engineering Drawing Generator in Claude Code?

Run `npx skills add earthtojake/text-to-cad --skill engineering-drawing -a claude-code`. Or copy the skill folder (skills/engineering-drawing in earthtojake/text-to-cad) into .claude/skills/engineering-drawing in your project. Claude Code loads it when a task matches its description.

How do I install CAD Engineering Drawing Generator in Codex?

Run `npx skills add earthtojake/text-to-cad --skill engineering-drawing -a codex`. Or copy the skill folder (skills/engineering-drawing in earthtojake/text-to-cad) into .agents/skills/engineering-drawing in your project. Codex loads it when a task matches its description.

Can I use CAD Engineering Drawing Generator in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add earthtojake/text-to-cad --skill engineering-drawing -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/engineering-drawing, .gemini/skills/engineering-drawing, .github/skills/engineering-drawing and .opencode/skills/engineering-drawing in your project.

What does CAD Engineering Drawing Generator need to run?

Going by SKILL.md and its folder, CAD Engineering Drawing Generator needs the command-line tools its instructions call (uvx and python). Our summary lists: uv with Python 3.13 to run cadgen 0.7.15; A STEP file or build123d shape produced by a model script.

Does CAD Engineering Drawing Generator access the network?

SKILL.md names 1 domain. As links in the text: docs.astral.sh. This is read from the text; nothing was executed.

Is CAD Engineering Drawing Generator safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does CAD Engineering Drawing Generator use?

CAD Engineering Drawing Generator is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does CAD Engineering Drawing Generator use?

About 1.9k tokens (SKILL.md is roughly 7.8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.7k tokens, read only when the agent opens those files.

What are the alternatives to CAD Engineering Drawing Generator?

Skills that share tags, products or a category with CAD Engineering Drawing Generator: Code Review Checklist (shareAI-lab/learn-claude-code, 78k stars), Minimizing Ty Ecosystem Changes (astral-sh/ruff, 50k stars), Merge Dependabot PRs (onyx-dot-app/onyx, 32k stars) and Summarise Ecosystem Results (astral-sh/ruff, 50k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains CAD Engineering Drawing Generator?

earthtojake (a GitHub user) maintains it in earthtojake/text-to-cad, which has 18,839 GitHub stars. The repository holds 12 skills in this directory. The repository was last updated on October 10, 2026.

Source: earthtojake/text-to-cad on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.