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 agentmods add skills/w1ne/kernelcad-web/kernelcad-nurbsnpx skills add w1ne/kernelCAD-web --skill kernelcad-nurbsgit clone --depth 1 https://github.com/w1ne/kernelCAD-webWrote 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/w1ne/kernelcad-web/kernelcad-nurbs)<a href="https://agentmods.dev/skills/w1ne/kernelcad-web/kernelcad-nurbs"><img src="https://agentmods.dev/badge/skills/w1ne/kernelcad-web/kernelcad-nurbs.svg" alt="Measured on agentmods" 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 | $0.00105 | $0.08146 |
| Opus 5 | $0.00053 | $0.04073 |
| Sonnet 5 | $0.00021 | $0.01629 |
| Haiku 4.5 | $0.00011 | $0.00815 |
Grade A, and why
kernelcad-nurbs scanned grade A with 0 findings 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 5d 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.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 393 lines — stays where its author put it; the contents beside it link to each section on GitHub.
kernelCAD — NURBS surfaces & curves
Build free-form panels, lofted shells, organic spines, and tapered swept solids whose result enters the existing Shape pipeline (booleans, fillets, exports).
// Lofted free-form panel from sketch sections
const s0 = path().moveTo(-30, -10).lineTo(30, -10).lineTo(30, 10).lineTo(-30, 10).close();
// (use sketch('xy', { offset: <z> }).path()...close() to place sections at different z)
const panel = surfaceFromCurves([s0, s1]).thicken(2);
nurbsSurface({ controls, degree, weights?, knots?, periodic? }) returns a Surface peer to Shape. The Surface exposes these escape methods:
| Method | Returns | Notes |
|---|---|---|
.thicken(t) |
Shape (closed solid) |
Offsets both sides by t mm via BRepOffsetAPI_MakeThickSolid.MakeThickSolidBySimple. t accepts Editable<number>. |
.toShape() |
Shape (zero-volume shell) |
Single-face Shape; use as profile placeholder for future face-aware features. |
.trimTo(by) |
Surface |
Trim this surface at its intersection with by (a Surface cutter) and return the kept half. No geometry computed at capture time — the lowerer runs BRepAlgoAPI_Section and imprints the section curve with BRepFeat_SplitShape. Use before sew to align adjacent patch edges. Emits feature.surface-trim.no-intersection when the cutter misses. Shape/Curve3D cutters are deferred. |
.split(by) |
[Surface, Surface] |
Split this surface at its intersection with by (a Surface cutter) and return both resulting halves, ordered by descending area. The cutter must be a Surface; Shape/Curve3D cutters are deferred. Emits feature.surface-trim.no-intersection when the cutter misses. |
Top-level finishing ops that consume Surface instances:
sew(surfaces, opts?)— stitch N surfaces into a shell or closed solid via OCCTBRepBuilderAPI_Sewing. Edges withintolerancemm (default 1e-6) are merged.requireClosed: trueemitsfeature.surface-sew.open-shellinstead of a partial shell when the result is still open. Returns aShape.- The workflow for a multi-patch body:
trimToeach patch to shared boundary curves →sew([...], { requireClosed: true })→ optionally.draft(angleDeg, { face })for mold release.
surfaceFromCurves(sections) skins through 2+ closed Sketch cross-sections in declaration order. Section order = skin direction.
Rational NURBS surface weights are honored (v0.14.0). Supplying weights builds an exact rational surface — use them for exact circles, cylinders, spheres, and conics rather than approximating with control points. (3D nurbsCurve weights are still non-rational; that lane is deferred.)
What ships with it
5 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.
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.
- 5d ago First seen · 393 lines · 105 tokens per session scan A a21379c6778b
kernelcad-nurbs is a skill published in the GitHub repository w1ne/kernelCAD-web (17 stars, last pushed 7d ago), licensed MIT. It adds 105 tokens to every session and 8,146 once invoked, about $0.0005 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
aieng-cad-cae-copilot
MCP-first evidence workflow for AIENG CAD/CAE setup, solver preflight, approval-gated solver execution, and result extraction. Use when the user asks to inspect CAE readiness, patch setup, prepare/run CalculiX, or report stress/displacement evidence.
aieng-closed-loop-copilot
MCP-first closed-loop CAD/CAE copilot skill for improving an existing solved design against explicit targets. Use when the user asks for bounded design iteration using editable CAD parameters, solver reruns, and evidence-backed comparison.
dfam-check
Measure mesh files against Design for Additive Manufacturing (DfAM) rules and report printability findings per process (FDM, SLS, SLA/DLP, metal PBF, MJF). Use when the user asks whether a part is printable, wants overhang/wall-thickness/support analysis of an .stl, .obj, .ply, or .3mf mesh, wants a build-orientation…
FluidCAD-from-drawing
Turning a 2D engineering drawing into a parametric FluidCAD model. Use this skill whenever the user supplies a drawing, blueprint, dimension sheet, hand sketch, screenshot, PDF, or photo of a part and wants it modeled — "model this", "build this part", "make this in CAD", "here's the drawing". Trigger it alongside the…
simplecadapi
Thin SimpleCAD SDK reference skill focused on the public API surface, core types, and current modeling workflows.
cadquery-modeling
Generate CAD models with CadQuery using an adaptive CAD Compiler workflow: plan-mode skill constraint handoff, focused iteration scopes, fail-first challenge review, compact review packets, real-product reference fidelity, visual/functional audits, source-first repair, and STEP/STL export. Use for CadQuery, CQ, 建模…