Source profileQuality 95/100

dotnet/skills/plugins/dotnet-template-engine/skills/template-instantiation/SKILL.md

template-instantiation

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 te

Source repository stars
5,248
Declared platforms
0
Static risk flags
1
Last source update
2026-08-26
Source checked
2026-08-26

Decision brief

What it does: where it fits

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.

Best for

  • User asks to create a new .NET project, app, or service
  • User needs a solution with multiple projects (API + tests + library)
  • User wants to create a project that respects existing Directory.Packages.props

Not for

  • User is searching for templates — route to template-discovery skill; for a detailed side-by-side comparison — route to template-comparison skill
  • User wants to author a custom template — route to template-authoring skill

Compatibility matrix

Platform support, with evidence labels

PlatformStatusEvidenceWhat to check
CodexNot declaredNo explicit evidencePortability before use
Claude CodeNot declaredNo explicit evidencePortability before use
CursorNot declaredNo explicit evidencePortability before use
Gemini CLINot declaredNo explicit evidencePortability before use
Open the compatibility checker

Installation

Inspect first. Install second.

The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.

Source-detected install commandSource
npx skills add https://github.com/dotnet/skills --skill "plugins/dotnet-template-engine/skills/template-instantiation"
Safe inspection promptEditorial

Inspect the Agent Skill "template-instantiation" from https://github.com/dotnet/skills/blob/1b896e91feb0f613cb54a914f1efd2897810ae02/plugins/dotnet-template-engine/skills/template-instantiation/SKILL.md at commit 1b896e91feb0f613cb54a914f1efd2897810ae02. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.

Workflow

What the source asks the agent to do

  1. 01

    Workflow

    If the user provides a natural-language description, map it to a template short name (see the keyword table in the template-discovery skill). If they provide a template name, proceed directly.

    Is Central Package Management (CPM) enabled? Look for Directory.Packages.propsWhat target frameworks are in use? Check existing .csproj filesIs there a global.json pinning the SDK?
  2. 02

    Step 1: Resolve template and parameters

    If the user provides a natural-language description, map it to a template short name (see the keyword table in the template-discovery skill). If they provide a template name, proceed directly.

    If the user provides a natural-language description, map it to a template short name (see the keyword table in the template-discovery skill). If they provide a template name, proceed directly.Use dotnet new --help to review available parameters, defaults, and types for any parameters the user did not specify.When a parameter the user chose implies a value for an unset related parameter, invoke the template-smart-defaults skill to resolve the gap before assembling the command line — e.g., native AOT implies a recent AOT-capa…
  3. 03

    Step 2: Analyze the workspace

    Check the existing solution structure before creating: - Is Central Package Management (CPM) enabled? Look for Directory.Packages.props - What target frameworks are in use? Check existing .csproj files - Is there a global.json pinning the SDK?

    Is Central Package Management (CPM) enabled? Look for Directory.Packages.propsWhat target frameworks are in use? Check existing .csproj filesIs there a global.json pinning the SDK?
  4. 04

    Step 3: Preview the creation

    Use dotnet new --dry-run to show the user what files would be created. Confirm before proceeding.

    Use dotnet new --dry-run to show the user what files would be created. Confirm before proceeding.
  5. 05

    Step 4: Create the project

    Use dotnet new with the template name and all parameters:

    Detect CPM — walk up the directory tree from the new project looking for a Directory.Packages.props.Strip inline versions — if found, for each the template generated, remove the Version attribute from the .csproj (leaving ).Centralize the version — add or merge a entry in Directory.Packages.props.

Permission review

Static risk signals and limitations

Writes files

medium · line 12

The documentation asks the agent to create, modify, or delete local files.

User wants to create a project that respects existing `Directory.Packages.props`

Evidence record

Why each signal appears

EvidenceSourceComputedTestedEditorial
SignalValueEvidence typeMeaning
Quality score95/100ComputedDocumentation, specificity, maintenance, and trust rules
Repository stars5,248SourceRepository attention, not individual Skill quality
Compatibility0 platformsSourceDeclared in the catalog source record
Usage guideautomated source guideEditorialGenerated or reviewed according to the visible evidence level

