Create or reorganize .NET solutions with clean project boundaries, repeatable SDK settings, and a maintainable baseline for libraries, apps, tests, CI, and local development. USE FOR: creating a new .NET solution or restructuring an existing one; setting up Directory.Build.props, shared package management, or repo-wide defaults; defining project. DO NOT USE FOR: unrelated stacks; generic tasks that do not need this specific guidance. INVOKES: inspect the repository context, edit targeted files,
SkillScore100Maintained
Automatic
◆Coding pack
Last verified 8/19/2026
What it changes
Passed 22 of 22 test cases with the skill, and 19 of 22 without it.
Without skill86%
With skill100%
Checks it passed that the model alone missed
Identifies the @ character as the option separator for dotnet new
Specifies using the --project or --solution option flag with dotnet test
Recommends using Microsoft.NET.Sdk.Worker or the smallest applicable SDK rather than the full Web SDK
3 fixed19 passed either way0 still failing0 broke
Pass-rate lift
+14 pp
Tokens
+5%
Agent turns
0%
Response time
-23%
Model gemini-3.6-flashMeasured 8/19/2026v222 of 22 cases passed with skill
Tokens, turns and time describe resource use, not a dollar price.
See it in action
One of 3 test cases the skill fixed. Same model, same prompt, with and without the skill.
1 of 3
Prompt
In .NET SDK 10.0.400 CLI invocation for `dotnet new`, what character is supported as an option separator when passing complex parameters?
What was checked, without and with the skill
Checked
Without skill
With skill
Identifies the @ character as the option separator for dotnet new
Missed
Passed
case-09 · gemini-3.6-flash · 8/19/2026 · answers are capped and redacted
What's inside
The instructions your model reads when the skill loads.
SKILL.md38 lines3 files
.NET Project Setup
Trigger On
creating a new .NET solution or restructuring an existing one
setting up Directory.Build.props, shared package management, or repo-wide defaults
defining project layout for apps, libraries, and test projects
Workflow
Start from the app model and deployment target, then choose the smallest correct SDK and target framework set.
Use solution folders and project names that reflect bounded contexts or product areas, not temporary implementation details.
Centralize shared build settings, analyzer rules, nullable context, and package versions where it reduces duplication without hiding important differences.
Create test projects and CI hooks early so new projects do not drift into unverified templates.
Prefer project references and composition over circular dependencies or utility dumping grounds.
Document the local build, test, and run path in repo docs or AGENTS.md when the workflow is not obvious.
Current Upstream Notes
The August 2026 "Build apps with .NET" Learn overview reinforces app-model-first setup: console, web, worker, desktop, mobile, cloud, and AI entry points should drive SDK/template choice.
.NET SDK 10.0.400 is the current 10.0.4xx feature band. It expands file-based app support, adds Microsoft.Testing.Platform --project and --solution selection to dotnet test, accepts @ as the dotnet new option separator, and fixes hardlink and incremental-build paths. Keep global.json, workloads, and CI images explicit for the selected feature band.
Deliver
a coherent solution structure
shared build defaults that are easy to reason about
starter quality and testing hooks for future work
Validate
projects have explicit responsibility boundaries
shared MSBuild settings do not accidentally override platform-specific needs
a new contributor can build and test the repo without guessing
References
patterns.md: solution layout conventions, Directory.Build.props, Directory.Build.targets, Central Package Management, global.json, nuget.config, analyzers, multi-targeting, and source link
templates.md: dotnet new templates for console apps, class libraries, ASP.NET Core APIs, worker services, Blazor, test projects, .NET Aspire, and gRPC services
Use the open-source free `ReportGenerator` tool for turning .NET coverage outputs into HTML, Markdown, Cobertura, badges, and merged reports. USE FOR: the repo uses or wants ReportGenerator; CI needs human-readable coverage reports; multiple coverage files must be merged. DO NOT USE FOR: raw coverage collection with no reporting need. INVOKES: inspect the repository context, edit targeted files, and run relevant build, test, lint, or validation commands when changes are made.