OpenCAD — скилл

Скилл create-cad-files строит деталь с размерами по описанию словами и выдает проверенные файлы STEP и STL.

  • 66 ★ репозитория
  • Последний коммит
  • Apache-2.0
Скилл

Расширенный доступ

Почему такой уровень

  • Скилл запускает скрипты и может установить пакет `opencad[occt]` в активное окружение Python, перед этим агент спрашивает разрешения.
Все причины и проверки

caid-technologies/open-cad

Установка

Ручная установка

npx skills add caid-technologies/OpenCAD

Команда из README для Claude, Codex, OpenCode и OpenClaw.

Доступ и проверки

Как мы проверяем

Расширенный доступИнструмент запускает код или ходит в сеть, а внешние данные только читает.

  • Скилл запускает скрипты и может установить пакет `opencad[occt]` в активное окружение Python, перед этим агент спрашивает разрешения.

Это чужой код. Посмотрите файлы в репозитории перед установкой.

Что делает

OpenCAD ставит агенту скилл `create-cad-files`. Пользователь описывает деталь словами, например круглую бутылку с распылителем диаметром 72 мм, а агент пишет параметрический исходник на читаемом Python, собирает настоящую геометрию через нативный бэкенд OCCT, проверяет файл и возвращает ссылки на исходник, STEP или STL и дерево построения. Ручной работы с Python и командной строкой от пользователя не требуется. Скилл начинает с размеров, единиц, отверстий и зазоров, по умолчанию берет миллиметры и спрашивает только о том, что меняет деталь по существу. STEP выбирается для редактируемой и производственной геометрии, STL для 3D-печати. Для каждого запуска создается свой каталог проекта, а готовый файл не перезаписывает прежний без флага `--force`. Тот же репозиторий содержит ядро CAD, решатель эскизов, дерево параметрических операций и компонент просмотра на React и Three.js.

Для кого. Инженерам и мейкерам, которым нужны механические детали и файлы для печати из словесного описания без ручного моделирования.

Подходит, если

  • Нужна деталь по габаритам с отверстиями и зазорами, и результат должен выйти файлом STEP.
  • Модель нужна в формате STL для 3D-принтера.
  • Параметры детали должны остаться именованными константами, чтобы менять размер одной правкой.
  • Готовый файл CAD надо проверить отдельно от создавшего его кода.

Не подходит, если

  • Нужна работа с чужим проектом в SolidWorks или AutoCAD: скилл создает деталь с нуля средствами OpenCAD.
  • Деталь сложнее, чем описывает текст, и требует интерактивного рисования эскизов мышью.
  • В окружении нельзя ставить `opencad[occt]`: без него скилл не соберет геометрию.

Пример запроса к агенту

Сделай круглую бутылку с распылителем диаметром 72 мм и дай файлы STEP и STL.

Ограничения

Скилл требует пакет `opencad[occt]`: если импорт не удался, агент объясняет зависимость и спрашивает разрешения на установку в активное окружение Python. Результат зависит от точности описания: недостающие размеры агент либо уточняет, либо берет по допущению и называет его. Файлы создаются в каталоге проекта с именем-UUID, перезапись без `--force` отклоняется. Проверка идет по готовому файлу, при ошибке агент правит исходник и повторяет проверку. Установка через `npx skills add` распространяется на Claude, Codex, OpenCode и OpenClaw.

Как отключить. Удалите скилл `create-cad-files` из каталога скиллов агента. Созданные каталоги проектов и файлы STEP и STL удаляются вручную.

Частые вопросы

Как поставить скилл?

Выполните `npx skills add caid-technologies/OpenCAD`. Для OpenClaw скилл `skills/create-cad-files` подхватывается из рабочей папки, для NemoClaw есть команда установки из клона.

Какие форматы выдает скилл?

STEP, STP и STL. STEP подходит для редактирования и производства, STL для печати, при необходимости создаются оба.

Нужно ли писать код?

Нет. Пользователь описывает деталь словами, а агент пишет параметрический исходник, собирает файл и проверяет его.

Где лежат результаты?

В каталоге проекта с именем-UUID: исходник `assembly.py`, папка `outputs` с файлами CAD и дерево построения `.tree.json`.

Что, если пакета OpenCAD нет?

Агент сообщает о зависимости и спрашивает разрешения на установку `opencad[occt]` в активное окружение Python.

Обсуждение

Вопросов и отзывов пока нет.

Скиллы

Python-SDK параметрического CAD со скиллом: модель строится кодом, экспорт в STEP, STL и MJCF, правка пересчитывает зависимое.

СкиллМинимальный доступ188Звезды репозитория

Библиотека агентских скиллов для CAD, CAE и CAM: генерация и правка моделей, экспорт STEP, STL, 3MF, файлы описания роботов и нарезка в g-code

СкиллРасширенный доступ26,1 тыс.Звезды репозитория

agentcad дает ИИ-агенту 3D-проектирование: скрипты build123d, экспорт STEP, рендер, проверка геометрии, просмотр в браузере

CLIРасширенный доступ214Звезды репозитория

MCP-сервер для OpenSCAD: агент рендерит детали с известным масштабом, измеряет геометрию и ищет коллизии в сборках

MCP-серверРасширенный доступ170Звезды репозитория

