Export logo

Export

Organization
partcad
export

Write a CAD file out of an object a PartCAD package declares - STEP, BREP, STL, 3MF, OBJ, IGES, glTF, three.js, URDF for 3D, SVG or DXF for a sketch, or a file type the package implements itself - using `pc export`, which changes nothing in `partcad.yaml`. Use for /pc:export or when the user asks to export, save out, dump, hand off, or produce a CAD file of a part, sketch, assembly or whole package - for a printer, a supplier, a simulator, or another CAD tool. For a bare file with no package use /pc:convert; for a 2D picture use /pc:render.

Overview

Publisherpartcad
Repositorypartcad
Skill nameexport
Stars
504
Forks
47
Bundled files
Instructions only
LicenseApache-2.0
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by partcad on GitHub. Read the source before you install it.

Installation

Install the Export AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/partcad/partcad/tree/devel/ai-agents/common/skills/export
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/partcad/partcad.git /tmp/partcad
mkdir -p .claude/skills
cp -r /tmp/partcad/ai-agents/common/skills/export .claude/skills/export
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Export in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Export on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Export is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

pc:export

Write geometry out of a package, leaving the package exactly as it was. $ARGUMENTS says what to export and to what.

pc export is the close sibling of pc convert, and the difference is the whole reason to know both:

writes a filechanges partcad.yamlformats
pc exportyesnomore — urdf, plus any a package implements itself
pc convertyesyes — the object becomes the new formata fixed list per kind

So this is what to use whenever someone wants a file out of a package — to print, to quote, to import somewhere else — which is nearly always what "export it as STEP" means. /pc:convert is for the rarer case where the object itself should stop being what it is.

1. Work out which case you are in

Do this before running anything. It is the same first step in /pc:convert and /pc:render.

  1. Is there a package? PartCAD searches upward for partcad.yaml, so look in the current directory and above. pc --no-ansi list lists what the package holds; if there is no package it says so.
  2. Does the reference name an object? Check it against pc --no-ansi list parts / list sketches / list assemblies. pc --no-ansi info <name> succeeds only for an object that resolves.
  3. Does a file the user named belong to an object? Someone who says "export bracket.step as STL" inside a package usually means the part built from it. Read partcad.yaml and look for an object whose path: is that file — and note that a file-backed object without a path: is <name> plus the type's extension, so a part bracket of type step is bracket.step whether or not the path is written down.

If 2 or 3 matched, it is an object: use pc export (§3).

If there is no package, or the file is not one an object is built from, there is nothing to export from. A bare file is converted, not exported: hand it to pc adhoc convert — that is /pc:convert §4, and it is the ad-hoc equivalent of this skill, since it too writes a file and changes no package.

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:setup executable first.

Pass --no-ansi on every run so the output is plain text. It is a global flag and goes before the subcommand, and it routes the logs to stderr — so capture both streams when reading them: pc --no-ansi export ... 2>&1.

3. Export

sh
mkdir -p ./out                                       # -O expects the directory to exist
pc --no-ansi export -t stl -O ./out bracket          # a part
pc --no-ansi export -t step -O ./out -a gearbox      # an assembly (-a)
pc --no-ansi export -t dxf -O ./out -s outline       # a sketch (-s)
pc --no-ansi export -t stl -O ./out -P //pub/std bolt  # an object in another package

Formats: step, brep, stl, 3mf, threejs, obj, gltf, iges, urdf, svg, dxf, plus any file type a package implements itself. -t urdf writes a .urdf plus the directory of mesh files it references — it is the one that produces more than one file.

svg and dxf are the flat pair, and are what a sketch exports to: a sketch is already 2D, so this is its geometry and not a picture of it. A part or an assembly accepts them as well, but what comes back is a projection — if that is what is wanted, /pc:render is the command that says so, and the viewing-angle options exist only there.

Useful options:

  • -O <dir> — where the files go. The directory must exist; add -p to create the structure a configured output path needs.
  • No object name exports everything the package declares; a ... suffix on the package (-P //...) walks the imported packages too, and ...:<name> exports every object of that name from here down. Say what that will produce before running it on a package that imports the public index.
  • -e <package> — read another package's export: options and implementations, which is how one package's exporter is applied to another's objects.

Each file is named after the object, so exporting several objects into one directory is safe — unlike several views of one object, which is /pc:render.

If the format the user asked for is not in the list, check whether the package implements it: read the export: and render: sections of partcad.yaml. A package can declare a file type of its own, and it is then nameable with -t like any other.

4. Exporting part of an assembly

--filter keeps only some of the links of an assembly or a scene, so one sub-assembly can be exported without a declaration for it. It takes a JSON or YAML file naming the links, or the same written out on the command line:

sh
pc --no-ansi export -a -t step -O ./out --filter ./head.yaml logo
pc --no-ansi export -a -t step -O ./out --filter '[bone1, bone2]' logo

A link the filter names is kept and a link it does not name is dropped; a link named with nothing under it keeps everything under it, and a link named with children under it keeps those children only. The names are the ones the Assembly YAML file uses, which are the names a connect: uses — read the .assy file to find them. Everything kept stays where the whole assembly put it.

The object has to be named, with -a or -S for its kind: a part has no links, and neither has a whole package. The file written is the one an unfiltered export would have written, under the object's own name, so send two filters of one object to directories of their own with -O.

Nothing is written into the package. A filter: on an export: file type in partcad.yaml asks for the same thing permanently, per file type, which is what the user wants when the subset should be exported every time; and pc filter FILTER SRC DST makes the subset an object of the package, which is what they want when it should have a name.

5. Report what happened

Name the files that were written, with their paths — all of them for -t urdf or a whole-package export, or a count plus the directory when there are many. State that partcad.yaml is unchanged, since that is the property that makes this command the right one. If PartCAD printed an error, surface it verbatim.

Frequently asked questions

What does the Export AI skill do?

Write a CAD file out of an object a PartCAD package declares - STEP, BREP, STL, 3MF, OBJ, IGES, glTF, three.js, URDF for 3D, SVG or DXF for a sketch, or a file type the package implements itself - using `pc export`, which changes nothing in `partcad.yaml`. Use for /pc:export or when the user asks to export, save out, dump, hand off, or produce a CAD file of a part, sketch, assembly or whole package - for a printer, a supplier, a simulator, or another CAD tool. For a bare file with no package use /pc:convert; for a 2D picture use /pc:render.

Why use Export on TypingMind?

Because you install it once and use it with any model. Export is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Export in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/partcad/partcad/tree/devel/ai-agents/common/skills/export. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Export?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Export?

As many as you like. As long as a model supports skills, you can use Export with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Export AI skill free?

Yes. It is published on GitHub by partcad under the Apache-2.0 license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