DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

jackControls /

jackControls/dsh-nbcad-plate

Verified

DeepSeek Harness plugin: 2D plate prints to noBS CAD scripts and STEP files (skill + CAD tools + native print probe)

★ 0 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@25306cf9

dsh-nbcad-plate

A DeepSeek Harness (dsh) plugin that turns 2D engineering prints of flat plate parts into noBS CAD scripts and STEP files.

It registers:

  • the skill nbcad-plate: the standard workflow for plate parts, from a ten-hole bracket to a dense plate with eighty holes (sheet survey, callout inventory, corner-origin frame, chain arithmetic, one script per part, verification by hole counts, report), with a validated example script that shows every modelling idiom (skill/plate-example.nbcad.jsonc);
  • four tools that drive a headless noBS CAD engine and the print:
    • nbcad_run_script(script_path, step_path): run a version 1 .nbcad.jsonc script in a blank document, export STEP, return the scene summary and the holes found, or the failing step and reason;
    • nbcad_inspect_step(step_path): re-import a STEP file and return the same summary, for verification;
    • nbcad_print_probe(action, pdf_path, length_mm, width_mm, ...): the native pixel toolkit (Rust, native/print-probe): calibrate, crop with a millimetre grid and hole overlay, ring-score (what is drawn at or near each model hole), symbols (circles and dots found in a region, matched against the model). Well under a second per call, renders cached;
    • nbcad_overlay_print(pdf_path, step_path, out_png, length_mm, width_mm, region?, dpi?): draw the model's holes onto the plan view of the print (whole page, or a high-resolution crop of a millimetre window) so every group can be checked against the drawn hole symbols.

The model reads the print itself (its own image reads and pdftoppm crops), writes the script, runs it, compares the hole list with its inventory and fixes what is missing. Everything goes through the ordinary noBS CAD script interpreter; there is no second modelling path.

The "2D → 3D" panel in the Web UI

In a web profile the plugin adds a 2D → 3D entry to the sidebar's panel list. The panel:

  • shows, refreshed every two seconds, whether the noBS CAD engine (nbcad-mcp) is reachable, whether a noBS CAD desktop is running (read from the desktop's session registry: a heartbeat.json newer than 30 seconds under $TMPDIR/nbcad-sessions/, the same rule the MCP server uses), whether the native probe is built and whether pdftoppm and Python are present;
  • takes one print, either uploaded from the browser (PDF, PNG or JPG) or named by its path on the machine that runs dsh; a raster print is converted to PDF on the host (sips on macOS, img2pdf or ImageMagick elsewhere) so the probe and the crops work on it;
  • starts a new session in the chosen workspace with the plate-workflow brief, names it after the part, and follows it: the conversation stays one click away;
  • lists every STEP file (and report) the run produces under <workspace>/out/ and saves it where you choose (Save STEP as…, the browser's save dialog where available, otherwise a download).

Nothing here bypasses the model: the panel only prepares the workspace, sends the brief and collects the files. The host half serves the panel's routes under /dsh-nbcad/api on dsh's own web server; headless profiles do not mount them.

Requirements

  • dsh 0.1.5 (release candidates included) with a profile based on headless, tui or web; Node 22 or later.
  • A noBS CAD checkout with the MCP server built: cargo build -p nbcad-mcp (the executable is target/debug/nbcad-mcp).
  • Python 3 (standard library only) and pdftoppm (poppler) on the PATH.

Install

From GitHub into a profile of your own (the plugin is plain JavaScript and Python, so no build approval is needed; use web instead of headless as the template to get the panel):

dsh --profile nbcad --from-default-profile headless --dump-config >/dev/null
dsh plugin --profile nbcad add github:jackControls/dsh-nbcad-plate

Or from a local checkout:

dsh plugin --profile nbcad add file:/path/to/dsh-nbcad-plate

The native print probe behind nbcad_print_probe is optional; build it once with a Rust toolchain and point the plugin at it (below). Without it the other three tools still work and nbcad_overlay_print uses its Python renderer.

cargo build --release --manifest-path native/print-probe/Cargo.toml

Then point the plugin at the engine in the profile's cordis.patch.yml (~/.dsh/profiles/nbcad/cordis.patch.yml):

- id: nbcad-plate
  config:
    server: /path/to/noBS-CAD/target/debug/nbcad-mcp
    probe: /path/to/dsh-nbcad-plate/native/print-probe/target/release/print-probe

probe is needed because the profile holds a copy of the package without the build directory; NBCAD_PRINT_PROBE in the environment works as well.

NBCAD_MCP in the environment works as well. Check with dsh --profile nbcad --dump-config that the nbcad-plate entry is mounted.

Use

From a workspace that contains the print:

dsh --profile nbcad "Model scratch/PART.pdf as a STEP file. Load the nbcad-plate skill first."

The skill asks for the script, the STEP file, a feature table and a short report in the workspace. Run one part per task; a dense plate is allowed several script runs.

Layout

lib/index.js             plugin entry: registers the skill and the four tools
python/run_script.py     run a script through nbcad-mcp and export STEP (--json)
python/inspect_step.py   re-import a STEP file and summarise it (--json)
python/overlay_print.py  draw a model's holes on the print for a visual check (--json)
python/cad.py            engine session helpers (scene summary, hole extraction)
python/mcp_client.py     minimal newline JSON-RPC client for nbcad-mcp
skill/SKILL.md           the workflow (also usable as a plain filesystem skill)
skill/plate-example.nbcad.jsonc   validated example with every idiom
tools/make_example.py    regenerates and validates the example
native/print-probe/      Rust pixel toolkit behind nbcad_print_probe
cordis.patch.yml         bundle patch that mounts the plugin

Development

NBCAD_MCP=/path/to/nbcad-mcp python3 tools/make_example.py --validate

After editing the plugin, refresh the installed copy with dsh plugin --profile nbcad update dsh-nbcad-plate (or remove and add again).

—/ 5

No ratings yet

Verified DSH bundle

Commit 25306cf912b4

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout