dotnet-read

dotnet-read is a skill for Claude Code, Codex from Attemainio/dotnet-toolkit. It costs 137 tokens per session (7,685 once invoked), scanned A, original, MIT.

A C# and .NET code-navigation skill backed by Roslyn, Microsoft’s compiler technology. It finds symbols and follows references, call paths, inheritance, and project links using the code’s structure.

In plain words
What is it for?
Finding classes, methods, properties, callers, implementations, call hierarchies, type relationships, and project references in C# code.
Why use it?
Text search can miss indirect calls, split classes, and interface or virtual dispatch, while this approach is designed to answer those questions from the compiled code model.

Skill for Claude CodeCodex

Installs and runs on its own, but its text points at files inside its plugin — anything it tells you to read at a ${CLAUDE_PLUGIN_ROOT} path is only there once the plugin is installed. Installing the plugin gets both.

Part of the dotnet-toolkit plugin — 9 skills, 6 agents, 2 hooks, 1 MCP server shipped together

Install

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.

agentmods
npx agentmods add skills/attemainio/dotnet-toolkit/dotnet-read
Any agent
npx skills add Attemainio/dotnet-toolkit --skill dotnet-read
Clone the repo
git clone --depth 1 https://github.com/Attemainio/dotnet-toolkit

Made for: Claude Code, Codex.

Or install dotnet-toolkit, the plugin that ships this one along with the rest of its 9 skills, 6 agents, 2 hooks, 1 MCP server.

Wrote 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.

agentmods badge for dotnet-read

README.md
[![agentmods](https://agentmods.dev/badge/skills/attemainio/dotnet-toolkit/dotnet-read.svg)](https://agentmods.dev/skills/attemainio/dotnet-toolkit/dotnet-read)
Your own site
<a href="https://agentmods.dev/skills/attemainio/dotnet-toolkit/dotnet-read"><img src="https://agentmods.dev/badge/skills/attemainio/dotnet-toolkit/dotnet-read.svg" alt="Measured on agentmods" height="20"></a>
Per session 137 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 7,685 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. Scan, not verified.
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce invoked
Fable 5 $0.00137 $0.07685
Opus 5 $0.00068 $0.03843
Sonnet 5 $0.00027 $0.01537
Haiku 4.5 $0.00014 $0.00768

Measured 3d ago against content hash 895b679988d8, method: parsed. Prices are Anthropic first-party input rates as of 2026-08-30, from the pricing page.

Security

Grade A, and why

dotnet-read 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 3d 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.

skills/dotnet-read/SKILL.md · 471 lines

How it starts

The opening of the file, as written. The whole thing — 471 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Reading and navigating C# with dotnet-toolkit

Every question below is answered by a Roslyn-backed MCP tool that reads the compiler's own model. Grep, Glob, find, cat, sed and bare Read on a .cs file are wrong here, not just slower — they cannot see interface, virtual or delegate dispatch, count comment and string matches as real hits, silently under-report when output is truncated, and hand back one fragment of a partial class with no signal that the rest exists. A PreToolUse hook adds an advisory note when Read or a shell read reaches a compiled .cs file, but does not block it — Grep/Glob are watched by no hook at all. The router below, not hook enforcement, is what actually keeps you on the right tool.

Tool names are prefixed mcp__plugin_dotnet-toolkit_dotnet__.

Step 0 — call workspace_status before any read

First MCP call of the session, always. It is free, takes no arguments, records no telemetry, and gives you two things nothing else can:

  1. Readiness. Until the workspace is loaded, semantic tools answer from the syntax tier or refuse outright. A zero-hit from get_references, get_call_hierarchy, get_call_slice, get_type_hierarchy or get_semantic_diff against a cold workspace is workspace state, not absence — never report it as "nothing uses this".

  2. pluginRoot. The plugin's install directory, and the only supported way to reach a file that ships with the plugin. Join it yourself:

    • a tool manual → <pluginRoot>/docs/tools/<tool>.md
    • a coding standard → <pluginRoot>/standards/<name>.md

    Never write ${CLAUDE_PLUGIN_ROOT} into a path. The harness substitutes it into .mcp.json args, hook commands and skill content, but not into a rule or an agent definition, so it stays literal and the read fails. Read the joined path — the guards only block .cs.

Re-call it whenever a response comes back stale or degraded (see Workspace readiness below).

Step 1 — load the tool by its exact name

Read the full file on GitHub · 471 lines

Changes

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.

  1. 3d ago First seen · 471 lines · 137 tokens per session scan A 895b679988d8

Subscribe to this mod's changes

dotnet-read is a skill published in the GitHub repository Attemainio/dotnet-toolkit (2 stars, last pushed 7d ago), licensed MIT. It adds 137 tokens to every session and 7,685 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.

Related

Other skills, from other repositories

vela

Compiler-exact code search for .NET solutions - find where a symbol is defined, every reference to it, who calls it, and what a change would break. Covers C#, VB, Razor Pages, MVC views and Blazor components, which grep and every other code-intelligence tool miss. Deterministic, built on Roslyn, never modifies the…

dbhq-uk/vela-skill · 164 tokens

grasshopper-component

Complete guide for developing custom Grasshopper components in C# — GHComponent class, RegisterInputParams/OutputParams, SolveInstance, DataTree patterns, parameter types, error handling, and component packaging as .gha. Use this skill whenever creating or debugging a Grasshopper component: "grasshopper component c#"…

bcshih/rhino-dev-skills · 128 tokens

rhinocommon-geometry

Deep reference for Rhino.Geometry namespace — all geometry types, operations, and patterns in RhinoCommon. Use this skill whenever working with Rhino geometry in C# or Python: Point3d, Vector3d, Curve, Surface, Brep, Mesh, NURBS, intersections, boolean operations, transforms, planes, bounding boxes. Triggers on…

bcshih/rhino-dev-skills · 151 tokens

dotnet-analyzer-actions

Perform code refactoring, generation, project file operations, decompilation, XAML analysis, and desktop pattern detection in .NET projects using Roslyn-powered MCP tools. Use when the user asks to refactor code, extract methods, rename symbols, generate code, implement interfaces, add project references, install…

CartapenaBark/DotNetAnalyzer · 319 tokens

dotnet-analyzer-code-intelligence

Navigate and understand C# code through symbol queries, type hierarchies, call graphs, and semantic analysis using Roslyn-powered MCP tools. Use when the user asks to find references, go to definition, understand type inheritance, explore call hierarchies, get symbol info, analyze code metrics, or traverse syntax…

CartapenaBark/DotNetAnalyzer · 226 tokens

dotnet-analyzer-code-quality

Detect code quality issues, architecture rule violations, code smells, technical debt, dead code, and performance problems in .NET projects using Roslyn-powered MCP tools. Use when the user asks to check code quality, detect code smells, measure technical debt, generate quality reports, check architecture rules, find…

CartapenaBark/DotNetAnalyzer · 242 tokens