<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>3D Model Generation on Producthunt daily</title>
        <link>https://producthunt.programnotes.cn/en/tags/3d-model-generation/</link>
        <description>Recent content in 3D Model Generation on Producthunt daily</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en</language>
        <lastBuildDate>Mon, 05 Oct 2026 23:54:15 +0800</lastBuildDate><atom:link href="https://producthunt.programnotes.cn/en/tags/3d-model-generation/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>text-to-cad</title>
        <link>https://producthunt.programnotes.cn/en/p/text-to-cad/</link>
        <pubDate>Mon, 05 Oct 2026 23:54:15 +0800</pubDate>
        
        <guid>https://producthunt.programnotes.cn/en/p/text-to-cad/</guid>
        <description>&lt;img src="https://images.unsplash.com/photo-1681459799763-79c3fe63dd0a?ixid=M3w0NjAwMjJ8MHwxfHJhbmRvbXx8fHx8fHx8fDE3OTEyMTU1NTJ8&amp;ixlib=rb-4.1.0" alt="Featured image of post text-to-cad" /&gt;&lt;h1 id=&#34;earthtojaketext-to-cad&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/earthtojake/text-to-cad&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;earthtojake/text-to-cad&lt;/a&gt;
&lt;/h1&gt;&lt;div align=&#34;center&#34;&gt;
&lt;img src=&#34;apps/docs/public/brand/logo-texttocad-animated.svg&#34; alt=&#34;text-to-cad&#34; width=&#34;800&#34;&gt;
&lt;p&gt;Give your agent CAD superpowers.&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://www.texttocad.dev&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Docs&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/earthtojake/text-to-cad/stargazers&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/github/stars/earthtojake/text-to-cad?style=for-the-badge&amp;amp;logo=github&amp;amp;label=Stars&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;GitHub stars&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://skills.sh/earthtojake/text-to-cad&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://skills.sh/b/earthtojake/text-to-cad?style=for-the-badge&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;skills.sh&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://x.com/earthtojake&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/badge/Follow-%40earthtojake-000000?style=for-the-badge&amp;amp;logo=x&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Follow @earthtojake&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://discord.gg/5FGB9DwJYU&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/badge/Discord-Join-5865F2?style=for-the-badge&amp;amp;logo=discord&amp;amp;logoColor=white&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Join Discord&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;LICENSE&#34; &gt;&lt;img src=&#34;https://img.shields.io/badge/License-MIT-blue?style=for-the-badge&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;License: MIT&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://github.com/earthtojake/text-to-cad/actions/workflows/test.yml?query=branch%3Amain&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/github/actions/workflow/status/earthtojake/text-to-cad/test.yml?branch=main&amp;amp;style=for-the-badge&amp;amp;logo=githubactions&amp;amp;logoColor=white&amp;amp;label=Tests&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Tests&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://pypi.org/project/cadgen/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/pypi/v/cadgen?style=for-the-badge&amp;amp;logo=pypi&amp;amp;logoColor=white&amp;amp;label=cadgen&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;cadgen&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://github.com/gumyr/build123d&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/badge/build123d-0.11-2F6FB0?style=for-the-badge&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;build123d&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://dev.opencascade.org&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/badge/Open%20CASCADE-7.9-E2001A?style=for-the-badge&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Open CASCADE&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;packages/cadgen/pyproject.toml&#34; &gt;&lt;img src=&#34;https://img.shields.io/badge/Python-3.11&amp;#43;-3776AB?style=for-the-badge&amp;amp;logo=python&amp;amp;logoColor=white&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Python&#34;
	
	
&gt;&lt;/a&gt;
&lt;a class=&#34;link&#34; href=&#34;https://nodejs.org&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;&lt;img src=&#34;https://img.shields.io/badge/Node.js-20&amp;#43;-5FA04E?style=for-the-badge&amp;amp;logo=nodedotjs&amp;amp;logoColor=white&#34;
	
	
	
	loading=&#34;lazy&#34;
	
		alt=&#34;Node.js&#34;
	
	
