Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add redmaplewww/ai-cad-workbench --skill cad-viewergit clone --depth 1 https://github.com/redmaplewww/ai-cad-workbenchWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/redmaplewww/ai-cad-workbench/cad-viewer)<a href="https://agentmods.dev/skills/redmaplewww/ai-cad-workbench/cad-viewer"><img src="https://agentmods.dev/badge/skills/redmaplewww/ai-cad-workbench/cad-viewer/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/redmaplewww/ai-cad-workbench/cad-viewer"><img src="https://agentmods.dev/badge/skills/redmaplewww/ai-cad-workbench/cad-viewer.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00109 | $0.01160 |
| Opus 5 | $0.00055 | $0.00580 |
| Sonnet 5 | $0.00022 | $0.00232 |
| Haiku 4.5 | $0.00011 | $0.00116 |
Grade A, and why
cad-viewer scanned grade A with 1 finding against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 10d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Makes network callslowCapability
Not a fault in itself. Listed so you know the mod talks to something, and to what.
curl -sS -m 2 http://127.0.0.1:4178/__cad/server How it starts
The opening of the file, as written. The whole thing — 102 lines — stays where its author put it; the contents beside it link to each section on GitHub.
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.
Use this skill to open existing or newly generated CAD, implicit CAD, robot-description, DXF, or plain FDM G-code files in CAD Viewer and hand back live review links. The expected input is one or more explicit file paths.
Start Viewer
Use one local CAD Viewer per machine and serve every directory through ?dir=.
The Viewer advertises dynamic-root, so a single server answers for any
absolute directory; you never need a second server just to change directories.
First check whether a reusable Viewer is already running on the default port:
curl -sS -m 2 http://127.0.0.1:4178/__cad/server
Reuse that server when the response is JSON with "app": "cad-viewer" and
"dynamicRoot": true. Take its url and port from the response and skip
straight to Links. Start your own server instead when the probe fails, or when
the response's viewerVersion differs from the version in
scripts/viewer/package.json — a different version is another checkout's
Viewer, not this skill's runtime.
To start one, run from this skill directory:
npm --prefix scripts/viewer run serve -- --host 127.0.0.1 --dir <absolute-model-root> --shutdown-after 12h --json
Choose --dir as the absolute directory that contains the model artifacts and
sidecars, commonly <repo>/models or the consuming project's equivalent model
directory. The file= value must be relative to that --dir.
The server binds 4178 when it is free and scans forward when it is not, so do
not pick ports by hand or probe for a free one. Read the bound port from the
--json startup line described under Claude Preview rather than assuming
4178, then append file=:
http://127.0.0.1:<bound-port>/?dir=/absolute/project/models&file=path/to/model.step
What ships with it
60 files beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
- agents/openai.yaml 242 B
- LICENSE 1.0 KB
- references/development.md 486 B
- references/moveit2-server.md 1.2 KB
- references/viewer-features.md 2.5 KB
- requirements.txt 43 B
- scripts/viewer/.gitignore 111 B
- scripts/viewer/backend/server.mjs 1114 KB runs code
- scripts/viewer/dist/assets/BufferGeometryUtils-xu92ooFc.js 13 KB runs code
- scripts/viewer/dist/assets/BufferGeometryUtils-xu92ooFc.js.map 53 KB
- scripts/viewer/dist/assets/favicon-DLqji3p4.ico 96 KB
- scripts/viewer/dist/assets/glbMeshWorker-MCreI3ZZ.js 8.1 KB runs code
- scripts/viewer/dist/assets/glbMeshWorker-MCreI3ZZ.js.map 33 KB
- scripts/viewer/dist/assets/GLTFLoader-B3ztFMBW.js 45 KB runs code
- scripts/viewer/dist/assets/GLTFLoader-B3ztFMBW.js.map 211 KB
- scripts/viewer/dist/assets/index-B9o-MrJm.js 995 KB runs code
- scripts/viewer/dist/assets/index-B9o-MrJm.js.map 3974 KB
- scripts/viewer/dist/assets/index-vRirKMey.css 96 KB
- scripts/viewer/dist/assets/parseSdf-AcCqTFta.js 15 KB runs code
- scripts/viewer/dist/assets/parseSdf-AcCqTFta.js.map 54 KB
- scripts/viewer/dist/assets/parseSrdf-5nF_MoHR.js 9.9 KB runs code
- scripts/viewer/dist/assets/parseSrdf-5nF_MoHR.js.map 33 KB
- scripts/viewer/dist/assets/parseUrdf-DPxQohh5.js 8.3 KB runs code
- scripts/viewer/dist/assets/parseUrdf-DPxQohh5.js.map 31 KB
- scripts/viewer/dist/assets/STLLoader-C7hGonJR.js 2.9 KB runs code
- scripts/viewer/dist/assets/STLLoader-C7hGonJR.js.map 16 KB
- scripts/viewer/dist/assets/stlMeshWorker-0yVf-FuZ.js 2.3 KB runs code
- scripts/viewer/dist/assets/stlMeshWorker-0yVf-FuZ.js.map 8.6 KB
- scripts/viewer/dist/assets/three.module-BB51Dq4E.js 89 KB runs code
- scripts/viewer/dist/assets/three.module-BB51Dq4E.js.map 1509 KB
- scripts/viewer/dist/assets/three.module-DJHaYUcg.js 652 KB runs code
- scripts/viewer/dist/assets/three.module-DJHaYUcg.js.map 2121 KB
- scripts/viewer/dist/assets/vendor-icons-FFp724MI.js 14 KB runs code
- scripts/viewer/dist/assets/vendor-icons-FFp724MI.js.map 63 KB
- scripts/viewer/dist/assets/vendor-react-7jnMmQ9s.js 162 KB runs code
- scripts/viewer/dist/assets/vendor-react-7jnMmQ9s.js.map 468 KB
- scripts/viewer/dist/assets/vendor-three-SYzIooV9.js 780 KB runs code
- scripts/viewer/dist/assets/vendor-three-SYzIooV9.js.map 2663 KB
- scripts/viewer/dist/assets/vendor-ui-CtsphK4U.js 123 KB runs code
- scripts/viewer/dist/assets/vendor-ui-CtsphK4U.js.map 593 KB
- scripts/viewer/dist/index.html 1.7 KB
- scripts/viewer/moveit2_server/__init__.py 99 B runs code
- scripts/viewer/moveit2_server/check-moveit2-server.sh 501 B runs code
- scripts/viewer/moveit2_server/conda-common.sh 1.5 KB runs code
- scripts/viewer/moveit2_server/environment.yml 283 B
- scripts/viewer/moveit2_server/moveit2_server/__init__.py 51 B runs code
- scripts/viewer/moveit2_server/moveit2_server/context.py 37 KB runs code
- scripts/viewer/moveit2_server/moveit2_server/dispatcher.py 930 B runs code
- scripts/viewer/moveit2_server/moveit2_server/joint_state_seed.py 2.0 KB runs code
- scripts/viewer/moveit2_server/moveit2_server/moveit_py.py 25 KB runs code
- scripts/viewer/moveit2_server/moveit2_server/protocol.py 7.2 KB runs code
- scripts/viewer/moveit2_server/moveit2_server/server.py 3.8 KB runs code
- scripts/viewer/moveit2_server/moveit2_server/srdf_source.py 9.4 KB runs code
- scripts/viewer/moveit2_server/pyproject.toml 469 B
- scripts/viewer/moveit2_server/run-moveit2-server.sh 604 B runs code
- scripts/viewer/moveit2_server/setup.sh 684 B runs code
- scripts/viewer/package.json 368 B
- scripts/viewer/packages/cadjs/package-lock.json 818 B
- scripts/viewer/packages/cadjs/package.json 543 B
- scripts/viewer/packages/cadjs/scripts/run-tests.mjs 1.5 KB runs code
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 10d ago First seen · 102 lines · 109 tokens per session scan A e34ee67b9ad2
cad-viewer is a skill published in the GitHub repository redmaplewww/ai-cad-workbench (0 stars, last pushed 29d ago), licensed MIT. It adds 109 tokens to every session and 1,160 once invoked, about $0.0005 per session on Opus 5. A static security scan graded it A with 1 finding (makes network calls). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other skills, from other repositories
webgl-holographic-foil
A self-contained WebGL2 hero: thin-film interference over a crushed-foil surface whose palette shifts with the viewing angle; move the cursor to tilt the film.
html-ppt-hermes-cyber-terminal
OpenDesign + BYOK: choosing and wiring your own model, hands-on — cost, quality, and the routing decision. Built as a decision-grade AI literacy deck for engineers, IT, applied-AI teams.
html-ppt-taste-brutalist
16:9 HTML deck in tactical-telemetry / CRT-terminal taste. Deactivated-CRT charcoal slides, white-phosphor monospace, hazard-red accent, scanline overlay, ASCII syntax, density over decoration. Distilled from Leonxlnx/taste-skill brutalist-skill (Tactical Telemetry mode).
visual-ralph
Visual Ralph orchestration for frontend UI from generated references, static references, or live URL targets, using $ralph with built-in visual verdict and pixel-diff evidence until the implementation matches and leaves a reproducible design system.
accessibility
Consolidated accessibility skill entrypoint for WCAG 2.2, ARIA Authoring Practices, cognitive accessibility, Section 508, EN 301 549, design intent verification, and the Accessibility Planner workflow.
make-resume
A Chinese-language tool for creating editable HTML resumes that can be changed in a browser and printed to PDF. It uses available resume templates when they are installed and otherwise provides a simpler fallback.