Dotnet Webapi
dotnet/skills
Guides creation and modification of ASP.NET Core Web API endpoints with correct HTTP semantics, OpenAPI metadata, and error handling.
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…
The automated check flagged lines worth reading first. See the safety section below.
$ npx skills add novotnyllc/dotnet-artisan --skill using-dotnet -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install novotnyllc/dotnet-artisan using-dotnet --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/novotnyllc/dotnet-artisan.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/dotnet-artisan/skills/using-dotnet .claude/skills/using-dotnet && 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 "using-dotnet" agent skill from https://github.com/novotnyllc/dotnet-artisan/tree/main/plugins/dotnet-artisan/skills/using-dotnet into .claude/skills/using-dotnet/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "using-dotnet", 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/novotnyllc/dotnet-artisan/tree/main/plugins/dotnet-artisan/skills/using-dotnetType 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 novotnyllc/dotnet-artisan --skill using-dotnet -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install novotnyllc/dotnet-artisan using-dotnet --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/novotnyllc/dotnet-artisan.git skills-src && mkdir -p .agents/skills && cp -r skills-src/plugins/dotnet-artisan/skills/using-dotnet .agents/skills/using-dotnet && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "using-dotnet" agent skill from https://github.com/novotnyllc/dotnet-artisan/tree/main/plugins/dotnet-artisan/skills/using-dotnet into .agents/skills/using-dotnet/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "using-dotnet", 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 novotnyllc/dotnet-artisan --skill using-dotnet -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install novotnyllc/dotnet-artisan using-dotnet --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/novotnyllc/dotnet-artisan.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/plugins/dotnet-artisan/skills/using-dotnet .cursor/skills/using-dotnet && 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 "using-dotnet" agent skill from https://github.com/novotnyllc/dotnet-artisan/tree/main/plugins/dotnet-artisan/skills/using-dotnet into .cursor/skills/using-dotnet/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "using-dotnet", 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/novotnyllc/dotnet-artisan.git --path plugins/dotnet-artisan/skills/using-dotnet--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 novotnyllc/dotnet-artisan --skill using-dotnet -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install novotnyllc/dotnet-artisan using-dotnet --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/novotnyllc/dotnet-artisan.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/plugins/dotnet-artisan/skills/using-dotnet .gemini/skills/using-dotnet && 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 "using-dotnet" agent skill from https://github.com/novotnyllc/dotnet-artisan/tree/main/plugins/dotnet-artisan/skills/using-dotnet into .gemini/skills/using-dotnet/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "using-dotnet", 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 novotnyllc/dotnet-artisan using-dotnetInstalls 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 novotnyllc/dotnet-artisan --skill using-dotnet -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/novotnyllc/dotnet-artisan.git skills-src && mkdir -p .github/skills && cp -r skills-src/plugins/dotnet-artisan/skills/using-dotnet .github/skills/using-dotnet && 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 "using-dotnet" agent skill from https://github.com/novotnyllc/dotnet-artisan/tree/main/plugins/dotnet-artisan/skills/using-dotnet into .github/skills/using-dotnet/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "using-dotnet", 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 novotnyllc/dotnet-artisan --skill using-dotnet -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install novotnyllc/dotnet-artisan using-dotnet --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/novotnyllc/dotnet-artisan.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/plugins/dotnet-artisan/skills/using-dotnet .opencode/skills/using-dotnet && 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 "using-dotnet" agent skill from https://github.com/novotnyllc/dotnet-artisan/tree/main/plugins/dotnet-artisan/skills/using-dotnet into .opencode/skills/using-dotnet/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "using-dotnet", 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.
using-dotnetDetects .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…
Using Dotnet is an agent skill from 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, .csproj, global.json, .cs files). First skill to invoke for all .NET work — loads version-specific coding standards and routes to domain skills via dotnet-advisor before any planning or implementation. Do not use for clearly non-.NET tasks (Python, JavaScript, Go, Rust, Java).
Its SKILL.md is about 2.3k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files (for example `agents/openai.yaml`).
It sits in Backend & APIs, covering Code quality, gRPC and Protobuf and Unit testing. It works with .NET, C#, gRPC and ASP.NET Core. The repository describes itself as: Comprehensive .NET development skills for modern C and .NET. The licence is MIT.
6 steps, taken from the first numbered list in SKILL.md.
Read from SKILL.md and the folder at commit 3db3ae6. 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:
dotnetcurlbashFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
dot.netFrom 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.
Using Dotnet loads about 2.3k tokens when it runs. Until then it costs about 122 tokens; SKILL.md has 1,174 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 patterns that need a careful read before installing.
ript reference, or use this one-liner: `curl -sSL https://dot.net/v1/dotnet-install.sh | bash && export DOTNET_ROOT="$HOAutomated 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 novotnyllc/dotnet-artisan at commit 3db3ae6, republished under its MIT licence (© novotnyllc). 1,174 words, ~2,325 tokens.
.claude/skills/using-dotnet/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub..sln, .slnx, .csproj, global.json, .cs).dotnet-advisor and baseline loading order.dotnet-csharpdotnet-api, dotnet-ui, dotnet-testing, dotnet-devops, dotnet-tooling, dotnet-debuggingdotnet-security-reviewer, dotnet-performance-analyst, dotnet-testing-specialistWrite the simplest code that solves the problem. Agents consistently over-engineer — more abstractions, more layers, more indirection than the task warrants.
if/else over a chain of ternaries. A foreach over a hard-to-read LINQ expression. A flat method over nested callbacks. Clear beats compact. This does NOT mean avoiding modern C# — use latest language features ([..4], list patterns, primary constructors, raw string literals, collection expressions). Modern syntax is concise AND readable. The target is convoluted logic, not concise syntax.IOrderService for one OrderService. Don't extract a helper for something that happens once. Three similar lines of code are fine — extract only when a real pattern emerges across 3+ call sites.DbContext is your Unit of Work. DbSet<T> is your repository. .NET has TimeProvider, ILogger<T>, IHttpClientFactory, System.Text.Json. Use them directly — don't wrap, don't abstract, don't add a NuGet package for something the framework already does.The right amount of complexity is the minimum needed to solve the current problem correctly.
.NET skills contain version-specific guidance (net8.0 vs net9.0 vs net10.0), coding standards, and framework-specific patterns that the model doesn't have in its training data. Skipping routing means the model confidently produces code using deprecated APIs, misses framework-specific patterns, or gives generic advice that ignores project context.
Routing before action ensures:
The cost of routing is a few skill invocations. The cost of skipping is rework, stale advice, or subtle bugs.
When a request likely involves .NET or C#, follow this sequence before any other action:
.sln, .slnx, .csproj, global.json, .cs files). If either is present, continue.dotnet --version fails and no DOTNET_ROOT is set, install the SDK before proceeding. This takes under a minute with no privileges required. See dotnet-tooling's references/dotnet-sdk-install.md for the full install script reference, or use this one-liner: curl -sSL https://dot.net/v1/dotnet-install.sh | bash && export DOTNET_ROOT="$HOME/.dotnet" && export PATH="$PATH:$DOTNET_ROOT:$DOTNET_ROOT/tools". Do not treat a missing SDK as a blocker — install it and continue.dotnet-advisor — see "Loading another skill" below for how. It routes the request to the correct domain skills and loads coding standards.dotnet-csharp baseline the same way, then the domain skill(s) the advisor selects.name is descriptive text, not an invocation. Codex collects explicit
skills from the ORIGINAL turn input before a router skill is injected, and does
not rescan injected text for nested mentions — so naming a skill inside this
file loads nothing on its own. Say what you actually did; never report a skill
as invoked because you named it.
Load one of these two ways, in order:
Skill tool with the qualified name, e.g. dotnet-artisan:dotnet-api. This
preserves the skill's metadata, policy and dependencies, so prefer it
whenever it is available.../<skill-name>/SKILL.md relative to
this file. Read it and follow it as if it had been injected.The relative path is deliberate: it resolves without a catalog lookup, so it still works when the skill is installed and enabled but sits beyond the truncated model-visible catalog — the case where a name-based search silently finds nothing.
If neither path works, say the skill could not be loaded and continue without it. Do not proceed as though its guidance were in context.
For quick scripts, utilities, prototypes, and single-file tools, prefer .NET 10 file-based apps (dotnet run script.cs) over creating a full project with .csproj. File-based apps:
.cs file — no project file, no solution, no boilerplate#:package directives#:sdk Microsoft.NET.Sdk.Web#!/usr/bin/env dotnet)When the user asks to "write a script", "make a quick tool", "create a utility", or any small single-purpose program, default to a file-based app unless the task clearly needs multiple source files or test projects. See dotnet-api references/file-based-apps.md for the full directive and CLI reference.
// Example: a file-based ASP.NET Core API
#:sdk Microsoft.NET.Sdk.Web
var app = WebApplication.Create(args);
app.MapGet("/", () => "Hello from a single .cs file!");
app.Run();// Example: a file-based CLI tool with a NuGet package
#:package Spectre.Console
using Spectre.Console;
AnsiConsole.MarkupLine("[green]Hello[/] from a file-based app!");Routing applies even for "simple" questions and clarification requests. The skill loading is lightweight and ensures consistent quality.
When multiple skills could apply, use this order:
dotnet-advisor.dotnet-csharp for any code path.dotnet-api, dotnet-ui, dotnet-testing, dotnet-devops, dotnet-tooling, dotnet-debugging.Rigid (must follow exactly): this skill, dotnet-advisor, and baseline-first ordering.
Flexible (adapt to context): Domain skills and their companion references.
User instructions define WHAT to do. This process defines HOW to route and load skills before execution.
© novotnyllc, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 1 other file in plugins/dotnet-artisan/skills/using-dotnet of novotnyllc/dotnet-artisan.
Open the folder on GitHubat commit 3db3ae6
Using Dotnet 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 |
|---|---|---|---|---|---|---|
| Using Dotnet this skillnovotnyllc/dotnet-artisan | 233 | — | ~2.3k | Automated safety check: Warn | MIT | |
| Dotnet Webapidotnet/skills | 5.6k | 2 repos | ~5.5k | Automated safety check: Pass | MIT | |
| Aspnet Corefanslead/ReverseProxy.Store | 163 | 2 repos | ~1.4k | Automated safety check: Pass | Apache-2.0 | |
| C# and .NET DeveloperJeffallan/claude-skills | 12k | — | ~1.3k | Automated safety check: Pass | MIT | |
| Sentry Dotnet SDKgetsentry/sentry-for-ai | 268 | — | ~5.8k | Automated safety check: Pass | Apache-2.0 | |
| Writing Csharp Codemicrosoft-foundry/foundry-agent-webapp | 127 | — | ~3.2k | Automated safety check: Notes | MIT |
dotnet/skills
Guides creation and modification of ASP.NET Core Web API endpoints with correct HTTP semantics, OpenAPI metadata, and error handling.
fanslead/ReverseProxy.Store
Build, review, refactor, or architect ASP.NET Core web applications using current official guidance for .NET web development.
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.
getsentry/sentry-for-ai
Full Sentry SDK setup for .NET. An agent skill from getsentry/sentry-for-ai.
microsoft-foundry/foundry-agent-webapp
Provides C and ASP.NET Core coding standards for this repository.
managedcode/dotnet-skills
Build or review gRPC services and clients in .NET. An agent skill from managedcode/dotnet-skills.
novotnyllc/dotnet-artisan
Debugs Windows and Linux/macOS applications (native, .NET/CLR, mixed-mode) with WinDbg MCP (crash dumps, !analyze, !syncblk, !dlk, !runaway, !dumpheap, !gcroot, BSOD), dotnet-dump, lldb with SOS…
novotnyllc/dotnet-artisan
Manages .NET SDK installation (dotnet-install, workloads), project setup (.slnx, Directory.Build.props, CPM), MSBuild authoring, build optimization, performance (Span, ArrayPool, stackalloc)…
novotnyllc/dotnet-artisan
Builds ASP.NET Core APIs, EF Core data access, gRPC, SignalR, and backend services with middleware, security (OAuth, JWT, OWASP), resilience, messaging, OpenAPI, .NET Aspire, Semantic Kernel…
novotnyllc/dotnet-artisan
Baseline C skill loaded for every .NET code path. An agent skill from novotnyllc/dotnet-artisan.
novotnyllc/dotnet-artisan
Configures .NET CI/CD pipelines (GitHub Actions with setup-dotnet, NuGet cache, reusable workflows; Azure DevOps with DotNetCoreCLI, templates, multi-stage), containerization (multi-stage…
novotnyllc/dotnet-artisan
Defines .NET test strategy and implementation patterns across xUnit v3 (Facts, Theories, fixtures, IAsyncLifetime), integration testing (WebApplicationFactory, Testcontainers), Aspire testing…
Categories
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…. Using Dotnet is an agent skill from novotnyllc/dotnet-artisan.cs files).
Using Dotnet fits situations like: clearly non-.NET tasks (Python; tasks that involve Code quality; tasks that involve gRPC and Protobuf.
Run `npx skills add novotnyllc/dotnet-artisan --skill using-dotnet -a claude-code`. Or copy the skill folder (plugins/dotnet-artisan/skills/using-dotnet in novotnyllc/dotnet-artisan) into .claude/skills/using-dotnet in your project. Claude Code loads it when a task matches its description.
Run `npx skills add novotnyllc/dotnet-artisan --skill using-dotnet -a codex`. Or copy the skill folder (plugins/dotnet-artisan/skills/using-dotnet in novotnyllc/dotnet-artisan) into .agents/skills/using-dotnet 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 novotnyllc/dotnet-artisan --skill using-dotnet -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/using-dotnet, .gemini/skills/using-dotnet, .github/skills/using-dotnet and .opencode/skills/using-dotnet in your project.
Going by SKILL.md and its folder, Using Dotnet needs the command-line tools its instructions call (dotnet, curl and bash).
SKILL.md names 1 domain. In commands or code: dot.net; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.
Our automated static check of SKILL.md flagged 1 warning(s): pipes a downloaded script straight into a shell. Read the flagged lines before installing; the check is not a guarantee either way.
Using Dotnet is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.3k tokens (SKILL.md is roughly 9.3k 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 Using Dotnet: Dotnet Webapi (dotnet/skills, 5.6k stars), Aspnet Core (fanslead/ReverseProxy.Store, 163 stars), C# and .NET Developer (Jeffallan/claude-skills, 12k stars) and Sentry Dotnet SDK (getsentry/sentry-for-ai, 268 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
novotnyllc (a GitHub organization) maintains it in novotnyllc/dotnet-artisan, which has 233 GitHub stars. The repository holds 9 skills in this directory. The repository was last updated on August 18, 2026.
Source: novotnyllc/dotnet-artisan on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.