Pinned source

Provenance and original SKILL.md

Repository
dotnet/skills
Skill path
plugins/dotnet-template-engine/skills/template-instantiation/SKILL.md
Commit
1b896e91feb0f613cb54a914f1efd2897810ae02
License
MIT
Collected
2026-08-26
Default branch
main
View the original 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.

When to Use

  • User asks to create a new .NET project, app, or service
  • User needs a solution with multiple projects (API + tests + library)
  • User wants to create a project that respects existing Directory.Packages.props
  • User needs to install or manage template packages

When Not to Use

  • User is searching for templates — route to template-discovery skill; for a detailed side-by-side comparison — route to template-comparison skill
  • User wants to author a custom template — route to template-authoring skill
  • User wants to add packages to an existing project — use dotnet add package directly

Inputs

InputRequiredDescription
Template name or intentYesTemplate short name (e.g., webapi) or natural-language description
Project nameYesName for the created project
Output pathRecommendedDirectory where the project should be created
ParametersNoTemplate-specific parameters (e.g., --framework, --auth, --aot)

Workflow

Step 1: Resolve template and parameters

If the user provides a natural-language description, map it to a template short name (see the keyword table in the template-discovery skill). If they provide a template name, proceed directly.

Use dotnet new <template> --help to review available parameters, defaults, and types for any parameters the user did not specify.

