Comprehensive .NET development skills for modern C#, ASP.NET, MAUI, Blazor, and cloud-native applications
> /plugin marketplace add novotnyllc/dotnet-artisan> /plugin install dotnet-artisan@dotnet-artisan
Repo: novotnyllc/dotnet-artisan
What's inside
Comprehensive .NET development skills for modern C#, ASP.NET, MAUI, Blazor, and cloud-native applications
dotnet-artisan provides 9 skills (2 routing + 7 domain) and 14 specialist agents for .NET development. It is compatible with Claude Code, GitHub Copilot CLI, and OpenAI Codex. The installable plugin lives at plugins/dotnet-artisan. Claude and Copilot consume the Claude plugin manifest there through the root marketplace, while Codex discovers the same plugin through the shared Claire Novotny LLC marketplace and plugins/dotnet-artisan/.codex-plugin/plugin.json. Specialist agents/*.md are currently used by Claude/Copilot flows; Codex routes through the skills/* surface.
The plugin covers the full breadth of the .NET ecosystem:
From within Claude Code, run:
/plugin marketplace add novotnyllc/dotnet-artisan
/plugin install dotnet-artisan@dotnet-artisan
Once installed, Claude Code automatically loads relevant skills based on your questions about .NET development.
OpenCode supports Claude Code plugins. Install with Claude Code first using:
/plugin marketplace add novotnyllc/dotnet-artisan
/plugin install dotnet-artisan@dotnet-artisan
Then set this in ~/.config/opencode/oh-my-opencode.json:
{
"claude_code": {
"plugins": true
}
}
Install as a Copilot plugin:
copilot plugin marketplace add novotnyllc/dotnet-artisan
copilot plugin install dotnet-artisan@dotnet-artisan
The plugin keeps a flat plugins/dotnet-artisan/skills/<skill-name>/ layout, which remains compatible with Copilot's one-level-deep skill scanning.
Codex installs from the shared Claire Novotny LLC plugin marketplace:
codex plugin marketplace add novotnyllc/marketplace
codex plugin add dotnet-artisan --marketplace novotnyllc
The shared marketplace entry resolves to plugins/dotnet-artisan, where the plugin's skills/, agents/, hooks.json, .mcp.json, .claude-plugin/, and .codex-plugin/ files live.
For direct skill-centric installs, use:
$skill-installer install https://github.com/novotnyllc/dotnet-artisan/tree/main/plugins/dotnet-artisan
You can also sync skill directories into ~/.codex/skills/.
Root agents/*.md specialist definitions are not yet first-class Codex skills, so Codex still routes through the broad skill layer.
| Provider | Primary surface | Status |
|---|---|---|
| Claude Code | .claude-plugin/marketplace.json -> plugins/dotnet-artisan/.claude-plugin/plugin.json + skills + agents + hooks + MCP | Supported |
| GitHub Copilot CLI | root marketplace -> plugins/dotnet-artisan/.claude-plugin/plugin.json + skills + agents | Supported |
| OpenAI Codex | novotnyllc/marketplace -> plugins/dotnet-artisan/.codex-plugin/plugin.json + skills | Supported |
Compatibility is validated in CI with structural smoke checks via scripts/run-agent-routing-smoke.py --provider claude,codex,copilot.
The plugin organizes 9 skills in a flat directory layout (plugins/dotnet-artisan/skills/<skill-name>/SKILL.md), backed by 159 reference files (~62K lines) of deep-dive guidance loaded on demand. Each skill follows the Agent Skills open standard with structured frontmatter and progressive disclosure โ SKILL.md routing tables point to references/*.md companion files that Claude reads only when relevant.
| Skill | Domain | Key Topics |
|---|---|---|
| using-dotnet | Gateway routing | Detects .NET intent, enforces skill invocation before planning |
| dotnet-advisor | Router/dispatcher | Routes queries to domain skills, loads coding standards as baseline |
| dotnet-csharp | C# language & runtime | Modern patterns, async/await, DI, config, source generators, LINQ, concurrency, SOLID |
| dotnet-api | ASP.NET Core & backend | Minimal APIs, EF Core, gRPC, SignalR, security (OWASP), messaging, Aspire, Semantic Kernel, architecture patterns |
| dotnet-ui | UI frameworks | Blazor, MAUI, Uno Platform, WPF, WinUI, WinForms, accessibility, localization |
| dotnet-testing | Testing & quality | xUnit, integration/E2E, Playwright, BenchmarkDotNet, snapshot testing, test strategy |
| dotnet-devops | CI/CD & operations | GitHub Actions, Azure DevOps, containers, NuGet, MSIX, observability, structured logging |
| dotnet-tooling | Build & developer tools | MSBuild, Native AOT, trimming, CLI apps, profiling, version detection, project setup |
| dotnet-debugging | Debugging | WinDbg debugging, memory analysis, dump file investigation |
The plugin includes 14 specialist agents that provide focused expertise in specific domains.
Provider note:
dotnet-advisor Codex fallback table to map specialist intents to skills/references.| Agent | Description |
|---|---|
| dotnet-architect | Analyzes project context, requirements, and constraints to recommend architecture approaches, framework choices, and design patterns |
| dotnet-csharp-concurrency-specialist | Debugs race conditions, deadlocks, thread safety issues, and synchronization problems in .NET code |
| dotnet-security-reviewer | Reviews .NET code for security vulnerabilities, OWASP compliance, secrets exposure, and cryptographic misuse |
| dotnet-blazor-specialist | Guides Blazor development across all hosting models (Server, WASM, Hybrid, Auto) including components, state, and auth |
| dotnet-uno-specialist | Builds cross-platform Uno Platform apps with Extensions ecosystem, MVUX patterns, Toolkit controls, and MCP integration |
| dotnet-maui-specialist | Builds .NET MAUI apps with platform-specific development, Xamarin migration, and Native AOT on iOS/Catalyst |
| dotnet-performance-analyst | Analyzes profiling data, benchmark results, GC behavior, and diagnoses performance bottlenecks |
| dotnet-benchmark-designer | Designs BenchmarkDotNet benchmarks, prevents measurement bias, and validates benchmark methodology |
| dotnet-docs-generator | Generates documentation including Mermaid diagrams, XML doc skeletons, and GitHub-native docs |
| dotnet-async-performance-specialist | Analyzes ValueTask correctness, ConfigureAwait decisions, async overhead, ThreadPool tuning |
| dotnet-aspnetcore-specialist | Guides middleware authoring, DI patterns, minimal API design, and request pipeline optimization |
| dotnet-testing-specialist | Designs test pyramids, unit vs integration vs E2E boundaries, test data management |
| dotnet-cloud-specialist | Guides .NET Aspire orchestration, AKS deployment, distributed tracing, infrastructure-as-code |
| dotnet-code-review-agent | Performs multi-dimensional code review across correctness, performance, security, and architecture |
graph TB
subgraph Plugin["dotnet-artisan Plugin"]
direction TB
MP[Marketplace indexes]
PJ[plugins/dotnet-artisan<br/>plugin manifests]
subgraph Agents["14 Specialist Agents"]
DA[dotnet-architect<br/>Central Router]
CSC[concurrency-specialist]
SR[security-reviewer]
BSA[blazor-specialist]
US[uno-specialist]
MS[maui-specialist]
PA[performance-analyst]
BD[benchmark-designer]
DG[docs-generator]
ASP[async-performance-specialist]
ASN[aspnetcore-specialist]
TS[testing-specialist]
CLS[cloud-specialist]
CR[code-review-agent]
end
subgraph Skills["9 Skills"]
UD[using-dotnet<br/>Gateway]
ADV[dotnet-advisor<br/>Router]
CS[dotnet-csharp<br/>C# Language]
API[dotnet-api<br/>ASP.NET/Backend]
UIS[dotnet-ui<br/>UI Frameworks]
TEST[dotnet-testing<br/>Testing/Quality]
DEVOPS[dotnet-devops<br/>CI/CD/Ops]
TOOL[dotnet-tooling<br/>Build/Tools]
DBG[dotnet-debugging<br/>Debugging]
end
subgraph Infra["Infrastructure"]
HK[hooks.json]
MCP[.mcp.json]
end
end
MP --> PJ
DA --> BSA
DA --> US
DA --> MS
DA --> CSC
DA --> SR
DA --> PA
DA --> BD
DA --> DG
DA --> ASP
DA --> ASN
DA --> TS
DA --> CS
DA --> CR
BSA --> UIS
US --> UIS
MS --> UIS
CSC --> CS
SR --> API
PA --> TOOL
BD --> TEST
DG --> TOOL
DA --> API
DA --> CS
UD --> ADV
ADV --> CS
ADV --> API
ADV --> UIS
ADV --> TEST
ADV --> DEVOPS
ADV --> TOOL
ADV --> DBG
sequenceDiagram
participant User
participant Claude as Claude Code
participant Gateway as using-dotnet<br/>(Gateway Skill)
participant Advisor as dotnet-advisor<br/>(Router Skill)
participant Domain as Domain Skill
participant Ref as references/*.md
User->>Claude: "How do I set up Blazor auth?"
Claude->>Gateway: Detect .NET intent
Gateway->>Advisor: Route to advisor
Advisor->>Advisor: Match query to domain skill
Advisor->>Domain: Load dotnet-ui
Domain->>Ref: Load blazor-auth.md
Ref-->>Claude: Structured guidance
Claude-->>User: Blazor auth setup<br/>with code examples
Ask about project architecture:
"I have a new .NET 9 web API project. What architecture pattern should I use for a medium-sized e-commerce backend?"
Claude Code loads dotnet-api (read references/architecture-patterns.md) and dotnet-tooling (read references/project-structure.md) to recommend a clean architecture approach with specific project layout, middleware pipeline, and dependency injection configuration.
Debug a concurrency issue:
"I'm getting intermittent failures in my background service that processes messages from a queue. Sometimes messages are processed twice."
The dotnet-csharp-concurrency-specialist agent activates, loading dotnet-csharp (read references/async-patterns.md and references/concurrency-patterns.md) to diagnose the race condition and recommend idempotency patterns.
Set up CI/CD:
"Help me create a GitHub Actions workflow that builds, tests, and publishes my NuGet package."
Claude Code loads dotnet-devops (read references/gha-patterns.md) to generate a complete workflow with proper versioning, test matrix, and NuGet push configuration.
This repo includes a CI-ready routing checker to verify that agents discover and use expected skills. Structural validators (validate-skills.sh, validate-marketplace.sh) run on every push and PR. CI also installs the current Codex and Claude CLIs, verifies the Codex plugin manifest, and installs the Claude plugin from the same checkout. Live routing checks run via ./test.sh as optional manual verification.
See docs/agent-routing-tests.md for details, workflow inputs, and environment variables.
See CONTRIBUTING-SKILLS.md for the skill authoring guide, or CONTRIBUTING.md for the general contribution workflow.
This project is licensed under the MIT License. See the LICENSE file for details.
.claude-plugin/
marketplace.json
.editorconfig
.gitattributes
.github/
workflows/
agent-live-routing.yml
auto-tag.yml
copilot-install-proof.yml
validate.yml
.gitignore
AGENTS.md
CHANGELOG.md
CLAUDE.md
CONTRIBUTING-SKILLS.md
CONTRIBUTING.md
docs/
agent-routing-tests.md
consolidation-map-8-skills.md
evidence/
copilot-cli-v0.0.412-skill-loading.md
hooks-and-mcp-guide.md
skill-content-migration-map.md
skill-routing-audit-baseline.md
skill-routing-final-summary.md
skill-routing-ownership-manifest.md
skill-routing-style-guide.md
skill-routing-sweep-api-security-testing-ci.md
skill-routing-sweep-core-arch.md
skill-routing-sweep-long-tail.md
skill-routing-sweep-ui-nativeaot-tui-multitarget.md
LICENSE
plugins/
dotnet-artisan/
.claude-plugin/
plugin.json
.codex-plugin/
plugin.json
.mcp.json
agents/
dotnet-architect.md
dotnet-aspnetcore-specialist.md
dotnet-async-performance-specialist.md
dotnet-benchmark-designer.md
dotnet-blazor-specialist.md
dotnet-cloud-specialist.md
dotnet-code-review-agent.md
dotnet-csharp-concurrency-specialist.md
dotnet-docs-generator.md
dotnet-maui-specialist.md
dotnet-performance-analyst.md
dotnet-security-reviewer.md
dotnet-testing-specialist.md
dotnet-uno-specialist.md
hooks.json
scripts/
hooks/
session-start-context.js
user-prompt-dotnet-reminder.js
skills/
dotnet-advisor/
agents/
openai.yaml
SKILL.md
dotnet-api/
agents/
openai.yaml
references/
agent-gotchas.md
api-docs.md
api-security.md
api-surface-validation.md
api-versioning.md
architecture-patterns.md
aspire-patterns.md
background-services.md
cryptography.md
data-access-strategy.md
efcore-architecture.md
efcore-patterns.md
file-based-apps.md
grpc.md
http-client.md
hybrid-cache.md
identity-setup.md
io-pipelines.md
library-api-compat.md
messaging-patterns.md
middleware-patterns.md
minimal-apis.md
office-documents.md
openapi.md
output-caching.md
realtime-communication.md
resilience.md
secrets-management.md
security-owasp.md
semantic-kernel.md
service-communication.md
yarp.md
SKILL.md
dotnet-csharp/
agents/
openai.yaml
references/
api-design.md
async-patterns.md
channels.md
code-smells.md
coding-standards.md
concurrency-patterns.md
configuration.md
dependency-injection.md
domain-modeling.md
dotnet-releases.md
editorconfig.md
file-io.md
globalization.md
input-validation.md
linq-optimization.md
modern-patterns.md
native-interop.md
nullable-reference-types.md
roslyn-analyzers.md
serialization.md
solid-principles.md
source-generators.md
type-design-performance.md
validation-patterns.md
wasm-interop.md
SKILL.md
dotnet-debugging/
agents/
openai.yaml
references/
access-mcp.md
capture-playbooks.md
common-patterns.md
dump-workflow.md
linux-debugging.md
live-attach.md
mcp-setup.md
report-template.md
sanity-check.md
scenario-command-packs.md
symbols.md
task-crash.md
task-hang.md
task-high-cpu.md
task-kernel.md
task-memory.md
task-unknown.md
SKILL.md
dotnet-devops/
agents/
openai.yaml
references/
add-ci.md
ado-build-test.md
ado-patterns.md
ado-publish.md
ado-unique.md
container-deployment.md
containers.md
gha-build-test.md
gha-deploy.md
gha-patterns.md
gha-publish.md
github-docs.md
github-releases.md
msix.md
nuget-authoring.md
observability.md
release-management.md
structured-logging.md
SKILL.md
dotnet-testing/
agents/
openai.yaml
references/
add-testing.md
aot-wasm.md
aspire-testing.md
benchmarkdotnet.md
ci-benchmarking.md
integration-testing.md
playwright.md
slopwatch.md
snapshot-testing.md
test-quality.md
testing-strategy.md
ui-testing-core.md
xunit.md
SKILL.md
dotnet-tooling/
agents/
openai.yaml
references/
add-analyzers.md
aot-architecture.md
artifacts-output.md
build-analysis.md
build-optimization.md
cli-architecture.md
cli-distribution.md
cli-release-pipeline.md
csharp-lsp.md
csproj-reading.md
documentation-strategy.md
dotnet-sdk-install.md
gc-memory.md
ilspy-decompile.md
mermaid-diagrams.md
modernize.md
msbuild-authoring.md
msbuild-tasks.md
multi-targeting.md
native-aot.md
performance-patterns.md
profiling.md
project-analysis.md
project-structure.md
scaffold-project.md
solution-navigation.md
spectre-console.md
system-commandline.md
terminal-gui.md
tool-management.md
trimming.md
version-detection.md
version-upgrade.md
vscode-debug.md
scripts/
scan-dotnet-targets.py
SKILL.md
dotnet-ui/
agents/
openai.yaml
references/
accessibility.md
blazor-auth.md
blazor-components.md
blazor-patterns.md
blazor-testing.md
localization.md
maui-aot.md
maui-development.md
maui-testing.md
platform-bindings.md
ui-chooser.md
uno-mcp.md
uno-platform.md
uno-targets.md
uno-testing.md
winforms-basics.md
winui-controls-styling.md
winui.md
wpf-migration.md
wpf-modern.md
SKILL.md
using-dotnet/
agents/
openai.yaml
SKILL.md
README.md
scripts/
_agent_frontmatter.py
_validate_skills.py
bump.sh
compare-agent-routing-baseline.py
generate-changelog.sh
routing-warnings-baseline.json
run-agent-routing-smoke.py
similarity-baseline.json
similarity-suppressions.json
skill-routing-report.py
validate-hooks.sh
validate-marketplace.sh
validate-root-marketplace.sh
validate-similarity.py
validate-skills.sh
test.sh
tests/
agent-routing/
cases.json
check-skills.cs
copilot-smoke/
baseline.json
cases.jsonl
fixture-plugin/
plugin.json
skills/
dotnet-sentinel-test/
reference.md
SKILL.md
run_smoke.py
trigger-corpus.jsonFAQ
dotnet-artisan is a Claude Code plugin with 9 hand-picked skills for development work, indexed on Flowy. Install it with the command on its page. It includes dotnet-advisor, dotnet-api, dotnet-csharp. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.