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 bcshih/rhino-dev-skills --skill rhinodoc-objectsgit clone --depth 1 https://github.com/bcshih/rhino-dev-skillsWrote 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/bcshih/rhino-dev-skills/rhinodoc-objects)<a href="https://agentmods.dev/skills/bcshih/rhino-dev-skills/rhinodoc-objects"><img src="https://agentmods.dev/badge/skills/bcshih/rhino-dev-skills/rhinodoc-objects.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.1 | $0.00143 | $0.01856 |
| Opus 5 | $0.00072 | $0.00928 |
| Sonnet 5 | $0.00029 | $0.00371 |
| Haiku 4.5 | $0.00014 | $0.00186 |
Grade A, and why
rhinodoc-objects 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 7d 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 — 267 lines — stays where its author put it; the contents beside it link to each section on GitHub.
RhinoDoc — Document Object System
Core Concept: Geometry vs Document Objects
- Rhino.Geometry.* — pure math (no layer, color, GUID). Lives in memory.
- Rhino.DocObjects.RhinoObject — geometry + attributes in the document. Has a GUID.
Always duplicate geometry before modifying it; never edit geometry still referenced by the document.
Accessing the Active Document
using Rhino;
using Rhino.DocObjects;
// In a Command:
RhinoDoc doc = RhinoDoc.ActiveDoc;
// Or via the RunCommand parameter:
protected override Result RunCommand(RhinoDoc doc, RunMode mode) { ... }
Adding Geometry to the Document
// Returns Guid.Empty on failure
Guid id = doc.Objects.AddPoint(new Point3d(0, 0, 0));
Guid id = doc.Objects.AddLine(new Line(pt1, pt2));
Guid id = doc.Objects.AddArc(new Arc(circle, angle));
Guid id = doc.Objects.AddCircle(new Circle(plane, radius));
Guid id = doc.Objects.AddCurve(curve);
Guid id = doc.Objects.AddSurface(surface);
Guid id = doc.Objects.AddBrep(brep);
Guid id = doc.Objects.AddMesh(mesh);
Guid id = doc.Objects.AddExtrusion(extrusion);
Guid id = doc.Objects.AddTextDot("label", point);
// With attributes
ObjectAttributes attr = new ObjectAttributes();
attr.LayerIndex = doc.Layers.FindName("MyLayer").Index;
attr.ColorSource = ObjectColorSource.ColorFromObject;
attr.ObjectColor = System.Drawing.Color.Red;
attr.Name = "MyObject";
Guid id = doc.Objects.AddBrep(brep, attr);
Finding Objects
// By GUID (most reliable)
RhinoObject obj = doc.Objects.Find(guid);
if (obj == null) return; // object was deleted
// By name
ObjectEnumeratorSettings settings = new ObjectEnumeratorSettings();
settings.NameFilter = "MyObject";
foreach (RhinoObject ro in doc.Objects.GetObjectList(settings)) { ... }
// All objects of a type
settings.ObjectTypeFilter = ObjectType.Brep;
var breps = doc.Objects.GetObjectList(settings);
// Selected objects
RhinoObject[] selected = doc.Objects.GetSelectedObjects(includeLights: false, includeGrips: false);
// Objects on layer
int layerIndex = doc.Layers.FindName("MyLayer").Index;
settings.LayerIndexFilter = layerIndex;
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.
- 7d ago First seen · 267 lines · 143 tokens per session scan A 11d361df44d1
rhinodoc-objects is a skill published in the GitHub repository bcshih/rhino-dev-skills (1 stars, last pushed 2mo ago), licensed MIT. It adds 143 tokens to every session and 1,856 once invoked, about $0.0007 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-31.
Other skills, from other repositories
fy_layout
Use when doing construction site layout planning with the FeiYang LightCAD platform — fence, lawn, foundation pit, road, prefab house 2D/3D modeling. FYLayout: construction site layout secondary development plugin for LightCAD/LightBIM.
opengis-skills
Use when AI coding assistant needs GIS/CAD/C#/AI/IoT/3D domain expertise for 73+ open-source projects. One-stop skill index with tag-based search and on-demand loading for GDAL, GeoServer, QGIS, PostGIS, JTS, CesiumJS, FreeCAD, OpenSCAD, OCCT, NPOI, SqlSugar, Furion, Dify, SuperSplat, Go and more.
ifoxcad
Use when developing AutoCAD plugins with .NET/C# — entity creation, layer management, block references, transaction handling. iFoxCAD: AutoCAD .NET secondary development framework with simplified API wrappers.
lightningcad
Use when doing architectural facade panel layout and detailing in AutoCAD or ZWCAD — panel numbering, shop drawing generation, material optimization. LightningCAD: building envelope detailing plugin for AutoCAD/ZWCAD.
tongwen
Use when translating engineering CAD drawings between languages — DWG text extraction, translation workspace with terminology management, quality-checked write-back. TongWen (同文): local-first CAD/BIM lossless translation suite for AutoCAD 2019-2026.
dotnet-performance
Use when asked what dotnet-toolkit actually costs compared to doing the same work with plain tools — "is this plugin worth it", "benchmark the toolkit against grep", "how much does searchindex really save over Grep/Read", "measure the MCP tools against cat/ls/find", "does this pay for itself on Windows/PowerShell"…