When a parameter the user chose implies a value for an unset related parameter, invoke the template-smart-defaults skill to resolve the gap before assembling the command line — e.g., native AOT implies a recent AOT-capable target framework, a non-None --auth choice means HTTPS must stay enabled (don't add --no-https), and --use-controllers excludes the minimal-API option. Smart defaults only fill gaps; never let them override a value the user set explicitly. The workspace framework discovered in Step 2 counts as such an explicit value — pass it to smart-defaults as the chosen --framework so it isn't treated as an unset gap; deviate only if it is incompatible with the requested feature/template (then surface the conflict to the user).

Step 2: Analyze the workspace

Check the existing solution structure before creating:

  • Is Central Package Management (CPM) enabled? Look for Directory.Packages.props
  • What target frameworks are in use? Check existing .csproj files
  • Is there a global.json pinning the SDK?

This ensures the new project is consistent with the workspace.

Step 3: Preview the creation

Use dotnet new <template> --dry-run to show the user what files would be created. Confirm before proceeding.

dotnet new webapi --name MyApi --framework net10.0 --dry-run

Step 4: Create the project

Use dotnet new with the template name and all parameters:

dotnet new webapi --name MyApi --output ./src/MyApi --framework net10.0 --auth Individual

Common parameter combinations

TemplateParametersExample
webapi--auth (None, Individual, SingleOrg, Windows), --aot (native AOT)dotnet new webapi -n MyApi --auth Individual --aot
webapi--use-controllers (use controllers vs minimal APIs)dotnet new webapi -n MyApi --use-controllers
blazor--interactivity (None, Server, WebAssembly, Auto), --authdotnet new blazor -n MyApp --interactivity Server
grpc--aot (native AOT)dotnet new grpc -n MyService --aot
worker--aot (native AOT)dotnet new worker -n MyWorker --aot

Note: Use dotnet new <template> --help to see all available parameters for any template.

After creation, adapt the project to Central Package Management and refresh stale versions:

  1. Detect CPM — walk up the directory tree from the new project looking for a Directory.Packages.props.
  2. Strip inline versions — if found, for each <PackageReference Include="X" Version="Y" /> the template generated, remove the Version attribute from the .csproj (leaving <PackageReference Include="X" />).
  3. Centralize the version — add or merge a <PackageVersion Include="X" Version="Y" /> entry in Directory.Packages.props.
  4. Optionally refresh stale template-default versions — templates often hardcode old versions. Keep the template's versions by default (safest for reproducibility and controlled upgrades). Only refresh when the user asks, and when you do:
    • Prefer a tooling-driven flow: run dotnet list package --outdated and confirm the proposed bumps with the user before changing anything.
    • Constrain upgrades to the same major (or major/minor) version unless the user explicitly opts into larger upgrades, since cross-major bumps can introduce breaking changes.
    • When checking the latest stable version of a package conceptually, the NuGet V3 flat-container index.json endpoint for that package ID lists published versions; never select a prerelease unless requested.
  5. Build — run dotnet build to confirm the centralized/refreshed versions resolve.

Step 5: Multi-project composition (optional)

For complex structures, create each project sequentially and wire them together:

dotnet new webapi --name MyApi --output ./src/MyApi
dotnet new xunit --name MyApi.Tests --output ./tests/MyApi.Tests
dotnet add ./tests/MyApi.Tests reference ./src/MyApi
dotnet sln add ./src/MyApi ./tests/MyApi.Tests

Step 6: Template package management

Install or uninstall template packages:

dotnet new install Microsoft.DotNet.Web.ProjectTemplates.10.0
dotnet new uninstall Microsoft.DotNet.Web.ProjectTemplates.10.0

Step 7: Post-creation verification

  1. Verify the project builds: dotnet build
  2. If added to a solution, verify dotnet build at the solution level
  3. If CPM was adapted, verify Directory.Packages.props has the new entries

Validation

  • Project was created successfully with the expected files
  • Project builds cleanly with dotnet build
  • If CPM is active, .csproj has no version attributes and Directory.Packages.props has matching entries
  • Package versions in the project are current (not stale template defaults)
  • If multi-project, all projects build and reference each other correctly

Common Pitfalls

PitfallSolution
Not checking for CPM before creating a projectIf Directory.Packages.props exists, dotnet new creates projects with inline versions that conflict. After creation, move versions to Directory.Packages.props and remove them from .csproj.
Creating projects without specifying the frameworkAlways specify --framework when the template supports multiple TFMs to avoid defaulting to an older version.
Not adding the project to the solutionAfter creation, run dotnet sln add to include the project in the solution.
Not verifying the project buildsAlways run dotnet build after creation to catch missing dependencies or parameter issues early.

More Info

Frequently asked questions

What to verify before installation and use

What does the template-instantiation source document cover?

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.

How do I install template-instantiation?

The source record exposes this install command: npx skills add https://github.com/dotnet/skills --skill "plugins/dotnet-template-engine/skills/template-instantiation". Inspect the command and pinned source before running it.

Which permission-related actions were detected?

Static rules flagged write-files in the source; the page lists the matching lines and excerpts.

Alternatives

Compare before choosing

Computed 10024,975

alirezarezvani/claude-skills

app-store-optimization

App Store Optimization (ASO) toolkit for researching keywords, analyzing competitor rankings, generating metadata suggestions, and improving app visibility on Apple App Store and Google Play Store. Use when the user asks about ASO, app store rankings, app metadata, app titles and descriptions, app store listings, app visibility, or mobile app marketing on iOS or Android. Supports keyword research and scoring, competitor keyword analysis, metadata optimization, A/B test planning, launch checklist

Computed 9965

brucesongs/kali-claw

insecure-design

Insecure Design (OWASP A06:2025) focuses on security flaws in system architecture and design phases, rather than code implementation-level bugs.

Computed 9916

NintendaDev/unikit-ai

unikit-docs

Generate and maintain the project's TECHNICAL documentation from its codebase — scans the project structure, tech stack, and module boundaries, then writes a lean README landing page plus detailed topic pages (architecture, modules, setup, build, APIs), only the docs that are relevant. Use whenever the user wants to create, update, or validate documentation of the CODE or the project itself, e.g. "generate documentation", "create docs", "write the README", "update the project docs", "document th

Computed 9834,478

K-Dense-AI/scientific-agent-skills

dask

Distributed computing for larger-than-RAM pandas/NumPy workflows. Use when you need to scale existing pandas/NumPy code beyond memory or across clusters. Best for parallel file processing, distributed ML, integration with existing pandas code. For out-of-core analytics on single machine use vaex; for in-memory speed use polars.