Tools to inspect .NET API surfaces and deprecated members without compiling.
Install
mkdir -p .claude/skills/dotnet-inspect && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/10205" && unzip -o skill.zip -d .claude/skills/dotnet-inspect && rm skill.zipInstalls to .claude/skills/dotnet-inspect
Activation
This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.
Query .NET APIs across NuGet packages, platform libraries, and local files. Search for types, list API surfaces, compare and diff versions, find extension methods and implementors. Use whenever you need to answer questions about .NET library contents. As of v0.7.8, [Obsolete] members are surfaced in listings — pair with cs0618-hunter (compiler-based) for runtime ground-truth.Key capabilities
- →Query .NET APIs
- →List API surfaces
- →Compare version diffs
- →Find extension methods
- →Surface [Obsolete] members
How it works
It queries .NET libraries to inspect types, members, and diffs, now including [Obsolete] members as of v0.7.8.
Inputs & outputs
When to use dotnet-inspect
- →Identify deprecated members in NuGet packages
- →Compare API surface changes between library versions
- →Search for extension methods and implementors
- →Verify library contents without compilation
About this skill
dotnet-inspect
Query .NET library APIs — types, members, diffs, extensions, implementations, dependencies, and source links.
ℹ️ [Obsolete] Detection — Status as of v0.7.8
Closed gap (good news): As of richlander/dotnet-inspect v0.7.8 (2026-05-04), the tool now surfaces [Obsolete] members in listings (PR #318, closes issue #316). The historical blind spot — where overloads of AddFanInBarrierEdge appeared identical even when one was deprecated — is fixed in this version.
dotnet-inspect and cs0618-hunter are now complementary, not workaround-vs-truth:
| Use… | When… |
|---|---|
dotnet-inspect (this skill) | Pre-build static inspection — "what is deprecated in [email protected]?" without compiling. Fast, scriptable, works against any NuGet package. |
cs0618-hunter skill | Compiler ground-truth — "what is my code actually triggering today?" Catches transitive obsoletions, overload-resolution surprises, and project-specific [Obsolete] definitions that aren't in NuGet. |
Both keep value. Earlier versions (≤ v0.7.7) required cs0618-hunter as the only reliable path; v0.7.8 makes static inspection a viable pre-build option.
Pin to v0.7.8 or later. Versions ≤ v0.7.7 will miss
[Obsolete]annotations and silently mislead.
When to Use This Skill (and When NOT to)
| Use dotnet-inspect when… | Use cs0618-hunter instead when… |
|---|---|
| Checking if a type exists in a package | You need the compiler's view of CS0618 warnings in your project |
Listing members of a type (incl. [Obsolete] as of v0.7.8) | You suspect transitive or overload-resolution-dependent obsoletions |
| Diffing breaking changes between versions | A project-local [Obsolete] attribute (not in NuGet) is in play |
| Finding extension methods | — |
| Looking up method signatures | — |
| Pre-build "would this break if I upgraded?" check | Build verification after edits |
Quick Decision Tree
- Code broken after upgrade? →
diff --package [email protected]first, thenmember - What types exist in a package? →
type --package Foo - What members does a type have? →
member Type --package Foo(now flags[Obsolete]) - What changed between versions? →
diff --package [email protected] - What does this type depend on? →
depends(try--mermaidfor diagrams — v0.7.5+) - Where is the source code? →
source Type --package Foo - What does my project actually trigger? →
cs0618-hunter(compiler ground-truth)
Installation and Invocation
# Install (once, global)
dotnet tool install -g dnx
# Standard pattern — BOTH --source flags are required for NuGet packages
dnx [email protected] -y --source https://api.nuget.org/v3/index.json -- <command> \
--package <PackageName>@<version> --source https://api.nuget.org/v3/index.json
The
--source https://api.nuget.org/v3/index.jsonflag must appear on both thednxinvocation and the inner command.
Key Commands for MAF Migrations
Diff breaking changes between MAF versions
dnx [email protected] -y --source https://api.nuget.org/v3/index.json -- diff \
--package [email protected] --source https://api.nuget.org/v3/index.json
dnx [email protected] -y --source https://api.nuget.org/v3/index.json -- diff \
--package [email protected] --source https://api.nuget.org/v3/index.json
List types in a MAF package
dnx [email protected] -y --source https://api.nuget.org/v3/index.json -- type \
--package [email protected] --source https://api.nuget.org/v3/index.json
Inspect members of a specific type
dnx [email protected] -y --source https://api.nuget.org/v3/index.json -- member ChatClientAgent \
--package [email protected] --source https://api.nuget.org/v3/index.json
dnx [email protected] -y --source https://api.nuget.org/v3/index.json -- member WorkflowBuilder \
--package [email protected] --source https://api.nuget.org/v3/index.json
Inspect a specific method (single overload detail view — DOES show custom attributes)
# Use --params to select a specific overload, --index for full detail including custom attributes
dnx [email protected] -y --source https://api.nuget.org/v3/index.json -- member WorkflowBuilder \
--package [email protected] --source https://api.nuget.org/v3/index.json \
-m AddFanInBarrierEdge --params "ExecutorBinding,IEnumerable<ExecutorBinding>" --index
The single-overload
--indexview has always shown[Obsolete]in the Custom Attributes section. As of v0.7.8 the multi-overload listing also surfaces[Obsolete], so you no longer need to know which overload to suspect in advance.
General Usage Patterns
# List members of a type
dnx [email protected] -y --source https://api.nuget.org/v3/index.json -- member JsonSerializer \
--package System.Text.Json --source https://api.nuget.org/v3/index.json
# What changed between versions
dnx [email protected] -y --source https://api.nuget.org/v3/index.json -- diff \
--package [email protected] --source https://api.nuget.org/v3/index.json
# Check latest version
dnx [email protected] -y --source https://api.nuget.org/v3/index.json -- \
Microsoft.Agents.AI --latest-version --source https://api.nuget.org/v3/index.json
Key Syntax Rules
- Generic types need quotes:
'Option<T>','IEnumerable<T>' - Diff ranges use
..:--package [email protected] -mfilters by member name:-m AddFanInBarrierEdge--paramsselects a specific overload by parameter types--indexshows full detail including custom attributes (but only for single-overload view)- Do NOT pipe output through
head/tail— use--head N/--tail Nbuilt-in flags
Command Quick Reference
| Command | Purpose |
|---|---|
type | Discover types in a package |
member | Inspect members of a type |
diff | Compare API surfaces between versions |
find | Search for types by glob/fuzzy match |
extensions | Find extension methods for a type |
implements | Find types implementing an interface |
depends | Walk dependency graphs |
source | SourceLink URLs, fetch source content |
package | Package metadata and versions |
When not to use it
- →When you need compiler ground-truth for transitive obsoletions
- →When the package is not on NuGet
Limitations
- →Requires v0.7.8 or later for [Obsolete] detection
- →Does not replace compiler ground-truth
How it compares
It allows static inspection of NuGet packages without compilation, providing a fast way to check for breaking changes.
Compared to similar skills
dotnet-inspect side by side with the closest alternatives in the catalog.
| Skill | Installs | Updated | Safety | Difficulty |
|---|---|---|---|---|
| dotnet-inspect (this skill) | 0 | 3mo | Review | Advanced |
| azure-mgmt-mongodbatlas-dotnet | 0 | 3mo | Review | Intermediate |
| backend-developer | 0 | 6mo | No flags | Advanced |
| azure-search-documents-dotnet | 0 | 3mo | Review | Intermediate |
Try saying
Example prompts that trigger this skill in your AI assistant.
You might also like
azure-mgmt-mongodbatlas-dotnet
microsoft
Manage MongoDB Atlas Organizations as Azure ARM resources using Azure.ResourceManager.MongoDBAtlas SDK. Use when creating, updating, listing, or deleting MongoDB Atlas organizations through Azure Marketplace integration. This SDK manages the Azure-side organization resource, not Atlas clusters/databases directly.
backend-developer
AndreasKarz
Use this skill when working on backend microservices — implementing GraphQL APIs with HotChocolate, writing MassTransit consumers/publishers, building MongoDB data access layers, configuring service startup, integrating data pipelines, or adding observability with OpenTelemetry. Triggers on: GraphQL
azure-search-documents-dotnet
TJSNDHU
Azure AI Search SDK for .NET (Azure.Search.Documents). Use for building search applications with full-text, vector, semantic, and hybrid search.
microsoft-code-reference
github
Look up Microsoft API references, find working code samples, and verify SDK code is correct. Use when working with Azure SDKs, .NET libraries, or Microsoft APIs—to find the right method, check parameters, get working examples, or troubleshoot errors. Catches hallucinated methods, wrong signatures, and deprecated patterns by querying official docs.
dotnet-backend-patterns
wshobson
Master C#/.NET backend development patterns for building robust APIs, MCP servers, and enterprise applications. Covers async/await, dependency injection, Entity Framework Core, Dapper, configuration, caching, and testing with xUnit. Use when developing .NET backends, reviewing C# code, or designing API architectures.
azure-maps-search-dotnet
microsoft
Azure Maps SDK for .NET. Location-based services including geocoding, routing, rendering, geolocation, and weather. Use for address search, directions, map tiles, IP geolocation, and weather data. Triggers: "Azure Maps", "MapsSearchClient", "MapsRoutingClient", "MapsRenderingClient", "geocoding .NET", "route directions", "map tiles", "geolocation".