dotnet-inspect
Skill14 starsChanged 3 months agoMITView on GitHub
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. Commands pin v0.9.1; pair with cs0618-hunter (compiler-based) for runtime ground-truth.
We split this skill into the rules it gives an agent
1 rule. 0 are common, 0 are distinctive, and 1 is very specific to this project.
0
Common
Most of the 5 edited versions we read keep these.
0
Distinctive
This author's own choices. Worth a look.
1
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 133
Do NOT pipe output through head/tail — use --head N / --tail N built-in flags
“Common” is measured: kept by at least 6 in 10 of the 5 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
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 Microsoft.Agents.AI@1.3.0?" 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 exact v0.9.1. Versions ≤ v0.7.7 miss
[Obsolete]annotations, and v0.7.8 is affected by the Linux redirected-output corruption seen in the release watcher.
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 Foo@old..newfirst, 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 Foo@1.2.0..1.3.0 - 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 the exact repository-supported release (once, global)
dotnet tool install --global dotnet-inspect --version 0.9.1
# Standard pattern for NuGet packages
dotnet-inspect <command> \
--package <PackageName>@<version> --source https://api.nuget.org/v3/index.jsonThe explicit
--source https://api.nuget.org/v3/index.jsonkeeps package resolution deterministic in workspaces with custom feeds.
Key Commands for MAF Migrations
Diff breaking changes between MAF versions
dotnet-inspect diff \
--package Microsoft.Agents.AI@1.2.0..1.3.0 --source https://api.nuget.org/v3/index.json
dotnet-inspect diff \
--package Microsoft.Agents.AI.Workflows@1.2.0..1.3.0 --source https://api.nuget.org/v3/index.jsonList types in a MAF package
dotnet-inspect type \
--package Microsoft.Agents.AI.Workflows@1.3.0 --source https://api.nuget.org/v3/index.jsonInspect members of a specific type
dotnet-inspect member ChatClientAgent \
--package Microsoft.Agents.AI@1.3.0 --source https://api.nuget.org/v3/index.json
dotnet-inspect member WorkflowBuilder \
--package Microsoft.Agents.AI.Workflows@1.3.0 --source https://api.nuget.org/v3/index.jsonInspect 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
dotnet-inspect member WorkflowBuilder \
--package Microsoft.Agents.AI.Workflows@1.3.0 --source https://api.nuget.org/v3/index.json \
-m AddFanInBarrierEdge --params "ExecutorBinding,IEnumerable<ExecutorBinding>" --indexThe 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
dotnet-inspect member JsonSerializer \
--package System.Text.Json --source https://api.nuget.org/v3/index.json
# What changed between versions
dotnet-inspect diff \
--package System.CommandLine@2.0.0-beta4.22272.1..2.0.3 --source https://api.nuget.org/v3/index.json
# Check latest version
dotnet-inspect Microsoft.Agents.AI --latest-version \
--source https://api.nuget.org/v3/index.jsonKey Syntax Rules
- Generic types need quotes:
'Option<T>','IEnumerable<T>' - Diff ranges use
..:--package Foo@1.2.0..1.3.0 -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 |
Other versions5 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 5
- dotnet/eShop★ 11ksame name
- CommunityToolkit/Aspire★ 632same name
- richlander/dotnet-inspect★ 161same name
- richlander/dotnet-skills★ 57same name
- BlakeHastings/claude-code-artifacts★ 1same name
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
Used alongsideProjects with it also use aspire-deployment, aspireify and 5 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
MicrosoftSkillaspire-deployment
**WORKFLOW SKILL** — Deploy Aspire apps from AppHost models to Docker Compose, Kubernetes, Azure, AWS, or preview Radius. WHEN: \"deploy Aspire app\", \"publish Aspire artifacts\", \"deploy to Azure Container Apps\", \"generate Kubernetes artifacts\", \"deploy to Radius\", \"tear down Aspire deployment\". INVOKES: aspire CLI, Aspire docs, target cloud/container CLIs. FOR SINGLE OPERATIONS: use generic Azure, Kubernetes, Docker, AWS, or Radius tools only when no Aspire AppHost exists.
Also in 3 projects that use this
MicrosoftSkillaspireify
**WORKFLOW SKILL** - Wire Aspire AppHosts or repair TypeScript AppHost toolchains. Scans the repo, proposes a resource graph, edits C#, file-based C#, or TypeScript AppHosts, wires ServiceDefaults + OTel, validates with `aspire start`, then stops. USE FOR: wire/scaffold AppHost, add Postgres/Redis/Rabbit/Mongo, connect frontend to API, after `aspire init`, AddNextJsApp, AddViteApp, WithBrowserLogs, WithTerminal, Interaction Service, command arguments, apphost.cs, apphost.mts, unified withEnvironment, .aspire/modules refusal, config/secrets, TS dependency restore, pnpm/yarn/bun, or Yarn Classic. DO NOT USE FOR: skeleton drop (aspire-init), lifecycle-only start/stop/wait/restart or `aspire update --migrate` (aspire-orchestration), publish/deploy/destroy (aspire-deployment), logs/traces (aspire-monitoring). INVOKES: aspire CLI, AppHost source edits, ServiceDefaults wiring. FOR SINGLE OPERATIONS: Run `aspire add PACKAGE` directly for a one-off integration.
Also in 3 projects that use this
- +5 more from microsoft
In this repository17 other files it gives its agents.
- AGENTS.mdAGENTS.md
- CLAUDE.mdCLAUDE.md
- .github/copilot-instructions.mdCopilot instructions
- cs0618-hunterSkill
- maf-anti-pattern-scannerSkill
- maf-doctor-self-evolutionSkill
- maf-fan-out-validatorSkill
- maf-from-semantic-kernelSkill
- maf-issue-reporterSkill
- maf-migration-guideSkill
- maf-migration-plan-creatorSkill
- maf-migration-retrospectiveSkill
- maf-obsolete-api-registrySkill
- maf-release-watcherSkill
- maf-remediation-playbookSkill
- maf-workflow-smoke-testerSkill
- nuget-diff-analyzerSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

