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 MarcelRoozekrans/roslyn-codelens-mcp --skill roslyn-codelensgit clone --depth 1 https://github.com/MarcelRoozekrans/roslyn-codelens-mcpWrote 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/marcelroozekrans/roslyn-codelens-mcp/roslyn-codelens)<a href="https://agentmods.dev/skills/marcelroozekrans/roslyn-codelens-mcp/roslyn-codelens"><img src="https://agentmods.dev/badge/skills/marcelroozekrans/roslyn-codelens-mcp/roslyn-codelens/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/marcelroozekrans/roslyn-codelens-mcp/roslyn-codelens"><img src="https://agentmods.dev/badge/skills/marcelroozekrans/roslyn-codelens-mcp/roslyn-codelens.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector pass
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.00104 | $0.11724 |
| Opus 5 | $0.00052 | $0.05862 |
| Sonnet 5 | $0.00021 | $0.02345 |
| Haiku 4.5 | $0.00010 | $0.01172 |
Grade A, and why
roslyn-codelens 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 11d 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 — 482 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Roslyn CodeLens — Semantic .NET Intelligence
Response shape
All list-returning tools wrap their results in an envelope:
{
"items": [...],
"totalCount": 142,
"truncated": false,
"limit": 500,
"summary": { ... }
}
When truncated is true, items are the top N by the tool's natural sort order (severity-first, worst-first, by-project, etc.) — usually that's what you want. Raise limit only if the truncated tail matters for the task.
Tools that include a summary aggregate:
get_diagnostics—{ error, warning, info, hidden }countsfind_references—{ byProject: { name: count }, byKind: { kind: count } }find_callers,find_attribute_usages—{ byProject: { name: count } }search_symbols,find_reflection_usage—{ byKind: {...} }find_unused_symbols—{ byKind: {...}, filteredOut: { testMethod, testContainer, mcpTool, generated, composition, interop } }find_naming_violations—{ byRule: {...} }get_complexity_metrics—{ max, avg, overThreshold, maxCognitive }—max/avg/overThresholddescribe whichever metricmetricselected;maxCognitiveis always the cognitive oneresolve_stack_trace—{ byOrigin: { source, metadata, unresolved }, exceptions, skippedFrameLike }—skippedFrameLikecounts frame-like-but-unparseable lines (also present in items asKind="unknown")
Single-object tools (get_type_overview, get_symbol_context, apply_code_action, etc.) are unchanged — they return their bespoke shape directly.
Error responses
When a tool can't proceed, the response is isError: true with content carrying a JSON body of { code, message, details? }. Switch on code:
| Code | Meaning | Common source |
|---|---|---|
SymbolNotFound |
type/method/property not resolved | analyze_method, get_symbol_context, get_type_overview, get_type_hierarchy, generate_test_skeleton |
SolutionNotTrusted |
analyzers blocked until trust_solution is called |
get_diagnostics (includeAnalyzers: true), get_code_fixes |
AmbiguousMatch |
name matched multiple solutions; details.matches lists candidates |
set_active_solution, unload_solution |
FileNotFound |
file path / baseline doesn't exist or isn't in solution | get_file_overview, find_breaking_changes |
ProjectNotFound |
solution name didn't match | set_active_solution, unload_solution |
InvalidArgument |
malformed / unsupported caller input | various |
Internal |
unexpected; message carries exception text |
fallback |
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.
- 11d ago First seen · 482 lines · 104 tokens per session scan A e730340cf8b0
roslyn-codelens is a skill published in the GitHub repository MarcelRoozekrans/roslyn-codelens-mcp (48 stars, last pushed today), licensed MIT. It adds 104 tokens to every session and 11,724 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
profiling
Use the free official .NET diagnostics CLI tools for profiling and runtime investigation in .NET repositories. USE FOR: the repo needs performance or runtime profiling for a .NET application; the user asks about slow code, high CPU, GC pressure, allocation growth, exception storms, lock. DO NOT USE FOR: replacing…
cs0618-hunter
Detects and fixes CS0618 obsolete API warnings in .NET builds. The compiler is the authoritative source for what your project actually triggers — it catches transitive obsoletions, overload-resolution surprises, and project-local [Obsolete] attributes that static inspection cannot see. Pair with the repository-pinned…
nuget-diff-analyzer
Post-processes the repository-pinned [email protected] -- diff output into a categorised report (breaking / additive / newly-obsolete) with each finding cross-referenced to the MAF obsolete-API registry.
dotnet-performance
Evidence-first performance engineering workflow for coding agents combining portable .NET diagnostics with platform-native profiling, BenchmarkDotNet, application benchmarking, statistical validation, deployment, container, graphics, and GPU procedures.
rider-search
Routing rules for code search in JetBrains Rider projects — use the Rider MCP symbol/reference/file tools instead of Bash grep. Use whenever searching for a symbol, definition, function, variable, type, or finding usages/references in a C#/.NET or Unreal C++ codebase open in Rider.
dotnet-debugging
Debug .NET applications using debug-mcp MCP tools — launch processes, set breakpoints, step through code, inspect variables, evaluate expressions, and analyze exceptions. Use this skill when debugging .NET/C# applications, investigating runtime behavior, diagnosing exceptions, inspecting object state, or performing…