gen-sketch · git:20260805.ef943a6 · 2026-08-05 · sha256 fef163f8e51110c8

gen-sketch git:20260805.ef943a6A

Immutable. This exact content is served forever at /api/v1/blob/fef163f8e51110c8.

---
name: gen-sketch
description: Generate a PartCAD 2D sketch from a natural-language description by authoring the sketch (build123d / cadquery / dxf / svg / basic) and validating it with the PartCAD CLI. Use for /pc:gen-sketch or when the user asks to generate, create, or draw a 2D sketch, profile, outline, or blueprint.
---

# pc:gen-sketch

Generate one PartCAD **sketch** — a 2D profile — from a description. You author
the sketch yourself and prove it renders with the PartCAD CLI. There is no
built-in `ai-*` sketch type; *you* are the model. The hard requirement: the
sketch **renders without errors**.

The flow mirrors `/pc:gen-part`, adapted to 2D. Treat it as a strong default, not
a script — but always finish by rendering. (Sketches are not manufacturable, so
unlike parts they need no `manufacturable:` flag and skip the `cam` tests.)

## 1. Understand the request

`$ARGUMENTS` is the description. Read it and any `requirements`, and view
reference images directly. Ask the user to clarify only load-bearing
ambiguities. Work in millimeters unless told otherwise.

## 2. Make sure PartCAD is available

Resolve a command as `/pc:init` does (`pc`, then `partcad`, then
`python -m partcad_cli.click.command`). If none is found, stop and run
`/pc:install executable` first.

## 3. Choose a representation

| Kind | Good for |
| --- | --- |
| `build123d` | parametric 2D sketches (recommended default) |
| `cadquery` | fluent 2D sketching |
| `dxf` | a DXF outline |
| `svg` | an SVG outline |
| `basic` | simple primitive-based sketches |

## 4. Author and register

Write the sketch file first, then register it:

```sh
pc add sketch <kind> <name>.<ext>       # e.g. pc add sketch build123d profile.py
```

- **build123d / cadquery (Python):** import everything you use (including `math`
  and the library itself); expose the 2D result with `show_object(<sketch>)`; do
  not export anything.
- **dxf / svg:** write the outline file directly.

Record the description in the sketch's `desc:` in `partcad.yaml`. If you started
the project with `pc init`, delete the empty null sections it leaves.

## 5. Render, compare, and iterate

Rendering is the build gate. Sketches render to SVG:

```sh
mkdir -p /tmp/pc-render                          # the -O directory must already exist
pc render -s -t svg -O /tmp/pc-render <name>     # writes /tmp/pc-render/<name>.svg
```

View `/tmp/pc-render/<name>.svg` and compare it against the description — the
outline and every stated dimension. Fix any error or mismatch, then re-render.
Iterate until it is right.

## 6. Finalize

Summarize what you drew — key dimensions and assumptions — and how to view it:
`pc inspect -s <name>`.