PartCAD хранит механические детали как текст: агент пишет CAD-скрипт, рендерит модель и сверяет ее с заданием.

ПлагинРасширенный доступ530Звезды репозитория

Набор устанавливаемых скиллов для ForgeCAD: агент пишет параметрические модели на .forge.js, проверяет их через CLI и синхронизирует с проектом

СкиллРасширенный доступ950Звезды репозитория

Сравнение с похожими

Карточки с тем же главным запросом: чем они отличаются.

ИнструментОфициальныйАвторизацияЗвезды репозиторияГлавное отличие
OpenCAD (эта карточка)нет66
FreeCAD MCPнетне нужна3 310MCP-сервер управляет запущенным FreeCAD; здесь агент строит деталь параметрическим Python и проверяет файл без GUI
OpenSCAD MCPнетне нужна170MCP-сервер рендерит детали OpenSCAD; здесь геометрия OCCT и экспорт STEP

Коротко о README

Репозиторий поставляется с готовыми манифестами плагинов для Claude и Codex и адаптерами для OpenCode. Рядом лежат пакеты Python `opencad`, `opencad-agent`, `opencad-backend` и npm-пакет `opencad-viewport` под лицензией Apache 2.0.

Бейдж для README

Исходный SKILL.md

---
name: create-cad-files
description: Create dimensioned 3D CAD parts from natural-language requirements and export validated STEP, STP, or STL files with OpenCAD. Use when a user asks an AI agent to model a mechanical part, make a printable STL, create an editable STEP file, convert a dimensional description into CAD, or revise a previously generated OpenCAD model.
---

# Create CAD Files

Create the model as readable OpenCAD Python, export it with the native OCCT backend, and validate the exchange file before returning it. Keep the user experience prompt-first: handle source generation, build commands, and validation without asking the user to operate Python.

## Workflow

1. Extract dimensions, units, geometry, holes, clearances, and output format. Use millimeters unless specified otherwise. Ask only when a missing dimension materially changes the part; otherwise state the assumption.
2. Prefer STEP for editable/manufacturing geometry and STL for a triangulated 3D-printing deliverable. Create both when requested.
3. Read [references/opencad-api.md](references/opencad-api.md) before writing a model. At the start of every run, create a fresh project directory with `scripts/create_project.py` and use the returned path as `PROJECT_DIR`. The helper creates a UUID-named directory under `~/forma-workspace/`; never derive the project ID from the request. Keep every source file, README, component, and generated artifact inside `PROJECT_DIR`. Create `README.md` for project context, `assembly.py` as the master composition entry point, `parameters.py` when dimensions are shared, a `components/` Python package for component modules, and an `outputs/` directory for generated artifacts. Honor explicitly requested filenames inside `PROJECT_DIR`, but do not replace the shared root or generated project ID.
4. Keep the model parametric: assign important dimensions to named constants, have component modules expose named builders or parts, and create one final `Part` in `assembly.py`. Leave that final part as the last generated shape in `assembly.py` (or the explicitly requested master file). Do not call `Part.export()` in the model; the build helper owns export and validation.
5. Ensure `opencad[occt]` is installed. If importing OpenCAD fails, explain the dependency and ask before installing it into the active Python environment.
6. Resolve this skill's directory, create the project directory by its absolute path, stay inside the returned project directory, and run the build helper by its absolute path:

   ```bash
   PROJECT_DIR=$(python /path/to/create-cad-files/scripts/create_project.py)
   python /path/to/create-cad-files/scripts/build_cad_file.py "$PROJECT_DIR/assembly.py" "$PROJECT_DIR/outputs/assembly.step" --tree-output "$PROJECT_DIR/outputs/assembly.tree.json"
   ```

   Use an `.stl` output name for STL. The helper refuses to replace files unless `--force` is explicitly supplied.
7. If exporting both formats, run the same project `assembly.py` source twice. Validate an existing artifact independently with the absolute path to `scripts/validate_cad_file.py`.
8. Inspect failures and revise the source rather than bypassing validation. Return clickable paths for the source, CAD artifacts, and feature tree, plus units and assumptions.

## Quality rules

- Preserve exact requested dimensions and name user-facing parameters.
- Use closed, ordered sketch profiles. Avoid self-intersections, zero-thickness contact, and coplanar boolean ambiguity.
- Apply fillets and chamfers after the main solid and boolean operations.
- Keep holes and clearances explicit. Do not invent manufacturing tolerances; flag them when fit matters.
- Do not claim that basic file validation proves printability, load capacity, code compliance, or manufacturability.
- Retain the project source, `README.md`, and tree JSON so revisions remain reproducible.
- Keep the project self-contained so `assembly.py`, nested component packages, and generated artifacts can be managed together.
- Use `__init__.py` files for component packages and subpackages. Import nested components from the project root, for example `from components.motor.mount.screw_pattern import make_screw_pattern`.
- Document the project purpose, units, assumptions, key dimensions, component/package tree, build command, artifacts, and known limitations in `README.md`.

## Failure handling

- If CadQuery/OCP is unavailable, use `opencad[occt]`; never substitute the analytic backend for a deliverable.
- If a boolean or fillet fails, simplify the feature, reduce the radius, or eliminate coincident faces.
- If requested geometry exceeds the API surface, explain the limitation and implement the closest faithful parametric model only with the user's agreement.

Сообщить о проблеме