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 nezolder/civil3d-mcp-roslyn --skill selected_objects_summarygit clone --depth 1 https://github.com/nezolder/civil3d-mcp-roslynWrote 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/nezolder/civil3d-mcp-roslyn/selected_objects_summary)<a href="https://agentmods.dev/skills/nezolder/civil3d-mcp-roslyn/selected_objects_summary"><img src="https://agentmods.dev/badge/skills/nezolder/civil3d-mcp-roslyn/selected_objects_summary/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/nezolder/civil3d-mcp-roslyn/selected_objects_summary"><img src="https://agentmods.dev/badge/skills/nezolder/civil3d-mcp-roslyn/selected_objects_summary.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.00020 | $0.00571 |
| Opus 5.5 | $0.00008 | $0.00228 |
| Sonnet 5.5 | $0.00004 | $0.00114 |
| Haiku 4.5 | $0.00002 | $0.00057 |
Grade A, and why
selected_objects_summary 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 28d 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 — 72 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Code Template
var limit = 200;
if (limit < 1) return new { error = "limit must be at least 1" };
var selection = Editor.SelectImplied();
var ids = selection.Status == PromptStatus.OK && selection.Value != null
? selection.Value.GetObjectIds()
: Array.Empty<ObjectId>();
var returned = Math.Min(ids.Length, limit);
var sampleLimit = Math.Min(20, limit);
var byType = new Dictionary<string, int>(StringComparer.OrdinalIgnoreCase);
var byLayer = new Dictionary<string, int>(StringComparer.OrdinalIgnoreCase);
var sample = new List<object>();
for (var index = 0; index < returned; index++)
{
var dbObject = Transaction.GetObject(ids[index], OpenMode.ForRead);
var entity = dbObject as Autodesk.AutoCAD.DatabaseServices.Entity;
var typeName = dbObject.GetType().FullName ?? dbObject.GetType().Name;
var layerName = entity == null ? "<not an entity>" : entity.Layer;
byType[typeName] = byType.TryGetValue(typeName, out var typeCount) ? typeCount + 1 : 1;
byLayer[layerName] = byLayer.TryGetValue(layerName, out var layerCount) ? layerCount + 1 : 1;
if (sample.Count < sampleLimit)
{
sample.Add(new {
handle = dbObject.Handle.ToString(),
type = typeName,
layer = layerName
});
}
}
return new {
total = ids.Length,
returned,
truncated = ids.Length > returned,
limit,
byType = byType
.OrderByDescending(item => item.Value)
.ThenBy(item => item.Key)
.Select(item => new { type = item.Key, count = item.Value })
.ToList(),
byLayer = byLayer
.OrderByDescending(item => item.Value)
.ThenBy(item => item.Key)
.Select(item => new { layer = item.Key, count = item.Value })
.ToList(),
sample
};
Usage Notes
- Uses only the current implied (preselected) selection; it does not prompt or modify the drawing
totalis the selection size andreturnedis the number inspected- Type and layer counts cover only the inspected objects when
truncatedis true
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.
- 28d ago First seen · 72 lines · 20 tokens per session scan A 6c02be9b493c
selected_objects_summary is a skill published in the GitHub repository nezolder/civil3d-mcp-roslyn (3 stars, last pushed today), licensed MIT. It adds 20 tokens to every session and 571 once invoked, about $0.0001 per session on Opus 5.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-09-04.
Other skills, from other repositories
gemini-skill
A skill that uses the Gemini website, Google's AI assistant, for conversations and image generation. It defines how the assistant should choose tools and handle long-running requests.
convert-web-app
This skill should be used when the user asks to "add MCP App support to my web app", "turn my web app into a hybrid MCP App", "make my web page work as an MCP App too", "wrap my existing UI as an MCP App", "convert iframe embed to MCP App", "turn my SPA into an MCP App", or needs to add MCP App support to an existing…
tldraw-migrate
Migrate a project to a newer version of the tldraw SDK. Use when upgrading tldraw packages, fixing TypeScript errors after a tldraw upgrade, or when the user mentions tldraw migration.
write-pr
Reference standards for writing pull request titles and descriptions in the tldraw repository, plus the pre-flight comment sweep over the diff. Use as supporting guidance when another skill or workflow needs PR content standards, not as the user-facing create/update PR workflow.
add-app-to-server
This skill should be used when the user asks to "add an app to my MCP server", "add UI to my MCP server", "add a view to my MCP tool", "enrich MCP tools with UI", "add interactive UI to existing server", "add MCP Apps to my server", or needs to add interactive UI capabilities to an existing MCP server that already has…
pr-walkthrough
Create a narrated video walkthrough of a pull request with code slides and audio narration. Use when asked to create a PR walkthrough, PR video, or walkthrough video.