
Template Instantiation
- 19 installs
- 466 repo stars
- Updated July 25, 2026
- managedcode/dotnet-skills
Helps with ai & agent building tasks.
About
template-instantiation is a Claude Code skill for ai & agent building. It helps solo builders move faster with AI-assisted coding.
- template-instantiation
- AI & Agent Building
- AI-coding skill
Template Instantiation by the numbers
- 19 all-time installs (skills.sh)
- +1 installs in the week ending Aug 2, 2026 (Skillselion tracking)
- Ranked #10,571 of 16,546 AI & Agent Building skills by installs in the Skillselion catalog
- Data as of Aug 3, 2026 (Skillselion catalog sync)
npx skills add https://github.com/managedcode/dotnet-skills --skill template-instantiationAdd your badge
Show developers this skill is listed on Skillselion. Paste this into your README.
| Installs | 19 |
|---|---|
| repo stars | ★ 466 |
| Last updated | July 25, 2026 |
| Repository | managedcode/dotnet-skills ↗ |
What it does
Helps with ai & agent building tasks.
Files
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.
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 or comparing templates — route to
template-discoveryskill - User wants to author a custom template — route to
template-authoringskill - User wants to add packages to an existing project — use
dotnet add packagedirectly
Inputs
| Input | Required | Description |
|---|---|---|
| Template name or intent | Yes | Template short name (e.g., webapi) or natural-language description |
| Project name | Yes | Name for the created project |
| Output path | Recommended | Directory where the project should be created |
| Parameters | No | Template-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.
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
.csprojfiles - Is there a
global.jsonpinning 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-runStep 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 IndividualCommon parameter combinations
| Template | Parameters | Example |
|---|---|---|
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), --auth | dotnet 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 --outdatedand 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.jsonendpoint 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.TestsStep 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.0Step 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,
.csprojhas no version attributes andDirectory.Packages.propshas 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
| Pitfall | Solution |
|---|---|
| Not checking for CPM before creating a project | If 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 framework | Always specify --framework when the template supports multiple TFMs to avoid defaulting to an older version. |
| Not adding the project to the solution | After creation, run dotnet sln add to include the project in the solution. |
| Not verifying the project builds | Always run dotnet build after creation to catch missing dependencies or parameter issues early. |
More Info
- Central Package Management — CPM documentation
- dotnet new — CLI reference
{
"version": "0.1.0",
"category": "Core",
"compatibility": "Requires a .NET repository using dotnet new templates or template authoring workflows."
}