Agent skill

CAD Viewer Launcher

by autonomous-ai in autonomous-ai/openharness

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.

MITAuto-check passedGame Development

Install CAD Viewer Launcher

skills CLI
$ npx skills add autonomous-ai/openharness --skill cad-viewer -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install autonomous-ai/openharness cad-viewer --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ 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-src

Use ~/.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/

Facts

Skill name
cad-viewer
GitHub stars
1.2k
Token cost
~1.9k tokens
SKILL.md length
1,142 words
Files
5 (incl. references)
Skills in repo
99
Repo updated
First seen
Licence
MIT

At a glance

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.

  • Visually reviewing a freshly generated STEP, GLB or STL CAD file
  • SKILL.md covers Setup, Start Viewer, URL shape and Generation is the CAD skill's…, plus 2 more sections
  • Calls python
  • Opening a URDF or SDF robot description for review after generation

What it does

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.

When your agent uses it

  • 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

Example prompts

  • “Open the robot.urdf file in CAD Viewer and give me the review link.”
  • “Start CAD Viewer for ./models and show me the part.step file.”
  • “Review this newly generated enclosure.stl in the CAD Viewer.”

Requirements

  • Python 3.11 or newer with the skill's requirements.txt installed
  • The cadgen package

What it can do on your machine

Read from SKILL.md and the folder at commit 74c2733. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Shell commands in SKILL.md call:

    • python

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • github.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

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.

Always · name and description, kept in context so the agent knows when to use it
~69
When it runs · the whole SKILL.md, loaded when a task matches
~1.9k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~3.7k

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.

Safety

Auto-check passed

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.

SKILL.md

The full file from autonomous-ai/openharness at commit 74c2733, republished under its MIT licence (© autonomous-ai). 1,142 words, ~1,924 tokens.

Download SKILL.mdSave it as .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.
name
cad-viewer
description
Start CAD Viewer and return review links for CAD and robot-description files. Use when visually reviewing `.step`, `.stp`, `.glb`, `.stl`, `.3mf`, `.dxf`, `.urdf`, `.srdf`, or `.sdf` files, especially when handed off from CAD, URDF, SRDF, or SDF generation skills.

CAD Viewer

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.

Setup

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.

bash
python -m pip install -r requirements.txt

cadgen doctor <this skill's directory> confirms the installed cadgen matches the version this skill was published against.

Start Viewer

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 3245 is 0xCAD — "CAD" in hexadecimal.

bash
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.

URL shape

The page is the bare origin, and file= selects one artifact inside the served root:

text
http://127.0.0.1:3245/?file=gripper/STEP/gear_rack_gripper.step

The 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.

Show full SKILL.md (449 more words)Show less

Generation is the CAD skill's job; documents compile in the Viewer

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.

  • Before returning any link, resolve <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.
  • Return one Viewer URL per requested file.
  • Start the Viewer once and pick one workspace root for the session. Every link is the same origin plus ?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.
  • For directory-only review links, return the origin without ?file=.
  • Do not stop an existing Viewer server unless the user asks.
  • If Viewer startup fails, report the failure and continue with the owning skill's non-GUI validation or artifacts.

References

  • Read 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

Files

SKILL.md and 4 other files (references) in store/agents/text-to-cad/skills/cad-viewer of autonomous-ai/openharness.

  • SKILL.md
  • LICENSE
  • agents/openai.yaml
  • references/viewer-features.md
  • requirements.txt

Open the folder on GitHubat commit 74c2733

Compare with similar skills

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.

CAD Viewer Launcher compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
CAD Viewer Launcher this skillautonomous-ai/openharness1.2k—~1.9kAutomated safety check: PassMIT
Image to Three.js Modelimg2threejs/img2threejs18k1 repos~8.2kAutomated safety check: PassApache-2.0
Bambu Studio AIheyixuan2/bambu-studio-ai220—~4.3kAutomated safety check: PassMIT
Parametric 3D Printing with CadQueryflowful-ai/cad-skill655—~5.3kAutomated safety check: PassCC-BY-NC-4.0
Text To 3D AssetLaurentiuGabriel/unreal-game-assets-creation-skill148—~2.1kAutomated safety check: PassNone
Build123drawwerks/VibeCAD121—~1.4kAutomated safety check: NotesMIT

Similar skills

  • 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.

    18k GitHub starsUsed in 1 repo~8.2k tokens
    Game DevelopmentAuto-check passed
  • Bambu Studio AI

    heyixuan2/bambu-studio-ai

    End-to-end 3D printing for Bambu Lab printers. An agent skill from heyixuan2/bambu-studio-ai.

    220 GitHub stars~4.3k tokensUpdated 20 days ago
    Game DevelopmentAuto-check passed
  • Generates parametric, print-ready 3D models in Python and exports them as STL files sized to real connectors, devices and mounting hardware.

    655 GitHub stars~5.3k tokensUpdated 2 mo ago
    Game DevelopmentAuto-check passed
  • Text To 3D Asset

    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.

    148 GitHub stars~2.1k tokensUpdated 2 mo ago
    Game DevelopmentAuto-check passed
  • Build123d

    rawwerks/VibeCAD

    CAD modeling with build123d Python library. An agent skill from rawwerks/VibeCAD.

    121 GitHub stars~1.4k tokensUpdated 9 mo ago
    Game DevelopmentAuto-check: notes
  • Simplecadapi

    PhySpace/SimpleCADAPI

    Build, assemble, inspect, reconstruct, and export parametric CAD models with the SimpleCADAPI Python SDK.

    142 GitHub stars~2.5k tokensUpdated 7 days ago
    Game DevelopmentAuto-check passed

More from autonomous-ai/openharness

All 99 skills in this repo
  • G-code Slicer Tool

    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.

    1.2k GitHub stars~1.5k tokensUpdated today
    Auto-check passed
  • Home Assistant Automation Builder

    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.

    1.2k GitHub stars~1.2k tokensUpdated today
    Auto-check passed
  • Score Music Composer

    autonomous-ai/openharness

    Turns a musical brief into LilyPond concert-pitch music, checked parts for each instrument and a playable practice pack.

    1.2k GitHub stars~1.1k tokensUpdated today
    Auto-check passed
  • OrcaSlicer 3MF and G-code Workflow

    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.

    1.2k GitHub stars~1.5k tokensUpdated today
    Auto-check passed
  • Sheets and Docs Report Builder

    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.

    1.2k GitHub stars~708 tokensUpdated today
    Auto-check passed
  • Bambu Labs

    autonomous-ai/openharness

    Dry-run, upload, and cautiously initiate local Bambu Lab print jobs from validated plain .gcode, using Bambu LAN FTPS/MQTT handoffs.

    1.2k GitHub starsUsed in 1 repo~2.1k tokens
    Auto-check: warnings

Works with

Questions about CAD Viewer Launcher

What does CAD Viewer Launcher do?

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.

When should I use CAD Viewer Launcher?

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.

How do I install CAD Viewer Launcher in Claude Code?

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.

How do I install CAD Viewer Launcher in Codex?

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.

Can I use CAD Viewer Launcher in Cursor, Gemini CLI or GitHub Copilot?

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.

What does CAD Viewer Launcher need to run?

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.

Does CAD Viewer Launcher access the network?

SKILL.md names 1 domain. As links in the text: github.com. This is read from the text; nothing was executed.

Is CAD Viewer Launcher safe to install?

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.

What licence does CAD Viewer Launcher use?

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.

How many tokens does CAD Viewer Launcher use?

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.

What are the alternatives to CAD Viewer Launcher?

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.

Who maintains CAD Viewer Launcher?

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.