Categories
Agent Tooling (71)
- .agents/skills/agent-browser/references/authentication.md
- .agents/skills/agent-browser/references/commands.md
- .agents/skills/agent-browser/references/profiling.md
- .agents/skills/agent-browser/references/proxy-support.md
- .agents/skills/agent-browser/references/session-management.md
- .agents/skills/agent-browser/references/snapshot-refs.md
- .agents/skills/agent-browser/references/video-recording.md
- .agents/skills/agent-browser/SKILL.md
- .agents/skills/aspire-deployment/references/aws.md
- .agents/skills/aspire-deployment/references/azure.md
- .agents/skills/aspire-deployment/references/cicd.md
- .agents/skills/aspire-deployment/references/docker-compose.md
- .agents/skills/aspire-deployment/references/javascript.md
- .agents/skills/aspire-deployment/references/kubernetes.md
- .agents/skills/aspire-deployment/references/preflight.md
- .agents/skills/aspire-deployment/SKILL.md
- .agents/skills/aspire-monitoring/references/diagnostics-bridge.md
- .agents/skills/aspire-monitoring/references/monitoring.md
- .agents/skills/aspire-monitoring/references/playwright-handoff.md
- .agents/skills/aspire-monitoring/SKILL.md
- .agents/skills/aspire-orchestration/references/agent-workflows.md
- .agents/skills/aspire-orchestration/references/app-commands.md
- .agents/skills/aspire-orchestration/references/detection.md
- .agents/skills/aspire-orchestration/references/resource-management.md
- .agents/skills/aspire-orchestration/references/safety-guardrails.md
- .agents/skills/aspire-orchestration/SKILL.md
- .agents/skills/aspire/references/aspire-13-3-breaking-changes.md
- .agents/skills/aspire/SKILL.md
- .agents/skills/aspireify/references/apphost-wiring.md
- .agents/skills/aspireify/references/csharp-authoring.md
- .agents/skills/aspireify/references/docker-compose.md
- .agents/skills/aspireify/references/full-solution-apphosts.md
- .agents/skills/aspireify/references/javascript-apps.md
- .agents/skills/aspireify/references/opentelemetry.md
- .agents/skills/aspireify/references/scan-and-propose.md
- .agents/skills/aspireify/references/service-defaults.md
- .agents/skills/aspireify/references/typescript-authoring.md
- .agents/skills/aspireify/references/validation.md
- .agents/skills/aspireify/SKILL.md
- .agents/skills/caveman-compress/README.md
- .agents/skills/caveman-compress/SECURITY.md
- .agents/skills/caveman-compress/SKILL.md
- .agents/skills/caveman-help/README.md
- .agents/skills/caveman-help/SKILL.md
- .agents/skills/caveman-stats/README.md
- .agents/skills/caveman-stats/SKILL.md
- .agents/skills/caveman/README.md
- .agents/skills/caveman/SKILL.md
- .agents/skills/csharp-developer/SKILL.md
- .agents/skills/dotnet-inspect/SKILL.md
- .agents/skills/efcore-data-layer/SKILL.md
- .agents/skills/git/SKILL.md
- .agents/skills/microsoft-code-reference/SKILL.md
- .agents/skills/microsoft-docs/SKILL.md
- .agents/skills/microsoft-skill-creator/references/skill-templates.md
- .agents/skills/microsoft-skill-creator/SKILL.md
- .agents/skills/skill-creator/references/output-patterns.md
- .agents/skills/skill-creator/references/workflows.md
- .agents/skills/skill-creator/SKILL.md
- .agents/skills/tunit-testing/references/aspire-integration.md
- .agents/skills/tunit-testing/references/aspnetcore-integration.md
- .agents/skills/tunit-testing/references/assertions.md
- .agents/skills/tunit-testing/references/data-driven.md
- .agents/skills/tunit-testing/references/infrastructure-and-troubleshooting.md
- .agents/skills/tunit-testing/references/lifecycle-hooks.md
- .agents/skills/tunit-testing/SKILL.md
- AGENTS.md
- backend/AGENTS.md
- backend/tests/AGENTS.md
- Front/AGENT.md
- opencode.jsonc
name: dotnet-inspect description: "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."
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:
dotnet-inspect -y -- member JsonSerializer --package System.Text.Json --oneline # scan members
dotnet-inspect -y -- type --package System.Text.Json --oneline # scan types
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:
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:
dotnet-inspect -y -- diff --package System.CommandLine@2.0.0-beta4.22272.1..2.0.3 --oneline # what changed?
dotnet-inspect -y -- diff -t Command --package System.CommandLine@2.0.0-beta4.22272.1..2.0.3 # detail on Command
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:
dotnet-inspect -y -- member JsonSerializer --package System.Text.Json --oneline -10 # first 10 lines
dotnet-inspect -y -- find "*Logger*" -n 5 # first 5 lines
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
Assume dotnet-inspect is installed as a dotnet global tool. If it is not available - prompt user to install it first. When using the tool - always use -y and -- to prevent interactive prompts:
dotnet-inspect -y -- <command>Full Documentation
For comprehensive syntax, edge cases, and the flag compatibility matrix:
dotnet-inspect -y -- llmstxt