A comprehensive AI coding plugin with 30 skills and 5 specialized agents for professional .NET development. Battle-tested patterns from production systems covering C#, Akka.NET, Aspire, EF Core, testing, and performance optimization.
> /plugin marketplace add aaronontheweb/dotnet-skills> /plugin install dotnet-skills@dotnet-skills
What's inside
A comprehensive AI coding plugin with 30 skills and 5 specialized agents for professional .NET development. Battle-tested patterns from production systems covering C#, Akka.NET, Aspire, EF Core, testing, and performance optimization.
This plugin works with multiple AI coding assistants that support skills/agents.
Run these commands inside the Claude Code CLI (the terminal app, not the VSCode extension):
/plugin marketplace add Aaronontheweb/dotnet-skills
/plugin install dotnet-skills
To update:
/plugin marketplace update
Add the marketplace, then install the plugin:
codex plugin marketplace add Aaronontheweb/dotnet-skills
codex plugin add dotnet-skills@dotnet-skills
Verify the install:
codex plugin list
Skills are auto-discovered from the plugin's skills/ directory. Invoke one with /skills or $skill-name in the Codex CLI or IDE extension. Note: the specialized agents are Claude Code-specific and are not included in the Codex plugin.
Clone or copy skills to your project or global config:
Project-level (recommended):
# Clone to .github/skills/ in your project
git clone https://github.com/Aaronontheweb/dotnet-skills.git /tmp/dotnet-skills
cp -r /tmp/dotnet-skills/skills/* .github/skills/
Global (all projects):
mkdir -p ~/.copilot/skills
cp -r /tmp/dotnet-skills/skills/* ~/.copilot/skills/
git clone https://github.com/Aaronontheweb/dotnet-skills.git /tmp/dotnet-skills
# Global installation (directory names must match frontmatter 'name' field)
mkdir -p ~/.config/opencode/skills ~/.config/opencode/agents
for skill_file in /tmp/dotnet-skills/skills/*/SKILL.md; do
skill_name=$(grep -m1 "^name:" "$skill_file" | sed 's/name: *//')
mkdir -p ~/.config/opencode/skills/$skill_name
cp "$skill_file" ~/.config/opencode/skills/$skill_name/SKILL.md
done
cp /tmp/dotnet-skills/agents/*.md ~/.config/opencode/agents/
These snippets go in your project root (the root directory of your codebase, next to your .git folder):
CLAUDE.mdAGENTS.mdPrerequisite: install/sync the dotnet-skills plugin in your assistant runtime (Claude Code or OpenCode) so the skill IDs below resolve.
To get consistent skill usage in downstream repos, add a small router snippet in AGENTS.md (OpenCode) or CLAUDE.md (Claude Code). These snippets tell the assistant which skills to use for common tasks.
# Agent Guidance: dotnet-skills
IMPORTANT: Prefer retrieval-led reasoning over pretraining for any .NET work.
Workflow: skim repo patterns -> consult dotnet-skills by name -> implement smallest-change -> note conflicts.
Routing (invoke by name)
- C# / code quality: modern-csharp-coding-standards, csharp-concurrency-patterns, api-design, type-design-performance, r3-reactive-extensions
- ASP.NET Core / Web (incl. Aspire): aspire-service-defaults, aspire-integration-testing, transactional-emails
- Data: efcore-patterns, database-performance
- DI / config: dependency-injection-patterns, microsoft-extensions-configuration
- Testing: testcontainers-integration-tests, playwright-blazor-testing, snapshot-testing
Quality gates (use when applicable)
- dotnet-slopwatch: after substantial new/refactor/LLM-authored code
- crap-analysis: after tests added/changed in complex code
Specialist agents
- dotnet-concurrency-specialist, dotnet-performance-analyst, dotnet-benchmark-designer, akka-net-specialist, docfx-specialist
Run ./scripts/generate-skill-index-snippets.sh --update-readme to refresh the block below.
[dotnet-skills]|IMPORTANT: Prefer retrieval-led reasoning over pretraining for any .NET work.
|flow:{skim repo patterns -> consult dotnet-skills by name -> implement smallest-change -> note conflicts}
|route:
|akka:{akka-net-best-practices,akka-net-testing-patterns,akka-hosting-actor-patterns,akka-net-aspire-configuration,akka-net-management}
|csharp:{modern-csharp-coding-standards,csharp-concurrency-patterns,csharp-nullable-reference-types,api-design,type-design-performance,r3-reactive-extensions}
|aspnetcore-web:{aspire-integration-testing,aspire-configuration,aspire-service-defaults,mailpit-integration,mjml-email-templates}
|data:{efcore-patterns,database-performance}
|di-config:{microsoft-extensions-configuration,dependency-injection-patterns}
|testing:{testcontainers-integration-tests,playwright-blazor-testing,snapshot-testing,verify-email-snapshots,playwright-ci-caching}
|dotnet:{dotnet-project-structure,dotnet-local-tools,package-management,serialization,dotnet-devcert-trust,ilspy-decompile,opentelemetry-net-instrumentation}
|quality-gates:{dotnet-slopwatch,crap-analysis}
|meta:{marketplace-publishing,skills-index-snippets}
|agents:{akka-net-specialist,docfx-specialist,dotnet-benchmark-designer,dotnet-concurrency-specialist,dotnet-performance-analyst,roslyn-incremental-generator-specialist}
Agents are AI personas with deep domain expertise. They're invoked automatically when Claude Code detects relevant tasks.
| Agent | Expertise |
|---|---|
| akka-net-specialist | Actor systems, clustering, persistence, Akka.Streams, message patterns |
| dotnet-concurrency-specialist | Threading, async/await, race conditions, deadlock analysis |
| dotnet-benchmark-designer | BenchmarkDotNet setup, custom benchmarks, measurement strategies |
| dotnet-performance-analyst | Profiler analysis, benchmark interpretation, regression detection |
| docfx-specialist | DocFX builds, API documentation, markdown linting |
Production patterns for building distributed systems with Akka.NET.
| Skill | What You'll Learn |
|---|---|
| best-practices | EventStream vs DistributedPubSub, supervision strategies, actor hierarchies |
| testing-patterns | Akka.Hosting.TestKit, async assertions, TestProbe patterns |
| hosting-actor-patterns | Props factories, IRequiredActor<T>, DI scope management in actors |
| aspire-configuration | Akka.NET + .NET Aspire integration, HOCON with IConfiguration |
| management | Akka.Management, health checks, cluster bootstrap |
Modern C# patterns for clean, performant code.
| Skill | What You'll Learn |
|---|---|
| coding-standards | Records, pattern matching, nullable types, value objects, no AutoMapper |
| concurrency-patterns | When to use Task vs Channel vs lock vs actors |
| api-design | Extend-only design, API/wire compatibility, versioning strategies |
| type-design-performance | Sealed classes, readonly structs, static pure functions, Span<T> |
| r3-reactive-extensions | R3 vs Rx.NET, OnErrorResume, AwaitOperation async dispatch, concurrency, TimeProvider/FrameProvider |
Database patterns that scale.
| Skill | What You'll Learn |
|---|---|
| efcore-patterns | Entity configuration, migrations, query optimization |
| database-performance | Read/write separation, N+1 prevention, AsNoTracking, row limits |
Cloud-native application orchestration.
| Skill | What You'll Learn |
|---|---|
| integration-testing | DistributedApplicationTestingBuilder, Aspire.Hosting.Testing |
| service-defaults | OpenTelemetry, health checks, resilience, service discovery |
| mailpit-integration | Email testing with Mailpit container, SMTP config, test assertions |
Web application patterns.
| Skill | What You'll Learn |
|---|---|
| mjml-email-templates | MJML syntax, responsive layouts, template renderer, composer pattern |
Core .NET development practices.
| Skill | What You'll Learn |
|---|---|
| project-structure | Solution layout, Directory.Build.props, layered architecture |
| package-management | Central Package Management (CPM), shared version variables, dotnet CLI |
| serialization | Protobuf, MessagePack, System.Text.Json source generators, AOT |
| local-tools | dotnet tool manifests, team-shared tooling |
| slopwatch | Detect LLM-generated anti-patterns in your codebase |
Dependency injection and configuration patterns.
| Skill | What You'll Learn |
|---|---|
| configuration | IOptions pattern, environment-specific config, secrets management |
| dependency-injection | IServiceCollection extensions, scope management, keyed services |
Comprehensive testing strategies.
| Skill | What You'll Learn |
|---|---|
| testcontainers | Docker-based integration tests, PostgreSQL, Redis, RabbitMQ |
| playwright-blazor | E2E testing for Blazor apps, page objects, async assertions |
| crap-analysis | CRAP scores, coverage thresholds, ReportGenerator integration |
| snapshot-testing | Verify library, approval testing, API response validation |
| verify-email-snapshots | Snapshot test email templates, catch rendering regressions |
These skills emphasize patterns that work in production:
dotnet-skills/
โโโ .claude-plugin/
โ โโโ plugin.json # Claude Code plugin manifest
โ โโโ marketplace.json # Claude Code marketplace
โโโ .codex-plugin/
โ โโโ plugin.json # Codex plugin manifest
โโโ .agents/
โ โโโ plugins/
โ โโโ marketplace.json # Codex marketplace
โโโ agents/ # 5 specialized agents (Claude Code)
โ โโโ akka-net-specialist.md
โ โโโ docfx-specialist.md
โ โโโ dotnet-benchmark-designer.md
โ โโโ dotnet-concurrency-specialist.md
โ โโโ dotnet-performance-analyst.md
โโโ skills/ # Flat structure (30 skills)
โโโ akka-best-practices/SKILL.md
โโโ akka-hosting-actor-patterns/SKILL.md
โโโ akka-net-aspire-configuration/SKILL.md
โโโ aspire-configuration/SKILL.md
โโโ aspire-integration-testing/SKILL.md
โโโ csharp-concurrency-patterns/SKILL.md
โโโ testcontainers-integration-tests/SKILL.md
โโโ ... # (prefixed by category)
Want to add a skill or agent? PRs welcome!
skills/<skill-name>/SKILL.md (use prefixes like akka-, aspire-, csharp- for category).claude-plugin/plugin.json (the Codex plugin auto-discovers the whole skills/ dir)./scripts/validate-marketplace.sh and ./scripts/validate-codex-plugin.shSkills should be comprehensive reference documents (10-40KB) with concrete examples and anti-patterns.
Created by Aaron Stannard (@Aaronontheweb)
Patterns drawn from production systems including Akka.NET, Petabridge, and Sdkbin.
MIT License - Copyright (c) 2025 Aaron Stannard
See LICENSE for full details.
.agents/
plugins/
marketplace.json
.claude-plugin/
marketplace.json
plugin.json
.codex-plugin/
plugin.json
.github/
workflows/
release.yml
.gitignore
agents/
AGENTS.md
akka-net-specialist.md
docfx-specialist.md
dotnet-benchmark-designer.md
dotnet-concurrency-specialist.md
dotnet-performance-analyst.md
roslyn-incremental-generator-specialist.md
CLAUDE.md
LICENSE
README.md
RELEASE_NOTES.md
scripts/
bump-version.sh
generate-release-summary.sh
generate-skill-index-snippets.sh
validate-codex-plugin.sh
validate-marketplace.sh
skills/
akka-aspire-configuration/
SKILL.md
akka-best-practices/
async-cancellation-patterns.md
cluster-local-abstractions.md
SKILL.md
work-distribution-patterns.md
akka-hosting-actor-patterns/
SKILL.md
akka-management/
configuration-reference.md
discovery-providers.md
SKILL.md
akka-testing-patterns/
anti-patterns-and-reference.md
examples.md
SKILL.md
aspire-configuration/
SKILL.md
aspire-integration-testing/
advanced-patterns.md
ci-and-tooling.md
SKILL.md
aspire-mailpit-integration/
SKILL.md
aspire-service-defaults/
SKILL.md
crap-analysis/
SKILL.md
csharp-api-design/
SKILL.md
csharp-coding-standards/
anti-patterns-and-reflection.md
composition-and-error-handling.md
performance-and-api-design.md
SKILL.md
value-objects-and-patterns.md
csharp-concurrency-patterns/
advanced-concurrency.md
SKILL.md
csharp-nullable-reference-types/
nrt-migration-playbook-reference.md
nullable-attributes-reference.md
SKILL.md
csharp-type-design-performance/
SKILL.md
database-performance/
SKILL.md
dotnet-devcert-trust/
SKILL.md
efcore-patterns/
SKILL.md
ilspy-decompile/
SKILL.md
local-tools/
SKILL.md
marketplace-publishing/
SKILL.md
microsoft-extensions-configuration/
advanced-patterns.md
SKILL.md
microsoft-extensions-dependency-injection/
advanced-patterns.md
SKILL.md
mjml-email-templates/
SKILL.md
opentelementry-dotnet-instrumentation/
metrics-and-instruments-reference.md
sdk-resources-and-logs-reference.md
SKILL.md
traces-and-propagation-reference.md
package-management/
SKILL.md
playwright-blazor/
SKILL.md
playwright-ci-caching/
SKILL.md
project-structure/
SKILL.md
r3-reactive-extensions/
async-and-integration-patterns.md
rx-net-differences.md
scheduling-and-concurrency.md
SKILL.md
serialization/
SKILL.md
skills-index-snippets/
SKILL.md
slopwatch/
SKILL.md
snapshot-testing/
SKILL.md
testcontainers/
database-patterns.md
infrastructure-patterns.md
SKILL.md
verify-email-snapshots/
SKILL.mdFAQ
dotnet-skills is a Claude Code plugin with 36 hand-picked skills for development work, indexed on Flowy. Install it with the command on its page. It includes akka-aspire-configuration, akka-best-practices, akka-hosting-actor-patterns. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.