Claude Skill

dotnet

Primary router skill for broad .NET work. Classify the repo by app model and cross-cutting concern first, then switch to the narrowest matching .NET skill instead of staying at a generic layer.

LLM Mart · 0 points · 0 views 4 listing impressions 0 install-command copies
Virus-scanned Reviewed automatically before listing.

Full trust report

Download postpartum-genushyacinthus29-dotnet-skills-skills_dotnet-bfa4ebd.zip · 7 KB
Part of postpartum-genushyacinthus29/dotnet-skills — 80 skills

Install

skills CLI npx skills add https://github.com/Postpartum-genushyacinthus29/dotnet-skills/tree/main/skills/dotnet
Claude Code claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install postpartum-genushyacinthus29-dotnet-skills@llmmart
Git git clone https://github.com/Postpartum-genushyacinthus29/dotnet-skills.git

The skills CLI installs just this skill, for any of its supported agents. Claude Code installs the whole postpartum-genushyacinthus29/dotnet-skills collection as a plugin from our marketplace. Git is the plain clone.

Skill manifest

.NET Router Skill

Trigger On

  • the user asks for general .NET help without naming a narrower framework or tool
  • implementing, debugging, reviewing, or refactoring C# or .NET code in a repo with multiple app models or frameworks
  • deciding which .NET skill should own a task before editing code
  • tasks that combine platform work with testing, quality, architecture, setup, or migration decisions

Workflow

  1. Detect the real stack first:
    • target frameworks and SDK version
    • LangVersion
    • project SDKs and workload hints
    • hosting model and app entry points
    • test framework and runner
    • analyzers, formatters, coverage, and CI quality gates
  2. Route to the narrowest platform skill as soon as the stack is known:
    • Web: dotnet-aspnet-core, dotnet-minimal-apis, dotnet-web-api, dotnet-blazor, dotnet-signalr, dotnet-grpc
    • Cloud and hosting: dotnet-aspire, dotnet-azure-functions, dotnet-worker-services
    • Desktop and client: dotnet-maui, dotnet-wpf, dotnet-winforms, dotnet-winui
    • Data and distributed: dotnet-entity-framework-core, dotnet-entity-framework6, dotnet-orleans
    • AI and agentic: dotnet-semantic-kernel, dotnet-microsoft-extensions-ai, dotnet-microsoft-agent-framework, dotnet-mlnet, dotnet-mixed-reality
    • Legacy: dotnet-legacy-aspnet, dotnet-wcf, dotnet-workflow-foundation
  3. Route cross-cutting work to the companion skill instead of keeping it inside generic .NET advice:
    • project bootstrap or repo shape: dotnet-project-setup, dotnet-architecture
    • frontend asset analysis in mixed .NET plus Node repos: dotnet-eslint, dotnet-stylelint, dotnet-htmlhint, dotnet-webhint, dotnet-biome, dotnet-sonarjs, dotnet-metalint, dotnet-chous
    • code review: dotnet-code-review
    • language features: dotnet-modern-csharp
    • testing: dotnet-tunit, dotnet-xunit, dotnet-mstest
    • format, analyzers, coverage, and CI: dotnet-format, dotnet-code-analysis, dotnet-quality-ci, dotnet-coverlet, dotnet-reportgenerator
    • maintainability and architecture rules: dotnet-complexity, dotnet-netarchtest, dotnet-archunitnet
  4. If more than one specialized skill applies, prefer the one closest to the user-visible behavior first, then pull in the quality or tooling skill second.
  5. Do not stop at this skill once a narrower match exists. This skill should classify and hand off, not become a generic dumping ground.
  6. After code changes, validate with the repository's actual build, test, and quality workflow instead of generic .NET commands.

