aspnet-core
Build, debug, modernize, or review ASP.NET Core applications with correct hosting, middleware, security, configuration, logging, and deployment patterns on…
Use `pvanalyze` to inspect existing .NET `.nettrace` files from the command line, including GC, JIT, CPU stacks, allocation, DATAS, events, exceptions, timeline, and call-tree analysis with JSON or SpeedScope. USE FOR: the user mentions pvanalyze, PerfView-style CLI trace
$ npx -y skills add managedcode/dotnet-skills --skill pvanalyze --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/pvanalyzeContext preview
The summary Claude sees to decide when to auto-load this skill.
Use `pvanalyze` to inspect existing .NET `.nettrace` files from the command line, including GC, JIT, CPU stacks, allocation, DATAS, events, exceptions, timeline, and call-tree analysis with JSON or SpeedScope. USE FOR: the user mentions pvanalyze, PerfView-style CLI trace
name: pvanalyze description: "Use `pvanalyze` to inspect existing .NET `.nettrace` files from the command line, including GC, JIT, CPU stacks, allocation, DATAS, events, exceptions, timeline, and call-tree analysis with JSON or SpeedScope. USE FOR: the user mentions pvanalyze, PerfView-style CLI trace analysis, or cross-platform .nettrace inspection; the task starts from an existing .nettrace file and needs. DO NOT USE FOR: unrelated stacks; generic tasks that do not need this specific guidance. INVOKES: inspect the repository context, edit targeted files, and run relevant build, test, lint, or validation commands when changes are made." compatibility: "Requires .NET 8 or later to run `pvanalyze`; trace collection usually requires `dotnet-trace`. Some scenarios require traces captured with verbose runtime providers or .NET 9+ DATAS events."
Use `dotnet-trace-collect` or `profiling` first when the task is mostly about collecting the trace. Use `pvanalyze` once a trace artifact exists or when the user wants the specific command surface.
1. Confirm the trace path and whether it was collected with the events needed for the question. 2. Run `pvanalyze info <trace.nettrace>` first to verify the file opens and contains the expected processes. 3. Pick one focused analysis command:
4. Prefer `--format json` when another tool or agent will consume the output. 5. Add `--from` and `--to` only after the baseline command confirms the interesting time window. 6. Use `pvanalyze clean <trace-or-directory>` when generated `.pvanalyze.etlx` cache files should be removed.
The upstream README documents two install paths:
# .NET 10+ one-shot execution path dnx pvanalyze # Global tool path dotnet tool install --global pvanalyze
If the NuGet package is not resolvable in the current environment, build or pack from source:
git clone https://github.com/adityamandaleeka/pvanalyze cd pvanalyze dotnet build -c Release dotnet run -c Release -- info ./trace.nettrace
The source project is configured as a .NET tool with `PackageId` `pvanalyze`, `ToolCommandName` `pvanalyze`, and `VersionPrefix` `0.1.0`.
Install trace collection support when you need to create the input artifact:
dotnet tool install --global dotnet-trace dotnet-trace --version pvanalyze --help
pvanalyze info ./trace.nettrace pvanalyze gcstats ./trace.nettrace --format json pvanalyze gcstats ./trace.nettrace --timeline --longest 5 pvanalyze gcstats ./trace.nettrace --from 1000 --to 2000 --timeline --format json
pvanalyze cpustacks ./trace.nettrace --top 20 pvanalyze cpustacks ./trace.nettrace --group-by module --top 10 --format json pvanalyze cpustacks ./trace.nettrace --format speedscope --output ./trace.speedscope.json
pvanalyze events ./trace.nettrace --list --format json pvanalyze events ./trace.nettrace --provider DotNETRuntime --type GCStart --limit 50 pvanalyze exceptions ./trace.nettrace --type NullReference --format json pvanalyze calltree ./trace.nettrace --hot-path --depth 5 --format json pvanalyze calltree ./trace.nettrace --caller-callee "Serialize"
General trace:
dotnet-trace collect --process-id <PID> --output ./trace.nettrace dotnet-trace collect -- dotnet run -c Release
Allocation analysis requires allocation events:
dotnet-trace collect --providers "Microsoft-Windows-DotNETRuntime:0x200001:5" -- dotnet run -c Release pvanalyze alloc ./trace.nettrace --group-by type --top 20 --format json
DATAS analysis requires .NET 9+ DATAS events and verbose GC runtime events:
DOTNET_GCDynamicAdaptationMode=1 dotnet-trace collect -p <PID> --providers "Microsoft-Windows-DotNETRuntime:0x4C14FCCBD:5" pvanalyze datas ./trace.nettrace --changes-only --format json
Stop explaining .NET to your AI. Start building. We've all been there: asking Claude to use Entity Framework, only to get EF6 patterns in a .NET 8 project. Explaining to Copilot that Blazor Server and Blazor WebAssembly aren't the same thing.
Repo: managedcode/dotnet-skills
Build, debug, modernize, or review ASP.NET Core applications with correct hosting, middleware, security, configuration, logging, and deployment patterns on…
Build, upgrade, and operate Aspire 13.5.x C# or TypeScript application hosts with the current CLI, AppHost, ServiceDefaults, integrations, dashboard, testing,…
Build, review, or migrate Azure Functions in .NET with correct execution model, isolated worker setup, bindings, DI, and Durable Functions patterns. USE FOR:…
Build and review Blazor applications across server, WebAssembly, web app, and hybrid scenarios with correct component design, state flow, rendering, and…
Maintain or migrate EF6-based applications with realistic guidance on what to keep, what to modernize, and when EF Core is or is not the right next step. USE…
Design, tune, or review EF Core data access with proper modeling, migrations, query translation, performance, and lifetime management for modern .NET…