CtrlK
BlogDocsLog inGet started
Tessl Logo
SkillPublic

dotnet-inspect-metadata

Inspect raw ECMA-335 metadata in a .NET assembly; discover tables and heaps, read decoded rows and handles, locate exact coordinates and project bounded machine-readable results.

Quality

84%

Does it follow best practices?

Run evals on this skill

Adds up to 20 points to the overall score

View guide
SecuritybySnyk

Low

Low-risk findings worth noting

SKILL.md
Quality
Evals
Security

dotnet-inspect: Inspect .NET Assembly Metadata Tables and Heaps

Use this skill when API views are too high-level and you need the assembly's actual ECMA-335 tables, handles, flags, or heap values. The metadata lens inspects one assembly image and never loads the inspected assembly. Use explain "<question>" for unfamiliar metadata evidence, then follow the returned resource; use -D for the installed section and field names.

dnx dotnet-inspect -y -- <command>

Discover before reading

Metadata tables are unbounded and explicit-only: no verbosity or base category renders them automatically. Structural discovery lists the authored metadata family without running its producers; add --effective to identify the tables and heaps that have data for this image:

dnx dotnet-inspect -y -- library MyLib.dll -D @Metadata
dnx dotnet-inspect -y -- library MyLib.dll -D @Metadata --effective
dnx dotnet-inspect -y -- library MyLib.dll -S @Metadata --count
dnx dotnet-inspect -y -- library MyLib.dll -D "Metadata: TypeDef" --effective

Metadata: Image reports image-level facts. Table sections such as Metadata: TypeDef, Metadata: MethodDef, and Metadata: MemberRef decode handles, ranges, heap values, and flags instead of dumping raw integers.

Query one table

The # column is the real metadata row id. --rows therefore addresses table rows by displayed, 1-based metadata position rather than by the current page. Ranges are inclusive, so 100..199 selects 100 rows:

dnx dotnet-inspect -y -- library MyLib.dll \
  -S "Metadata: MethodDef" --rows 100..199 --tsv
dnx dotnet-inspect -y -- library MyLib.dll \
  -S "Metadata: TypeRef" --columns "Name,Namespace,ResolutionScope" --jsonl

Table indices are accepted as input aliases when following a token:

dnx dotnet-inspect -y -- library MyLib.dll -S "Metadata: 0x02"

That is the TypeDef table. A full token such as 0x02000015 addresses a row, not a table, and is rejected by -S.

Inspect heaps

The heap sections are Metadata: #Strings, Metadata: #Blob, Metadata: #GUID, and Metadata: #US. Use library address for one exact coordinate:

dnx dotnet-inspect -y -- library MyLib.dll \
  -S "Metadata: #Strings" --rows 20
dnx dotnet-inspect -y -- library address "#Strings:0x1a4" \
  --library MyLib.dll

Heap addresses are decimal unless prefixed with 0x. String and blob listings contain distinct values referenced by projected table rows, not a claim of complete heap enumeration; each listing reports its coverage.

Selecting @Metadata for a package that resolves to several assemblies is ambiguous and fails. Choose one DLL with library, or use package Foo --library only when the package has one unambiguous library.

Repository

richlander/dotnet-inspect

Path

skills/metadata/SKILL.md

Last updated
First committed

Is this your skill?

If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.