Routing Heuristics

  • If the repo contains Microsoft.NET.Sdk.Web, start from a web skill, not generic .NET.
  • If the repo contains Blazor, Razor Components, or .razor pages, prefer dotnet-blazor.
  • If the repo contains package.json, frontend lint configs, or browser-facing asset pipelines inside the .NET solution, prefer the dedicated frontend analysis skills instead of generic .NET.
  • If the repo contains Orleans grains or silo hosting, prefer dotnet-orleans.
  • If the repo is mostly analyzers, CI, or coverage work, prefer the quality skill directly.
  • If the user asks about “which skill should I use?”, answer with the narrowest matching skill and explain why in one short sentence.
  • If no narrower skill matches, keep the work here and stay explicit about the missing specialization.

Deliver

  • the correct specialized skill choice for the task
  • repo-compatible code or documentation changes that stay aligned with the detected stack
  • validation evidence that matches the real project runner and quality toolchain

Validate

  • the chosen downstream skill actually exists in the catalog
  • platform assumptions match project SDKs, packages, and workloads
  • generic guidance has been replaced by framework-specific guidance whenever possible
  • runner-specific commands are not mixed incorrectly
  • language or runtime features are only used when the repo supports them

Documentation

References

  • references/routing.md - Decision tree for routing tasks to specialized .NET skills, including app model classification and cross-cutting concern handling.
  • references/detection.md - Project detection patterns for identifying SDK types, target frameworks, workloads, language versions, and app models.
