brainstorming
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Understand implementation details of .NET code by decompiling assemblies. Use when the user wants to see how a .NET API works internally, inspect NuGet package source, view framework implementation, or understand compiled .NET binaries.
Claude Code
$ npx -y skills add davidfowl/dotnet-skillz --skill ilspy-decompile --agent claude-code
Codex
$ npx skills add davidfowl/dotnet-skillz --skill ilspy-decompile -a codex -y
Cursor
$ npx skills add davidfowl/dotnet-skillz --skill ilspy-decompile -a cursor -y
Gemini CLI
$ npx skills add davidfowl/dotnet-skillz --skill ilspy-decompile -a gemini-cli -y
GitHub Copilot
$ npx skills add davidfowl/dotnet-skillz --skill ilspy-decompile -a github-copilot -y
OpenCode
$ npx skills add davidfowl/dotnet-skillz --skill ilspy-decompile -a opencode -y
Windsurf
$ npx skills add davidfowl/dotnet-skillz --skill ilspy-decompile -a windsurf -y
name: ilspy-decompile description: Understand implementation details of .NET code by decompiling assemblies. Use when the user wants to see how a .NET API works internally, inspect NuGet package source, view framework implementation, or understand compiled .NET binaries. allowed-tools: Bash(dnx:*)
Use this skill to understand how .NET code works internally by decompiling compiled assemblies.
# Decompile an assembly to stdout (no install needed with .NET 10+) dnx ilspycmd MyLibrary.dll # Decompile to an output folder dnx ilspycmd -o output-folder MyLibrary.dll
# Windows ~/.nuget/packages/<package-name>/<version>/lib/<tfm>/ # Example: Newtonsoft.Json ~/.nuget/packages/newtonsoft.json/13.0.3/lib/netstandard2.0/Newtonsoft.Json.dll # Example: Microsoft.Extensions.DependencyInjection ~/.nuget/packages/microsoft.extensions.dependencyinjection/8.0.0/lib/net8.0/Microsoft.Extensions.DependencyInjection.dll
# Find .NET install location dotnet --list-runtimes # Windows typical paths C:/Program Files/dotnet/shared/Microsoft.NETCore.App/<version>/ C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/<version>/ # Linux/macOS typical paths /usr/share/dotnet/shared/Microsoft.NETCore.App/<version>/ /usr/share/dotnet/shared/Microsoft.AspNetCore.App/<version>/ # Example: System.Text.Json from runtime C:/Program Files/dotnet/shared/Microsoft.NETCore.App/8.0.0/System.Text.Json.dll
# Find SDK location dotnet --list-sdks # Reference assemblies (design-time facades) C:/Program Files/dotnet/packs/Microsoft.NETCore.App.Ref/<version>/ref/net8.0/
# Debug build ./bin/Debug/net8.0/<AssemblyName>.dll # Published output ./bin/Release/net8.0/publish/<AssemblyName>.dll
1. Identify what you want to understand (API, class, method) 2. Locate the assembly containing that code 3. Use `dnx ilspycmd -l class` to find the exact type name 4. Decompile the specific type with `-t`
# Decompile to stdout dnx ilspycmd MyLibrary.dll # Decompile to output directory dnx ilspycmd -o ./decompiled MyLibrary.dll # Decompile as compilable project dnx ilspycmd -p -o ./project MyLibrary.dll # Decompile with nested namespace folders dnx ilspycmd -p -o ./project --nested-directories MyLibrary.dll
# Decompile a specific type dnx ilspycmd -t Namespace.ClassName MyLibrary.dll # Decompile with specific C# version dnx ilspycmd -lv CSharp12_0 MyLibrary.dll # Decompile with reference path for dependencies dnx ilspycmd -r ./dependencies MyLibrary.dll
# Show IL code instead of C# dnx ilspycmd -il MyLibrary.dll # Show IL for specific type dnx ilspycmd -il -t Namespace.ClassName MyLibrary.dll
# List all classes dnx ilspycmd -l class MyLibrary.dll # List interfaces dnx ilspycmd -l interface MyLibrary.dll # List structs dnx ilspycmd -l struct MyLibrary.dll # List enums dnx ilspycmd -l enum MyLibrary.dll # List delegates dnx ilspycmd -l delegate MyLibrary.dll
# Show help dnx ilspycmd -h # Disable update check (useful for CI/automation) dnx ilspycmd --disable-updatecheck MyLibrary.dll # Remove dead code dnx ilspycmd --no-dead-code MyLibrary.dll
# Find System.Text.Json in the runtime dotnet --list-runtimes # Microsoft.NETCore.App 8.0.0 [C:\Program Files\dotnet\shared\Microsoft.NETCore.App] # List classes to find JsonSerializer dnx ilspycmd -l class "C:/Program Files/dotnet/shared/Microsoft.NETCore.App/8.0.0/System.Text.Json.dll" # Decompile JsonSerializer dnx ilspycmd -t System.Text.Json.JsonSerializer "C:/Program Files/dotnet/shared/Microsoft.NETCore.App/8.0.0/System.Text.Json.dll"
# Decompile Polly's retry logic dnx ilspycmd -t Polly.Retry.RetryPolicy ~/.nuget/packages/polly/8.0.0/lib/netstandard2.0/Polly.dll # Decompile entire package to project for exploration dnx ilspycmd -p -o ./polly-src ~/.nuget/packages/polly/8.0.0/lib/netstandard2.0/Polly.dll
# Find the ASP.NET Core runtime # C:\Program Files\dotnet\shared\Microsoft.AspNetCore.App\8.0.0\ # Decompile the Kestrel server dnx ilspycmd -l class "C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/8.0.0/Microsoft.AspNetCore.Server.Kestrel.Core.dll" dnx ilspycmd -t Microsoft.AspNetCore.Server.Kestrel.Core.KestrelServer "C:/Program Files/dotnet/shared/Microsoft.AspNetCore.App/8.0.0/Microsoft.AspNetCore.Server.Kestrel.Core.dll"
# View C# source dnx ilspycmd -t MyNamespace.MyClass MyLibrary.dll # View IL code for same type dnx ilspycmd -il -t MyNamespace.MyClass MyLibrary.dll
Available versions for `-lv` option:
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.
Design, implement, and audit accessible UI to WCAG 2.2 Level AA across Web, iOS, and Android — semantic ARIA roles and labels,…
Use when you want to verify compiler changes and commit with the correct convention. Runs tests, lint, and format, then commits…