Install any skill in seconds. Free to start, no credit card required.
Get Started Free →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 validati
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-02 | ✗→✓ | ▲ Improved | 40% | 0% |
| case-05 | ✗→✓ | ▲ Improved | 15% | 0% |
| case-18 | ✗→✓ | ▲ Improved | 71% | 0% |
| case-17 | ✓→✗ | ▼ Worse | 20% | 0% |
| case-08 | ✓→✗ | ▼ Worse | -25% | 0% |
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.
webapi vs webapp, blazor vs blazorwasm)template-instantiationtemplate-authoring or template-validationtemplate-discovery| Input | Required | Description | |-------|----------|-------------| | Template short names | Yes | Two or more template short names to compare (e.g., webapi, webapp) | | Comparison focus | No | Optional aspect to emphasize (auth, AOT, frameworks, interactivity) |
Run dotnet new <template> --help for each template being compared to collect its parameters (names, types, defaults, choices) and supported frameworks:
bashdotnet new webapi --help dotnet new webapp --help
If a template is not installed, find and install it first (dotnet new search <keyword>, then dotnet new install <package>).
> Run --help calls sequentially. The template engine uses a global mutex, so running > several dotnet new <template> --help commands concurrently can fail with a transient > "mutex"/"persistence" error and empty output. Inspect templates one at a time; if a call > fails, retry it once before moving on, and still produce the comparison from whatever > parameter knowledge you have rather than ending with no answer.
Produce a side-by-side table covering:
Example shape:
| Aspect | webapi | webapp | |--------|----------|----------| | Auth (--auth) | None, Individual, SingleOrg, Windows | None, Individual, SingleOrg, ... | | AOT (--aot flag) | present if dotnet new webapi --help lists --aot | present if dotnet new webapp --help lists --aot | | Controllers (--use-controllers) | Yes | n/a | | Interactivity | n/a | n/a | | Frameworks | net8.0 / net9.0 / net10.0 | net8.0 / net9.0 / net10.0 | | Classifications | Web, WebAPI | Web, Razor Pages |
End with a decisive Recommendation line — never leave the user with just a table. Format:
> Recommendation: <template> — one sentence tying the choice to the user's stated scenario. (Pick the other if <condition>.)
Then link to template-instantiation to create it. A comparison that ends without naming a winner (or a clear "it depends on X") is incomplete — that indecision is what makes this skill tie with a plain answer.
Use these as the opinionated default when the user hasn't given a countervailing constraint. Still inspect with --help to confirm parameters, but lead with the verdict:
| Pair | Default pick | Because | |------|-------------|---------| | webapi vs webapp | webapi for a JSON/REST backend; webapp for server-rendered HTML/Razor Pages | webapi ships controllers/minimal APIs + OpenAPI, no UI | | blazor vs blazorwasm | blazorwasm when offline / no server is required; blazor (Web App) for flexible server + client interactivity | Standalone WASM runs fully client-side, works offline | | worker vs console | worker for long-lived/queue/background processing | Generic Host: DI, logging, config, graceful shutdown, IHostedService lifecycle | | mvc vs webapp | webapp (Razor Pages) for page-focused apps; mvc for controller/view separation at scale | Razor Pages is lighter for CRUD-style pages |
dotnet new <template> --help| Pitfall | Solution | |---------|----------| | Comparing uninstalled templates from memory | Install and inspect each template so the comparison reflects the real parameters and choices. | | Assuming feature parity | Parameter names and feature support vary by template — confirm each with --help. | | Comparing fundamentally different template types | Only compare templates that solve overlapping problems; note when they target different scenarios. |
Other measured skills in the registry, with their headline benchmark lift.