C# and .NET Developer
Jeffallan/claude-skills
Guides C# work on .NET 8+: ASP.NET Core APIs, Entity Framework Core data access, Blazor apps and CQRS with MediatR, following a five-step build workflow.
Generate or scaffold ASP.NET Core code — Razor Pages, Blazor components, MVC controllers, views, and Minimal API endpoints — without using ASP.NET Core CLI scaffolding/code-generation tools.
$ npx skills add dotnet/skills --skill create-datadriven-aspnetcore -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install dotnet/skills create-datadriven-aspnetcore --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/dotnet/skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/dotnet-data/skills/create-datadriven-aspnetcore .claude/skills/create-datadriven-aspnetcore && rm -rf skills-srcUse ~/.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/
Install the "create-datadriven-aspnetcore" agent skill from https://github.com/dotnet/skills/tree/main/plugins/dotnet-data/skills/create-datadriven-aspnetcore into .claude/skills/create-datadriven-aspnetcore/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-datadriven-aspnetcore", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/dotnet/skills/tree/main/plugins/dotnet-data/skills/create-datadriven-aspnetcoreType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add dotnet/skills --skill create-datadriven-aspnetcore -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install dotnet/skills create-datadriven-aspnetcore --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dotnet/skills.git skills-src && mkdir -p .agents/skills && cp -r skills-src/plugins/dotnet-data/skills/create-datadriven-aspnetcore .agents/skills/create-datadriven-aspnetcore && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "create-datadriven-aspnetcore" agent skill from https://github.com/dotnet/skills/tree/main/plugins/dotnet-data/skills/create-datadriven-aspnetcore into .agents/skills/create-datadriven-aspnetcore/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-datadriven-aspnetcore", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add dotnet/skills --skill create-datadriven-aspnetcore -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install dotnet/skills create-datadriven-aspnetcore --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dotnet/skills.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/plugins/dotnet-data/skills/create-datadriven-aspnetcore .cursor/skills/create-datadriven-aspnetcore && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "create-datadriven-aspnetcore" agent skill from https://github.com/dotnet/skills/tree/main/plugins/dotnet-data/skills/create-datadriven-aspnetcore into .cursor/skills/create-datadriven-aspnetcore/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-datadriven-aspnetcore", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/dotnet/skills.git --path plugins/dotnet-data/skills/create-datadriven-aspnetcore--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add dotnet/skills --skill create-datadriven-aspnetcore -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install dotnet/skills create-datadriven-aspnetcore --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dotnet/skills.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/plugins/dotnet-data/skills/create-datadriven-aspnetcore .gemini/skills/create-datadriven-aspnetcore && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "create-datadriven-aspnetcore" agent skill from https://github.com/dotnet/skills/tree/main/plugins/dotnet-data/skills/create-datadriven-aspnetcore into .gemini/skills/create-datadriven-aspnetcore/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-datadriven-aspnetcore", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install dotnet/skills create-datadriven-aspnetcoreInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add dotnet/skills --skill create-datadriven-aspnetcore -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/dotnet/skills.git skills-src && mkdir -p .github/skills && cp -r skills-src/plugins/dotnet-data/skills/create-datadriven-aspnetcore .github/skills/create-datadriven-aspnetcore && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "create-datadriven-aspnetcore" agent skill from https://github.com/dotnet/skills/tree/main/plugins/dotnet-data/skills/create-datadriven-aspnetcore into .github/skills/create-datadriven-aspnetcore/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-datadriven-aspnetcore", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add dotnet/skills --skill create-datadriven-aspnetcore -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install dotnet/skills create-datadriven-aspnetcore --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/dotnet/skills.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/plugins/dotnet-data/skills/create-datadriven-aspnetcore .opencode/skills/create-datadriven-aspnetcore && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "create-datadriven-aspnetcore" agent skill from https://github.com/dotnet/skills/tree/main/plugins/dotnet-data/skills/create-datadriven-aspnetcore into .opencode/skills/create-datadriven-aspnetcore/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "create-datadriven-aspnetcore", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
create-datadriven-aspnetcoreGenerate or scaffold ASP.NET Core code — Razor Pages, Blazor components, MVC controllers, views, and Minimal API endpoints — without using ASP.NET Core CLI scaffolding/code-generation tools.
Create Datadriven Aspnetcore is an agent skill from dotnet/skills, published by the product's own GitHub organization. Generate or scaffold ASP.NET Core code — Razor Pages, Blazor components, MVC controllers, views, and Minimal API endpoints — without using ASP.NET Core CLI scaffolding/code-generation tools. Use when (1) adding CRUD pages, views, or API endpoints backed by Entity Framework (EF Core) and a database, (2) generating code to create, read, update, and delete data using a DbContext, (3) scaffolding UI components that match the project's existing CSS framework and coding patterns, or (4) creating data-driven forms…
Its SKILL.md is about 3.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Development, covering Project scaffolding, REST APIs and ORMs and data access. It works with ASP.NET Core, Blazor and .NET. The repository describes itself as: Repository for skills to assist AI coding agents with .NET and C. The licence is MIT.
7 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 8d670fa. It shows what the files ask for, not the result of running them.
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.
Shell commands in SKILL.md call:
dotnetFrom the folder's file list and the shell code blocks in SKILL.md.
Links to these hosts (documentation or services it may open):
learn.microsoft.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Create Datadriven Aspnetcore loads about 3.2k tokens when it runs. Until then it costs about 166 tokens; SKILL.md has 1,402 words of instructions outside code blocks.
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.
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.
The full file from dotnet/skills at commit 8d670fa, republished under its MIT licence (© dotnet). 1,402 words, ~3,174 tokens.
.claude/skills/create-datadriven-aspnetcore/SKILL.md (or your agent's skills folder).Generate ASP.NET Core scaffolded code — controllers, views, Razor Pages, Blazor components, Minimal API endpoints. The generated code matches the project's existing CSS framework, layout conventions, and coding patterns. No CLI-based scaffolding/code-generation tools are used; standard dotnet CLI commands for build, restore, and migrations are still expected.
| Input | Required | Description |
|---|---|---|
| Scaffolding request | Yes | Natural-language description of what to scaffold (see format below) |
| Project file path | Yes | Full path to the target .csproj file |
| Solution root path | Recommended | Path to the solution root for multi-project solutions |
The scaffolding request should be a natural-language description of what to scaffold. The request must include the target project path and enough detail for the agent to generate the correct code. Examples:
Razor Pages with EF:
Scaffold Razor Pages with CRUD for the `<ModelName>` model (from `<Namespace>`) in project `<path-to-csproj>`.
Create a new DbContext `<DbContextName>` using <database-provider>.
Also scaffold CRUD for any entity that `<ModelName>` depends on via required foreign keys, so parent entities can be created first.Blazor CRUD components:
Scaffold Blazor CRUD components for the `<ModelName>` model (from `<Namespace>`) in project `<path-to-csproj>`.
Create a new DbContext `<DbContextName>` using <database-provider>.Minimal API endpoints:
Scaffold Minimal API endpoints for the `<ModelName>` model (from `<Namespace>`) in project `<path-to-csproj>`.
Name the endpoints class `<EndpointsClassName>`.
Create a new DbContext `<DbContextName>` using <database-provider>.
Enable OpenAPI support.MVC Controller with views:
Scaffold an MVC controller with views and Entity Framework for the `<ModelName>` model (from `<Namespace>`) in project `<path-to-csproj>`.
Name the controller `<ControllerName>`.
Use existing DbContext `<DbContextName>`.
Generate views.Empty items (no EF):
Scaffold an empty Razor Page named `<PageName>` in project `<path-to-csproj>`.Parse the scaffolding request to identify:
Complete the applicable checklist in order. Do not stop after creating only the requested child resource when a required foreign key makes a parent resource necessary.
All EF scaffolders
Program.cs, target model, validation attributes, navigation properties, and foreign keys before editing.DbContext; otherwise create the requested context. Add only the required provider package and register it with AddDbContext using the requested provider and connection string. You will need to add Microsoft.EntityFrameworkCore.Design (PrivateAssets="all") when migrations are needed and it's missing.EnsureCreated or seed the database in Program.cs.MVC, Razor Pages, and Blazor
Minimal APIs
GET (list and by ID), POST, PUT, and DELETE endpoints for both child and required-parent resources.WithOpenApi when OpenAPI is enabled..http file with every CRUD request. Create parent records first, capture or clearly reuse their returned IDs in child requests, and run the requests in dependency order.Skip this step for API controllers and Minimal API endpoints.
_Layout.cshtml, MainLayout.razor, or equivalent)site.css, app.css, Tailwind config, etc.)All generated files MUST match the existing UI framework, CSS classes, and conventions. If Bootstrap is used, generate Bootstrap markup. If Tailwind is used, generate Tailwind markup.
Skip this step for non-Blazor scaffolders.
[SupplyParameterFromForm] properties MUST use = new() (not null!) — prevents EditForm crash on initial GETProgram.cs must chain .AddInteractiveServerComponents() on AddRazorComponents() and .AddInteractiveServerRenderMode() on MapRazorComponents<App>(). only add interactive server services/render mode when the generated components actually use @rendermode InteractiveServer (or the project already does)..AddInteractiveWebAssemblyRenderMode())Generate all code files manually. Follow these constraints:
RuntimeCompilation, or other convenience packages)When generating Minimal API or MVC API endpoints with OpenAPI support enabled, add rich metadata to every endpoint so the OpenAPI document is descriptive and useful:
.WithName("GetTodoItems") — unique operation ID for each endpoint.WithTags("TodoItems") — group endpoints by resource.WithDescription("Returns all todo items") — human-readable summary.Produces<List<TodoItem>>(StatusCodes.Status200OK) — document success response type.Produces(StatusCodes.Status404NotFound) — document error responses.ProducesValidationProblem() — for endpoints that validate input.WithOpenApi() — opt the endpoint into OpenAPI generation (if not already globally enabled)Example for a Minimal API GET endpoint:
group.MapGet("/", async (TodoDbContext db) =>
await db.TodoItems.ToListAsync())
.WithName("GetAllTodoItems")
.WithTags("TodoItems")
.WithDescription("Returns all todo items")
.Produces<List<TodoItem>>(StatusCodes.Status200OK);Skip this step if the scaffolding request does not involve Entity Framework.
Program.cs — always use migrationsdotnet ef: prefer dotnet tool restore from a local tool manifest. Only install globally if no manifest exists.http file MUST create parent entities before child entities. Use FK values consistent with creation orderSkip this step for non-API scaffolders.
.http file named {ModelName}.http in the project directory. If a file with that name exists, append a numeric suffix (Product2.http, Product3.http) until uniquedotnet restore && dotnet build from the project directorydotnet ef migrations add InitialCreatedotnet ef database updateProperties/launchSettings.json — if a profile named https exists, use dotnet run --launch-profile https.http request one at a time in dependency orderdotnet build succeeds with zero errors.http requests return 2xx status codes (if API scaffolder)RuntimeCompilation, etc.)[SupplyParameterFromForm] properties use = new() (if Blazor scaffolder)| Pitfall | Solution |
|---|---|
| Generated UI doesn't match project's CSS framework | Always inspect layout and CSS files before generating code (Step 2) |
Blazor EditForm crashes on initial GET | Use = new() not null! for [SupplyParameterFromForm] properties |
| EF migration fails due to missing parent entity CRUD | Scaffold CRUD for FK-dependent entities when request mentions foreign keys |
.http file has wrong FK values | Order requests by dependency; use values consistent with creation order |
dotnet ef not found | Try dotnet tool restore first; only install globally as fallback |
| Added unnecessary packages | Only add packages explicitly required for the scaffolded functionality |
| Generated code uses different naming conventions | Inspect existing project files to match naming patterns before generating |
© dotnet, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in plugins/dotnet-data/skills/create-datadriven-aspnetcore of dotnet/skills.
Open the folder on GitHubat commit 8d670fa
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.
Create Datadriven Aspnetcore 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Create Datadriven Aspnetcore this skilldotnet/skills | 5.6k | 1 repos | ~3.2k | Automated safety check: Pass | MIT | |
| C# and .NET DeveloperJeffallan/claude-skills | 12k | — | ~1.3k | Automated safety check: Pass | MIT | |
| Using Dotnetnovotnyllc/dotnet-artisan | 233 | — | ~2.3k | Automated safety check: Warn | MIT | |
| Aspnet Coremanagedcode/dotnet-skills | 486 | — | ~2.1k | Automated safety check: Pass | MIT | |
| Writing Csharp Codemicrosoft-foundry/foundry-agent-webapp | 127 | — | ~3.2k | Automated safety check: Notes | MIT | |
| Chrome Devtools MCPmanagedcode/dotnet-skills | 486 | — | ~2.2k | Automated safety check: Pass | MIT |
Jeffallan/claude-skills
Guides C# work on .NET 8+: ASP.NET Core APIs, Entity Framework Core data access, Blazor apps and CQRS with MediatR, following a five-step build workflow.
novotnyllc/dotnet-artisan
Detects .NET intent for any C, ASP.NET Core, EF Core, Blazor, MAUI, Uno Platform, WPF, WinUI, SignalR, gRPC, xUnit, NuGet, or MSBuild request from prompt keywords and repository signals (.sln…
managedcode/dotnet-skills
Build, debug, modernize, or review ASP.NET Core applications with correct hosting, middleware, security, configuration, logging, and deployment patterns on current .NET.
microsoft-foundry/foundry-agent-webapp
Provides C and ASP.NET Core coding standards for this repository.
managedcode/dotnet-skills
Use Chrome DevTools MCP from .NET agents and .NET-focused repos to inspect, debug, and automate Chrome through an MCP client.
fanslead/ReverseProxy.Store
Build, review, refactor, or architect ASP.NET Core web applications using current official guidance for .NET web development.
dotnet/skills
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.
dotnet/skills
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.
dotnet/skills
Scans C# and .NET code for about 50 performance anti-patterns and reports prioritized findings with concrete fixes, at a scan depth you choose.
dotnet/skills
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.
dotnet/skills
Activate this skill when BenchmarkDotNet (BDN) is involved in the task — creating, running, configuring, or reviewing BDN benchmarks.
dotnet/skills
Makes .NET projects compatible with Native AOT and trimming by resolving IL trim and AOT analyzer warnings through annotations rather than suppressions.
Works with
Categories
Generate or scaffold ASP.NET Core code — Razor Pages, Blazor components, MVC controllers, views, and Minimal API endpoints — without using ASP.NET Core CLI scaffolding/code-generation tools. Create Datadriven Aspnetcore is an agent skill from dotnet/skills, published by the product's own GitHub organization.NET Core CLI scaffolding/code-generation tools.
Create Datadriven Aspnetcore fits situations like: adding CRUD pages; API endpoints backed by Entity Framework (EF Core) and a database; generating code to create; delete data using a DbContext.
Run `npx skills add dotnet/skills --skill create-datadriven-aspnetcore -a claude-code`. Or copy the skill folder (plugins/dotnet-data/skills/create-datadriven-aspnetcore in dotnet/skills) into .claude/skills/create-datadriven-aspnetcore in your project. Claude Code loads it when a task matches its description.
Run `npx skills add dotnet/skills --skill create-datadriven-aspnetcore -a codex`. Or copy the skill folder (plugins/dotnet-data/skills/create-datadriven-aspnetcore in dotnet/skills) into .agents/skills/create-datadriven-aspnetcore in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add dotnet/skills --skill create-datadriven-aspnetcore -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/create-datadriven-aspnetcore, .gemini/skills/create-datadriven-aspnetcore, .github/skills/create-datadriven-aspnetcore and .opencode/skills/create-datadriven-aspnetcore in your project.
Going by SKILL.md and its folder, Create Datadriven Aspnetcore needs the command-line tools its instructions call (dotnet).
SKILL.md names 1 domain. As links in the text: learn.microsoft.com. This is read from the text; nothing was executed.
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.
Create Datadriven Aspnetcore is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.2k tokens (SKILL.md is roughly 13k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Create Datadriven Aspnetcore: C# and .NET Developer (Jeffallan/claude-skills, 12k stars), Using Dotnet (novotnyllc/dotnet-artisan, 233 stars), Aspnet Core (managedcode/dotnet-skills, 486 stars) and Writing Csharp Code (microsoft-foundry/foundry-agent-webapp, 127 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
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.