Image to Three.js Model
img2threejs/img2threejs
Rebuilds the object in a reference image as a procedural, animation-ready Three.js model written entirely in code, using staged sculpting with quality checks.
Starts a local CAD Viewer server for a directory of CAD, robot-description or DXF files and returns a live review link, reusing a running instance when one already serves that directory.
$ npx skills add autonomous-ai/openharness --skill cad-viewer -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install autonomous-ai/openharness cad-viewer --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/autonomous-ai/openharness.git skills-src && mkdir -p .claude/skills && cp -r skills-src/store/agents/text-to-cad/skills/cad-viewer .claude/skills/cad-viewer && rm -rf skills-srcUse ~/.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/
Install the "cad-viewer" agent skill from https://github.com/autonomous-ai/openharness/tree/main/store/agents/text-to-cad/skills/cad-viewer into .claude/skills/cad-viewer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cad-viewer", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/autonomous-ai/openharness/tree/main/store/agents/text-to-cad/skills/cad-viewerType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add autonomous-ai/openharness --skill cad-viewer -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install autonomous-ai/openharness cad-viewer --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/autonomous-ai/openharness.git skills-src && mkdir -p .agents/skills && cp -r skills-src/store/agents/text-to-cad/skills/cad-viewer .agents/skills/cad-viewer && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "cad-viewer" agent skill from https://github.com/autonomous-ai/openharness/tree/main/store/agents/text-to-cad/skills/cad-viewer into .agents/skills/cad-viewer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cad-viewer", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add autonomous-ai/openharness --skill cad-viewer -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install autonomous-ai/openharness cad-viewer --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/autonomous-ai/openharness.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/store/agents/text-to-cad/skills/cad-viewer .cursor/skills/cad-viewer && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "cad-viewer" agent skill from https://github.com/autonomous-ai/openharness/tree/main/store/agents/text-to-cad/skills/cad-viewer into .cursor/skills/cad-viewer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cad-viewer", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/autonomous-ai/openharness.git --path store/agents/text-to-cad/skills/cad-viewer--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add autonomous-ai/openharness --skill cad-viewer -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install autonomous-ai/openharness cad-viewer --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/autonomous-ai/openharness.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/store/agents/text-to-cad/skills/cad-viewer .gemini/skills/cad-viewer && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "cad-viewer" agent skill from https://github.com/autonomous-ai/openharness/tree/main/store/agents/text-to-cad/skills/cad-viewer into .gemini/skills/cad-viewer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cad-viewer", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install autonomous-ai/openharness cad-viewerInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add autonomous-ai/openharness --skill cad-viewer -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/autonomous-ai/openharness.git skills-src && mkdir -p .github/skills && cp -r skills-src/store/agents/text-to-cad/skills/cad-viewer .github/skills/cad-viewer && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "cad-viewer" agent skill from https://github.com/autonomous-ai/openharness/tree/main/store/agents/text-to-cad/skills/cad-viewer into .github/skills/cad-viewer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cad-viewer", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add autonomous-ai/openharness --skill cad-viewer -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install autonomous-ai/openharness cad-viewer --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/autonomous-ai/openharness.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/store/agents/text-to-cad/skills/cad-viewer .opencode/skills/cad-viewer && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "cad-viewer" agent skill from https://github.com/autonomous-ai/openharness/tree/main/store/agents/text-to-cad/skills/cad-viewer into .opencode/skills/cad-viewer/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "cad-viewer", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
cad-viewerStarts a local CAD Viewer server for a directory of CAD, robot-description or DXF files and returns a live review link, reusing a running instance when one already serves that directory.
This skill opens CAD files (.step, .stp, .glb, .stl, .3mf, .dxf) and robot description files (.urdf, .srdf, .sdf) in CAD Viewer, part of the `cadgen` package, and hands back a URL for reviewing them, often right after a CAD, URDF, SRDF or SDF generation skill has produced the files. Setup installs the skill's `requirements.txt` into Python 3.11 or newer, and `cadgen doctor` confirms the installed version matches what the skill was published against.
Launching with `cadgen viewer --host 127.0.0.1 --json` from the chosen directory always ends with a URL: if an instance is already serving that exact directory with the same Viewer code on disk, its URL is reused, otherwise a new server starts on the first free port from 3245 upward. Each running instance serves exactly one fixed directory for its whole life, so the directory you launch from matters, since it decides what gets scanned, such as pulling in `node_modules` from a project root, and it is also the key used to decide whether an existing instance gets reused.
Read from SKILL.md and the folder at commit 74c2733. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
pythonFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
github.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
CAD Viewer Launcher 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 69 tokens; SKILL.md has 1,142 words of instructions outside code blocks.
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.
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.
The full file from autonomous-ai/openharness at commit 74c2733, republished under its MIT licence (© autonomous-ai). 1,142 words, ~1,924 tokens.
.claude/skills/cad-viewer/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.Provenance: maintained in earthtojake/text-to-cad. Use the installed local skill files as the runtime source of truth; the repository link is only for provenance and release review. If the user asks to modify, debug, or iterate on CAD Viewer source itself, that is the repository's work, not this skill's — this skill runs the Viewer, it is not where you edit it.
Use this skill to open existing or newly generated CAD, robot-description, or DXF files in CAD Viewer and hand back live review links. The expected input is one or more explicit file paths.
The Viewer is part of cadgen: install this skill's requirements.txt into a
Python >= 3.11 and the cadgen command carries the server and the prebuilt
client. There is nothing else to install and no Node at run time.
python -m pip install -r requirements.txtcadgen doctor <this skill's directory> confirms the installed cadgen matches
the version this skill was published against.
Launching is unconditional: the command below always ends with the URL of a
live Viewer for the launch directory. If one is already running for that
directory with the same Viewer code on disk (the reuse key is
realpath(directory) x an identity token — the cadgen version salted with the
Viewer files' newest mtime, so an upgraded Viewer never hands back a stale
instance), its URL is returned ("action": "reused");
otherwise a new server starts on the first free port from 3245 upward
("action": "started"). Never pick or reason about ports — read the URL the
command prints. Each instance serves ONE directory — the directory it is
launched from — fixed for the life of the process. There is no flag for it:
the cwd IS the served directory.
The base port
3245is0xCAD— "CAD" in hexadecimal.
cd /absolute/project/models && cadgen viewer --host 127.0.0.1 --json(cadgen must be the one installed from this skill's requirements.txt. If it
is not on PATH, python -m cadgen.viewer with that interpreter is the same
launcher.)
Choose the launch directory deliberately — it is the whole ballgame. The
cwd decides what the catalog SCANS (a project root drags in node_modules,
.git and build output) and it is the instance REUSE key, so launching from
wherever you happen to be can hand back a Viewer serving somewhere else. cd
to the directory the user thinks of as their model workspace — usually the
project's models/ directory — and launch from there. Never launch from
inside this skill's directory: that serves the skill, not the models.
Flags: --json prints the machine-readable last stdout line
({"url", "port", "action": "started"|"reused"}) — always pass it and take the
URL from there. --new forces a fresh instance instead of reusing. An
explicit --port <n> is strict — "this port or fail" — and disables
both reuse and rolling. cadgen viewer --help lists the rest.
The page is the bare origin, and file= selects one artifact inside the served root:
http://127.0.0.1:3245/?file=gripper/STEP/gear_rack_gripper.stepThe file= value is relative to the served directory. Nothing about the
directory appears in the URL, so the same link means different files under
different instances — the root is the server's, not the link's.
The launch directory is the workspace, not the file's folder. The Viewer
scans it recursively, so the file browser lists every model beneath it and the
user can switch files without a new link. Launch from the directory the user
thinks of as their model workspace — typically the project's models/
directory, or the nearest common parent of the files you were asked to review —
and put the rest of the path in file=. Launching from the artifact's own deep
folder (cd .../models/gripper/STEP, ?file=gear_rack_gripper.step) opens
the same model but hides the rest of the project, which is almost never what
the user wants.
Port collisions are not your problem: the launcher rolls to a free port and the
URL it prints is the truth. In sandboxed agent environments, local binding
failures such as EPERM/EACCES can still occur; rerun with the needed
permission/escalation.
cadgen viewer list shows every running instance with the directory it
serves; cadgen viewer stop --port <n> ends one. (Both run from anywhere —
only launching cares about the cwd.)
To review a directory outside the current root, just cd there and launch
again — reuse-or-start makes the second launch cheap and correct.
The Viewer is a static visualization tool: it renders artifacts that already exist. Generated models must be built first by running their model script (see the CAD skill); the Viewer never runs a script and never learns whether a document has one.
A .step/.stp document's status in the Viewer is one of four, decided from
the file's bytes and the store alone: not compiled (the store has no tree
for these bytes — the Viewer offers to compile, and compiles on open),
compiling · <phase> n/total (a job in cadgen's build pool is producing a
tree whose outputs include this document — the Viewer's own compile, a
python model.py in a terminal, or a parent's child build alike),
rendered, or failed (the last job for it failed; the message is shown).
A compile is a job submitted to the same pool every cadgen door uses, so
progress and errors come back as data. There is no "stale vs source" state:
whether a document is behind its script is cadgen store why's question, not
the Viewer's. When an agent is doing the work there is nothing to run first:
just use the file and return the link.
<directory>/<file> and confirm it
exists. Pass the .step/.stp artifact itself — generated and imported
alike. The catalog lists artifacts and names them exactly as they read on
disk: moonwatch.step is moonwatch.step in the tab, the breadcrumb, the
catalog row and the file picker, whether it was generated or imported.
The Viewer never learns whether a document was generated: its status is
artifact-side only (not compiled / compiling / rendered / failed), and the
model script is not shown anywhere in the UI. A generated model's document
must already exist (run the model script); a document the store has no tree
for is compiled from its bytes on open. If the resolved path is missing, do
not return the link; report the problem and point to the correct path.?file=<path relative to that root>, so all of them share one
browsable catalog. An artifact outside that root needs its own Viewer — launch
again with that root (reuse-or-start makes this idempotent); a link alone cannot
reach it.?file=.references/viewer-features.md when you need supported file types, Viewer controls, or file-specific feature details.© autonomous-ai, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 4 other files (references) in store/agents/text-to-cad/skills/cad-viewer of autonomous-ai/openharness.
Open the folder on GitHubat commit 74c2733
CAD Viewer Launcher 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| CAD Viewer Launcher this skillautonomous-ai/openharness | 1.2k | — | ~1.9k | Automated safety check: Pass | MIT | |
| Image to Three.js Modelimg2threejs/img2threejs | 18k | 1 repos | ~8.2k | Automated safety check: Pass | Apache-2.0 | |
| Bambu Studio AIheyixuan2/bambu-studio-ai | 220 | — | ~4.3k | Automated safety check: Pass | MIT | |
| Parametric 3D Printing with CadQueryflowful-ai/cad-skill | 655 | — | ~5.3k | Automated safety check: Pass | CC-BY-NC-4.0 | |
| Text To 3D AssetLaurentiuGabriel/unreal-game-assets-creation-skill | 148 | — | ~2.1k | Automated safety check: Pass | None | |
| Build123drawwerks/VibeCAD | 121 | — | ~1.4k | Automated safety check: Notes | MIT |
img2threejs/img2threejs
Rebuilds the object in a reference image as a procedural, animation-ready Three.js model written entirely in code, using staged sculpting with quality checks.
heyixuan2/bambu-studio-ai
End-to-end 3D printing for Bambu Lab printers. An agent skill from heyixuan2/bambu-studio-ai.
flowful-ai/cad-skill
Generates parametric, print-ready 3D models in Python and exports them as STL files sized to real connectors, devices and mounting hardware.
LaurentiuGabriel/unreal-game-assets-creation-skill
Generate a game-ready 3D asset by running the local AI pipeline sequentially: Fooocus (SDXL text-to-image) - Hunyuan3D-2 (image-to-textured-GLB) - optional Blender FBX convert + Unreal import.
rawwerks/VibeCAD
CAD modeling with build123d Python library. An agent skill from rawwerks/VibeCAD.
PhySpace/SimpleCADAPI
Build, assemble, inspect, reconstruct, and export parametric CAD models with the SimpleCADAPI Python SDK.
autonomous-ai/openharness
Slices 3D mesh files into printer-profiled plain G-code through real slicer CLIs, with backend discovery, input inspection, dry runs and static validation.
autonomous-ai/openharness
Turns a home-automation request into standard, testable automations.yaml, run against Home Assistant Core's real triggers and verified with its own trace tool.
autonomous-ai/openharness
Turns a musical brief into LilyPond concert-pitch music, checked parts for each instrument and a playable practice pack.
autonomous-ai/openharness
Turns an STL and explicit printer and material requirements into compared OrcaSlicer plans, an editable 3MF project, checked G-code and a portable handoff.
autonomous-ai/openharness
Builds an editable DOCX report, a formula-driven XLSX workbook and a fresh LibreOffice PDF preview from one structured source file, then checks them together.
autonomous-ai/openharness
Dry-run, upload, and cautiously initiate local Bambu Lab print jobs from validated plain .gcode, using Bambu LAN FTPS/MQTT handoffs.
Works with
Categories
Starts a local CAD Viewer server for a directory of CAD, robot-description or DXF files and returns a live review link, reusing a running instance when one already serves that directory. sdf) in CAD Viewer, part of the `cadgen` package, and hands back a URL for reviewing them, often right after a CAD, URDF, SRDF or SDF generation skill has produced the files.11 or newer, and `cadgen doctor` confirms the installed version matches what the skill was published against.
CAD Viewer Launcher fits situations like: visually reviewing a freshly generated STEP, GLB or STL CAD file; opening a URDF or SDF robot description for review after generation; getting a live review link to hand back after a CAD generation step.
Run `npx skills add autonomous-ai/openharness --skill cad-viewer -a claude-code`. Or copy the skill folder (store/agents/text-to-cad/skills/cad-viewer in autonomous-ai/openharness) into .claude/skills/cad-viewer in your project. Claude Code loads it when a task matches its description.
Run `npx skills add autonomous-ai/openharness --skill cad-viewer -a codex`. Or copy the skill folder (store/agents/text-to-cad/skills/cad-viewer in autonomous-ai/openharness) into .agents/skills/cad-viewer in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add autonomous-ai/openharness --skill cad-viewer -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/cad-viewer, .gemini/skills/cad-viewer, .github/skills/cad-viewer and .opencode/skills/cad-viewer in your project.
Going by SKILL.md and its folder, CAD Viewer Launcher needs the command-line tools its instructions call (python). Our summary lists: Python 3.11 or newer with the skill's requirements.txt installed; The cadgen package.
SKILL.md names 1 domain. As links in the text: github.com. This is read from the text; nothing was executed.
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.
CAD Viewer Launcher is published under the MIT licence (from the LICENSE file in the skill folder). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.9k tokens (SKILL.md is roughly 7.7k 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.8k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with CAD Viewer Launcher: Image to Three.js Model (img2threejs/img2threejs, 18k stars), Bambu Studio AI (heyixuan2/bambu-studio-ai, 220 stars), Parametric 3D Printing with CadQuery (flowful-ai/cad-skill, 655 stars) and Text To 3D Asset (LaurentiuGabriel/unreal-game-assets-creation-skill, 148 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
autonomous-ai (a GitHub organization) maintains it in autonomous-ai/openharness, which has 1,194 GitHub stars. The repository holds 99 skills in this directory. The repository was last updated on October 9, 2026.
Source: autonomous-ai/openharness on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.