&gt;&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;h1 id=&#34;text-to-cad&#34;&gt;text-to-cad
&lt;/h1&gt;&lt;p&gt;The text-to-cad plugin gives your agent local workflows for generating 3D models
as STEP, GLB, STL or 3MF files. It also does design for manufacturing checks,
generates engineering drawings, and connects to popular 3D printing, sheet metal
and CNC fabrication services.&lt;/p&gt;
&lt;p&gt;It is supported by all popular agents that support plugins or the
&lt;a class=&#34;link&#34; href=&#34;https://skills.sh&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;skills&lt;/a&gt; framework, including Claude Code, Codex, Cursor,
Gemini and Grok.&lt;/p&gt;
&lt;h2 id=&#34;-install&#34;&gt;💻 Install
&lt;/h2&gt;&lt;h3 id=&#34;ask-your-agent-recommended&#34;&gt;Ask your agent (recommended)
&lt;/h3&gt;&lt;p&gt;Send this message to your agent and it will install text-to-cad for you.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;Install text-to-cad from https://github.com/earthtojake/text-to-cad
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Or install it yourself:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;CAD runs through &lt;a class=&#34;link&#34; href=&#34;https://docs.astral.sh/uv/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;uv&lt;/a&gt;: check that it is installed
(&lt;code&gt;uv --version&lt;/code&gt;), and if it is missing, install it with
&lt;a class=&#34;link&#34; href=&#34;https://docs.astral.sh/uv/getting-started/installation/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;uv&amp;rsquo;s installer&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Run the commands under your agent app&amp;rsquo;s heading below, or under
&lt;a class=&#34;link&#34; href=&#34;#other-agents&#34; &gt;Other Agents&lt;/a&gt; if it has none.&lt;/li&gt;
&lt;li&gt;Restart the app. Its first start downloads CAD&amp;rsquo;s runtime, so it needs a network
connection.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The plugin for your agent app brings the skills and CAD&amp;rsquo;s viewer, a local server
(&lt;code&gt;cadgen mcp&lt;/code&gt;). For an agent without a plugin, install the skills alone. Install
one or the other in an app, not both: two copies means every skill twice.&lt;/p&gt;
&lt;p&gt;Each app&amp;rsquo;s heading also says how to update text-to-cad, and how to reinstall it:
remove it, then install it again. Updating the plugin updates CAD: the new
release&amp;rsquo;s cadgen is downloaded the first time it runs, and the skills and the
server share it. Earlier releases stay in uv&amp;rsquo;s cache until you run &lt;code&gt;uv cache prune&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id=&#34;claude-code&#34;&gt;Claude Code
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude plugin marketplace add earthtojake/text-to-cad
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude plugin install text-to-cad@earthtojake
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;The plugin also starts CAD&amp;rsquo;s server. Where Claude Code can show app views, CAD
shows models as viewer cards in the conversation; otherwise, as in a terminal,
asking it to show a model gives you a link that opens the model in the CAD
Viewer in your browser.&lt;/p&gt;
&lt;p&gt;To update, run these, then restart Claude Code:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude plugin marketplace update earthtojake
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude plugin update text-to-cad@earthtojake
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;To reinstall, remove it with these, then run the install commands again:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude plugin uninstall text-to-cad@earthtojake
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;claude plugin marketplace remove earthtojake
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;claude-desktop&#34;&gt;Claude Desktop
&lt;/h3&gt;&lt;p&gt;CAD shows models in the chat: ask Claude to show one and it appears as a viewer
card you can orbit, add to your prompt, and open full size; Claude can read what
you selected and see what you see. It runs locally through uv: add the server to
Claude Desktop&amp;rsquo;s config (Settings &amp;gt; Developer &amp;gt; Edit Config), then restart the
app. If Claude Desktop cannot find &lt;code&gt;uvx&lt;/code&gt;, give its full path (&lt;code&gt;which uvx&lt;/code&gt;).&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;9
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-json&#34; data-lang=&#34;json&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;nt&#34;&gt;&amp;#34;mcpServers&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;nt&#34;&gt;&amp;#34;cad&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;command&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;uvx&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;args&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;[&lt;/span&gt;&lt;span class=&#34;s2&#34;&gt;&amp;#34;--no-config&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;--managed-python&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;--python&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;3.13&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;--from&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;cadgen==0.7.14&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;cadgen&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;,&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;mcp&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;],&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;      &lt;span class=&#34;nt&#34;&gt;&amp;#34;env&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;&amp;#34;CADGEN_INSTALL_CHANNEL&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;s2&#34;&gt;&amp;#34;claude-desktop&amp;#34;&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;The config pins a cadgen release in &lt;code&gt;args&lt;/code&gt;, and uvx keeps the version it first
downloads. To update, change that version to the
&lt;a class=&#34;link&#34; href=&#34;https://pypi.org/project/cadgen/&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;latest release&lt;/a&gt;, then restart Claude Desktop.&lt;/p&gt;
&lt;h3 id=&#34;codex&#34;&gt;Codex
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;codex plugin marketplace add earthtojake/text-to-cad
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;codex plugin add text-to-cad@earthtojake
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Requires Codex 0.142.0 or newer: older versions skip this repository-root plugin
silently, and it never appears in &lt;code&gt;codex plugin list&lt;/code&gt;. Upgrade with
&lt;code&gt;npm install -g @openai/codex@latest&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;In the Codex app the plugin also brings the CAD viewer: &lt;strong&gt;CAD&lt;/strong&gt; in the sidebar
(recent models, and Open), a &lt;strong&gt;CAD&lt;/strong&gt; tab beside each thread that the agent
drives, and &lt;em&gt;Open with CAD&lt;/em&gt; for model files.&lt;/p&gt;
&lt;p&gt;To update, upgrade the &lt;code&gt;earthtojake&lt;/code&gt; marketplace (or use Plugins › Manage ›
Marketplace), then restart Codex:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;codex plugin marketplace upgrade earthtojake
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;To reinstall, remove it with these, then run the install commands again:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;codex plugin remove text-to-cad@earthtojake
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;codex plugin marketplace remove earthtojake
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;The marketplace was renamed from &lt;code&gt;text-to-cad&lt;/code&gt; to &lt;code&gt;earthtojake&lt;/code&gt;; if you added it
before, remove the old one first (&lt;code&gt;codex plugin marketplace remove text-to-cad&lt;/code&gt;).&lt;/p&gt;
&lt;h3 id=&#34;cursor&#34;&gt;Cursor
&lt;/h3&gt;&lt;p&gt;Cursor also loads the plugin installed with Claude Code. If the Claude Code plugin
is installed, Cursor already has text-to-cad: skip this.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git clone --depth &lt;span class=&#34;m&#34;&gt;1&lt;/span&gt; --branch plugin https://github.com/earthtojake/text-to-cad ~/.cursor/plugins/local/text-to-cad
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Cursor reads &lt;code&gt;.cursor-plugin/plugin.json&lt;/code&gt;: restart Cursor after cloning. The
&lt;code&gt;plugin&lt;/code&gt; branch holds only the plugin, one commit per release. Teams can import
the repository instead, under &lt;strong&gt;Dashboard → Plugins &amp;amp; MCPs → Team Marketplaces&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;To update, pull the latest release, then restart Cursor:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;git -C ~/.cursor/plugins/local/text-to-cad pull
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;To reinstall, delete the folder, then run the install command again:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;rm -rf ~/.cursor/plugins/local/text-to-cad
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;grok-build&#34;&gt;Grok Build
&lt;/h3&gt;&lt;p&gt;Grok Build also loads the plugin installed with Claude Code. If the Claude Code
plugin is installed, Grok Build already has text-to-cad: skip this.&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;grok plugin install earthtojake/text-to-cad --trust
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;grok plugin &lt;span class=&#34;nb&#34;&gt;enable&lt;/span&gt; text-to-cad
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Grok Build reads the Claude plugin manifest. Grok shows tool results as text, so
asking it to show a model gives you a CAD Viewer link.&lt;/p&gt;
&lt;p&gt;To update, run this, then restart Grok Build:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;grok plugin update text-to-cad
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;To reinstall, remove it with this, then run the install commands again:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;grok plugin uninstall text-to-cad
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;gemini&#34;&gt;Gemini
&lt;/h3&gt;&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gemini extensions install https://github.com/earthtojake/text-to-cad --consent --auto-update
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;Gemini installs the latest release as an extension, with the skills and CAD&amp;rsquo;s
server, and keeps it up to date (&lt;code&gt;--auto-update&lt;/code&gt;; &lt;code&gt;--consent&lt;/code&gt; answers its security
prompt). Like Grok, it shows tool results as text, so asking it to show a model
gives you a CAD Viewer link.&lt;/p&gt;
&lt;p&gt;To update now, run this, then restart Gemini:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gemini extensions update text-to-cad
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;To reinstall, remove it with this, then run the install command again:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;gemini extensions uninstall text-to-cad
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;h3 id=&#34;other-agents&#34;&gt;Other Agents
&lt;/h3&gt;&lt;p&gt;For an agent without plugin support: the skills give you everything you need for
core CAD workflows and let you view CAD files in a localhost web app. Install them
with the Skills CLI:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;npx skills add earthtojake/text-to-cad
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;The command asks which agents to install for, and where. To skip the questions,
name the agent and install for your user:
&lt;code&gt;npx skills add earthtojake/text-to-cad -g -a &amp;lt;agent&amp;gt; -y&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;The skills install from &lt;code&gt;main&lt;/code&gt;, and each one runs cadgen through uv with the same
pinned command the plugin&amp;rsquo;s server uses, so uv must be installed. Without the
plugin there is no CAD server, so the skills open models in the CAD Viewer in
your browser.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;To update or reinstall, run the same command again&lt;/strong&gt;, then restart the app.
&lt;code&gt;add&lt;/code&gt; re-fetches the package and overwrites what is already installed, so it both
refreshes existing skills and installs any skill added in a newer release.
&lt;code&gt;npx skills update&lt;/code&gt; only refreshes skills already in your lockfile, so it silently
misses new ones — which matters here, because releases do add skills.&lt;/p&gt;
&lt;p&gt;Neither command removes a skill that was retired upstream; drop one with
&lt;code&gt;npx skills remove &amp;lt;skill&amp;gt;&lt;/code&gt; if you need to. The retired &lt;code&gt;cad-viewer&lt;/code&gt; skill is
now covered by the CAD, DXF and robot-description skills, and the retired
&lt;code&gt;cad-mcp-setup&lt;/code&gt; by this README&amp;rsquo;s install and update steps. Remove old standalone
installs with &lt;code&gt;npx skills remove cad-viewer cad-mcp-setup&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;No plugin for your agent yet?
&lt;a class=&#34;link&#34; href=&#34;https://github.com/earthtojake/text-to-cad/issues/new?title=Plugin%20request%3A%20&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;Request one&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;updates&#34;&gt;Updates
&lt;/h3&gt;&lt;p&gt;To update, ask your agent to update text-to-cad, or run the update commands under
your app&amp;rsquo;s heading, then restart the app.&lt;/p&gt;
&lt;p&gt;When a newer release is out, a copy you installed yourself says so: a blue update
button, first in CAD&amp;rsquo;s navbar and on its home, whose &lt;strong&gt;Send to agent&lt;/strong&gt; posts
&amp;ldquo;Update text-to-cad to 0.9.0 from &lt;a class=&#34;link&#34; href=&#34;https://github.com/earthtojake/text-to-cad%22&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/earthtojake/text-to-cad&#34;&lt;/a&gt; to
your chat, worded like the install message (the browser viewer&amp;rsquo;s copies it
instead), or, in an app that shows CAD&amp;rsquo;s replies as text, a line with its reply.
Your agent then runs the update commands under your app&amp;rsquo;s heading here. The button
also links to the &lt;a class=&#34;link&#34; href=&#34;https://www.texttocad.dev/install&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;install instructions&lt;/a&gt;, to
update by hand. Copies from a plugin directory or the Cursor Marketplace never
show it, since their store updates them, and neither does Gemini&amp;rsquo;s extension,
which Gemini updates: for those there is nothing to run.&lt;/p&gt;
&lt;p&gt;To find out, cadgen fetches &lt;code&gt;api.texttocad.dev/v1/versions&lt;/code&gt; at most once a day:
one anonymous request, with no ID, path or anything about you, never in CI and
never for a copy that something else updates. &lt;code&gt;CADGEN_UPDATE_CHECK=0&lt;/code&gt; turns it off.&lt;/p&gt;
&lt;h3 id=&#34;usage-analytics&#34;&gt;Usage analytics
&lt;/h3&gt;&lt;p&gt;The CAD app (the plugin&amp;rsquo;s &lt;code&gt;cad&lt;/code&gt; server) and the browser viewer (&lt;code&gt;cadgen viewer&lt;/code&gt;) can send anonymous usage counts: a
random install ID, versions, where you installed it from, your OS and agent app, how often each CAD tool was
called and views were used, and a one-way code and the format of each distinct
file shown (to count files, not identify them). Our server also counts installs
per country, from each request&amp;rsquo;s IP address, as weekly and monthly totals only.
Never file names, paths, contents or prompts. It is off until you allow it
in either app&amp;rsquo;s one-time prompt (one answer counts for both); change it later with
&lt;strong&gt;Share anonymous usage data&lt;/strong&gt; in either app&amp;rsquo;s menu (the logo at the top left, over any model), &lt;code&gt;uvx cadgen analytics on|off&lt;/code&gt;, or by asking your agent to
turn it off. &lt;code&gt;DO_NOT_TRACK=1&lt;/code&gt; keeps it off. See the
&lt;a class=&#34;link&#34; href=&#34;https://www.texttocad.dev/privacy-policy&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;privacy policy&lt;/a&gt;.&lt;/p&gt;
&lt;h3 id=&#34;windows-11-smart-app-control&#34;&gt;Windows 11: Smart App Control
&lt;/h3&gt;&lt;p&gt;The CAD kernel behind the &lt;code&gt;cad&lt;/code&gt;, &lt;code&gt;dxf&lt;/code&gt;, &lt;code&gt;urdf&lt;/code&gt;, &lt;code&gt;srdf&lt;/code&gt; and &lt;code&gt;sdf&lt;/code&gt;
skills is &lt;code&gt;OCP&lt;/code&gt;, OpenCascade&amp;rsquo;s Python binding, and its wheel ships an unsigned
native module. Windows 11&amp;rsquo;s Smart App Control blocks unsigned native code, so
on a machine where it is on (the default on a fresh install) every &lt;code&gt;cadgen&lt;/code&gt;
command and &lt;code&gt;import build123d&lt;/code&gt; fails with
&lt;code&gt;ImportError: DLL load failed while importing OCP&lt;/code&gt;, and Event Viewer records
the refusal as Event ID 3077 under CodeIntegrity › Operational. &lt;code&gt;cadgen doctor&lt;/code&gt;
names this when it sees it.&lt;/p&gt;
&lt;p&gt;Smart App Control has no per-app exception. Either turn it off (Settings ›
Privacy &amp;amp; security › Windows Security › App &amp;amp; browser control › Smart App
Control settings; once off it can only be turned back on by reinstalling
Windows) or run the CAD skills under WSL, where it does not apply. The wheel
is built by the cadquery-ocp project, so signing it is not something this
repository can do.&lt;/p&gt;
&lt;h2 id=&#34;-skills&#34;&gt;🧰 Skills
&lt;/h2&gt;&lt;p&gt;Install the library to give agents focused workflows for CAD, fabrication,
robot description files, simulation, and local review.&lt;/p&gt;
&lt;table&gt;
	&lt;thead&gt;
			&lt;tr&gt;
					&lt;th&gt;Skill&lt;/th&gt;
					&lt;th&gt;Summary&lt;/th&gt;
					&lt;th&gt;Source&lt;/th&gt;
			&lt;/tr&gt;
	&lt;/thead&gt;
	&lt;tbody&gt;
			&lt;tr&gt;
					&lt;td&gt;CAD&lt;/td&gt;
					&lt;td&gt;Creates and edits CAD models from plain-language or image requests, with STEP as the main output along with options to export to STL, 3MF and GLB.&lt;/td&gt;
					&lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;skills/cad/SKILL.md&#34; &gt;skills/cad&lt;/a&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;step.parts&lt;/td&gt;
					&lt;td&gt;Finds off-the-shelf STEP parts like screws, bearings, motors, and connectors.&lt;/td&gt;
					&lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;skills/step-parts/SKILL.md&#34; &gt;skills/step-parts&lt;/a&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Engineering Drawing&lt;/td&gt;
					&lt;td&gt;Dimensioned engineering drawings from a part, as a PDF: views, hidden lines, dimensions, hole callouts, title block.&lt;/td&gt;
					&lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;skills/engineering-drawing/SKILL.md&#34; &gt;skills/engineering-drawing&lt;/a&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;DXF&lt;/td&gt;
					&lt;td&gt;Creates 2D DXF drawings like profiles, templates, gaskets, and cut layouts from Python sources or CAD geometry.&lt;/td&gt;
					&lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;skills/dxf/SKILL.md&#34; &gt;skills/dxf&lt;/a&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;URDF&lt;/td&gt;
					&lt;td&gt;Writes robot structure files with links, joints, limits, inertials, and meshes.&lt;/td&gt;
					&lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;skills/urdf/SKILL.md&#34; &gt;skills/urdf&lt;/a&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;SRDF&lt;/td&gt;
					&lt;td&gt;Adds MoveIt planning groups, end effectors, poses, and collision rules to a URDF.&lt;/td&gt;
					&lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;skills/srdf/SKILL.md&#34; &gt;skills/srdf&lt;/a&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;SDF&lt;/td&gt;
					&lt;td&gt;Creates simulator models and worlds with frames, physics, sensors, and lights.&lt;/td&gt;
					&lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;skills/sdf/SKILL.md&#34; &gt;skills/sdf&lt;/a&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;SendCutSend&lt;/td&gt;
					&lt;td&gt;Checks DXF and STEP files before upload to SendCutSend.&lt;/td&gt;
					&lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;skills/sendcutsend/SKILL.md&#34; &gt;skills/sendcutsend&lt;/a&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;DfAM Check&lt;/td&gt;
					&lt;td&gt;Measures mesh printability per process: wall thickness, overhangs, support volume, and build orientation.&lt;/td&gt;
					&lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;skills/dfam-check/SKILL.md&#34; &gt;skills/dfam-check&lt;/a&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;DFM&lt;/td&gt;
					&lt;td&gt;Reviews a part for sheet metal, CNC machining, or injection molding, with measured evidence and the cited rule behind every finding; measures draft, undercuts and projected area from a mesh.&lt;/td&gt;
					&lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;skills/dfm/SKILL.md&#34; &gt;skills/dfm&lt;/a&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;G-code&lt;/td&gt;
					&lt;td&gt;Slices models into printer-ready G-code with OrcaSlicer, using your own printer presets.&lt;/td&gt;
					&lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;skills/gcode/SKILL.md&#34; &gt;skills/gcode&lt;/a&gt;&lt;/td&gt;
			&lt;/tr&gt;
			&lt;tr&gt;
					&lt;td&gt;Bambu Labs&lt;/td&gt;
					&lt;td&gt;Sends prints to Bambu Lab printers through Bambu Connect, Bambu Lab&amp;rsquo;s official app, or Bambu Studio.&lt;/td&gt;
					&lt;td&gt;&lt;a class=&#34;link&#34; href=&#34;skills/bambu-labs/SKILL.md&#34; &gt;skills/bambu-labs&lt;/a&gt;&lt;/td&gt;
			&lt;/tr&gt;
	&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;-contributing&#34;&gt;🛠️ Contributing
&lt;/h2&gt;&lt;p&gt;Branch from &lt;code&gt;main&lt;/code&gt; and open PRs against &lt;code&gt;main&lt;/code&gt;. For the local workflow, testing in
agent apps and validation, see &lt;a class=&#34;link&#34; href=&#34;CONTRIBUTING.md&#34; &gt;CONTRIBUTING.md&lt;/a&gt;.&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
