Official agent skill

Template Comparison

by dotnet in dotnet/skills

Compares two or more dotnet new templates side by side to help users choose between them based on parameters, feature support, frameworks, and classifications.

OfficialMITAuto-check passed

Install Template Comparison

skills CLI
$ npx skills add dotnet/skills --skill template-comparison -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install dotnet/skills template-comparison --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/dotnet/skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/dotnet-template-engine/skills/template-comparison .claude/skills/template-comparison && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
template-comparison
GitHub stars
5.6k
Used in
1 other repo
Token cost
~2.1k tokens
SKILL.md length
963 words
Files
1
Skills in repo
91
Repo updated
First seen
Licence
MIT

At a glance

Compares two or more dotnet new templates side by side to help users choose between them based on parameters, feature support, frameworks, and classifications.

  • Works in 3 steps: Inspect each template → Build the comparison table → Recommend
  • : deciding between similar templates (webapi vs webapp
  • SKILL.md covers When to Use, When Not to Use, Inputs and Workflow, plus 3 more sections
  • Calls dotnet

What it does

Template Comparison is an agent skill from dotnet/skills, published by the product's own GitHub organization. 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…

Its SKILL.md is about 2.1k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It works with .NET and Blazor. The repository describes itself as: Repository for skills to assist AI coding agents with .NET and C. The licence is MIT.

When your agent uses it

  • : deciding between similar templates (webapi vs webapp
  • Blazor vs blazorwasm
  • Console vs worker)
  • Producing a side-by-side comparison of parameters and feature support

Example prompts

  • “Use the template-comparison skill to compare two or more dotnet new templates side by side to help users choose between them based on parameters…”
  • “/template-comparison”

Requirements

  • Docker

Workflow steps

3 steps, taken from the step headings in SKILL.md.

  1. Inspect each template
  2. Build the comparison table
  3. Recommend

What it can do on your machine

Read from SKILL.md and the folder at commit 8d670fa. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • dotnet

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • learn.microsoft.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Template Comparison loads about 2.1k tokens when it runs. Until then it costs about 162 tokens; SKILL.md has 963 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~162
When it runs · the whole SKILL.md, loaded when a task matches
~2.1k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from dotnet/skills at commit 8d670fa, republished under its MIT licence (© dotnet). 963 words, ~2,055 tokens.

Download SKILL.mdSave it as .claude/skills/template-comparison/SKILL.md (or your agent's skills folder).
name
template-comparison
description
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).
license
MIT

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

  • User wants to create a project — route to template-instantiation
  • User wants to author or validate a custom template — route to template-authoring or template-validation
  • User just needs to find or inspect a single template — route to template-discovery

Inputs

InputRequiredDescription
Template short namesYesTwo or more template short names to compare (e.g., webapi, webapp)
Comparison focusNoOptional aspect to emphasize (auth, AOT, frameworks, interactivity)

Workflow

Evidence contract: a side-by-side table is useful only when every option claim is grounded in the currently installed templates. Run each --help command sequentially, capture the same requested dimensions for each template, and label an unavailable option as Not exposed rather than guessing or borrowing a flag from another template.

Decision contract: optimize the comparison for the user's stated decision, not table size. Cover every requested dimension, omit unrelated option rows, give a scenario-specific reason, and include one safe --dry-run command for the recommended starting point when it would make the recommendation actionable.

Step 1: Inspect each template

Run dotnet new <template> --help for each template being compared to collect its parameters (names, types, defaults, choices) and supported frameworks:

bash
dotnet new webapi --help
dotnet new webapp --help

If a template is not installed, search for its provider and report the missing prerequisite. Install it only when the user asked you to modify the environment or approved the install.

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.

Step 2: Build the comparison table

Produce a side-by-side table covering:

  • Parameters — name, type, default, choices
  • Feature support — auth, AOT, Docker, controllers, interactivity
  • Available frameworks — e.g., net8.0, net9.0, net10.0
  • Classifications — categories the template advertises (Web, API, Blazor, etc.)

Use one row per requested decision dimension and cite the observed option name in the cell. Do not fill a requested row with general framework knowledge when it is specifically about what the template generates or exposes.

When the user asks about generated dependencies without allowing project creation, inspect the installed template package's source .csproj files. --help and --dry-run do not reveal package references. Do not create temporary projects merely to inspect them, and do not guess current package IDs or test-platform defaults.

Example shape:

Aspectwebapiwebapp
Auth (--auth)None, Individual, SingleOrg, WindowsNone, Individual, SingleOrg, ...
AOT (--aot flag)present if dotnet new webapi --help lists --aotpresent if dotnet new webapp --help lists --aot
Controllers (--use-controllers)Yesn/a
Interactivityn/an/a
Frameworksnet8.0 / net9.0 / net10.0net8.0 / net9.0 / net10.0
ClassificationsWeb, WebAPIWeb, Razor Pages
Step 3: Recommend

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.

Show full SKILL.md (359 more words)Show less
Decision shortcuts for common pairs

Use these only for the recommendation, not as evidence of current parameter support. Still inspect with --help before filling the comparison table:

PairDefault pickBecause
webapi vs webappwebapi for a JSON/REST backend; webapp for server-rendered HTML/Razor Pageswebapi ships controllers/minimal APIs + OpenAPI, no UI
blazor vs blazorwasmblazorwasm when offline / no server is required; blazor (Web App) for flexible server + client interactivityStandalone WASM runs fully client-side, works offline
worker vs consoleworker for long-lived/queue/background processingGeneric Host: DI, logging, config, graceful shutdown, IHostedService lifecycle
mvc vs webappwebapp (Razor Pages) for page-focused apps; mvc for controller/view separation at scaleRazor Pages is lighter for CRUD-style pages

These constraints override the shorthand above:

  • Choose mvc when the user explicitly anticipates a large application or shared controller logic, even if its first pages are CRUD-focused.
  • Choose blazor with Server interactivity over webapp when rich interactive forms are central but useful HTML must arrive on the first response. Explain that the initial render is server-produced and that interactive components use the Blazor form/component model rather than Razor Pages PageModel.
  • For offline support, choose blazorwasm and explain the PWA/service-worker requirement, cached-after-first-load behavior, and lack of a required live server for execution.
  • For a durable queue processor, choose worker and tie the decision to Generic Host lifecycle, dependency injection, configuration, logging, graceful shutdown, and a real durable queue rather than an in-memory loop.

Validation

  • Every template requested was inspected via dotnet new <template> --help
  • The comparison covers parameters, feature support, frameworks, and classifications
  • Differences relevant to the user's scenario are called out explicitly
  • A recommendation (or clear trade-off) is provided
  • Unsupported or absent options are labeled instead of guessed
  • The final recommendation is a single decisive Recommendation: line

Common Pitfalls

PitfallSolution
Comparing uninstalled templates from memoryInstall and inspect each template so the comparison reflects the real parameters and choices.
Assuming feature parityParameter names and feature support vary by template — confirm each with --help.
Comparing fundamentally different template typesOnly compare templates that solve overlapping problems; note when they target different scenarios.

More Info

© dotnet, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in plugins/dotnet-template-engine/skills/template-comparison of dotnet/skills.

Open the folder on GitHubat commit 8d670fa

Used in 1 other repository

We found 2 copies of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in dotnet/skills, which our catalogue first saw on October 7, 2026.

Compare with similar skills

Template Comparison next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Template Comparison compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Template Comparison this skilldotnet/skills5.6k1 repos~2.1kAutomated safety check: PassMIT
Aspnet Corefanslead/ReverseProxy.Store1632 repos~1.4kAutomated safety check: PassApache-2.0
Maui AI DebuggingRedth/Maui.Gtk101—~4.1kAutomated safety check: PassMIT
Test Firstdeanhume/html-minifier142—~876Automated safety check: PassMIT
QA TesterJocysCom/FocusLogger213—~12kAutomated safety check: PassGPL-3.0
Maui Hot Reload Diagnosticsdavidortinau/maui-skills174—~1.3kAutomated safety check: PassMIT

Similar skills

  • Aspnet Core

    fanslead/ReverseProxy.Store

    Build, review, refactor, or architect ASP.NET Core web applications using current official guidance for .NET web development.

    163 GitHub starsUsed in 2 repos~1.4k tokens
    Backend & APIsAuto-check passed
  • Maui AI Debugging

    Redth/Maui.Gtk

    End-to-end workflow for building, deploying, inspecting, and debugging .NET MAUI and MAUI Blazor Hybrid apps as an AI agent.

    101 GitHub stars~4.1k tokensUpdated 5 mo ago
    MobileAuto-check passed
  • Test First

    deanhume/html-minifier

    Enforces a strict test-driven development (TDD) workflow for the HTML Minifier repo.

    142 GitHub stars~876 tokensUpdated 20 days ago
    Testing & QAAuto-check passed
  • QA Tester

    JocysCom/FocusLogger

    Create and maintain automated tests in Microsoft-native/.NET projects with a minimal stack — MSTest runner, System.Windows.Automation for Windows desktop, Playwright for real browser smoke.

    213 GitHub stars~12k tokensUpdated 3 mo ago
    Testing & QAAuto-check passed
  • Maui Hot Reload Diagnostics

    davidortinau/maui-skills

    Diagnose and troubleshoot .NET MAUI Hot Reload issues (C Hot Reload, XAML Hot Reload, Blazor Hybrid).

    174 GitHub stars~1.3k tokensUpdated 3 mo ago
    MobileAuto-check passed
  • Dotnet10 Features

    runceel/ReactiveProperty

    Reference for the .NET 10 / C 14 features that are relevant to the ReactiveProperty repository.

    944 GitHub stars~2.7k tokensUpdated 1 mo ago
    DevelopmentAuto-check passed

More from dotnet/skills

All 91 skills in this repo
  • Official

    Resolves .NET runtime frames in Apple .ips crash logs to function names, source files and line numbers using dSYM symbols, atos and the Microsoft symbol server.

    5.6k GitHub starsUsed in 1 repo~2.4k tokens
    Auto-check passed
  • Official

    Resolves native crash frames from .NET Android tombstones to function names, source files and line numbers using BuildIds, Microsoft's symbol server and llvm-symbolizer.

    5.6k GitHub starsUsed in 1 repo~2.1k tokens
    Auto-check passed
  • Official

    Scans C# and .NET code for about 50 performance anti-patterns and reports prioritized findings with concrete fixes, at a scan depth you choose.

    5.6k GitHub starsUsed in 3 repos~3.1k tokens
    Auto-check passed
  • Official

    Statically pairs source files with test files to list code that no test references, using Roslyn for C# or tree-sitter for many languages, with no build.

    5.6k GitHub starsUsed in 1 repo~3.3k tokens
    Auto-check passed
  • Microbenchmarking

    dotnet/skills

    Official

    Activate this skill when BenchmarkDotNet (BDN) is involved in the task — creating, running, configuring, or reviewing BDN benchmarks.

    5.6k GitHub starsUsed in 3 repos~3.3k tokens
    Auto-check passed
  • Official

    Makes .NET projects compatible with Native AOT and trimming by resolving IL trim and AOT analyzer warnings through annotations rather than suppressions.

    5.6k GitHub starsUsed in 2 repos~4.2k tokens
    Auto-check passed

Works with

Questions about Template Comparison

What does Template Comparison do?

Compares two or more dotnet new templates side by side to help users choose between them based on parameters, feature support, frameworks, and classifications. Template Comparison is an agent skill from dotnet/skills, published by the product's own GitHub organization. Compares two or more dotnet new templates side by side to help users choose between them based on parameters, feature support, frameworks, and classifications.

When should I use Template Comparison?

Template Comparison fits situations like: : deciding between similar templates (webapi vs webapp; blazor vs blazorwasm; console vs worker); producing a side-by-side comparison of parameters and feature support.

How do I install Template Comparison in Claude Code?

Run `npx skills add dotnet/skills --skill template-comparison -a claude-code`. Or copy the skill folder (plugins/dotnet-template-engine/skills/template-comparison in dotnet/skills) into .claude/skills/template-comparison in your project. Claude Code loads it when a task matches its description.

How do I install Template Comparison in Codex?

Run `npx skills add dotnet/skills --skill template-comparison -a codex`. Or copy the skill folder (plugins/dotnet-template-engine/skills/template-comparison in dotnet/skills) into .agents/skills/template-comparison in your project. Codex loads it when a task matches its description.

Can I use Template Comparison in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add dotnet/skills --skill template-comparison -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/template-comparison, .gemini/skills/template-comparison, .github/skills/template-comparison and .opencode/skills/template-comparison in your project.

What does Template Comparison need to run?

Going by SKILL.md and its folder, Template Comparison needs the command-line tools its instructions call (dotnet). Our summary lists: Docker.

Does Template Comparison access the network?

SKILL.md names 1 domain. As links in the text: learn.microsoft.com. This is read from the text; nothing was executed.

Is Template Comparison safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Template Comparison use?

Template Comparison is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Template Comparison use?

About 2.1k tokens (SKILL.md is roughly 8.2k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Template Comparison?

Skills that share tags, products or a category with Template Comparison: Aspnet Core (fanslead/ReverseProxy.Store, 163 stars), Maui AI Debugging (Redth/Maui.Gtk, 101 stars), Test First (deanhume/html-minifier, 142 stars) and QA Tester (JocysCom/FocusLogger, 213 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Template Comparison?

dotnet (a GitHub organization, an official publisher) maintains it in dotnet/skills, which has 5,568 GitHub stars. The repository holds 91 skills in this directory. The repository was last updated on October 7, 2026.

Source: dotnet/skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.