dotnet-inspect
Skill632 starsChanged 4 days 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.
5 other projects use a version of this.
Adopted by
Most recently taken up by
- richlander/dotnet-inspecttheir own version, first seen Oct 8, 2026
- dotnet/eShopword for word, first seen Oct 8, 2026
- joslat/maf-doctortheir own version, first seen Aug 17, 2026
- BlakeHastings/claude-code-artifactsword for word, first seen Jun 13, 2026
- richlander/dotnet-skillstheir own version, first seen Mar 12, 2026
Other versions5 projects use a version of this.
Word for word · 2
- dotnet/eShop★ 11k100% same
- BlakeHastings/claude-code-artifacts★ 1100% same
Edited · 0
None found.
Wrote their own version · 3
- richlander/dotnet-inspect★ 166same name
- richlander/dotnet-skills★ 59same name
- joslat/maf-doctor★ 14same 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.
In this repository7 other files it gives its agents.
- AGENTS.mdAGENTS.md
- .github/copilot-instructions.mdCopilot instructions
- aspire-typescript-apphostSkill
- aspire-upgradeSkill
- client-integration-authoringSkill
- hosting-integration-authoringSkill
- playwright-cliSkill
The file
We split this skill into the rules it gives an agent
7 rules. 0 are common, 0 are distinctive, and 7 are very specific to this project.
0
Common
Most of the 3 edited versions we read keep these.
0
Distinctive
This author's own choices. Worth a look.
7
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Very specific: line 33
Use --oneline as the default for scanning — it works on type, member, find, diff, and implements:
- Very specific: line 41
Use --shape to understand a type's hierarchy and surface at a glance:
- Very specific: line 47
Use diff first when fixing broken code — --oneline for triage, then full detail on specific types:
- Very specific: line 57
Search commands (find, extensions, implements, depends) use scope flags:
- Very specific: line 102
Diff ranges: use ..: --package System.Text.Json@9.0.0..10.0.0
- Very specific: line 104
Derived types: only show their own members — query the base type too (e.g., RootCommand inherits Add() and SetAction() from Command)
- Very specific: line 108
Use dnx (like npx). Always use -y and -- to prevent interactive prompts:
“Common” is measured: kept by at least 6 in 10 of the 3 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 — the same commands work across NuGet packages, platform libraries (System., Microsoft.AspNetCore.), and local .dll/.nupkg files.
Quick Decision Tree
- Code broken? →
diff --package Foo@old..newfirst, thenmember --oneline - Need API surface? →
member Type --package Foo --oneline(token-efficient) - Need signatures? →
member Type --package Foo -m Method(default shows full signatures + docs) - Need source/IL? →
member Type --package Foo -m Method -v:d(adds Source, Lowered C#, IL) - Need constructors? →
member 'Type<T>' --package Foo -m .ctor(use<T>not<>) - Need all overloads? →
member Type --package Foo --select(showsName:Nindices)
When to Use This Skill
- "What types are in this package?" —
typediscovers types (terse),findsearches by pattern - "What's the API surface?" —
typefor discovery,memberfor detailed inspection (docs on) - "What changed between versions?" —
diffclassifies breaking/additive changes - "This code uses an old API — fix it" —
diffthe old..new version, thenmember --onelineto see the new API - "What extends this type?" —
extensionsfinds extension methods/properties - "What implements this interface?" —
implementsfinds concrete types - "What does this type depend on?" —
dependswalks the type hierarchy upward - "What version/metadata does this have?" —
packageandlibraryinspect metadata - "Show me something cool" —
demoruns curated showcase queries
Key Patterns
Use --oneline as the default for scanning — it works on type, member, find, diff, and implements:
dnx dotnet-inspect -y -- member JsonSerializer --package System.Text.Json --oneline # scan members
dnx dotnet-inspect -y -- type --package System.Text.Json --oneline # scan types
dnx dotnet-inspect -y -- diff --package System.CommandLine@2.0.0-beta4.22272.1..2.0.3 --oneline # triage changesUse --shape to understand a type's hierarchy and surface at a glance:
dnx dotnet-inspect -y -- type 'HashSet<T>' --platform System.Collections --shapeUse diff first when fixing broken code — --oneline for triage, then full detail on specific types:
dnx dotnet-inspect -y -- diff --package System.CommandLine@2.0.0-beta4.22272.1..2.0.3 --oneline # what changed?
dnx dotnet-inspect -y -- diff -t Command --package System.CommandLine@2.0.0-beta4.22272.1..2.0.3 # detail on Command
dnx dotnet-inspect -y -- member Command --package System.CommandLine@2.0.3 --oneline # new API surfaceSearch Scope
Search commands (find, extensions, implements, depends) use scope flags:
- (no flags) — platform frameworks + Microsoft.Extensions.AI
--platform— all platform frameworks--extensions— curated Microsoft.Extensions.* packages--aspnetcore— curated Microsoft.AspNetCore.* packages--package Foo— specific NuGet package (combinable with scope flags)
type, member, library, diff accept --platform <name> as a string for a specific platform library.
Command Reference
| Command | Purpose |
type | Discover types — terse output, no docs, use --shape for hierarchy |
member | Inspect members — docs on by default, supports dotted syntax (-m Type.Member) |
find | Search for types by glob pattern across any scope |
diff | Compare API surfaces between versions — breaking/additive classification |
extensions | Find extension methods/properties for a type |
implements | Find types implementing an interface or extending a base class |
depends | Walk the type dependency hierarchy upward (interfaces, base classes) |
package | Package metadata, files, versions, dependencies, search for NuGet discovery |
library | Library metadata, symbols, references, dependencies |
demo | Run curated showcase queries — list, invoke, or feeling-lucky |
Output Limiting
Do not pipe output through head, tail, or Select-Object. The tool has built-in line limiting that preserves headers and formatting:
dnx dotnet-inspect -y -- member JsonSerializer --package System.Text.Json --oneline -10 # first 10 lines
dnx dotnet-inspect -y -- find "*Logger*" -n 5 # first 5 lines
dnx dotnet-inspect -y -- member JsonSerializer --package System.Text.Json -v:q -s Methods # select specific section-n Nor-N— line limit, likehead. Keeps headers, truncates cleanly.-s Section— show only a specific section (glob-capable). Use-salone to list available sections.-v:q— quiet verbosity for compact summary output.
Key Syntax
- Generic types need quotes:
'Option<T>','IEnumerable<T>' - Use
<T>not<>for generic types —"Option<>"resolves to the abstract base,'Option<T>'resolves to the concrete generic with constructors typeuses-tfor type filtering,memberuses-mfor member filtering (not--filter)- Dotted syntax for
member:-m JsonSerializer.Deserialize - Diff ranges use
..:--package System.Text.Json@9.0.0..10.0.0 - Signatures include
paramsand default values from metadata - Derived types only show their own members — query the base type too (e.g.,
RootCommandinheritsAdd()andSetAction()fromCommand)
Installation
Use dnx (like npx). Always use -y and -- to prevent interactive prompts:
dnx dotnet-inspect -y -- <command>Full Documentation
For comprehensive syntax, edge cases, and the flag compatibility matrix:
dnx dotnet-inspect -y -- llmstxtDoes 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.

