agentleFS
joslatjoslat/maf-doctor/.github/skills/dotnet-inspect/SKILL.md

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
  1. Very specific:

    Do NOT pipe output through head/tail — use --head N / --tail N built-in flags

    line 133

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

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

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 skillCompiler 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 packageYou 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 versionsA 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?" checkBuild verification after edits

Quick Decision Tree

  • Code broken after upgrade? → diff --package Foo@old..new first, then member
  • 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 --mermaid for 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.json

The explicit --source https://api.nuget.org/v3/index.json keeps 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.json

List types in a MAF package

dotnet-inspect type \
  --package Microsoft.Agents.AI.Workflows@1.3.0 --source https://api.nuget.org/v3/index.json

Inspect 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.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
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>" --index

The single-overload --index view 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.json

Key Syntax Rules

  • Generic types need quotes: 'Option<T>', 'IEnumerable<T>'
  • Diff ranges use ..: --package Foo@1.2.0..1.3.0
  • -m filters by member name: -m AddFanInBarrierEdge
  • --params selects a specific overload by parameter types
  • --index shows full detail including custom attributes (but only for single-overload view)
  • Do NOT pipe output through head/tail — use --head N / --tail N built-in flags

Command Quick Reference

CommandPurpose
typeDiscover types in a package
memberInspect members of a type
diffCompare API surfaces between versions
findSearch for types by glob/fuzzy match
extensionsFind extension methods for a type
implementsFind types implementing an interface
dependsWalk dependency graphs
sourceSourceLink URLs, fetch source content
packagePackage metadata and versions

Download now (ZIP)

  • Other versions5 projects use a version of this.

    Word for word · 0

    None found.

    Edited · 0

    None found.

    Wrote their own version · 5

    1. dotnet/eShop★ 11ksame name
    2. CommunityToolkit/Aspire★ 632same name
    3. richlander/dotnet-inspect★ 161same name
    4. richlander/dotnet-skills★ 57same name
    5. 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.
    • MicrosoftSkill

      aspire-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

    • MicrosoftSkill

      aspireify

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

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.