{"id":44280216,"url":"https://github.com/richlander/dotnet-inspect","last_synced_at":"2026-06-05T01:01:36.083Z","repository":{"id":334861663,"uuid":"1141317316","full_name":"richlander/dotnet-inspect","owner":"richlander","description":"Tool to inspect .NET assets, like docker inspect.","archived":false,"fork":false,"pushed_at":"2026-05-30T21:49:38.000Z","size":2605,"stargazers_count":135,"open_issues_count":2,"forks_count":7,"subscribers_count":2,"default_branch":"main","last_synced_at":"2026-05-30T23:20:47.146Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C#","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/richlander.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2026-01-24T16:42:59.000Z","updated_at":"2026-05-30T21:35:52.000Z","dependencies_parsed_at":"2026-02-12T22:00:42.126Z","dependency_job_id":null,"html_url":"https://github.com/richlander/dotnet-inspect","commit_stats":null,"previous_names":["richlander/dotnet-inspect"],"tags_count":37,"template":false,"template_full_name":null,"purl":"pkg:github/richlander/dotnet-inspect","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richlander%2Fdotnet-inspect","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richlander%2Fdotnet-inspect/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richlander%2Fdotnet-inspect/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richlander%2Fdotnet-inspect/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/richlander","download_url":"https://codeload.github.com/richlander/dotnet-inspect/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/richlander%2Fdotnet-inspect/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":33926275,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-04T02:00:06.755Z","response_time":64,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-02-10T21:20:19.943Z","updated_at":"2026-06-05T01:01:36.078Z","avatar_url":"https://github.com/richlander.png","language":"C#","funding_links":[],"categories":["C#"],"sub_categories":[],"readme":"# dotnet-inspect\n\nCLI tool for inspecting .NET libraries and NuGet packages. It is for .NET what `docker inspect` and `kubectl describe` are for container land: view package metadata, API surfaces, dependencies, source provenance, and version-to-version changes.\n\n## Install or run\n\n```bash\ndotnet tool install -g dotnet-inspect\ndotnet-inspect \u003ccommand\u003e\n```\n\nRun without installing:\n\n```bash\ndnx dotnet-inspect -y -- \u003ccommand\u003e\n```\n\n## What it inspects\n\n| Source | Examples | Notes |\n| ------ | -------- | ----- |\n| NuGet packages | `package System.Text.Json`, `type --package Markout` | Supports versions, custom sources, `nuget.config`, TFMs, package layout, dependencies, and vulnerabilities. |\n| Platform libraries | `library System.Private.CoreLib`, `library System.Text.Json --version 10.0.0`, `diff --platform System.Runtime@9.0.0..10.0.0` | Resolves installed SDK/runtime assemblies, including runtime-only implementation assemblies with no NuGet package. |\n| Local assets | `library ./bin/MyLib.dll`, `package ./pkg/MyLib.nupkg` | Useful for auditing builds before publishing. |\n\nBare names are routed automatically: platform-looking names (`System.*`, `Microsoft.AspNetCore.*`) resolve to installed platform libraries; other names resolve as NuGet packages. Use explicit commands and `--package`, `--platform`, or `--library` when you need a specific source.\n\n## Capability inventory\n\n| Capability | Commands | Highlights |\n| ---------- | -------- | ---------- |\n| Package inventory | `package` | Metadata, versions, TFMs, file layout, dependency tree, metadata audit, vulnerability data, custom feeds, NuGet config support. |\n| Library audit | `library` | Assembly identity, public key token, trim/AOT metadata, unsafe/interoperability signals, symbols/PDBs, SourceLink and determinism audit, references, resources, async method classification. |\n| API discovery | `type`, `member`, `find` | Type search, member tables, docs, overload selection, generics, obsolete-member markers, source/decompiled/IL drill-in. |\n| API compatibility | `diff` | Version ranges, package or platform diffs, breaking/additive/potentially-breaking classification, type filters. |\n| Relationships | `depends`, `extensions`, `implements` | Type hierarchies, package dependencies, library reference graphs, extension methods/properties, implementors and subclasses. |\n| Source mapping | `source`, `member -v:d` | SourceLink URLs, member line numbers, source fetching, URL verification, token+IL-offset to source-line resolution. |\n| Agent-friendly output | global flags | Markdown by default, compact `--oneline`, `--plaintext`, `--json`, Mermaid diagrams, section/field projection, `--count`, built-in head/tail limiting. |\n\n## Command inventory\n\n| Command | Purpose |\n| ------- | ------- |\n| `package X` | Inspect NuGet metadata, versions, dependencies, TFMs, layout, and vulnerabilities. |\n| `library X` | Inspect assembly metadata, symbols, SourceLink, references, resources, and async methods. |\n| `type X` | Discover types or render a single type shape. |\n| `member X` | Inspect members, docs, overloads, source, decompiled C#, and IL. |\n| `find X` | Search for types across packages, frameworks, projects, and local assets. |\n| `diff X` | Compare API surfaces between versions. |\n| `extensions X` | Find extension methods and C# extension properties for a type. |\n| `implements X` | Find concrete implementors or subclasses. |\n| `depends X` | Walk type, package, or library dependency graphs; emits Mermaid diagrams. |\n| `source X` | Resolve SourceLink URLs or map method token + IL offset to source. |\n| `cache` | Inspect or clear dotnet-inspect caches. |\n| `skill` | Print the embedded LLM skill definition. |\n\n## Signals\n\n`Signals` is an evidence report, not a safety certification. Select it with `-S Signals`. For libraries, Signals reports metadata/provenance observations and acquires a missing PDB when selected to resolve SourceLink. For packages, Signals reports package metadata/assets, dependencies, signature provenance, and NuGet registry observations. The per-source-file reachability pass (`SourceLink Availability`, `SourceLink Missing Files`) is selected explicitly with `-S` because its cost scales with source-file count. The slow, exhaustive content check (`SourceLink Integrity`) is opt-in only.\n\n| Command | Scope | Signals |\n| ------- | ----- | ------- |\n| `library X -S Signals` | Metadata + provenance | Library metadata/provenance signals; a missing library PDB is acquired to resolve SourceLink. |\n| `library X -S \"Signals,SourceLink Availability,SourceLink Missing Files\"` | Detailed SourceLink reachability | Adds the opt-in per-file HEAD pass and reports embedded-source coverage. |\n| `library X -S \"SourceLink Integrity\"` | Content verification (slow, opt-in) | Downloads every tracked source file and compares its hash to the PDB checksum; a mismatch exits non-zero. Never runs in a default flow. |\n| `package X -S Signals` | Full package signals | Package and dependency signals, including known vulnerabilities, package age, dependency vulnerability/deprecation counts, and dependency age. |\n\n## Output and querying\n\nDefault output is Markdown. Use `--oneline` for compact rows, `--plaintext` for plain text, `--json` for structured data, `--count` to count table rows in one selected section, and `--mermaid` on `depends` for diagrams. Verbosity is `-v:q`, `-v:m`, `-v:n`, or `-v:d`.\n\nSections and fields are queryable without a template language:\n\n```bash\ndotnet-inspect library System.Net.Security -S \"Async*\"\ndotnet-inspect member JsonSerializer --package System.Text.Json -D\ndotnet-inspect member JsonSerializer --package System.Text.Json -D --schema\ndotnet-inspect type --package System.Text.Json --columns Kind,Name\ndotnet-inspect library System.Text.Json -S Symbols --fields \"PDB*;SourceLink\"\ndotnet-inspect library System.Text.Json -S \"Async*\" --count\ndotnet-inspect library System.Text.Json -S Signals\n```\n\nFor target-based queries, `-D` and bare `-S` report the effective schema by default: only sections and columns that can actually render for that query. Add `--schema` for the static schema. Lists for `-S`, `--columns`, and `--fields` accept commas or semicolons. Use `-S All` to select all sections.\n\n## Common examples\n\n```bash\ndotnet-inspect library System.Text.Json -S Signals\ndotnet-inspect library System.Text.Json -S \"Signals,SourceLink Availability,SourceLink Missing Files\"\ndotnet-inspect library System.Text.Json -S \"SourceLink Integrity\"\ndotnet-inspect package System.Text.Json -S Signals\ndotnet-inspect package System.Text.Json --versions\ndotnet-inspect type --package System.Text.Json --oneline\ndotnet-inspect member JsonSerializer --package System.Text.Json -m Serialize\ndotnet-inspect member JsonSerializer --package System.Text.Json Serialize:1 -v:d\ndotnet-inspect source JsonSerializer --package System.Text.Json --il-offset 0x06000004+0x15\ndotnet-inspect diff --package System.Text.Json@9.0.0..10.0.0 --breaking\ndotnet-inspect depends Stream --markdown --mermaid\n```\n\n## Requirements\n\n.NET 10.0 SDK or later.\n\n## LLM integration\n\ndotnet-inspect is [designed for LLM-driven development](docs/llm-design.md). The embedded skill (`dotnet-inspect skill`) is also distributed through the [dotnet/skills](https://github.com/dotnet/skills) marketplace.\n\n## License\n\nMIT\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frichlander%2Fdotnet-inspect","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frichlander%2Fdotnet-inspect","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frichlander%2Fdotnet-inspect/lists"}