#252 by GitHub stars
dotnet/skills
Repository for skills to assist AI coding agents with .NET and C#
History
Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.
View weekly changes
eng/skill-validator/tests/fixtures/no-eval-skill/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
eng/skill-validator/tests/fixtures/sample-skill/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-advanced/skills/csharp-scripts/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-advanced/skills/dotnet-pinvoke/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-advanced/skills/nuget-trusted-publishing/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-advanced/skills/vectorization/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-ai/skills/technology-selection/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-aspnetcore/skills/convert-blazor-server-to-webapp/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-aspnetcore/skills/dotnet-webapi/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-blazor/skills/author-component/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-blazor/skills/collect-user-input/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-blazor/skills/configure-auth/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-blazor/skills/coordinate-components/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-blazor/skills/create-blazor-project/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-blazor/skills/fetch-and-send-data/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-blazor/skills/plan-ui-change/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-blazor/skills/support-prerendering/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-blazor/skills/use-igniteui-blazor/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-blazor/skills/use-js-interop/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-data/skills/create-datadriven-aspnetcore/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-data/skills/optimizing-ef-core-queries/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-diag/skills/analyzing-dotnet-performance/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-diag/skills/android-tombstone-symbolication/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-diag/skills/apple-crash-symbolication/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-diag/skills/clr-activation-debugging/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-diag/skills/dotnet-trace-collect/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-diag/skills/dump-collect/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-diag/skills/microbenchmarking/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-experimental/skills/exp-mock-usage-analysis/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-experimental/skills/exp-test-maintainability/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-maui/skills/dotnet-maui-doctor/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-maui/skills/maui-app-lifecycle/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-maui/skills/maui-collectionview/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-maui/skills/maui-data-binding/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-maui/skills/maui-dependency-injection/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-maui/skills/maui-safe-area/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-maui/skills/maui-shell-navigation/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-maui/skills/maui-theming/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-msbuild/skills/binlog-failure-analysis/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-msbuild/skills/binlog-generation/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-msbuild/skills/build-parallelism/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-msbuild/skills/build-perf-baseline/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-msbuild/skills/build-perf-diagnostics/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-msbuild/skills/check-bin-obj-clash/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-msbuild/skills/copy-to-output-directory/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-msbuild/skills/directory-build-organization/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-msbuild/skills/eliminate-redundant-restores/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-msbuild/skills/eval-performance/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-msbuild/skills/extension-points/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-msbuild/skills/including-generated-files/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-msbuild/skills/incremental-build/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-msbuild/skills/item-management/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-msbuild/skills/msbuild-antipatterns/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-msbuild/skills/msbuild-modernization/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-msbuild/skills/property-patterns/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-msbuild/skills/resolve-project-references/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-msbuild/skills/target-authoring/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-msbuild/skills/troubleshoot-binlog-mcp/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-nuget/skills/convert-to-cpm/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-template-engine/skills/template-authoring/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-template-engine/skills/template-comparison/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-template-engine/skills/template-discovery/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-template-engine/skills/template-instantiation/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-template-engine/skills/template-smart-defaults/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-template-engine/skills/template-validation/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-test-migration/skills/migrate-mstest-v1v2-to-v3/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-test-migration/skills/migrate-mstest-v3-to-v4/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-test-migration/skills/migrate-nunit-to-mstest/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-test-migration/skills/migrate-vstest-to-mtp/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-test-migration/skills/migrate-xunit-to-mstest/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-test-migration/skills/migrate-xunit-to-xunit-v3/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-test/skills/assertion-quality/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-test/skills/code-testing/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-test/skills/code-testing-agent/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-test/skills/code-testing-extensions/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-test/skills/coverage-analysis/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-test/skills/crap-score/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-test/skills/detect-static-dependencies/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-test/skills/filter-syntax/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-test/skills/find-untested-sources/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-test/skills/generate-testability-wrappers/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-test/skills/grade-tests/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-test/skills/migrate-static-to-wrapper/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-test/skills/mtp-hot-reload/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-test/skills/platform-detection/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-test/skills/run-tests/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-test/skills/scaffold-dotnet-test-project/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-test/skills/test-analysis-extensions/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-test/skills/test-anti-patterns/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-test/skills/test-gap-analysis/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-test/skills/test-smell-detection/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-test/skills/test-tagging/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-test/skills/test-value-evidence/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-test/skills/testability-obstacle/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-test/skills/writing-mstest-tests/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-upgrade/skills/dotnet-aot-compat/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-upgrade/skills/migrate-dotnet10-to-dotnet11/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-upgrade/skills/migrate-dotnet8-to-dotnet9/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-upgrade/skills/migrate-dotnet9-to-dotnet10/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-upgrade/skills/migrate-nullable-references/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-upgrade/skills/thread-abort-migration/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet-winforms/skills/winforms-expert/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet/skills/csharp-expert/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet/skills/csharp-refactoring/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet/skills/msbuild/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet/skills/setup-local-sdk/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet11/skills/process-api-net11/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
plugins/dotnet11/skills/system-text-json-net11/SKILL.md
Week of Nov 2, 2026 · +0 / −0 lines
Before Network or broad shell → After Network or broad shell
586f13f8d898 → 281e39451fb4
Week of Oct 26, 2026 · Line counts unavailable
Before Not checked yet → After Network or broad shell
First observation → 586f13f8d898
No earlier version was observed for comparison.
Verified commit 281e39451fb4487b4828d62fcb51ca853589a185
git clone --filter=blob:none --no-checkout https://github.com/dotnet/skills.git .hotskills/dotnet-skills && git -C .hotskills/dotnet-skills checkout --detach 281e39451fb4487b4828d62fcb51ca853589a185
# Copy each selected skill directory from .hotskills/dotnet-skills into .claude/skills/<skill-name>/git clone --filter=blob:none --no-checkout https://github.com/dotnet/skills.git .hotskills/dotnet-skills && git -C .hotskills/dotnet-skills checkout --detach 281e39451fb4487b4828d62fcb51ca853589a185
# Copy each selected skill directory from .hotskills/dotnet-skills into .agents/skills/<skill-name>/git clone --filter=blob:none --no-checkout https://github.com/dotnet/skills.git .hotskills/dotnet-skills && git -C .hotskills/dotnet-skills checkout --detach 281e39451fb4487b4828d62fcb51ca853589a185
# Copy each selected skill directory from .hotskills/dotnet-skills into .github/skills/<skill-name>/Heat
7.1- Star growth, last 7 daysAhead of 86% of tracked repositories
- Star growth, last 24 hoursAhead of 84% of tracked repositories
- Rank movement, last 7 daysAhead of 58% of tracked repositories
- Commits, last 30 daysAhead of 96% of tracked repositories
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekAhead of 0% of tracked repositories
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
Individual skills in this repository
- no-eval-skill
eng/skill-validator/tests/fixtures/no-eval-skill - sample-skill
eng/skill-validator/tests/fixtures/sample-skill - csharp-scripts
plugins/dotnet-advanced/skills/csharp-scripts - dotnet-pinvoke
plugins/dotnet-advanced/skills/dotnet-pinvoke - nuget-trusted-publishing
plugins/dotnet-advanced/skills/nuget-trusted-publishing - vectorization
plugins/dotnet-advanced/skills/vectorization - technology-selection
plugins/dotnet-ai/skills/technology-selection - convert-blazor-server-to-webapp
plugins/dotnet-aspnetcore/skills/convert-blazor-server-to-webapp - dotnet-webapi
plugins/dotnet-aspnetcore/skills/dotnet-webapi - author-component
plugins/dotnet-blazor/skills/author-component - collect-user-input
plugins/dotnet-blazor/skills/collect-user-input - configure-auth
plugins/dotnet-blazor/skills/configure-auth - coordinate-components
plugins/dotnet-blazor/skills/coordinate-components - create-blazor-project
plugins/dotnet-blazor/skills/create-blazor-project - fetch-and-send-data
plugins/dotnet-blazor/skills/fetch-and-send-data - plan-ui-change
plugins/dotnet-blazor/skills/plan-ui-change - support-prerendering
plugins/dotnet-blazor/skills/support-prerendering - use-igniteui-blazor
plugins/dotnet-blazor/skills/use-igniteui-blazor - use-js-interop
plugins/dotnet-blazor/skills/use-js-interop - create-datadriven-aspnetcore
plugins/dotnet-data/skills/create-datadriven-aspnetcore - optimizing-ef-core-queries
plugins/dotnet-data/skills/optimizing-ef-core-queries - analyzing-dotnet-performance
plugins/dotnet-diag/skills/analyzing-dotnet-performance - android-tombstone-symbolication
plugins/dotnet-diag/skills/android-tombstone-symbolication - apple-crash-symbolication
plugins/dotnet-diag/skills/apple-crash-symbolication - clr-activation-debugging
plugins/dotnet-diag/skills/clr-activation-debugging - dotnet-trace-collect
plugins/dotnet-diag/skills/dotnet-trace-collect - dump-collect
plugins/dotnet-diag/skills/dump-collect - microbenchmarking
plugins/dotnet-diag/skills/microbenchmarking - exp-mock-usage-analysis
plugins/dotnet-experimental/skills/exp-mock-usage-analysis - exp-test-maintainability
plugins/dotnet-experimental/skills/exp-test-maintainability - dotnet-maui-doctor
plugins/dotnet-maui/skills/dotnet-maui-doctor - maui-app-lifecycle
plugins/dotnet-maui/skills/maui-app-lifecycle - maui-collectionview
plugins/dotnet-maui/skills/maui-collectionview - maui-data-binding
plugins/dotnet-maui/skills/maui-data-binding - maui-dependency-injection
plugins/dotnet-maui/skills/maui-dependency-injection - maui-safe-area
plugins/dotnet-maui/skills/maui-safe-area - maui-shell-navigation
plugins/dotnet-maui/skills/maui-shell-navigation - maui-theming
plugins/dotnet-maui/skills/maui-theming - binlog-failure-analysis
plugins/dotnet-msbuild/skills/binlog-failure-analysis - binlog-generation
plugins/dotnet-msbuild/skills/binlog-generation - build-parallelism
plugins/dotnet-msbuild/skills/build-parallelism - build-perf-baseline
plugins/dotnet-msbuild/skills/build-perf-baseline - build-perf-diagnostics
plugins/dotnet-msbuild/skills/build-perf-diagnostics - check-bin-obj-clash
plugins/dotnet-msbuild/skills/check-bin-obj-clash - copy-to-output-directory
plugins/dotnet-msbuild/skills/copy-to-output-directory - directory-build-organization
plugins/dotnet-msbuild/skills/directory-build-organization - eliminate-redundant-restores
plugins/dotnet-msbuild/skills/eliminate-redundant-restores - eval-performance
plugins/dotnet-msbuild/skills/eval-performance - extension-points
plugins/dotnet-msbuild/skills/extension-points - including-generated-files
plugins/dotnet-msbuild/skills/including-generated-files - incremental-build
plugins/dotnet-msbuild/skills/incremental-build - item-management
plugins/dotnet-msbuild/skills/item-management - msbuild-antipatterns
plugins/dotnet-msbuild/skills/msbuild-antipatterns - msbuild-modernization
plugins/dotnet-msbuild/skills/msbuild-modernization - property-patterns
plugins/dotnet-msbuild/skills/property-patterns - resolve-project-references
plugins/dotnet-msbuild/skills/resolve-project-references - target-authoring
plugins/dotnet-msbuild/skills/target-authoring - troubleshoot-binlog-mcp
plugins/dotnet-msbuild/skills/troubleshoot-binlog-mcp - convert-to-cpm
plugins/dotnet-nuget/skills/convert-to-cpm - template-authoring
plugins/dotnet-template-engine/skills/template-authoring - template-comparison
plugins/dotnet-template-engine/skills/template-comparison - template-discovery
plugins/dotnet-template-engine/skills/template-discovery - template-instantiation
plugins/dotnet-template-engine/skills/template-instantiation - template-smart-defaults
plugins/dotnet-template-engine/skills/template-smart-defaults - template-validation
plugins/dotnet-template-engine/skills/template-validation - migrate-mstest-v1v2-to-v3
plugins/dotnet-test-migration/skills/migrate-mstest-v1v2-to-v3 - migrate-mstest-v3-to-v4
plugins/dotnet-test-migration/skills/migrate-mstest-v3-to-v4 - migrate-nunit-to-mstest
plugins/dotnet-test-migration/skills/migrate-nunit-to-mstest - migrate-vstest-to-mtp
plugins/dotnet-test-migration/skills/migrate-vstest-to-mtp - migrate-xunit-to-mstest
plugins/dotnet-test-migration/skills/migrate-xunit-to-mstest - migrate-xunit-to-xunit-v3
plugins/dotnet-test-migration/skills/migrate-xunit-to-xunit-v3 - assertion-quality
plugins/dotnet-test/skills/assertion-quality - code-testing
plugins/dotnet-test/skills/code-testing - code-testing-agent
plugins/dotnet-test/skills/code-testing-agent - code-testing-extensions
plugins/dotnet-test/skills/code-testing-extensions - coverage-analysis
plugins/dotnet-test/skills/coverage-analysis - crap-score
plugins/dotnet-test/skills/crap-score - detect-static-dependencies
plugins/dotnet-test/skills/detect-static-dependencies - filter-syntax
plugins/dotnet-test/skills/filter-syntax - find-untested-sources
plugins/dotnet-test/skills/find-untested-sources - generate-testability-wrappers
plugins/dotnet-test/skills/generate-testability-wrappers - grade-tests
plugins/dotnet-test/skills/grade-tests - migrate-static-to-wrapper
plugins/dotnet-test/skills/migrate-static-to-wrapper - mtp-hot-reload
plugins/dotnet-test/skills/mtp-hot-reload - platform-detection
plugins/dotnet-test/skills/platform-detection - run-tests
plugins/dotnet-test/skills/run-tests - scaffold-dotnet-test-project
plugins/dotnet-test/skills/scaffold-dotnet-test-project - test-analysis-extensions
plugins/dotnet-test/skills/test-analysis-extensions - test-anti-patterns
plugins/dotnet-test/skills/test-anti-patterns - test-gap-analysis
plugins/dotnet-test/skills/test-gap-analysis - test-smell-detection
plugins/dotnet-test/skills/test-smell-detection - test-tagging
plugins/dotnet-test/skills/test-tagging - test-value-evidence
plugins/dotnet-test/skills/test-value-evidence - testability-obstacle
plugins/dotnet-test/skills/testability-obstacle - writing-mstest-tests
plugins/dotnet-test/skills/writing-mstest-tests - dotnet-aot-compat
plugins/dotnet-upgrade/skills/dotnet-aot-compat - migrate-dotnet10-to-dotnet11
plugins/dotnet-upgrade/skills/migrate-dotnet10-to-dotnet11 - migrate-dotnet8-to-dotnet9
plugins/dotnet-upgrade/skills/migrate-dotnet8-to-dotnet9 - migrate-dotnet9-to-dotnet10
plugins/dotnet-upgrade/skills/migrate-dotnet9-to-dotnet10 - migrate-nullable-references
plugins/dotnet-upgrade/skills/migrate-nullable-references - thread-abort-migration
plugins/dotnet-upgrade/skills/thread-abort-migration - winforms-expert
plugins/dotnet-winforms/skills/winforms-expert - csharp-expert
plugins/dotnet/skills/csharp-expert - csharp-refactoring
plugins/dotnet/skills/csharp-refactoring - msbuild
plugins/dotnet/skills/msbuild - setup-local-sdk
plugins/dotnet/skills/setup-local-sdk - process-api-net11
plugins/dotnet11/skills/process-api-net11 - system-text-json-net11
plugins/dotnet11/skills/system-text-json-net11
How it works
no-eval-skill
When your agent uses it
A skill with no eval.yaml for testing discovery behavior.
What it loads into context
Frontmatter
21 tokensAlways available to the agent
SKILL.md
38 tokensWhen the skill is activated
Reference documents
685,553 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
Scripts executed separately
../../../../../plugins/dotnet-diag/skills/android-tombstone-symbolication/scripts/Symbolicate-Tombstone.ps1../../../../../plugins/dotnet-diag/skills/apple-crash-symbolication/scripts/Symbolicate-Crash.ps1../../../../../plugins/dotnet-test/skills/coverage-analysis/scripts/Compute-CrapScores.ps1../../../../../plugins/dotnet-test/skills/coverage-analysis/scripts/CoverageData.ps1../../../../../plugins/dotnet-test/skills/coverage-analysis/scripts/Extract-MethodCoverage.ps1../../../../../plugins/dotnet-test/skills/find-untested-sources/scripts/find_untested_sources.py../../../../../plugins/dotnet-upgrade/skills/migrate-nullable-references/scripts/Get-NullableReadiness.ps1
Files
../../../../../.claude-plugin/marketplace.jsonasset3,920 bytesSKILL.mdcore157 bytes../../../../../plugins/dotnet-advanced/.claude-plugin/plugin.jsonasset194 bytes../../../../../plugins/dotnet-advanced/skills/csharp-scripts/SKILL.mddoc11,735 bytes../../../../../plugins/dotnet-advanced/skills/dotnet-pinvoke/SKILL.mddoc19,622 bytes../../../../../plugins/dotnet-advanced/skills/dotnet-pinvoke/references/diagnostics.mddoc3,732 bytes../../../../../plugins/dotnet-advanced/skills/dotnet-pinvoke/references/type-mapping.mddoc3,058 bytes../../../../../plugins/dotnet-advanced/skills/nuget-trusted-publishing/SKILL.mddoc9,361 bytes../../../../../plugins/dotnet-advanced/skills/nuget-trusted-publishing/references/package-types.mddoc8,446 bytes../../../../../plugins/dotnet-advanced/skills/nuget-trusted-publishing/references/publish-workflow.mddoc3,910 bytes../../../../../plugins/dotnet-advanced/skills/vectorization/SKILL.mddoc11,936 bytes../../../../../plugins/dotnet-ai/.claude-plugin/plugin.jsonasset228 bytes../../../../../plugins/dotnet-ai/skills/technology-selection/SKILL.mddoc8,513 bytes../../../../../plugins/dotnet-ai/skills/technology-selection/references/agentic.mddoc1,991 bytes../../../../../plugins/dotnet-ai/skills/technology-selection/references/classic-ml.mddoc2,439 bytes../../../../../plugins/dotnet-ai/skills/technology-selection/references/copilot.mddoc1,140 bytes../../../../../plugins/dotnet-ai/skills/technology-selection/references/llm.mddoc2,001 bytes../../../../../plugins/dotnet-ai/skills/technology-selection/references/ollama.mddoc1,018 bytes../../../../../plugins/dotnet-ai/skills/technology-selection/references/onnx.mddoc1,103 bytes../../../../../plugins/dotnet-ai/skills/technology-selection/references/rag.mddoc1,886 bytes../../../../../plugins/dotnet-aspnetcore/.claude-plugin/plugin.jsonasset215 bytes../../../../../plugins/dotnet-aspnetcore/skills/convert-blazor-server-to-webapp/SKILL.mddoc15,487 bytes../../../../../plugins/dotnet-aspnetcore/skills/dotnet-webapi/SKILL.mddoc21,923 bytes../../../../../plugins/dotnet-blazor/.claude-plugin/plugin.jsonasset196 bytes../../../../../plugins/dotnet-blazor/skills/author-component/SKILL.mddoc3,344 bytes../../../../../plugins/dotnet-blazor/skills/author-component/references/async-programming-rules.mddoc6,981 bytes../../../../../plugins/dotnet-blazor/skills/author-component/references/breaking-down-components.mddoc3,236 bytes../../../../../plugins/dotnet-blazor/skills/author-component/references/component-disposal.mddoc2,801 bytes../../../../../plugins/dotnet-blazor/skills/collect-user-input/SKILL.mddoc12,766 bytes../../../../../plugins/dotnet-blazor/skills/configure-auth/SKILL.mddoc7,151 bytes../../../../../plugins/dotnet-blazor/skills/coordinate-components/SKILL.mddoc9,980 bytes../../../../../plugins/dotnet-blazor/skills/create-blazor-project/SKILL.mddoc12,153 bytes../../../../../plugins/dotnet-blazor/skills/create-blazor-project/assets/agents-md/auto-global.mddoc2,866 bytes../../../../../plugins/dotnet-blazor/skills/create-blazor-project/assets/agents-md/auto-per-page.mddoc3,000 bytes../../../../../plugins/dotnet-blazor/skills/create-blazor-project/assets/agents-md/server-global.mddoc1,497 bytes../../../../../plugins/dotnet-blazor/skills/create-blazor-project/assets/agents-md/server-per-page.mddoc1,814 bytes../../../../../plugins/dotnet-blazor/skills/create-blazor-project/assets/agents-md/ssr-none.mddoc1,696 bytes../../../../../plugins/dotnet-blazor/skills/create-blazor-project/assets/agents-md/webassembly-global.mddoc2,552 bytes../../../../../plugins/dotnet-blazor/skills/create-blazor-project/assets/agents-md/webassembly-per-page.mddoc2,702 bytes../../../../../plugins/dotnet-blazor/skills/fetch-and-send-data/SKILL.mddoc10,144 bytes../../../../../plugins/dotnet-blazor/skills/plan-ui-change/SKILL.mddoc7,899 bytes../../../../../plugins/dotnet-blazor/skills/support-prerendering/SKILL.mddoc7,342 bytes../../../../../plugins/dotnet-blazor/skills/use-igniteui-blazor/SKILL.mddoc5,648 bytes../../../../../plugins/dotnet-blazor/skills/use-js-interop/SKILL.mddoc10,989 bytes../../../../../plugins/dotnet-data/.claude-plugin/plugin.jsonasset161 bytes../../../../../plugins/dotnet-data/skills/create-datadriven-aspnetcore/SKILL.mddoc12,725 bytes../../../../../plugins/dotnet-data/skills/optimizing-ef-core-queries/SKILL.mddoc24,565 bytes../../../../../plugins/dotnet-diag/.claude-plugin/plugin.jsonasset240 bytes../../../../../plugins/dotnet-diag/agents/optimizing-dotnet-performance.agent.mddoc3,515 bytes../../../../../plugins/dotnet-diag/skills/analyzing-dotnet-performance/SKILL.mddoc12,673 bytes../../../../../plugins/dotnet-diag/skills/analyzing-dotnet-performance/references/async-patterns.mddoc2,976 bytes../../../../../plugins/dotnet-diag/skills/analyzing-dotnet-performance/references/collections-and-linq.mddoc7,744 bytes../../../../../plugins/dotnet-diag/skills/analyzing-dotnet-performance/references/critical-patterns.mddoc6,787 bytes../../../../../plugins/dotnet-diag/skills/analyzing-dotnet-performance/references/io-and-serialization.mddoc3,676 bytes../../../../../plugins/dotnet-diag/skills/analyzing-dotnet-performance/references/memory-and-strings.mddoc5,857 bytes../../../../../plugins/dotnet-diag/skills/analyzing-dotnet-performance/references/regex-patterns.mddoc3,324 bytes../../../../../plugins/dotnet-diag/skills/analyzing-dotnet-performance/references/structural-patterns.mddoc1,683 bytes../../../../../plugins/dotnet-diag/skills/android-tombstone-symbolication/SKILL.mddoc8,220 bytes../../../../../plugins/dotnet-diag/skills/android-tombstone-symbolication/scripts/Symbolicate-Tombstone.ps1runs30,165 bytes../../../../../plugins/dotnet-diag/skills/apple-crash-symbolication/SKILL.mddoc9,692 bytes../../../../../plugins/dotnet-diag/skills/apple-crash-symbolication/references/ips-crash-format.mddoc1,704 bytes../../../../../plugins/dotnet-diag/skills/apple-crash-symbolication/scripts/Symbolicate-Crash.ps1runs40,545 bytes../../../../../plugins/dotnet-diag/skills/clr-activation-debugging/SKILL.mddoc20,858 bytes../../../../../plugins/dotnet-diag/skills/clr-activation-debugging/references/activation-flow.mddoc14,038 bytes../../../../../plugins/dotnet-diag/skills/clr-activation-debugging/references/com-activation.mddoc8,084 bytes../../../../../plugins/dotnet-diag/skills/clr-activation-debugging/references/log-format.mddoc11,435 bytes../../../../../plugins/dotnet-diag/skills/dotnet-trace-collect/SKILL.mddoc24,664 bytes../../../../../plugins/dotnet-diag/skills/dotnet-trace-collect/references/dotnet-monitor.mddoc3,576 bytes../../../../../plugins/dotnet-diag/skills/dotnet-trace-collect/references/dotnet-trace-collect-linux.mddoc3,340 bytes../../../../../plugins/dotnet-diag/skills/dotnet-trace-collect/references/dotnet-trace-collect.mddoc2,664 bytes../../../../../plugins/dotnet-diag/skills/dotnet-trace-collect/references/perfcollect.mddoc4,372 bytes../../../../../plugins/dotnet-diag/skills/dotnet-trace-collect/references/perfview.mddoc7,568 bytes../../../../../plugins/dotnet-diag/skills/dump-collect/SKILL.mddoc4,310 bytes../../../../../plugins/dotnet-diag/skills/dump-collect/references/container-dumps.mddoc11,485 bytes../../../../../plugins/dotnet-diag/skills/dump-collect/references/coreclr-dumps.mddoc2,971 bytes../../../../../plugins/dotnet-diag/skills/dump-collect/references/nativeaot-dumps.mddoc8,775 bytes../../../../../plugins/dotnet-diag/skills/microbenchmarking/SKILL.mddoc13,264 bytes../../../../../plugins/dotnet-diag/skills/microbenchmarking/references/bdn-internals-and-tuning.mddoc9,639 bytes../../../../../plugins/dotnet-diag/skills/microbenchmarking/references/comparison-strategies.mddoc8,702 bytes../../../../../plugins/dotnet-diag/skills/microbenchmarking/references/diagnosers-and-exporters.mddoc6,548 bytes../../../../../plugins/dotnet-diag/skills/microbenchmarking/references/project-setup-and-running.mddoc9,441 bytes../../../../../plugins/dotnet-diag/skills/microbenchmarking/references/writing-benchmarks.mddoc12,292 bytes../../../../../plugins/dotnet-experimental/.claude-plugin/plugin.jsonasset196 bytes../../../../../plugins/dotnet-experimental/skills/exp-mock-usage-analysis/SKILL.mddoc5,872 bytes../../../../../plugins/dotnet-experimental/skills/exp-test-maintainability/SKILL.mddoc9,863 bytes../../../../../plugins/dotnet-maui/.claude-plugin/plugin.jsonasset250 bytes../../../../../plugins/dotnet-maui/skills/dotnet-maui-doctor/SKILL.mddoc9,574 bytes../../../../../plugins/dotnet-maui/skills/dotnet-maui-doctor/references/installation-commands-macos.mddoc1,794 bytes../../../../../plugins/dotnet-maui/skills/dotnet-maui-doctor/references/installation-commands-windows.mddoc322 bytes../../../../../plugins/dotnet-maui/skills/dotnet-maui-doctor/references/installation-commands.mddoc5,690 bytes../../../../../plugins/dotnet-maui/skills/dotnet-maui-doctor/references/microsoft-openjdk.mddoc3,412 bytes../../../../../plugins/dotnet-maui/skills/dotnet-maui-doctor/references/platform-requirements-linux.mddoc1,283 bytes../../../../../plugins/dotnet-maui/skills/dotnet-maui-doctor/references/platform-requirements-macos.mddoc1,347 bytes../../../../../plugins/dotnet-maui/skills/dotnet-maui-doctor/references/platform-requirements-windows.mddoc1,258 bytes../../../../../plugins/dotnet-maui/skills/dotnet-maui-doctor/references/troubleshooting-macos.mddoc1,513 bytes../../../../../plugins/dotnet-maui/skills/dotnet-maui-doctor/references/troubleshooting-windows.mddoc820 bytes../../../../../plugins/dotnet-maui/skills/dotnet-maui-doctor/references/troubleshooting.mddoc8,518 bytes../../../../../plugins/dotnet-maui/skills/dotnet-maui-doctor/references/workload-dependencies-discovery.mddoc8,746 bytes../../../../../plugins/dotnet-maui/skills/maui-app-lifecycle/SKILL.mddoc9,241 bytes../../../../../plugins/dotnet-maui/skills/maui-app-lifecycle/references/lifecycle-api.mddoc5,673 bytes../../../../../plugins/dotnet-maui/skills/maui-collectionview/SKILL.mddoc20,230 bytes../../../../../plugins/dotnet-maui/skills/maui-collectionview/references/collectionview-api.mddoc7,365 bytes../../../../../plugins/dotnet-maui/skills/maui-data-binding/SKILL.mddoc14,850 bytes../../../../../plugins/dotnet-maui/skills/maui-data-binding/references/data-binding-api.mddoc4,130 bytes../../../../../plugins/dotnet-maui/skills/maui-dependency-injection/SKILL.mddoc14,430 bytes../../../../../plugins/dotnet-maui/skills/maui-dependency-injection/references/dependency-injection-api.mddoc4,236 bytes../../../../../plugins/dotnet-maui/skills/maui-safe-area/SKILL.mddoc12,909 bytes../../../../../plugins/dotnet-maui/skills/maui-safe-area/references/safe-area-api.mddoc8,635 bytes../../../../../plugins/dotnet-maui/skills/maui-shell-navigation/SKILL.mddoc15,365 bytes../../../../../plugins/dotnet-maui/skills/maui-shell-navigation/references/shell-navigation-api.mddoc9,219 bytes../../../../../plugins/dotnet-maui/skills/maui-theming/SKILL.mddoc16,514 bytes../../../../../plugins/dotnet-maui/skills/maui-theming/references/theming-api.mddoc4,344 bytes../../../../../plugins/dotnet-msbuild/.claude-plugin/plugin.jsonasset591 bytes../../../../../plugins/dotnet-msbuild/agents/build-perf.agent.mddoc5,124 bytes../../../../../plugins/dotnet-msbuild/agents/msbuild-code-review.agent.mddoc6,708 bytes../../../../../plugins/dotnet-msbuild/agents/msbuild-code-review.agent.mddoc6,708 bytes../../../../../plugins/dotnet-msbuild/agents/msbuild.agent.mddoc7,438 bytes../../../../../plugins/dotnet-msbuild/skills/binlog-failure-analysis/SKILL.mddoc3,095 bytes../../../../../plugins/dotnet-msbuild/skills/binlog-generation/SKILL.mddoc4,284 bytes../../../../../plugins/dotnet-msbuild/skills/build-parallelism/SKILL.mddoc6,128 bytes../../../../../plugins/dotnet-msbuild/skills/build-perf-baseline/SKILL.mddoc14,537 bytes../../../../../plugins/dotnet-msbuild/skills/build-perf-diagnostics/SKILL.mddoc10,577 bytes../../../../../plugins/dotnet-msbuild/skills/check-bin-obj-clash/SKILL.mddoc21,919 bytes../../../../../plugins/dotnet-msbuild/skills/copy-to-output-directory/SKILL.mddoc7,279 bytes../../../../../plugins/dotnet-msbuild/skills/directory-build-organization/SKILL.mddoc11,053 bytes../../../../../plugins/dotnet-msbuild/skills/directory-build-organization/references/common-patterns.mddoc1,411 bytes../../../../../plugins/dotnet-msbuild/skills/directory-build-organization/references/multi-level-examples.mddoc4,001 bytes../../../../../plugins/dotnet-msbuild/skills/directory-build-organization/references/targetframework-props-pitfall.mddoc3,427 bytes../../../../../plugins/dotnet-msbuild/skills/eliminate-redundant-restores/SKILL.mddoc10,197 bytes../../../../../plugins/dotnet-msbuild/skills/eval-performance/SKILL.mddoc7,024 bytes../../../../../plugins/dotnet-msbuild/skills/extension-points/SKILL.mddoc11,789 bytes../../../../../plugins/dotnet-msbuild/skills/including-generated-files/SKILL.mddoc7,126 bytes../../../../../plugins/dotnet-msbuild/skills/incremental-build/SKILL.mddoc17,288 bytes../../../../../plugins/dotnet-msbuild/skills/item-management/SKILL.mddoc5,418 bytes../../../../../plugins/dotnet-msbuild/skills/msbuild-antipatterns/SKILL.mddoc19,370 bytes../../../../../plugins/dotnet-msbuild/skills/msbuild-antipatterns/references/additional-antipatterns.mddoc19,271 bytes../../../../../plugins/dotnet-msbuild/skills/msbuild-antipatterns/references/incremental-build-inputs-outputs.mddoc1,561 bytes../../../../../plugins/dotnet-msbuild/skills/msbuild-antipatterns/references/private-assets.mddoc1,041 bytes../../../../../plugins/dotnet-msbuild/skills/msbuild-modernization/SKILL.mddoc17,445 bytes../../../../../plugins/dotnet-msbuild/skills/property-patterns/SKILL.mddoc6,761 bytes../../../../../plugins/dotnet-msbuild/skills/resolve-project-references/SKILL.mddoc2,972 bytes../../../../../plugins/dotnet-msbuild/skills/target-authoring/SKILL.mddoc6,662 bytes../../../../../plugins/dotnet-msbuild/skills/troubleshoot-binlog-mcp/SKILL.mddoc7,868 bytes../../../../../plugins/dotnet-nuget/.claude-plugin/plugin.jsonasset181 bytes../../../../../plugins/dotnet-nuget/skills/convert-to-cpm/SKILL.mddoc14,283 bytes../../../../../plugins/dotnet-nuget/skills/convert-to-cpm/references/audit-complexities.mddoc5,411 bytes../../../../../plugins/dotnet-nuget/skills/convert-to-cpm/references/baseline-comparison.mddoc7,408 bytes../../../../../plugins/dotnet-nuget/skills/convert-to-cpm/references/directory-packages-props.mddoc3,710 bytes../../../../../plugins/dotnet-nuget/skills/convert-to-cpm/references/msbuild-property-handling.mddoc3,539 bytes../../../../../plugins/dotnet-nuget/skills/convert-to-cpm/references/report-template.mddoc3,713 bytes../../../../../plugins/dotnet-nuget/skills/convert-to-cpm/references/validation-and-errors.mddoc3,245 bytes../../../../../plugins/dotnet-template-engine/.claude-plugin/plugin.jsonasset469 bytes../../../../../plugins/dotnet-template-engine/agents/template-engine.agent.mddoc6,653 bytes../../../../../plugins/dotnet-template-engine/skills/template-authoring/SKILL.mddoc13,108 bytes../../../../../plugins/dotnet-template-engine/skills/template-comparison/SKILL.mddoc8,245 bytes../../../../../plugins/dotnet-template-engine/skills/template-discovery/SKILL.mddoc12,262 bytes../../../../../plugins/dotnet-template-engine/skills/template-instantiation/SKILL.mddoc11,339 bytes../../../../../plugins/dotnet-template-engine/skills/template-smart-defaults/SKILL.mddoc7,870 bytes../../../../../plugins/dotnet-template-engine/skills/template-validation/SKILL.mddoc11,785 bytes../../../../../plugins/dotnet-test-migration/.claude-plugin/plugin.jsonasset360 bytes../../../../../plugins/dotnet-test-migration/agents/test-migration.agent.mddoc8,228 bytes../../../../../plugins/dotnet-test-migration/skills/migrate-mstest-v1v2-to-v3/SKILL.mddoc21,801 bytes../../../../../plugins/dotnet-test-migration/skills/migrate-mstest-v3-to-v4/SKILL.mddoc28,868 bytes../../../../../plugins/dotnet-test-migration/skills/migrate-nunit-to-mstest/SKILL.mddoc15,316 bytes../../../../../plugins/dotnet-test-migration/skills/migrate-nunit-to-mstest/references/mapping-cheatsheet.mddoc17,143 bytes../../../../../plugins/dotnet-test-migration/skills/migrate-vstest-to-mtp/SKILL.mddoc22,210 bytes../../../../../plugins/dotnet-test-migration/skills/migrate-xunit-to-mstest/SKILL.mddoc15,484 bytes../../../../../plugins/dotnet-test-migration/skills/migrate-xunit-to-mstest/references/mapping-cheatsheet.mddoc28,043 bytes../../../../../plugins/dotnet-test-migration/skills/migrate-xunit-to-xunit-v3/SKILL.mddoc16,226 bytes../../../../../plugins/dotnet-test/.claude-plugin/plugin.jsonasset733 bytes../../../../../plugins/dotnet-test/agents/code-testing-builder.agent.mddoc3,584 bytes../../../../../plugins/dotnet-test/agents/code-testing-fixer.agent.mddoc3,351 bytes../../../../../plugins/dotnet-test/agents/code-testing-fixer.agent.mddoc3,351 bytes../../../../../plugins/dotnet-test/agents/code-testing-implementer.agent.mddoc13,350 bytes../../../../../plugins/dotnet-test/agents/code-testing-implementer.agent.mddoc13,350 bytes../../../../../plugins/dotnet-test/agents/code-testing-implementer.agent.mddoc13,350 bytes../../../../../plugins/dotnet-test/agents/code-testing-implementer.agent.mddoc13,350 bytes../../../../../plugins/dotnet-test/agents/code-testing-implementer.agent.mddoc13,350 bytes../../../../../plugins/dotnet-test/agents/code-testing-implementer.agent.mddoc13,350 bytes../../../../../plugins/dotnet-test/agents/code-testing-linter.agent.mddoc3,001 bytes../../../../../plugins/dotnet-test/agents/code-testing-planner.agent.mddoc5,904 bytes../../../../../plugins/dotnet-test/agents/code-testing-planner.agent.mddoc5,904 bytes../../../../../plugins/dotnet-test/agents/code-testing-researcher.agent.mddoc12,079 bytes../../../../../plugins/dotnet-test/agents/code-testing-researcher.agent.mddoc12,079 bytes../../../../../plugins/dotnet-test/agents/code-testing-researcher.agent.mddoc12,079 bytes../../../../../plugins/dotnet-test/agents/code-testing-researcher.agent.mddoc12,079 bytes../../../../../plugins/dotnet-test/agents/code-testing-researcher.agent.mddoc12,079 bytes../../../../../plugins/dotnet-test/agents/code-testing-researcher.agent.mddoc12,079 bytes../../../../../plugins/dotnet-test/agents/code-testing-researcher.agent.mddoc12,079 bytes../../../../../plugins/dotnet-test/agents/code-testing-researcher.agent.mddoc12,079 bytes../../../../../plugins/dotnet-test/agents/code-testing-researcher.agent.mddoc12,079 bytes../../../../../plugins/dotnet-test/agents/code-testing-researcher.agent.mddoc12,079 bytes../../../../../plugins/dotnet-test/agents/code-testing-researcher.agent.mddoc12,079 bytes../../../../../plugins/dotnet-test/agents/code-testing-researcher.agent.mddoc12,079 bytes../../../../../plugins/dotnet-test/agents/code-testing-researcher.agent.mddoc12,079 bytes../../../../../plugins/dotnet-test/agents/code-testing-researcher.agent.mddoc12,079 bytes../../../../../plugins/dotnet-test/agents/code-testing-tester.agent.mddoc5,182 bytes../../../../../plugins/dotnet-test/agents/test-engineer.agent.mddoc30,404 bytes../../../../../plugins/dotnet-test/agents/test-engineer.agent.mddoc30,404 bytes../../../../../plugins/dotnet-test/agents/test-engineer.agent.mddoc30,404 bytes../../../../../plugins/dotnet-test/agents/test-engineer.agent.mddoc30,404 bytes../../../../../plugins/dotnet-test/agents/test-engineer.agent.mddoc30,404 bytes../../../../../plugins/dotnet-test/agents/test-engineer.agent.mddoc30,404 bytes../../../../../plugins/dotnet-test/agents/test-quality-auditor.agent.mddoc9,416 bytes../../../../../plugins/dotnet-test/agents/testability-migration.agent.mddoc12,255 bytes../../../../../plugins/dotnet-test/skills/assertion-quality/SKILL.mddoc19,273 bytes../../../../../plugins/dotnet-test/skills/code-testing-agent/SKILL.mddoc708 bytes../../../../../plugins/dotnet-test/skills/code-testing-extensions/SKILL.mddoc3,782 bytes../../../../../plugins/dotnet-test/skills/code-testing-extensions/extensions/cpp-examples.mddoc9,335 bytes../../../../../plugins/dotnet-test/skills/code-testing-extensions/extensions/cpp.mddoc20,560 bytes../../../../../plugins/dotnet-test/skills/code-testing-extensions/extensions/dotnet-examples.mddoc10,942 bytes../../../../../plugins/dotnet-test/skills/code-testing-extensions/extensions/dotnet.mddoc10,801 bytes../../../../../plugins/dotnet-test/skills/code-testing-extensions/extensions/go-examples.mddoc12,656 bytes../../../../../plugins/dotnet-test/skills/code-testing-extensions/extensions/go.mddoc8,006 bytes../../../../../plugins/dotnet-test/skills/code-testing-extensions/extensions/java-examples.mddoc12,165 bytes../../../../../plugins/dotnet-test/skills/code-testing-extensions/extensions/java.mddoc9,933 bytes../../../../../plugins/dotnet-test/skills/code-testing-extensions/extensions/kotlin-examples.mddoc10,521 bytes../../../../../plugins/dotnet-test/skills/code-testing-extensions/extensions/kotlin.mddoc11,473 bytes../../../../../plugins/dotnet-test/skills/code-testing-extensions/extensions/powershell-examples.mddoc9,347 bytes../../../../../plugins/dotnet-test/skills/code-testing-extensions/extensions/powershell.mddoc12,342 bytes../../../../../plugins/dotnet-test/skills/code-testing-extensions/extensions/python-examples.mddoc12,425 bytes../../../../../plugins/dotnet-test/skills/code-testing-extensions/extensions/python.mddoc11,991 bytes../../../../../plugins/dotnet-test/skills/code-testing-extensions/extensions/ruby-examples.mddoc9,130 bytes../../../../../plugins/dotnet-test/skills/code-testing-extensions/extensions/ruby.mddoc15,067 bytes../../../../../plugins/dotnet-test/skills/code-testing-extensions/extensions/rust-examples.mddoc10,812 bytes../../../../../plugins/dotnet-test/skills/code-testing-extensions/extensions/rust.mddoc8,983 bytes../../../../../plugins/dotnet-test/skills/code-testing-extensions/extensions/swift.mddoc9,632 bytes../../../../../plugins/dotnet-test/skills/code-testing-extensions/extensions/typescript-examples.mddoc13,006 bytes../../../../../plugins/dotnet-test/skills/code-testing-extensions/extensions/typescript.mddoc8,058 bytes../../../../../plugins/dotnet-test/skills/code-testing/SKILL.mddoc22,754 bytes../../../../../plugins/dotnet-test/skills/code-testing/unit-test-generation.prompt.mddoc14,090 bytes../../../../../plugins/dotnet-test/skills/coverage-analysis/SKILL.mddoc11,347 bytes../../../../../plugins/dotnet-test/skills/coverage-analysis/references/guidelines.mddoc2,634 bytes../../../../../plugins/dotnet-test/skills/coverage-analysis/references/output-format.mddoc4,220 bytes../../../../../plugins/dotnet-test/skills/coverage-analysis/references/report-generation.mddoc2,089 bytes../../../../../plugins/dotnet-test/skills/coverage-analysis/references/setup-discovery.mddoc15,329 bytes../../../../../plugins/dotnet-test/skills/coverage-analysis/scripts/Compute-CrapScores.ps1runs4,451 bytes../../../../../plugins/dotnet-test/skills/coverage-analysis/scripts/CoverageData.ps1runs14,719 bytes../../../../../plugins/dotnet-test/skills/coverage-analysis/scripts/Extract-MethodCoverage.ps1runs3,636 bytes../../../../../plugins/dotnet-test/skills/crap-score/SKILL.mddoc13,462 bytes../../../../../plugins/dotnet-test/skills/detect-static-dependencies/SKILL.mddoc15,298 bytes../../../../../plugins/dotnet-test/skills/filter-syntax/SKILL.mddoc5,963 bytes../../../../../plugins/dotnet-test/skills/find-untested-sources/SKILL.mddoc13,406 bytes../../../../../plugins/dotnet-test/skills/find-untested-sources/scripts/Find-UntestedSources.csasset24,622 bytes../../../../../plugins/dotnet-test/skills/find-untested-sources/scripts/find_untested_sources.pyruns35,897 bytes../../../../../plugins/dotnet-test/skills/generate-testability-wrappers/SKILL.mddoc15,658 bytes../../../../../plugins/dotnet-test/skills/grade-tests/SKILL.mddoc27,290 bytes../../../../../plugins/dotnet-test/skills/migrate-static-to-wrapper/SKILL.mddoc20,922 bytes../../../../../plugins/dotnet-test/skills/mtp-hot-reload/SKILL.mddoc9,201 bytes../../../../../plugins/dotnet-test/skills/platform-detection/SKILL.mddoc13,292 bytes../../../../../plugins/dotnet-test/skills/platform-detection/references/command-mode.mddoc952 bytes../../../../../plugins/dotnet-test/skills/run-tests/SKILL.mddoc15,571 bytes../../../../../plugins/dotnet-test/skills/scaffold-dotnet-test-project/SKILL.mddoc12,346 bytes../../../../../plugins/dotnet-test/skills/test-analysis-extensions/SKILL.mddoc4,673 bytes../../../../../plugins/dotnet-test/skills/test-analysis-extensions/extensions/cpp.mddoc8,615 bytes../../../../../plugins/dotnet-test/skills/test-analysis-extensions/extensions/dotnet.mddoc6,883 bytes../../../../../plugins/dotnet-test/skills/test-analysis-extensions/extensions/go.mddoc7,602 bytes../../../../../plugins/dotnet-test/skills/test-analysis-extensions/extensions/java.mddoc7,691 bytes../../../../../plugins/dotnet-test/skills/test-analysis-extensions/extensions/kotlin.mddoc7,334 bytes../../../../../plugins/dotnet-test/skills/test-analysis-extensions/extensions/powershell.mddoc6,410 bytes../../../../../plugins/dotnet-test/skills/test-analysis-extensions/extensions/python.mddoc6,961 bytes../../../../../plugins/dotnet-test/skills/test-analysis-extensions/extensions/ruby.mddoc6,760 bytes../../../../../plugins/dotnet-test/skills/test-analysis-extensions/extensions/rust.mddoc7,336 bytes../../../../../plugins/dotnet-test/skills/test-analysis-extensions/extensions/swift.mddoc6,957 bytes../../../../../plugins/dotnet-test/skills/test-analysis-extensions/extensions/typescript.mddoc7,544 bytes../../../../../plugins/dotnet-test/skills/test-anti-patterns/SKILL.mddoc27,331 bytes../../../../../plugins/dotnet-test/skills/test-gap-analysis/SKILL.mddoc19,334 bytes../../../../../plugins/dotnet-test/skills/test-gap-analysis/references/mutation-catalog.mddoc3,942 bytes../../../../../plugins/dotnet-test/skills/test-gap-analysis/references/per-test-read-only.mddoc6,677 bytes../../../../../plugins/dotnet-test/skills/test-smell-detection/SKILL.mddoc10,094 bytes../../../../../plugins/dotnet-test/skills/test-smell-detection/references/test-smell-catalog.mddoc6,453 bytes../../../../../plugins/dotnet-test/skills/test-tagging/SKILL.mddoc22,207 bytes../../../../../plugins/dotnet-test/skills/test-value-evidence/SKILL.mddoc10,825 bytes../../../../../plugins/dotnet-test/skills/testability-obstacle/SKILL.mddoc14,392 bytes../../../../../plugins/dotnet-test/skills/writing-mstest-tests/SKILL.mddoc19,980 bytes../../../../../plugins/dotnet-test/skills/writing-mstest-tests/references/advanced-mstest-patterns.mddoc4,369 bytes../../../../../plugins/dotnet-upgrade/.claude-plugin/plugin.jsonasset222 bytes../../../../../plugins/dotnet-upgrade/skills/dotnet-aot-compat/SKILL.mddoc16,833 bytes../../../../../plugins/dotnet-upgrade/skills/dotnet-aot-compat/references/polyfills.mddoc1,625 bytes../../../../../plugins/dotnet-upgrade/skills/migrate-dotnet10-to-dotnet11/SKILL.mddoc14,682 bytes../../../../../plugins/dotnet-upgrade/skills/migrate-dotnet10-to-dotnet11/references/aspnetcore-dotnet10to11.mddoc1,588 bytes../../../../../plugins/dotnet-upgrade/skills/migrate-dotnet10-to-dotnet11/references/core-libraries-dotnet10to11.mddoc7,038 bytes../../../../../plugins/dotnet-upgrade/skills/migrate-dotnet10-to-dotnet11/references/cryptography-dotnet10to11.mddoc1,826 bytes../../../../../plugins/dotnet-upgrade/skills/migrate-dotnet10-to-dotnet11/references/csharp-compiler-dotnet10to11.mddoc5,431 bytes../../../../../plugins/dotnet-upgrade/skills/migrate-dotnet10-to-dotnet11/references/efcore-dotnet10to11.mddoc5,039 bytes../../../../../plugins/dotnet-upgrade/skills/migrate-dotnet10-to-dotnet11/references/runtime-jit-dotnet10to11.mddoc3,371 bytes../../../../../plugins/dotnet-upgrade/skills/migrate-dotnet10-to-dotnet11/references/sdk-msbuild-dotnet10to11.mddoc1,659 bytes../../../../../plugins/dotnet-upgrade/skills/migrate-dotnet8-to-dotnet9/SKILL.mddoc15,769 bytes../../../../../plugins/dotnet-upgrade/skills/migrate-dotnet8-to-dotnet9/references/aspnet-core-dotnet8to9.mddoc2,357 bytes../../../../../plugins/dotnet-upgrade/skills/migrate-dotnet8-to-dotnet9/references/containers-interop-dotnet8to9.mddoc1,977 bytes../../../../../plugins/dotnet-upgrade/skills/migrate-dotnet8-to-dotnet9/references/core-libraries-dotnet8to9.mddoc7,148 bytes../../../../../plugins/dotnet-upgrade/skills/migrate-dotnet8-to-dotnet9/references/cryptography-dotnet8to9.mddoc2,146 bytes../../../../../plugins/dotnet-upgrade/skills/migrate-dotnet8-to-dotnet9/references/csharp-compiler-dotnet8to9.mddoc3,399 bytes../../../../../plugins/dotnet-upgrade/skills/migrate-dotnet8-to-dotnet9/references/deployment-runtime-dotnet8to9.mddoc2,498 bytes../../../../../plugins/dotnet-upgrade/skills/migrate-dotnet8-to-dotnet9/references/efcore-dotnet8to9.mddoc7,060 bytes../../../../../plugins/dotnet-upgrade/skills/migrate-dotnet8-to-dotnet9/references/sdk-msbuild-dotnet8to9.mddoc2,393 bytes../../../../../plugins/dotnet-upgrade/skills/migrate-dotnet8-to-dotnet9/references/serialization-networking-dotnet8to9.mddoc5,565 bytes../../../../../plugins/dotnet-upgrade/skills/migrate-dotnet8-to-dotnet9/references/winforms-wpf-dotnet8to9.mddoc3,838 bytes../../../../../plugins/dotnet-upgrade/skills/migrate-dotnet9-to-dotnet10/SKILL.mddoc19,387 bytes../../../../../plugins/dotnet-upgrade/skills/migrate-dotnet9-to-dotnet10/references/aspnet-core-dotnet9to10.mddoc6,827 bytes../../../../../plugins/dotnet-upgrade/skills/migrate-dotnet9-to-dotnet10/references/containers-interop-dotnet9to10.mddoc3,083 bytes../../../../../plugins/dotnet-upgrade/skills/migrate-dotnet9-to-dotnet10/references/core-libraries-dotnet9to10.mddoc4,914 bytes../../../../../plugins/dotnet-upgrade/skills/migrate-dotnet9-to-dotnet10/references/cryptography-dotnet9to10.mddoc2,849 bytes../../../../../plugins/dotnet-upgrade/skills/migrate-dotnet9-to-dotnet10/references/csharp-compiler-dotnet9to10.mddoc5,052 bytes../../../../../plugins/dotnet-upgrade/skills/migrate-dotnet9-to-dotnet10/references/efcore-dotnet9to10.mddoc6,638 bytes../../../../../plugins/dotnet-upgrade/skills/migrate-dotnet9-to-dotnet10/references/extensions-hosting-dotnet9to10.mddoc3,253 bytes../../../../../plugins/dotnet-upgrade/skills/migrate-dotnet9-to-dotnet10/references/sdk-msbuild-dotnet9to10.mddoc2,455 bytes../../../../../plugins/dotnet-upgrade/skills/migrate-dotnet9-to-dotnet10/references/serialization-networking-dotnet9to10.mddoc3,020 bytes../../../../../plugins/dotnet-upgrade/skills/migrate-dotnet9-to-dotnet10/references/winforms-wpf-dotnet9to10.mddoc3,482 bytes../../../../../plugins/dotnet-upgrade/skills/migrate-nullable-references/SKILL.mddoc35,936 bytes../../../../../plugins/dotnet-upgrade/skills/migrate-nullable-references/references/aspnet-core.mddoc4,248 bytes../../../../../plugins/dotnet-upgrade/skills/migrate-nullable-references/references/breaking-changes.mddoc1,429 bytes../../../../../plugins/dotnet-upgrade/skills/migrate-nullable-references/references/ef-core.mddoc3,836 bytes../../../../../plugins/dotnet-upgrade/skills/migrate-nullable-references/references/nullable-attributes.mddoc2,386 bytes../../../../../plugins/dotnet-upgrade/skills/migrate-nullable-references/scripts/Get-NullableReadiness.ps1runs19,844 bytes../../../../../plugins/dotnet-upgrade/skills/thread-abort-migration/SKILL.mddoc12,827 bytes../../../../../plugins/dotnet-winforms/.claude-plugin/plugin.jsonasset221 bytes../../../../../plugins/dotnet-winforms/skills/winforms-expert/SKILL.mddoc23,143 bytes../../../../../plugins/dotnet/.claude-plugin/plugin.jsonasset218 bytes../../../../../plugins/dotnet/.lsp.jsonasset357 bytes../../../../../plugins/dotnet/skills/csharp-expert/SKILL.mddoc21,783 bytes../../../../../plugins/dotnet/skills/csharp-expert/references/dotnet-skills-marketplace.mddoc6,242 bytes../../../../../plugins/dotnet/skills/csharp-refactoring/SKILL.mddoc12,399 bytes../../../../../plugins/dotnet/skills/csharp-refactoring/references/operation-catalog.mddoc2,875 bytes../../../../../plugins/dotnet/skills/msbuild/SKILL.mddoc8,992 bytes../../../../../plugins/dotnet/skills/msbuild/references/antipatterns/additional-antipatterns.mddoc12,775 bytes../../../../../plugins/dotnet/skills/msbuild/references/antipatterns/incremental-build-inputs-outputs.mddoc3,040 bytes../../../../../plugins/dotnet/skills/msbuild/references/antipatterns/private-assets.mddoc1,545 bytes../../../../../plugins/dotnet/skills/msbuild/references/binlog-failure-analysis.mddoc4,891 bytes../../../../../plugins/dotnet/skills/msbuild/references/binlog-generation.mddoc3,378 bytes../../../../../plugins/dotnet/skills/msbuild/references/build-perf-baseline.mddoc18,748 bytes../../../../../plugins/dotnet/skills/msbuild/references/build-perf-diagnostics.mddoc14,226 bytes../../../../../plugins/dotnet/skills/msbuild/references/copy-to-output-directory.mddoc8,144 bytes../../../../../plugins/dotnet/skills/msbuild/references/eval-performance.mddoc8,638 bytes../../../../../plugins/dotnet/skills/msbuild/references/extension-points.mddoc13,324 bytes../../../../../plugins/dotnet/skills/msbuild/references/incremental-build.mddoc16,409 bytes../../../../../plugins/dotnet/skills/msbuild/references/msbuild-antipatterns.mddoc16,308 bytes../../../../../plugins/dotnet/skills/setup-local-sdk/SKILL.mddoc14,686 bytes../../../../../plugins/dotnet11/.claude-plugin/plugin.jsonasset141 bytes../../../../../plugins/dotnet11/skills/process-api-net11/SKILL.mddoc11,699 bytes../../../../../plugins/dotnet11/skills/system-text-json-net11/SKILL.mddoc15,762 bytes
Read SKILL.md
# No Eval Skill
This skill has no tests/eval.yaml file.View the complete source on GitHubsample-skill
When your agent uses it
A sample skill for testing the validator. Helps with greeting generation.
What it loads into context
Frontmatter
21 tokensAlways available to the agent
SKILL.md
82 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Steps
Files
SKILL.mdcore373 bytestests/eval.yamlasset705 bytes
Read SKILL.md
# Sample Skill
When asked to generate greetings, always include the person's name and a time-appropriate greeting (good morning/afternoon/evening).
## Steps
1. Determine the time of day
2. Format a greeting with the person's name
3. Add a friendly closingView the complete source on GitHubcsharp-scripts
When your agent uses it
Run file-based C# apps with the .NET CLI when the user explicitly wants C#/.NET code without creating a project. Use for C# language/API experiments, one-file C# apps, small multi-file C# apps composed with `#:include`/`#:exclude`, or C# file-based apps linked with `#:ref`. Do not use for language-agnostic throwaway scripts, generic computations, Python/PowerShell-style automation, full projects, or existing app integration.
What it loads into context
Frontmatter
112 tokensAlways available to the agent
SKILL.md
2,777 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to Use
- When Not to Use
- Inputs
- Workflow
- Unix shebang support
- Source-generated JSON
- Converting to a project
- Fallback for .NET 9 and earlier
- Validation
- Common Pitfalls
- More info
Files
SKILL.mdcore11,735 bytesSKILL.mdcore11,735 bytesSKILL.mdcore11,735 bytesSKILL.mdcore11,735 bytesSKILL.mdcore11,735 bytesSKILL.mdcore11,735 bytesSKILL.mdcore11,735 bytesSKILL.mdcore11,735 bytesSKILL.mdcore11,735 bytes
Read SKILL.md
# File-Based C# Apps
## When to Use
- Testing a C# concept, API, or language feature with a quick file-based app
- Prototyping logic before integrating it into a larger project
- Building a small utility from one entry-point file and a few helper `.cs` files
## When Not to Use
- The user asks for a language-agnostic quick script, throwaway computation, or shell/Python/PowerShell-style automation
- The user needs a full project, solution integration, or project references in an existing app
- The user is working inside an existing .NET solution and wants to add code there
- The app is large enough that project structure, build customization, tests, or publish configuration should live in a `.csproj`View the complete source on GitHubdotnet-pinvoke
When your agent uses it
Correctly call native (C/C++) libraries from .NET using P/Invoke and LibraryImport. Covers function signatures, string marshalling, memory lifetime, SafeHandle, and cross-platform patterns. USE FOR: writing new P/Invoke or LibraryImport declarations, reviewing or debugging existing native interop code, wrapping a C or C++ library for use in .NET, diagnosing crashes, memory leaks, or corruption at the managed/native boundary. DO NOT USE FOR: COM interop, C++/CLI mixed-mode assemblies, or pure managed code with no native dependencies.
What it loads into context
Frontmatter
139 tokensAlways available to the agent
SKILL.md
4,759 tokensWhen the skill is activated
Reference documents
1,811 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to Use This Skill
- Stop Signals
- Inputs
- Workflow
- Cross-Platform Library Loading
- Migrating DllImport to LibraryImport
- Tooling
- Validation
- Reference Files
Files
SKILL.mdcore19,622 bytesSKILL.mdcore19,622 bytesreferences/diagnostics.mddoc3,732 bytesreferences/type-mapping.mddoc3,058 bytes
Read SKILL.md
# .NET P/Invoke
Calling native code from .NET is powerful but unforgiving. Incorrect signatures, garbled strings, and leaked or freed memory are the most common sources of bugs — all can manifest as intermittent crashes, silent data corruption, or access violations far from the actual defect.
This skill covers both `DllImport` (available since .NET Framework 1.0) and `LibraryImport` (source-generated, .NET 7+). When targeting .NET Framework, always use `DllImport`. When targeting .NET 7+, prefer `LibraryImport` for new code. When native AOT is a requirement, `LibraryImport` is the only option.
## When to Use This Skill
- Writing a new `[DllImport]` or `[LibraryImport]` declaration from a C/C++ header
- Reviewing P/Invoke signatures for correctness (type sizes, calling conventions, string encoding)
- Wrapping an entire C library for use from .NET
- Debugging `AccessViolationException`, `DllNotFoundException`, or silent data corruption at the native boundary
- Migrating `DllImport` declarations to `LibraryImport` for AOT/trimming compatibility
- Diagnosing memory leaks or heap corruption involving native handles or buffersView the complete source on GitHubnuget-trusted-publishing
When your agent uses it
Set up NuGet trusted publishing (OIDC) on a GitHub Actions repo — replaces long-lived API keys with short-lived tokens. USE FOR: trusted publishing, NuGet OIDC, keyless NuGet publish, migrate from NuGet API key, NuGet/login, secure NuGet publishing. DO NOT USE FOR: publishing to private feeds or Azure Artifacts (OIDC is nuget.org only). INVOKES: shell (powershell or bash), edit, create, ask_user for guided repo setup.
What it loads into context
Frontmatter
125 tokensAlways available to the agent
SKILL.md
2,221 tokensWhen the skill is activated
Reference documents
3,204 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Prerequisites
- When to Use This Skill
- Safety Rules
- Process
- Troubleshooting
- References
Files
SKILL.mdcore9,361 bytesSKILL.mdcore9,361 bytesreferences/package-types.mddoc8,446 bytesreferences/publish-workflow.mddoc3,910 bytes
Read SKILL.md
# NuGet Trusted Publishing Setup
Set up [NuGet trusted publishing](https://learn.microsoft.com/en-us/nuget/nuget-org/trusted-publishing) on a GitHub Actions repo. Replaces long-lived API keys with OIDC-based short-lived tokens — no secrets to rotate or leak.
## Prerequisites
- **GitHub Actions** — this skill covers GitHub Actions setup only
- **nuget.org account** — the user needs access to create trusted publishing policies
## When to Use This Skill
Use this skill when:
- Setting up trusted publishing for a NuGet package
- Migrating from `secrets.NUGET_API_KEY` to OIDC-based publishingView the complete source on GitHubvectorization
When your agent uses it
Design, implement, optimize, and review SIMD code in .NET. USE FOR: vectorizing scalar loops with TensorPrimitives, Vector64/128/256/512, or platform hardware intrinsics; reviewing existing SIMD code, including the generic Vector type, for contract equivalence, tail handling, memory safety, portability, fallbacks, and measured performance. DO NOT USE FOR: performance work unrelated to SIMD or vectorization.
What it loads into context
Frontmatter
105 tokensAlways available to the agent
SKILL.md
2,492 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Inputs and prerequisites
- Core rules
- Authoring checklist
- Testing checklist
- Benchmarking
- Completion contract
- Review checklist
Files
SKILL.mdcore11,936 bytesSKILL.mdcore11,936 bytes
Read SKILL.md
# .NET SIMD vectorization
Produce a portable optimization that preserves the scalar contract, remains memory-safe at every
length, and earns its complexity with measured results. **Read the official
[SIMD and hardware-intrinsics guidance](https://learn.microsoft.com/dotnet/standard/simd) first**
and follow its comprehensive implementation templates. In particular, use its self-contained
per-width dispatch, dedicated small-input handling, loop, and remainder shapes rather than reducing
them to a chain of width checks. This skill supplies the decision rules and validation checks to
apply while changing real code.
## Inputs and prerequisites
Discover these from the repository before asking the user:
View the complete source on GitHubtechnology-selection
When your agent uses it
Guides technology selection and implementation of AI and ML features in .NET 8+ applications using ML.NET, Microsoft.Extensions.AI (MEAI), Microsoft Agent Framework (MAF), GitHub Copilot SDK, ONNX Runtime, and OllamaSharp. Covers the full spectrum from classic ML through modern LLM orchestration to local inference. Use when adding classification, regression, clustering, anomaly detection, recommendation, LLM integration (text generation, summarization, reasoning), RAG pipelines with vector search, agentic workflows with tool calling, Copilot extensions, or custom model inference via ONNX Runtime to a .NET project. DO NOT USE FOR projects targeting .NET Framework (requires .NET 8+), the task is pure data engineering or ETL with no ML/AI component, or the project needs a custom deep learning training loop (use Python with PyTorch/TensorFlow, then export to ONNX for .NET inference).
What it loads into context
Frontmatter
202 tokensAlways available to the agent
SKILL.md
2,061 tokensWhen the skill is activated
Reference documents
2,718 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Step 1: Classify the task (decision tree)
- Step 1b: Pick the library layer
- Step 2: Cover the branch essentials, then decide depth
- Validation
- Anti-Patterns to Reject
Files
SKILL.mdcore8,513 bytesSKILL.mdcore8,513 bytesSKILL.mdcore8,513 bytesreferences/agentic.mddoc1,991 bytesreferences/classic-ml.mddoc2,439 bytesreferences/copilot.mddoc1,140 bytesreferences/llm.mddoc2,001 bytesreferences/ollama.mddoc1,018 bytesreferences/onnx.mddoc1,103 bytesreferences/rag.mddoc1,886 bytes
Read SKILL.md
# .NET AI and Machine Learning
Pick the right technology first, then deliver **only what the task asks for**. If the task asks for
a plan, comparison, or architecture (or says "do not write code"), produce that — do not scaffold,
build, or run code unprompted.
## Step 1: Classify the task (decision tree)
State which branch applies and why, then choose that technology.
| Task type | Technology | Why |
|-----------|-----------|-----|
| Structured/tabular: classification, regression, clustering, anomaly detection, recommendation | **ML.NET** (`Microsoft.ML`) | Deterministic (fixed seed), no cloud dependency, purpose-built |
| NL understanding, generation, summarization, reasoning (single prompt → response, no tools) | **LLM via Microsoft.Extensions.AI** (`IChatClient`) | Language capability, no orchestration needed |View the complete source on GitHubconvert-blazor-server-to-webapp
When your agent uses it
Guides conversion of a pre-.NET 8 Blazor Server app into a .NET 8+ Blazor Web App. USE FOR: migrating apps that use AddServerSideBlazor and MapBlazorHub to the AddRazorComponents/MapRazorComponents model, converting _Host.cshtml to an App.razor root component, replacing blazor.server.js with blazor.web.js, migrating CascadingAuthenticationState to a service, adopting new Blazor Web App features like enhanced navigation and streaming rendering. DO NOT USE FOR: apps that are already Blazor Web Apps (already use AddRazorComponents and MapRazorComponents), Blazor WebAssembly or hosted Blazor WebAssembly apps (different migration path), apps that should stay on the Blazor Server hosting model without converting, or apps still targeting .NET Framework.
What it loads into context
Frontmatter
201 tokensAlways available to the agent
SKILL.md
3,699 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to Use
- When Not to Use
- Inputs
- Workflow
- Validation
- Common Pitfalls
- More Info
Files
SKILL.mdcore15,487 bytesSKILL.mdcore15,487 bytes
Read SKILL.md
# Convert Blazor Server App to Blazor Web App
This skill helps an agent convert a pre-.NET 8 Blazor Server app into a .NET 8+ Blazor Web App. The old hosting model uses `AddServerSideBlazor`/`MapBlazorHub` with a `_Host.cshtml` Razor Page as the entry point. The new Blazor Web App model uses `AddRazorComponents`/`MapRazorComponents` with an `App.razor` root component, enabling per-component render modes, enhanced navigation, streaming rendering, and other .NET 8+ features. The converted app uses `InteractiveServer` render mode to preserve existing interactive behavior.
## When to Use
- Migrating a Blazor Server app from .NET 6 or .NET 7 to .NET 8+
- App currently uses `AddServerSideBlazor()` and `MapBlazorHub()` in `Program.cs` (or `Startup.cs`)
- App uses `Pages/_Host.cshtml` (or `_Host.razor`) as the host page with Component Tag Helpers
- Want to adopt new Blazor Web App features while keeping interactive server rendering
## When Not to Use
- **The app already uses `AddRazorComponents` and `MapRazorComponents`.** It is already a Blazor Web App — no conversion is needed. Stop here and tell the user the app is already using the Blazor Web App model.View the complete source on GitHubdotnet-webapi
When your agent uses it
Guides creation and modification of ASP.NET Core Web API endpoints with correct HTTP semantics, OpenAPI metadata, and error handling. USE FOR: adding new API endpoints (controllers or minimal APIs), wiring up OpenAPI/Swagger, creating .http test files, setting up global error handling middleware. DO NOT USE FOR: general C# coding style, EF Core data access or query optimization (use optimizing-ef-core-queries), frontend/Blazor work, gRPC services, or SignalR hubs.
What it loads into context
Frontmatter
125 tokensAlways available to the agent
SKILL.md
4,866 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to Use
- When Not to Use
- Inputs / prerequisites
- Workflow
- Validation
- Common Pitfalls
- More Info
Files
SKILL.mdcore21,923 bytes
Read SKILL.md
# ASP.NET Core Web API
Produce well-structured ASP.NET Core Web API endpoints with proper HTTP
semantics, OpenAPI documentation, and error handling.
## When to Use
Use this skill when working on ASP.NET Core HTTP APIs, including:
- adding or modifying Web API endpoints implemented with controllers or minimal APIs;
- wiring up OpenAPI/Swagger metadata and endpoint documentation;
- defining request/response DTOs and consistent HTTP status code behavior;
- adding `.http` files or similar request-based API testing artifacts;
- configuring centralized API error handling middleware or exception mapping.View the complete source on GitHubauthor-component
When your agent uses it
Create or review Blazor components (.razor files) with correct architecture. USE FOR: writing new Blazor components that do NOT involve JavaScript interop, implementing parameters and EventCallback, RenderFragment slots, component lifecycle (OnInitializedAsync, OnParametersSet), async patterns, IAsyncDisposable, CancellationToken, CSS isolation, code-behind. DO NOT USE FOR: creating new projects (use create-blazor-project), JavaScript interop or calling browser APIs from Blazor (use use-js-interop), forms and validation (use collect-user-input), prerendering issues (use support-prerendering), HTTP data fetching patterns (use fetch-and-send-data), coordinating state between unrelated components (use coordinate-components).
What it loads into context
Frontmatter
171 tokensAlways available to the agent
SKILL.md
831 tokensWhen the skill is activated
Reference documents
3,049 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Core Rules
- RenderFragment & Generics
- File Patterns
- Disposal
- Async Patterns
- Don'ts
Files
SKILL.mdcore3,344 bytesreferences/async-programming-rules.mddoc6,981 bytesreferences/breaking-down-components.mddoc3,236 bytesreferences/component-disposal.mddoc2,801 bytes
Read SKILL.md
# Author Blazor Component
## Core Rules
- Data flows **down** via `[Parameter]`. Events flow **up** via `EventCallback<T>` (never `Action`/`Func`).
- Never mutate `[Parameter]` properties. Copy to a private field in `OnParametersSet`.
- Use `[Parameter] public T Prop { get; set; }` — never `required` or `init` (causes BL0007).
- Use `[EditorRequired]` for required parameters.
- Handle all states: loading, empty, loaded, error — each with `@if`/`@else`.
- Use `@key` on repeated elements in loops for efficient diffing.
- Use `IReadOnlyList<T>` (not `IEnumerable<T>`) for collection parameters.
## RenderFragment & Generics
View the complete source on GitHubcollect-user-input
When your agent uses it
Build forms, validate data, and react to user input in Blazor. USE FOR adding forms, search boxes, filter panels, inline editing, data-entry UI, file uploads, validation (annotations or custom), handling form submissions, and binding input controls. Covers EditForm, built-in input components, DataAnnotationsValidator, custom validation, SSR form patterns (SupplyParameterFromForm, FormName, AntiforgeryToken, Enhance), and @bind for simple interactive controls. DO NOT USE for project scaffolding (see create-blazor-project) or prerendering issues (see support-prerendering).
What it loads into context
Frontmatter
134 tokensAlways available to the agent
SKILL.md
3,046 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Step 1 — Read the Project's AGENTS.md
- EditForm Setup
- Submit Handlers
- Built-in Input Components
- Validation
- React to Input Changes (Interactive Only)
- SSR-Specific Patterns
- File Upload
- Prevent Double Submission
- Custom Validation CSS
- Don'ts
Files
SKILL.mdcore12,766 bytes
Read SKILL.md
# Collect User Input
## Step 1 — Read the Project's AGENTS.md
Check `AGENTS.md` for **Interactivity Mode** and **Interactivity Scope**. This determines which form patterns apply:
| Mode | Form mechanism |
|------|---------------|
| None (Static SSR) | `EditForm` with `FormName` + `[SupplyParameterFromForm]`. No `@bind`, no `@onchange`. |
| Server | `EditForm` with `@bind-Value`. Full interactivity — real-time validation, dynamic UI. |
| WebAssembly | Same as Server, but validators needing server data must call APIs. |
| Auto | Same as WebAssembly — code must work in both browser and server. |
| Scope | Impact |View the complete source on GitHubconfigure-auth
When your agent uses it
Add authentication and authorization to a Blazor Web App, accounting for the app's render mode. USE WHEN the user needs [Authorize] on pages, AuthorizeView, role or policy-based access, login/logout Identity pages, or AuthenticationStateProvider. Also USE WHEN auth state is null after WebAssembly loads, SignInManager throws in an interactive component, NotAuthorized content never renders in static SSR, or HttpContext.User is null in an interactive component. DO NOT USE for general component authoring (see author-component), for prerendering concerns unrelated to auth (see support-prerendering), or for managing non-auth cascading state (see coordinate-components).
What it loads into context
Frontmatter
157 tokensAlways available to the agent
SKILL.md
1,589 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Step 1 — Read AGENTS.md
- Step 2 — Register auth services in Program.cs
- Step 3 — Wire App.razor for auth and render mode
- Step 4 — Protect pages and components
- Step 5 — Identity pages must stay static SSR
- Step 6 — Auth state in WebAssembly / Auto mode
- Render Mode × Auth Matrix
- Common Mistakes
Files
SKILL.mdcore7,151 bytes
Read SKILL.md
# Configure Auth
## Step 1 — Read AGENTS.md
Read `AGENTS.md` at the workspace root for the project's interactivity mode and scope before making changes.
## Step 2 — Register auth services in Program.cs
```csharp
// Program.cs (server project)
builder.Services.AddCascadingAuthenticationState();
builder.Services.AddAuthorization();
```
View the complete source on GitHubcoordinate-components
When your agent uses it
Share state between components that don't have a direct parent-child parameter relationship, using cascading values, scoped services with change events, or CascadingValueSource via DI. USE WHEN the user needs a CascadingParameter or CascadingValue that works across render mode boundaries, a shopping cart or notification count accessible from multiple pages, a theme or user preference cascaded app-wide, or when components in different parts of the tree must react when shared data changes. Also USE WHEN cascading values aren't reaching interactive children in per-page interactivity mode, or when the user needs to understand scoped vs singleton service lifetime for state on Blazor Server. DO NOT USE for direct parent-child parameter passing or EventCallback (see author-component), for persisting state across prerender-to-interactive transitions (see support-prerendering), or for service abstractions for data fetching in Auto/WebAssembly (see fetch-and-send-data).
What it loads into context
Frontmatter
207 tokensAlways available to the agent
SKILL.md
2,268 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Step 1 — Read AGENTS.md
- Step 2 — Decide the scope
- Workflow (quick reference)
- Step 3 — CascadingValue for subtree state
- Step 4 — CascadingValueSource<T> for app-wide state
- Step 5 — Scoped state service with change events
- Step 6 — Render mode and service lifetime rules
- Don'ts
Files
SKILL.mdcore9,980 bytes
Read SKILL.md
# Coordinate Components
## Step 1 — Read AGENTS.md
Read `AGENTS.md` at the workspace root to learn the project's conventions before making changes.
## Step 2 — Decide the scope
| Need | Mechanism | When to use |
|------|-----------|-------------|
| Subtree (same render mode) | `CascadingValue` component | Theme, layout config within a layout |
| App-wide (all render modes) | `CascadingValueSource<T>` via DI | Current user, feature flags, theme shared globally |
| Mutable shared state within a circuit | Scoped service + `Action` event | Shopping cart, notification count, selected filters |
View the complete source on GitHubcreate-blazor-project
When your agent uses it
Create a new ASP.NET Core web application or web site using Blazor. USE FOR: creating a new Blazor web app, scaffolding a new web project, starting a new web site, choosing render modes (Static SSR, Interactive Server, Interactive WebAssembly, Auto), running dotnet new blazor with the right options, setting up initial project structure. DO NOT USE FOR: adding features to existing projects, changing how an existing app renders, or component authoring (use author-component).
What it loads into context
Frontmatter
121 tokensAlways available to the agent
SKILL.md
2,805 tokensWhen the skill is activated
Reference documents
3,551 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Before You Start — Gather Requirements
- Pick the Right Interactivity Level
- Scaffold the Project
- What the Template Creates
- Program.cs Wiring
- Create Project AGENTS.md
- App.razor — Global vs Per-Page
- After Scaffolding
- Don'ts
Files
SKILL.mdcore12,153 bytesassets/agents-md/auto-global.mddoc2,866 bytesassets/agents-md/auto-per-page.mddoc3,000 bytesassets/agents-md/server-global.mddoc1,497 bytesassets/agents-md/server-per-page.mddoc1,814 bytesassets/agents-md/ssr-none.mddoc1,696 bytesassets/agents-md/webassembly-global.mddoc2,552 bytesassets/agents-md/webassembly-per-page.mddoc2,702 bytes
Read SKILL.md
# Create a Blazor Web App
## Before You Start — Gather Requirements
If the user's request doesn't make the following clear, ask before scaffolding:
1. **What does the app do?** List the main screens/features (e.g., "product catalog with search and shopping cart").
2. **What kind of interactivity is needed?** Displaying data and forms? Real-time updates? Offline support? Rich drag-and-drop UI?
3. **Deployment environment?** Internet-facing? Intranet? Mobile users on slow connections?
4. **Authentication needed?** Anonymous? Individual accounts? Organizational (Azure AD)?
## Pick the Right Interactivity Level
Blazor render modes are a progression scale. Start at the simplest level that satisfies the requirements and only move up when there's a concrete reason.View the complete source on GitHubfetch-and-send-data
When your agent uses it
Call APIs, load data into components, and handle the async lifecycle in Blazor. USE FOR fetching data from a backend, submitting data to an API, displaying loading/error states, registering HttpClient, building service abstractions for Auto/WebAssembly render modes. DO NOT USE for form validation (see collect-user-input), prerendering persistence (see support-prerendering), or project scaffolding (see create-blazor-project).
What it loads into context
Frontmatter
99 tokensAlways available to the agent
SKILL.md
2,249 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Step 1 — Read AGENTS.md
- Step 2 — Register HttpClient
- Step 3 — Fetch Data
- Step 4 — Handle Errors
- Step 5 — Parameter-Driven Reloading
- Step 6 — Send Data
- Step 7 — Service Abstraction for Auto or WebAssembly with Prerendering
- Don'ts
Files
SKILL.mdcore10,144 bytes
Read SKILL.md
# Fetch and Send Data
## Step 1 — Read AGENTS.md
Check **Interactivity Mode** and **Scope**:
| Mode | Data access |
|------|-------------|
| None (Static SSR) | Server-side: inject services/`DbContext`. Use `[StreamRendering]` for loading UX. |
| Server | Server-side: inject services/`DbContext`. Guard prerender with `??=` + `[PersistentState]`. |
| WebAssembly | Browser-side: `HttpClient` only. No direct server access. |
| Auto | Both server and browser. Always go through an API. |
## Step 2 — Register HttpClientView the complete source on GitHubplan-ui-change
When your agent uses it
Plan complex Blazor UI features by decomposing them into focused components. USE FOR: building a complex Blazor page with multiple sections, planning component decomposition, designing a multi-section dashboard or layout, breaking down a large UI feature into composable components, pages with sidebars and content panels, any page with 3+ distinct visual sections or multiple interacting sub-features, identifying parent-child relationships and data flow. DO NOT USE FOR: creating new Blazor projects or apps from scratch (use create-blazor-project), implementing a single individual component (use author-component), writing component code with parameters and EventCallback (use author-component), or simple single-component pages.
What it loads into context
Frontmatter
163 tokensAlways available to the agent
SKILL.md
1,690 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Planning Workflow
- Output Format
- Anti-Patterns to Avoid
- Guidelines
Files
SKILL.mdcore7,899 bytes
Read SKILL.md
# Plan a Blazor UI Change
When asked to build a complex UI feature, **plan the component decomposition first, then immediately implement it**. A single monolithic page component is almost never the right answer — break the UI into focused, composable components.
## Planning Workflow
### Step 1 — Map the Visual Regions
Read the request and identify every distinct visual region. Each region that has its own data, behavior, or layout responsibility is a candidate component.
Draw the component tree:
```
InventoryDashboard (page — owns data, orchestrates layout)View the complete source on GitHubsupport-prerendering
When your agent uses it
Make interactive Blazor components work correctly with prerendering. USE FOR fixing duplicate data loads, UI flicker during prerender-to-interactive handoff, null references during prerender, persisting state across prerender, disabling prerendering, excluding pages from interactive routing, or detecting whether a component is currently prerendering. DO NOT USE for choosing which render mode to use (see create-blazor-project) or general component authoring (see author-component).
What it loads into context
Frontmatter
107 tokensAlways available to the agent
SKILL.md
1,650 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- How Prerendering Works
- Step 1 — Read the Project's AGENTS.md
- Persist State Across Prerender → Interactive
- Disable Prerendering
- Exclude Pages from Interactive Routing
- Detect Prerender vs Interactive at Runtime
- Client Services Fail During Prerender
- Don'ts
Files
SKILL.mdcore7,342 bytes
Read SKILL.md
# Support Prerendering
## How Prerendering Works
Prerendering is **on by default** for all interactive render modes. The server renders the component as static HTML and ships it to the browser immediately. Then the interactive runtime (Server/WebAssembly) loads and re-renders the component with full interactivity.
This means:
- `OnInitializedAsync` runs **twice** — once during prerender (static), once when the interactive runtime attaches.
- `OnAfterRenderAsync` is **NOT** called during prerender — only after the interactive render.
- Internal navigation between interactive pages (interactive routing) **skips prerendering** — prerendering only happens on full page loads.
## Step 1 — Read the Project's AGENTS.md
Check the project's `AGENTS.md` for the **Interactivity Mode** and **Interactivity Scope**:View the complete source on GitHubuse-igniteui-blazor
When your agent uses it
Add, configure, or review Ignite UI for Blazor Lite component support in Blazor applications. USE FOR: installing IgniteUI.Blazor.Lite or IgniteUI.Blazor.GridLite, registering AddIgniteUIBlazor() in Blazor Server, WASM, Hybrid, or split Blazor Web App projects, adding @using IgniteUI.Blazor.Controls, wiring the theme stylesheet, picking the right host page, locating the GridLite stylesheet path, explaining single-project vs split Server/Client Web App setup differences, and checking where an interactive render mode is needed for Ignite UI components to work. DO NOT USE FOR: general Blazor component authoring without Ignite UI, choosing app architecture or render mode from scratch (see create-blazor-project), JavaScript interop (see use-js-interop), authentication (see configure-auth), prerendering (see support-prerendering), or layout/component design questions that need no Ignite UI setup.
What it loads into context
Frontmatter
225 tokensAlways available to the agent
SKILL.md
1,329 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 1. NuGet package
- 2. `IgniteUI.Blazor.Lite` Service Registration
- 3. `_Imports.razor`
- 4. Host page — theme stylesheet
- 5. Render mode (Blazor Web App only)
Files
SKILL.mdcore5,648 bytesSKILL.mdcore5,648 bytesSKILL.mdcore5,648 bytes
Read SKILL.md
# Application Setup & Component Registration
## 1. NuGet package
Before adding packages, inspect the target projects' target framework and existing package references. The lowest supported target framework version is .NET 8.0. If `IgniteUI.Blazor` or `IgniteUI.Blazor.Trial` is already referenced, keep that package strategy and do not add Lite or GridLite. Only switch package families when the user explicitly asks, replacing conflicting references rather than keeping both.
```bash
dotnet add package IgniteUI.Blazor.Lite # OSS core UI components (MIT)
dotnet add package IgniteUI.Blazor.GridLite # OSS lightweight grid (MIT)
```
Use `IgniteUI.Blazor.Lite` for core controls such as `IgbInput`, `IgbCombo` and `IgbDialog`, and `IgniteUI.Blazor.GridLite` for the lightweight grid. Reference both packages only when the app needs both. Do not invent per-component packages such as `IgniteUI.Blazor.Combo`.
Charts, maps, gauges and other premium components are not included in Lite. Check the requested component's package before recommending a reference.View the complete source on GitHubuse-js-interop
When your agent uses it
Add, review, or fix JavaScript interop in Blazor components. USE FOR: calling JavaScript from Blazor, calling .NET from JavaScript, collocated .razor.js modules, IJSRuntime, IJSObjectReference lifecycle, DotNetObjectReference, ElementReference, timing rules for when JS is available, IAsyncDisposable disposal of JS references, server-side JS interop safety. DO NOT USE FOR: general Blazor component authoring without JS interop needs (use author-component), forms (use collect-user-input).
What it loads into context
Frontmatter
131 tokensAlways available to the agent
SKILL.md
2,599 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 1. Collocated JS Modules
- 2. Lifecycle Timing
- 3. Batch Related Operations
- 4. Typed Interop Wrapper
- 5. DotNetObjectReference for JS-to-.NET Callbacks
- 6. Disposal and Server Safety
- 7. ElementReference
- Checklist
- Common Mistakes Checklist
Files
SKILL.mdcore10,989 bytes
Read SKILL.md
# JS Interop in Blazor
## 1. Collocated JS Modules
Always use collocated `.razor.js` files with `export` — never global `window.*` functions or `<script>` tags.
```javascript
// ChartPanel.razor.js — placed next to ChartPanel.razor
export function initialize(canvas, dotNetRef) { /* ... */ }
export function updateData(points) { /* ... */ }
export function dispose() { /* ... */ }
```
Import paths: same project = `"./Components/ChartPanel.razor.js"`, RCL = `"./_content/{AssemblyName}/..."`.View the complete source on GitHubcreate-datadriven-aspnetcore
When your agent uses it
Generate or scaffold ASP.NET Core code — Razor Pages, Blazor components, MVC controllers, views, and Minimal API endpoints — without using ASP.NET Core CLI scaffolding/code-generation tools. Use when (1) adding CRUD pages, views, or API endpoints backed by Entity Framework (EF Core) and a database, (2) generating code to create, read, update, and delete data using a DbContext, (3) scaffolding UI components that match the project's existing CSS framework and coding patterns, or (4) creating data-driven forms, tables, and navigation for a model class. Do not use for non-ASP.NET projects or when CLI-based scaffolding is preferred.
What it loads into context
Frontmatter
151 tokensAlways available to the agent
SKILL.md
2,772 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to Use
- When Not to Use
- Inputs
- Workflow
- Validation
- Common Pitfalls
- References
Files
SKILL.mdcore12,725 bytes
Read SKILL.md
# Generate or Scaffold ASP.NET Core Code
Generate ASP.NET Core scaffolded code — controllers, views, Razor Pages, Blazor components, Minimal API endpoints. The generated code matches the project's existing CSS framework, layout conventions, and coding patterns. No CLI-based scaffolding/code-generation tools are used; standard `dotnet` CLI commands for build, restore, and migrations are still expected.
## When to Use
- Adding CRUD pages, views, or components for a model in an ASP.NET Core project
- Scaffolding API controllers or Minimal API endpoints with Entity Framework Core
- Generating Razor Pages, MVC views, or Blazor components backed by a DbContext
## When Not to Use
- The project is not an ASP.NET Core project
- You need to scaffold non-web artifacts (class libraries, console apps, etc.)View the complete source on GitHuboptimizing-ef-core-queries
When your agent uses it
Review and optimize application data access that uses Entity Framework Core (EF Core). Use for EF Core performance and correctness reviews of services, repositories, imports, and background jobs: slow or memory-heavy queries, excessive round-trips, hidden SaveChanges, premature materialization, dynamic query construction, result-graph tracking, bulk writes, DbContext lifetime or overlapping operations, search semantics, paging, raw SQL, and model/index coverage. Use whether or not EF Core owns the schema. For EF Core, not Dapper or raw ADO.NET.
What it loads into context
Frontmatter
123 tokensAlways available to the agent
SKILL.md
4,928 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to Use
- When Not to Use
- Source review workflow
- Gate source-only findings on evidence
- Capture SQL and query counts
- Fixes
- Common Pitfalls
- References
Files
SKILL.mdcore24,565 bytesSKILL.mdcore24,565 bytesSKILL.mdcore24,565 bytesSKILL.mdcore24,565 bytes
Read SKILL.md
# Optimizing EF Core Queries
Diagnose and fix slow or incorrect application data access built on EF Core. In a source-only review, trace the code without executing it and separate proven code behavior from runtime assumptions. When SQL, logs, or plans are available, use them to confirm the bottleneck. Prefer changes that reduce round-trips, duplicated rows, scans, or per-call translation cost over micro-optimizations.
## When to Use
- EF Core queries are slow or emit far more SQL statements than expected
- The same query repeats once per row (N+1 / lazy loading)
- Multiple collection `Include`s blow up or duplicate rows
- Deep pages slow down as `Skip` grows, or bulk updates load rows just to modify them
- A filtered/sorted query scans **even though the column is indexed**, or a filtered/sorted column has no supporting index
- A hot, frequently-executed query pays EF Core's LINQ-translation cost on every call
## When Not to UseView the complete source on GitHubanalyzing-dotnet-performance
When your agent uses it
Scans .NET code for ~50 performance anti-patterns across async, memory, strings, collections, LINQ, regex, serialization, and I/O with tiered severity classification. Use when analyzing .NET code for optimization opportunities, reviewing hot paths, or auditing allocation-heavy patterns.
What it loads into context
Frontmatter
77 tokensAlways available to the agent
SKILL.md
2,824 tokensWhen the skill is activated
Reference documents
8,515 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to Use
- When Not to Use
- Inputs
- Workflow
- Validation
- Common Pitfalls
Files
SKILL.mdcore12,673 bytesreferences/async-patterns.mddoc2,976 bytesreferences/collections-and-linq.mddoc7,744 bytesreferences/critical-patterns.mddoc6,787 bytesreferences/io-and-serialization.mddoc3,676 bytesreferences/memory-and-strings.mddoc5,857 bytesreferences/regex-patterns.mddoc3,324 bytesreferences/structural-patterns.mddoc1,683 bytes
Read SKILL.md
# .NET Performance Patterns
Scan C#/.NET code for performance anti-patterns and produce prioritized findings with concrete fixes. Patterns sourced from the official .NET performance blog series, distilled to customer-actionable guidance.
## When to Use
- Reviewing C#/.NET code for performance optimization opportunities
- Auditing hot paths for allocation-heavy or inefficient patterns
- Systematic scan of a codebase for known anti-patterns before release
- Second-opinion analysis after manual performance review
## When Not to Use
- **Algorithmic complexity analysis** — this skill targets API usage patterns, not algorithm designView the complete source on GitHubandroid-tombstone-symbolication
When your agent uses it
Symbolicate the .NET runtime frames in an Android tombstone file. Extracts BuildIds and PC offsets from the native backtrace, downloads debug symbols from the Microsoft symbol server, and runs llvm-symbolizer to produce function names with source file and line numbers. USE FOR triaging a .NET MAUI or Mono Android app crash from a tombstone, resolving native backtrace frames in libmonosgen-2.0.so or libcoreclr.so to .NET runtime source code, or investigating SIGABRT, SIGSEGV, or other native signals originating from the .NET runtime on Android. DO NOT USE FOR pure Java/Kotlin crashes, managed .NET exceptions that are already captured in logcat, or iOS crash logs. INVOKES Symbolicate-Tombstone.ps1 script, llvm-symbolizer, Microsoft symbol server.
What it loads into context
Frontmatter
183 tokensAlways available to the agent
SKILL.md
2,134 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Workflow
- Finding llvm-symbolizer
- Understanding the Output
- Validation
- Stop Signals
- Common Pitfalls
Scripts executed separately
scripts/Symbolicate-Tombstone.ps1
Files
SKILL.mdcore8,220 bytesSKILL.mdcore8,220 bytesSKILL.mdcore8,220 bytesSKILL.mdcore8,220 bytesSKILL.mdcore8,220 bytesSKILL.mdcore8,220 bytesSKILL.mdcore8,220 bytesSKILL.mdcore8,220 bytesSKILL.mdcore8,220 bytesSKILL.mdcore8,220 bytesSKILL.mdcore8,220 bytesscripts/Symbolicate-Tombstone.ps1runs30,165 bytes
Read SKILL.md
# Android Tombstone .NET Symbolication
Resolves native backtrace frames from .NET Android app crashes (MAUI, Xamarin, Mono) to function names, source files, and line numbers using ELF BuildIds and Microsoft's symbol server.
**Inputs:** Tombstone file or logcat crash output, `llvm-symbolizer` (from Android NDK or any LLVM 14+ toolchain), internet access for symbol downloads.
**Do not use when:** The crash is a managed .NET exception (visible in logcat with a managed stack trace), the crashing library is not a .NET component (e.g., `libart.so`), or the tombstone is from iOS.
---
## Workflow
### Step 1: Parse the Tombstone Backtrace
View the complete source on GitHubapple-crash-symbolication
When your agent uses it
Symbolicate .NET runtime frames in Apple platform .ips crash logs (iOS, tvOS, Mac Catalyst, macOS). Extracts UUIDs and addresses from the native backtrace, locates dSYM debug symbols, and runs atos to produce function names with source file and line numbers. Automatically downloads .dwarf symbols from the Microsoft symbol server using Mach-O UUIDs. USE FOR triaging a .NET MAUI or Mono app crash from an .ips file on any Apple platform, resolving native backtrace frames in libcoreclr or libmonosgen-2.0 to .NET runtime source code, retrieving .ips crash logs from a connected iOS device or iPhone, or investigating EXC_CRASH, EXC_BAD_ACCESS, SIGABRT, or SIGSEGV originating from the .NET runtime. DO NOT USE FOR pure Swift/Objective-C crashes with no .NET components, or Android tombstone files. INVOKES Symbolicate-Crash.ps1 script, atos, dwarfdump, idevicecrashreport.
What it loads into context
Frontmatter
224 tokensAlways available to the agent
SKILL.md
2,494 tokensWhen the skill is activated
Reference documents
457 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Workflow
- Retrieving Crash Logs
- Validation
- Stop Signals
- References
Scripts executed separately
scripts/Symbolicate-Crash.ps1
Files
SKILL.mdcore9,692 bytesSKILL.mdcore9,692 bytesSKILL.mdcore9,692 bytesSKILL.mdcore9,692 bytesSKILL.mdcore9,692 bytesSKILL.mdcore9,692 bytesSKILL.mdcore9,692 bytesSKILL.mdcore9,692 bytesSKILL.mdcore9,692 bytesSKILL.mdcore9,692 bytesSKILL.mdcore9,692 bytesreferences/ips-crash-format.mddoc1,704 bytesscripts/Symbolicate-Crash.ps1runs40,545 bytes
Read SKILL.md
# Apple Platform Crash Log .NET Symbolication
Resolves native backtrace frames from .NET MAUI and Mono app crashes on Apple platforms (iOS, tvOS, Mac Catalyst, macOS) to function names, source files, and line numbers using Mach-O UUIDs and dSYM debug symbol bundles.
**Inputs:** Crash log file (`.ips` JSON format, iOS 15+ / macOS 12+), `atos` (from Xcode), optionally a connected iOS device to pull crash logs from.
**Do not use when:** The crashing library is not a .NET component (e.g., pure Swift/UIKit), or the crash log is an Android tombstone.
---
## Workflow
### Step 1: Parse the .ips Crash Log
View the complete source on GitHubclr-activation-debugging
When your agent uses it
Diagnoses .NET Framework CLR activation issues using CLR activation logs (CLRLoad logs) produced by mscoree.dll. Use when: the shim picks the wrong runtime, fails to load any runtime, shows unexpected .NET 3.5 Feature-on-Demand (FOD) dialogs, unexpectedly does NOT show FOD dialogs, loads both v2 and v4 into the same process causing failures, or any time someone is wondering "what is happening with .NET Framework activation?"
What it loads into context
Frontmatter
122 tokensAlways available to the agent
SKILL.md
5,063 tokensWhen the skill is activated
Reference documents
8,958 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to Use
- When Not to Use
- Background
- Prerequisites
- Inputs
- Workflow
- Common Scenarios
- Common Pitfalls
- Validation
Files
SKILL.mdcore20,858 bytesSKILL.mdcore20,858 bytesSKILL.mdcore20,858 bytesreferences/activation-flow.mddoc14,038 bytesreferences/com-activation.mddoc8,084 bytesreferences/log-format.mddoc11,435 bytes
Read SKILL.md
# CLR Activation Debugging
Diagnose .NET Framework runtime activation issues by analyzing CLR activation logs (CLRLoad logs) produced by the shim (mscoree.dll). These logs record every decision the shim makes when selecting and loading a CLR version.
## When to Use
- A process fails to load the CLR at all ("Unable to find a version of the runtime to use")
- The shim picks the wrong CLR version (e.g., v2.0 instead of v4.0)
- Unexpected .NET 3.5 Feature-on-Demand (FOD) install dialogs appear
- FOD dialogs are expected but do NOT appear
- Both CLR v2 and CLR v4 load into the same process, causing failures
- A COM object fails to activate because the shim can't resolve the runtime
- Legacy hosting APIs (CorBindToRuntime) bind to an unexpected version
View the complete source on GitHubdotnet-trace-collect
When your agent uses it
Guide developers through capturing diagnostic artifacts to diagnose production .NET performance issues. Use when the user needs help choosing diagnostic tools, collecting performance data, or understanding tool trade-offs across different environments (Windows/Linux, .NET Framework/modern .NET, container/non-container).
What it loads into context
Frontmatter
66 tokensAlways available to the agent
SKILL.md
5,573 tokensWhen the skill is activated
Reference documents
5,262 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to Use
- When Not to Use
- Inputs
- Workflow
- Validation
- Common Pitfalls
Files
SKILL.mdcore24,664 bytesSKILL.mdcore24,664 bytesreferences/dotnet-monitor.mddoc3,576 bytesreferences/dotnet-trace-collect-linux.mddoc3,340 bytesreferences/dotnet-trace-collect.mddoc2,664 bytesreferences/perfcollect.mddoc4,372 bytesreferences/perfview.mddoc7,568 bytes
Read SKILL.md
# .NET Trace Collect
This skill helps developers diagnose production performance issues by recommending the right diagnostic tools for their environment, guiding data collection, and suggesting analysis approaches. It does not analyze code for anti-patterns or perform the analysis itself.
## When to Use
- A developer needs to investigate a production performance issue (high CPU, memory leak, slow requests, excessive GC, networking errors, etc.)
- Choosing the right diagnostic tool for a specific runtime, OS, or deployment topology
- Setting up and running diagnostic tool commands for data collection
- Understanding trade-offs between available tools (e.g. PerfView vs dotnet-trace)
- Collecting diagnostics from containerized or Kubernetes workloads
## When Not to Use
View the complete source on GitHubdump-collect
When your agent uses it
Configure and collect crash dumps for modern .NET applications. USE FOR: enabling automatic crash dumps for CoreCLR or NativeAOT, capturing dumps from running .NET processes, setting up dump collection in Docker or Kubernetes, using dotnet-dump collect or createdump. DO NOT USE FOR: analyzing or debugging dumps, post-mortem investigation with lldb/windbg/dotnet-dump analyze, profiling or tracing, or for .NET Framework processes.
What it loads into context
Frontmatter
104 tokensAlways available to the agent
SKILL.md
1,076 tokensWhen the skill is activated
Reference documents
6,500 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Stop Signals
- Step 1 — Identify the Scenario
- Step 2 — Load the Appropriate Reference
- Step 3 — Execute
Files
SKILL.mdcore4,310 bytesSKILL.mdcore4,310 bytesSKILL.mdcore4,310 bytesSKILL.mdcore4,310 bytesSKILL.mdcore4,310 bytesSKILL.mdcore4,310 bytesreferences/container-dumps.mddoc11,485 bytesreferences/coreclr-dumps.mddoc2,971 bytesreferences/nativeaot-dumps.mddoc8,775 bytes
Read SKILL.md
# .NET Crash Dump Collection
This skill configures and collects crash dumps for modern .NET applications (CoreCLR and NativeAOT) on Linux, macOS, and Windows — including containers.
## Stop Signals
🚨 **Read before starting any workflow.**
- **Stop after dumps are enabled or collected.** Do not open, analyze, or triage dump files.
- **If the user already has a dump file**, this skill does not cover analysis. Let them know analysis is out of scope.
- **Do not install analysis tools** (dotnet-dump analyze, windbg). Only install collection tools (dotnet-dump collect). Using `lldb` for on-demand dump capture on macOS is allowed — it ships with Xcode command-line tools and is not being used for analysis.
- **Do not trace root cause** of crashes. Report the dump file location and move on.
- **Do not modify application code.** Configuration is environment-only (env vars, OS settings, container specs).
View the complete source on GitHubmicrobenchmarking
When your agent uses it
Activate this skill when BenchmarkDotNet (BDN) is involved in the task — creating, running, configuring, or reviewing BDN benchmarks. Also activate when microbenchmarking .NET code would be useful and BenchmarkDotNet is the likely tool. Consider activating when answering a .NET performance question requires measurement and BenchmarkDotNet may be needed. Covers microbenchmark design, BDN configuration and project setup, how to run BDN microbenchmarks efficiently and effectively, and using BDN for side-by-side performance comparisons. Do NOT use for profiling/tracing .NET code (dotnet-trace, PerfView), production telemetry, or load/stress testing (Crank, k6).
What it loads into context
Frontmatter
166 tokensAlways available to the agent
SKILL.md
2,695 tokensWhen the skill is activated
Reference documents
10,865 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Key concepts
- Benchmarks are comparative instruments
- Use cases and benchmark lifecycle
- Cost awareness
- Entry points and configuration
- Running benchmarks
- Writing new benchmarks
Files
SKILL.mdcore13,264 bytesSKILL.mdcore13,264 bytesreferences/bdn-internals-and-tuning.mddoc9,639 bytesreferences/comparison-strategies.mddoc8,702 bytesreferences/diagnosers-and-exporters.mddoc6,548 bytesreferences/project-setup-and-running.mddoc9,441 bytesreferences/writing-benchmarks.mddoc12,292 bytes
Read SKILL.md
# Benchmark Authoring Guidelines
BenchmarkDotNet (BDN) is a .NET library for writing and running microbenchmarks. Throughout this skill, "BDN" refers to BenchmarkDotNet.
> **Note:** Evaluations of LLMs writing BenchmarkDotNet benchmarks have revealed common failure patterns caused by outdated assumptions about BDN's behavior — particularly around runtime comparison, job configuration, and execution defaults that have changed in recent versions. The reference files in this skill contain verified, current information. **You MUST read the reference files relevant to the task before writing any code** — your training data likely contains outdated or incorrect BDN patterns.
## Key concepts
- **Job** — describes how to run a benchmark: runtime, iteration counts, launch count, run strategy, and environment settings. Multiple jobs can be configured to run the same benchmarks under different conditions.
- **Benchmark case** — one method × one parameter combination × one job. The atomic unit BDN measures.
- **Operation** — the logical unit of work being measured. All BDN output columns (Mean, Error, etc.) report time per operation.
- **Invocation** — a single call to the benchmark method. By default, 1 invocation = 1 operation. With `OperationsPerInvoke=N`, each invocation counts as N operations.
- **Iteration** — a timed batch of invocations. BDN measures the total time for all invocations in an iteration, then divides by the total operation count to get per-operation time.
View the complete source on GitHubexp-mock-usage-analysis
When your agent uses it
Audits .NET test mock usage by tracing each mock setup through the production code's execution path to find dead, unreachable, redundant, or replaceable mocks. Use when the user asks to audit mock usage, find unused or unnecessary mock setups, check if mocks are needed, reduce mock duplication or over-mocking, simplify test setup, or review whether mock configurations like ILogger/IOptions should use real implementations instead. Supports Moq, NSubstitute, and FakeItEasy.
What it loads into context
Frontmatter
110 tokensAlways available to the agent
SKILL.md
1,275 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to Use
- When Not to Use
- Inputs
- Workflow
- Validation
- Common Pitfalls
Files
SKILL.mdcore5,872 bytes
Read SKILL.md
# Mock Usage Analysis
Trace each mock setup through the production code's execution path to determine which setups are actually exercised at runtime and which are dead, unreachable, redundant, or replaceable with real implementations.
## When to Use
- User asks to audit, review, or analyze mock usage in .NET tests
- User wants to find unused, unnecessary, or redundant mock setups
- User wants to simplify test setup or reduce over-mocking
- User asks whether mocks of ILogger, IOptions, or similar types are needed
## When Not to Use
- User wants to write new mocks or tests (general testing guidance)View the complete source on GitHubexp-test-maintainability
When your agent uses it
Detects duplicate boilerplate, copy-paste tests, and structural maintainability issues across .NET test suites. Use when the user asks to reduce repetition, consolidate similar test methods, convert copy-paste tests to data-driven parameterized tests, suggest a better test structure, or identify refactoring opportunities. Identifies repeated construction, assertion patterns, copy-paste methods convertible to DataRow/Theory/TestCase, redundant setup/teardown, and shared infrastructure. Produces an analysis report with concrete before/after suggestions. Works with MSTest, xUnit, NUnit, and TUnit. DO NOT USE FOR: writing new tests (use writing-mstest-tests), reviewing test quality or anti-patterns (use test-anti-patterns), or deep mock auditing (use exp-mock-usage-analysis).
What it loads into context
Frontmatter
175 tokensAlways available to the agent
SKILL.md
2,191 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to Use
- When Not to Use
- Inputs
- Workflow
- Validation
- Common Pitfalls
Files
SKILL.mdcore9,863 bytes
Read SKILL.md
# Test Maintainability Assessment
Analyze .NET test code for maintainability issues: duplicated boilerplate, copy-paste test methods, and structural repetition across test methods and classes. Produce a report of refactoring opportunities with concrete before/after suggestions. The goal is analysis only — do not modify any files.
## When to Use
- User asks to find duplicated code or boilerplate in tests
- User wants to know where test code can be DRY-ed up
- User asks to reduce test duplication, improve test readability, or clean up test boilerplate
- User asks for refactoring opportunities in a test suite
- User wants to identify shared setup or teardown candidates
- User asks "what patterns repeat across my tests?"
- User wants to centralize test data, introduce builders or helpers
View the complete source on GitHubdotnet-maui-doctor
When your agent uses it
Diagnoses and fixes .NET MAUI development environment issues. Validates .NET SDK, workloads, Java JDK, Android SDK, Xcode, and Windows SDK. All version requirements discovered dynamically from NuGet WorkloadDependencies.json — never hardcoded. Use when: setting up MAUI development, build errors mentioning SDK/workload/JDK/Android, "Android SDK not found", "Java version" errors, "Xcode not found", environment verification after updates, or any MAUI toolchain issues. Do not use for: non-MAUI .NET projects, Xamarin.Forms apps, runtime app crashes unrelated to environment setup, or app store publishing issues. Works on macOS, Windows, and Linux.
What it loads into context
Frontmatter
170 tokensAlways available to the agent
SKILL.md
2,303 tokensWhen the skill is activated
Reference documents
9,053 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to Use
- When Not to Use
- Important: .NET Version Currency
- Inputs
- Behavior
- Workflow
- Validation
- Common Pitfalls
- References
Files
SKILL.mdcore9,574 bytesSKILL.mdcore9,574 bytesSKILL.mdcore9,574 bytesSKILL.mdcore9,574 bytesSKILL.mdcore9,574 bytesSKILL.mdcore9,574 bytesreferences/installation-commands-macos.mddoc1,794 bytesreferences/installation-commands-windows.mddoc322 bytesreferences/installation-commands.mddoc5,690 bytesreferences/microsoft-openjdk.mddoc3,412 bytesreferences/platform-requirements-linux.mddoc1,283 bytesreferences/platform-requirements-macos.mddoc1,347 bytesreferences/platform-requirements-windows.mddoc1,258 bytesreferences/troubleshooting-macos.mddoc1,513 bytesreferences/troubleshooting-windows.mddoc820 bytesreferences/troubleshooting.mddoc8,518 bytesreferences/workload-dependencies-discovery.mddoc8,746 bytes
Read SKILL.md
# .NET MAUI Doctor
Validate and fix .NET MAUI development environments. All version requirements are discovered dynamically from NuGet APIs — never hardcode versions.
## When to Use
- Setting up a new .NET MAUI development environment
- Build errors mentioning missing SDKs, workloads, JDK, or Android components
- Errors like "Android SDK not found", "Java version", or "Xcode not found"
- Verifying environment health after SDK or OS updates
## When Not to Use
- Non-MAUI .NET projects (use standard .NET SDK troubleshooting instead)View the complete source on GitHubmaui-app-lifecycle
When your agent uses it
.NET MAUI app lifecycle guidance — the four app states, cross-platform Window lifecycle events (Created, Activated, Deactivated, Stopped, Resumed, Destroying), platform-specific lifecycle mapping, backgrounding and resume behavior, and state-preservation patterns. USE FOR: "app lifecycle", "window lifecycle events", "save state on background", "resume app", "OnStopped", "OnResumed", "backgrounding", "deactivated event", "ConfigureLifecycleEvents", "platform lifecycle hooks". DO NOT USE FOR: navigation events (use maui-shell-navigation), dependency injection setup (use maui-dependency-injection), platform API invocation (use conditional compilation and partial classes).
What it loads into context
Frontmatter
166 tokensAlways available to the agent
SKILL.md
2,142 tokensWhen the skill is activated
Reference documents
1,380 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to Use
- When Not to Use
- Inputs
- App States
- Window Lifecycle Events
- Workflow: Save and Restore State on Background
- Platform Lifecycle Mapping
- Hooking Native Lifecycle Directly
- Common Pitfalls
Files
SKILL.mdcore9,241 bytesreferences/lifecycle-api.mddoc5,673 bytes
Read SKILL.md
# .NET MAUI App Lifecycle
Handle application state transitions correctly in .NET MAUI. This skill covers the cross-platform Window lifecycle events, their platform-native mappings, and patterns for preserving state across backgrounding and resume cycles.
## When to Use
- Saving or restoring state when the app backgrounds or resumes
- Subscribing to Window lifecycle events (Created, Activated, Deactivated, Stopped, Resumed, Destroying)
- Hooking into platform-native lifecycle callbacks via `ConfigureLifecycleEvents`
- Deciding where to place initialization, teardown, or refresh logic
- Understanding the difference between Deactivated and Stopped
## When Not to Use
View the complete source on GitHubmaui-collectionview
When your agent uses it
Guidance for implementing CollectionView in .NET MAUI apps — data display, layouts (list & grid), selection, grouping, scrolling, empty views, templates, incremental loading, swipe actions, and pull-to-refresh. USE FOR: "CollectionView", "list view", "grid layout", "data template", "item template", "grouping", "pull to refresh", "incremental loading", "swipe actions", "empty view", "selection mode", "scroll to item", displaying scrollable data, replacing ListView. DO NOT USE FOR: simple static layouts without scrollable data (use Grid or StackLayout), map pin lists (use Microsoft.Maui.Controls.Maps), table-based data entry forms, non-MAUI list controls, CarouselView or BindableLayout questions, platform-specific handler or renderer customization, diagnosing CollectionView bugs in the MAUI framework itself, or general MVVM/binding questions that merely happen to mention a list (use maui-data-binding).
What it loads into context
Frontmatter
230 tokensAlways available to the agent
SKILL.md
4,585 tokensWhen the skill is activated
Reference documents
1,606 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to Use
- When Not to Use
- Scope Control — Answer Only What Was Asked
- Inputs
- Basic Setup
- Layouts
- Selection
- Grouping
- Pull-to-Refresh
- Incremental Loading (Infinite Scroll)
- SwipeView — Binding from Inside DataTemplate
- EmptyView
- Headers and Footers
- Scrolling
- Migrating from ListView
- Performance Tips
- Common Pitfalls
- Validation
- References
Files
SKILL.mdcore20,230 bytesreferences/collectionview-api.mddoc7,365 bytes
Read SKILL.md
# CollectionView — .NET MAUI
`CollectionView` is the primary control for displaying scrollable lists and grids of data in .NET MAUI. It replaces `ListView` with better performance, flexible layouts, and no `ViewCell` requirement.
## When to Use
- Displaying a scrollable list or grid of data items
- Binding a collection of objects to a templated item layout
- Adding selection (single or multiple), grouping, or pull-to-refresh
- Implementing infinite scroll / incremental loading
- Showing swipe actions on list items
- Displaying an empty state when no data is available
## When Not to UseView the complete source on GitHubmaui-data-binding
When your agent uses it
Guidance for .NET MAUI XAML and C# data bindings — compiled bindings, INotifyPropertyChanged / ObservableObject, value converters, binding modes, multi-binding, relative bindings, fallbacks, and MVVM best practices. USE FOR: setting up compiled bindings with x:DataType, implementing INotifyPropertyChanged or CommunityToolkit ObservableObject, creating IValueConverter / IMultiValueConverter, choosing binding modes, configuring BindingContext, relative bindings, binding fallbacks, StringFormat, code-behind SetBinding with lambdas, and enforcing XC0022/XC0025 warnings. DO NOT USE FOR: CollectionView item templates and layouts (use maui-collectionview), Shell navigation data passing (use maui-shell-navigation), dependency injection (use maui-dependency-injection), or animations triggered by property changes (use .NET MAUI animation APIs).
What it loads into context
Frontmatter
205 tokensAlways available to the agent
SKILL.md
3,556 tokensWhen the skill is activated
Reference documents
976 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to Use
- When Not to Use
- Inputs
- Rules That Change the Answer
- Compiled Bindings — x:DataType Placement
- Binding Modes
- BindingContext and Property Paths
- INotifyPropertyChanged and ObservableObject
- Value Converters — IValueConverter
- Multi-Binding
- Relative Bindings
- StringFormat
- Binding Fallbacks
- .NET 9+ Code Bindings (AOT-safe)
- Threading
- Common Pitfalls
- References
Files
SKILL.mdcore14,850 bytesSKILL.mdcore14,850 bytesSKILL.mdcore14,850 bytesSKILL.mdcore14,850 bytesreferences/data-binding-api.mddoc4,130 bytes
Read SKILL.md
# .NET MAUI Data Binding
Wire UI controls to ViewModel properties with compile-time safety, correct
change notification, and minimal overhead. Prefer compiled bindings everywhere
and treat binding warnings as build errors.
## When to Use
- Adding `x:DataType` compiled bindings to a new or existing page
- Implementing `INotifyPropertyChanged` or CommunityToolkit `ObservableObject`
- Creating or consuming `IValueConverter` / `IMultiValueConverter`
- Choosing the correct `BindingMode` for a control property
- Setting `BindingContext` in XAML or code-behind
- Using relative bindings (`Self`, `AncestorType`, `TemplatedParent`)View the complete source on GitHubmaui-dependency-injection
When your agent uses it
Guidance for configuring dependency injection in .NET MAUI apps — service registration in MauiProgram.cs, lifetime selection (Singleton / Transient / Scoped), constructor injection, Shell navigation auto-resolution, platform-specific registrations, and testability patterns. USE FOR: "dependency injection", "DI setup", "AddSingleton", "AddTransient", "AddScoped", "service registration", "constructor injection", "IServiceProvider", "MauiProgram DI", "register services", "BindingContext injection". DO NOT USE FOR: data binding (use maui-data-binding), Shell route configuration (use maui-shell-navigation), unit-test mocking frameworks (use standard xUnit and NSubstitute patterns).
What it loads into context
Frontmatter
165 tokensAlways available to the agent
SKILL.md
3,080 tokensWhen the skill is activated
Reference documents
878 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to Use
- When Not to Use
- Inputs
- Rules That Change the Answer
- Workflow
- Lifetime Selection
- Registration Pattern in MauiProgram.cs
- Constructor Injection
- Shell Navigation Auto-Resolution
- Platform-Specific Registration
- Explicit Resolution (Last Resort)
- Interface-First Pattern for Testability
- Common Pitfalls
- Checklist
- References
Files
SKILL.mdcore14,430 bytesreferences/dependency-injection-api.mddoc4,236 bytes
Read SKILL.md
# Dependency Injection in .NET MAUI
.NET MAUI uses the same `Microsoft.Extensions.DependencyInjection` container as ASP.NET Core. All service registration happens in `MauiProgram.CreateMauiApp()` on `builder.Services`. The container is built once at startup and is immutable thereafter.
## When to Use
- Registering services, ViewModels, and Pages in `MauiProgram.cs`
- Choosing between `AddSingleton`, `AddTransient`, and `AddScoped`
- Wiring constructor injection for Pages and ViewModels
- Leveraging Shell navigation to auto-resolve DI-registered Pages
- Registering platform-specific service implementations with `#if` directives
- Designing interfaces for testable service layers
## When Not to UseView the complete source on GitHubmaui-safe-area
When your agent uses it
.NET MAUI safe area and edge-to-edge layout guidance for .NET 10+. Covers the new SafeAreaEdges property, SafeAreaRegions enum, per-edge control, keyboard avoidance, Blazor Hybrid CSS safe areas, migration from legacy iOS-only APIs, and platform-specific behavior for Android, iOS, and Mac Catalyst. USE FOR: "safe area", "edge-to-edge", "SafeAreaEdges", "SafeAreaRegions", "keyboard avoidance", "notch insets", "status bar overlap", "iOS safe area", "Android edge-to-edge", "content behind status bar", "UseSafeArea migration", "soft input keyboard", "IgnoreSafeArea replacement". DO NOT USE FOR: general layout or grid design (use Grid and StackLayout), app lifecycle handling (use maui-app-lifecycle), theming or styling (use maui-theming), or Shell navigation structure.
What it loads into context
Frontmatter
212 tokensAlways available to the agent
SKILL.md
3,192 tokensWhen the skill is activated
Reference documents
2,079 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to Use
- When Not to Use
- Inputs
- SafeAreaRegions Enum
- SafeAreaEdges Struct
- Control Defaults
- Breaking Changes from .NET 9
- Usage Patterns
- Decision Framework
- Blazor Hybrid Integration
- Migration from Legacy APIs
- Platform-Specific Behavior
- Common Pitfalls
- Checklist
Files
SKILL.mdcore12,909 bytesreferences/safe-area-api.mddoc8,635 bytes
Read SKILL.md
# Safe Area & Edge-to-Edge Layout (.NET 10+)
.NET 10 introduces a **brand-new, cross-platform safe area API** that replaces the legacy iOS-only `UseSafeArea` and the layout-level `IgnoreSafeArea` properties. The new `SafeAreaEdges` property and `SafeAreaRegions` flags enum give you per-edge, per-control safe area management on Android, iOS, and Mac Catalyst from a single API surface.
> **This is new API surface in .NET 10.** If the project targets .NET 9 or earlier, these APIs do not exist. Guide the developer to the legacy `ios:Page.UseSafeArea` and `Layout.IgnoreSafeArea` properties instead.
## When to Use
- Content overlaps status bar, notch, Dynamic Island, or home indicator after upgrading to .NET 10
- Implementing edge-to-edge / immersive layouts (photo viewers, video players, maps)
- Keyboard avoidance for chat or form UIs
- Migrating from `ios:Page.UseSafeArea`, `Layout.IgnoreSafeArea`, or `WindowSoftInputModeAdjust.Resize`
- Blazor Hybrid apps that need CSS `env(safe-area-inset-*)` coordination
- Mixed layouts with an edge-to-edge header but a safe-area-respecting bodyView the complete source on GitHubmaui-shell-navigation
When your agent uses it
Guide for implementing Shell-based navigation in .NET MAUI apps. Covers AppShell setup, visual hierarchy (FlyoutItem, TabBar, Tab, ShellContent), URI-based navigation with GoToAsync, route registration, query parameters, back navigation, flyout and tab configuration, navigation events, and navigation guards. Use when: setting up Shell navigation, adding tabs or flyout menus, navigating between pages with GoToAsync, passing parameters between pages, registering routes, customizing back button behavior, or guarding navigation with confirmation dialogs. Do not use for: deep linking from external URLs (see .NET MAUI deep linking documentation), data binding on pages (use maui-data-binding), dependency injection setup (use maui-dependency-injection), or NavigationPage-only apps that don't use Shell.
What it loads into context
Frontmatter
190 tokensAlways available to the agent
SKILL.md
3,559 tokensWhen the skill is activated
Reference documents
2,113 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to Use
- When Not to Use
- Inputs
- Rules That Change the Answer
- Shell Visual Hierarchy
- Workflow: Set Up AppShell
- Workflow: Navigate with GoToAsync
- Workflow: Pass Data Between Pages
- Workflow: Guard Navigation
- Tab Configuration
- Flyout Configuration
- Back Button Behavior
- Inspecting Navigation State
- Navigation Events
- Common Pitfalls
- References
Files
SKILL.mdcore15,365 bytesreferences/shell-navigation-api.mddoc9,219 bytes
Read SKILL.md
# .NET MAUI Shell Navigation
Implement page navigation in .NET MAUI apps using Shell. Shell provides URI-based navigation, a flyout menu, tab bars, and a four-level visual hierarchy — all configured declaratively in XAML.
## When to Use
- Setting up top-level app navigation with tabs or a flyout menu
- Navigating between pages programmatically with `GoToAsync`
- Passing data between pages via query parameters or object parameters
- Registering detail-page routes for push navigation
- Guarding navigation with confirmation dialogs (e.g., unsaved changes)
- Customizing back button behavior per page
## When Not to UseView the complete source on GitHubmaui-theming
When your agent uses it
Guide for theming .NET MAUI apps — light/dark mode via AppThemeBinding, ResourceDictionary theme switching, DynamicResource bindings, system theme detection, and user theme preferences. Use when: "dark mode", "light mode", "theming", "AppThemeBinding", "theme switching", "ResourceDictionary theme", "dynamic resources", "system theme detection", "color scheme", "app theme", "DynamicResource". Do not use for: localization or language switching (see .NET MAUI localization documentation), accessibility visual adjustments (see .NET MAUI accessibility documentation), app icons or splash screens (see .NET MAUI app icons documentation), or Bootstrap-style class theming (see Plugin.Maui.BootstrapTheme NuGet package).
What it loads into context
Frontmatter
182 tokensAlways available to the agent
SKILL.md
3,657 tokensWhen the skill is activated
Reference documents
985 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to Use
- When Not to Use
- Inputs
- Workflow
- Rules That Change the Answer
- Choosing an Approach
- AppThemeBinding (OS Light/Dark)
- ResourceDictionary Theming (Custom Themes)
- System Theme Detection
- Combining Both Approaches
- Saving and Restoring User Preference
- Common Pitfalls
- Platform Support
- Quick Reference
Files
SKILL.mdcore16,514 bytesSKILL.mdcore16,514 bytesreferences/theming-api.mddoc4,344 bytes
Read SKILL.md
# .NET MAUI Theming
Apply light/dark mode support, custom branded themes, and runtime theme switching in .NET MAUI apps using AppThemeBinding, ResourceDictionary swapping, and system theme detection APIs.
## When to Use
- Adding light and dark mode support to a .NET MAUI app
- Creating custom branded themes with ResourceDictionary
- Detecting and responding to system theme changes at runtime
- Letting users choose a preferred theme (light, dark, or system default)
- Combining OS-driven theme response with custom color palettes
## When Not to Use
View the complete source on GitHubbinlog-failure-analysis
When your agent uses it
Analyze MSBuild binary logs to diagnose build failures. USE FOR: build errors that are unclear from console output, diagnosing cascading failures across multi-project builds, tracing MSBuild target execution order, and generally any MSBuild build issues. Requires an existing .binlog file. DO NOT USE FOR: generating binlogs (use binlog-generation), binlog MCP startup or connection failures (use troubleshoot-binlog-mcp), non-MSBuild build systems.
What it loads into context
Frontmatter
102 tokensAlways available to the agent
SKILL.md
760 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Primary workflow — binlog MCP
- Fallback workflow — text-log replay (when MCP is unavailable)
- Generating a binlog (only if none exists)
Files
SKILL.mdcore3,095 bytesSKILL.mdcore3,095 bytesSKILL.mdcore3,095 bytesSKILL.mdcore3,095 bytesSKILL.mdcore3,095 bytes
Read SKILL.md
# Analyzing MSBuild Failures with Binary Logs
This skill diagnoses MSBuild build failures from a `.binlog` file. The preferred
path uses the **binlog MCP server** (`Microsoft.AITools.BinlogMcp`, exposed under the
`binlog` MCP namespace) which is bundled with this plugin. If the MCP server is
not available, use `troubleshoot-binlog-mcp` to diagnose startup when repair is wanted.
If repair is blocked, declined, or unnecessary for this task, continue with the
**binlog replay** workflow at the bottom.
## Primary workflow — binlog MCP
The MCP server exposes structured tools for inspecting a `.binlog` without
parsing text logs. Call them directly instead of replaying the binlog to a text
file. Call `tools/list` for the MCP first if you are unsure which tools are available.View the complete source on GitHubbinlog-generation
When your agent uses it
Generate MSBuild binary logs (binlogs) for build diagnostics and analysis. USE FOR: adding /bl:{} to any dotnet build, test, pack, publish, or restore command to capture a full build execution trace, prerequisite for binlog-failure-analysis and build-perf-diagnostics skills, enabling post-build investigation of errors or performance. Requires MSBuild 17.8+ / .NET 8 SDK+ for {} placeholder; PowerShell must quote the complete switch as '-bl:{}'. DO NOT USE FOR: non-MSBuild build systems (npm, Maven, CMake), analyzing an existing binlog (use binlog-failure-analysis instead), binlog MCP startup failures (use troubleshoot-binlog-mcp).
What it loads into context
Frontmatter
158 tokensAlways available to the agent
SKILL.md
1,063 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Commands That Require /bl
- Preferred: Use `{}` for Automatic Unique Names
- Why This Matters
- Examples
- One build = one binlog
- Verify the binlog exists
- When a Specific Filename Is Required
- Cleaning the Repository
Files
SKILL.mdcore4,284 bytesSKILL.mdcore4,284 bytesSKILL.mdcore4,284 bytesSKILL.mdcore4,284 bytesSKILL.mdcore4,284 bytesSKILL.mdcore4,284 bytesSKILL.mdcore4,284 bytesSKILL.mdcore4,284 bytesSKILL.mdcore4,284 bytesSKILL.mdcore4,284 bytes
Read SKILL.md
# Generate Binary Logs
**Pass the `/bl` switch when running any MSBuild-based command.** This is a non-negotiable requirement for all .NET builds.
## Commands That Require /bl
You MUST add the `/bl:{}` flag to:
- `dotnet build`
- `dotnet test`
- `dotnet pack`
- `dotnet publish`
- `dotnet restore`
- `msbuild` or `msbuild.exe`
- Any other command that invokes MSBuildView the complete source on GitHubbuild-parallelism
When your agent uses it
Analyze an MSBuild solution, solution filter, or Build.proj that schedules multiple project files. USE FOR: measured idle worker nodes, `-m` that does not scale, a serial ProjectReference critical path, graph builds, or an MSBuild task that builds a Projects list. Requires at least two distinct project files whose scheduling or throughput must be analyzed. DO NOT USE for non-MSBuild build systems.
What it loads into context
Frontmatter
95 tokensAlways available to the agent
SKILL.md
1,428 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Diagnose a slow parallel build (start here)
- MSBuild Parallelism Model
- Project Dependency Graph
- Graph Build Mode (`/graph`)
- Optimizing Project References
- BuildInParallel
- Multi-threaded MSBuild Tasks
- Analyzing Parallelism with Binlog
- CI/CD Parallelism Tips
Files
SKILL.mdcore6,128 bytesSKILL.mdcore6,128 bytesSKILL.mdcore6,128 bytesSKILL.mdcore6,128 bytesSKILL.mdcore6,128 bytes
Read SKILL.md
## Diagnose a slow parallel build (start here)
Work this checklist in order — it targets the usual root cause (a serial
dependency chain that no number of cores can parallelize):
1. **Check how many worker nodes actually built the solution.** Capture a
binlog with `dotnet build /bl:{}` (PowerShell: `dotnet build '-bl:{}'`) and
inspect the node timeline to see whether more than one node ran. Every
`dotnet` CLI command built on the SDK's MSBuild-forwarding path (`build`,
`msbuild`, `test`, `pack`, `publish`, etc.) enables `/maxcpucount` (multiple
nodes) by default; `-m:1` forces a single node. A direct `MSBuild.exe`
invocation is sequential by default, so pass `-m` explicitly to enable
parallel worker nodes there.
2. **Find the critical path.** From the binlog, read per-project timings and theView the complete source on GitHubbuild-perf-baseline
When your agent uses it
Establish MSBuild/.NET build performance baselines before optimizing. USE FOR: unranked slow builds; cold, warm, incremental or no-op measurements; before/after comparisons; CI output caching; static graph, artifacts output and dependency graph trimming. Start here before build-perf-diagnostics, incremental-build or build-parallelism. DO NOT USE FOR: known repeated-restore fixes (use eliminate-redundant-restores), non-MSBuild builds. For measured target/task/analyzer bottlenecks, use build-perf-diagnostics.
What it loads into context
Frontmatter
124 tokensAlways available to the agent
SKILL.md
3,192 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Overview
- Step 1: Establish a Performance Baseline
- Step 2: Artifacts Output Layout
- Step 3: Deterministic Builds
- Step 4: Dependency Graph Trimming
- Step 5: Static Graph Builds (`/graph`)
- Step 6: Parallel Build Tuning
- Step 7: Additional Quick Wins
- Optimization Decision Tree
Files
SKILL.mdcore14,537 bytesSKILL.mdcore14,537 bytesSKILL.mdcore14,537 bytesSKILL.mdcore14,537 bytesSKILL.mdcore14,537 bytesSKILL.mdcore14,537 bytesSKILL.mdcore14,537 bytesSKILL.mdcore14,537 bytesSKILL.mdcore14,537 bytesSKILL.mdcore14,537 bytesSKILL.mdcore14,537 bytesSKILL.mdcore14,537 bytesSKILL.mdcore14,537 bytesSKILL.mdcore14,537 bytesSKILL.mdcore14,537 bytesSKILL.mdcore14,537 bytes
Read SKILL.md
# Build Performance Baseline & Optimization
## Overview
Before optimizing a build, you need a **baseline**. Without measurements, optimization is guesswork. This skill covers how to establish baselines and apply systematic optimization techniques.
**Related skills:**
- `build-perf-diagnostics` — binlog-based bottleneck identification
- `incremental-build` — Inputs/Outputs and up-to-date checks
- `build-parallelism` — parallel and graph build tuning
- `eval-performance` — glob and import chain optimization
---
View the complete source on GitHubbuild-perf-diagnostics
When your agent uses it
Diagnose MSBuild bottlenecks from binlog timelines and Target/Task Performance Summaries after build-perf-baseline establishes measurements. USE FOR: unknown build slowness, RAR >5s, analyzers >30% of Csc, one target >50% of build time, node utilization <80%, excessive Copy tasks, finding restore overhead. DO NOT USE FOR: known repeated-restore fixes (use eliminate-redundant-restores), initial baselines (use build-perf-baseline), incremental rebuilds (use incremental-build), parallelism tuning (use build-parallelism), non-MSBuild builds.
What it loads into context
Frontmatter
141 tokensAlways available to the agent
SKILL.md
2,494 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Performance Analysis Methodology
- Key Metrics and Thresholds
- Common Bottlenecks
- Using Binlog Replay for Performance Analysis
- Quick Wins Checklist
- Impact Categorization
Files
SKILL.mdcore10,577 bytesSKILL.mdcore10,577 bytesSKILL.mdcore10,577 bytesSKILL.mdcore10,577 bytesSKILL.mdcore10,577 bytesSKILL.mdcore10,577 bytesSKILL.mdcore10,577 bytesSKILL.mdcore10,577 bytesSKILL.mdcore10,577 bytesSKILL.mdcore10,577 bytesSKILL.mdcore10,577 bytesSKILL.mdcore10,577 bytesSKILL.mdcore10,577 bytesSKILL.mdcore10,577 bytesSKILL.mdcore10,577 bytes
Read SKILL.md
## Performance Analysis Methodology
1. **Generate a binlog**: `dotnet build /bl:{} -m`
2. Use the **binlog MCP server** (`Microsoft.AITools.BinlogMcp`, exposed under the `binlog` MCP namespace) which is bundled with this plugin
If the server cannot connect, use `troubleshoot-binlog-mcp` when startup repair is
wanted. If repair is blocked, declined, or unnecessary, use the replay flow below.
### Alternate flow when MCP is unavailable: binlog replay to text logs
1. **Generate a binlog**: `dotnet build /bl:{} -m`
2. **Replay to diagnostic log with performance summary**:
```bash
dotnet msbuild build.binlog -noconlog -fl "-flp:v=diag;logfile=full.log;performancesummary"View the complete source on GitHubcheck-bin-obj-clash
When your agent uses it
Detects MSBuild projects with conflicting OutputPath or IntermediateOutputPath. USE FOR: builds failing with 'Cannot create a file when that file already exists', 'The process cannot access the file because it is being used by another process', intermittent build failures that succeed on retry, or missing/overwritten outputs in multi-project or multi-targeting builds where bin/obj (or project.assets.json) collide. Common causes: shared OutputPath, missing AppendTargetFrameworkToOutputPath, extra global properties (e.g. PublishReadyToRun), or SetTargetFramework on a ProjectReference to a single-targeting project. DO NOT USE FOR: file access errors unrelated to MSBuild (OS-level locking), single-project single-TFM builds, non-MSBuild build systems.
What it loads into context
Frontmatter
168 tokensAlways available to the agent
SKILL.md
4,867 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Overview
- When to Use This Skill
- Step 1: Generate a Binary Log
- Primary workflow — binlog MCP
- Fallback workflow — text-log replay (when MCP is unavailable)
- Common Causes and Fixes
- Tips
- Testing Fixes
Files
SKILL.mdcore21,919 bytesSKILL.mdcore21,919 bytesSKILL.mdcore21,919 bytes
Read SKILL.md
# Detecting OutputPath and IntermediateOutputPath Clashes
## Overview
This skill helps identify when multiple MSBuild project evaluations share the same `OutputPath` or `IntermediateOutputPath`. This is a common source of build failures including:
- File access conflicts during parallel builds
- Missing or overwritten output files
- Intermittent build failures
- "File in use" errors
- **NuGet restore errors like `Cannot create a file when that file already exists`** - this strongly indicates multiple projects share the same `IntermediateOutputPath` where `project.assets.json` is written
Clashes can occur between:
- **Different projects** sharing the same output directoryView the complete source on GitHubcopy-to-output-directory
When your agent uses it
Choosing an MSBuild CopyToOutputDirectory / CopyToPublishDirectory mode: Never, PreserveNewest, Always, and IfDifferent (MSBuild 17.13+), plus $(SkipUnchangedFilesOnCopyAlways). USE FOR: removing the per-build Always copy perf hit; resetting output files mutated between builds. DO NOT USE FOR: general incremental-build diagnosis (use incremental-build); non-MSBuild build systems.
What it loads into context
Frontmatter
96 tokensAlways available to the agent
SKILL.md
1,689 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Overview
- Why `Always` is usually the wrong choice
- `IfDifferent`: copy when different, in either direction
- Globally softening `Always` with `$(SkipUnchangedFilesOnCopyAlways)`
- How the modes flow through the build
- Version requirement
- Quick decision guide
Files
SKILL.mdcore7,279 bytesSKILL.mdcore7,279 bytesSKILL.mdcore7,279 bytesSKILL.mdcore7,279 bytesSKILL.mdcore7,279 bytesSKILL.mdcore7,279 bytesSKILL.mdcore7,279 bytesSKILL.mdcore7,279 bytesSKILL.mdcore7,279 bytesSKILL.mdcore7,279 bytesSKILL.mdcore7,279 bytesSKILL.mdcore7,279 bytes
Read SKILL.md
# Choosing a CopyToOutputDirectory Mode
## Overview
The `CopyToOutputDirectory` metadata (and its publish counterpart `CopyToPublishDirectory`) controls whether an item — `Content`, `None`, `EmbeddedResource`, or `Compile` — is copied next to your build output, and under what conditions the copy happens. Picking the wrong mode causes either stale files in `bin/` or an unnecessary per-build performance hit.
As of **MSBuild 17.13 / .NET SDK 9.0.2xx** there are four values:
| Mode | Copies when… | Incremental cost | Typical use |
| --- | --- | --- | --- |
| `Never` (default) | Never | None | Files not needed at runtime |
| `PreserveNewest` | Source is **newer** than destination (or destination missing) | Cheap (timestamp check) | The common case — source files you edit |
| `Always` | **Every build**, unconditionally | Expensive — copies on every build even in no-op builds | Legacy workaround; avoid (see below) |
| `IfDifferent` | Source **differs** from destination in either direction (newer **or** older, or size differs, or destination missing) | Cheap (timestamp + size check) | Destination may be mutated between builds |View the complete source on GitHubdirectory-build-organization
When your agent uses it
USE ONLY for (1) two or more projects with repeated MSBuild policy, targets, or package versions, or (2) an existing Directory.Build.props/targets/rsp hierarchy with an import, placement, or layering defect. A one-project repo without an existing Directory.Build file is outside scope; do not load this skill. Covers centralizing shared policy and targets, Directory.Packages.props across projects, parent hierarchy/import structure, props-versus-targets placement, and folder/project exceptions. An existing hierarchy defect remains in scope when only one project is affected. For property value or condition semantics use property-patterns. Exclude legacy-to-SDK migration and non-MSBuild systems.
What it loads into context
Frontmatter
150 tokensAlways available to the agent
SKILL.md
2,449 tokensWhen the skill is activated
Reference documents
2,149 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Intent control
- Directory.Build.props vs Directory.Build.targets
- Directory.Build.props
- Directory.Build.targets
- Directory.Packages.props (Central Package Management)
- Directory.Build.rsp
- Multi-level Directory.Build Files
- Artifact Output Layout (.NET 8+)
- Workflow: Organizing Build Infrastructure
- Troubleshooting
Files
SKILL.mdcore11,053 bytesSKILL.mdcore11,053 bytesSKILL.mdcore11,053 bytesreferences/common-patterns.mddoc1,411 bytesreferences/multi-level-examples.mddoc4,001 bytesreferences/targetframework-props-pitfall.mddoc3,427 bytes
Read SKILL.md
# Organizing Build Infrastructure with Directory.Build Files
## Intent control
- For "should we", "how should we organize", "recommend", "advise", or review
requests, inspect the actual project files and return a proposed layout only.
Do not create or edit files unless the user explicitly asks to apply, move,
centralize, or clean up the configuration.
- Before summarizing, verify which project retains each project-specific
property, item, or target. Name the actual file; do not infer it from sibling
names.
- Recommend a verification command only after discovering a real `.sln`,
`.slnx`, `.proj`, or project file at that path. If no repo-root entry point
exists, give commands for the discovered projects or state that the entryView the complete source on GitHubeliminate-redundant-restores
When your agent uses it
Remove repeated NuGet restores from multi-step .NET builds safely. USE FOR: build/test/publish steps that each restore, Directory.Build.rsp with -restore, safe restore suppression, NETSDK1004/NETSDK1047 after --no-restore. DO NOT USE FOR: slow first restore, only one restore, version or lock errors, unranked build slowness (use build-perf-baseline).
What it loads into context
Frontmatter
102 tokensAlways available to the agent
SKILL.md
2,424 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to Use
- When Not to Use
- Inputs
- Workflow
- Output
- Common Pitfalls
Files
SKILL.mdcore10,197 bytesSKILL.mdcore10,197 bytes
Read SKILL.md
# Eliminate Redundant Restores
A no-op restore still evaluates every project and checks restore state, so each extra restore in a multi-step build costs seconds to tens of seconds in a large repo. The cure is easy to get wrong: `--no-restore` on a step that no earlier restore actually covered turns a slow build into a failed one. This skill finds which invocations restore, proves which are already covered, and changes only those.
## When to Use
- A pipeline or script runs several `dotnet`/`msbuild` steps and the log shows restore output in more than one of them
- A restore step exists, yet later steps still print `Determining projects to restore...`
- A repository `Directory.Build.rsp` or the active MSBuild installation's `MSBuild.rsp` contains `-restore`
- Someone asks where `--no-restore` or `-restore:false` can safely be added
- `NETSDK1004` or `NETSDK1047` appeared after `--no-restore` was added
## When Not to Use
View the complete source on GitHubeval-performance
When your agent uses it
Guide for diagnosing and improving MSBuild project evaluation performance. USE FOR: builds slow before any compilation starts, high evaluation time in binlog analysis, expensive glob patterns walking large directories (node_modules, .git, bin/obj), deep import chains (>20 levels), preprocessed output >10K lines indicating heavy evaluation, property functions with file I/O ($([System.IO.File]::ReadAllText(...))), multiple evaluations per project. Covers the 5 MSBuild evaluation phases, glob optimization via DefaultItemExcludes, import chain analysis with /pp preprocessing. DO NOT USE FOR: compilation-time slowness (use build-perf-diagnostics), incremental build issues (use incremental-build), non-MSBuild build systems.
What it loads into context
Frontmatter
155 tokensAlways available to the agent
SKILL.md
1,526 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Confirm the problem before changing anything
- MSBuild Evaluation Phases
- Diagnosing Evaluation Performance
- Expensive Glob Patterns
- Import Chain Analysis
- Multiple Evaluations
- TreatAsLocalProperty
- Property Function Cost
- Optimization Checklist
Files
SKILL.mdcore7,024 bytes
Read SKILL.md
# Diagnosing MSBuild Evaluation Performance
Evaluation is the work MSBuild does *before* any target runs — reading project
files, processing imports, expanding globs. This skill helps you **find and
confirm** evaluation bottlenecks. Measure first; recommend a change only when a
measurement proves it is warranted.
## Confirm the problem before changing anything
Engage only when evaluation is *measurably* the bottleneck. Do NOT act when:
- **The slowness is during compilation or target execution, not evaluation.**
That is not an evaluation problem — use `build-perf-diagnostics` instead.
- **The complaint is "rebuilds too much" / incremental build.** UseView the complete source on GitHubextension-points
When your agent uses it
Own MSBuild import and hook discovery. USE FOR: CustomBefore/CustomAfter hooks, ordered wildcard and NuGet auto-imports, control properties, build/buildTransitive packed layout, package ID and file-name matching, per-TFM forwarders, and tracing why assets or hooks are missing, broken, or replaced. An import guard remains in scope when it is one defect in a broader hook/import flow. DO NOT USE for a focused safety verdict on whether one specific Import needs Exists or is an intentionally unguarded package contract; use msbuild-antipatterns. NEVER INVOKE when imports and hook placement already work and the request is only target Inputs/Outputs, incremental skipping, or FileWrites clean tracking; use incremental-build or target-authoring. Exclude props-versus-targets placement and non-MSBuild systems.
What it loads into context
Frontmatter
178 tokensAlways available to the agent
SKILL.md
2,808 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- CustomBefore / CustomAfter Hooks
- Wildcard Import Directories
- Import Gating — Control Properties
- NuGet Package Build Extension Layout
- Source Tree vs Packed Layout
- Import Guard Pattern
- Directory.Build Discovery
- Creating Your Own Extension Point
- Common Pitfalls
Files
SKILL.mdcore11,789 bytesSKILL.mdcore11,789 bytesSKILL.mdcore11,789 bytesSKILL.mdcore11,789 bytesSKILL.mdcore11,789 bytesSKILL.mdcore11,789 bytesSKILL.mdcore11,789 bytesSKILL.mdcore11,789 bytes
Read SKILL.md
# MSBuild Extension Points
How the MSBuild pipeline provides hooks for SDKs, NuGet packages, repos, and users to inject custom logic.
## CustomBefore / CustomAfter Hooks
Every major `.targets` file defines import hooks:
```xml
<PropertyGroup>
<CustomBeforeMicrosoftCommonTargets Condition="'$(CustomBeforeMicrosoftCommonTargets)' == ''">
$(MSBuildExtensionsPath)\v$(MSBuildToolsVersion)\Custom.Before.Microsoft.Common.targets
</CustomBeforeMicrosoftCommonTargets>
</PropertyGroup>View the complete source on GitHubincluding-generated-files
When your agent uses it
Own MSBuild generated-artifact integration. USE FOR: a target that creates or should create source, Content, None, or another physical file but the artifact is missing from compilation or output; target timing; evaluation-time glob misses; $(IntermediateOutputPath) placement; and FileWrites clean tracking. The prompt may describe the generated artifact without naming the producing task. DO NOT USE when the primary defect is general Include/Remove/Update semantics, item metadata or batching, duplicate/overlapping declarations, or a generated-item identity relationship; use item-management. Exclude Roslyn source-generator internals and non-MSBuild systems.
What it loads into context
Frontmatter
136 tokensAlways available to the agent
SKILL.md
1,504 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Overview
- Quick Takeaway
- Why Generated Files Are Ignored
- Solution: Manually Add Generated Files
- Target Timing
- Globbing Behavior
- Relevant Links
Files
SKILL.mdcore7,126 bytesSKILL.mdcore7,126 bytesSKILL.mdcore7,126 bytesSKILL.mdcore7,126 bytes
Read SKILL.md
# Including Generated Files Into Your Build
## Overview
Files generated during the build are generally ignored by the build process. This leads to confusing results such as:
- Generated files not being included in the output directory
- Generated source files not being compiled
- Globs not capturing files created during the build
This happens because of how MSBuild's build phases work.
## Quick Takeaway
For code files generated during the build - we need to add those to `Compile` and `FileWrites` item groups within the target generating the file(s):View the complete source on GitHubincremental-build
When your agent uses it
Guide for optimizing MSBuild incremental builds. USE FOR: builds slower than expected on subsequent runs, 'nothing changed but it rebuilds anyway', diagnosing why targets re-execute unnecessarily, fixing broken no-op builds. Covers 8 common causes: missing Inputs/Outputs on custom targets, volatile properties in output paths (timestamps/GUIDs), file writes outside tracked Outputs, missing FileWrites registration, glob changes, Visual Studio Fast Up-to-Date Check (FUTDC) issues. Key diagnostic: look for 'Building target completely' vs 'Skipping target' in binlog. DO NOT USE FOR: first-time build slowness (use build-perf-baseline), parallelism issues (use build-parallelism), evaluation-phase slowness (use eval-performance), non-MSBuild build systems.
What it loads into context
Frontmatter
170 tokensAlways available to the agent
SKILL.md
3,741 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Required diagnosis output
- How MSBuild Incremental Build Works
- Why Incremental Builds Break (Top Causes)
- Diagnosing "Why Did This Rebuild?"
- FileWrites and Clean Build
- Visual Studio Fast Up-to-Date Check
- Making Custom Targets Incremental
- Performance Summary and Preprocess
- Common Fixes
Files
SKILL.mdcore17,288 bytesSKILL.mdcore17,288 bytesSKILL.mdcore17,288 bytesSKILL.mdcore17,288 bytesSKILL.mdcore17,288 bytes
Read SKILL.md
## Required diagnosis output
For every diagnose or explain request, the final answer must explicitly cover
all of these points, even when the immediate cause is simply missing
`Inputs`/`Outputs`:
- the target and exact root-cause evidence;
- the actual input/output timestamp comparison;
- missing, deleted, cleaned, or rewritten outputs;
- complete inputs, including dynamic or volatile inputs;
- evaluated input/output paths and one-to-one mapping when item lists are batched;
- two identical no-change builds and the expected second-build skip/out-of-date evidence.
Do not edit unless the user asks for a fix. If a check cannot be run, label itView the complete source on GitHubitem-management
When your agent uses it
Own concrete MSBuild ItemGroup and item-expression questions. USE FOR: Include, Remove, Update, item identity and metadata, transforms, filtering, batching, duplicate or overlapping items, and reviews that verify whether those operations are correct. Generated items stay in scope when the central defect is item identity, metadata, batching, duplicate declarations, or glob/Remove/Update semantics. For a generated artifact missing from compilation or output, wrong target timing/path, or FileWrites clean tracking without a broader item-semantics defect, use including-generated-files. The item operation may be broken, suspected, or already correct. Exclude property-only issues, general incrementality with no item question, broad reviews with no concrete item concern, and non-MSBuild systems.
What it loads into context
Frontmatter
160 tokensAlways available to the agent
SKILL.md
1,211 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Include / Remove / Update — Three Operations
- Item Batching — %(Metadata)
- Item Transforms — @(Item->'expression')
- Exclude Pattern — Set Subtraction on Include
- Conditional Item Inclusion
- PrivateAssets on Tool/Analyzer Packages
- Common Pitfalls
Files
SKILL.mdcore5,418 bytesSKILL.mdcore5,418 bytesSKILL.mdcore5,418 bytes
Read SKILL.md
# MSBuild Item Management Patterns
Canonical patterns for working with item groups, from `Microsoft.Common.CurrentVersion.targets`.
## Include / Remove / Update — Three Operations
| Operation | Purpose | When to use |
|---|---|---|
| `Include` | Add new items to the group | Creating items with identity + metadata |
| `Remove` | Remove items matching a pattern | Excluding files or clearing a group |
| `Update` | Modify metadata on existing items | Adding/changing metadata without re-adding |
### Include — Add Items
View the complete source on GitHubmsbuild-antipatterns
When your agent uses it
DO NOT INVOKE when the primary request explicitly asks to convert, migrate, modernize, or rewrite a legacy/old-style project to SDK style; use msbuild-modernization. Migration prompts often mention ToolsVersion, explicit Compile/Reference entries, packages.config, or Microsoft.CSharp.targets, but merely reviewing or auditing a file that contains those patterns remains in scope here. USE FOR broad review, audit, lint, or maintainability/correctness checks of project/build files, including custom targets; prioritized cross-cutting findings; discrete anti-patterns; F# ordering/FS0039; cross-platform paths; and focused Import safety verdicts. Review/audit is analysis-only unless fixes are requested. For concrete property/item defects use property-patterns/item-management; use target-authoring for implementation and extension-points for NuGet auto-import/layout discovery. Exclude non-MSBuild systems.
What it loads into context
Frontmatter
192 tokensAlways available to the agent
SKILL.md
4,630 tokensWhen the skill is activated
Reference documents
5,091 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Review output contract
- AP-01: `<Exec>` for Operations That Have Built-in Tasks
- AP-02: Unquoted Condition Expressions
- AP-03: Hardcoded Absolute Paths
- AP-04: Restating SDK Defaults
- AP-05: Manual File Listing in SDK-Style Projects
- AP-06: Using `<Reference>` with HintPath for NuGet Packages
- AP-07: Missing `PrivateAssets="all"` on Analyzer/Tool Packages
- AP-08: Copy-Pasted Properties Across Multiple .csproj Files
- AP-09: Scattered Package Versions Without Central Package Management
- AP-10: Monolithic Targets (Too Much in One Target)
- AP-11: Custom Targets Missing `Inputs` and `Outputs`
- AP-12: Setting Defaults in .targets Instead of .props
- AP-13: Import Without `Exists()` Guard
- AP-14: Backslashes in Paths — Where It Matters
- AP-15: Unconditional Property Override in Multiple Scopes
Files
SKILL.mdcore19,370 bytesSKILL.mdcore19,370 bytesSKILL.mdcore19,370 bytesSKILL.mdcore19,370 bytesSKILL.mdcore19,370 bytesSKILL.mdcore19,370 bytesreferences/additional-antipatterns.mddoc19,271 bytesreferences/incremental-build-inputs-outputs.mddoc1,561 bytesreferences/private-assets.mddoc1,041 bytes
Read SKILL.md
# MSBuild Anti-Pattern Catalog
A numbered catalog of common MSBuild anti-patterns. Each entry follows the format:
- **Smell**: What to look for
- **Why it's bad**: Impact on builds, maintainability, or correctness
- **Fix**: Concrete transformation
Use this catalog when scanning project files for improvements.
## Review output contract
For review, audit, maintainability, or correctness-risk requests:
View the complete source on GitHubmsbuild-modernization
When your agent uses it
Guide for modernizing and migrating MSBuild project files to SDK-style format. USE FOR: converting legacy .csproj/.vbproj with verbose XML to SDK-style, migrating packages.config to PackageReference, removing Properties/AssemblyInfo.cs in favor of auto-generation, eliminating explicit Compile Include lists via implicit globbing, consolidating shared settings into Directory.Build.props. Indicators of legacy projects: ToolsVersion attribute, an Import of Microsoft.CSharp.targets via $(MSBuildToolsPath), .csproj files over 50 lines for simple projects. DO NOT USE FOR: projects already in SDK-style format, non-.NET build systems (npm, Maven, CMake), .NET Framework projects that cannot move to SDK-style.
What it loads into context
Frontmatter
155 tokensAlways available to the agent
SKILL.md
4,300 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Identifying Legacy vs SDK-style Projects
- Migration Checklist: Legacy → SDK-style
- Complete Before/After Example
- Common Migration Issues
- Central Package Management Migration
- Directory.Build Consolidation
- Tools and Automation
Files
SKILL.mdcore17,445 bytes
Read SKILL.md
# MSBuild Modernization: Legacy to SDK-style Migration
## Identifying Legacy vs SDK-style Projects
**Legacy indicators:**
- `<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />`
- Explicit file lists (`<Compile Include="..." />` for every `.cs` file)
- `ToolsVersion` attribute on `<Project>` element
- `packages.config` file present
- `Properties\AssemblyInfo.cs` with assembly-level attributes
**SDK-style indicators:**
View the complete source on GitHubproperty-patterns
When your agent uses it
Diagnose and fix concrete MSBuild property defects in projects and existing shared-file hierarchies. USE FOR: conditions, defaults, append versus overwrite, last-write-wins values, OS/TFM checks, portable paths, normalization, and reviews centered on those property defects. Property defects in Directory.Build.* remain in scope, including overwritten values across parent/child imports and conditions that run before TargetFramework is set, even when the fix changes import order or moves a property group to .targets. DO NOT USE FOR: placement-only or import-only requests with no concrete property defect, such as discovering shared files or choosing which file owns a target or customization (use directory-build-organization); item operations; target structure; broad reviews without a concrete property defect; non-MSBuild work.
What it loads into context
Frontmatter
168 tokensAlways available to the agent
SKILL.md
1,600 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Conditional Defaults — The Foundational Pattern
- Nested Conditional Groups
- Composition — Semicolon Concatenation
- Path Normalization and Trailing Slashes
- Target Framework Detection Helpers
- Guard Properties
- Feature Gating by MSBuild Version
- Fallback Chains
- Last Write Wins — Evaluation Order
- Common Pitfalls
Files
SKILL.mdcore6,761 bytesSKILL.mdcore6,761 bytes
Read SKILL.md
# MSBuild Property Patterns
Canonical property definition and manipulation patterns from the MSBuild repository.
## Conditional Defaults — The Foundational Pattern
Set a property **only if not already set**, allowing callers to override:
```xml
<PropertyGroup>
<Configuration Condition="'$(Configuration)' == ''">Debug</Configuration>
<Platform Condition="'$(Platform)' == ''">AnyCPU</Platform>
<BuildInParallel Condition="'$(BuildInParallel)' == ''">true</BuildInParallel>
</PropertyGroup>View the complete source on GitHubresolve-project-references
When your agent uses it
Guide for interpreting ResolveProjectReferences time in MSBuild performance summaries. Activate when ResolveProjectReferences appears as the most expensive target and developers are trying to optimize it directly. Explains that the reported time includes wait time for dependent project builds and is misleading. Guides users to focus on task self-time instead. Do not activate for general build performance -- use build-perf-diagnostics instead.
What it loads into context
Frontmatter
89 tokensAlways available to the agent
SKILL.md
659 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to Use
- When Not to Use
- Inputs
- Workflow
- Validation
Files
SKILL.mdcore2,972 bytesSKILL.mdcore2,972 bytesSKILL.mdcore2,972 bytesSKILL.mdcore2,972 bytes
Read SKILL.md
# Misleading ResolveProjectReferences Time
Prevent misguided optimization of `ResolveProjectReferences` by explaining that its reported time is wall-clock wait time, not CPU work.
## When to Use
- `ResolveProjectReferences` appears as the most expensive target in the Target Performance Summary
- A developer is trying to optimize `ResolveProjectReferences` directly
- Build performance analysis shows a single target consuming 50-80% of total build time
## When Not to Use
- General build performance optimization (use `build-perf-diagnostics` instead)
- The bottleneck is clearly a different target (e.g., `Csc`, `ResolveAssemblyReference`)View the complete source on GitHubtarget-authoring
When your agent uses it
Canonical patterns for writing custom MSBuild targets. USE FOR: diagnosing and fixing custom target authoring anti-patterns; broken SDK target chains across files (e.g., Directory.Build.targets silently redefining SDK targets); targets that replace CompileDependsOn instead of extending it with $(CompileDependsOn); query targets returning stale results from Outputs vs Returns misuse; missing Inputs/Outputs causing unnecessary rebuilds; missing FileWrites registration. Covers DependsOnTargets vs BeforeTargets vs AfterTargets, the Build→CoreBuild three-level pattern, and the $(XxxDependsOn) chain-extension pattern. DO NOT USE FOR: incremental build tuning (use incremental-build), parallelization (use build-parallelism), general anti-patterns (use msbuild-antipatterns), non-MSBuild build systems.
What it loads into context
Frontmatter
168 tokensAlways available to the agent
SKILL.md
1,516 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- The Three-Level Target Chain
- Chain Extension — Append, Never Overwrite
- DependsOnTargets vs BeforeTargets vs AfterTargets
- Returns vs Outputs
- Target Naming Conventions
- Complete Custom Target Template
- Common Pitfalls
Files
SKILL.mdcore6,662 bytes
Read SKILL.md
# Custom Target Authoring Patterns
Canonical patterns from `Microsoft.Common.CurrentVersion.targets` in the MSBuild repository.
## The Three-Level Target Chain
Every major entry point (Build, Rebuild, Clean) delegates to a **property** listing its dependencies, which chains through Before → Core → After:
```xml
<PropertyGroup>
<BuildDependsOn>
BeforeBuild;
CoreBuild;
AfterBuildView the complete source on GitHubtroubleshoot-binlog-mcp
When your agent uses it
Diagnose dotnet-msbuild binlog MCP startup failures. USE FOR: CONNECTION_CLOSED, binlog server won't connect, missing binlog tools, Microsoft.AITools.BinlogMcp not found, dnx launch errors. Checks workspace SDK, feeds, and source mapping without bypassing policy. DO NOT USE FOR: errors inside a binlog (use binlog-failure-analysis), capturing binlogs (use binlog-generation), unrelated MCP servers.
What it loads into context
Frontmatter
106 tokensAlways available to the agent
SKILL.md
1,631 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- 1. Establish what failed
- 2. Match the host's workspace and SDK
- 3. Capture the real launch error
- 4. Choose a policy-safe recovery
- 5. Verify and report
Files
SKILL.mdcore7,868 bytesSKILL.mdcore7,868 bytesSKILL.mdcore7,868 bytesSKILL.mdcore7,868 bytesSKILL.mdcore7,868 bytesSKILL.mdcore7,868 bytesSKILL.mdcore7,868 bytesSKILL.mdcore7,868 bytes
Read SKILL.md
# Troubleshoot Binlog MCP Startup
Explain why the plugin's binlog MCP server cannot connect and give an evidence-based,
policy-safe recovery. This diagnoses the **server launch**, not failures recorded in a build.
No binlog file or project build is needed.
This skill runs on demand. It cannot see a host error that was never exposed to the agent,
inject session-start context, or guarantee activation merely because a plugin was installed.
## 1. Establish what failed
Use the user's error and any host MCP status or startup logs already available.
`CONNECTION_CLOSED` alone says that the transport closed, not why. Do not translate it
directly into "package missing."View the complete source on GitHubconvert-to-cpm
When your agent uses it
Convert .NET projects and solutions (.sln, .slnx) to NuGet Central Package Management (CPM) using Directory.Packages.props. USE FOR: converting to CPM, centralizing or aligning NuGet package versions across multiple projects, inlining MSBuild version properties from Directory.Build.props into Directory.Packages.props, resolving version conflicts or mismatches across a solution or repository, updating or bumping or syncing package versions across projects. Also activate when packages are out of sync, drifting, or inconsistent -- even without the user mentioning CPM. Provides baseline build capture, version conflict resolution, build validation with binlog comparison, and a structured post-conversion report. DO NOT USE FOR: packages.config projects (must migrate to PackageReference first) or repositories that already have CPM fully enabled.
What it loads into context
Frontmatter
191 tokensAlways available to the agent
SKILL.md
2,855 tokensWhen the skill is activated
Reference documents
5,678 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Choose a mode first
- Inputs
- Read references only when needed
- Conversion workflow
- Required conversion artifacts
- Efficiency rules
- Validation
Files
SKILL.mdcore14,283 bytesreferences/audit-complexities.mddoc5,411 bytesreferences/baseline-comparison.mddoc7,408 bytesreferences/directory-packages-props.mddoc3,710 bytesreferences/msbuild-property-handling.mddoc3,539 bytesreferences/report-template.mddoc3,713 bytesreferences/validation-and-errors.mddoc3,245 bytes
Read SKILL.md
# Convert to Central Package Management
Centralize package versions in `Directory.Packages.props` while preserving project behavior and producing reviewable before/after evidence.
## Choose a mode first
Do this before running builds or changing files.
1. **Guard mode** -- If any in-scope project uses `packages.config`, stop. Explain that CPM requires `PackageReference` and recommend migrating first. Do not create or modify files.
2. **Package-maintenance mode** -- A request to update, align, bump, or sync packages authorizes those package edits, not CPM conversion. Audit the named scope, resolve the requested versions, update existing project/shared version declarations, and restore/build every affected CLI target from the directory that establishes its applicable `global.json`. Ask only when the version or alignment policy is ambiguous. Do not create or modify `Directory.Packages.props`, remove versions for CPM, or capture conversion artifacts. Complete the package work, then recommend CPM as the durable follow-up.
3. **Conversion mode** -- Use only when the user explicitly asks to adopt, enable, or convert to CPM. Follow the workflow below.
If the scope is unclear, ask once before proceeding.
View the complete source on GitHubtemplate-authoring
When your agent uses it
Guides creation and validation of custom dotnet new templates from existing projects. Generates a .template.config/template.json that preserves the source project's conventions. USE FOR: creating a reusable dotnet new template from an existing project, bootstrapping .template.config/template.json with correct identity, shortName, parameters, and post-actions, adding parameters or conditional content to a template you are authoring, validating the template.json you are authoring before publishing, packaging templates as NuGet packages for distribution. DO NOT USE FOR: validating an existing template.json as a standalone task (use template-validation), finding or using existing templates (use template-discovery and template-instantiation), MSBuild project file issues unrelated to template authoring, NuGet package publishing (only template packaging structure).
What it loads into context
Frontmatter
179 tokensAlways available to the agent
SKILL.md
2,981 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to Use
- When Not to Use
- Inputs
- Workflow
- Validation
- Common Pitfalls
- More Info
Files
SKILL.mdcore13,108 bytesSKILL.mdcore13,108 bytesSKILL.mdcore13,108 bytesSKILL.mdcore13,108 bytesSKILL.mdcore13,108 bytesSKILL.mdcore13,108 bytesSKILL.mdcore13,108 bytesSKILL.mdcore13,108 bytesSKILL.mdcore13,108 bytes
Read SKILL.md
# Template Authoring
This skill helps an agent create and validate custom `dotnet new` templates. It guides bootstrapping templates from existing projects and validates `template.json` files for authoring issues before publishing.
## When to Use
- User wants to create a reusable template from an existing .csproj
- User wants to validate a template.json they are authoring before publishing
- User is setting up `.template.config/template.json` from scratch
- User wants to package a template for NuGet distribution
## When Not to Use
- User wants to find or use existing templates — route to `template-discovery` or `template-instantiation`View the complete source on GitHubtemplate-comparison
When your agent uses it
Compares two or more dotnet new templates side by side to help users choose between them based on parameters, feature support, frameworks, and classifications. USE FOR: deciding between similar templates (webapi vs webapp, blazor vs blazorwasm, console vs worker), producing a side-by-side comparison of parameters and feature support, understanding how templates differ before creating a project. DO NOT USE FOR: creating a project from a template (use template-instantiation), authoring or validating custom templates (use template-authoring and template-validation), general single-template discovery (use template-discovery).
What it loads into context
Frontmatter
142 tokensAlways available to the agent
SKILL.md
1,857 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to Use
- When Not to Use
- Inputs
- Workflow
- Validation
- Common Pitfalls
- More Info
Files
SKILL.mdcore8,245 bytesSKILL.mdcore8,245 bytes
Read SKILL.md
# Template Comparison
This skill helps an agent compare 2+ `dotnet new` templates side by side so the user can
pick the right one. It inspects each template's parameters and feature support and renders
a comparison table.
## When to Use
- User is deciding between similar templates (e.g., `webapi` vs `webapp`, `blazor` vs `blazorwasm`)
- User asks "which template should I use for X?"
- User wants to understand how two or more templates differ before creating a project
## When Not to Use
View the complete source on GitHubtemplate-discovery
When your agent uses it
Helps find, inspect, and compare (at a high level) .NET project templates. Resolves natural-language project descriptions to ranked template matches with pre-filled parameters. USE FOR: finding the right dotnet new template for a task, inspecting a template's parameters and constraints, understanding what a template produces before creating a project, resolving intent like "web API with auth" to concrete template + parameters. DO NOT USE FOR: actually creating projects (use template-instantiation), authoring custom templates (use template-authoring), producing a detailed side-by-side comparison (use template-comparison), choosing cross-parameter defaults during creation (use template-smart-defaults), MSBuild or build issues (use dotnet-msbuild plugin), NuGet package management unrelated to template packages.
What it loads into context
Frontmatter
184 tokensAlways available to the agent
SKILL.md
2,932 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to Use
- When Not to Use
- Inputs
- Workflow
- Validation
- Common Pitfalls
- More Info
Files
SKILL.mdcore12,262 bytesSKILL.mdcore12,262 bytesSKILL.mdcore12,262 bytesSKILL.mdcore12,262 bytesSKILL.mdcore12,262 bytes
Read SKILL.md
# Template Discovery
This skill helps an agent find, inspect, and select the right `dotnet new` template for a given task using `dotnet new` CLI commands for search, listing, and parameter inspection.
## When to Use
- User asks "What templates are available for X?"
- User describes a project in natural language ("I need a web API with authentication")
- User wants to compare templates or understand parameters before creating a project
- User needs to know what a template produces (files, structure) before committing
## When Not to Use
- User wants to create a project — route to `template-instantiation` skillView the complete source on GitHubtemplate-instantiation
When your agent uses it
Creates .NET projects from templates with validated parameters, smart defaults, Central Package Management adaptation, and latest NuGet version resolution. USE FOR: creating new dotnet projects, scaffolding solutions with multiple projects, installing or uninstalling template packages, creating projects that respect Directory.Packages.props (CPM), composing multi-project solutions (API + tests + library), getting latest NuGet package versions in newly created projects. DO NOT USE FOR: finding templates (use template-discovery), producing a detailed side-by-side comparison of templates (use template-comparison), authoring custom templates (use template-authoring), deciding cross-parameter defaults such as which framework to pair with native AOT or whether to keep HTTPS when auth is enabled (use template-smart-defaults), modifying existing projects or adding NuGet packages to existing projects.
What it loads into context
Frontmatter
194 tokensAlways available to the agent
SKILL.md
2,538 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to Use
- When Not to Use
- Inputs
- Workflow
- Validation
- Common Pitfalls
- More Info
Files
SKILL.mdcore11,339 bytesSKILL.mdcore11,339 bytesSKILL.mdcore11,339 bytesSKILL.mdcore11,339 bytesSKILL.mdcore11,339 bytes
Read SKILL.md
# Template Instantiation
This skill creates .NET projects from templates using `dotnet new` CLI commands, with guidance for parameter validation, Central Package Management adaptation, and multi-project composition.
> **Match the workspace, then stop.** The highest-value move is aligning the new project with the repo it lands in: detect **CPM** (`Directory.Packages.props`) and the **target framework** used by neighbouring `.csproj` files, and mirror both. **Treat the discovered target framework as an explicit choice** — pass it as `--framework` so `template-smart-defaults` won't override it; deviate only when it's incompatible with a requested feature (then flag the conflict). Do this in as few steps as possible — a `--dry-run`, the create, and one `dotnet build` to confirm is usually enough. Extra exploratory turns add cost without improving the result.
> **Perform the requested creation.** Do not return only a plan or statement of intent.
> Run state-dependent commands sequentially: inspect, dry-run, create, then build. Never
> launch create and build in parallel; a build-before-create race produces a false failure.
| Situation | Required action |
|-----------|-----------------|
| Simple standalone project | inspect only the requested template, create at the exact path, then build |
| Existing neighboring projects | read their TFMs first and pass the matching supported `--framework` explicitly |View the complete source on GitHubtemplate-smart-defaults
When your agent uses it
Applies cross-parameter default rules when creating .NET projects with dotnet new, filling gaps consistently without overriding values the user set explicitly. USE FOR: choosing which target framework to pair with native AOT, deciding whether to keep HTTPS when authentication is enabled, recognizing that controllers and minimal-API flags are mutually exclusive, filling unset related parameters during project creation, explaining why a default was applied and ensuring an explicit user value is never overridden. DO NOT USE FOR: creating the project itself (use template-instantiation), finding or comparing templates (use template-discovery and template-comparison), authoring or validating custom templates (use template-authoring and template-validation).
What it loads into context
Frontmatter
159 tokensAlways available to the agent
SKILL.md
1,731 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to Use
- When Not to Use
- Inputs
- Workflow
- Validation
- Common Pitfalls
- More Info
Files
SKILL.mdcore7,870 bytes
Read SKILL.md
# Template Smart Defaults
This skill helps an agent fill in cross-parameter defaults when creating a `dotnet new`
project. The rules below are guidance heuristics that keep related parameters consistent —
they only fill gaps and never override a value the user set explicitly.
## When to Use
- The user asks to create a project but leaves related parameters unspecified
- A parameter the user chose implies a sensible value for another parameter
- You need to explain why a particular default was selected
## When Not to Use
View the complete source on GitHubtemplate-validation
When your agent uses it
Validates custom dotnet new templates for correctness before publishing. Catches missing fields, parameter bugs, shortName conflicts, constraint issues, and common authoring mistakes that cause templates to fail silently. USE FOR: checking template.json files for errors before publishing or testing, diagnosing why a template doesn't appear after installation, reviewing template parameter definitions for type mismatches and missing defaults, finding shortName conflicts with dotnet CLI commands, validating post-action and constraint configuration. DO NOT USE FOR: finding or using existing templates (use template-discovery), creating projects from templates (use template-instantiation), creating templates from existing projects (use template-authoring).
What it loads into context
Frontmatter
152 tokensAlways available to the agent
SKILL.md
2,735 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to Use
- When Not to Use
- Inputs
- Validation Rules
- Workflow
- Common Pitfalls
- More Info
Files
SKILL.mdcore11,785 bytesSKILL.mdcore11,785 bytesSKILL.mdcore11,785 bytesSKILL.mdcore11,785 bytes
Read SKILL.md
# Template Validation
This skill helps validate custom `dotnet new` templates for correctness before publishing. It encodes the validation rules that catch common authoring mistakes — issues that cause templates to silently fail, produce broken projects, or not appear in `dotnet new list`.
## When to Use
- User asks to check or validate a template.json file
- User reports "my template doesn't show up after installing"
- User wants to review a template before packaging and publishing to NuGet
- User encounters unexpected behavior from a custom template
## When Not to Use
- User wants to find or use existing templates — route to `template-discovery`View the complete source on GitHubmigrate-mstest-v1v2-to-v3
When your agent uses it
Use this skill before answering or editing whenever an MSTest v1/v2 project is being upgraded or repaired for v3. Triggers include QualityTools assembly references; MSTest.TestFramework/TestAdapter 1.x-2.x; "upgrade to MSTest v3"; comparing v1 and v2 migration paths; choosing MSTest or MSTest.Sdk; CS0411/CS1503 after a v3 package bump; DataRow type mismatch, MSTEST0014, or "Test data doesn't match method parameters"; .testsettings/LegacySettings to .runsettings; timeout changes; and net5.0 or other dropped v3 TFMs. Still use it when packages say 3.x but migration source errors or legacy settings remain. Preserve VSTest/MTP. Do not use for a clean v3 project, v3-to-v4, framework conversion, or runner-only migration.
What it loads into context
Frontmatter
216 tokensAlways available to the agent
SKILL.md
5,303 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- First Action
- When to Use
- When Not to Use
- Boundary Gate
- Inputs
- Execution Contract
- Breaking Changes Summary
- Response Guidelines
- Migration Paths
- Workflow
- Validation
- Next Step
- Common Pitfalls
Files
SKILL.mdcore21,801 bytesSKILL.mdcore21,801 bytesSKILL.mdcore21,801 bytesSKILL.mdcore21,801 bytesSKILL.mdcore21,801 bytes
Read SKILL.md
# MSTest v1/v2 -> v3 Migration
Migrate a test project from MSTest v1 (assembly references) or MSTest v2 (NuGet 1.x-2.x) to MSTest v3. MSTest v3 is **not binary compatible** with v1/v2 -- libraries compiled against v1/v2 must be recompiled.
## First Action
Inspect the supplied workspace and classify v1, v2, partially migrated v3, or
already-complete v3 before answering. Do not search the web or answer from
memory first. For an edit request, continue through the requested source
changes and validation; for an advice request, answer directly after the
classification.
## When to Use
View the complete source on GitHubmigrate-mstest-v3-to-v4
When your agent uses it
Use this skill before answering, planning, or editing any MSTest 3.x-to-4.x upgrade or post-upgrade failure. Triggers include "MSTest v4 breaking changes"; CS0507/CS0103/CS1061/CS1615; ExecuteAsync, CallerInfo, DisplayName, or custom TestMethodAttribute; ClassCleanupBehavior; ContainsKey; ThrowsExactly or ExpectedException; IsInstanceOfType out parameters; TestTimeout.Infinite; ManagedType; net6/net7 compatibility; TestCase.Id history; TestName in ClassInitialize; TreatDiscoveryWarningsAsErrors; discovery errors after a clean build; and MSTest.Sdk/MTP or vstest.console discovery changes. Do not use for v1/v2-to-v3 leftovers, framework conversion, runner-only migration, or a general .NET upgrade.
What it loads into context
Frontmatter
201 tokensAlways available to the agent
SKILL.md
6,846 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- First Action
- When to Use
- When Not to Use
- Inputs
- Decisions That Change the Result
- Response Guidelines
- Workflow
- Validation
- Related Skills
- Common Pitfalls
Files
SKILL.mdcore28,868 bytesSKILL.mdcore28,868 bytesSKILL.mdcore28,868 bytesSKILL.mdcore28,868 bytesSKILL.mdcore28,868 bytesSKILL.mdcore28,868 bytesSKILL.mdcore28,868 bytesSKILL.mdcore28,868 bytesSKILL.mdcore28,868 bytesSKILL.mdcore28,868 bytesSKILL.mdcore28,868 bytesSKILL.mdcore28,868 bytes
Read SKILL.md
# MSTest v3 -> v4 Migration
Migrate a test project from MSTest v3 to MSTest v4. The outcome is a project using MSTest v4 that builds cleanly, passes tests, and accounts for every source-incompatible and behavioral change. MSTest v4 is **not binary compatible** with MSTest v3 -- any library compiled against v3 must be recompiled against v4.
## First Action
Inspect the supplied project and source before searching the web or answering
from memory. Classify the request as a focused source fix, runtime behavior
change, CI discovery issue, compatibility question, or full migration, then
follow the matching row below. A clean compile does not exclude this skill:
discovery failures, `TestContext` lifecycle exceptions, and test-history
changes are runtime migration failures.
## When to UseView the complete source on GitHubmigrate-nunit-to-mstest
When your agent uses it
Convert .NET tests from NUnit 3/4 to MSTest v4 while preserving VSTest or MTP. Use for replacing NUnit/NUnit3TestAdapter packages, Test/TestCase/ TestCaseSource/Values attributes, constraint assertions, SetUp/TearDown, OneTimeSetUp, SetUpFixture, FixtureLifeCycle, TestContext, categories, retries, timeouts, and NUnit parallelization. Also use when a "convert NUnit to MSTest" request may already be migrated: inspect and report the no-op. Do not use for NUnit version upgrades, xUnit/TUnit conversion, MSTest upgrades, or runner-only VSTest-to-MTP migration.
What it loads into context
Frontmatter
162 tokensAlways available to the agent
SKILL.md
3,473 tokensWhen the skill is activated
Reference documents
4,129 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Scope
- Workspace Contract
- Response Mode
- Decisions That Change the Result
- Fast Path
- Workflow
- Completion Criteria
- Follow-up
Files
SKILL.mdcore15,316 bytesSKILL.mdcore15,316 bytesSKILL.mdcore15,316 bytesSKILL.mdcore15,316 bytesSKILL.mdcore15,316 bytesSKILL.mdcore15,316 bytesSKILL.mdcore15,316 bytesSKILL.mdcore15,316 bytesreferences/mapping-cheatsheet.mddoc17,143 bytes
Read SKILL.md
# NUnit -> MSTest Migration
Convert NUnit 3 or 4 tests to MSTest v4 without changing the target framework or test platform. A successful migration builds, discovers the same test cases, and preserves pass/fail, lifecycle, data, filtering, and concurrency semantics.
## Scope
Use this skill only when the project contains NUnit packages or source and the user wants MSTest. If the project already uses MSTest and contains no NUnit tests, report that no framework migration is needed and make no changes.
Do not combine this framework conversion with a target-framework upgrade or VSTest/MTP migration. Complete and verify one migration before starting another.
## Workspace Contract
- Search the current working directory for projects and source; never look for user files under this skill's directory.
- Classify the deliverable: "convert this project" means edit, build, and test; "give me a plan" means answer without editing.View the complete source on GitHubmigrate-vstest-to-mtp
When your agent uses it
Use this skill before answering, planning, or editing whenever .NET tests or CI are switching from VSTest to Microsoft.Testing.Platform (MTP), or an MTP migration behaves differently. Triggers include "switch from VSTest"; MSTest/NUnit/xUnit MTP enablement; OutputType=Exe only for test projects in Directory.Build.props; EnableMSTestRunner, EnableNUnitRunner, UseMicrosoftTestingPlatformRunner, or YTest.MTP.XUnit2; .NET 10 global.json test.runner and TestingPlatformDotnetTestSupport; translating VSTest filters, logger, coverage, blame, or dump arguments; replacing VSTest@3; and exit code 8 or zero tests. Also use for xUnit v3 MTP filters during a v2-to-v3 upgrade. Do not use for framework conversion, TFM, UWP, or WinUI.
What it loads into context
Frontmatter
214 tokensAlways available to the agent
SKILL.md
5,578 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- First Action
- When to Use
- When Not to Use
- Inputs
- Execution and Answer Contract
- Workflow
- Validation
- Common Pitfalls
- Next Steps
- More Info
Files
SKILL.mdcore22,210 bytes
Read SKILL.md
# VSTest -> Microsoft.Testing.Platform Migration
Migrate a .NET test solution from VSTest to Microsoft.Testing.Platform (MTP). The outcome is a solution where all test projects run on MTP, `dotnet test` works correctly, and CI/CD pipelines are updated.
## First Action
Inspect the supplied project, `Directory.Build.props`, `global.json`, and CI
files before searching the web or answering from memory. Resolve the framework
and SDK mode first: .NET 9 and earlier use the compatibility property plus the
`--` separator; .NET 10 native MTP uses `global.json`, removes that property,
and passes MTP arguments without the separator. For central properties, never
condition on `IsTestProject` in `Directory.Build.props`; use a property already
available there, such as `MSBuildProjectName`.
View the complete source on GitHubmigrate-xunit-to-mstest
When your agent uses it
Convert .NET tests from xUnit.net v2/v3 to MSTest v4 while preserving VSTest or MTP. Use for replacing xunit packages, Fact/Theory/InlineData/MemberData, assertions, IClassFixture/ICollectionFixture, ITestOutputHelper, TestContext cancellation, traits/Owner, skips, timeouts, and xUnit parallelization. Also use when a "convert xUnit to MSTest" request may already be migrated: inspect and report the no-op. Do not use for xUnit v2-to-v3, MSTest upgrades, NUnit/TUnit conversion, or runner-only VSTest-to-MTP migration.
What it loads into context
Frontmatter
159 tokensAlways available to the agent
SKILL.md
3,474 tokensWhen the skill is activated
Reference documents
7,580 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Scope
- Workspace Contract
- Response Mode
- Decisions That Change the Result
- Fast Path
- Workflow
- Completion Criteria
- Follow-up
Files
SKILL.mdcore15,484 bytesSKILL.mdcore15,484 bytesSKILL.mdcore15,484 bytesSKILL.mdcore15,484 bytesSKILL.mdcore15,484 bytesSKILL.mdcore15,484 bytesSKILL.mdcore15,484 bytesSKILL.mdcore15,484 bytesSKILL.mdcore15,484 bytesSKILL.mdcore15,484 bytesSKILL.mdcore15,484 bytesreferences/mapping-cheatsheet.mddoc28,043 bytes
Read SKILL.md
# xUnit -> MSTest Migration
Convert xUnit.net v2 or v3 tests to MSTest v4 without changing the target framework or test platform. A successful migration builds, discovers the same tests, and preserves pass/fail results and execution semantics.
## Scope
Use this skill only when the project contains xUnit packages or source and the user wants MSTest. If the project already uses MSTest and contains no xUnit tests, report that no framework migration is needed and make no changes.
Do not combine this framework conversion with a target-framework upgrade or VSTest/MTP migration. Complete and verify one migration before starting another.
## Workspace Contract
- Continue after skill activation. Search the current working directory for the
staged project and source; never look for user files under this skill's baseView the complete source on GitHubmigrate-xunit-to-xunit-v3
When your agent uses it
Migrate .NET test projects from xUnit.net v2 to xunit.v3 and fix v3 breaks. Use for package/CPM conversion, OutputType=Exe, preserving the VSTest or MTP runner (including projects currently using YTest.MTP.XUnit2), incompatible TFMs, async void tests, string-to-Type attributes, custom Fact/Theory/BeforeAfterTest attributes, Xunit.SkippableFact, xunit.abstractions/extensibility consolidation, and Xunit.Combinatorial/StaFact compatibility. Do not use for framework conversion or a runner-only migration. For xUnit v3 MTP filter syntax, also use migrate-vstest-to-mtp.
What it loads into context
Frontmatter
170 tokensAlways available to the agent
SKILL.md
3,614 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to Use
- When Not to Use
- Inputs
- Workspace and Completion Contract
- Workflow
Files
SKILL.mdcore16,226 bytesSKILL.mdcore16,226 bytesSKILL.mdcore16,226 bytesSKILL.mdcore16,226 bytesSKILL.mdcore16,226 bytesSKILL.mdcore16,226 bytesSKILL.mdcore16,226 bytesSKILL.mdcore16,226 bytesSKILL.mdcore16,226 bytesSKILL.mdcore16,226 bytesSKILL.mdcore16,226 bytes
Read SKILL.md
# xunit.v3 Migration
Migrate .NET test projects from xUnit.net v2 to xUnit.net v3. The outcome is a solution where all test projects reference `xunit.v3.*` packages, compiles cleanly, and all tests pass with the same results as before migration.
## When to Use
- Upgrading test projects from `xunit` (v2) packages to `xunit.v3`
- Resolving compilation errors after updating xunit package references to v3
## When Not to Use
- Migrating between test frameworks (e.g., MSTest or NUnit to xUnit.net) — different effort entirely
- Migrating from VSTest to Microsoft.Testing.Platform — use `migrate-vstest-to-mtp`
- The projects already reference `xunit.v3` — migration is doneView the complete source on GitHubassertion-quality
When your agent uses it
Analyze assertion quality, depth, variety, and false confidence in existing tests. ALWAYS USE when asked about weak, shallow, trivial, always-true, self-referential, assertion-free, presence/truthiness-only, or insufficiently diverse assertions, including MSTest, Jest, pytest, and Go. DO NOT USE for direct fixes: writing-mstest-tests owns supplied MSTest assertions; code-testing owns new cases. Use test-gap-analysis when asked whether tests would catch a production change, and test-anti-patterns for general severity-ranked audits.
What it loads into context
Frontmatter
121 tokensAlways available to the agent
SKILL.md
4,325 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Why Assertion Diversity Matters
- When to Use
- When Not to Use
- Inputs
- Workflow
- Validation
- Common Pitfalls
Files
SKILL.mdcore19,273 bytes
Read SKILL.md
# Assertion Diversity Analysis
Analyze test code in any supported language to measure how varied and meaningful the assertions are. Produce a metrics report that reveals whether tests verify different facets of correctness — not just "output equals X" but also structure, exceptions, state transitions, side effects, and invariants.
> **Language-specific guidance**: Read the caller-provided or runtime-listed
> `test-analysis-extensions` catalog, then its matching language file
> (`dotnet.md`, `python.md`, `typescript.md`, `go.md`, etc.).
> `test-analysis-extensions` is reference-only; do not invoke it as a skill.
> If the bundle is absent, use the pinned framework and this skill's rules,
> report the missing reference, and do not search installation directories.
## Why Assertion Diversity Matters
Low assertion diversity signals shallow testing. Tests may pass while bugs hide in unasserted logic. Common symptoms:View the complete source on GitHubcode-testing
When your agent uses it
ALWAYS USE for test work that requires changes: write, add, generate, repair, or strengthen tests for existing code in xUnit, MSTest, NUnit, pytest, Vitest/Jest, Go, or another framework. Includes regression cases, failing or flaky tests, coverage-driven additions, and audit-then-fix requests. Focused work stays direct; broad or multi-stage work invokes test-engineer. DO NOT USE for only running tests, analysis-only audits, framework/platform migrations, a test blocked on a missing production seam (testability-obstacle), or MSTest API/configuration corrections that do not design new cases (writing-mstest-tests). Within an active test-engineer pipeline, reuse supplied guidance and do not re-enter this skill.
What it loads into context
Frontmatter
178 tokensAlways available to the agent
SKILL.md
4,613 tokensWhen the skill is activated
Reference documents
2,895 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Non-negotiable execution contract
- When to Use This Skill
- When Not to Use
- How It Works
- Step-by-Step Instructions
- State Management
- Agent Reference
- Requirements
- Troubleshooting
Files
SKILL.mdcore22,754 bytesSKILL.mdcore22,754 bytesSKILL.mdcore22,754 bytesSKILL.mdcore22,754 bytesSKILL.mdcore22,754 bytesunit-test-generation.prompt.mddoc14,090 bytes
Read SKILL.md
# Code Testing Skill
The reliable implicit entry point for generating, repairing, and strengthening
tests. It handles focused work directly and invokes the public `test-engineer`
agent for broad or multi-stage requests.
## Non-negotiable execution contract
**Check pipeline ownership first.** If the active agent is
`test-engineer` (including a plugin-qualified name such as
`dotnet-test:test-engineer`), or the caller assigned you a phase of
that pipeline, do not delegate to another generator. Continue the assigned
work inline. This guard takes precedence over every broad-scope delegation
instruction below, even if this skill was loaded automatically.View the complete source on GitHubcode-testing-agent
When your agent uses it
Legacy compatibility alias for the code-testing skill. Do not self-activate for user requests and do not treat this name as a custom agent. When invoked explicitly by older instructions, load code-testing and follow it instead.
What it loads into context
Frontmatter
76 tokensAlways available to the agent
SKILL.md
152 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
Files
SKILL.mdcore708 bytes
Read SKILL.md
# Legacy Code Testing Alias
This skill preserves explicit calls that still use the former
`code-testing-agent` name. The public custom agent is `test-engineer`; the
model-facing implicit skill is `code-testing`.
1. Invoke the `code-testing` skill with the original user request.
2. Follow that skill's workflow without adding another interpretation layer.View the complete source on GitHubcode-testing-extensions
When your agent uses it
Provides file paths to language-specific extension files for the code-testing pipeline. Read this reference-only catalog for extension guidance files (e.g., dotnet.md for .NET, cpp.md for C++). Agents and skills read its bundled files directly; do not invoke this catalog through the model's skill tool.
What it loads into context
Frontmatter
97 tokensAlways available to the agent
SKILL.md
856 tokensWhen the skill is activated
Reference documents
58,862 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Available Extension Files
- Usage
Files
SKILL.mdcore3,782 bytesextensions/cpp-examples.mddoc9,335 bytesextensions/cpp.mddoc20,560 bytesextensions/dotnet-examples.mddoc10,942 bytesextensions/dotnet.mddoc10,801 bytesextensions/go-examples.mddoc12,656 bytesextensions/go.mddoc8,006 bytesextensions/java-examples.mddoc12,165 bytesextensions/java.mddoc9,933 bytesextensions/kotlin-examples.mddoc10,521 bytesextensions/kotlin.mddoc11,473 bytesextensions/powershell-examples.mddoc9,347 bytesextensions/powershell.mddoc12,342 bytesextensions/python-examples.mddoc12,425 bytesextensions/python.mddoc11,991 bytesextensions/ruby-examples.mddoc9,130 bytesextensions/ruby.mddoc15,067 bytesextensions/rust-examples.mddoc10,812 bytesextensions/rust.mddoc8,983 bytesextensions/swift.mddoc9,632 bytesextensions/typescript-examples.mddoc13,006 bytesextensions/typescript.mddoc8,058 bytes
Read SKILL.md
# Code Testing Extensions
This reference-only catalog lists bundled guidance for the code-testing
pipeline. Read the matching file directly; do not invoke this catalog as a
skill. Resource paths are relative to this catalog, not the project workspace.
## Available Extension Files
| File | Language | Contents |
|------|----------|----------|
| [extensions/dotnet.md](extensions/dotnet.md) | .NET (C#/F#/VB) | Build commands, test commands, project reference validation, common CS error codes, MSTest template |
| [extensions/python.md](extensions/python.md) | Python | Framework-adaptive test commands (pytest, custom runners), project layout detection, mocking guidelines, common errors |
| [extensions/typescript.md](extensions/typescript.md) | TypeScript/JavaScript | Build/test commands (Jest/Vitest/Mocha), framework detection, mocking, TS-specific considerations |
| [extensions/powershell.md](extensions/powershell.md) | PowerShell | Test commands (Pester v5), module import patterns, discovery/run pitfalls, mocking, common errors |View the complete source on GitHubcoverage-analysis
When your agent uses it
Activation requires either supplied .NET coverage reports/percentages/line, branch, or condition metrics, or an explicit request to collect .NET coverage for analysis. USE FOR: interpreting that evidence, including Cobertura data, partial conditions, plateaus, target arithmetic, project-wide coverage-backed CRAP, and coverage-backed refactoring safety. Analyze supplied reports directly without rerunning tests or installing tools. DO NOT USE FOR: requests with neither coverage evidence nor explicit coverage-collection intent, including hypothetical change-survival questions (use test-gap-analysis); CRAP or refactoring safety for one named target (use crap-score); or requests owned by test-tagging, find-untested-sources, test-anti-patterns, run-tests, or code-testing.
What it loads into context
Frontmatter
178 tokensAlways available to the agent
SKILL.md
2,351 tokensWhen the skill is activated
Reference documents
6,211 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Purpose
- When to Use
- When Not to Use
- Inputs
- Choose the smallest matching path
- Existing-data fast path
- Collection path
- Interpretation and arithmetic invariants
- Response contract
- Optional reports
- Validation
- Common Pitfalls
Scripts executed separately
scripts/Compute-CrapScores.ps1scripts/CoverageData.ps1scripts/Extract-MethodCoverage.ps1
Files
SKILL.mdcore11,347 bytesSKILL.mdcore11,347 bytesSKILL.mdcore11,347 bytesSKILL.mdcore11,347 bytesreferences/guidelines.mddoc2,634 bytesreferences/output-format.mddoc4,220 bytesreferences/report-generation.mddoc2,089 bytesreferences/setup-discovery.mddoc15,329 bytesscripts/Compute-CrapScores.ps1runs4,451 bytesscripts/CoverageData.ps1runs14,719 bytesscripts/Extract-MethodCoverage.ps1runs3,636 bytes
Read SKILL.md
# Coverage Analysis
## Purpose
Explain what .NET coverage evidence proves, reconcile target arithmetic, and
identify the code blocking progress. Add complexity/CRAP ranking only when the
user explicitly asks for risk hotspots, CRAP, priorities by risk, or refactoring
safety.
## When to Use
Use this skill for interpreting supplied .NET line/branch/condition evidence,
coverage gaps and plateaus, target arithmetic, or explicit project-wide
coverage-backed risk analysis.View the complete source on GitHubcrap-score
When your agent uses it
Calculates CRAP (Change Risk Anti-Patterns) for a named .NET method, class, or file. USE FOR: explicit CRAP calculation or coverage-and-complexity risk within that named target, including which tests to prioritize. DO NOT USE FOR: project-wide coverage/CRAP, plateaus, or project-wide blockers/priorities (coverage-analysis); behavioral/pseudo-mutation gaps (test-gap-analysis); writing tests; test runs without CRAP context.
What it loads into context
Frontmatter
115 tokensAlways available to the agent
SKILL.md
3,081 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Background
- When to Use
- When Not to Use
- Inputs
- Workflow
- Validation
- Common Pitfalls
Files
SKILL.mdcore13,462 bytesSKILL.mdcore13,462 bytesSKILL.mdcore13,462 bytesSKILL.mdcore13,462 bytesSKILL.mdcore13,462 bytesSKILL.mdcore13,462 bytesSKILL.mdcore13,462 bytesSKILL.mdcore13,462 bytes
Read SKILL.md
# CRAP Score Analysis
Calculate CRAP (Change Risk Anti-Patterns) scores for .NET methods to identify code that is both complex and undertested.
## Background
The CRAP score combines **cyclomatic complexity** and **code coverage** into a single metric:
$$\text{CRAP}(m) = \text{comp}(m)^2 \times (1 - \text{cov}(m))^3 + \text{comp}(m)$$
Where:
- $\text{comp}(m)$ = cyclomatic complexity of method $m$
- $\text{cov}(m)$ = code coverage ratio (0.0 to 1.0) of method $m$View the complete source on GitHubdetect-static-dependencies
When your agent uses it
ACTIVATION PREREQUISITE: the request or discovered target must explicitly identify C#, .NET, `.cs`, or `.csproj`; otherwise stay dormant without invoking this skill. USE FOR: locating System.DateTime.Now/UtcNow, System.IO.File/Directory, System.Environment, HttpClient, Console, or Process usage in C#; auditing C# code for hard-to-test framework dependencies; or verifying those C# calls are already abstracted. DO NOT USE FOR: any target lacking the activation prerequisite; generating wrappers (use generate-testability-wrappers); migrating code (use migrate-static-to-wrapper); or general code review.
What it loads into context
Frontmatter
157 tokensAlways available to the agent
SKILL.md
3,450 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to Use
- Response Guidelines
- Execution Contract
- When Not to Use
- Inputs
- Workflow
- Validation
- Common Pitfalls
Files
SKILL.mdcore15,298 bytesSKILL.mdcore15,298 bytes
Read SKILL.md
# Detect Static Dependencies
Scan a C# codebase for calls to hard-to-test static APIs and produce a ranked report showing which statics appear most frequently, which files are most affected, and which abstractions already exist in the .NET ecosystem to replace them.
## When to Use
- Auditing a project's testability before adding unit tests
- Understanding the scope of static coupling in a legacy codebase
- Prioritizing which statics to wrap first (highest-frequency wins)
- Creating a migration plan for incremental testability improvements
## Response Guidelines
- Scale the response to the user's request. A question about a specific category (e.g., "find time statics") should focus on that category with file locations and counts, not produce a full report across all categories.View the complete source on GitHubfilter-syntax
When your agent uses it
Reference-only filter syntax for VSTest and MTP with MSTest, NUnit, xUnit v3, and TUnit. Load only after the platform/framework is known and a consumer needs to create or translate a filter. Do not load for unfiltered runs or platform detection. Used by run-tests and mtp-hot-reload; never invoke directly.
What it loads into context
Frontmatter
98 tokensAlways available to the agent
SKILL.md
1,608 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- VSTest filters (MSTest, xUnit v2, NUnit on VSTest)
- MTP filters — MSTest and NUnit
- MTP filters — xUnit (v3)
- MTP filters — TUnit
- VSTest → MTP filter translation (for migration)
Files
SKILL.mdcore5,963 bytesSKILL.mdcore5,963 bytesSKILL.mdcore5,963 bytesSKILL.mdcore5,963 bytesSKILL.mdcore5,963 bytesSKILL.mdcore5,963 bytes
Read SKILL.md
# Test Filter Syntax Reference
Filter syntax depends on the **platform** and **test framework**.
## VSTest filters (MSTest, xUnit v2, NUnit on VSTest)
```bash
dotnet test --filter <EXPRESSION>
```
Expression syntax: `<Property><Operator><Value>[|&<Expression>]`
**Operators:**
View the complete source on GitHubfind-untested-sources
When your agent uses it
MANDATORY for static source-to-test pairing: find or list source files/modules without corresponding tests, or suggest test locations from repository structure. Invoke even for a tiny package; do not substitute manual globbing. Uses Roslyn for C#/.NET and tree-sitter for Python, TS/JS, Go, Java, Rust, Ruby, Kotlin, Swift, PowerShell, and C++. DO NOT USE FOR: real line/branch/Cobertura data, coverage-backed test priorities, CRAP risk, or grading existing tests.
What it loads into context
Frontmatter
133 tokensAlways available to the agent
SKILL.md
3,399 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Purpose
- Two engines — pick one
- Required workflow
- When to Use
- When Not to Use
- Roslyn engine (C#)
- Polyglot engine (tree-sitter)
- Limitations (be honest with the agent)
- Outputs the agent should consume
Scripts executed separately
scripts/find_untested_sources.py
Files
SKILL.mdcore13,406 bytesSKILL.mdcore13,406 bytesSKILL.mdcore13,406 bytesSKILL.mdcore13,406 bytesSKILL.mdcore13,406 bytesSKILL.mdcore13,406 bytesSKILL.mdcore13,406 bytesSKILL.mdcore13,406 bytesSKILL.mdcore13,406 bytesSKILL.mdcore13,406 bytesSKILL.mdcore13,406 bytesSKILL.mdcore13,406 bytesSKILL.mdcore13,406 bytesSKILL.mdcore13,406 bytesSKILL.mdcore13,406 bytesSKILL.mdcore13,406 bytesSKILL.mdcore13,406 bytesSKILL.mdcore13,406 bytesSKILL.mdcore13,406 bytesSKILL.mdcore13,406 bytesSKILL.mdcore13,406 bytesscripts/Find-UntestedSources.csasset24,622 bytesscripts/find_untested_sources.pyruns35,897 bytes
Read SKILL.md
# Find Untested Sources
## Purpose
Coverage tools answer "which lines were executed?" — they require a green build
and a passing test run, which is minutes-to-tens-of-minutes on a real repo. The
question this skill answers is different and much cheaper:
> _Which source files have no test file referencing any of their declared
> types/symbols?_
That's the question an agent asks **before** writing a new test — and it can be
answered statically in a few seconds by parsing source files, with **no build,
no dependency resolution, and no compilation**. The output is a deterministicView the complete source on GitHubgenerate-testability-wrappers
When your agent uses it
DO NOT USE when the target already consumes an injected interface or built-in abstraction such as IFileSystem or TimeProvider, even if the request says "generate a wrapper"; no new wrapper is needed. Use only when C# source calls an ambient/static dependency and no injectable seam exists: first-time TimeProvider, IHttpClientFactory, or System.IO.Abstractions adoption; minimal Environment/Console/Process wrappers; IProcessRunner; DI registration; or an ambient seam that preserves a static API. Exclude static detection (detect-static-dependencies), migration to an existing/registered abstraction (migrate-static-to-wrapper), one blocked behavior plus deterministic tests (testability-obstacle), and general interface design.
What it loads into context
Frontmatter
174 tokensAlways available to the agent
SKILL.md
3,401 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to Use
- When Not to Use
- Inputs
- Workflow
- Validation
- Common Pitfalls
Files
SKILL.mdcore15,658 bytesSKILL.mdcore15,658 bytesSKILL.mdcore15,658 bytes
Read SKILL.md
# Generate Testability Wrappers
Generate wrapper interfaces, default implementations, and DI service registration code for untestable static dependencies. For statics that already have .NET built-in abstractions (`TimeProvider`, `IHttpClientFactory`), guide adoption of the built-in. For statics without built-in alternatives, generate custom minimal wrappers.
## When to Use
- After running `detect-static-dependencies` and identifying which statics to wrap
- When the user asks to make a class testable by replacing statics with injected abstractions
- When adopting `TimeProvider` (.NET 8+) or `System.IO.Abstractions`
- When creating a custom wrapper for `Environment.*`, `Console.*`, or `Process.*`
- When a released static API needs an ambient seam because signatures cannot change
## When Not to Use
View the complete source on GitHubgrade-tests
When your agent uses it
Grade curated individual tests for readiness, A-F quality and improvements. ALWAYS USE FOR: grade tests, review only a named test, per-test readiness or quality bands for supplied methods, bodies, file spans or bounded PR diffs, including existing tests. Return Pass/Failed/Uncertain/Not applicable; unresolved/empty scopes omit grades. Compose read-only per-test evidence. Polyglot. DO NOT USE FOR: suite audits (test-engineer/test-anti-patterns), concrete fix/feature detection proof (test-value-evidence), writing/fixing tests, or coverage.
What it loads into context
Frontmatter
137 tokensAlways available to the agent
SKILL.md
6,263 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Why a Decision Result Plus Quality Detail
- When to Use
- When Not to Use
- Inputs
- Workflow
- Validation
- Common Pitfalls
Files
SKILL.mdcore27,290 bytesSKILL.mdcore27,290 bytesSKILL.mdcore27,290 bytes
Read SKILL.md
# Grade Tests
Assess a curated list of test methods and produce a compact,
PR-comment-friendly report. The primary result is one of **Pass**, **Failed**,
**Uncertain**, or **Not applicable**; an A-F quality grade remains secondary
diagnostic information. The skill **does not discover tests on its own** — the
caller (typically a PR automation workflow or a human reviewer holding a
specific list) provides the tests or a bounded diff to assess.
After Step 0 admits a bounded scope, enforce these grading invariants:
- With production context, **load `test-gap-analysis` by name once before
scoring**, in `per-test-read-only` caller context. Read its owned composition
reference; do not compute mutation evidence from this grading rubric or runView the complete source on GitHubmigrate-static-to-wrapper
When your agent uses it
ALWAYS USE when asked to migrate, replace, or make testable existing C# static calls with a named wrapper or built-in abstraction: DateTime.UtcNow/Now or DateTimeOffset.UtcNow to TimeProvider/IClock, File.* to IFileSystem or an existing store such as ITextFileStore, and Environment.* to an existing reader such as IEnvironmentReader. Covers scoped files/projects, constructor injection, replacing temp-file or process-environment tests with fakes, "already registered" abstractions, and static classes whose callers/signatures must stay unchanged. Preserves DateTimeKind and call count. DO NOT USE for finding statics (detect-static-dependencies), choosing/designing a new wrapper (generate-testability-wrappers), behavior tests with no chosen seam (testability-obstacle), or test-framework migration.
What it loads into context
Frontmatter
199 tokensAlways available to the agent
SKILL.md
4,567 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to Use
- When Not to Use
- Inputs
- Workflow
- Validation
- Common Pitfalls
Files
SKILL.mdcore20,922 bytesSKILL.mdcore20,922 bytesSKILL.mdcore20,922 bytes
Read SKILL.md
# Migrate Static to Wrapper
Perform mechanical, codemod-style replacement of static dependency call sites with calls to injected wrapper interfaces or built-in abstractions. Operates on a bounded scope (single file, project, or namespace) so migrations can be done incrementally.
## When to Use
- After wrappers have been generated (via `generate-testability-wrappers`) or built-in abstractions identified
- Migrating `DateTime.UtcNow` → `TimeProvider.GetUtcNow()` across a project
- Migrating `File.*` → `IFileSystem.File.*` across a namespace
- Adding constructor injection for the new abstraction to affected classes
- Making a `static` utility class testable by adding an ambient seam (Step 3) while its existing call sites keep
compiling unchanged
- Incremental migration: one project or namespace at a time
- Updating affected tests with fakes when the requested migration names theView the complete source on GitHubmtp-hot-reload
When your agent uses it
Set up or recover MTP hot reload for a long-lived console-host edit/re-run loop in a Microsoft Testing Platform project. Use for explicit MTP console requests such as "enable hot reload", "dotnet run to rerun on edit", or unsupported/rude edits. Covers setup, run/watch, restarts, filters, and the VSTest no-mutation fallback. For one-time runs, exact commands, filter errors, TRX/dumps, or merely a failing test, use run-tests. Do not use when Test Explorer or an IDE should rerun tests without an MTP console host. Excludes editor integration, CI, and writing/debugging tests.
What it loads into context
Frontmatter
163 tokensAlways available to the agent
SKILL.md
2,184 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to Use
- When Not to Use
- Inputs
- Response sizing
- Workflow
- Validation
- Common Pitfalls
Files
SKILL.mdcore9,201 bytesSKILL.mdcore9,201 bytesSKILL.mdcore9,201 bytes
Read SKILL.md
# MTP Hot Reload for Iterative Test Fixing
Set up and use a long-lived Microsoft Testing Platform host that applies code
edits and automatically reruns tests.
## When to Use
- User explicitly asks for test hot reload
- User wants a host to stay running and automatically rerun after repeated edits
- User needs to set up MTP hot reload in their project
## When Not to Use
- User needs to write new tests from scratch (use general coding assistance)View the complete source on GitHubplatform-detection
When your agent uses it
Identify a .NET project's test platform, framework, command mode, and SDK-style vs classic project system. Use only for "which test platform/framework?", "VSTest or MTP?", or "what runner does this project use?", including bridge settings, UseVSTest opt-outs, and incompatible or conflicting VSTest/MTP configuration. Resolves global.json, project, packages.config, Directory.Build.props, and Directory.Packages.props precedence for MSTest/xUnit/NUnit/TUnit. DO NOT USE when the user asks to run/filter tests or for commands, flags, TRX/dumps, or test-command/filter errors; use run-tests directly. Do not route hot-reload or migration requests here as the entry skill; mtp-hot-reload may use this skill internally for platform detection.
What it loads into context
Frontmatter
193 tokensAlways available to the agent
SKILL.md
2,991 tokensWhen the skill is activated
Reference documents
243 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Response contract
- Detecting the project system
- Detecting the test framework
- Detecting the executed test platform
Files
SKILL.mdcore13,292 bytesSKILL.mdcore13,292 bytesSKILL.mdcore13,292 bytesSKILL.mdcore13,292 bytesreferences/command-mode.mddoc952 bytes
Read SKILL.md
# Test Platform and Framework Detection
Determine **which test platform** (VSTest or Microsoft.Testing.Platform) and **which test framework** (MSTest, xUnit, NUnit, TUnit) a project uses.
## Response contract
Honor the user's requested labels and order exactly, substituting the actual
classification for every placeholder. Start with the verdict: never put a
heading, scratch analysis, tool syntax, or an echoed template before it. Follow
with one concise evidence sentence naming the repository facts needed to justify
every requested classification. When `Framework` is requested, name the package
or project SDK that identifies it. Use a second sentence only for a conflict, an
incomplete configuration, or target-framework-specific differences.
View the complete source on GitHubrun-tests
When your agent uses it
ALWAYS USE before running .NET tests or answering with a test command or flags. Trigger on "run the tests", "exact dotnet test command", one test/class/category/trait/target framework, combined filters, `--filter-query`, `--no-build`, `--diag`, diagnostic logs, TRX, coverage collection, crash/hang dumps, filter errors, or unrecognized options. Chooses repository-compatible classic, VSTest, bridged MTP, or native MTP syntax for MSTest/xUnit/NUnit/TUnit. DO NOT USE for platform identification alone (platform-detection), writing or debugging test code, interpreting an existing coverage report, CI investigation, migration, or a persistent hot reload/watch loop.
What it loads into context
Frontmatter
198 tokensAlways available to the agent
SKILL.md
3,658 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Repository overlay
- Scope and tool policy
- Inputs to discover
- Decision table
- Workflow
- Output contract
- Validation
Files
SKILL.mdcore15,571 bytesSKILL.mdcore15,571 bytes
Read SKILL.md
# Run .NET Tests
Return or execute the command or command sequence that matches the repository's
project system, test platform, framework, and SDK mode.
## Repository overlay
For every repository-scoped task where read-only file inspection is allowed,
check `.agents/skill-overlays/dotnet-test/run-tests.md` at the repository root
before any other discovery. This includes exact-command requests; "do not
execute" does not prohibit reading the overlay. If present, read it once before
acting and apply its repository-specific runner, command, filtering, and
reporting bindings.
Before applying it, require its frontmatter to declareView the complete source on GitHubscaffold-dotnet-test-project
When your agent uses it
MUST USE when an existing .NET test project was excluded from a .slnf/CI solution filter, disappeared from .sln/.slnx discovery, or lost its production ProjectReference; also for requests to set up, create, reuse, add, register, include, or repair a test project. Handles "tests pass directly but CI discovers zero", exact solution wiring, xUnit/NUnit/MSTest, and central packages. DO NOT USE to only author tests in an already-wired project (code-testing), run tests, migrate, or correct MSTest syntax/configuration without changing project or CI files (writing-mstest-tests).
What it loads into context
Frontmatter
181 tokensAlways available to the agent
SKILL.md
2,588 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Repository overlay
- Route the Request
- Workflow
- Output
- Completion Checks
Files
SKILL.mdcore12,346 bytesSKILL.mdcore12,346 bytesSKILL.mdcore12,346 bytes
Read SKILL.md
# Scaffold or Repair a .NET Test Project
Create the smallest missing test container or repair only the missing wiring.
The goal is test discovery through the repository's real build entry point, not
a preferred solution layout.
## Repository overlay
For every repository-scoped task where read-only file inspection is allowed,
check `.agents/skill-overlays/dotnet-test/scaffold-dotnet-test-project.md` at
the repository root before any other discovery. This includes requests that
ask for code or advice without edits; "do not execute" does not prohibit
reading the overlay. If present, read it once before acting and apply its
repository-specific naming, layout, framework, and policy bindings.View the complete source on GitHubtest-analysis-extensions
When your agent uses it
Provides file paths to language-specific reference files for the test ANALYSIS skills (assertion-quality, test-anti-patterns, test-gap-analysis, test-smell-detection, test-tagging). Read this catalog to discover available extension files (e.g., dotnet.md for .NET/MSTest/xUnit/NUnit/TUnit, python.md for pytest/unittest, typescript.md for Jest/Vitest/Mocha, java.md for JUnit/TestNG, etc.). Do not invoke this reference-only skill — its bundled files are read by the quality agent and analysis skills needing framework-specific lookup tables (test markers, assertion APIs, skip annotations, sleep patterns, mystery guest indicators, integration markers, setup/teardown, tag-support capability).
What it loads into context
Frontmatter
192 tokensAlways available to the agent
SKILL.md
1,086 tokensWhen the skill is activated
Reference documents
21,312 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Available Extension Files
- Usage
- Capability tags
- Notes for skill authors
Files
SKILL.mdcore4,673 bytesextensions/cpp.mddoc8,615 bytesextensions/dotnet.mddoc6,883 bytesextensions/go.mddoc7,602 bytesextensions/java.mddoc7,691 bytesextensions/kotlin.mddoc7,334 bytesextensions/powershell.mddoc6,410 bytesextensions/python.mddoc6,961 bytesextensions/ruby.mddoc6,760 bytesextensions/rust.mddoc7,336 bytesextensions/swift.mddoc6,957 bytesextensions/typescript.mddoc7,544 bytes
Read SKILL.md
# Test Analysis Extensions
This reference-only catalog lists the bundled files used by test analysis.
Consumers read the matching file directly; `disable-model-invocation: true`
means this catalog must not be invoked through the model's skill tool.
Resolve these resource paths relative to this catalog, not the project workspace.
## Available Extension Files
| File | Languages / Frameworks | Contents |
|------|------------------------|----------|
| [extensions/dotnet.md](extensions/dotnet.md) | .NET (C#/F#/VB) — MSTest, xUnit, NUnit, TUnit | Test markers, assertion APIs, sleep/delay patterns, skip annotations, mystery guest, integration markers, setup/teardown, tag support |
| [extensions/python.md](extensions/python.md) | Python — pytest, unittest | Same categories, with pytest fixtures/markers and unittest TestCase |
| [extensions/typescript.md](extensions/typescript.md) | TypeScript / JavaScript — Jest, Vitest, Mocha, Jasmine, node:test | Same categories, with async/await pitfalls |View the complete source on GitHubtest-anti-patterns
When your agent uses it
Audit a test file or suite; produce a severity-ranked diagnostic report. ALWAYS USE for tests that verify nothing, missing/tautological assertions, swallowed/broad exceptions, flaky/order-dependent tests, duplication, or magic values. Polyglot. DO NOT USE for direct edits: writing-mstest-tests owns supplied MSTest assertions/attributes/lifecycle; code-testing owns new tests. Exclude running tests, migration, assertion metrics (assertion-quality), raw .NET coverage collection (run-tests), non-.NET coverage collection/analysis (native tooling), project-wide .NET coverage/CRAP (coverage-analysis), named-target .NET CRAP (crap-score), behavioral/pseudo-mutation gaps (test-gap-analysis), test-mix/ happy-vs-error classification and trait distributions (test-tagging), or the testsmells.org catalog (test-smell-detection).
What it loads into context
Frontmatter
206 tokensAlways available to the agent
SKILL.md
6,189 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to Use
- When Not to Use
- Inputs
- Workflow
- Validation
- Common Pitfalls
Files
SKILL.mdcore27,331 bytes
Read SKILL.md
# Test Anti-Pattern Detection
Quick, pragmatic analysis of test code in any supported language for anti-patterns and quality issues that undermine test reliability, maintainability, and diagnostic value.
> **Language-specific guidance**: Read the caller-provided or runtime-listed
> `test-analysis-extensions` catalog and its matching language file when needed.
> Do not invoke the reference-only
> helper. If its files are absent, use the built-in framework rules below.
## When to Use
- User asks to review test quality or find test smells
- User wants to know why tests are flaky or unreliable
- User asks "are my tests good?" or "what's wrong with my tests?"View the complete source on GitHubtest-gap-analysis
When your agent uses it
Find caller-visible production changes existing tests would miss through pseudo-mutation analysis; verify candidates or close gaps only when requested. Includes read-only per-test composition for grading. Polyglot. USE FOR: would tests catch a bug, behavioral blind spots, surviving mutations. DO NOT USE FOR: concrete fix/feature revision proof (test-value-evidence); suite taxonomy (test-tagging); .NET coverage, Cobertura, plateaus or coverage-backed priorities (coverage-analysis); named CRAP (crap-score); new suites (code-testing); assertion/smell audits; mutation tools.
What it loads into context
Frontmatter
140 tokensAlways available to the agent
SKILL.md
3,915 tokensWhen the skill is activated
Reference documents
2,194 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Composition dispatch
- Decision flow
- Output contract
- Reliability rules
- Validation
Files
SKILL.mdcore19,334 bytesSKILL.mdcore19,334 bytesSKILL.mdcore19,334 bytesSKILL.mdcore19,334 bytesSKILL.mdcore19,334 bytesreferences/mutation-catalog.mddoc3,942 bytesreferences/per-test-read-only.mddoc6,677 bytes
Read SKILL.md
# Test Gap Analysis
Answer one question: **which caller-visible production behaviors could change
without an existing test failing?** Mutation reasoning is a probe, not the goal.
Inventory public outcomes first, then verify only credible gaps.
## Composition dispatch
Before entering the decision flow, check the caller's mode. An explicit
`per-test-read-only` request (including composition from `grade-tests`) uses
only [references/per-test-read-only.md](references/per-test-read-only.md).
This mode is assessment context conveyed through the host's supported caller
instructions, not a new skill-loader parameter or a mode-specific skill name.
Read that reference and return its per-test assessment inline; **do not enterView the complete source on GitHubtest-smell-detection
When your agent uses it
Audits existing tests in any language using formal, research-backed test smell names and the testsmells.org 19-smell academic taxonomy. Use when the caller asks for an academic or citable test-smell review, named smell categories, or a formal severity-ranked smell assessment. Covers Assertion Roulette, Conditional Test Logic, Mystery Guest, Eager Test, Sleepy Test, Unknown Test, Sensitive Equality, and the rest of the catalog across .NET, Python, JavaScript/TypeScript, Java, Go, Ruby, Rust, Swift, Kotlin, PowerShell, and C++. DO NOT USE FOR a quick pragmatic test review (use test-anti-patterns), writing or running tests, framework migration, coverage, or assertion-diversity metrics.
What it loads into context
Frontmatter
180 tokensAlways available to the agent
SKILL.md
2,083 tokensWhen the skill is activated
Reference documents
1,395 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Scope
- Audit Workflow
- High-Signal Decisions
- Calibration Rules
- Severity
- Output Contract
- Validation
Files
SKILL.mdcore10,094 bytesreferences/test-smell-catalog.mddoc6,453 bytes
Read SKILL.md
# Test Smell Detection
Audit test code with the academic taxonomy, code evidence, calibrated
framework idioms, and fixes native to the codebase.
## Scope
- Audit only staged or named tests. Search the current workspace before asking
for code; never claim a file is missing until that search finds no relevant
test.
- Read production code only when it changes a verdict.
- For unfamiliar framework APIs, read the matching language file relative to
the caller-provided or runtime-listed `test-analysis-extensions` catalog,
not a skill invocation. If absent, use the framework and rules here and reportView the complete source on GitHubtest-tagging
When your agent uses it
Classifies existing tests by standard traits and reports their distribution. USE FOR: tagging all tests with category attributes, categorizing/tagging/ labeling each test, compare happy vs error paths, audit the test mix, describe coverage shape by test type, or tag then verify the project builds. Read bodies when names mislead. Apply canonical attributes; otherwise report only. DO NOT USE FOR: requests owned by test-anti-patterns, coverage-analysis, crap-score, test-gap-analysis, code-testing, or migration skills.
What it loads into context
Frontmatter
126 tokensAlways available to the agent
SKILL.md
5,066 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to Use
- When Not to Use
- Inputs
- Trait Taxonomy
- Workflow
- Validation
- Common Pitfalls
Files
SKILL.mdcore22,207 bytesSKILL.mdcore22,207 bytesSKILL.mdcore22,207 bytesSKILL.mdcore22,207 bytesSKILL.mdcore22,207 bytesSKILL.mdcore22,207 bytesSKILL.mdcore22,207 bytesSKILL.mdcore22,207 bytes
Read SKILL.md
# Test Trait Tagging
Analyze an existing test suite in any supported language and apply a standardized set of trait tags to each test method, giving teams visibility into their test distribution (positive vs. negative, critical-path coverage, smoke tests, etc.).
> **Language-specific guidance**: Read the caller-provided or runtime-listed
> `test-analysis-extensions` catalog and its matching language file.
> The helper is reference-only, not an invocable skill. If absent,
> continue with the built-in framework table below and report the limitation.
## When to Use
- Auditing a test project to understand the mix of test types
- Adding trait attributes to untagged tests
- Generating a summary report of trait distribution across a test suiteView the complete source on GitHubtest-value-evidence
When your agent uses it
Assess tests for an identified code or test change, feature, PR or commit. USE FOR: review changed behavior or regression tests, prove pre-fix/missing behavior is detected, revision-bound red-green evidence. Polyglot. DO NOT USE without an identified change: hypothetical mutations or general suite blind spots (test-gap-analysis). Also exclude per-test readiness/A-F grades (grade-tests), coverage (coverage-analysis), new suites (code-testing), or mutation engines.
What it loads into context
Frontmatter
117 tokensAlways available to the agent
SKILL.md
2,156 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Inputs and boundaries
- Workflow
- Validation
Files
SKILL.mdcore10,825 bytesSKILL.mdcore10,825 bytes
Read SKILL.md
# Test-value evidence
A passing test proves little unless it detects the relevant wrong behavior.
Assess the changed contracts and their directly related tests, not the entire
repository. Discover and follow the repository's instructions, pinned toolchain,
test commands, assertion conventions, and execution permissions. This skill
does not authorize edits in a read-only review, execution of untrusted code,
workflow dispatch, publication, or access to another session's checkout.
## Inputs and boundaries
Discover the requested diff/revision, production entry points, tests, fixtures,
and available execution artifacts. If the change cannot be identified, report
the missing scope instead of grading the workspace. Existing unchanged testsView the complete source on GitHubtestability-obstacle
When your agent uses it
MUST USE for C#/.NET deterministic tests that require the smallest production seam for DateTime/Task.Delay/File/Environment/Guid/Random, static API preservation, nested/parallel overrides, or no real I/O. USE ONLY when the target workspace contains C# source plus a .csproj or .sln. DO NOT USE for audits, bulk migration, code that already has an injectable seam, or an explicit migration to a user-named existing abstraction (migrate-static-to-wrapper). Use instead of general test generation when the requested test is impossible without a production edit and seam selection is still open.
What it loads into context
Frontmatter
150 tokensAlways available to the agent
SKILL.md
2,925 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to Use
- When Not to Use
- Inputs
- Workflow
- Output Contract
- Validation
- Common Pitfalls
Files
SKILL.mdcore14,392 bytesSKILL.mdcore14,392 bytesSKILL.mdcore14,392 bytes
Read SKILL.md
# Resolve a Testability Obstacle
Introduce the smallest behavior-preserving seam needed to test a specific C#
behavior, then add deterministic tests that prove both the behavior and the seam.
The production edit is a means to the requested test, not an invitation to
redesign adjacent code.
## When to Use
- A requested test would otherwise read/write the real filesystem.
- Behavior depends on the current time, delay, random value, environment, console,
process, or another ambient dependency.
- The user explicitly permits or requests a safe production seam.
- Existing tests cannot control a dependency without process-global mutation.View the complete source on GitHubwriting-mstest-tests
When your agent uses it
ALWAYS USE when asked to fix, rewrite, update, improve, modernize, show corrected code for, or explain existing MSTest tests or MSTest-specific configuration. Use for "review" when corrected code or edits are wanted, even for one pasted assertion or passing tests with bad failure output. Covers expected/actual labels; generic Boolean, collection, string, numeric, null, identity, exception, hard-cast, and object[] checks; TestContext/lifecycle; timeout/cancellation; OS/CI conditions, retry, cleanup, parallelization, MSTest.Sdk project setup, and MSTESTxxxx. Honor the installed MSTest version. DO NOT USE to design new test cases (code-testing), perform report-only audits, create project files rather than explain MSTest setup, run tests, migrate frameworks, or handle non-MSTest/non-.NET code.
What it loads into context
Frontmatter
225 tokensAlways available to the agent
SKILL.md
4,784 tokensWhen the skill is activated
Reference documents
1,072 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Repository overlay
- When to Use
- When Not to Use
- Inputs
- Response Guidelines
- Workflow
Files
SKILL.mdcore19,980 bytesSKILL.mdcore19,980 bytesSKILL.mdcore19,980 bytesreferences/advanced-mstest-patterns.mddoc4,369 bytes
Read SKILL.md
# Writing MSTest Tests
Help users write effective MSTest unit tests without exceeding the API level or
conventions of the project's installed test stack.
## Repository overlay
For every repository-scoped task where read-only file inspection is allowed,
check `.agents/skill-overlays/dotnet-test/writing-mstest-tests.md` at the
repository root before any other discovery. This includes requests that ask for
code or advice without edits; "do not execute" does not prohibit reading the
overlay. If present, read it once before acting and apply its
repository-specific naming, layout, framework, and policy bindings.
Require its frontmatter to declare `core: dotnet-test/writing-mstest-tests`,View the complete source on GitHubdotnet-aot-compat
When your agent uses it
Make .NET projects compatible with Native AOT and trimming by systematically resolving IL trim/AOT analyzer warnings. USE FOR: making projects AOT-compatible, fixing trimming warnings, resolving IL warnings (IL2026, IL2070, IL2067, IL2072, IL3050), adding DynamicallyAccessedMembers annotations, enabling IsAotCompatible. DO NOT USE FOR: publishing native AOT binaries, optimizing binary size, replacing reflection-heavy libraries with alternatives. INVOKES: no tools — pure knowledge skill.
What it loads into context
Frontmatter
129 tokensAlways available to the agent
SKILL.md
3,909 tokensWhen the skill is activated
Reference documents
386 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to Use This Skill
- When Not to Use This Skill
- Prerequisites
- Background: What AOT Compatibility Means
- Critical Rules
- Step-by-Step Procedure
- Stop Signals
- Polyfills for Older TFMs
- Common Gotchas
- References
- Checklist
Files
SKILL.mdcore16,833 bytesSKILL.mdcore16,833 bytesSKILL.mdcore16,833 bytesSKILL.mdcore16,833 bytesSKILL.mdcore16,833 bytesSKILL.mdcore16,833 bytesSKILL.mdcore16,833 bytesreferences/polyfills.mddoc1,625 bytes
Read SKILL.md
# dotnet-aot-compat
Make .NET projects compatible with Native AOT and trimming by systematically resolving all IL trim/AOT analyzer warnings.
## When to Use This Skill
- **"Make this project AOT-compatible"**
- **"Fix trimming warnings"** or **"fix IL warnings"**
- **"Resolve IL2070 / IL2067 / IL2072 / IL2026 / IL3050 warnings"**
- **"Add DynamicallyAccessedMembers annotations"**
- **"Enable IsAotCompatible in my .csproj"**
- **"My project has trim analyzer warnings after upgrading to net8.0"**
- **"Annotate reflection code for the trimmer"**
View the complete source on GitHubmigrate-dotnet10-to-dotnet11
When your agent uses it
Migrate a .NET 10 project or solution to .NET 11 and resolve all breaking changes. This is a MIGRATION skill — use it when upgrading from .NET 10 to .NET 11, NOT for writing new programs. USE FOR: upgrading TargetFramework from net10.0 to net11.0, fixing build errors after updating the .NET 11 SDK, resolving source-breaking and behavioral changes in .NET 11 runtime, C# 15 compiler, and EF Core 11, adapting to updated minimum hardware requirements (x86-64-v2, Arm64 LSE), and updating CI/CD pipelines and Dockerfiles for .NET 11. DO NOT USE FOR: .NET Framework migrations, upgrading from .NET 9 or earlier, greenfield .NET 11 projects, or cosmetic modernization unrelated to the upgrade. NOTE: .NET 11 is in preview. Covers breaking changes through Preview 3.
What it loads into context
Frontmatter
221 tokensAlways available to the agent
SKILL.md
3,494 tokensWhen the skill is activated
Reference documents
6,343 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to Use
- When Not to Use
- Inputs
- Workflow
- Reference Documents
Files
SKILL.mdcore14,682 bytesSKILL.mdcore14,682 bytesreferences/aspnetcore-dotnet10to11.mddoc1,588 bytesreferences/core-libraries-dotnet10to11.mddoc7,038 bytesreferences/cryptography-dotnet10to11.mddoc1,826 bytesreferences/csharp-compiler-dotnet10to11.mddoc5,431 bytesreferences/efcore-dotnet10to11.mddoc5,039 bytesreferences/runtime-jit-dotnet10to11.mddoc3,371 bytesreferences/sdk-msbuild-dotnet10to11.mddoc1,659 bytes
Read SKILL.md
# .NET 10 → .NET 11 Migration
Migrate a .NET 10 project or solution to .NET 11, systematically resolving all breaking changes. The outcome is a project targeting `net11.0` that builds cleanly, passes tests, and accounts for every behavioral, source-incompatible, and binary-incompatible change introduced in .NET 11.
> **Note:** .NET 11 is currently in preview. This skill covers breaking changes documented through Preview 3.
## When to Use
- Upgrading `TargetFramework` from `net10.0` to `net11.0`
- Resolving build errors or new warnings after updating the .NET 11 SDK
- Adapting to behavioral changes in .NET 11 runtime, ASP.NET Core 11, or EF Core 11
- Updating CI/CD pipelines, Dockerfiles, or deployment scripts for .NET 11
- Fixing C# 15 compiler breaking changes after SDK upgrade
View the complete source on GitHubmigrate-dotnet8-to-dotnet9
When your agent uses it
Migrate a .NET 8 project to .NET 9 and resolve all breaking changes. USE FOR: upgrading TargetFramework from net8.0 to net9.0, fixing build errors after updating the .NET 9 SDK, resolving behavioral changes in .NET 9 / C# 13 / ASP.NET Core 9 / EF Core 9, replacing BinaryFormatter (now always throws), resolving SYSLIB0054-SYSLIB0057, adapting to params span overload resolution, fixing C# 13 compiler changes, updating HttpClientFactory for SocketsHttpHandler, and resolving EF Core 9 migration/Cosmos DB changes. DO NOT USE FOR: .NET Framework migrations, upgrading from .NET 7 or earlier, greenfield .NET 9 projects, or cosmetic modernization unrelated to the upgrade.
What it loads into context
Frontmatter
193 tokensAlways available to the agent
SKILL.md
3,892 tokensWhen the skill is activated
Reference documents
8,543 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to Use
- When Not to Use
- Inputs
- Workflow
- Reference Documents
Files
SKILL.mdcore15,769 bytesreferences/aspnet-core-dotnet8to9.mddoc2,357 bytesreferences/containers-interop-dotnet8to9.mddoc1,977 bytesreferences/core-libraries-dotnet8to9.mddoc7,148 bytesreferences/cryptography-dotnet8to9.mddoc2,146 bytesreferences/csharp-compiler-dotnet8to9.mddoc3,399 bytesreferences/deployment-runtime-dotnet8to9.mddoc2,498 bytesreferences/efcore-dotnet8to9.mddoc7,060 bytesreferences/sdk-msbuild-dotnet8to9.mddoc2,393 bytesreferences/serialization-networking-dotnet8to9.mddoc5,565 bytesreferences/winforms-wpf-dotnet8to9.mddoc3,838 bytes
Read SKILL.md
# .NET 8 → .NET 9 Migration
Migrate a .NET 8 project or solution to .NET 9, systematically resolving all breaking changes. The outcome is a project targeting `net9.0` that builds cleanly, passes tests, and accounts for every behavioral, source-incompatible, and binary-incompatible change introduced in the .NET 9 release.
## When to Use
- Upgrading `TargetFramework` from `net8.0` to `net9.0`
- Resolving build errors or new warnings after updating the .NET 9 SDK
- Adapting to behavioral changes in .NET 9 runtime, ASP.NET Core 9, or EF Core 9
- Replacing `BinaryFormatter` usage (now always throws at runtime)
- Updating CI/CD pipelines, Dockerfiles, or deployment scripts for .NET 9
## When Not to Use
View the complete source on GitHubmigrate-dotnet9-to-dotnet10
When your agent uses it
Migrate a .NET 9 project or solution to .NET 10 and resolve all breaking changes. USE FOR: upgrading TargetFramework from net9.0 to net10.0, fixing build errors after updating the .NET 10 SDK, resolving source and behavioral changes in .NET 10 / C# 14 / ASP.NET Core 10 / EF Core 10, updating Dockerfiles for Debian-to-Ubuntu base images, resolving obsoletion warnings (SYSLIB0058-SYSLIB0062), adapting to SDK/NuGet changes (NU1510, PrunePackageReference), migrating System.Linq.Async to built-in AsyncEnumerable, fixing OpenApi v2 API changes, cryptography renames, and C# 14 compiler changes (field keyword, extension keyword, span overloads). DO NOT USE FOR: .NET Framework migrations, upgrading from .NET 8 or earlier (use migrate-dotnet8-to-dotnet9 first), greenfield .NET 10 projects, or cosmetic modernization. LOADS REFERENCES: csharp-compiler, core-libraries, sdk-msbuild (always); aspnet-core, efcore, cryptography, extensions-hosting, serialization-networking, winforms-wpf, containers-interop (selective).
What it loads into context
Frontmatter
296 tokensAlways available to the agent
SKILL.md
4,654 tokensWhen the skill is activated
Reference documents
9,300 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to Use
- When Not to Use
- Inputs
- Workflow
- Reference Documents
Files
SKILL.mdcore19,387 bytesSKILL.mdcore19,387 bytesSKILL.mdcore19,387 bytesSKILL.mdcore19,387 bytesSKILL.mdcore19,387 bytesreferences/aspnet-core-dotnet9to10.mddoc6,827 bytesreferences/containers-interop-dotnet9to10.mddoc3,083 bytesreferences/core-libraries-dotnet9to10.mddoc4,914 bytesreferences/cryptography-dotnet9to10.mddoc2,849 bytesreferences/csharp-compiler-dotnet9to10.mddoc5,052 bytesreferences/efcore-dotnet9to10.mddoc6,638 bytesreferences/extensions-hosting-dotnet9to10.mddoc3,253 bytesreferences/sdk-msbuild-dotnet9to10.mddoc2,455 bytesreferences/serialization-networking-dotnet9to10.mddoc3,020 bytesreferences/winforms-wpf-dotnet9to10.mddoc3,482 bytes
Read SKILL.md
# .NET 9 → .NET 10 Migration
Migrate a .NET 9 project or solution to .NET 10, systematically resolving all breaking changes. The outcome is a project targeting `net10.0` that builds cleanly, passes tests, and accounts for every behavioral, source-incompatible, and binary-incompatible change introduced in the .NET 10 release.
## When to Use
- Upgrading `TargetFramework` from `net9.0` to `net10.0`
- Resolving build errors or new warnings after updating the .NET 10 SDK
- Adapting to behavioral changes in .NET 10 runtime, ASP.NET Core 10, or EF Core 10
- Updating CI/CD pipelines, Dockerfiles, or deployment scripts for .NET 10
- Migrating from the community `System.Linq.Async` package to the built-in `System.Linq.AsyncEnumerable`
## When Not to Use
View the complete source on GitHubmigrate-nullable-references
When your agent uses it
Enable nullable reference types in a C# project and systematically resolve all warnings. USE FOR: adopting NRTs in existing codebases, file-by-file or project-wide migration, fixing CS8602/CS8618/CS86xx warnings, annotating APIs for nullability, cleaning up null-forgiving operators, upgrading dependencies with new nullable annotations. DO NOT USE FOR: projects already fully migrated with zero warnings (unless auditing suppressions), fixing a handful of nullable warnings in code that already has NRTs enabled, suppressing warnings without fixing them, C# 7.3 or earlier projects. INVOKES: Get-NullableReadiness.ps1 scanner script.
What it loads into context
Frontmatter
159 tokensAlways available to the agent
SKILL.md
7,888 tokensWhen the skill is activated
Reference documents
2,576 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to Use
- When Not to Use
- Inputs
- Workflow
- Validation
- Breaking Changes from NRT Annotations (Libraries)
- Common Pitfalls
- Entity Framework Core Considerations
- ASP.NET Core Considerations
- More Info
Scripts executed separately
scripts/Get-NullableReadiness.ps1
Files
SKILL.mdcore35,936 bytesSKILL.mdcore35,936 bytesreferences/aspnet-core.mddoc4,248 bytesreferences/breaking-changes.mddoc1,429 bytesreferences/ef-core.mddoc3,836 bytesreferences/nullable-attributes.mddoc2,386 bytesscripts/Get-NullableReadiness.ps1runs19,844 bytes
Read SKILL.md
# Nullable Reference Migration
Enable C# nullable reference types (NRTs) in an existing codebase and systematically resolve all warnings. The outcome is a project (or solution) with `<Nullable>enable</Nullable>`, zero nullable warnings, and accurately annotated public API surfaces — giving both the compiler and consumers reliable nullability information.
## When to Use
- Enabling nullable reference types in an existing C# project or solution
- Systematically resolving CS86xx nullable warnings after enabling the feature
- Annotating a library's public API surface so consumers get accurate nullability information
- Upgrading a dependency that has added nullable annotations and new warnings appear
- Analyzing suppressions in a code base that has already enabled NRTs to determine whether they can be removed
## When Not to Use
View the complete source on GitHubthread-abort-migration
When your agent uses it
Guides migration of .NET Framework Thread.Abort usage to cooperative cancellation in modern .NET. USE FOR: modernizing code that calls Thread.Abort, catching ThreadAbortException, replacing Thread.ResetAbort, replacing Thread.Interrupt for thread termination, resolving PlatformNotSupportedException or SYSLIB0006 after retargeting to .NET 6+, migrating ASP.NET Response.End or Response.Redirect(url, true) which internally call Thread.Abort. DO NOT USE FOR: code that only uses Thread.Join, Thread.Sleep, or Thread.Start without any abort, interrupt, or ThreadAbortException usage — these APIs work identically in modern .NET and need no migration. Also not for projects staying on .NET Framework, or Thread.Abort usage inside third-party libraries you do not control.
What it loads into context
Frontmatter
189 tokensAlways available to the agent
SKILL.md
2,800 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to Use
- When Not to Use
- Inputs
- Workflow
- Validation
- Common Pitfalls
- More Info
Files
SKILL.mdcore12,827 bytesSKILL.mdcore12,827 bytes
Read SKILL.md
# Thread.Abort Migration
This skill helps an agent migrate .NET Framework code that uses `Thread.Abort` to the cooperative cancellation model required by modern .NET (6+). `Thread.Abort` throws `PlatformNotSupportedException` in modern .NET — there is no way to forcibly terminate a managed thread. The skill identifies the usage pattern first, then applies the correct replacement strategy.
## When to Use
- Migrating a .NET Framework project to .NET 6+ that calls `Thread.Abort`
- Replacing `ThreadAbortException` catch blocks that use control flow or cleanup logic
- Removing `Thread.ResetAbort` calls that cancel pending aborts
- Replacing `Thread.Interrupt` for waking blocked threads
- Migrating ASP.NET code that uses `Response.End` or `Response.Redirect(url, true)`, which internally call `Thread.Abort`
- Resolving `PlatformNotSupportedException` or `SYSLIB0006` warnings after a target framework change
## When Not to UseView the complete source on GitHubwinforms-expert
When your agent uses it
Create, modify, debug, or review Windows Forms applications only when the request contains a concrete Windows Forms marker. USE FOR: WinForms, Windows Forms, System.Windows.Forms, WinForms Form or UserControl designer files (*.Designer.cs or *.Designer.vb), Visual Studio WinForms Designer, TableLayoutPanel, BindingSource, DataGridView, Control.InvokeAsync, component-tray ownership, or custom control serialization. DO NOT USE FOR: WPF or WPF XAML, including Window.InputBindings, KeyBinding, commands, or DataContext; .NET MAUI; Avalonia; or any request where none of the listed Windows Forms markers is present.
What it loads into context
Frontmatter
158 tokensAlways available to the agent
SKILL.md
4,673 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Purpose
- Execution Contract
- Boundaries
- Inputs
- Non-Negotiable Designer Contract
- Rules That Change the Answer
- Workflow
- Observable Completion Criteria
- Common Pitfalls
Files
SKILL.mdcore23,143 bytesSKILL.mdcore23,143 bytesSKILL.mdcore23,143 bytesSKILL.mdcore23,143 bytesSKILL.mdcore23,143 bytesSKILL.mdcore23,143 bytes
Read SKILL.md
# WinForms Expert
## Purpose
Implement WinForms changes that compile, behave correctly at runtime, and remain editable in the
Visual Studio Designer. Treat `InitializeComponent` and `*.Designer.*` as a serialization format,
not ordinary application code; keep behavior in the main partial class and verify designer
usability whenever the environment permits.
## Execution Contract
Before editing, list the workspace root and locate any task-specific validator, test script, or
documented verification command. Read its scenario selector and required arguments before choosing
an implementation. After editing:View the complete source on GitHubcsharp-expert
When your agent uses it
Route C# and .NET requests to the exact installed specialist or smallest dotnet/skills marketplace plugin. USE FOR: "which specialist should own this" or "how do I add the skill" requests involving ASP.NET Core endpoints, Blazor, MAUI binding, Windows Forms specialist selection or installation, EF Core queries, test or framework migration, runtime CPU/allocation evidence, file-based C#, editor/compiler defects, a surviving MSBuild `.binlog`, or a plugin missing from `/skills`; also use for C# semantics when no narrower specialist exists. DO NOT USE FOR: requests that already name the exact installed specialist to invoke, or work unrelated to C# or .NET.
What it loads into context
Frontmatter
166 tokensAlways available to the agent
SKILL.md
4,385 tokensWhen the skill is activated
Reference documents
1,470 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Purpose
- Routing Contract
- Step 1: Classify the Prompt
- Step 2: Detect the Solution Type
- Step 3: Match the Skill and Marketplace Plugin
- Step 4: Obtain a Missing Skill
- Step 5: Compose Skills Deliberately
- Step 6: C# Language Fallback
- Boundaries and Failure Handling
- Observable Completion Criteria
Files
SKILL.mdcore21,783 bytesSKILL.mdcore21,783 bytesSKILL.mdcore21,783 bytesSKILL.mdcore21,783 bytesSKILL.mdcore21,783 bytesSKILL.mdcore21,783 bytesSKILL.mdcore21,783 bytesSKILL.mdcore21,783 bytesSKILL.mdcore21,783 bytesSKILL.mdcore21,783 bytesreferences/dotnet-skills-marketplace.mddoc6,242 bytes
Read SKILL.md
# C# Expert
## Purpose
Act as the front door for C# and .NET work. Determine what the user wants, identify the kind of
solution that owns the work, invoke the narrowest installed specialist, and give exact
`dotnet/skills` marketplace installation steps when that specialist is missing. Keep direct C#
language guidance as the fallback, not the default.
## Routing Contract
1. Classify the requested outcome from the prompt.
2. Inspect the smallest set of repository files needed to identify the solution type.
3. Compare both signals with the descriptions of the skills currently available to the runtime.View the complete source on GitHubcsharp-refactoring
When your agent uses it
Safely refactors C#/.NET code without changing behavior. USE FOR any request to refactor, rename, move, extract, inline, merge, consolidate, deduplicate, split, or modernize C# code, including partial/generated declarations, wrappers, public APIs, serialization/reflection/configuration names, friend assemblies, conditional compilation, and multi-targeted projects. Also use when a request calls a feature, bug fix, package/framework upgrade, or public nullability change a refactor and the behavior-changing part must be separated or declined. DO NOT USE FOR ordinary feature or bug fixes not presented as refactoring; standalone upgrades after reclassification (use dotnet-upgrade); adding tests; or formatting-only work.
What it loads into context
Frontmatter
157 tokensAlways available to the agent
SKILL.md
2,607 tokensWhen the skill is activated
Reference documents
684 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Mandatory gate: classify before validation or editing
- Work only in the current workspace
- Rename / move by bindings, not text
- Consolidate toward the existing source of truth
- Decisions that change the edit
- Preserve contracts beyond C# call sites
- Verify proportionally
- Final response contract
- Cross-boundary hazards (only when it touches a boundary)
- Stop an in-scope refactor when
Files
SKILL.mdcore12,399 bytesSKILL.mdcore12,399 bytesSKILL.mdcore12,399 bytesSKILL.mdcore12,399 bytesSKILL.mdcore12,399 bytesSKILL.mdcore12,399 bytesSKILL.mdcore12,399 bytesreferences/operation-catalog.mddoc2,875 bytes
Read SKILL.md
# C# Refactoring (behavior-preserving)
A refactor changes **structure**, never observable **behavior**. Do the edit with binding-aware tools,
then confirm behavior held with a build + the relevant tests. Keep the effort proportional to the change:
a one-line local rename does not need the ceremony a public multi-targeted change does.
## Mandatory gate: classify before validation or editing
Read only enough repository context to classify **each requested operation**. Do this before restoring,
building, or making an edit. Classification precedence is:
- If the request explicitly asks for at least one separable behavior-preserving operation, complete
that structural work and defer only the behavior-changing or contract-changing operations. Do not
invent or infer structural work to avoid the stop response.View the complete source on GitHubmsbuild
When your agent uses it
Use only for MSBuild failure investigation, build-performance analysis, or review of existing build XML/extension contracts. A plan to convert a working legacy/non-SDK project to SDK style or migrate packages.config is a project-system migration, NOT a build-file review: do not activate, even to check scope. Framework/API upgrades are also excluded. Activate for advisory Import/Exists hook and NuGet packed-import questions even without a checkout or failed build; .csproj/.fsproj/.vbproj/.props/.targets conditions; custom-target inputs/outputs; .binlog capture/replay; failing dotnet build/restore/pack/publish or MSBuild-based test builds; slow evaluation, compilation, copying, or no-change builds; and controlled timing comparisons. Exclude SDK installation alone, C# refactoring, runtime profiling, assertions after successful builds, and non-MSBuild builds.
What it loads into context
Frontmatter
187 tokensAlways available to the agent
SKILL.md
1,802 tokensWhen the skill is activated
Reference documents
25,868 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Start with the task and evidence
- 1. Troubleshoot build issues
- 2. Diagnose and improve build performance
- 3. Review build authoring
- Shared evidence and safety
- Completion
Files
SKILL.mdcore8,992 bytesSKILL.mdcore8,992 bytesreferences/antipatterns/additional-antipatterns.mddoc12,775 bytesreferences/antipatterns/incremental-build-inputs-outputs.mddoc3,040 bytesreferences/antipatterns/private-assets.mddoc1,545 bytesreferences/binlog-failure-analysis.mddoc4,891 bytesreferences/binlog-generation.mddoc3,378 bytesreferences/build-perf-baseline.mddoc18,748 bytesreferences/build-perf-diagnostics.mddoc14,226 bytesreferences/copy-to-output-directory.mddoc8,144 bytesreferences/eval-performance.mddoc8,638 bytesreferences/extension-points.mddoc13,324 bytesreferences/incremental-build.mddoc16,409 bytesreferences/msbuild-antipatterns.mddoc16,308 bytes
Read SKILL.md
# MSBuild troubleshooting
This is the entry skill. Choose **troubleshooting**, **performance**, or **authoring review**, then
read only the relevant local references. The references retain the content and identities of
the original MSBuild skills, with correctness fixes; they are not separate skills to activate.
## Start with the task and evidence
For tasks that need a checkout, discover the relevant project/solution, shared build files, SDK
selection, and repository build instructions in the current workspace. Preserve the original command, working directory,
configuration, target framework, runtime identifier, global properties, and target.
Ask only for consequential information that cannot be discovered.
An existing `.binlog` can be the only available artifact. Analyze it before requesting a newView the complete source on GitHubsetup-local-sdk
When your agent uses it
Install a .NET SDK locally for safe preview testing, specific-version pinning, or reproducible team setups — without modifying the system-wide installation. USE FOR: trying .NET previews safely, testing specific SDK versions, installing MAUI or other workloads on a preview, updating or replacing an existing local SDK, creating reproducible team/CI install scripts, configuring global.json paths. DO NOT USE FOR: system-wide SDK installs, .NET hosts older than 10, runtime-only installs, or projects not using SDK-style commands.
What it loads into context
Frontmatter
128 tokensAlways available to the agent
SKILL.md
3,927 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Purpose
- When NOT to use
- Inputs / Prerequisites
- Workflow
- Common pitfalls
Files
SKILL.mdcore14,686 bytesSKILL.mdcore14,686 bytesSKILL.mdcore14,686 bytesSKILL.mdcore14,686 bytesSKILL.mdcore14,686 bytesSKILL.mdcore14,686 bytesSKILL.mdcore14,686 bytesSKILL.mdcore14,686 bytesSKILL.mdcore14,686 bytesSKILL.mdcore14,686 bytesSKILL.mdcore14,686 bytesSKILL.mdcore14,686 bytesSKILL.mdcore14,686 bytesSKILL.mdcore14,686 bytesSKILL.mdcore14,686 bytesSKILL.mdcore14,686 bytesSKILL.mdcore14,686 bytesSKILL.mdcore14,686 bytesSKILL.mdcore14,686 bytes
Read SKILL.md
# setup-local-sdk
## Purpose
Guide the user through installing a .NET SDK into a project-local `.dotnet/`
directory and wiring it up via the `global.json` `paths` feature (.NET 10+).
The examples use .NET 11, but this works with any version — prerelease or stable.
The result is a fully isolated SDK that:
- Does **not** modify the system-wide .NET installation.
- Is picked up automatically by `dotnet` commands from the project root.
- Can be deleted to revert (`rm -rf .dotnet/` or `Remove-Item -Recurse -Force .\.dotnet`).
## When NOT to useView the complete source on GitHubprocess-api-net11
When your agent uses it
Provides guidance on the new System.Diagnostics.Process APIs introduced in .NET 11: Process.Run, Process.RunAndCaptureText, Process.StartAndForget, Process.ReadAllText/Bytes/Lines, KillOnParentExit, InheritedHandles, and StartDetached. USE FOR: starting, orchestrating, or capturing output from external processes in applications targeting net11.0 or later. DO NOT USE FOR: applications targeting .NET 10 or earlier, or basic pre-.NET 11 Process.Start usage without new APIs.
What it loads into context
Frontmatter
122 tokensAlways available to the agent
SKILL.md
2,488 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to Use
- When Not to Use
- Target Framework
- New APIs
- Examples
Files
SKILL.mdcore11,699 bytes
Read SKILL.md
# Process API Improvements — .NET 11
New APIs added to `System.Diagnostics.Process` in .NET 11 simplify process management, eliminate boilerplate, and prevent common deadlock patterns when capturing output in .NET 11 or later applications.
## When to Use
- Running or orchestrating external processes in a .NET 11 (or later) project.
- Needing to start a process, wait for it to exit, and capture its output/error streams without risking deadlocks (`Process.RunAndCaptureText[Async]`).
- Wanting to ensure child processes are automatically terminated when the parent process exits (`KillOnParentExit`).
- Requiring lightweight, low-overhead process creation via `SafeProcessHandle` on supported platforms.
- Requiring fine-grained control over handle inheritance (`InheritedHandles`) or starting detached processes (`StartDetached`).
## When Not to Use
View the complete source on GitHubsystem-text-json-net11
When your agent uses it
Imperative guidance for the System.Text.Json APIs added in .NET 11: the built-in `JsonNamingPolicy.PascalCase` naming policy, and the strongly-typed generic `JsonSerializerOptions.GetTypeInfo` and `JsonSerializerOptions.TryGetTypeInfo` metadata accessors (generic overloads that return a typed `JsonTypeInfo`). USE ONLY when the user is targeting net11.0 or later and needs PascalCase JSON property or dictionary-key names without writing a custom naming policy, a strongly-typed generic `JsonTypeInfo` instead of the non-generic `JsonTypeInfo`, or a no-throw way to probe whether a type's serialization metadata is resolved. DO NOT USE when the target is earlier than net11.0, the requested behavior uses an established pre-net11 naming policy, or the user explicitly selected another JSON library.
What it loads into context
Frontmatter
205 tokensAlways available to the agent
SKILL.md
3,915 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Step 0 — Make the requested `net11.0` validation possible
- Decision table — symptom → do this → never do this
- Rule 1 — PascalCase property names
- Rule 2 — Strongly-typed `JsonTypeInfo<T>`
- Rule 3 — Probe metadata without throwing
- Producing runnable output on `net11.0`
- Worked example — serialize with typed metadata + PascalCase
- Validation checklist
- Common pitfalls
- More info
Files
SKILL.mdcore15,762 bytesSKILL.mdcore15,762 bytesSKILL.mdcore15,762 bytesSKILL.mdcore15,762 bytes
Read SKILL.md
# System.Text.Json — .NET 11
Three APIs were added to `System.Text.Json` in .NET 11. This skill tells you exactly
when to reach for each one, what to write, what **not** to write, and how to prove the
result runs. Do not describe these APIs to the user — apply them, then run the code and
show the output.
| API | Replaces the pre-.NET-11 workaround of... |
| --- | --- |
| `JsonNamingPolicy.PascalCase` (static property) | writing a custom `JsonNamingPolicy` subclass or hand-annotating every member with `[JsonPropertyName]` |
| `JsonSerializerOptions.GetTypeInfo<T>()` | calling non-generic `GetTypeInfo(typeof(T))` and casting to `JsonTypeInfo<T>` |
| `JsonSerializerOptions.TryGetTypeInfo<T>(out JsonTypeInfo<T>? info)` | wrapping `GetTypeInfo` in `try`/`catch` to probe availability |
## Step 0 — Make the requested `net11.0` validation possibleView the complete source on GitHubSkills included
- no-eval-skill
- sample-skill
- csharp-scripts
- dotnet-pinvoke
- nuget-trusted-publishing
- vectorization
- technology-selection
- convert-blazor-server-to-webapp
- dotnet-webapi
- author-component
- collect-user-input
- configure-auth
- coordinate-components
- create-blazor-project
- fetch-and-send-data
- plan-ui-change
- support-prerendering
- use-igniteui-blazor
- use-js-interop
- create-datadriven-aspnetcore
- optimizing-ef-core-queries
- analyzing-dotnet-performance
- android-tombstone-symbolication
- apple-crash-symbolication
- clr-activation-debugging
- dotnet-trace-collect
- dump-collect
- microbenchmarking
- exp-mock-usage-analysis
- exp-test-maintainability
- dotnet-maui-doctor
- maui-app-lifecycle
- maui-collectionview
- maui-data-binding
- maui-dependency-injection
- maui-safe-area
- maui-shell-navigation
- maui-theming
- binlog-failure-analysis
- binlog-generation
- build-parallelism
- build-perf-baseline
- build-perf-diagnostics
- check-bin-obj-clash
- copy-to-output-directory
- directory-build-organization
- eliminate-redundant-restores
- eval-performance
- extension-points
- including-generated-files
- incremental-build
- item-management
- msbuild-antipatterns
- msbuild-modernization
- property-patterns
- resolve-project-references
- target-authoring
- troubleshoot-binlog-mcp
- convert-to-cpm
- template-authoring
- template-comparison
- template-discovery
- template-instantiation
- template-smart-defaults
- template-validation
- migrate-mstest-v1v2-to-v3
- migrate-mstest-v3-to-v4
- migrate-nunit-to-mstest
- migrate-vstest-to-mtp
- migrate-xunit-to-mstest
- migrate-xunit-to-xunit-v3
- assertion-quality
- code-testing
- code-testing-agent
- code-testing-extensions
- coverage-analysis
- crap-score
- detect-static-dependencies
- filter-syntax
- find-untested-sources
- generate-testability-wrappers
- grade-tests
- migrate-static-to-wrapper
- mtp-hot-reload
- platform-detection
- run-tests
- scaffold-dotnet-test-project
- test-analysis-extensions
- test-anti-patterns
- test-gap-analysis
- test-smell-detection
- test-tagging
- test-value-evidence
- testability-obstacle
- writing-mstest-tests
- dotnet-aot-compat
- migrate-dotnet10-to-dotnet11
- migrate-dotnet8-to-dotnet9
- migrate-dotnet9-to-dotnet10
- migrate-nullable-references
- thread-abort-migration
- winforms-expert
- csharp-expert
- csharp-refactoring
- msbuild
- setup-local-sdk
- process-api-net11
- system-text-json-net11
Repository facts
- License
- MIT
- Created
- Feb 3, 2026
- Last pushed
- Nov 6, 2026
- Forks
- 455
- Open issues
- 66
- Project activity
- Active
Rank over the last 12 weeks
Now #252 · best #199 · down 21 in 30 days
- #248 on Oct 30
- #249 on Oct 31
- #248 on Nov 1
- #250 on Nov 2
- #251 from Nov 3 to Nov 5
- #252 since Nov 6
64 earlier periods
- #198 on Aug 2
- #194 on Aug 7
- #193 on Aug 8
- #192 on Aug 9
- #197 on Aug 10
- #198 on Aug 11
- #197 on Aug 12
- #200 from Aug 13 to Aug 14
- #199 on Aug 15
- #200 on Aug 16
- #202 on Aug 17
- #205 from Aug 18 to Aug 19
- #202 on Aug 20
- #204 on Aug 21
- #201 on Aug 22
- #208 on Aug 23
- #207 on Aug 24
- #208 on Aug 25
- #210 on Aug 26
- #211 on Aug 27
- #209 from Aug 28 to Aug 29
- #207 from Aug 30 to Aug 31
- #211 on Sep 1
- #206 on Sep 2
- #212 from Sep 3 to Sep 4
- #215 on Sep 5
- #212 on Sep 6
- #215 from Sep 7 to Sep 9
- #216 from Sep 10 to Sep 11
- #218 on Sep 12
- #220 on Sep 13
- #221 on Sep 14
- #222 from Sep 15 to Sep 16
- #223 on Sep 17
- #226 on Sep 18
- #225 on Sep 19
- #227 on Sep 20
- #228 from Sep 21 to Sep 24
- #227 from Sep 25 to Sep 26
- #228 on Sep 27
- #230 from Sep 28 to Sep 29
- #227 on Sep 30
- #229 on Oct 1
- #231 on Oct 2
- #227 on Oct 3
- #225 on Oct 4
- #226 on Oct 5
- #228 on Oct 6
- #231 on Oct 7
- #230 on Oct 8
- #234 on Oct 9
- #232 from Oct 10 to Oct 11
- #235 on Oct 12
- #236 on Oct 13
- #234 on Oct 14
- #235 on Oct 15
- #233 on Oct 16
- #235 on Oct 17
- #236 from Oct 18 to Oct 20
- #237 from Oct 21 to Oct 22
- #236 from Oct 23 to Oct 24
- #238 on Oct 25
- #240 on Oct 28
- #245 on Oct 29
Before you install
Network or broad shellAutomated signals, not a guarantee
Checked Nov 4, 2026
Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.
Show 398 notes
plugins/dotnet-msbuild/agents/msbuild-code-review.agent.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/dotnet-test/agents/code-testing-fixer.agent.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/dotnet-test/agents/code-testing-implementer.agent.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/dotnet-test/agents/code-testing-implementer.agent.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/dotnet-test/agents/code-testing-implementer.agent.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/dotnet-test/agents/code-testing-implementer.agent.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/dotnet-test/agents/code-testing-implementer.agent.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/dotnet-test/agents/code-testing-planner.agent.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/dotnet-test/agents/code-testing-researcher.agent.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/dotnet-test/agents/code-testing-researcher.agent.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/dotnet-test/agents/code-testing-researcher.agent.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/dotnet-test/agents/code-testing-researcher.agent.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/dotnet-test/agents/code-testing-researcher.agent.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/dotnet-test/agents/code-testing-researcher.agent.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/dotnet-test/agents/code-testing-researcher.agent.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/dotnet-test/agents/code-testing-researcher.agent.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/dotnet-test/agents/code-testing-researcher.agent.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/dotnet-test/agents/code-testing-researcher.agent.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/dotnet-test/agents/code-testing-researcher.agent.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedplugins/dotnet-test/agents/code-testing-researcher.agent.md:1Analysis incomplete: Referenced executable target unavailable; not analyzed
- No broad tool permissions
- No hidden or obfuscated text
- No instruction overrides
- 14 executable scriptsin 7 files: plugins/dotnet-diag/skills/android-tombstone-symbolication/scripts/Symbolicate-Tombstone.ps1:1 plugins/dotnet-diag/skills/apple-crash-symbolication/scripts/Symbolicate-Crash.ps1:1 plugins/dotnet-test/skills/coverage-analysis/scripts/Compute-CrapScores.ps1:1 and 4 more
- No requests to vote in Hot
Show all 917 signals by file
plugins/dotnet-advanced/skills/csharp-scripts/SKILL.md
plugins/dotnet-advanced/skills/dotnet-pinvoke/SKILL.md
- Network accessline 405
For Win32 P/Invoke, prefer [Microsoft.Windows.CsWin32](https://github.com/microsoft/CsWin32) over hand-written signatures. It source-generates correct declarations from metadata. Add a `NativeMethods.txt` listing the APIs you need: - Network accessline 405
For Win32 P/Invoke, prefer [Microsoft.Windows.CsWin32](https://github.com/microsoft/CsWin32) over hand-written signatures. It source-generates correct declarations from metadata. Add a `NativeMethods.txt` listing the APIs you need: - Network accessline 413
For WinRT interop, use [Microsoft.Windows.CsWinRT](https://github.com/microsoft/CsWinRT) to generate .NET projections from `.winmd` files. - Network accessline 413
For WinRT interop, use [Microsoft.Windows.CsWinRT](https://github.com/microsoft/CsWinRT) to generate .NET projections from `.winmd` files. - Network accessline 417
For binding Objective-C libraries (macOS/iOS), use [Objective Sharpie](https://learn.microsoft.com/previous-versions/xamarin/cross-platform/macios/binding/objective-sharpie) to generate initial P/Invoke and binding definitions from Objectiv - Network accessline 417
For binding Objective-C libraries (macOS/iOS), use [Objective Sharpie](https://learn.microsoft.com/previous-versions/xamarin/cross-platform/macios/binding/objective-sharpie) to generate initial P/Invoke and binding definitions from Objectiv
plugins/dotnet-advanced/skills/dotnet-pinvoke/references/diagnostics.md
- Network accessline 32
2. On .NET 8+, set `DOTNET_EnableDiagnostics=1` and use dotnet-dump or dotnet-trace for post-mortem analysis 3. Verify struct layout: `Marshal.SizeOf<T>()` must equal the native `sizeof` for every struct crossing the boundary 4. (.NET Frame - Network accessline 32
2. On .NET 8+, set `DOTNET_EnableDiagnostics=1` and use dotnet-dump or dotnet-trace for post-mortem analysis 3. Verify struct layout: `Marshal.SizeOf<T>()` must equal the native `sizeof` for every struct crossing the boundary 4. (.NET Frame - Network accessline 34
4. (.NET Framework only) Enable [Managed Debugging Assistants](https://learn.microsoft.com/en-us/dotnet/framework/debug-trace-profile/diagnosing-errors-with-managed-debugging-assistants) (MDAs) for `pInvokeStackImbalance` and `invalidOverla - Network accessline 34
4. (.NET Framework only) Enable [Managed Debugging Assistants](https://learn.microsoft.com/en-us/dotnet/framework/debug-trace-profile/diagnosing-errors-with-managed-debugging-assistants) (MDAs) for `pInvokeStackImbalance` and `invalidOverla - Network accessline 38
- [P/Invoke](https://learn.microsoft.com/en-us/dotnet/standard/native-interop/pinvoke) - Network accessline 38
- [P/Invoke](https://learn.microsoft.com/en-us/dotnet/standard/native-interop/pinvoke) - Network accessline 39
- [LibraryImport source generation](https://learn.microsoft.com/en-us/dotnet/standard/native-interop/pinvoke-source-generation) - Network accessline 39
- [LibraryImport source generation](https://learn.microsoft.com/en-us/dotnet/standard/native-interop/pinvoke-source-generation) - Network accessline 40
- [Type marshalling](https://learn.microsoft.com/en-us/dotnet/standard/native-interop/type-marshalling) - Network accessline 40
- [Type marshalling](https://learn.microsoft.com/en-us/dotnet/standard/native-interop/type-marshalling) - Network accessline 41
- [SafeHandle](https://learn.microsoft.com/en-us/dotnet/api/system.runtime.interopservices.safehandle) - Network accessline 41
- [SafeHandle](https://learn.microsoft.com/en-us/dotnet/api/system.runtime.interopservices.safehandle) - Network accessline 42
- [NativeLibrary](https://learn.microsoft.com/en-us/dotnet/api/system.runtime.interopservices.nativelibrary) - Network accessline 42
- [NativeLibrary](https://learn.microsoft.com/en-us/dotnet/api/system.runtime.interopservices.nativelibrary) - Network accessline 43
- [Best practices](https://learn.microsoft.com/en-us/dotnet/standard/native-interop/best-practices) - Network accessline 43
- [Best practices](https://learn.microsoft.com/en-us/dotnet/standard/native-interop/best-practices)
plugins/dotnet-advanced/skills/nuget-trusted-publishing/SKILL.md
- Network accessline 14
Set up [NuGet trusted publishing](https://learn.microsoft.com/en-us/nuget/nuget-org/trusted-publishing) on a GitHub Actions repo. Replaces long-lived API keys with OIDC-based short-lived tokens — no secrets to rotate or leak. - Network accessline 14
Set up [NuGet trusted publishing](https://learn.microsoft.com/en-us/nuget/nuget-org/trusted-publishing) on a GitHub Actions repo. Replaces long-lived API keys with OIDC-based short-lived tokens — no secrets to rotate or leak. - Access to secretsline 25
[Credential-related source omitted] - Access to secretsline 25
[Credential-related source omitted] - Network accessline 89
2. Guide the user to create the trusted publishing policy: > Go to [**nuget.org/account/trustedpublishing**](https://www.nuget.org/account/trustedpublishing) → **Add policy** - Network accessline 89
2. Guide the user to create the trusted publishing policy: > Go to [**nuget.org/account/trustedpublishing**](https://www.nuget.org/account/trustedpublishing) → **Add policy** - Network accessline 90
> Go to [**nuget.org/account/trustedpublishing**](https://www.nuget.org/account/trustedpublishing) → **Add policy** - Network accessline 90
> Go to [**nuget.org/account/trustedpublishing**](https://www.nuget.org/account/trustedpublishing) → **Add policy** - Access to secretsline 139
[Credential-related source omitted] - Access to secretsline 139
[Credential-related source omitted] - Network accessline 163
- **Package type details**: [references/package-types.md](references/package-types.md) — detection logic, required properties, minimal .csproj examples - **Publish workflow template**: [references/publish-workflow.md](references/publish-wor - Network accessline 163
- **Package type details**: [references/package-types.md](references/package-types.md) — detection logic, required properties, minimal .csproj examples - **Publish workflow template**: [references/publish-workflow.md](references/publish-wor - Network accessline 165
- **Microsoft docs**: [NuGet Trusted Publishing](https://learn.microsoft.com/en-us/nuget/nuget-org/trusted-publishing) - Network accessline 165
- **Microsoft docs**: [NuGet Trusted Publishing](https://learn.microsoft.com/en-us/nuget/nuget-org/trusted-publishing)
plugins/dotnet-advanced/skills/nuget-trusted-publishing/references/package-types.md
- Network accessline 168
{ "$schema": "https://static.modelcontextprotocol.io/schemas/2025-10-17/server.schema.json", - Network accessline 168
{ "$schema": "https://static.modelcontextprotocol.io/schemas/2025-10-17/server.schema.json", - Network accessline 169
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-10-17/server.schema.json", - Network accessline 169
"$schema": "https://static.modelcontextprotocol.io/schemas/2025-10-17/server.schema.json", - Network accessline 174
{ "registryType": "nuget", "registryBaseUrl": "https://api.nuget.org", - Network accessline 174
{ "registryType": "nuget", "registryBaseUrl": "https://api.nuget.org", - Network accessline 175
"registryType": "nuget", "registryBaseUrl": "https://api.nuget.org", "identifier": "contoso.services.mcp", - Network accessline 175
"registryType": "nuget", "registryBaseUrl": "https://api.nuget.org", "identifier": "contoso.services.mcp", - Network accessline 176
"registryBaseUrl": "https://api.nuget.org", - Network accessline 176
"registryBaseUrl": "https://api.nuget.org",
plugins/dotnet-advanced/skills/nuget-trusted-publishing/references/publish-workflow.md
- Network accessline 52
- name: Push to NuGet run: dotnet nuget push ./artifacts/*.nupkg --api-key ${{ steps.login.outputs.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json --skip-duplicate - Network accessline 52
- name: Push to NuGet run: dotnet nuget push ./artifacts/*.nupkg --api-key ${{ steps.login.outputs.NUGET_API_KEY }} --source https://api.nuget.org/v3/index.json --skip-duplicate - Network accessline 53
[Credential-related source omitted] - Network accessline 53
[Credential-related source omitted] - Access to secretsline 53
[Credential-related source omitted] - Access to secretsline 53
[Credential-related source omitted]
plugins/dotnet-advanced/skills/vectorization/SKILL.md
- Network accessline 15
Produce a portable optimization that preserves the scalar contract, remains memory-safe at every length, and earns its complexity with measured results. **Read the official [SIMD and hardware-intrinsics guidance](https://learn.microsoft.com - Network accessline 15
Produce a portable optimization that preserves the scalar contract, remains memory-safe at every length, and earns its complexity with measured results. **Read the official [SIMD and hardware-intrinsics guidance](https://learn.microsoft.com - Network accessline 16
length, and earns its complexity with measured results. **Read the official [SIMD and hardware-intrinsics guidance](https://learn.microsoft.com/dotnet/standard/simd) first** and follow its comprehensive implementation templates. In particul - Network accessline 16
length, and earns its complexity with measured results. **Read the official [SIMD and hardware-intrinsics guidance](https://learn.microsoft.com/dotnet/standard/simd) first** and follow its comprehensive implementation templates. In particul - Network accessline 17
[SIMD and hardware-intrinsics guidance](https://learn.microsoft.com/dotnet/standard/simd) first** - Network accessline 17
[SIMD and hardware-intrinsics guidance](https://learn.microsoft.com/dotnet/standard/simd) first**
plugins/dotnet-ai/skills/technology-selection/SKILL.md
- Network accessline 22
| GitHub Copilot extensions / custom dev-workflow agents | **GitHub Copilot SDK** (`GitHub.Copilot.SDK`) | Integrates with the Copilot agent runtime | | Run a pre-trained/custom model in production | **ONNX Runtime** (`Microsoft.ML.OnnxRunt - Network accessline 22
| GitHub Copilot extensions / custom dev-workflow agents | **GitHub Copilot SDK** (`GitHub.Copilot.SDK`) | Integrates with the Copilot agent runtime | | Run a pre-trained/custom model in production | **ONNX Runtime** (`Microsoft.ML.OnnxRunt - Network accessline 23
| Run a pre-trained/custom model in production | **ONNX Runtime** (`Microsoft.ML.OnnxRuntime`) | Hardware-accelerated, format-agnostic inference | | Local/offline LLM inference | **OllamaSharp** ([Ollama models](https://ollama.com/search)) - Network accessline 23
| Run a pre-trained/custom model in production | **ONNX Runtime** (`Microsoft.ML.OnnxRuntime`) | Hardware-accelerated, format-agnostic inference | | Local/offline LLM inference | **OllamaSharp** ([Ollama models](https://ollama.com/search)) - Network accessline 24
| Local/offline LLM inference | **OllamaSharp** ([Ollama models](https://ollama.com/search)) | Privacy-sensitive, air-gapped, cost-constrained | - Network accessline 24
| Local/offline LLM inference | **OllamaSharp** ([Ollama models](https://ollama.com/search)) | Privacy-sensitive, air-gapped, cost-constrained |
plugins/dotnet-aspnetcore/skills/convert-blazor-server-to-webapp/SKILL.md
- Network accessline 58
For non-Blazor project file changes (nullable reference types, implicit usings, HTTP/3 support, etc.), see the [general ASP.NET Core migration guide](https://learn.microsoft.com/aspnet/core/migration/70-to-80). - Network accessline 58
For non-Blazor project file changes (nullable reference types, implicit usings, HTTP/3 support, etc.), see the [general ASP.NET Core migration guide](https://learn.microsoft.com/aspnet/core/migration/70-to-80). - Network accessline 238
- **Replace `UseStaticFiles` with `MapStaticAssets`** (.NET 9+): `app.MapStaticAssets()` provides optimized static file serving with fingerprinting, pre-compression, and content-based ETags. See [MapStaticAssets documentation](https://learn - Network accessline 238
- **Replace `UseStaticFiles` with `MapStaticAssets`** (.NET 9+): `app.MapStaticAssets()` provides optimized static file serving with fingerprinting, pre-compression, and content-based ETags. See [MapStaticAssets documentation](https://learn - Network accessline 239
- **Add `@attribute [StreamRendering]`** to pages with async data loading (`OnInitializedAsync`) for improved perceived performance. The page renders its initial synchronous content immediately and re-renders when async data arrives. - **Up - Network accessline 239
- **Add `@attribute [StreamRendering]`** to pages with async data loading (`OnInitializedAsync`) for improved perceived performance. The page renders its initial synchronous content immediately and re-renders when async data arrives. - **Up - Network accessline 241
- For other non-Blazor improvements (minimal hosting, HTTP/3, output caching, etc.), see the [general ASP.NET Core migration guide](https://learn.microsoft.com/aspnet/core/migration/70-to-80). - Network accessline 241
- For other non-Blazor improvements (minimal hosting, HTTP/3, output caching, etc.), see the [general ASP.NET Core migration guide](https://learn.microsoft.com/aspnet/core/migration/70-to-80). - Network accessline 289
- [Convert a Blazor Server app into a Blazor Web App](https://learn.microsoft.com/aspnet/core/migration/70-to-80#convert-a-blazor-server-app-into-a-blazor-web-app) — the official step-by-step migration guide - Network accessline 289
- [Convert a Blazor Server app into a Blazor Web App](https://learn.microsoft.com/aspnet/core/migration/70-to-80#convert-a-blazor-server-app-into-a-blazor-web-app) — the official step-by-step migration guide - Network accessline 290
- [ASP.NET Core Blazor render modes](https://learn.microsoft.com/aspnet/core/blazor/components/render-modes) — understanding InteractiveServer, InteractiveWebAssembly, and InteractiveAuto - Network accessline 290
- [ASP.NET Core Blazor render modes](https://learn.microsoft.com/aspnet/core/blazor/components/render-modes) — understanding InteractiveServer, InteractiveWebAssembly, and InteractiveAuto - Network accessline 291
- [Migrate CascadingAuthenticationState to services](https://learn.microsoft.com/aspnet/core/migration/70-to-80#migrate-the-cascadingauthenticationstate-component-to-cascading-authentication-state-services) — replacing the component wrapper - Network accessline 291
- [Migrate CascadingAuthenticationState to services](https://learn.microsoft.com/aspnet/core/migration/70-to-80#migrate-the-cascadingauthenticationstate-component-to-cascading-authentication-state-services) — replacing the component wrapper - Network accessline 292
- [MapStaticAssets](https://learn.microsoft.com/aspnet/core/fundamentals/static-files#mapstaticassets) — optimized static file serving in .NET 9+ - Network accessline 292
- [MapStaticAssets](https://learn.microsoft.com/aspnet/core/fundamentals/static-files#mapstaticassets) — optimized static file serving in .NET 9+ - Network accessline 293
- [Migrate from ASP.NET Core 7.0 to 8.0](https://learn.microsoft.com/aspnet/core/migration/70-to-80) — general migration guide for all ASP.NET Core changes - Network accessline 293
- [Migrate from ASP.NET Core 7.0 to 8.0](https://learn.microsoft.com/aspnet/core/migration/70-to-80) — general migration guide for all ASP.NET Core changes - Network accessline 294
- [Stream rendering with Blazor](https://learn.microsoft.com/aspnet/core/blazor/components/render-modes#streaming-rendering) — `@attribute [StreamRendering]` for async data loading - Network accessline 294
- [Stream rendering with Blazor](https://learn.microsoft.com/aspnet/core/blazor/components/render-modes#streaming-rendering) — `@attribute [StreamRendering]` for async data loading - Network accessline 295
- [Cascading values and render mode boundaries](https://learn.microsoft.com/aspnet/core/blazor/components/cascading-values-and-parameters#cascading-valuesparameters-and-render-mode-boundaries) — why cascading parameters do not cross render - Network accessline 295
- [Cascading values and render mode boundaries](https://learn.microsoft.com/aspnet/core/blazor/components/cascading-values-and-parameters#cascading-valuesparameters-and-render-mode-boundaries) — why cascading parameters do not cross render
plugins/dotnet-aspnetcore/skills/dotnet-webapi/SKILL.md
- Network accessline 93
Reference: https://learn.microsoft.com/en-us/aspnet/core/fundamentals/openapi/openapi-comments - Network accessline 93
Reference: https://learn.microsoft.com/en-us/aspnet/core/fundamentals/openapi/openapi-comments - Network accessline 101
Reference: https://learn.microsoft.com/en-us/dotnet/api/system.datetimeoffset - Network accessline 101
Reference: https://learn.microsoft.com/en-us/dotnet/api/system.datetimeoffset - Network accessline 177
Reference: https://learn.microsoft.com/aspnet/core/fundamentals/minimal-apis?view=aspnetcore-10.0 - Network accessline 177
Reference: https://learn.microsoft.com/aspnet/core/fundamentals/minimal-apis?view=aspnetcore-10.0 - Network accessline 283
Reference: https://learn.microsoft.com/en-us/aspnet/core/fundamentals/openapi/overview - Network accessline 283
Reference: https://learn.microsoft.com/en-us/aspnet/core/fundamentals/openapi/overview - Network accessline 429
@baseUrl = http://localhost:5000 - Network accessline 429
@baseUrl = http://localhost:5000 - Network accessline 501
- [ASP.NET Core Web API overview](https://learn.microsoft.com/en-us/aspnet/core/web-api/) — fundamental concepts for building Web APIs - Network accessline 501
- [ASP.NET Core Web API overview](https://learn.microsoft.com/en-us/aspnet/core/web-api/) — fundamental concepts for building Web APIs - Network accessline 502
- [OpenAPI in ASP.NET Core](https://learn.microsoft.com/en-us/aspnet/core/fundamentals/openapi/overview) — built-in OpenAPI support in .NET 9+ - Network accessline 502
- [OpenAPI in ASP.NET Core](https://learn.microsoft.com/en-us/aspnet/core/fundamentals/openapi/overview) — built-in OpenAPI support in .NET 9+ - Network accessline 503
- [OpenAPI from XML comments](https://learn.microsoft.com/en-us/aspnet/core/fundamentals/openapi/openapi-comments) — how XML doc comments flow into the OpenAPI spec - Network accessline 503
- [OpenAPI from XML comments](https://learn.microsoft.com/en-us/aspnet/core/fundamentals/openapi/openapi-comments) — how XML doc comments flow into the OpenAPI spec - Network accessline 504
- [Minimal APIs overview](https://learn.microsoft.com/en-us/aspnet/core/fundamentals/minimal-apis/overview) — routing, parameter binding, and response types - Network accessline 504
- [Minimal APIs overview](https://learn.microsoft.com/en-us/aspnet/core/fundamentals/minimal-apis/overview) — routing, parameter binding, and response types - Network accessline 505
- [Handle errors in ASP.NET Core APIs](https://learn.microsoft.com/en-us/aspnet/core/web-api/handle-errors) — Problem Details and exception handling - Network accessline 505
- [Handle errors in ASP.NET Core APIs](https://learn.microsoft.com/en-us/aspnet/core/web-api/handle-errors) — Problem Details and exception handling - Network accessline 506
- [DateTimeOffset](https://learn.microsoft.com/en-us/dotnet/api/system.datetimeoffset) — preferred type for date/time values in APIs - Network accessline 506
- [DateTimeOffset](https://learn.microsoft.com/en-us/dotnet/api/system.datetimeoffset) — preferred type for date/time values in APIs
plugins/dotnet-blazor/skills/fetch-and-send-data/SKILL.md
- Network accessline 26
builder.Services.AddHttpClient("CatalogAPI", client => { client.BaseAddress = new Uri("https://api.example.com/"); - Network accessline 26
builder.Services.AddHttpClient("CatalogAPI", client => { client.BaseAddress = new Uri("https://api.example.com/"); - Network accessline 27
{ client.BaseAddress = new Uri("https://api.example.com/"); }); - Network accessline 27
{ client.BaseAddress = new Uri("https://api.example.com/"); }); - Network accessline 28
client.BaseAddress = new Uri("https://api.example.com/"); - Network accessline 28
client.BaseAddress = new Uri("https://api.example.com/"); - Network accessline 31
// Typed client builder.Services.AddHttpClient<CatalogClient>(client => client.BaseAddress = new Uri("https://api.example.com/")); - Network accessline 31
// Typed client builder.Services.AddHttpClient<CatalogClient>(client => client.BaseAddress = new Uri("https://api.example.com/")); - Network accessline 33
client.BaseAddress = new Uri("https://api.example.com/")); - Network accessline 33
client.BaseAddress = new Uri("https://api.example.com/"));
plugins/dotnet-data/skills/create-datadriven-aspnetcore/SKILL.md
- Network accessline 210
- [Entity Framework Core DbContext Lifetime, Configuration, and Initialization](https://learn.microsoft.com/en-us/ef/core/dbcontext-configuration/) - Network accessline 210
- [Entity Framework Core DbContext Lifetime, Configuration, and Initialization](https://learn.microsoft.com/en-us/ef/core/dbcontext-configuration/) - Network accessline 211
- [OpenAPI overview in ASP.NET Core](https://learn.microsoft.com/en-us/aspnet/core/fundamentals/openapi/overview?view=aspnetcore-10.0) — .NET 10 specific; similar pages exist for other versions - Network accessline 211
- [OpenAPI overview in ASP.NET Core](https://learn.microsoft.com/en-us/aspnet/core/fundamentals/openapi/overview?view=aspnetcore-10.0) — .NET 10 specific; similar pages exist for other versions
plugins/dotnet-data/skills/optimizing-ef-core-queries/SKILL.md
- Network accessline 274
- [Efficient querying — EF Core](https://learn.microsoft.com/en-us/ef/core/performance/efficient-querying) - Network accessline 274
- [Efficient querying — EF Core](https://learn.microsoft.com/en-us/ef/core/performance/efficient-querying) - Network accessline 275
- [Compiled queries — EF Core](https://learn.microsoft.com/en-us/ef/core/performance/advanced-performance-topics#compiled-queries) - Network accessline 275
- [Compiled queries — EF Core](https://learn.microsoft.com/en-us/ef/core/performance/advanced-performance-topics#compiled-queries) - Network accessline 276
- [Force or prevent query parameterization — EF Core 9](https://learn.microsoft.com/en-us/ef/core/what-is-new/ef-core-9.0/whatsnew#force-or-prevent-query-parameterization) - Network accessline 276
- [Force or prevent query parameterization — EF Core 9](https://learn.microsoft.com/en-us/ef/core/what-is-new/ef-core-9.0/whatsnew#force-or-prevent-query-parameterization) - Network accessline 277
- [Parameterization overrides inside compiled queries — EF Core 9](https://learn.microsoft.com/en-us/ef/core/what-is-new/ef-core-9.0/breaking-changes) - Network accessline 277
- [Parameterization overrides inside compiled queries — EF Core 9](https://learn.microsoft.com/en-us/ef/core/what-is-new/ef-core-9.0/breaking-changes) - Network accessline 278
- [Efficient updating (ExecuteUpdate/ExecuteDelete) — EF Core](https://learn.microsoft.com/en-us/ef/core/performance/efficient-updating) - Network accessline 278
- [Efficient updating (ExecuteUpdate/ExecuteDelete) — EF Core](https://learn.microsoft.com/en-us/ef/core/performance/efficient-updating) - Network accessline 279
- [Single vs. split queries](https://learn.microsoft.com/en-us/ef/core/querying/single-split-queries) - Network accessline 279
- [Single vs. split queries](https://learn.microsoft.com/en-us/ef/core/querying/single-split-queries) - Network accessline 280
- [Pagination](https://learn.microsoft.com/en-us/ef/core/querying/pagination) - Network accessline 280
- [Pagination](https://learn.microsoft.com/en-us/ef/core/querying/pagination) - Network accessline 281
- [Indexes](https://learn.microsoft.com/en-us/ef/core/modeling/indexes) - Network accessline 281
- [Indexes](https://learn.microsoft.com/en-us/ef/core/modeling/indexes)
plugins/dotnet-diag/skills/android-tombstone-symbolication/SKILL.md
- Network accessline 56
https://msdl.microsoft.com/download/symbols/_.debug/elf-buildid-sym-<BUILDID>/_.debug - Network accessline 56
https://msdl.microsoft.com/download/symbols/_.debug/elf-buildid-sym-<BUILDID>/_.debug - Network accessline 60
curl -sL "https://msdl.microsoft.com/download/symbols/_.debug/elf-buildid-sym-1eb39fc72918c7c6c0c610b79eb3d3d47b2f81be/_.debug" \ - Network accessline 60
curl -sL "https://msdl.microsoft.com/download/symbols/_.debug/elf-buildid-sym-1eb39fc72918c7c6c0c610b79eb3d3d47b2f81be/_.debug" \ - Network accessline 78
The `/__w/1/s/` prefix is the CI workspace root — the meaningful path starts at `src/runtime/`, mapping to [dotnet/dotnet](https://github.com/dotnet/dotnet) VMR. - Network accessline 78
The `/__w/1/s/` prefix is the CI workspace root — the meaningful path starts at `src/runtime/`, mapping to [dotnet/dotnet](https://github.com/dotnet/dotnet) VMR. - Network accessline 117
| Path prefix | Maps to | |---|---| | `/__w/1/s/src/runtime/` | `src/runtime/` in [dotnet/dotnet](https://github.com/dotnet/dotnet) VMR | - Network accessline 117
| Path prefix | Maps to | |---|---| | `/__w/1/s/src/runtime/` | `src/runtime/` in [dotnet/dotnet](https://github.com/dotnet/dotnet) VMR | - Network accessline 118
|---|---| | `/__w/1/s/src/runtime/` | `src/runtime/` in [dotnet/dotnet](https://github.com/dotnet/dotnet) VMR | | `/__w/1/s/src/mono/` | `src/mono/` in the VMR (older builds) | - Network accessline 118
|---|---| | `/__w/1/s/src/runtime/` | `src/runtime/` in [dotnet/dotnet](https://github.com/dotnet/dotnet) VMR | | `/__w/1/s/src/mono/` | `src/mono/` in the VMR (older builds) | - Network accessline 119
| `/__w/1/s/src/runtime/` | `src/runtime/` in [dotnet/dotnet](https://github.com/dotnet/dotnet) VMR | - Network accessline 119
| `/__w/1/s/src/runtime/` | `src/runtime/` in [dotnet/dotnet](https://github.com/dotnet/dotnet) VMR |
plugins/dotnet-diag/skills/android-tombstone-symbolication/scripts/Symbolicate-Tombstone.ps1
- Executable scriptline 1
Executable file - Executable scriptline 1
Executable file - Network accessline 47
[Parameter()] [string]$SymbolServerUrl = 'https://msdl.microsoft.com/download/symbols', - Network accessline 47
[Parameter()] [string]$SymbolServerUrl = 'https://msdl.microsoft.com/download/symbols', - Network accessline 48
[string]$SymbolServerUrl = 'https://msdl.microsoft.com/download/symbols', - Network accessline 48
[string]$SymbolServerUrl = 'https://msdl.microsoft.com/download/symbols', - Network accessline 364
$nugetBase = 'https://api.nuget.org/v3-flatcontainer' - Network accessline 364
$nugetBase = 'https://api.nuget.org/v3-flatcontainer' - Network accessline 732
$vi = $versionMap[$bid] $lib = ($dotnetFrames | Where-Object { $_.BuildId -eq $bid } | Select-Object -First 1).LibraryName $commitInfo = if ($vi.Commit) { " Commit: https://github.com/dotnet/runtime/commit/$($vi.Commit)" } - Network accessline 732
$vi = $versionMap[$bid] $lib = ($dotnetFrames | Where-Object { $_.BuildId -eq $bid } | Select-Object -First 1).LibraryName $commitInfo = if ($vi.Commit) { " Commit: https://github.com/dotnet/runtime/commit/$($vi.Commit)" } - Network accessline 733
$lib = ($dotnetFrames | Where-Object { $_.BuildId -eq $bid } | Select-Object -First 1).LibraryName $commitInfo = if ($vi.Commit) { " Commit: https://github.com/dotnet/runtime/commit/$($vi.Commit)" } else { '' } $footer += " - Network accessline 733
$lib = ($dotnetFrames | Where-Object { $_.BuildId -eq $bid } | Select-Object -First 1).LibraryName $commitInfo = if ($vi.Commit) { " Commit: https://github.com/dotnet/runtime/commit/$($vi.Commit)" } else { '' } $footer += " - Network accessline 734
$commitInfo = if ($vi.Commit) { " Commit: https://github.com/dotnet/runtime/commit/$($vi.Commit)" } else { '' } - Network accessline 734
$commitInfo = if ($vi.Commit) { " Commit: https://github.com/dotnet/runtime/commit/$($vi.Commit)" } else { '' }
plugins/dotnet-diag/skills/apple-crash-symbolication/SKILL.md
- Network accessline 77
1. **Microsoft symbol server** (automatic): Download `.dwarf` via `https://msdl.microsoft.com/download/symbols/_.dwarf/mach-uuid-sym-{UUID}/_.dwarf` (UUID lowercase, no dashes). Convert to `.dSYM` bundle (use the image name from `usedImages - Network accessline 77
1. **Microsoft symbol server** (automatic): Download `.dwarf` via `https://msdl.microsoft.com/download/symbols/_.dwarf/mach-uuid-sym-{UUID}/_.dwarf` (UUID lowercase, no dashes). Convert to `.dSYM` bundle (use the image name from `usedImages - Network accessline 105
Strip the `/__w/1/s/` CI workspace prefix from output — meaningful paths start at `src/runtime/`, mapping to the [dotnet/dotnet](https://github.com/dotnet/dotnet) VMR. - Network accessline 105
Strip the `/__w/1/s/` CI workspace prefix from output — meaningful paths start at `src/runtime/`, mapping to the [dotnet/dotnet](https://github.com/dotnet/dotnet) VMR. - Network accessline 124
Pull crash logs from a connected iOS device using `idevicecrashreport` (from [libimobiledevice](https://libimobiledevice.org/)): - Network accessline 124
Pull crash logs from a connected iOS device using `idevicecrashreport` (from [libimobiledevice](https://libimobiledevice.org/)):
plugins/dotnet-diag/skills/apple-crash-symbolication/references/ips-crash-format.md
- Network accessline 17
URL pattern: https://msdl.microsoft.com/download/symbols/_.dwarf/mach-uuid-sym-{UUID}/_.dwarf - Network accessline 17
URL pattern: https://msdl.microsoft.com/download/symbols/_.dwarf/mach-uuid-sym-{UUID}/_.dwarf - Network accessline 27
curl -Lo symbols.nupkg https://api.nuget.org/v3-flatcontainer/microsoft.netcore.app.runtime.osx-arm64.symbols/10.0.4/microsoft.netcore.app.runtime.osx-arm64.symbols.10.0.4.nupkg - Network accessline 27
curl -Lo symbols.nupkg https://api.nuget.org/v3-flatcontainer/microsoft.netcore.app.runtime.osx-arm64.symbols/10.0.4/microsoft.netcore.app.runtime.osx-arm64.symbols.10.0.4.nupkg
plugins/dotnet-diag/skills/apple-crash-symbolication/scripts/Symbolicate-Crash.ps1
- Executable scriptline 1
Executable file - Executable scriptline 1
Executable file - Network accessline 80
[Parameter()] [string]$SymbolServerUrl = 'https://msdl.microsoft.com/download/symbols', - Network accessline 80
[Parameter()] [string]$SymbolServerUrl = 'https://msdl.microsoft.com/download/symbols', - Network accessline 81
[string]$SymbolServerUrl = 'https://msdl.microsoft.com/download/symbols', - Network accessline 81
[string]$SymbolServerUrl = 'https://msdl.microsoft.com/download/symbols', - Network accessline 907
Write-Host " Manual acquisition fallback:" -ForegroundColor Yellow if ($isOsx) { Write-Host " dotnet-symbol: curl -Lo runtime.nupkg https://www.nuget.org/api/v2/package/$runtimePackBase/$anyVersion && unzip -q runt - Network accessline 907
Write-Host " Manual acquisition fallback:" -ForegroundColor Yellow if ($isOsx) { Write-Host " dotnet-symbol: curl -Lo runtime.nupkg https://www.nuget.org/api/v2/package/$runtimePackBase/$anyVersion && unzip -q runt - Network accessline 908
if ($isOsx) { Write-Host " dotnet-symbol: curl -Lo runtime.nupkg https://www.nuget.org/api/v2/package/$runtimePackBase/$anyVersion && unzip -q runtime.nupkg -d runtime-extracted && dotnet-symbol --symbols -o symbols-out runt - Network accessline 908
if ($isOsx) { Write-Host " dotnet-symbol: curl -Lo runtime.nupkg https://www.nuget.org/api/v2/package/$runtimePackBase/$anyVersion && unzip -q runtime.nupkg -d runtime-extracted && dotnet-symbol --symbols -o symbols-out runt - Network accessline 909
Write-Host " dotnet-symbol: curl -Lo runtime.nupkg https://www.nuget.org/api/v2/package/$runtimePackBase/$anyVersion && unzip -q runtime.nupkg -d runtime-extracted && dotnet-symbol --symbols -o symbols-out runtime-extracted/runtimes/$cr - Network accessline 909
Write-Host " dotnet-symbol: curl -Lo runtime.nupkg https://www.nuget.org/api/v2/package/$runtimePackBase/$anyVersion && unzip -q runtime.nupkg -d runtime-extracted && dotnet-symbol --symbols -o symbols-out runtime-extracted/runtimes/$cr - Network accessline 915
Write-Host " curl -Lo runtime.nupkg https://www.nuget.org/api/v2/package/$runtimePackBase/$anyVersion && unzip -q runtime.nupkg -d runtime-extracted" -ForegroundColor DarkYellow - Network accessline 915
Write-Host " curl -Lo runtime.nupkg https://www.nuget.org/api/v2/package/$runtimePackBase/$anyVersion && unzip -q runtime.nupkg -d runtime-extracted" -ForegroundColor DarkYellow - Network accessline 996
$vi = $versionMap[$uuid] $lib = ($uniqueLibs | Where-Object { $_.ImageUuid -eq $uuid } | Select-Object -First 1).ImageName $commitInfo = if ($vi.Commit) { " Commit: https://github.com/dotnet/runtime/commit/$($vi.Commit)" } - Network accessline 996
$vi = $versionMap[$uuid] $lib = ($uniqueLibs | Where-Object { $_.ImageUuid -eq $uuid } | Select-Object -First 1).ImageName $commitInfo = if ($vi.Commit) { " Commit: https://github.com/dotnet/runtime/commit/$($vi.Commit)" } - Network accessline 997
$lib = ($uniqueLibs | Where-Object { $_.ImageUuid -eq $uuid } | Select-Object -First 1).ImageName $commitInfo = if ($vi.Commit) { " Commit: https://github.com/dotnet/runtime/commit/$($vi.Commit)" } else { '' } $footer += "$ - Network accessline 997
$lib = ($uniqueLibs | Where-Object { $_.ImageUuid -eq $uuid } | Select-Object -First 1).ImageName $commitInfo = if ($vi.Commit) { " Commit: https://github.com/dotnet/runtime/commit/$($vi.Commit)" } else { '' } $footer += "$ - Network accessline 998
$commitInfo = if ($vi.Commit) { " Commit: https://github.com/dotnet/runtime/commit/$($vi.Commit)" } else { '' } - Network accessline 998
$commitInfo = if ($vi.Commit) { " Commit: https://github.com/dotnet/runtime/commit/$($vi.Commit)" } else { '' }
plugins/dotnet-diag/skills/dotnet-trace-collect/SKILL.md
- Network accessline 212
1. **Installation**: How to install the tool if it is not already available (e.g. `dotnet tool install -g dotnet-trace`). **When recommending multiple tools, provide installation and usage instructions for each one** — do not mention a tool - Network accessline 212
1. **Installation**: How to install the tool if it is not already available (e.g. `dotnet tool install -g dotnet-trace`). **When recommending multiple tools, provide installation and usage instructions for each one** — do not mention a tool - Network accessline 213
2. **PID discovery (required before any `-p <PID>` command)**: Verify the target process first (for example: `dotnet-trace ps`, `curl <monitor-endpoint>/processes`, or `ps` inside a container). If the app is expected to be PID 1 in a contai - Network accessline 213
2. **PID discovery (required before any `-p <PID>` command)**: Verify the target process first (for example: `dotnet-trace ps`, `curl <monitor-endpoint>/processes`, or `ps` inside a container). If the app is expected to be PID 1 in a contai
plugins/dotnet-diag/skills/dotnet-trace-collect/references/dotnet-monitor.md
- Network accessline 26
# Production-safe default: keep auth enabled (default) and bind to loopback dotnet-monitor collect --urls http://127.0.0.1:52323 --metricUrls http://127.0.0.1:52325 - Network accessline 26
# Production-safe default: keep auth enabled (default) and bind to loopback dotnet-monitor collect --urls http://127.0.0.1:52323 --metricUrls http://127.0.0.1:52325 - Network accessline 27
dotnet-monitor collect --urls http://127.0.0.1:52323 --metricUrls http://127.0.0.1:52325 - Network accessline 27
dotnet-monitor collect --urls http://127.0.0.1:52323 --metricUrls http://127.0.0.1:52325 - Network accessline 29
# Dev-only shortcut in isolated environments (avoid in production) dotnet-monitor collect --urls http://127.0.0.1:52323 --no-auth - Network accessline 29
# Dev-only shortcut in isolated environments (avoid in production) dotnet-monitor collect --urls http://127.0.0.1:52323 --no-auth - Network accessline 30
dotnet-monitor collect --urls http://127.0.0.1:52323 --no-auth - Network accessline 30
dotnet-monitor collect --urls http://127.0.0.1:52323 --no-auth - Network accessline 45
[Credential-related source omitted] - Network accessline 45
[Credential-related source omitted] - Network accessline 46
[Credential-related source omitted] - Network accessline 46
[Credential-related source omitted] - Network accessline 48
[Credential-related source omitted] - Network accessline 48
[Credential-related source omitted] - Network accessline 49
[Credential-related source omitted] - Network accessline 49
[Credential-related source omitted] - Network accessline 51
[Credential-related source omitted] - Network accessline 51
[Credential-related source omitted] - Network accessline 52
[Credential-related source omitted] - Network accessline 52
[Credential-related source omitted] - Network accessline 54
[Credential-related source omitted] - Network accessline 54
[Credential-related source omitted] - Network accessline 55
[Credential-related source omitted] - Network accessline 55
[Credential-related source omitted] - Network accessline 57
[Credential-related source omitted] - Network accessline 57
[Credential-related source omitted] - Network accessline 58
[Credential-related source omitted] - Network accessline 58
[Credential-related source omitted] - Network accessline 72
- name: monitor image: mcr.microsoft.com/dotnet/monitor:latest args: ["collect", "--urls", "http://127.0.0.1:52323", "--metricUrls", "http://127.0.0.1:52325"] - Network accessline 72
- name: monitor image: mcr.microsoft.com/dotnet/monitor:latest args: ["collect", "--urls", "http://127.0.0.1:52323", "--metricUrls", "http://127.0.0.1:52325"] - Network accessline 73
image: mcr.microsoft.com/dotnet/monitor:latest args: ["collect", "--urls", "http://127.0.0.1:52323", "--metricUrls", "http://127.0.0.1:52325"] volumeMounts: - Network accessline 73
image: mcr.microsoft.com/dotnet/monitor:latest args: ["collect", "--urls", "http://127.0.0.1:52323", "--metricUrls", "http://127.0.0.1:52325"] volumeMounts: - Network accessline 74
args: ["collect", "--urls", "http://127.0.0.1:52323", "--metricUrls", "http://127.0.0.1:52325"] - Network accessline 74
args: ["collect", "--urls", "http://127.0.0.1:52323", "--metricUrls", "http://127.0.0.1:52325"]
plugins/dotnet-diag/skills/dotnet-trace-collect/references/dotnet-trace-collect-linux.md
- Dangerous shell operationline 27
sudo dotnet-trace collect-linux - Dangerous shell operationline 27
sudo dotnet-trace collect-linux - Dangerous shell operationline 30
sudo dotnet-trace collect-linux -p <PID> - Dangerous shell operationline 30
sudo dotnet-trace collect-linux -p <PID> - Dangerous shell operationline 33
sudo dotnet-trace collect-linux -n <process-name> - Dangerous shell operationline 33
sudo dotnet-trace collect-linux -n <process-name> - Dangerous shell operationline 36
sudo dotnet-trace collect-linux --duration 00:00:30 - Dangerous shell operationline 36
sudo dotnet-trace collect-linux --duration 00:00:30 - Dangerous shell operationline 39
sudo dotnet-trace collect-linux --providers Microsoft-Windows-DotNETRuntime - Dangerous shell operationline 39
sudo dotnet-trace collect-linux --providers Microsoft-Windows-DotNETRuntime - Dangerous shell operationline 42
sudo dotnet-trace collect-linux --providers System.Net.Http,System.Net.NameResolution,System.Net.Security,System.Net.Sockets - Dangerous shell operationline 42
sudo dotnet-trace collect-linux --providers System.Net.Http,System.Net.NameResolution,System.Net.Security,System.Net.Sockets - Dangerous shell operationline 45
sudo dotnet-trace collect-linux --profile thread-time --providers System.Net.Http,System.Net.NameResolution,System.Net.Security,System.Net.Sockets - Dangerous shell operationline 45
sudo dotnet-trace collect-linux --profile thread-time --providers System.Net.Http,System.Net.NameResolution,System.Net.Security,System.Net.Sockets - Dangerous shell operationline 48
sudo dotnet-trace collect-linux --profile gc-verbose - Dangerous shell operationline 48
sudo dotnet-trace collect-linux --profile gc-verbose - Dangerous shell operationline 49
sudo dotnet-trace collect-linux --profile thread-time - Dangerous shell operationline 49
sudo dotnet-trace collect-linux --profile thread-time - Dangerous shell operationline 52
sudo dotnet-trace collect-linux --perf-events <list-of-perf-events> - Dangerous shell operationline 52
sudo dotnet-trace collect-linux --perf-events <list-of-perf-events> - Dangerous shell operationline 55
sudo dotnet-trace collect-linux -o /tmp/trace.nettrace - Dangerous shell operationline 55
sudo dotnet-trace collect-linux -o /tmp/trace.nettrace - Dangerous shell operationline 64
sudo dotnet-trace collect-linux -o /tmp/trace.nettrace - Dangerous shell operationline 64
sudo dotnet-trace collect-linux -o /tmp/trace.nettrace - Dangerous shell operationline 67
sudo dotnet-trace collect-linux -p 1 -o /tmp/trace.nettrace - Dangerous shell operationline 67
sudo dotnet-trace collect-linux -p 1 -o /tmp/trace.nettrace
plugins/dotnet-diag/skills/dotnet-trace-collect/references/dotnet-trace-collect.md
- Network accessline 19
# Direct download via aka.ms (no SDK required — useful in containers) # Linux x64 curl -JL https://aka.ms/dotnet-trace/linux-x64 -o dotnet-trace - Network accessline 19
# Direct download via aka.ms (no SDK required — useful in containers) # Linux x64 curl -JL https://aka.ms/dotnet-trace/linux-x64 -o dotnet-trace - Network accessline 20
# Linux x64 curl -JL https://aka.ms/dotnet-trace/linux-x64 -o dotnet-trace chmod +x dotnet-trace - Network accessline 20
# Linux x64 curl -JL https://aka.ms/dotnet-trace/linux-x64 -o dotnet-trace chmod +x dotnet-trace - Network accessline 21
curl -JL https://aka.ms/dotnet-trace/linux-x64 -o dotnet-trace - Network accessline 21
curl -JL https://aka.ms/dotnet-trace/linux-x64 -o dotnet-trace - Network accessline 24
# Linux Arm64 curl -JL https://aka.ms/dotnet-trace/linux-arm64 -o dotnet-trace - Network accessline 24
# Linux Arm64 curl -JL https://aka.ms/dotnet-trace/linux-arm64 -o dotnet-trace - Network accessline 25
curl -JL https://aka.ms/dotnet-trace/linux-arm64 -o dotnet-trace - Network accessline 25
curl -JL https://aka.ms/dotnet-trace/linux-arm64 -o dotnet-trace - Network accessline 28
# Linux musl x64 (Alpine) curl -JL https://aka.ms/dotnet-trace/linux-musl-x64 -o dotnet-trace - Network accessline 28
# Linux musl x64 (Alpine) curl -JL https://aka.ms/dotnet-trace/linux-musl-x64 -o dotnet-trace - Network accessline 29
curl -JL https://aka.ms/dotnet-trace/linux-musl-x64 -o dotnet-trace - Network accessline 29
curl -JL https://aka.ms/dotnet-trace/linux-musl-x64 -o dotnet-trace - Network accessline 32
# Windows x64 curl -JL https://aka.ms/dotnet-trace/win-x64 -o dotnet-trace.exe - Network accessline 32
# Windows x64 curl -JL https://aka.ms/dotnet-trace/win-x64 -o dotnet-trace.exe - Network accessline 33
curl -JL https://aka.ms/dotnet-trace/win-x64 -o dotnet-trace.exe - Network accessline 33
curl -JL https://aka.ms/dotnet-trace/win-x64 -o dotnet-trace.exe
plugins/dotnet-diag/skills/dotnet-trace-collect/references/perfcollect.md
- Network accessline 16
# Download the script curl -OL https://aka.ms/perfcollect - Network accessline 16
# Download the script curl -OL https://aka.ms/perfcollect - Network accessline 17
curl -OL https://aka.ms/perfcollect - Network accessline 17
curl -OL https://aka.ms/perfcollect - Dangerous shell operationline 21
sudo ./perfcollect install - Dangerous shell operationline 21
sudo ./perfcollect install - Dangerous shell operationline 28
sudo ./perfcollect collect mytrace - Dangerous shell operationline 28
sudo ./perfcollect collect mytrace - Dangerous shell operationline 31
sudo timeout 30 ./perfcollect collect mytrace - Dangerous shell operationline 31
sudo timeout 30 ./perfcollect collect mytrace - Network accessline 108
# Inside the sidecar: install perfcollect curl -OL https://aka.ms/perfcollect - Network accessline 108
# Inside the sidecar: install perfcollect curl -OL https://aka.ms/perfcollect - Network accessline 109
curl -OL https://aka.ms/perfcollect - Network accessline 109
curl -OL https://aka.ms/perfcollect
plugins/dotnet-diag/skills/dotnet-trace-collect/references/perfview.md
- Network accessline 14
Download from [https://github.com/microsoft/perfview/releases](https://github.com/microsoft/perfview/releases). PerfView is a standalone `.exe` — no installation required. - Network accessline 14
Download from [https://github.com/microsoft/perfview/releases](https://github.com/microsoft/perfview/releases). PerfView is a standalone `.exe` — no installation required. - Network accessline 86
> **PerfView inside containers**: `PerfView.exe` does not run in many slimmed-down Windows container images. To run PerfView inside a container (needed for the merge step in process-isolation, or for direct collection in Hyper-V), build **P - Network accessline 86
> **PerfView inside containers**: `PerfView.exe` does not run in many slimmed-down Windows container images. To run PerfView inside a container (needed for the merge step in process-isolation, or for direct collection in Hyper-V), build **P
plugins/dotnet-diag/skills/dump-collect/references/container-dumps.md
plugins/dotnet-diag/skills/dump-collect/references/coreclr-dumps.md
plugins/dotnet-diag/skills/dump-collect/references/nativeaot-dumps.md
- Dangerous shell operationline 24
echo '/tmp/dumps/core.%e.%p.%t' | sudo tee /proc/sys/kernel/core_pattern - Dangerous shell operationline 24
echo '/tmp/dumps/core.%e.%p.%t' | sudo tee /proc/sys/kernel/core_pattern - Dangerous shell operationline 96
sudo mkdir -p /cores - Dangerous shell operationline 96
sudo mkdir -p /cores - Dangerous shell operationline 97
sudo chmod 1777 /cores - Dangerous shell operationline 97
sudo chmod 1777 /cores - Network accessline 170
# Download procdump (one-time) Invoke-WebRequest -Uri "https://download.sysinternals.com/files/Procdump.zip" -OutFile "$env:TEMP\Procdump.zip" - Network accessline 170
# Download procdump (one-time) Invoke-WebRequest -Uri "https://download.sysinternals.com/files/Procdump.zip" -OutFile "$env:TEMP\Procdump.zip" - Network accessline 171
Invoke-WebRequest -Uri "https://download.sysinternals.com/files/Procdump.zip" -OutFile "$env:TEMP\Procdump.zip" - Network accessline 171
Invoke-WebRequest -Uri "https://download.sysinternals.com/files/Procdump.zip" -OutFile "$env:TEMP\Procdump.zip"
plugins/dotnet-maui/skills/dotnet-maui-doctor/SKILL.md
- Dangerous shell operationline 43
- Admin/sudo access may be required for installing SDKs and workloads - Dangerous shell operationline 43
- Admin/sudo access may be required for installing SDKs and workloads - Network accessline 80
Compare installed vs `latest-sdk` from https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/releases-index.json where `support-phase` is `"active"`. - Network accessline 80
Compare installed vs `latest-sdk` from https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/releases-index.json where `support-phase` is `"active"`. - Dangerous shell operationline 161
rm -rf "$TEMP_DIR" - Dangerous shell operationline 161
rm -rf "$TEMP_DIR" - Network accessline 202
Official docs: - [.NET MAUI Installation](https://learn.microsoft.com/en-us/dotnet/maui/get-started/installation) - [.NET SDK Downloads](https://dotnet.microsoft.com/download) - Network accessline 202
Official docs: - [.NET MAUI Installation](https://learn.microsoft.com/en-us/dotnet/maui/get-started/installation) - [.NET SDK Downloads](https://dotnet.microsoft.com/download) - Network accessline 203
- [.NET MAUI Installation](https://learn.microsoft.com/en-us/dotnet/maui/get-started/installation) - [.NET SDK Downloads](https://dotnet.microsoft.com/download) - [Microsoft OpenJDK](https://learn.microsoft.com/en-us/java/openjdk/install) - Network accessline 203
- [.NET MAUI Installation](https://learn.microsoft.com/en-us/dotnet/maui/get-started/installation) - [.NET SDK Downloads](https://dotnet.microsoft.com/download) - [Microsoft OpenJDK](https://learn.microsoft.com/en-us/java/openjdk/install) - Network accessline 204
- [.NET SDK Downloads](https://dotnet.microsoft.com/download) - Network accessline 204
- [.NET SDK Downloads](https://dotnet.microsoft.com/download) - Network accessline 205
- [Microsoft OpenJDK](https://learn.microsoft.com/en-us/java/openjdk/install) - Network accessline 205
- [Microsoft OpenJDK](https://learn.microsoft.com/en-us/java/openjdk/install) - Network accessline 206
- [Android SDK Command-Line Tools](https://developer.android.com/studio#command-line-tools-only) - Network accessline 206
- [Android SDK Command-Line Tools](https://developer.android.com/studio#command-line-tools-only) - Network accessline 207
- [Xcode Downloads](https://developer.apple.com/xcode/) - Network accessline 207
- [Xcode Downloads](https://developer.apple.com/xcode/)
plugins/dotnet-maui/skills/dotnet-maui-doctor/references/installation-commands-macos.md
- Network accessline 9
Download a specific version from [Apple Developer Downloads](https://developer.apple.com/download/all/), matching the `xcode.version` range from WorkloadDependencies.json. - Network accessline 9
Download a specific version from [Apple Developer Downloads](https://developer.apple.com/download/all/), matching the `xcode.version` range from WorkloadDependencies.json. - Dangerous shell operationline 30
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer - Dangerous shell operationline 30
sudo xcode-select -s /Applications/Xcode.app/Contents/Developer - Dangerous shell operationline 36
sudo xcodebuild -license accept - Dangerous shell operationline 36
sudo xcodebuild -license accept
plugins/dotnet-maui/skills/dotnet-maui-doctor/references/installation-commands-windows.md
plugins/dotnet-maui/skills/dotnet-maui-doctor/references/installation-commands.md
- Network accessline 18
For installation instructions, see the official docs: https://dotnet.microsoft.com/download - Network accessline 18
For installation instructions, see the official docs: https://dotnet.microsoft.com/download - Network accessline 20
For scripted/CI installs, use the [dotnet-install scripts](https://learn.microsoft.com/en-us/dotnet/core/tools/dotnet-install-script). - Network accessline 20
For scripted/CI installs, use the [dotnet-install scripts](https://learn.microsoft.com/en-us/dotnet/core/tools/dotnet-install-script). - Network accessline 74
For installation instructions, see the official docs: https://learn.microsoft.com/en-us/java/openjdk/install - Network accessline 74
For installation instructions, see the official docs: https://learn.microsoft.com/en-us/java/openjdk/install - Network accessline 114
1. Download from: https://developer.android.com/studio#command-line-tools-only - Network accessline 114
1. Download from: https://developer.android.com/studio#command-line-tools-only
plugins/dotnet-maui/skills/dotnet-maui-doctor/references/microsoft-openjdk.md
- Network accessline 74
- [Microsoft OpenJDK Installation Guide](https://learn.microsoft.com/en-us/java/openjdk/install) - [Microsoft OpenJDK Download](https://learn.microsoft.com/en-us/java/openjdk/download) - Network accessline 74
- [Microsoft OpenJDK Installation Guide](https://learn.microsoft.com/en-us/java/openjdk/install) - [Microsoft OpenJDK Download](https://learn.microsoft.com/en-us/java/openjdk/download) - Network accessline 75
- [Microsoft OpenJDK Download](https://learn.microsoft.com/en-us/java/openjdk/download) - Network accessline 75
- [Microsoft OpenJDK Download](https://learn.microsoft.com/en-us/java/openjdk/download) - Network accessline 111
- [Microsoft OpenJDK Installation Guide](https://learn.microsoft.com/en-us/java/openjdk/install) - [Microsoft OpenJDK Download](https://learn.microsoft.com/en-us/java/openjdk/download) - Network accessline 111
- [Microsoft OpenJDK Installation Guide](https://learn.microsoft.com/en-us/java/openjdk/install) - [Microsoft OpenJDK Download](https://learn.microsoft.com/en-us/java/openjdk/download) - Network accessline 112
- [Microsoft OpenJDK Download](https://learn.microsoft.com/en-us/java/openjdk/download) - Network accessline 112
- [Microsoft OpenJDK Download](https://learn.microsoft.com/en-us/java/openjdk/download) - Network accessline 113
- [Microsoft OpenJDK GitHub](https://github.com/microsoft/openjdk) - Network accessline 113
- [Microsoft OpenJDK GitHub](https://github.com/microsoft/openjdk)
plugins/dotnet-maui/skills/dotnet-maui-doctor/references/platform-requirements-macos.md
- Network accessline 7
| macOS | Recent version | ARM64 or Intel | | .NET SDK | Active support | Query releases-index.json for latest | | Xcode | Per WorkloadDependencies | From [Apple Developer Downloads](https://developer.apple.com/download/all/) | - Network accessline 7
| macOS | Recent version | ARM64 or Intel | | .NET SDK | Active support | Query releases-index.json for latest | | Xcode | Per WorkloadDependencies | From [Apple Developer Downloads](https://developer.apple.com/download/all/) | - Network accessline 8
| .NET SDK | Active support | Query releases-index.json for latest | | Xcode | Per WorkloadDependencies | From [Apple Developer Downloads](https://developer.apple.com/download/all/) | | Command Line Tools | Match Xcode | `xcode-select --ins - Network accessline 8
| .NET SDK | Active support | Query releases-index.json for latest | | Xcode | Per WorkloadDependencies | From [Apple Developer Downloads](https://developer.apple.com/download/all/) | | Command Line Tools | Match Xcode | `xcode-select --ins - Network accessline 9
| Xcode | Per WorkloadDependencies | From [Apple Developer Downloads](https://developer.apple.com/download/all/) | - Network accessline 9
| Xcode | Per WorkloadDependencies | From [Apple Developer Downloads](https://developer.apple.com/download/all/) |
plugins/dotnet-maui/skills/dotnet-maui-doctor/references/troubleshooting-macos.md
plugins/dotnet-maui/skills/dotnet-maui-doctor/references/troubleshooting.md
- Network accessline 24
If not installed, see: https://dotnet.microsoft.com/download - Network accessline 24
If not installed, see: https://dotnet.microsoft.com/download - Network accessline 59
# Install specific version curl -sSL https://dot.net/v1/dotnet-install.sh | bash /dev/stdin --version X.Y.Z - Network accessline 59
# Install specific version curl -sSL https://dot.net/v1/dotnet-install.sh | bash /dev/stdin --version X.Y.Z - Dangerous shell operationline 60
curl -sSL https://dot.net/v1/dotnet-install.sh | bash /dev/stdin --version X.Y.Z - Dangerous shell operationline 60
curl -sSL https://dot.net/v1/dotnet-install.sh | bash /dev/stdin --version X.Y.Z - Network accessline 60
curl -sSL https://dot.net/v1/dotnet-install.sh | bash /dev/stdin --version X.Y.Z - Network accessline 60
curl -sSL https://dot.net/v1/dotnet-install.sh | bash /dev/stdin --version X.Y.Z - Network accessline 94
**Solution**: Install the recommended Microsoft OpenJDK version using the [official installation guide](https://learn.microsoft.com/en-us/java/openjdk/install). - Network accessline 94
**Solution**: Install the recommended Microsoft OpenJDK version using the [official installation guide](https://learn.microsoft.com/en-us/java/openjdk/install). - Dangerous shell operationline 115
sudo update-java-alternatives --set msopenjdk-{VERSION}-amd64 - Dangerous shell operationline 115
sudo update-java-alternatives --set msopenjdk-{VERSION}-amd64 - Network accessline 137
# If no SDK found, download command-line tools from: # https://developer.android.com/studio#command-line-tools-only - Network accessline 137
# If no SDK found, download command-line tools from: # https://developer.android.com/studio#command-line-tools-only - Network accessline 138
# https://developer.android.com/studio#command-line-tools-only - Network accessline 138
# https://developer.android.com/studio#command-line-tools-only - Dangerous shell operationline 194
sudo modprobe kvm - Dangerous shell operationline 194
sudo modprobe kvm - Network accessline 304
- [.NET MAUI GitHub Issues](https://github.com/dotnet/maui/issues) - Network accessline 304
- [.NET MAUI GitHub Issues](https://github.com/dotnet/maui/issues) - Network accessline 305
- [Stack Overflow - maui tag](https://stackoverflow.com/questions/tagged/maui) - Network accessline 305
- [Stack Overflow - maui tag](https://stackoverflow.com/questions/tagged/maui) - Network accessline 306
- [.NET MAUI Documentation](https://learn.microsoft.com/en-us/dotnet/maui/) - Network accessline 306
- [.NET MAUI Documentation](https://learn.microsoft.com/en-us/dotnet/maui/)
plugins/dotnet-maui/skills/dotnet-maui-doctor/references/workload-dependencies-discovery.md
- Network accessline 24
curl -s "https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/releases-index.json" | \ - Network accessline 24
curl -s "https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/releases-index.json" | \ - Network accessline 30
$releases = Invoke-RestMethod "https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/releases-index.json" - Network accessline 30
$releases = Invoke-RestMethod "https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/releases-index.json" - Network accessline 68
curl -o workloadset.nupkg "https://api.nuget.org/v3-flatcontainer/microsoft.net.workloads.{band}/{version}/microsoft.net.workloads.{band}.{version}.nupkg" - Network accessline 68
curl -o workloadset.nupkg "https://api.nuget.org/v3-flatcontainer/microsoft.net.workloads.{band}/{version}/microsoft.net.workloads.{band}.{version}.nupkg" - Network accessline 74
Invoke-WebRequest "https://api.nuget.org/v3-flatcontainer/microsoft.net.workloads.{band}/{version}/microsoft.net.workloads.{band}.{version}.nupkg" -OutFile workloadset.nupkg - Network accessline 74
Invoke-WebRequest "https://api.nuget.org/v3-flatcontainer/microsoft.net.workloads.{band}/{version}/microsoft.net.workloads.{band}.{version}.nupkg" -OutFile workloadset.nupkg - Network accessline 104
curl -o manifest.nupkg "https://api.nuget.org/v3-flatcontainer/{packageid}/{version}/{packageid}.{version}.nupkg" - Network accessline 104
curl -o manifest.nupkg "https://api.nuget.org/v3-flatcontainer/{packageid}/{version}/{packageid}.{version}.nupkg" - Network accessline 110
Invoke-WebRequest "https://api.nuget.org/v3-flatcontainer/{packageid}/{version}/{packageid}.{version}.nupkg" -OutFile manifest.nupkg - Network accessline 110
Invoke-WebRequest "https://api.nuget.org/v3-flatcontainer/{packageid}/{version}/{packageid}.{version}.nupkg" -OutFile manifest.nupkg - Network accessline 172
# Step 1: Get SDK info curl -s "https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/releases-index.json" | \ - Network accessline 172
# Step 1: Get SDK info curl -s "https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/releases-index.json" | \ - Network accessline 173
curl -s "https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/releases-index.json" | \ - Network accessline 173
curl -s "https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/releases-index.json" | \ - Network accessline 182
# Step 3: Download workload set manifest curl -so workloadset.nupkg "https://api.nuget.org/v3-flatcontainer/microsoft.net.workloads.10.0.100/10.102.0/microsoft.net.workloads.10.0.100.10.102.0.nupkg" - Network accessline 182
# Step 3: Download workload set manifest curl -so workloadset.nupkg "https://api.nuget.org/v3-flatcontainer/microsoft.net.workloads.10.0.100/10.102.0/microsoft.net.workloads.10.0.100.10.102.0.nupkg" - Network accessline 183
curl -so workloadset.nupkg "https://api.nuget.org/v3-flatcontainer/microsoft.net.workloads.10.0.100/10.102.0/microsoft.net.workloads.10.0.100.10.102.0.nupkg" - Network accessline 183
curl -so workloadset.nupkg "https://api.nuget.org/v3-flatcontainer/microsoft.net.workloads.10.0.100/10.102.0/microsoft.net.workloads.10.0.100.10.102.0.nupkg" - Network accessline 187
# Step 4: Download Android manifest curl -so android.nupkg "https://api.nuget.org/v3-flatcontainer/microsoft.net.sdk.android.manifest-9.0.100/35.0.50/microsoft.net.sdk.android.manifest-9.0.100.35.0.50.nupkg" - Network accessline 187
# Step 4: Download Android manifest curl -so android.nupkg "https://api.nuget.org/v3-flatcontainer/microsoft.net.sdk.android.manifest-9.0.100/35.0.50/microsoft.net.sdk.android.manifest-9.0.100.35.0.50.nupkg" - Network accessline 188
curl -so android.nupkg "https://api.nuget.org/v3-flatcontainer/microsoft.net.sdk.android.manifest-9.0.100/35.0.50/microsoft.net.sdk.android.manifest-9.0.100.35.0.50.nupkg" - Network accessline 188
curl -so android.nupkg "https://api.nuget.org/v3-flatcontainer/microsoft.net.sdk.android.manifest-9.0.100/35.0.50/microsoft.net.sdk.android.manifest-9.0.100.35.0.50.nupkg" - Network accessline 195
# Step 1: Get SDK info $releases = Invoke-RestMethod "https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/releases-index.json" - Network accessline 195
# Step 1: Get SDK info $releases = Invoke-RestMethod "https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/releases-index.json" - Network accessline 196
$releases = Invoke-RestMethod "https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/releases-index.json" - Network accessline 196
$releases = Invoke-RestMethod "https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/releases-index.json" - Network accessline 206
# Step 3: Download workload set manifest and extract Invoke-WebRequest "https://api.nuget.org/v3-flatcontainer/microsoft.net.workloads.10.0.100/10.102.0/microsoft.net.workloads.10.0.100.10.102.0.nupkg" -OutFile workloadset.nupkg - Network accessline 206
# Step 3: Download workload set manifest and extract Invoke-WebRequest "https://api.nuget.org/v3-flatcontainer/microsoft.net.workloads.10.0.100/10.102.0/microsoft.net.workloads.10.0.100.10.102.0.nupkg" -OutFile workloadset.nupkg - Network accessline 207
Invoke-WebRequest "https://api.nuget.org/v3-flatcontainer/microsoft.net.workloads.10.0.100/10.102.0/microsoft.net.workloads.10.0.100.10.102.0.nupkg" -OutFile workloadset.nupkg - Network accessline 207
Invoke-WebRequest "https://api.nuget.org/v3-flatcontainer/microsoft.net.workloads.10.0.100/10.102.0/microsoft.net.workloads.10.0.100.10.102.0.nupkg" -OutFile workloadset.nupkg - Network accessline 217
# Step 4: Download Android manifest and extract WorkloadDependencies Invoke-WebRequest "https://api.nuget.org/v3-flatcontainer/microsoft.net.sdk.android.manifest-9.0.100/35.0.50/microsoft.net.sdk.android.manifest-9.0.100.35.0.50.nupkg" -Out - Network accessline 217
# Step 4: Download Android manifest and extract WorkloadDependencies Invoke-WebRequest "https://api.nuget.org/v3-flatcontainer/microsoft.net.sdk.android.manifest-9.0.100/35.0.50/microsoft.net.sdk.android.manifest-9.0.100.35.0.50.nupkg" -Out - Network accessline 218
Invoke-WebRequest "https://api.nuget.org/v3-flatcontainer/microsoft.net.sdk.android.manifest-9.0.100/35.0.50/microsoft.net.sdk.android.manifest-9.0.100.35.0.50.nupkg" -OutFile android.nupkg - Network accessline 218
Invoke-WebRequest "https://api.nuget.org/v3-flatcontainer/microsoft.net.sdk.android.manifest-9.0.100/35.0.50/microsoft.net.sdk.android.manifest-9.0.100.35.0.50.nupkg" -OutFile android.nupkg - Network accessline 232
| Operation | Endpoint | |-----------|----------| | .NET releases | `https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/releases-index.json` | - Network accessline 232
| Operation | Endpoint | |-----------|----------| | .NET releases | `https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/releases-index.json` | - Network accessline 233
|-----------|----------| | .NET releases | `https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/releases-index.json` | | NuGet service index | `https://api.nuget.org/v3/index.json` | - Network accessline 233
|-----------|----------| | .NET releases | `https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/releases-index.json` | | NuGet service index | `https://api.nuget.org/v3/index.json` | - Network accessline 234
| .NET releases | `https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/releases-index.json` | | NuGet service index | `https://api.nuget.org/v3/index.json` | | Download package | `https://api.nuget.org/v3-flatcontainer/{id}/{ver - Network accessline 234
| .NET releases | `https://dotnetcli.blob.core.windows.net/dotnet/release-metadata/releases-index.json` | | NuGet service index | `https://api.nuget.org/v3/index.json` | | Download package | `https://api.nuget.org/v3-flatcontainer/{id}/{ver - Network accessline 235
| NuGet service index | `https://api.nuget.org/v3/index.json` | - Network accessline 235
| NuGet service index | `https://api.nuget.org/v3/index.json` | - Network accessline 236
| Download package | `https://api.nuget.org/v3-flatcontainer/{id}/{version}/{id}.{version}.nupkg` | - Network accessline 236
| Download package | `https://api.nuget.org/v3-flatcontainer/{id}/{version}/{id}.{version}.nupkg` |
plugins/dotnet-maui/skills/maui-collectionview/SKILL.md
- Network accessline 89
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui" - Network accessline 89
<ContentPage xmlns="http://schemas.microsoft.com/dotnet/2021/maui" - Network accessline 90
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" - Network accessline 90
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" - Network accessline 465
- [CollectionView overview](https://learn.microsoft.com/dotnet/maui/user-interface/controls/collectionview/) - Network accessline 465
- [CollectionView overview](https://learn.microsoft.com/dotnet/maui/user-interface/controls/collectionview/) - Network accessline 466
- [CollectionView layout](https://learn.microsoft.com/dotnet/maui/user-interface/controls/collectionview/layout) - Network accessline 466
- [CollectionView layout](https://learn.microsoft.com/dotnet/maui/user-interface/controls/collectionview/layout) - Network accessline 467
- [CollectionView selection](https://learn.microsoft.com/dotnet/maui/user-interface/controls/collectionview/selection) - Network accessline 467
- [CollectionView selection](https://learn.microsoft.com/dotnet/maui/user-interface/controls/collectionview/selection) - Network accessline 468
- [CollectionView grouping](https://learn.microsoft.com/dotnet/maui/user-interface/controls/collectionview/grouping) - Network accessline 468
- [CollectionView grouping](https://learn.microsoft.com/dotnet/maui/user-interface/controls/collectionview/grouping) - Network accessline 469
- [CollectionView scrolling](https://learn.microsoft.com/dotnet/maui/user-interface/controls/collectionview/scrolling) - Network accessline 469
- [CollectionView scrolling](https://learn.microsoft.com/dotnet/maui/user-interface/controls/collectionview/scrolling) - Network accessline 470
- [CollectionView EmptyView](https://learn.microsoft.com/dotnet/maui/user-interface/controls/collectionview/emptyview) - Network accessline 470
- [CollectionView EmptyView](https://learn.microsoft.com/dotnet/maui/user-interface/controls/collectionview/emptyview)
plugins/dotnet-maui/skills/maui-data-binding/SKILL.md
- Network accessline 39
- **Shell navigation parameters** — use the `maui-shell-navigation` skill - **Service registration / DI** — use the `maui-dependency-injection` skill - **Property-change-triggered animations** — use built-in [.NET MAUI animation APIs](https - Network accessline 39
- **Shell navigation parameters** — use the `maui-shell-navigation` skill - **Service registration / DI** — use the `maui-dependency-injection` skill - **Property-change-triggered animations** — use built-in [.NET MAUI animation APIs](https - Network accessline 41
- **Property-change-triggered animations** — use built-in [.NET MAUI animation APIs](https://learn.microsoft.com/dotnet/maui/user-interface/animation/basic) - Network accessline 41
- **Property-change-triggered animations** — use built-in [.NET MAUI animation APIs](https://learn.microsoft.com/dotnet/maui/user-interface/animation/basic) - Network accessline 416
- [Data binding overview](https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/) - Network accessline 416
- [Data binding overview](https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/) - Network accessline 417
- [Compiled bindings](https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings) - Network accessline 417
- [Compiled bindings](https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/compiled-bindings) - Network accessline 418
- [Value converters](https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/converters) - Network accessline 418
- [Value converters](https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/converters) - Network accessline 419
- [Relative bindings](https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/relative-bindings) - Network accessline 419
- [Relative bindings](https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/relative-bindings) - Network accessline 420
- [Multi-bindings](https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/multibindings) - Network accessline 420
- [Multi-bindings](https://learn.microsoft.com/dotnet/maui/fundamentals/data-binding/multibindings) - Network accessline 421
- [CommunityToolkit.Mvvm](https://learn.microsoft.com/dotnet/communitytoolkit/mvvm/) - Network accessline 421
- [CommunityToolkit.Mvvm](https://learn.microsoft.com/dotnet/communitytoolkit/mvvm/)
plugins/dotnet-maui/skills/maui-dependency-injection/SKILL.md
- Network accessline 348
- [Dependency injection in .NET MAUI](https://learn.microsoft.com/dotnet/maui/fundamentals/dependency-injection) - Network accessline 348
- [Dependency injection in .NET MAUI](https://learn.microsoft.com/dotnet/maui/fundamentals/dependency-injection) - Network accessline 349
- [.NET dependency injection fundamentals](https://learn.microsoft.com/dotnet/core/extensions/dependency-injection) - Network accessline 349
- [.NET dependency injection fundamentals](https://learn.microsoft.com/dotnet/core/extensions/dependency-injection)
plugins/dotnet-maui/skills/maui-shell-navigation/SKILL.md
- Network accessline 32
- Deep linking from external URLs or app links — see [.NET MAUI deep linking docs](https://learn.microsoft.com/dotnet/maui/fundamentals/app-links) - Network accessline 32
- Deep linking from external URLs or app links — see [.NET MAUI deep linking docs](https://learn.microsoft.com/dotnet/maui/fundamentals/app-links) - Network accessline 116
<Shell xmlns="http://schemas.microsoft.com/dotnet/2021/maui" - Network accessline 116
<Shell xmlns="http://schemas.microsoft.com/dotnet/2021/maui" - Network accessline 117
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" - Network accessline 117
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" - Network accessline 386
- `references/shell-navigation-api.md` — Full API reference for Shell hierarchy, routes, tabs, flyout, and navigation - [.NET MAUI Shell Navigation](https://learn.microsoft.com/dotnet/maui/fundamentals/shell/navigation) - Network accessline 386
- `references/shell-navigation-api.md` — Full API reference for Shell hierarchy, routes, tabs, flyout, and navigation - [.NET MAUI Shell Navigation](https://learn.microsoft.com/dotnet/maui/fundamentals/shell/navigation) - Network accessline 387
- [.NET MAUI Shell Navigation](https://learn.microsoft.com/dotnet/maui/fundamentals/shell/navigation) - Network accessline 387
- [.NET MAUI Shell Navigation](https://learn.microsoft.com/dotnet/maui/fundamentals/shell/navigation) - Network accessline 388
- [.NET MAUI Shell Tabs](https://learn.microsoft.com/dotnet/maui/fundamentals/shell/tabs) - Network accessline 388
- [.NET MAUI Shell Tabs](https://learn.microsoft.com/dotnet/maui/fundamentals/shell/tabs) - Network accessline 389
- [.NET MAUI Shell Flyout](https://learn.microsoft.com/dotnet/maui/fundamentals/shell/flyout) - Network accessline 389
- [.NET MAUI Shell Flyout](https://learn.microsoft.com/dotnet/maui/fundamentals/shell/flyout) - Network accessline 390
- [.NET MAUI Shell Pages](https://learn.microsoft.com/dotnet/maui/fundamentals/shell/pages) - Network accessline 390
- [.NET MAUI Shell Pages](https://learn.microsoft.com/dotnet/maui/fundamentals/shell/pages)
plugins/dotnet-maui/skills/maui-shell-navigation/references/shell-navigation-api.md
- Network accessline 37
<Shell xmlns="http://schemas.microsoft.com/dotnet/2021/maui" - Network accessline 37
<Shell xmlns="http://schemas.microsoft.com/dotnet/2021/maui" - Network accessline 38
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" - Network accessline 38
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
plugins/dotnet-maui/skills/maui-theming/SKILL.md
- Network accessline 32
- Localization or language switching — see [.NET MAUI localization docs](https://learn.microsoft.com/dotnet/maui/fundamentals/localization) - Network accessline 32
- Localization or language switching — see [.NET MAUI localization docs](https://learn.microsoft.com/dotnet/maui/fundamentals/localization) - Network accessline 33
- Accessibility-specific visual adjustments — see [.NET MAUI accessibility docs](https://learn.microsoft.com/dotnet/maui/fundamentals/accessibility) - Network accessline 33
- Accessibility-specific visual adjustments — see [.NET MAUI accessibility docs](https://learn.microsoft.com/dotnet/maui/fundamentals/accessibility) - Network accessline 34
- App icon or splash screen configuration — see [.NET MAUI app icon docs](https://learn.microsoft.com/dotnet/maui/user-interface/images/app-icons) - Network accessline 34
- App icon or splash screen configuration — see [.NET MAUI app icon docs](https://learn.microsoft.com/dotnet/maui/user-interface/images/app-icons) - Network accessline 177
<ResourceDictionary xmlns="http://schemas.microsoft.com/dotnet/2021/maui" - Network accessline 177
<ResourceDictionary xmlns="http://schemas.microsoft.com/dotnet/2021/maui" - Network accessline 178
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" - Network accessline 178
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
plugins/dotnet-maui/skills/maui-theming/references/theming-api.md
- Network accessline 46
<ResourceDictionary xmlns="http://schemas.microsoft.com/dotnet/2021/maui" - Network accessline 46
<ResourceDictionary xmlns="http://schemas.microsoft.com/dotnet/2021/maui" - Network accessline 47
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml" - Network accessline 47
xmlns:x="http://schemas.microsoft.com/winfx/2009/xaml"
plugins/dotnet-msbuild/agents/msbuild.agent.md
- Network accessline 54
**GitHub Repository**: https://github.com/MicrosoftDocs/visualstudio-docs/blob/main/docs/msbuild - Network accessline 56
Key documentation areas: - [Build Process Overview](https://learn.microsoft.com/en-us/visualstudio/msbuild/build-process-overview) — evaluation phases, execution model, property/item ordering - Network accessline 57
- [Build Process Overview](https://learn.microsoft.com/en-us/visualstudio/msbuild/build-process-overview) — evaluation phases, execution model, property/item ordering - Network accessline 58
- [MSBuild Concepts](https://github.com/MicrosoftDocs/visualstudio-docs/blob/main/docs/msbuild/msbuild-concepts.md) - Network accessline 59
- [MSBuild Reference](https://github.com/MicrosoftDocs/visualstudio-docs/blob/main/docs/msbuild/msbuild-reference.md) - Network accessline 60
- [Common MSBuild Project Properties](https://github.com/MicrosoftDocs/visualstudio-docs/blob/main/docs/msbuild/common-msbuild-project-properties.md) - Network accessline 61
- [MSBuild Targets](https://github.com/MicrosoftDocs/visualstudio-docs/blob/main/docs/msbuild/msbuild-targets.md) - Network accessline 62
- [MSBuild Tasks](https://github.com/MicrosoftDocs/visualstudio-docs/blob/main/docs/msbuild/msbuild-tasks.md) - Network accessline 63
- [Property Functions](https://github.com/MicrosoftDocs/visualstudio-docs/blob/main/docs/msbuild/property-functions.md) - Network accessline 64
- [Item Functions](https://github.com/MicrosoftDocs/visualstudio-docs/blob/main/docs/msbuild/item-functions.md) - Network accessline 65
- [MSBuild Conditions](https://github.com/MicrosoftDocs/visualstudio-docs/blob/main/docs/msbuild/msbuild-conditions.md)
plugins/dotnet-msbuild/skills/directory-build-organization/SKILL.md
- Network accessline 97
Central Package Management (CPM) provides a single source of truth for all NuGet package versions. See [https://learn.microsoft.com/en-us/nuget/consume-packages/central-package-management](https://learn.microsoft.com/en-us/nuget/consume-pac - Network accessline 97
Central Package Management (CPM) provides a single source of truth for all NuGet package versions. See [https://learn.microsoft.com/en-us/nuget/consume-packages/central-package-management](https://learn.microsoft.com/en-us/nuget/consume-pac
plugins/dotnet-msbuild/skills/directory-build-organization/references/targetframework-props-pitfall.md
- Network accessline 7
For a detailed explanation of MSBuild's evaluation and execution phases, see [Build process overview](https://learn.microsoft.com/en-us/visualstudio/msbuild/build-process-overview). - Network accessline 7
For a detailed explanation of MSBuild's evaluation and execution phases, see [Build process overview](https://learn.microsoft.com/en-us/visualstudio/msbuild/build-process-overview).
plugins/dotnet-msbuild/skills/eval-performance/SKILL.md
- Network accessline 35
For a comprehensive overview of MSBuild's evaluation and execution model, see [Build process overview](https://learn.microsoft.com/en-us/visualstudio/msbuild/build-process-overview). - Network accessline 35
For a comprehensive overview of MSBuild's evaluation and execution model, see [Build process overview](https://learn.microsoft.com/en-us/visualstudio/msbuild/build-process-overview).
plugins/dotnet-msbuild/skills/including-generated-files/SKILL.md
- Network accessline 33
For detailed explanation, see [How MSBuild Builds Projects](https://docs.microsoft.com/visualstudio/msbuild/build-process-overview). - Network accessline 33
For detailed explanation, see [How MSBuild Builds Projects](https://docs.microsoft.com/visualstudio/msbuild/build-process-overview). - Network accessline 130
- [How MSBuild Builds Projects](https://docs.microsoft.com/visualstudio/msbuild/build-process-overview) - Network accessline 130
- [How MSBuild Builds Projects](https://docs.microsoft.com/visualstudio/msbuild/build-process-overview) - Network accessline 131
- [Evaluation Phase](https://docs.microsoft.com/visualstudio/msbuild/build-process-overview#evaluation-phase) - Network accessline 131
- [Evaluation Phase](https://docs.microsoft.com/visualstudio/msbuild/build-process-overview#evaluation-phase) - Network accessline 132
- [Execution Phase](https://docs.microsoft.com/visualstudio/msbuild/build-process-overview#execution-phase) - Network accessline 132
- [Execution Phase](https://docs.microsoft.com/visualstudio/msbuild/build-process-overview#execution-phase) - Network accessline 133
- [Common Item Types](https://docs.microsoft.com/visualstudio/msbuild/common-msbuild-project-items) - Network accessline 133
- [Common Item Types](https://docs.microsoft.com/visualstudio/msbuild/common-msbuild-project-items) - Network accessline 134
- [How the SDK imports items by default](https://github.com/dotnet/sdk/blob/main/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.DefaultItems.props) - Network accessline 134
- [How the SDK imports items by default](https://github.com/dotnet/sdk/blob/main/src/Tasks/Microsoft.NET.Build.Tasks/targets/Microsoft.NET.Sdk.DefaultItems.props) - Network accessline 135
- [Official docs: Handle generated files](https://learn.microsoft.com/visualstudio/msbuild/customize-your-build#handle-generated-files) - Network accessline 135
- [Official docs: Handle generated files](https://learn.microsoft.com/visualstudio/msbuild/customize-your-build#handle-generated-files)
plugins/dotnet-msbuild/skills/msbuild-antipatterns/SKILL.md
- Network accessline 247
**Fix:** Use Central Package Management. See [https://learn.microsoft.com/en-us/nuget/consume-packages/central-package-management](https://learn.microsoft.com/en-us/nuget/consume-packages/central-package-management) for details. - Network accessline 247
**Fix:** Use Central Package Management. See [https://learn.microsoft.com/en-us/nuget/consume-packages/central-package-management](https://learn.microsoft.com/en-us/nuget/consume-packages/central-package-management) for details. - Network accessline 372
MSBuild's evaluator normalizes `\` → `/` on Unix-like systems before resolving the path. See `FileUtilities.MaybeAdjustFilePath` and `ConvertToUnixSlashes` in [`microsoft/msbuild` `src/Framework/FileUtilities.cs`](https://github.com/dotnet/ - Network accessline 372
MSBuild's evaluator normalizes `\` → `/` on Unix-like systems before resolving the path. See `FileUtilities.MaybeAdjustFilePath` and `ConvertToUnixSlashes` in [`microsoft/msbuild` `src/Framework/FileUtilities.cs`](https://github.com/dotnet/
plugins/dotnet-msbuild/skills/msbuild-antipatterns/references/additional-antipatterns.md
- Network accessline 123
For a detailed explanation of MSBuild's evaluation and execution phases, see [Build process overview](https://learn.microsoft.com/en-us/visualstudio/msbuild/build-process-overview). - Network accessline 123
For a detailed explanation of MSBuild's evaluation and execution phases, see [Build process overview](https://learn.microsoft.com/en-us/visualstudio/msbuild/build-process-overview).
plugins/dotnet-msbuild/skills/msbuild-modernization/SKILL.md
- Network accessline 29
<!-- Legacy: ~80+ lines for a simple library --> <?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - Network accessline 29
<!-- Legacy: ~80+ lines for a simple library --> <?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - Network accessline 30
<?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" /> - Network accessline 30
<?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" /> - Network accessline 31
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - Network accessline 31
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - Network accessline 64
<?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - Network accessline 64
<?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - Network accessline 65
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - Network accessline 65
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - Network accessline 297
<?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - Network accessline 297
<?xml version="1.0" encoding="utf-8"?> <Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - Network accessline 298
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - Network accessline 298
<Project ToolsVersion="15.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - Network accessline 428
Centralizes NuGet version management across a multi-project solution. See [https://learn.microsoft.com/en-us/nuget/consume-packages/central-package-management](https://learn.microsoft.com/en-us/nuget/consume-packages/central-package-managem - Network accessline 428
Centralizes NuGet version management across a multi-project solution. See [https://learn.microsoft.com/en-us/nuget/consume-packages/central-package-management](https://learn.microsoft.com/en-us/nuget/consume-packages/central-package-managem
plugins/dotnet-nuget/skills/convert-to-cpm/references/baseline-comparison.md
- Network accessline 115
The user can learn more about MSBuild binary logs from: - [Troubleshoot and create logs for MSBuild problems](https://learn.microsoft.com/visualstudio/ide/msbuild-logs?view=visualstudio#provide-msbuild-binary-logs-for-investigation) - Network accessline 115
The user can learn more about MSBuild binary logs from: - [Troubleshoot and create logs for MSBuild problems](https://learn.microsoft.com/visualstudio/ide/msbuild-logs?view=visualstudio#provide-msbuild-binary-logs-for-investigation) - Network accessline 116
- [Troubleshoot and create logs for MSBuild problems](https://learn.microsoft.com/visualstudio/ide/msbuild-logs?view=visualstudio#provide-msbuild-binary-logs-for-investigation) - Network accessline 116
- [Troubleshoot and create logs for MSBuild problems](https://learn.microsoft.com/visualstudio/ide/msbuild-logs?view=visualstudio#provide-msbuild-binary-logs-for-investigation) - Network accessline 117
- [Obtaining Build Logs with MSBuild](https://learn.microsoft.com/visualstudio/msbuild/obtaining-build-logs-with-msbuild?view=visualstudio#save-a-binary-log) - Network accessline 117
- [Obtaining Build Logs with MSBuild](https://learn.microsoft.com/visualstudio/msbuild/obtaining-build-logs-with-msbuild?view=visualstudio#save-a-binary-log) - Network accessline 118
- https://github.com/dotnet/msbuild/blob/main/documentation/wiki/Binary-Log.md - Network accessline 118
- https://github.com/dotnet/msbuild/blob/main/documentation/wiki/Binary-Log.md
plugins/dotnet-nuget/skills/convert-to-cpm/references/directory-packages-props.md
- Network accessline 9
Only the nearest `Directory.Packages.props` is evaluated per project. CPM also supports `Directory.Packages.props` in sub-folders — for example, test projects may have different dependencies than source code and can use a separate `Director - Network accessline 9
Only the nearest `Directory.Packages.props` is evaluated per project. CPM also supports `Directory.Packages.props` in sub-folders — for example, test projects may have different dependencies than source code and can use a separate `Director
plugins/dotnet-nuget/skills/convert-to-cpm/references/validation-and-errors.md
- Network accessline 13
| **NU1008** | A `PackageReference` still has a `Version` attribute when CPM is enabled | Remove the `Version` attribute or convert to `VersionOverride` | | **NU1010** | A `PackageReference` has no corresponding `PackageVersion` entry | Add - Network accessline 13
| **NU1008** | A `PackageReference` still has a `Version` attribute when CPM is enabled | Remove the `Version` attribute or convert to `VersionOverride` | | **NU1010** | A `PackageReference` has no corresponding `PackageVersion` entry | Add - Network accessline 15
| **NU1507** | Multiple package sources without package source mapping | Configure [package source mapping](https://learn.microsoft.com/nuget/consume-packages/package-source-mapping) | - Network accessline 15
| **NU1507** | Multiple package sources without package source mapping | Configure [package source mapping](https://learn.microsoft.com/nuget/consume-packages/package-source-mapping) | - Network accessline 31
| Version properties in `.props` files cause build errors | Decide whether to inline the version or keep the property. See [msbuild-property-handling.md](msbuild-property-handling.md) | | Conditional PackageReference loses its condition | M - Network accessline 31
| Version properties in `.props` files cause build errors | Decide whether to inline the version or keep the property. See [msbuild-property-handling.md](msbuild-property-handling.md) | | Conditional PackageReference loses its condition | M - Network accessline 32
| Conditional PackageReference loses its condition | Move the condition to the `PackageVersion` entry in `Directory.Packages.props`, or use `VersionOverride` in the project | | `packages.config` projects are in scope | These must first be [ - Network accessline 32
| Conditional PackageReference loses its condition | Move the condition to the `PackageVersion` entry in `Directory.Packages.props`, or use `VersionOverride` in the project | | `packages.config` projects are in scope | These must first be [ - Network accessline 33
| `packages.config` projects are in scope | These must first be [migrated to PackageReference](https://learn.microsoft.com/nuget/consume-packages/migrate-packages-config-to-package-reference) before CPM conversion | - Network accessline 33
| `packages.config` projects are in scope | These must first be [migrated to PackageReference](https://learn.microsoft.com/nuget/consume-packages/migrate-packages-config-to-package-reference) before CPM conversion |
plugins/dotnet-template-engine/skills/template-authoring/SKILL.md
- Network accessline 83
{ "$schema": "http://json.schemastore.org/template", - Network accessline 83
{ "$schema": "http://json.schemastore.org/template", - Network accessline 84
"$schema": "http://json.schemastore.org/template", - Network accessline 84
"$schema": "http://json.schemastore.org/template", - Network accessline 216
- [Custom templates for dotnet new](https://learn.microsoft.com/dotnet/core/tools/custom-templates) — official authoring guide - Network accessline 216
- [Custom templates for dotnet new](https://learn.microsoft.com/dotnet/core/tools/custom-templates) — official authoring guide - Network accessline 217
- [template.json reference](https://github.com/dotnet/templating/wiki/Reference-for-template.json) — full schema reference - Network accessline 217
- [template.json reference](https://github.com/dotnet/templating/wiki/Reference-for-template.json) — full schema reference - Network accessline 218
- [Template Engine Wiki](https://github.com/dotnet/templating/wiki) — template engine internals - Network accessline 218
- [Template Engine Wiki](https://github.com/dotnet/templating/wiki) — template engine internals
plugins/dotnet-template-engine/skills/template-comparison/SKILL.md
- Network accessline 153
- [dotnet new templates](https://learn.microsoft.com/dotnet/core/tools/dotnet-new-sdk-templates) — built-in template reference - Network accessline 153
- [dotnet new templates](https://learn.microsoft.com/dotnet/core/tools/dotnet-new-sdk-templates) — built-in template reference - Network accessline 154
- [dotnet new](https://learn.microsoft.com/dotnet/core/tools/dotnet-new) — CLI reference - Network accessline 154
- [dotnet new](https://learn.microsoft.com/dotnet/core/tools/dotnet-new) — CLI reference
plugins/dotnet-template-engine/skills/template-discovery/SKILL.md
- Network accessline 214
- [dotnet new templates](https://learn.microsoft.com/dotnet/core/tools/dotnet-new-sdk-templates) — built-in template reference - Network accessline 214
- [dotnet new templates](https://learn.microsoft.com/dotnet/core/tools/dotnet-new-sdk-templates) — built-in template reference - Network accessline 215
- [Template Engine Wiki](https://github.com/dotnet/templating/wiki) — template engine internals - Network accessline 215
- [Template Engine Wiki](https://github.com/dotnet/templating/wiki) — template engine internals
plugins/dotnet-template-engine/skills/template-instantiation/SKILL.md
- Network accessline 179
- [Central Package Management](https://learn.microsoft.com/nuget/consume-packages/central-package-management) — CPM documentation - Network accessline 179
- [Central Package Management](https://learn.microsoft.com/nuget/consume-packages/central-package-management) — CPM documentation - Network accessline 180
- [dotnet new](https://learn.microsoft.com/dotnet/core/tools/dotnet-new) — CLI reference - Network accessline 180
- [dotnet new](https://learn.microsoft.com/dotnet/core/tools/dotnet-new) — CLI reference
plugins/dotnet-template-engine/skills/template-smart-defaults/SKILL.md
- Network accessline 117
- [dotnet new](https://learn.microsoft.com/dotnet/core/tools/dotnet-new) — CLI reference - Network accessline 117
- [dotnet new](https://learn.microsoft.com/dotnet/core/tools/dotnet-new) — CLI reference - Network accessline 118
- [Native AOT deployment](https://learn.microsoft.com/dotnet/core/deploying/native-aot/) — AOT framework requirements - Network accessline 118
- [Native AOT deployment](https://learn.microsoft.com/dotnet/core/deploying/native-aot/) — AOT framework requirements
plugins/dotnet-template-engine/skills/template-validation/SKILL.md
- Network accessline 223
- [template.json reference](https://github.com/dotnet/templating/wiki/Reference-for-template.json) — full schema - Network accessline 223
- [template.json reference](https://github.com/dotnet/templating/wiki/Reference-for-template.json) — full schema - Network accessline 224
- [Available Symbol Generators](https://github.com/dotnet/templating/wiki/Available-Symbols-Generators) — generator types - Network accessline 224
- [Available Symbol Generators](https://github.com/dotnet/templating/wiki/Available-Symbols-Generators) — generator types - Network accessline 225
- [Post-action registry](https://github.com/dotnet/templating/wiki/Post-Action-Registry) — action IDs - Network accessline 225
- [Post-action registry](https://github.com/dotnet/templating/wiki/Post-Action-Registry) — action IDs - Network accessline 226
- [Constraints](https://github.com/dotnet/templating/wiki/Constraints) — constraint types - Network accessline 226
- [Constraints](https://github.com/dotnet/templating/wiki/Constraints) — constraint types
plugins/dotnet-test-migration/skills/migrate-mstest-v3-to-v4/SKILL.md
- Network accessline 342
public async Task FetchData_BadUrl_Throws() { await client.GetAsync("https://localhost:0"); - Network accessline 342
public async Task FetchData_BadUrl_Throws() { await client.GetAsync("https://localhost:0"); - Network accessline 343
{ await client.GetAsync("https://localhost:0"); } - Network accessline 343
{ await client.GetAsync("https://localhost:0"); } - Network accessline 344
await client.GetAsync("https://localhost:0"); - Network accessline 344
await client.GetAsync("https://localhost:0"); - Network accessline 350
{ await Assert.ThrowsExactlyAsync<HttpRequestException>( () => client.GetAsync("https://localhost:0")); - Network accessline 350
{ await Assert.ThrowsExactlyAsync<HttpRequestException>( () => client.GetAsync("https://localhost:0")); - Network accessline 351
await Assert.ThrowsExactlyAsync<HttpRequestException>( () => client.GetAsync("https://localhost:0")); } - Network accessline 351
await Assert.ThrowsExactlyAsync<HttpRequestException>( () => client.GetAsync("https://localhost:0")); } - Network accessline 352
() => client.GetAsync("https://localhost:0")); - Network accessline 352
() => client.GetAsync("https://localhost:0"));
plugins/dotnet-test-migration/skills/migrate-vstest-to-mtp/SKILL.md
- Network accessline 269
Each segment matches against: assembly name, namespace, class name, method name. Use `*` for "match all" in any segment. Documentation: <https://xunit.net/docs/query-filter-language> - Network accessline 269
Each segment matches against: assembly name, namespace, class name, method name. Use `*` for "match all" in any segment. Documentation: <https://xunit.net/docs/query-filter-language> - Network accessline 290
> **Note**: When combining `--filter-class` and `--filter-trait`, both conditions must match (AND behavior). For complex expressions, use `--filter-query` with the path-segment syntax. See the [xUnit.net query filter language docs](https:// - Network accessline 290
> **Note**: When combining `--filter-class` and `--filter-trait`, both conditions must match (AND behavior). For complex expressions, use `--filter-query` with the path-segment syntax. See the [xUnit.net query filter language docs](https:// - Network accessline 415
- [Test platforms overview](https://learn.microsoft.com/dotnet/core/testing/test-platforms-overview) - Network accessline 415
- [Test platforms overview](https://learn.microsoft.com/dotnet/core/testing/test-platforms-overview) - Network accessline 416
- [Migrate from VSTest to Microsoft.Testing.Platform](https://learn.microsoft.com/dotnet/core/testing/migrating-vstest-microsoft-testing-platform) - Network accessline 416
- [Migrate from VSTest to Microsoft.Testing.Platform](https://learn.microsoft.com/dotnet/core/testing/migrating-vstest-microsoft-testing-platform) - Network accessline 417
- [Microsoft.Testing.Platform overview](https://learn.microsoft.com/dotnet/core/testing/microsoft-testing-platform-intro) - Network accessline 417
- [Microsoft.Testing.Platform overview](https://learn.microsoft.com/dotnet/core/testing/microsoft-testing-platform-intro) - Network accessline 418
- [Testing with dotnet test](https://learn.microsoft.com/dotnet/core/testing/unit-testing-with-dotnet-test) - Network accessline 418
- [Testing with dotnet test](https://learn.microsoft.com/dotnet/core/testing/unit-testing-with-dotnet-test) - Network accessline 419
- [Microsoft.Testing.Platform CLI options](https://learn.microsoft.com/dotnet/core/testing/microsoft-testing-platform-cli-options) - Network accessline 419
- [Microsoft.Testing.Platform CLI options](https://learn.microsoft.com/dotnet/core/testing/microsoft-testing-platform-cli-options) - Network accessline 420
- [Microsoft.Testing.Platform extensions](https://learn.microsoft.com/dotnet/core/testing/unit-testing-platform-extensions) - Network accessline 420
- [Microsoft.Testing.Platform extensions](https://learn.microsoft.com/dotnet/core/testing/unit-testing-platform-extensions)
plugins/dotnet-test-migration/skills/migrate-xunit-to-mstest/references/mapping-cheatsheet.md
- Network accessline 65
| `[MemberData(nameof(Cases))]` returning `IEnumerable<object[]>` | `[DynamicData(nameof(Cases))]` returning `IEnumerable<object[]>` | | `[MemberData(nameof(Cases), MemberType = typeof(X))]` | `[DynamicData(nameof(Cases), typeof(X))]` | | ` - Network accessline 65
| `[MemberData(nameof(Cases))]` returning `IEnumerable<object[]>` | `[DynamicData(nameof(Cases))]` returning `IEnumerable<object[]>` | | `[MemberData(nameof(Cases), MemberType = typeof(X))]` | `[DynamicData(nameof(Cases), typeof(X))]` | | ` - Network accessline 66
| `[MemberData(nameof(Cases), MemberType = typeof(X))]` | `[DynamicData(nameof(Cases), typeof(X))]` | | `[MemberData(nameof(Cases))]` returning `TheoryData<int, string>` | `[DynamicData(nameof(Cases))]` returning `IEnumerable<object[]>`, `I - Network accessline 66
| `[MemberData(nameof(Cases), MemberType = typeof(X))]` | `[DynamicData(nameof(Cases), typeof(X))]` | | `[MemberData(nameof(Cases))]` returning `TheoryData<int, string>` | `[DynamicData(nameof(Cases))]` returning `IEnumerable<object[]>`, `I - Network accessline 67
| `[MemberData(nameof(Cases))]` returning `TheoryData<int, string>` | `[DynamicData(nameof(Cases))]` returning `IEnumerable<object[]>`, `IEnumerable<(int, string)>` (MSTest 3.7+ ValueTuple), or `IEnumerable<TestDataRow<(int, string)>>` (str - Network accessline 67
| `[MemberData(nameof(Cases))]` returning `TheoryData<int, string>` | `[DynamicData(nameof(Cases))]` returning `IEnumerable<object[]>`, `IEnumerable<(int, string)>` (MSTest 3.7+ ValueTuple), or `IEnumerable<TestDataRow<(int, string)>>` (str - Network accessline 413
|---|---| | `Xunit.SkippableFact` (`[SkippableFact]`, `Skip.If`, `Skip.IfNot`) | `[Ignore]` (compile-time) or `Assert.Inconclusive("reason")` (runtime). Remove the package | | `Xunit.Combinatorial` (`[CombinatorialData]`, `[CombinatorialVal - Network accessline 413
|---|---| | `Xunit.SkippableFact` (`[SkippableFact]`, `Skip.If`, `Skip.IfNot`) | `[Ignore]` (compile-time) or `Assert.Inconclusive("reason")` (runtime). Remove the package | | `Xunit.Combinatorial` (`[CombinatorialData]`, `[CombinatorialVal - Network accessline 414
| `Xunit.SkippableFact` (`[SkippableFact]`, `Skip.If`, `Skip.IfNot`) | `[Ignore]` (compile-time) or `Assert.Inconclusive("reason")` (runtime). Remove the package | | `Xunit.Combinatorial` (`[CombinatorialData]`, `[CombinatorialValues]`) | [ - Network accessline 414
| `Xunit.SkippableFact` (`[SkippableFact]`, `Skip.If`, `Skip.IfNot`) | `[Ignore]` (compile-time) or `Assert.Inconclusive("reason")` (runtime). Remove the package | | `Xunit.Combinatorial` (`[CombinatorialData]`, `[CombinatorialValues]`) | [ - Network accessline 415
| `Xunit.Combinatorial` (`[CombinatorialData]`, `[CombinatorialValues]`) | [`Combinatorial.MSTest`](https://github.com/Youssef1313/Combinatorial.MSTest) (community port) -- attribute surface is the same as xUnit.Combinatorial. Alternatively - Network accessline 415
| `Xunit.Combinatorial` (`[CombinatorialData]`, `[CombinatorialValues]`) | [`Combinatorial.MSTest`](https://github.com/Youssef1313/Combinatorial.MSTest) (community port) -- attribute surface is the same as xUnit.Combinatorial. Alternatively
plugins/dotnet-test/skills/code-testing-extensions/extensions/cpp.md
- Network accessline 470
FetchContent_Declare( googletest URL https://github.com/google/googletest/archive/refs/tags/v1.14.0.zip) - Network accessline 470
FetchContent_Declare( googletest URL https://github.com/google/googletest/archive/refs/tags/v1.14.0.zip) - Network accessline 471
googletest URL https://github.com/google/googletest/archive/refs/tags/v1.14.0.zip) FetchContent_MakeAvailable(googletest) - Network accessline 471
googletest URL https://github.com/google/googletest/archive/refs/tags/v1.14.0.zip) FetchContent_MakeAvailable(googletest) - Network accessline 472
URL https://github.com/google/googletest/archive/refs/tags/v1.14.0.zip) - Network accessline 472
URL https://github.com/google/googletest/archive/refs/tags/v1.14.0.zip) - Network accessline 480
FetchContent_Declare( Catch2 URL https://github.com/catchorg/Catch2/archive/refs/tags/v3.5.4.zip) - Network accessline 480
FetchContent_Declare( Catch2 URL https://github.com/catchorg/Catch2/archive/refs/tags/v3.5.4.zip) - Network accessline 481
Catch2 URL https://github.com/catchorg/Catch2/archive/refs/tags/v3.5.4.zip) FetchContent_MakeAvailable(Catch2) - Network accessline 481
Catch2 URL https://github.com/catchorg/Catch2/archive/refs/tags/v3.5.4.zip) FetchContent_MakeAvailable(Catch2) - Network accessline 482
URL https://github.com/catchorg/Catch2/archive/refs/tags/v3.5.4.zip) - Network accessline 482
URL https://github.com/catchorg/Catch2/archive/refs/tags/v3.5.4.zip) - Dangerous shell operationline 493
| apt | `sudo apt-get install libgtest-dev catch2 gcovr lcov` | - Dangerous shell operationline 493
| apt | `sudo apt-get install libgtest-dev catch2 gcovr lcov` |
plugins/dotnet-test/skills/code-testing-extensions/extensions/go.md
- Network accessline 133
- **`gomock` / `mockgen`** — if the repo has `//go:generate mockgen ...` directives or `mocks/` directories, regenerate via `go generate ./...` rather than editing generated files - **`testify/mock`** — used in many repos; instantiate with - Network accessline 133
- **`gomock` / `mockgen`** — if the repo has `//go:generate mockgen ...` directives or `mocks/` directories, regenerate via `go generate ./...` rather than editing generated files - **`testify/mock`** — used in many repos; instantiate with - Network accessline 135
- **`httptest`** — for HTTP clients/servers; spin up `httptest.NewServer` instead of mocking `http.Client` - Network accessline 135
- **`httptest`** — for HTTP clients/servers; spin up `httptest.NewServer` instead of mocking `http.Client`
plugins/dotnet-test/skills/code-testing-extensions/extensions/swift.md
plugins/dotnet-test/skills/coverage-analysis/scripts/Compute-CrapScores.ps1
plugins/dotnet-test/skills/coverage-analysis/scripts/CoverageData.ps1
plugins/dotnet-test/skills/coverage-analysis/scripts/Extract-MethodCoverage.ps1
plugins/dotnet-test/skills/filter-syntax/SKILL.md
- Network accessline 112
Each segment matches against: assembly name, namespace, class name, method name. Use `*` for "match all" in any segment. Documentation: <https://xunit.net/docs/query-filter-language> - Network accessline 112
Each segment matches against: assembly name, namespace, class name, method name. Use `*` for "match all" in any segment. Documentation: <https://xunit.net/docs/query-filter-language>
plugins/dotnet-test/skills/find-untested-sources/scripts/find_untested_sources.py
plugins/dotnet-test/skills/test-analysis-extensions/extensions/python.md
- Network accessline 83
| File system | `open()`, `pathlib.Path(...).read_text()`, `os.path.exists`, hard-coded absolute paths | | Database | direct `psycopg2`/`mysql.connector`/`sqlite3.connect` to a file path, `SQLAlchemy` engine pointing at a real DB URL | | Ne - Network accessline 83
| File system | `open()`, `pathlib.Path(...).read_text()`, `os.path.exists`, hard-coded absolute paths | | Database | direct `psycopg2`/`mysql.connector`/`sqlite3.connect` to a file path, `SQLAlchemy` engine pointing at a real DB URL | | Ne - Network accessline 84
| Database | direct `psycopg2`/`mysql.connector`/`sqlite3.connect` to a file path, `SQLAlchemy` engine pointing at a real DB URL | | Network | `requests.get/post`, `httpx.get/post`, `urllib.request.urlopen`, raw `socket` | | Environment | ` - Network accessline 84
| Database | direct `psycopg2`/`mysql.connector`/`sqlite3.connect` to a file path, `SQLAlchemy` engine pointing at a real DB URL | | Network | `requests.get/post`, `httpx.get/post`, `urllib.request.urlopen`, raw `socket` | | Environment | ` - Network accessline 85
| Network | `requests.get/post`, `httpx.get/post`, `urllib.request.urlopen`, raw `socket` | - Network accessline 85
| Network | `requests.get/post`, `httpx.get/post`, `urllib.request.urlopen`, raw `socket` | - Access to secretsline 86
[Credential-related source omitted] - Access to secretsline 86
[Credential-related source omitted]
plugins/dotnet-test/skills/test-analysis-extensions/extensions/ruby.md
- Network accessline 80
| Database | direct `ActiveRecord::Base.connection.execute`, real DB writes outside transactional fixtures | | Network | `Net::HTTP`, `URI.open`, `RestClient`, `Faraday` against real URLs | | Environment | `ENV["X"]` (especially without `EN - Network accessline 80
| Database | direct `ActiveRecord::Base.connection.execute`, real DB writes outside transactional fixtures | | Network | `Net::HTTP`, `URI.open`, `RestClient`, `Faraday` against real URLs | | Environment | `ENV["X"]` (especially without `EN - Network accessline 81
| Network | `Net::HTTP`, `URI.open`, `RestClient`, `Faraday` against real URLs | | Environment | `ENV["X"]` (especially without `ENV.fetch("X", default)`) | | Acceptable | `WebMock`, `VCR`, `Tempfile`, `StringIO`, `ActiveRecord` transaction - Network accessline 81
| Network | `Net::HTTP`, `URI.open`, `RestClient`, `Faraday` against real URLs | | Environment | `ENV["X"]` (especially without `ENV.fetch("X", default)`) | | Acceptable | `WebMock`, `VCR`, `Tempfile`, `StringIO`, `ActiveRecord` transaction - Network accessline 82
| Environment | `ENV["X"]` (especially without `ENV.fetch("X", default)`) | - Network accessline 82
| Environment | `ENV["X"]` (especially without `ENV.fetch("X", default)`) |
plugins/dotnet-test/skills/test-smell-detection/references/test-smell-catalog.md
plugins/dotnet-test/skills/writing-mstest-tests/references/advanced-mstest-patterns.md
- Network accessline 68
Apply the version-compatible fix instead of suppressing the rule. For a rule not listed here, use the official [MSTest analyzer reference](https://learn.microsoft.com/dotnet/core/testing/mstest-analyzers/overview). - Network accessline 68
Apply the version-compatible fix instead of suppressing the rule. For a rule not listed here, use the official [MSTest analyzer reference](https://learn.microsoft.com/dotnet/core/testing/mstest-analyzers/overview). - Network accessline 70
[MSTest analyzer reference](https://learn.microsoft.com/dotnet/core/testing/mstest-analyzers/overview). - Network accessline 70
[MSTest analyzer reference](https://learn.microsoft.com/dotnet/core/testing/mstest-analyzers/overview).
plugins/dotnet-upgrade/skills/dotnet-aot-compat/SKILL.md
- Network accessline 257
[Limitations](https://learn.microsoft.com/en-us/dotnet/core/deploying/native-aot/?tabs=windows%2Cnet8#limitations-of-native-aot-deployment) - Network accessline 257
[Limitations](https://learn.microsoft.com/en-us/dotnet/core/deploying/native-aot/?tabs=windows%2Cnet8#limitations-of-native-aot-deployment) - Network accessline 258
[Conceptual: Understanding trimming](https://learn.microsoft.com/en-us/dotnet/core/deploying/trimming/trimming-concepts) - Network accessline 258
[Conceptual: Understanding trimming](https://learn.microsoft.com/en-us/dotnet/core/deploying/trimming/trimming-concepts) - Network accessline 259
[How-to: trim compat](https://learn.microsoft.com/en-us/dotnet/core/deploying/trimming/fixing-warnings) - Network accessline 259
[How-to: trim compat](https://learn.microsoft.com/en-us/dotnet/core/deploying/trimming/fixing-warnings)
plugins/dotnet-upgrade/skills/migrate-dotnet10-to-dotnet11/references/aspnetcore-dotnet10to11.md
- Network accessline 3
These breaking changes affect ASP.NET Core projects. Source: https://learn.microsoft.com/en-us/dotnet/core/compatibility/11 - Network accessline 3
These breaking changes affect ASP.NET Core projects. Source: https://learn.microsoft.com/en-us/dotnet/core/compatibility/11 - Network accessline 15
**Fix:** Follow the [Microsoft.OpenApi v3 upgrade guide](https://github.com/microsoft/OpenAPI.NET/blob/main/docs/upgrade-guide-3.md). If you only use the ASP.NET Core OpenAPI integration (`.WithOpenApi()`, `MapOpenApi()`) without touching t - Network accessline 15
**Fix:** Follow the [Microsoft.OpenApi v3 upgrade guide](https://github.com/microsoft/OpenAPI.NET/blob/main/docs/upgrade-guide-3.md). If you only use the ASP.NET Core OpenAPI integration (`.WithOpenApi()`, `MapOpenApi()`) without touching t - Network accessline 17
Source: https://github.com/dotnet/aspnetcore/pull/65415 - Network accessline 17
Source: https://github.com/dotnet/aspnetcore/pull/65415 - Network accessline 27
Source: https://github.com/dotnet/aspnetcore/pull/64964 - Network accessline 27
Source: https://github.com/dotnet/aspnetcore/pull/64964
plugins/dotnet-upgrade/skills/migrate-dotnet10-to-dotnet11/references/core-libraries-dotnet10to11.md
- Network accessline 3
These breaking changes affect all .NET 11 projects regardless of application type. Source: https://learn.microsoft.com/en-us/dotnet/core/compatibility/11 - Network accessline 3
These breaking changes affect all .NET 11 projects regardless of application type. Source: https://learn.microsoft.com/en-us/dotnet/core/compatibility/11 - Network accessline 24
Source: https://github.com/dotnet/runtime/pull/120328 - Network accessline 24
Source: https://github.com/dotnet/runtime/pull/120328 - Network accessline 47
Source: https://learn.microsoft.com/en-us/dotnet/core/compatibility/core-libraries/11/deflatestream-gzipstream-empty-payload - Network accessline 47
Source: https://learn.microsoft.com/en-us/dotnet/core/compatibility/core-libraries/11/deflatestream-gzipstream-empty-payload - Network accessline 55
Source: https://learn.microsoft.com/en-us/dotnet/core/compatibility/core-libraries/11/memorystream-max-capacity - Network accessline 55
Source: https://learn.microsoft.com/en-us/dotnet/core/compatibility/core-libraries/11/memorystream-max-capacity - Network accessline 69
Source: https://learn.microsoft.com/en-us/dotnet/core/compatibility/core-libraries/11/tar-checksum-validation - Network accessline 69
Source: https://learn.microsoft.com/en-us/dotnet/core/compatibility/core-libraries/11/tar-checksum-validation - Network accessline 75
Source: https://learn.microsoft.com/en-us/dotnet/core/compatibility/core-libraries/11/ziparchive-createasync-eager-load - Network accessline 75
Source: https://learn.microsoft.com/en-us/dotnet/core/compatibility/core-libraries/11/ziparchive-createasync-eager-load - Network accessline 81
Source: https://learn.microsoft.com/en-us/dotnet/core/compatibility/core-libraries/11/environment-tickcount-windows-behavior - Network accessline 81
Source: https://learn.microsoft.com/en-us/dotnet/core/compatibility/core-libraries/11/environment-tickcount-windows-behavior - Network accessline 87
Source: https://learn.microsoft.com/en-us/dotnet/core/compatibility/globalization/11/japanese-calendar-min-date - Network accessline 87
Source: https://learn.microsoft.com/en-us/dotnet/core/compatibility/globalization/11/japanese-calendar-min-date - Network accessline 95
Source: https://github.com/dotnet/runtime/pull/124766 - Network accessline 95
Source: https://github.com/dotnet/runtime/pull/124766 - Network accessline 125
Source: https://github.com/dotnet/runtime/pull/124863 - Network accessline 125
Source: https://github.com/dotnet/runtime/pull/124863 - Network accessline 133
Source: https://github.com/dotnet/runtime/pull/123874 - Network accessline 133
Source: https://github.com/dotnet/runtime/pull/123874 - Network accessline 141
Source: https://github.com/dotnet/runtime/pull/114545 - Network accessline 141
Source: https://github.com/dotnet/runtime/pull/114545
plugins/dotnet-upgrade/skills/migrate-dotnet10-to-dotnet11/references/cryptography-dotnet10to11.md
- Network accessline 3
These breaking changes affect projects using cryptography APIs. Source: https://learn.microsoft.com/en-us/dotnet/core/compatibility/11 - Network accessline 3
These breaking changes affect projects using cryptography APIs. Source: https://learn.microsoft.com/en-us/dotnet/core/compatibility/11 - Network accessline 39
Source: https://github.com/dotnet/runtime/pull/125049 - Network accessline 39
Source: https://github.com/dotnet/runtime/pull/125049
plugins/dotnet-upgrade/skills/migrate-dotnet10-to-dotnet11/references/csharp-compiler-dotnet10to11.md
- Network accessline 3
These breaking changes are introduced by the Roslyn compiler shipping with the .NET 11 SDK. They affect all projects targeting `net11.0` (which uses C# 15 by default). These are maintained separately from the runtime breaking changes at: ht - Network accessline 3
These breaking changes are introduced by the Roslyn compiler shipping with the .NET 11 SDK. They affect all projects targeting `net11.0` (which uses C# 15 by default). These are maintained separately from the runtime breaking changes at: ht - Network accessline 43
See also: https://github.com/dotnet/csharplang/issues/9750 - Network accessline 43
See also: https://github.com/dotnet/csharplang/issues/9750 - Network accessline 111
See also: https://github.com/dotnet/roslyn/issues/80954 - Network accessline 111
See also: https://github.com/dotnet/roslyn/issues/80954 - Network accessline 137
See also: https://github.com/dotnet/roslyn/issues/82251 - Network accessline 137
See also: https://github.com/dotnet/roslyn/issues/82251 - Network accessline 155
See also: https://github.com/dotnet/roslyn/issues/81837 - Network accessline 155
See also: https://github.com/dotnet/roslyn/issues/81837
plugins/dotnet-upgrade/skills/migrate-dotnet10-to-dotnet11/references/efcore-dotnet10to11.md
- Network accessline 3
These breaking changes affect projects using Entity Framework Core 11. Source: https://learn.microsoft.com/en-us/ef/core/what-is-new/ef-core-11.0/breaking-changes - Network accessline 3
These breaking changes affect projects using Entity Framework Core 11. Source: https://learn.microsoft.com/en-us/ef/core/what-is-new/ef-core-11.0/breaking-changes - Network accessline 38
Tracking issue: https://github.com/dotnet/efcore/issues/37059 - Network accessline 38
Tracking issue: https://github.com/dotnet/efcore/issues/37059 - Network accessline 46
Tracking issue: https://github.com/dotnet/efcore/issues/36577 - Network accessline 46
Tracking issue: https://github.com/dotnet/efcore/issues/36577 - Network accessline 56
Source: https://github.com/dotnet/efcore/pull/37839 - Network accessline 56
Source: https://github.com/dotnet/efcore/pull/37839 - Network accessline 68
Source: https://github.com/dotnet/efcore/pull/37837 - Network accessline 68
Source: https://github.com/dotnet/efcore/pull/37837 - Network accessline 76
Source: https://github.com/dotnet/efcore/pull/37838 - Network accessline 76
Source: https://github.com/dotnet/efcore/pull/37838 - Network accessline 84
Source: https://github.com/dotnet/efcore/pull/37829 - Network accessline 84
Source: https://github.com/dotnet/efcore/pull/37829 - Network accessline 96
Source: https://github.com/dotnet/efcore/pull/37949 - Network accessline 96
Source: https://github.com/dotnet/efcore/pull/37949 - Network accessline 104
Source: https://github.com/dotnet/efcore/issues/37059 - Network accessline 104
Source: https://github.com/dotnet/efcore/issues/37059
plugins/dotnet-upgrade/skills/migrate-dotnet10-to-dotnet11/references/runtime-jit-dotnet10to11.md
- Network accessline 3
These breaking changes affect the .NET runtime and JIT compiler. Source: https://learn.microsoft.com/en-us/dotnet/core/compatibility/11 - Network accessline 3
These breaking changes affect the .NET runtime and JIT compiler. Source: https://learn.microsoft.com/en-us/dotnet/core/compatibility/11 - Network accessline 51
Source: https://learn.microsoft.com/en-us/dotnet/core/compatibility/jit/11/minimum-hardware-requirements - Network accessline 51
Source: https://learn.microsoft.com/en-us/dotnet/core/compatibility/jit/11/minimum-hardware-requirements - Network accessline 59
Source: https://github.com/dotnet/runtime/pull/124611 - Network accessline 59
Source: https://github.com/dotnet/runtime/pull/124611
plugins/dotnet-upgrade/skills/migrate-dotnet10-to-dotnet11/references/sdk-msbuild-dotnet10to11.md
- Network accessline 3
These changes affect the .NET SDK, CLI tooling, NuGet, and MSBuild behavior. Source: https://learn.microsoft.com/en-us/dotnet/core/compatibility/11 - Network accessline 3
These changes affect the .NET SDK, CLI tooling, NuGet, and MSBuild behavior. Source: https://learn.microsoft.com/en-us/dotnet/core/compatibility/11 - Network accessline 13
Source: https://learn.microsoft.com/en-us/dotnet/core/compatibility/sdk/11/mono-launch-target-removed - Network accessline 13
Source: https://learn.microsoft.com/en-us/dotnet/core/compatibility/sdk/11/mono-launch-target-removed - Network accessline 21
Source: https://github.com/dotnet/sdk/pull/52810 - Network accessline 21
Source: https://github.com/dotnet/sdk/pull/52810 - Network accessline 29
Source: https://github.com/dotnet/sdk/pull/52333 - Network accessline 29
Source: https://github.com/dotnet/sdk/pull/52333
plugins/dotnet-upgrade/skills/migrate-dotnet8-to-dotnet9/references/csharp-compiler-dotnet8to9.md
- Network accessline 3
These breaking changes are introduced by the Roslyn compiler shipping with the .NET 9 SDK. They affect all projects targeting `net9.0` (which uses C# 13 by default). These are maintained separately from the runtime breaking changes at: http - Network accessline 3
These breaking changes are introduced by the Roslyn compiler shipping with the .NET 9 SDK. They affect all projects targeting `net9.0` (which uses C# 13 by default). These are maintained separately from the runtime breaking changes at: http
plugins/dotnet-upgrade/skills/migrate-dotnet8-to-dotnet9/references/serialization-networking-dotnet8to9.md
- Network accessline 32
See the [BinaryFormatter migration guide](https://learn.microsoft.com/en-us/dotnet/standard/serialization/binaryformatter-migration-guide/) for detailed guidance. - Network accessline 32
See the [BinaryFormatter migration guide](https://learn.microsoft.com/en-us/dotnet/standard/serialization/binaryformatter-migration-guide/) for detailed guidance.
plugins/dotnet-upgrade/skills/migrate-dotnet9-to-dotnet10/references/aspnet-core-dotnet9to10.md
- Network accessline 73
`Microsoft.AspNetCore.OpenApi 10.0` depends on `Microsoft.OpenApi` v2.x (from [`microsoft/OpenAPI.NET`](https://github.com/microsoft/OpenAPI.NET) repo), which has significant breaking API changes from v1.x. Projects that customize OpenAPI d - Network accessline 73
`Microsoft.AspNetCore.OpenApi 10.0` depends on `Microsoft.OpenApi` v2.x (from [`microsoft/OpenAPI.NET`](https://github.com/microsoft/OpenAPI.NET) repo), which has significant breaking API changes from v1.x. Projects that customize OpenAPI d
plugins/dotnet-upgrade/skills/migrate-dotnet9-to-dotnet10/references/containers-interop-dotnet9to10.md
- Network accessline 27
**If you need Debian:** Create custom images following [Microsoft's guide for installing .NET in a Dockerfile](https://github.com/dotnet/dotnet-docker/blob/main/documentation/scenarios/installing-dotnet.md). - Network accessline 27
**If you need Debian:** Create custom images following [Microsoft's guide for installing .NET in a Dockerfile](https://github.com/dotnet/dotnet-docker/blob/main/documentation/scenarios/installing-dotnet.md).
plugins/dotnet-upgrade/skills/migrate-dotnet9-to-dotnet10/references/csharp-compiler-dotnet9to10.md
- Network accessline 3
These breaking changes are introduced by the Roslyn compiler shipping with the .NET 10 SDK. They affect all projects targeting `net10.0` (which uses C# 14 by default). These are maintained separately from the runtime breaking changes at: ht - Network accessline 3
These breaking changes are introduced by the Roslyn compiler shipping with the .NET 10 SDK. They affect all projects targeting `net10.0` (which uses C# 14 by default). These are maintained separately from the runtime breaking changes at: ht
plugins/dotnet-upgrade/skills/migrate-nullable-references/SKILL.md
- Network accessline 283
- [Nullable reference types](https://learn.microsoft.com/dotnet/csharp/nullable-references) — overview of the feature, nullable contexts, and compiler analysis - Network accessline 283
- [Nullable reference types](https://learn.microsoft.com/dotnet/csharp/nullable-references) — overview of the feature, nullable contexts, and compiler analysis - Network accessline 284
- [Nullable reference types (C# reference)](https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/nullable-reference-types) — language reference for nullable annotation and warning contexts - Network accessline 284
- [Nullable reference types (C# reference)](https://learn.microsoft.com/dotnet/csharp/language-reference/builtin-types/nullable-reference-types) — language reference for nullable annotation and warning contexts - Network accessline 285
- [Nullable migration strategies](https://learn.microsoft.com/dotnet/csharp/nullable-migration-strategies) - Network accessline 285
- [Nullable migration strategies](https://learn.microsoft.com/dotnet/csharp/nullable-migration-strategies) - Network accessline 286
- [Embracing Nullable Reference Types](https://devblogs.microsoft.com/dotnet/embracing-nullable-reference-types/) — Mads Torgersen's guidance on adoption timing and ecosystem considerations - Network accessline 286
- [Embracing Nullable Reference Types](https://devblogs.microsoft.com/dotnet/embracing-nullable-reference-types/) — Mads Torgersen's guidance on adoption timing and ecosystem considerations - Network accessline 287
- [Resolve nullable warnings](https://learn.microsoft.com/dotnet/csharp/language-reference/compiler-messages/nullable-warnings) - Network accessline 287
- [Resolve nullable warnings](https://learn.microsoft.com/dotnet/csharp/language-reference/compiler-messages/nullable-warnings) - Network accessline 288
- [Attributes for nullable static analysis](https://learn.microsoft.com/dotnet/csharp/language-reference/attributes/nullable-analysis) - Network accessline 288
- [Attributes for nullable static analysis](https://learn.microsoft.com/dotnet/csharp/language-reference/attributes/nullable-analysis) - Network accessline 289
- [! (null-forgiving) operator](https://learn.microsoft.com/dotnet/csharp/language-reference/operators/null-forgiving) — language reference for the operator and when to use it - Network accessline 289
- [! (null-forgiving) operator](https://learn.microsoft.com/dotnet/csharp/language-reference/operators/null-forgiving) — language reference for the operator and when to use it - Network accessline 290
- [EF Core and nullable reference types](https://learn.microsoft.com/ef/core/miscellaneous/nullable-reference-types) - Network accessline 290
- [EF Core and nullable reference types](https://learn.microsoft.com/ef/core/miscellaneous/nullable-reference-types) - Network accessline 291
- [.NET Runtime nullable annotation guidelines](https://github.com/dotnet/runtime/blob/main/docs/coding-guidelines/api-guidelines/nullability.md) — the annotation principles used when annotating the .NET libraries themselves - Network accessline 291
- [.NET Runtime nullable annotation guidelines](https://github.com/dotnet/runtime/blob/main/docs/coding-guidelines/api-guidelines/nullability.md) — the annotation principles used when annotating the .NET libraries themselves
plugins/dotnet-upgrade/skills/migrate-nullable-references/references/aspnet-core.md
- Network accessline 5
- **MVC model validation treats non-nullable properties as `[Required]`**: When NRTs are enabled, ASP.NET Core MVC and Web API implicitly add `[Required(AllowEmptyStrings = true)]` to every non-nullable reference type property in DTOs and v - Network accessline 5
- **MVC model validation treats non-nullable properties as `[Required]`**: When NRTs are enabled, ASP.NET Core MVC and Web API implicitly add `[Required(AllowEmptyStrings = true)]` to every non-nullable reference type property in DTOs and v - Network accessline 6
- **Minimal API parameter optionality changes with NRTs**: When NRTs are enabled, minimal API parameter binding uses nullable annotations to determine whether a parameter is required or optional. A `string name` parameter that was previousl - Network accessline 6
- **Minimal API parameter optionality changes with NRTs**: When NRTs are enabled, minimal API parameter binding uses nullable annotations to determine whether a parameter is required or optional. A `string name` parameter that was previousl
plugins/dotnet-upgrade/skills/migrate-nullable-references/scripts/Get-NullableReadiness.ps1
- Executable scriptline 1
Executable file - Executable scriptline 1
Executable file - Network accessline 271
# Count null-forgiving operators (approximate). # Strip string literals before comments to avoid false positives — a string # like "http://..." contains // that would otherwise be mis-parsed as a comment. - Network accessline 271
# Count null-forgiving operators (approximate). # Strip string literals before comments to avoid false positives — a string # like "http://..." contains // that would otherwise be mis-parsed as a comment. - Network accessline 272
# Strip string literals before comments to avoid false positives — a string # like "http://..." contains // that would otherwise be mis-parsed as a comment. # Then match ! preceded by ), ], >, or a word character, not follow - Network accessline 272
# Strip string literals before comments to avoid false positives — a string # like "http://..." contains // that would otherwise be mis-parsed as a comment. # Then match ! preceded by ), ], >, or a word character, not follow - Network accessline 273
# like "http://..." contains // that would otherwise be mis-parsed as a comment. - Network accessline 273
# like "http://..." contains // that would otherwise be mis-parsed as a comment.
plugins/dotnet-upgrade/skills/thread-abort-migration/SKILL.md
- Network accessline 139
- [Thread.Abort breaking change in .NET 6+](https://learn.microsoft.com/dotnet/core/compatibility/core-libraries/6.0/thread-abort) — why `Thread.Abort` throws `PlatformNotSupportedException` - Network accessline 139
- [Thread.Abort breaking change in .NET 6+](https://learn.microsoft.com/dotnet/core/compatibility/core-libraries/6.0/thread-abort) — why `Thread.Abort` throws `PlatformNotSupportedException` - Network accessline 140
- [Cancellation in managed threads](https://learn.microsoft.com/dotnet/standard/threading/cancellation-in-managed-threads) — the cooperative cancellation model with `CancellationToken` - Network accessline 140
- [Cancellation in managed threads](https://learn.microsoft.com/dotnet/standard/threading/cancellation-in-managed-threads) — the cooperative cancellation model with `CancellationToken` - Network accessline 141
- [CancellationTokenSource class](https://learn.microsoft.com/dotnet/api/system.threading.cancellationtokensource) — API reference for creating and managing cancellation tokens - Network accessline 141
- [CancellationTokenSource class](https://learn.microsoft.com/dotnet/api/system.threading.cancellationtokensource) — API reference for creating and managing cancellation tokens - Network accessline 142
- [SYSLIB0006 warning](https://learn.microsoft.com/dotnet/fundamentals/syslib-diagnostics/syslib0006) — `Thread.Abort` is obsolete - Network accessline 142
- [SYSLIB0006 warning](https://learn.microsoft.com/dotnet/fundamentals/syslib-diagnostics/syslib0006) — `Thread.Abort` is obsolete - Network accessline 143
- [SYSLIB0046 warning](https://learn.microsoft.com/dotnet/fundamentals/syslib-diagnostics/syslib0046) — `Thread.Interrupt` is obsolete (added in .NET 9) - Network accessline 143
- [SYSLIB0046 warning](https://learn.microsoft.com/dotnet/fundamentals/syslib-diagnostics/syslib0046) — `Thread.Interrupt` is obsolete (added in .NET 9) - Network accessline 144
- [`Task.WaitAsync(CancellationToken)`](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.waitasync) — cancellable waiting for task-based code (.NET 6+) - Network accessline 144
- [`Task.WaitAsync(CancellationToken)`](https://learn.microsoft.com/dotnet/api/system.threading.tasks.task.waitasync) — cancellable waiting for task-based code (.NET 6+)
plugins/dotnet/skills/csharp-expert/references/dotnet-skills-marketplace.md
plugins/dotnet/skills/csharp-refactoring/SKILL.md
- Network accessline 62
overloads) instead of real **bindings**. Find every binding reference first, then edit semantically. Use the strongest tool available: an IDE/Roslyn workspace refactoring, then the C# LSP the [`dotnet` plugin declares](https://github.com/do - Network accessline 62
overloads) instead of real **bindings**. Find every binding reference first, then edit semantically. Use the strongest tool available: an IDE/Roslyn workspace refactoring, then the C# LSP the [`dotnet` plugin declares](https://github.com/do - Network accessline 63
the strongest tool available: an IDE/Roslyn workspace refactoring, then the C# LSP the [`dotnet` plugin declares](https://github.com/dotnet/skills/blob/main/plugins/dotnet/lsp.json) (`findReferences`, `goToDefinition`, `incomingCalls`, `ren - Network accessline 63
the strongest tool available: an IDE/Roslyn workspace refactoring, then the C# LSP the [`dotnet` plugin declares](https://github.com/dotnet/skills/blob/main/plugins/dotnet/lsp.json) (`findReferences`, `goToDefinition`, `incomingCalls`, `ren - Network accessline 64
[`dotnet` plugin declares](https://github.com/dotnet/skills/blob/main/plugins/dotnet/lsp.json) - Network accessline 64
[`dotnet` plugin declares](https://github.com/dotnet/skills/blob/main/plugins/dotnet/lsp.json)
plugins/dotnet/skills/msbuild/references/extension-points.md
- Network accessline 133
Package build files must not redefine restore inputs such as `TargetFramework`, `PackageReference`, or `PackageVersion`. See the [NuGet build-file conventions](https://learn.microsoft.com/en-us/nuget/concepts/msbuild-props-and-targets). - Network accessline 133
Package build files must not redefine restore inputs such as `TargetFramework`, `PackageReference`, or `PackageVersion`. See the [NuGet build-file conventions](https://learn.microsoft.com/en-us/nuget/concepts/msbuild-props-and-targets). - Network accessline 135
[NuGet build-file conventions](https://learn.microsoft.com/en-us/nuget/concepts/msbuild-props-and-targets). - Network accessline 135
[NuGet build-file conventions](https://learn.microsoft.com/en-us/nuget/concepts/msbuild-props-and-targets).
plugins/dotnet/skills/msbuild/references/msbuild-antipatterns.md
- Network accessline 221
Central Package Management can consolidate versions when that migration is requested; see [the NuGet guidance](https://learn.microsoft.com/en-us/nuget/consume-packages/central-package-management). - Network accessline 221
Central Package Management can consolidate versions when that migration is requested; see [the NuGet guidance](https://learn.microsoft.com/en-us/nuget/consume-packages/central-package-management). - Network accessline 222
[the NuGet guidance](https://learn.microsoft.com/en-us/nuget/consume-packages/central-package-management). - Network accessline 222
[the NuGet guidance](https://learn.microsoft.com/en-us/nuget/consume-packages/central-package-management).
plugins/dotnet/skills/setup-local-sdk/SKILL.md
- Dangerous shell operationline 25
- Can be deleted to revert (`rm -rf .dotnet/` or `Remove-Item -Recurse -Force .\.dotnet`). - Dangerous shell operationline 25
- Can be deleted to revert (`rm -rf .dotnet/` or `Remove-Item -Recurse -Force .\.dotnet`). - Network accessline 96
INSTALL_SCRIPT="$(mktemp "${TMPDIR:-/tmp}/dotnet-install.XXXXXX")" trap 'rm -f "$INSTALL_SCRIPT"' EXIT curl -fsSL https://dot.net/v1/dotnet-install.sh -o "$INSTALL_SCRIPT" - Network accessline 96
INSTALL_SCRIPT="$(mktemp "${TMPDIR:-/tmp}/dotnet-install.XXXXXX")" trap 'rm -f "$INSTALL_SCRIPT"' EXIT curl -fsSL https://dot.net/v1/dotnet-install.sh -o "$INSTALL_SCRIPT" - Dangerous shell operationline 97
trap 'rm -f "$INSTALL_SCRIPT"' EXIT - Dangerous shell operationline 97
trap 'rm -f "$INSTALL_SCRIPT"' EXIT - Network accessline 97
trap 'rm -f "$INSTALL_SCRIPT"' EXIT curl -fsSL https://dot.net/v1/dotnet-install.sh -o "$INSTALL_SCRIPT" bash "$INSTALL_SCRIPT" --channel <CHANNEL> --quality <QUALITY> --install-dir .dotnet - Network accessline 97
trap 'rm -f "$INSTALL_SCRIPT"' EXIT curl -fsSL https://dot.net/v1/dotnet-install.sh -o "$INSTALL_SCRIPT" bash "$INSTALL_SCRIPT" --channel <CHANNEL> --quality <QUALITY> --install-dir .dotnet - Network accessline 98
curl -fsSL https://dot.net/v1/dotnet-install.sh -o "$INSTALL_SCRIPT" - Network accessline 98
curl -fsSL https://dot.net/v1/dotnet-install.sh -o "$INSTALL_SCRIPT" - Network accessline 105
$installScript = Join-Path $env:TEMP "dotnet-install-$([guid]::NewGuid()).ps1" try { Invoke-WebRequest -Uri 'https://dot.net/v1/dotnet-install.ps1' -OutFile $installScript - Network accessline 105
$installScript = Join-Path $env:TEMP "dotnet-install-$([guid]::NewGuid()).ps1" try { Invoke-WebRequest -Uri 'https://dot.net/v1/dotnet-install.ps1' -OutFile $installScript - Network accessline 106
try { Invoke-WebRequest -Uri 'https://dot.net/v1/dotnet-install.ps1' -OutFile $installScript & $installScript -Channel <CHANNEL> -Quality <QUALITY> -InstallDir .dotnet - Network accessline 106
try { Invoke-WebRequest -Uri 'https://dot.net/v1/dotnet-install.ps1' -OutFile $installScript & $installScript -Channel <CHANNEL> -Quality <QUALITY> -InstallDir .dotnet - Network accessline 107
Invoke-WebRequest -Uri 'https://dot.net/v1/dotnet-install.ps1' -OutFile $installScript - Network accessline 107
Invoke-WebRequest -Uri 'https://dot.net/v1/dotnet-install.ps1' -OutFile $installScript - Network accessline 117
For exact versions: use `--version <VERSION>` (bash) or `-Version <VERSION>` (PowerShell) instead of channel/quality flags. The install scripts are from Microsoft's official URLs: `https://dot.net/v1/dotnet-install.sh` and `https://dot.net/ - Network accessline 117
For exact versions: use `--version <VERSION>` (bash) or `-Version <VERSION>` (PowerShell) instead of channel/quality flags. The install scripts are from Microsoft's official URLs: `https://dot.net/v1/dotnet-install.sh` and `https://dot.net/ - Network accessline 119
URLs: `https://dot.net/v1/dotnet-install.sh` and `https://dot.net/v1/dotnet-install.ps1`. - Network accessline 119
URLs: `https://dot.net/v1/dotnet-install.sh` and `https://dot.net/v1/dotnet-install.ps1`. - Dangerous shell operationline 181
install using the **local** binary (no sudo needed): - Dangerous shell operationline 181
install using the **local** binary (no sudo needed): - Network accessline 195
> **Always use the local dotnet binary for workload commands.** Workload metadata > is stored relative to the host process's dotnet root. The system `dotnet` puts > metadata in the wrong location. (See [dotnet/sdk#49825](https://github.com/ - Network accessline 195
> **Always use the local dotnet binary for workload commands.** Workload metadata > is stored relative to the host process's dotnet root. The system `dotnet` puts > metadata in the wrong location. (See [dotnet/sdk#49825](https://github.com/ - Network accessline 197
> metadata in the wrong location. (See [dotnet/sdk#49825](https://github.com/dotnet/sdk/issues/49825).) - Network accessline 197
> metadata in the wrong location. (See [dotnet/sdk#49825](https://github.com/dotnet/sdk/issues/49825).) - Dangerous shell operationline 230
rm -f "$INSTALL_SCRIPT" - Dangerous shell operationline 230
rm -f "$INSTALL_SCRIPT" - Dangerous shell operationline 231
[ -n "$GLOBAL_JSON_TMP" ] && rm -f "$GLOBAL_JSON_TMP" - Dangerous shell operationline 231
[ -n "$GLOBAL_JSON_TMP" ] && rm -f "$GLOBAL_JSON_TMP" - Network accessline 232
} trap cleanup EXIT curl -fsSL https://dot.net/v1/dotnet-install.sh -o "$INSTALL_SCRIPT" - Network accessline 232
} trap cleanup EXIT curl -fsSL https://dot.net/v1/dotnet-install.sh -o "$INSTALL_SCRIPT" - Network accessline 233
trap cleanup EXIT curl -fsSL https://dot.net/v1/dotnet-install.sh -o "$INSTALL_SCRIPT" INSTALL_ARGS=(--install-dir "$INSTALL_DIR") - Network accessline 233
trap cleanup EXIT curl -fsSL https://dot.net/v1/dotnet-install.sh -o "$INSTALL_SCRIPT" INSTALL_ARGS=(--install-dir "$INSTALL_DIR") - Network accessline 234
curl -fsSL https://dot.net/v1/dotnet-install.sh -o "$INSTALL_SCRIPT" - Network accessline 234
curl -fsSL https://dot.net/v1/dotnet-install.sh -o "$INSTALL_SCRIPT" - Network accessline 307
$installScript = Join-Path $env:TEMP "dotnet-install-$([guid]::NewGuid()).ps1" try { Invoke-WebRequest -Uri 'https://dot.net/v1/dotnet-install.ps1' -OutFile $installScript - Network accessline 307
$installScript = Join-Path $env:TEMP "dotnet-install-$([guid]::NewGuid()).ps1" try { Invoke-WebRequest -Uri 'https://dot.net/v1/dotnet-install.ps1' -OutFile $installScript - Network accessline 308
try { Invoke-WebRequest -Uri 'https://dot.net/v1/dotnet-install.ps1' -OutFile $installScript $installArgs = @('-InstallDir', $installDir) - Network accessline 308
try { Invoke-WebRequest -Uri 'https://dot.net/v1/dotnet-install.ps1' -OutFile $installScript $installArgs = @('-InstallDir', $installDir) - Network accessline 309
Invoke-WebRequest -Uri 'https://dot.net/v1/dotnet-install.ps1' -OutFile $installScript - Network accessline 309
Invoke-WebRequest -Uri 'https://dot.net/v1/dotnet-install.ps1' -OutFile $installScript
plugins/dotnet11/skills/system-text-json-net11/SKILL.md
- Network accessline 49
$installScript = Join-Path $env:TEMP "dotnet-install-$([guid]::NewGuid()).ps1" try { Invoke-WebRequest -Uri 'https://dot.net/v1/dotnet-install.ps1' -OutFile $installScript - Network accessline 49
$installScript = Join-Path $env:TEMP "dotnet-install-$([guid]::NewGuid()).ps1" try { Invoke-WebRequest -Uri 'https://dot.net/v1/dotnet-install.ps1' -OutFile $installScript - Network accessline 50
try { Invoke-WebRequest -Uri 'https://dot.net/v1/dotnet-install.ps1' -OutFile $installScript & $installScript -Channel 11.0 -InstallDir .\.dotnet - Network accessline 50
try { Invoke-WebRequest -Uri 'https://dot.net/v1/dotnet-install.ps1' -OutFile $installScript & $installScript -Channel 11.0 -InstallDir .\.dotnet - Network accessline 51
Invoke-WebRequest -Uri 'https://dot.net/v1/dotnet-install.ps1' -OutFile $installScript - Network accessline 51
Invoke-WebRequest -Uri 'https://dot.net/v1/dotnet-install.ps1' -OutFile $installScript - Network accessline 61
install_script="$(mktemp "${TMPDIR:-/tmp}/dotnet-install.XXXXXX")" trap 'rm -f "$install_script"' EXIT curl -fsSL https://dot.net/v1/dotnet-install.sh -o "$install_script" - Network accessline 61
install_script="$(mktemp "${TMPDIR:-/tmp}/dotnet-install.XXXXXX")" trap 'rm -f "$install_script"' EXIT curl -fsSL https://dot.net/v1/dotnet-install.sh -o "$install_script" - Dangerous shell operationline 62
trap 'rm -f "$install_script"' EXIT - Dangerous shell operationline 62
trap 'rm -f "$install_script"' EXIT - Network accessline 62
trap 'rm -f "$install_script"' EXIT curl -fsSL https://dot.net/v1/dotnet-install.sh -o "$install_script" bash "$install_script" --channel 11.0 --install-dir ./.dotnet - Network accessline 62
trap 'rm -f "$install_script"' EXIT curl -fsSL https://dot.net/v1/dotnet-install.sh -o "$install_script" bash "$install_script" --channel 11.0 --install-dir ./.dotnet - Network accessline 63
curl -fsSL https://dot.net/v1/dotnet-install.sh -o "$install_script" - Network accessline 63
curl -fsSL https://dot.net/v1/dotnet-install.sh -o "$install_script" - Network accessline 321
- [JsonNamingPolicy class](https://learn.microsoft.com/dotnet/api/system.text.json.jsonnamingpolicy) — built-in naming policies including `PascalCase` - Network accessline 321
- [JsonNamingPolicy class](https://learn.microsoft.com/dotnet/api/system.text.json.jsonnamingpolicy) — built-in naming policies including `PascalCase` - Network accessline 322
- [JsonSerializerOptions.GetTypeInfo](https://learn.microsoft.com/dotnet/api/system.text.json.jsonserializeroptions.gettypeinfo) — typed and non-typed metadata access - Network accessline 322
- [JsonSerializerOptions.GetTypeInfo](https://learn.microsoft.com/dotnet/api/system.text.json.jsonserializeroptions.gettypeinfo) — typed and non-typed metadata access - Network accessline 323
- [JsonTypeInfo\<T\>](https://learn.microsoft.com/dotnet/api/system.text.json.serialization.metadata.jsontypeinfo-1) — strongly-typed serialization metadata - Network accessline 323
- [JsonTypeInfo\<T\>](https://learn.microsoft.com/dotnet/api/system.text.json.serialization.metadata.jsontypeinfo-1) — strongly-typed serialization metadata - Network accessline 324
- [DefaultJsonTypeInfoResolver](https://learn.microsoft.com/dotnet/api/system.text.json.serialization.metadata.defaultjsontypeinforesolver) — reflection-based resolver required by `GetTypeInfo`/`TryGetTypeInfo` - Network accessline 324
- [DefaultJsonTypeInfoResolver](https://learn.microsoft.com/dotnet/api/system.text.json.serialization.metadata.defaultjsontypeinforesolver) — reflection-based resolver required by `GetTypeInfo`/`TryGetTypeInfo` - Network accessline 325
- [File-based apps](https://learn.microsoft.com/dotnet/core/sdk/file-based-apps) — `dotnet run app.cs` and the `#:property` directive - Network accessline 325
- [File-based apps](https://learn.microsoft.com/dotnet/core/sdk/file-based-apps) — `dotnet run app.cs` and the `#:property` directive
How the signals fit together
Facts from a static read of the files at the pinned commit. They describe what the code does, not why.
Some files could not be read; the facts below still hold.
Signal confidence: 500 facts
- Network access in prose of the SKILL.mdplugins/dotnet-advanced/skills/csharp-scripts/SKILL.md:298Low confidence
- Network access in prose of the SKILL.mdcsharp-scripts/SKILL.md:298Low confidence
- Network access in prose of the SKILL.mdplugins/dotnet-advanced/skills/dotnet-pinvoke/SKILL.md:405Low confidence
- Network access in prose of the SKILL.mddotnet-pinvoke/SKILL.md:405Low confidence
- Network access in prose of the SKILL.mdplugins/dotnet-advanced/skills/dotnet-pinvoke/SKILL.md:413Low confidence
- Network access in prose of the SKILL.mddotnet-pinvoke/SKILL.md:413Low confidence
- Network access in prose of the SKILL.mdplugins/dotnet-advanced/skills/dotnet-pinvoke/SKILL.md:417Low confidence
- Network access in prose of the SKILL.mddotnet-pinvoke/SKILL.md:417Low confidence
- Network access in prose of documentationplugins/dotnet-advanced/skills/dotnet-pinvoke/references/diagnostics.md:32Low confidence
- Network access in prose of documentationdotnet-pinvoke/references/diagnostics.md:32Low confidence
- Network access in prose of documentationplugins/dotnet-advanced/skills/dotnet-pinvoke/references/diagnostics.md:34Low confidence
- Network access in prose of documentationdotnet-pinvoke/references/diagnostics.md:34Low confidence
- Network access in prose of documentationplugins/dotnet-advanced/skills/dotnet-pinvoke/references/diagnostics.md:38Low confidence
- Network access in prose of documentationdotnet-pinvoke/references/diagnostics.md:38Low confidence
- Network access in prose of documentationplugins/dotnet-advanced/skills/dotnet-pinvoke/references/diagnostics.md:39Low confidence
- Network access in prose of documentationdotnet-pinvoke/references/diagnostics.md:39Low confidence
- Network access in prose of documentationplugins/dotnet-advanced/skills/dotnet-pinvoke/references/diagnostics.md:40Low confidence
- Network access in prose of documentationdotnet-pinvoke/references/diagnostics.md:40Low confidence
- Network access in prose of documentationplugins/dotnet-advanced/skills/dotnet-pinvoke/references/diagnostics.md:41Low confidence
- Network access in prose of documentationdotnet-pinvoke/references/diagnostics.md:41Low confidence
- Network access in prose of documentationplugins/dotnet-advanced/skills/dotnet-pinvoke/references/diagnostics.md:42Low confidence
- Network access in prose of documentationdotnet-pinvoke/references/diagnostics.md:42Low confidence
- Network access in prose of documentationplugins/dotnet-advanced/skills/dotnet-pinvoke/references/diagnostics.md:43Low confidence
- Network access in prose of documentationdotnet-pinvoke/references/diagnostics.md:43Low confidence
- Network access in prose of the SKILL.mdplugins/dotnet-advanced/skills/nuget-trusted-publishing/SKILL.md:14Low confidence
- Network access in prose of the SKILL.mdnuget-trusted-publishing/SKILL.md:14Low confidence
- Access to secrets in prose of the SKILL.mdplugins/dotnet-advanced/skills/nuget-trusted-publishing/SKILL.md:25Low confidence
- Access to secrets in prose of the SKILL.mdnuget-trusted-publishing/SKILL.md:25Low confidence
- Network access in prose of the SKILL.mdplugins/dotnet-advanced/skills/nuget-trusted-publishing/SKILL.md:89Low confidence
- Network access in prose of the SKILL.mdnuget-trusted-publishing/SKILL.md:89Low confidence
- Network access in prose of the SKILL.mdplugins/dotnet-advanced/skills/nuget-trusted-publishing/SKILL.md:90Low confidence
- Network access in prose of the SKILL.mdnuget-trusted-publishing/SKILL.md:90Low confidence
- Access to secrets in code of the SKILL.md: a variable, placeholder or call, not a stored valueplugins/dotnet-advanced/skills/nuget-trusted-publishing/SKILL.md:139Low confidence
- Access to secrets in code of the SKILL.md: a variable, placeholder or call, not a stored valuenuget-trusted-publishing/SKILL.md:139Low confidence
- Network access in prose of the SKILL.mdplugins/dotnet-advanced/skills/nuget-trusted-publishing/SKILL.md:163Low confidence
- Network access in prose of the SKILL.mdnuget-trusted-publishing/SKILL.md:163Low confidence
- Network access in prose of the SKILL.mdplugins/dotnet-advanced/skills/nuget-trusted-publishing/SKILL.md:165Low confidence
- Network access in prose of the SKILL.mdnuget-trusted-publishing/SKILL.md:165Low confidence
- Network access in code of documentationplugins/dotnet-advanced/skills/nuget-trusted-publishing/references/package-types.md:168Low confidence
- Network access in code of documentationnuget-trusted-publishing/references/package-types.md:168Low confidence
- Network access in code of documentationplugins/dotnet-advanced/skills/nuget-trusted-publishing/references/package-types.md:169Low confidence
- Network access in code of documentationnuget-trusted-publishing/references/package-types.md:169Low confidence
- Network access in code of documentationplugins/dotnet-advanced/skills/nuget-trusted-publishing/references/package-types.md:174Low confidence
- Network access in code of documentationnuget-trusted-publishing/references/package-types.md:174Low confidence
- Network access in code of documentationplugins/dotnet-advanced/skills/nuget-trusted-publishing/references/package-types.md:175Low confidence
- Network access in code of documentationnuget-trusted-publishing/references/package-types.md:175Low confidence
- Network access in code of documentationplugins/dotnet-advanced/skills/nuget-trusted-publishing/references/package-types.md:176Low confidence
- Network access in code of documentationnuget-trusted-publishing/references/package-types.md:176Low confidence
- Network access in code of documentationplugins/dotnet-advanced/skills/nuget-trusted-publishing/references/publish-workflow.md:52Low confidence
- Network access in code of documentationnuget-trusted-publishing/references/publish-workflow.md:52Low confidence
and 450 more
Only the first 500 facts are listed.
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Native | Manifest .claude-plugin/marketplace.json | .claude/skills/<skill-name>/ |
| Codex | Native | Manifest AGENTS.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md eng/skill-validator/tests/fixtures/no-eval-skill/SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md eng/skill-validator/tests/fixtures/no-eval-skill/SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Native | Path .github/instructions/eval-quality.instructions.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md eng/skill-validator/tests/fixtures/no-eval-skill/SKILL.md | .opencode/skills/<skill-name>/ |
- Native The repository ships a manifest, folder or frontmatter field for this agent.
- Compatible A standard SKILL.md that this agent can read.
- Unknown No evidence either way.
Derived automatically from paths, manifests and frontmatter. Not tested on each agent.
Explore alternatives and comparisons
Add this badge to your README
It updates every night and links to this page.
[](https://hotskills.dev/skill/dotnet-skills/)