Files (dotnet-skills)
  • references
    • detection.md 7 KB
      # Project Detection Patterns
      
      This reference defines detection patterns for identifying .NET project characteristics including SDK types, target frameworks, workloads, and app models.
      
      ## SDK Detection
      
      ### Project SDK Types
      
      Detect the SDK from the `<Project Sdk="...">` attribute in `.csproj`/`.fsproj`/`.vbproj` files:
      
      | SDK | Indicates |
      |-----|-----------|
      | `Microsoft.NET.Sdk` | Class library or console app |
      | `Microsoft.NET.Sdk.Web` | ASP.NET Core web app |
      | `Microsoft.NET.Sdk.BlazorWebAssembly` | Blazor WebAssembly app |
      | `Microsoft.NET.Sdk.Razor` | Razor class library |
      | `Microsoft.NET.Sdk.Worker` | Worker service |
      | `Microsoft.NET.Sdk.WindowsDesktop` | WPF or WinForms (legacy SDK style) |
      | `Aspire.AppHost.Sdk` | Aspire app host |
      | `Aspire.ServiceDefaults.Sdk` | Aspire service defaults |
      
      ### SDK Version Detection
      
      Check `global.json` for SDK version constraints:
      
      ```json
      {
        "sdk": {
          "version": "9.0.100",
          "rollForward": "latestMinor"
        }
      }
      ```
      
      Key SDK version ranges:
      - `9.0.x` - .NET 9 (current LTS candidate)
      - `8.0.x` - .NET 8 (LTS)
      - `7.0.x` - .NET 7 (end of support)
      - `6.0.x` - .NET 6 (LTS)
      - `5.0.x` - .NET 5 (end of support)
      - `3.1.x` - .NET Core 3.1 (end of support)
      
      ## Target Framework Detection
      
      ### Target Framework Monikers (TFM)
      
      Detect from `<TargetFramework>` or `<TargetFrameworks>` in project files:
      
      | TFM Pattern | Platform |
      |-------------|----------|
      | `net9.0`, `net8.0`, `net7.0`, `net6.0` | Modern .NET |
      | `net9.0-windows`, `net8.0-windows` | Windows-specific workload |
      | `net9.0-ios`, `net9.0-android`, `net9.0-maccatalyst` | MAUI/mobile |
      | `net9.0-browser` | Blazor WebAssembly |
      | `netstandard2.0`, `netstandard2.1` | .NET Standard library |
      | `netcoreapp3.1`, `netcoreapp2.1` | Legacy .NET Core |
      | `net48`, `net472`, `net461` | .NET Framework |
      
      ### Multi-Targeting
      
      Projects with `<TargetFrameworks>` (plural) target multiple platforms:
      
      ```xml
      <TargetFrameworks>net8.0;net8.0-windows;net8.0-ios;net8.0-android</TargetFrameworks>
      ```
      
      ## Workload Detection
      
      ### Installed Workloads
      
      Check installed workloads via:
      ```bash
      dotnet workload list
      ```
      
      ### Project-Implied Workloads
      
      | Indicator | Workload |
      |-----------|----------|
      | TFM contains `-ios`, `-android`, `-maccatalyst` | `maui` or individual platform workloads |
      | TFM contains `-browser` | `wasm-tools` |
      | Package `Aspire.Hosting` | `aspire` |
      | Package `Microsoft.WindowsAppSDK` | `windowsdesktop` |
      
      ### Workload Manifest Files
      
      Check for workload requirements in:
      - `.config/dotnet-tools.json` - local tools
      - `Directory.Build.props` - workload version pins
      - `NuGet.config` - custom feeds for preview workloads
      
      ## Language Version Detection
      
      ### LangVersion Property
      
      Detect from `<LangVersion>` in project files or `Directory.Build.props`:
      
      | Value | Language Version |
      |-------|------------------|
      | `latest` | Highest version for TFM |
      | `preview` | Preview features enabled |
      | `13.0`, `12.0`, `11.0` | Explicit version |
      | `default` | SDK default |
      
      ### Implicit Language Version
      
      When `<LangVersion>` is not specified, the SDK sets it based on TFM:
      - `net9.0` implies C# 13
      - `net8.0` implies C# 12
      - `net7.0` implies C# 11
      - `net6.0` implies C# 10
      
      ## App Model Detection
      
      ### Web Apps
      
      Look for these indicators:
      
      **ASP.NET Core general:**
      - `Program.cs` with `WebApplication.CreateBuilder`
      - `Startup.cs` with `ConfigureServices`/`Configure`
      - `appsettings.json`, `appsettings.Development.json`
      - `wwwroot/` folder
      
      **Blazor:**
      - `.razor` files
      - `@page` directive
      - `RenderModeInteractiveServer`, `RenderModeInteractiveWebAssembly`
      - `AddInteractiveServerComponents()`, `AddInteractiveWebAssemblyComponents()`
      - `_Imports.razor`
      
      **Minimal APIs:**
      - `app.MapGet()`, `app.MapPost()`, etc.
      - No `[ApiController]` classes
      - Route handlers as lambdas or delegates
      
      **MVC/Web API:**
      - `Controllers/` folder
      - Classes inheriting `Controller` or `ControllerBase`
      - `[ApiController]`, `[Route]`, `[HttpGet]` attributes
      
      **SignalR:**
      - Classes inheriting `Hub` or `Hub<T>`
      - `IHubContext<T>` injection
      - `MapHub<T>()` calls
      
      **gRPC:**
      - `.proto` files
      - `Grpc.AspNetCore` package
      - `MapGrpcService<T>()` calls
      
      ### Desktop Apps
      
      **MAUI:**
      - `MauiProgram.cs`
      - `MauiApp.CreateBuilder()`
      - `.maui` file extensions
      - `Microsoft.Maui.*` namespaces
      
      **WPF:**
      - `<UseWPF>true</UseWPF>` in project
      - `.xaml` files with WPF namespaces
      - `PresentationFramework` reference
      - `App.xaml`, `MainWindow.xaml`
      
      **WinForms:**
      - `<UseWindowsForms>true</UseWindowsForms>` in project
      - `System.Windows.Forms` namespace
      - `Form` class inheritance
      - `.Designer.cs` files
      
      **WinUI 3:**
      - `Microsoft.WindowsAppSDK` package
      - `Microsoft.WinUI` namespace
      - `WinUIEx` patterns
      
      **Uno Platform:**
      - `Uno.WinUI` or `Uno.UI` packages
      - Cross-platform XAML with Uno namespaces
      - Platform head projects
      
      ### Worker and Background Services
      
      - `<OutputType>Exe</OutputType>` with no web SDK
      - `BackgroundService` inheritance
      - `IHostedService` implementation
      - `Host.CreateDefaultBuilder()` without web
      
      ### Azure Functions
      
      - `[Function]` attribute
      - `Microsoft.Azure.Functions.Worker` namespace
      - `host.json` file
      - `local.settings.json` file
      
      ### Aspire
      
      **App Host:**
      - `Aspire.AppHost.Sdk`
      - `DistributedApplicationBuilder`
      - `builder.AddProject<T>()`
      
      **Service Defaults:**
      - `Aspire.ServiceDefaults.Sdk`
      - `AddServiceDefaults()` extension
      
      **Component Usage:**
      - `Aspire.*` packages
      - `AddRedis()`, `AddPostgres()`, etc.
      
      ## Test Framework Detection
      
      | Indicator | Framework |
      |-----------|-----------|
      | `Microsoft.NET.Test.Sdk` + `TUnit` | TUnit |
      | `Microsoft.NET.Test.Sdk` + `xunit` | xUnit |
      | `Microsoft.NET.Test.Sdk` + `MSTest.TestFramework` | MSTest |
      | `[Fact]`, `[Theory]` attributes | xUnit |
      | `[Test]`, `[TestCase]` attributes | TUnit |
      | `[TestMethod]`, `[TestClass]` attributes | MSTest |
      
      ## Build and Quality Tooling Detection
      
      ### Analyzers
      
      | Package | Tool |
      |---------|------|
      | `Microsoft.CodeAnalysis.NetAnalyzers` | Built-in analyzers |
      | `Roslynator.Analyzers` | Roslynator |
      | `StyleCop.Analyzers` | StyleCop |
      | `Meziantou.Analyzer` | Meziantou rules |
      | `SonarAnalyzer.CSharp` | SonarQube |
      
      ### Formatters
      
      | Indicator | Tool |
      |-----------|------|
      | `.editorconfig` present | dotnet format |
      | `CSharpier` package or `.csharpierrc` | CSharpier |
      | `jb` CLI usage | ReSharper CLI |
      
      ### Coverage
      
      | Package | Tool |
      |---------|------|
      | `coverlet.collector` | Coverlet |
      | `coverlet.msbuild` | Coverlet (MSBuild) |
      | `ReportGenerator` tool | Report generation |
      
      ### Architecture Testing
      
      | Package | Tool |
      |---------|------|
      | `NetArchTest.Rules` | NetArchTest |
      | `ArchUnitNET` | ArchUnitNET |
      
      ## Common File Locations
      
      | File | Purpose |
      |------|---------|
      | `*.sln` | Solution file (find all projects) |
      | `*.csproj`, `*.fsproj`, `*.vbproj` | Project files |
      | `global.json` | SDK version pinning |
      | `Directory.Build.props` | Shared MSBuild properties |
      | `Directory.Build.targets` | Shared MSBuild targets |
      | `Directory.Packages.props` | Central package management |
      | `NuGet.config` | NuGet configuration |
      | `.editorconfig` | Code style and analyzer settings |
      | `*.ruleset` | Legacy analyzer rules |
      
    • routing.md 5.7 KB
      # Routing Decision Tree
      
      This reference defines the decision tree for routing tasks from the generic `dotnet` skill to the narrowest matching specialized skill.
      
      ## Primary Classification
      
      Start by classifying the repository or task by its **primary app model**, then refine by **cross-cutting concerns**.
      
      ```
      Is the task about a specific framework or platform?
      |
      +-- YES --> Route to the platform skill immediately
      |
      +-- NO --> Continue to app model detection
      ```
      
      ## App Model Detection Order
      
      Evaluate project indicators in this order and route to the first matching skill:
      
      ### 1. Web and API
      
      | Indicator | Route To |
      |-----------|----------|
      | Blazor components (`.razor`, `@page`, `RenderModeInteractiveServer`) | `dotnet-blazor` |
      | Minimal API patterns (`app.MapGet`, `app.MapPost`, no controllers) | `dotnet-minimal-apis` |
      | MVC or Web API controllers (`[ApiController]`, `ControllerBase`) | `dotnet-web-api` |
      | SignalR hubs (`Hub`, `IHubContext`, `/hubs/` routes) | `dotnet-signalr` |
      | gRPC services (`.proto`, `Grpc.AspNetCore`) | `dotnet-grpc` |
      | General ASP.NET Core hosting without specific pattern | `dotnet-aspnet-core` |
      
      ### 2. Cloud and Hosting
      
      | Indicator | Route To |
      |-----------|----------|
      | Aspire app host or service defaults (`Aspire.Hosting`, `AddProject`) | `dotnet-aspire` |
      | Azure Functions (`[Function]`, `Microsoft.Azure.Functions.Worker`) | `dotnet-azure-functions` |
      | Background services (`BackgroundService`, `IHostedService`) | `dotnet-worker-services` |
      
      ### 3. Desktop and Client
      
      | Indicator | Route To |
      |-----------|----------|
      | MAUI app (`Microsoft.Maui`, `.maui`) | `dotnet-maui` |
      | Uno Platform (`Uno.WinUI`, cross-platform XAML) | `dotnet-uno-platform` |
      | WinUI 3 (`Microsoft.WindowsAppSDK`, `WinUI`) | `dotnet-winui` |
      | WPF (`UseWPF`, `PresentationFramework`) | `dotnet-wpf` |
      | Windows Forms (`UseWindowsForms`, `System.Windows.Forms`) | `dotnet-winforms` |
      | MVVM patterns in any client app | `dotnet-mvvm` |
      
      ### 4. Data and Distributed
      
      | Indicator | Route To |
      |-----------|----------|
      | EF Core (`Microsoft.EntityFrameworkCore`, `DbContext`) | `dotnet-entity-framework-core` |
      | EF6 (`EntityFramework`, `System.Data.Entity`) | `dotnet-entity-framework6` |
      | Orleans grains and silos (`Orleans.Core`, `[Grain]`) | `dotnet-orleans` |
      
      ### 5. AI and Agentic
      
      | Indicator | Route To |
      |-----------|----------|
      | Semantic Kernel (`Microsoft.SemanticKernel`, `Kernel.CreateBuilder`) | `dotnet-semantic-kernel` |
      | Microsoft.Extensions.AI (`IChatClient`, `IEmbeddingGenerator`) | `dotnet-microsoft-extensions-ai` |
      | Microsoft Agent Framework (`Microsoft.Agents`) | `dotnet-microsoft-agent-framework` |
      | ML.NET (`Microsoft.ML`, `MLContext`) | `dotnet-mlnet` |
      | Mixed Reality (`Microsoft.MixedReality`) | `dotnet-mixed-reality` |
      | MCP servers (`ModelContextProtocol`) | `dotnet-mcp` |
      
      ### 6. Legacy
      
      | Indicator | Route To |
      |-----------|----------|
      | Legacy ASP.NET (`System.Web`, `Global.asax`) | `dotnet-legacy-aspnet` |
      | WCF (`System.ServiceModel`, `.svc`) | `dotnet-wcf` |
      | Windows Workflow Foundation (`System.Activities`) | `dotnet-workflow-foundation` |
      
      ## Cross-Cutting Concerns
      
      After platform routing, check if the task is primarily about a cross-cutting concern:
      
      ### Project and Architecture
      
      | Concern | Route To |
      |---------|----------|
      | Project creation, solution structure, SDK selection | `dotnet-project-setup` |
      | Architecture decisions, patterns, layering | `dotnet-architecture` |
      | Microsoft.Extensions patterns (DI, config, logging) | `dotnet-microsoft-extensions` |
      
      ### Code Quality and Review
      
      | Concern | Route To |
      |---------|----------|
      | Code review, PR feedback | `dotnet-code-review` |
      | Modern C# language features | `dotnet-modern-csharp` |
      
      ### Testing
      
      | Concern | Route To |
      |---------|----------|
      | TUnit test framework | `dotnet-tunit` |
      | xUnit test framework | `dotnet-xunit` |
      | MSTest test framework | `dotnet-mstest` |
      
      ### Formatting and Analysis
      
      | Concern | Route To |
      |---------|----------|
      | `dotnet format` usage | `dotnet-format` |
      | CSharpier formatting | `dotnet-csharpier` |
      | Built-in code analysis, editorconfig | `dotnet-code-analysis` |
      | EditorConfig and analyzer configuration | `dotnet-analyzer-config` |
      | Roslyn analyzers (Roslynator) | `dotnet-roslynator` |
      | StyleCop rules | `dotnet-stylecop-analyzers` |
      | Meziantou analyzers | `dotnet-meziantou-analyzer` |
      | ReSharper CLI tools | `dotnet-resharper-clt` |
      | CodeQL security scanning | `dotnet-codeql` |
      
      ### Quality and CI
      
      | Concern | Route To |
      |---------|----------|
      | CI quality gates, build pipelines | `dotnet-quality-ci` |
      | Code coverage collection | `dotnet-coverlet` |
      | Coverage report generation | `dotnet-reportgenerator` |
      | Mutation testing | `dotnet-stryker` |
      | Complexity metrics | `dotnet-complexity` |
      | Lines of code counting | `dotnet-cloc` |
      | Duplicate code detection | `dotnet-quickdup` |
      | Performance profiling | `dotnet-profiling` |
      
      ### Architecture Enforcement
      
      | Concern | Route To |
      |---------|----------|
      | NetArchTest rules | `dotnet-netarchtest` |
      | ArchUnitNET rules | `dotnet-archunitnet` |
      
      ## Multi-Skill Tasks
      
      When a task spans multiple skills:
      
      1. **Prefer the user-visible behavior skill first** - if the task is about adding a Blazor feature with tests, start with `dotnet-blazor`
      2. **Pull in quality/tooling skills second** - after the feature is implemented, route testing to `dotnet-xunit` or `dotnet-tunit`
      3. **Do not combine incompatible guidance** - runner-specific commands and patterns should come from one skill at a time
      
      ## Fallback Behavior
      
      If no narrower skill matches:
      
      1. Stay at `dotnet` skill
      2. Be explicit about missing specialization
      3. Provide generic .NET guidance only when necessary
      4. Suggest which skill should be created if the gap is recurring
      
  • SKILL.md 4.6 KB
    ---
    name: dotnet
    version: "1.0.0"
    category: "Core"
    description: "Primary router skill for broad .NET work. Classify the repo by app model and cross-cutting concern first, then switch to the narrowest matching .NET skill instead of staying at a generic layer."
    compatibility: "Requires a .NET repository, solution, or project tree."
    ---
    
    # .NET Router Skill
    
    ## Trigger On
    
    - the user asks for general `.NET` help without naming a narrower framework or tool
    - implementing, debugging, reviewing, or refactoring C# or `.NET` code in a repo with multiple app models or frameworks
    - deciding which `.NET` skill should own a task before editing code
    - tasks that combine platform work with testing, quality, architecture, setup, or migration decisions
    
    ## Workflow
    
    1. Detect the real stack first:
       - target frameworks and SDK version
       - `LangVersion`
       - project SDKs and workload hints
       - hosting model and app entry points
       - test framework and runner
       - analyzers, formatters, coverage, and CI quality gates
    2. Route to the narrowest platform skill as soon as the stack is known:
       - Web: `dotnet-aspnet-core`, `dotnet-minimal-apis`, `dotnet-web-api`, `dotnet-blazor`, `dotnet-signalr`, `dotnet-grpc`
       - Cloud and hosting: `dotnet-aspire`, `dotnet-azure-functions`, `dotnet-worker-services`
       - Desktop and client: `dotnet-maui`, `dotnet-wpf`, `dotnet-winforms`, `dotnet-winui`
       - Data and distributed: `dotnet-entity-framework-core`, `dotnet-entity-framework6`, `dotnet-orleans`
       - AI and agentic: `dotnet-semantic-kernel`, `dotnet-microsoft-extensions-ai`, `dotnet-microsoft-agent-framework`, `dotnet-mlnet`, `dotnet-mixed-reality`
       - Legacy: `dotnet-legacy-aspnet`, `dotnet-wcf`, `dotnet-workflow-foundation`
    3. Route cross-cutting work to the companion skill instead of keeping it inside generic `.NET` advice:
       - project bootstrap or repo shape: `dotnet-project-setup`, `dotnet-architecture`
       - frontend asset analysis in mixed `.NET` plus Node repos: `dotnet-eslint`, `dotnet-stylelint`, `dotnet-htmlhint`, `dotnet-webhint`, `dotnet-biome`, `dotnet-sonarjs`, `dotnet-metalint`, `dotnet-chous`
       - code review: `dotnet-code-review`
       - language features: `dotnet-modern-csharp`
       - testing: `dotnet-tunit`, `dotnet-xunit`, `dotnet-mstest`
       - format, analyzers, coverage, and CI: `dotnet-format`, `dotnet-code-analysis`, `dotnet-quality-ci`, `dotnet-coverlet`, `dotnet-reportgenerator`
       - maintainability and architecture rules: `dotnet-complexity`, `dotnet-netarchtest`, `dotnet-archunitnet`
    4. If more than one specialized skill applies, prefer the one closest to the user-visible behavior first, then pull in the quality or tooling skill second.
    5. Do not stop at this skill once a narrower match exists. This skill should classify and hand off, not become a generic dumping ground.
    6. After code changes, validate with the repository's actual build, test, and quality workflow instead of generic `.NET` commands.
    
    ## Routing Heuristics
    
    - If the repo contains `Microsoft.NET.Sdk.Web`, start from a web skill, not generic `.NET`.
    - If the repo contains Blazor, Razor Components, or `.razor` pages, prefer `dotnet-blazor`.
    - If the repo contains `package.json`, frontend lint configs, or browser-facing asset pipelines inside the `.NET` solution, prefer the dedicated frontend analysis skills instead of generic `.NET`.
    - If the repo contains Orleans grains or silo hosting, prefer `dotnet-orleans`.
    - If the repo is mostly analyzers, CI, or coverage work, prefer the quality skill directly.
    - If the user asks about “which skill should I use?”, answer with the narrowest matching skill and explain why in one short sentence.
    - If no narrower skill matches, keep the work here and stay explicit about the missing specialization.
    
    ## Deliver
    
    - the correct specialized skill choice for the task
    - repo-compatible code or documentation changes that stay aligned with the detected stack
    - validation evidence that matches the real project runner and quality toolchain
    
    ## Validate
    
    - the chosen downstream skill actually exists in the catalog
    - platform assumptions match project SDKs, packages, and workloads
    - generic guidance has been replaced by framework-specific guidance whenever possible
    - runner-specific commands are not mixed incorrectly
    - language or runtime features are only used when the repo supports them
    
    ## Documentation
    
    ### References
    
    - [`references/routing.md`](references/routing.md) - Decision tree for routing tasks to specialized .NET skills, including app model classification and cross-cutting concern handling.
    - [`references/detection.md`](references/detection.md) - Project detection patterns for identifying SDK types, target frameworks, workloads, language versions, and app models.
    

Comments (0)

Sign in to join the conversation.

No comments yet.

Reviews (0)

No reviews yet.

Related