WS

Wes Shaddix

GitHub 资料 · @wshaddix

Patterns for verifying email snapshots in tests to ensure email content matches expected outputs. Use when testing email rendering in unit tests, verifying MJML template outputs, or ensuring email content consistency across code changes.
wshaddix/verify-email-snapshots
Comprehensive validation patterns for ASP.NET Core applications. Covers FluentValidation integration, DataAnnotations, IValidatableObject, IValidateOptions<T>, MediatR pipeline behavior, and client-side validation. Use when implementing validation in ASP.NET Core applications, setting up FluentValidation, creating custom validators, configuring options validation, or implementing cross-field validation.
wshaddix/validation-patterns
Design .NET types for performance. Covers struct vs class decision matrix, sealed by default, readonly structs, ref struct and Span/Memory selection, FrozenDictionary, ValueTask, and collection return types. Use when designing new types and APIs, reviewing code for performance issues, choosing between class, struct, and record, or working with collections and enumerables.
wshaddix/type-design-performance
Patterns for using Testcontainers in .NET integration tests to spin up real dependencies like databases and message queues. Use when writing integration tests that require real databases, testing with message brokers like RabbitMQ or Kafka, or isolating test dependencies with Docker containers.
wshaddix/testcontainers
Patterns for snapshot testing in .NET applications using Verify. Covers API responses, scrubbing non-deterministic values, custom converters, HTTP response testing, email templates, and CI/CD integration. Use when implementing snapshot tests for API responses, verifying UI component renders, detecting unintended changes in serialization output, or approving public API surfaces.
wshaddix/snapshot-testing
Patterns for detecting and managing code smells and technical debt in .NET applications. Run Slopwatch CLI to detect LLM reward hacking, disabled tests, suppressed warnings, empty catches, and other shortcuts. Use when identifying code smells, running quality gates in CI/CD, or validating LLM-generated code changes.
wshaddix/slopwatch
Code snippets and templates for working with the skills index and marketplace functionality. Use when creating new skills, updating skill index files, or validating skill metadata and structure.
wshaddix/skills-index-snippets
Guide for creating effective skills. This skill should be used when users want to create a new skill (or update an existing skill) that extends OpenCode's capabilities with specialized knowledge, workflows, or tool integrations.
wshaddix/skill-creator
SignalR integration patterns for real-time communication in ASP.NET Core Razor Pages applications. Use when implementing real-time features in ASP.NET Core applications, setting up SignalR hubs and clients, or managing WebSocket connections and groups.
wshaddix/signalr-integration
JSON and binary serialization patterns for .NET applications, including System.Text.Json source generators, Protocol Buffers, MessagePack, and AOT-compatible best practices. Use when configuring JSON serialization, choosing between formats, implementing Protocol Buffers for high-performance scenarios, or working with Native AOT.
wshaddix/serialization
Security headers configuration and best practices for ASP.NET Core Razor Pages applications. Covers CSP, HSTS, X-Frame-Options, and comprehensive security middleware setup. Use when configuring security headers in ASP.NET Core applications, implementing Content Security Policy (CSP), or setting up HSTS and other security-related HTTP headers.
wshaddix/security-headers
Best practices for building production-grade ASP.NET Core Razor Pages applications. Focuses on structure, lifecycle, binding, validation, security, and maintainability in web apps using Razor Pages as the primary UI framework. Use when building Razor Pages applications, designing PageModels and handlers, implementing model binding and validation, or securing Razor Pages with authentication and authorization.
wshaddix/razor-pages-patterns
Rate limiting patterns for ASP.NET Core Razor Pages applications. Covers fixed window, sliding window, token bucket algorithms, and distributed rate limiting with Redis. Use when implementing rate limiting in ASP.NET Core applications, choosing between different rate limiting algorithms, or setting up distributed rate limiting with Redis.
wshaddix/rate-limiting
Guidelines for organizing .NET projects, including solution structure, project references, folder conventions, .slnx format, centralized build properties, and central package management. Use when setting up a new .NET solution with modern best practices, configuring centralized build properties across multiple projects, implementing central package version management, or setting up SourceLink for debugging.
wshaddix/project-structure
Optimize CI/CD pipelines by caching Playwright browser binaries and dependencies to speed up test execution. Use when setting up Playwright in CI/CD pipelines, reducing build times by caching browser binaries, or configuring GitHub Actions or Azure DevOps for Playwright tests.
wshaddix/playwright-ci-caching
End-to-end testing patterns for Blazor applications using Playwright, including component testing and page navigation. Use when writing E2E tests for Blazor applications, testing Blazor component interactions with Playwright, or setting up Playwright testing infrastructure for Blazor apps.
wshaddix/playwright-blazor
NuGet package management best practices including versioning strategies, central package management, and dependency resolution. Use when setting up Central Package Management (CPM), managing package versions across multiple projects, or resolving dependency conflicts in .NET solutions.
wshaddix/package-management
Write modern, high-performance C# code using records, pattern matching, value objects, async/await, Span<T>/Memory<T>, and best-practice API design patterns. Emphasizes functional-style programming with C# 12+ features. Use when writing new C# code or refactoring existing code, designing public APIs for libraries or services, optimizing performance-critical code paths, or building async/await-heavy applications.
wshaddix/modern-csharp-coding-standards
Guidelines for creating responsive email templates using MJML framework with .NET Razor syntax integration. Use when building responsive email templates in .NET applications, integrating MJML with Razor views, or creating email layouts that work across email clients.
wshaddix/mjml-email-templates
Custom middleware patterns for ASP.NET Core applications. Covers request/response pipeline, middleware ordering, conditional middleware, IMiddleware factory pattern, IExceptionHandler (.NET 8+), and reusable middleware components. Use when creating custom middleware in ASP.NET Core applications, understanding middleware pipeline ordering, or implementing cross-cutting concerns like logging, authentication, and caching.
wshaddix/middleware-patterns
Dependency injection patterns and best practices using Microsoft.Extensions.DependencyInjection for .NET applications. Use when configuring DI containers in .NET, choosing between service lifetimes (Singleton, Scoped, Transient), or implementing decorator patterns and service interception.
wshaddix/microsoft-extensions-dependency-injection
Configuration patterns using Microsoft.Extensions.Configuration. Covers configuration providers, binding, validation, and best practices for .NET applications. Use when setting up configuration in .NET applications, implementing configuration validation with IValidateOptions, or managing settings across different environments.
wshaddix/microsoft-extensions-configuration
Test email sending locally using Mailpit with .NET Aspire. Captures all outgoing emails without sending them. View rendered HTML, inspect headers, and verify delivery in integration tests. Use when testing email delivery locally without sending real emails, setting up email infrastructure in .NET Aspire, or writing integration tests that verify emails are sent.
wshaddix/mailpit-integration
Production-grade logging and observability patterns for ASP.NET Core Razor Pages. Covers structured logging with Serilog, correlation IDs, health checks, request logging, OpenTelemetry integration, and diagnostic best practices. Use when setting up structured logging in ASP.NET Core applications, implementing distributed tracing with OpenTelemetry, or configuring health checks and observability.
wshaddix/logging-observability
Multi-language support, resource files, culture formatting, and globalization patterns for ASP.NET Core Razor Pages applications. Use when implementing multi-language support in ASP.NET Core applications, managing resource files for translations, or formatting dates, numbers, and currencies for different cultures.
wshaddix/localization-globalization
Best practices for working with .NET local tools, including manifest management, tool installation, and versioning. Use when setting up dotnet-tools.json for a project, installing or updating local tools, or managing tool versions across team members.
wshaddix/local-tools
IHttpClientFactory patterns with Polly for retries, circuit breakers, timeouts, and resilient HTTP communication. Includes best practices for HTTP client configuration and error handling. Use when configuring resilient HTTP clients in ASP.NET Core, implementing retry policies with Polly, or setting up circuit breakers for external service calls.
wshaddix/http-client-resilience
Deploy, configure, and manage applications on the Fly.io platform using flyctl CLI, fly.toml configuration, Fly Machines, Fly Volumes, private networking, secrets, health checks, autoscaling, and GitHub Actions CI/CD. Use when deploying any application to Fly.io, writing or modifying fly.toml configuration, managing Fly Machines or Volumes, configuring networking (public services, private 6PN, Flycast, custom domains, TLS), setting secrets, configuring health checks, setting up autostop/autostart or metrics-based autoscaling, deploying with GitHub Actions, managing Fly Postgres databases, or preparing an app for production on Fly.io.
wshaddix/fly-io
Helps users discover and install agent skills when they ask questions like "how do I do X", "find a skill for X", "is there a skill that can...", or express interest in extending capabilities. This skill should be used when the user is looking for functionality that might exist as an installable skill.
wshaddix/find-skills
File uploads, streaming, storage abstractions, and secure file handling patterns for ASP.NET Core Razor Pages applications. Use when implementing secure file uploads in Razor Pages, streaming large files, or creating storage abstractions for file operations.
wshaddix/file-handling
Microsoft.FeatureManagement patterns for feature toggles, gradual rollouts, and A/B testing in ASP.NET Core Razor Pages applications. Use when implementing feature toggles in ASP.NET Core applications, setting up gradual feature rollouts, or configuring A/B testing scenarios with feature flags.
wshaddix/feature-flags
Comprehensive exception handling patterns for ASP.NET Core Razor Pages applications. Covers global exception handling, ProblemDetails API, custom error pages, exception middleware, and graceful degradation strategies. Use when implementing error handling in Razor Pages applications, configuring global exception middleware, or creating user-friendly error pages and API error responses.
wshaddix/exception-handling
Entity Framework Core best practices including NoTracking by default, query splitting for navigation collections, migration management, dedicated migration services, interceptors, compiled queries, and connection resiliency. Use when setting up EF Core in a new project, optimizing query performance, managing database migrations, integrating EF Core with .NET Aspire, or debugging change tracking issues.
wshaddix/efcore-patterns
Writing xUnit tests. v3 Fact/Theory, fixtures, parallelism, IAsyncLifetime, v2 compatibility.
wshaddix/dotnet-xunit
Writing XML doc comments. Tags, inheritdoc, GenerateDocumentationFile, warning suppression.
wshaddix/dotnet-xml-docs
Building WPF on .NET 8+. Host builder, MVVM Toolkit, Fluent theme, performance, modern C# patterns.
wshaddix/dotnet-wpf-modern
Migrating desktop apps. WPF/WinForms to .NET 8+, WPF to WinUI or Uno, UWP to WinUI, decision matrix.
wshaddix/dotnet-wpf-migration
Building WinUI 3 apps. Windows App SDK setup, XAML patterns, MSIX/unpackaged deploy, UWP migration.
wshaddix/dotnet-winui
Building WinForms on .NET 8+. High-DPI, dark mode (experimental), DI patterns, modernization tips.
wshaddix/dotnet-winforms-basics
Upgrading .NET to a newer TFM. LTS-to-LTS, staged through STS, preview, upgrade paths.
wshaddix/dotnet-version-upgrade
Project has .csproj, global.json, or Directory.Build.props. Detects TFMs and SDK versions.
wshaddix/dotnet-version-detection
Testing Uno Platform apps. Playwright for WASM, platform-specific patterns, runtime heads.
wshaddix/dotnet-uno-testing
Deploying Uno Platform apps. Per-target guidance for WASM, iOS, Android, macOS, Windows, Linux.
wshaddix/dotnet-uno-targets
Building Uno Platform apps. Extensions, MVUX reactive pattern, Toolkit controls, Hot Reload.
wshaddix/dotnet-uno-platform
Using Uno MCP server. Tool detection, search-then-fetch workflow, init rules, fallback, citation.
wshaddix/dotnet-uno-mcp
Testing UI across frameworks. Page objects, test selectors, async waits, accessibility.
wshaddix/dotnet-ui-testing-core
Selecting a .NET UI framework. Decision tree across Blazor, MAUI, Uno, WinUI, WPF, WinForms.
wshaddix/dotnet-ui-chooser
Guidelines for writing TUnit tests in .NET, including setup, assertions, async testing, and best practices. Use when writing unit tests with TUnit framework, setting up TUnit in a .NET project, or migrating from other test frameworks to TUnit.
wshaddix/dotnet-tunit-test
Making apps/libraries trim-safe. Annotations, ILLink descriptors, IL2xxx warnings, IsTrimmable.
wshaddix/dotnet-trimming
Installing or managing .NET tools. Global, local, manifests, restore, version pinning.
wshaddix/dotnet-tool-management
Deciding how to test .NET code. Unit vs integration vs E2E decision tree, test doubles.
wshaddix/dotnet-testing-strategy
Measuring test effectiveness. Coverlet code coverage, Stryker.NET mutation testing, flaky detection.
wshaddix/dotnet-test-quality
Building full TUI apps. Terminal.Gui v2: views, layout (Pos/Dim), menus, dialogs, bindings, themes.
wshaddix/dotnet-terminal-gui
Using System.CommandLine 2.0. Commands, options, SetAction, custom parsing, middleware, testing.
wshaddix/dotnet-system-commandline
Designing log pipelines. Aggregation, structured queries, sampling, PII scrubbing, correlation.
wshaddix/dotnet-structured-logging
Building rich console output. Spectre.Console: tables, trees, progress, prompts, live displays.
wshaddix/dotnet-spectre-console
Orienting in a .NET solution. Entry points, .sln/.slnx files, dependency graphs, config.
wshaddix/dotnet-solution-navigation
Designing classes or refactoring. SOLID, DRY, SRP with C# anti-patterns, fixes, compliance.
wshaddix/dotnet-solid-principles
Choosing inter-service protocols. REST vs gRPC vs SignalR vs SSE decision matrix, tradeoffs.
wshaddix/dotnet-service-communication
Building AI/LLM features. Semantic Kernel setup, plugins, prompt templates, memory stores, agents.
wshaddix/dotnet-semantic-kernel
Securing .NET code or reviewing for vulnerabilities. OWASP Top 10 mitigations, pattern warnings.
wshaddix/dotnet-security-owasp
Handling secrets or sensitive configuration. User secrets, environment variables, rotation.
wshaddix/dotnet-secrets-management
Creating a new .NET project. Generates solution with CPM, analyzers, editorconfig, SourceLink.
wshaddix/dotnet-scaffold-project
Authoring Roslyn analyzers. DiagnosticAnalyzer, CodeFixProvider, CodeRefactoring, multi-version.
wshaddix/dotnet-roslyn-analyzers
Adding fault tolerance. Polly v8 + MS.Extensions.Http.Resilience, retry/circuit breaker/timeout.
wshaddix/dotnet-resilience
Managing .NET release lifecycle. NBGV versioning, SemVer, changelogs, pre-release, branching.
wshaddix/dotnet-release-management
Building real-time features. SignalR hubs, SSE (.NET 10), JSON-RPC 2.0, gRPC streaming, scaling.
wshaddix/dotnet-realtime-communication
Navigating .NET solution structure or build configuration. Analyzes .sln, .csproj, CPM.
wshaddix/dotnet-project-analysis
Diagnosing .NET performance issues. dotnet-counters, dotnet-trace, dotnet-dump, flame graphs.
wshaddix/dotnet-profiling
Automating browser tests in .NET. Playwright E2E, CI browser caching, trace viewer, codegen.
wshaddix/dotnet-playwright
Optimizing .NET allocations/throughput. Span, ArrayPool, ref struct, sealed, stackalloc.
wshaddix/dotnet-performance-patterns
Generating OpenAPI docs. MS.AspNetCore.OpenApi (.NET 9+), Swashbuckle migration, NSwag.
wshaddix/dotnet-openapi
Adding observability. OpenTelemetry traces/metrics/logs, health checks, custom metrics.
wshaddix/dotnet-observability
Creating NuGet packages. SDK-style csproj, source generators, multi-TFM, symbols, signing.
wshaddix/dotnet-nuget-authoring
Calling native libraries via P/Invoke. LibraryImport, marshalling, cross-platform resolution.
wshaddix/dotnet-native-interop
Publishing Native AOT. PublishAot, ILLink descriptors, P/Invoke, size optimization, containers.
wshaddix/dotnet-native-aot
Targeting multiple TFMs or using newer C# on older TFMs. Polyfill strategy, API compat.
wshaddix/dotnet-multi-targeting
Packaging MSIX apps. Creation, signing, Store submission, App Installer sideload, auto-update.
wshaddix/dotnet-msix
Writing custom MSBuild tasks. ITask, ToolTask, IIncrementalTask, inline tasks, UsingTask.
wshaddix/dotnet-msbuild-tasks
Authoring MSBuild targets, props, or conditions. Custom targets, incrementality, Build patterns.
wshaddix/dotnet-msbuild-authoring
Analyzing .NET code for modernization. Outdated TFMs, deprecated packages, superseded patterns.
wshaddix/dotnet-modernize
Building Minimal APIs. Route groups, endpoint filters, TypedResults, OpenAPI 3.1, organization.
wshaddix/dotnet-minimal-apis
Building event-driven systems. Pub/sub, competing consumers, DLQ, sagas, delivery guarantees.
wshaddix/dotnet-messaging-patterns
Creating Mermaid diagrams for .NET. Architecture, sequence, class, deployment, ER, flowcharts.
wshaddix/dotnet-mermaid-diagrams
Testing .NET MAUI apps. Appium device/emulator testing, XHarness, platform validation.
wshaddix/dotnet-maui-testing
Building .NET MAUI apps. Project structure, XAML/MVVM, platform services, current caveats.
wshaddix/dotnet-maui-development
Optimizing MAUI for iOS/Catalyst. Native AOT pipeline, size/startup gains, library gaps, trimming.
wshaddix/dotnet-maui-aot
Localizing .NET apps. .resx resources, IStringLocalizer, source generators, pluralization, RTL.
wshaddix/dotnet-localization
Optimizing LINQ queries. IQueryable vs IEnumerable, compiled queries, deferred exec, allocations.
wshaddix/dotnet-linq-optimization
Maintaining library compatibility. Binary/source compat rules, type forwarders, SemVer impact.
wshaddix/dotnet-library-api-compat
Building high-perf network I/O. PipeReader/PipeWriter, backpressure, protocol parsers, Kestrel.
wshaddix/dotnet-io-pipelines
Testing with real infrastructure. WebApplicationFactory, Testcontainers, Aspire, fixtures.
wshaddix/dotnet-integration-testing
Validating HTTP request inputs. .NET 10 AddValidation, FluentValidation, ProblemDetails.
wshaddix/dotnet-input-validation
Consuming HTTP APIs. IHttpClientFactory, typed/named clients, resilience, DelegatingHandlers.
wshaddix/dotnet-http-client
Building gRPC services. Proto definition, code-gen, ASP.NET Core host, streaming, auth.
wshaddix/dotnet-grpc
Creating GitHub Releases for .NET. Release creation, assets, notes, pre-release management.
wshaddix/dotnet-github-releases
Creating GitHub-native docs. README badges, CONTRIBUTING, issue/PR templates, repo metadata.
wshaddix/dotnet-github-docs
Publishing .NET artifacts from GitHub Actions. NuGet push, container images, signing, SBOM.
wshaddix/dotnet-gha-publish
Designing GitHub Actions workflows. Reusable workflows, composite actions, matrix builds, caching.
wshaddix/dotnet-gha-patterns
Deploying .NET from GitHub Actions. Azure Web Apps, GitHub Pages, container registries.
wshaddix/dotnet-gha-deploy
Configuring .NET build/test in GitHub Actions. setup-dotnet, NuGet caching, test reporting.
wshaddix/dotnet-gha-build-test
Tuning GC and memory. GC modes, LOH/POH, Gen0/1/2, Span/Memory deep patterns, ArrayPool, profiling.
wshaddix/dotnet-gc-memory
Doing file I/O. FileStream, RandomAccess, FileSystemWatcher, MemoryMappedFile, paths.
wshaddix/dotnet-file-io
Running C# without a project file (.NET 10 SDK). Directives, CLI commands, migration.
wshaddix/dotnet-file-based-apps
Designing data layer architecture. Read/write split, aggregate boundaries, N+1 governance.
wshaddix/dotnet-efcore-architecture
Authoring .editorconfig rules. IDE/CA severity, AnalysisLevel, globalconfig, code style enforcement.
wshaddix/dotnet-editorconfig
Modeling business domains. Aggregates, value objects, domain events, rich models, repositories.
wshaddix/dotnet-domain-modeling
Choosing documentation tooling. Starlight, Docusaurus, DocFX decision tree, migration paths.
wshaddix/dotnet-documentation-strategy
Choosing a data access approach. EF Core vs Dapper vs ADO.NET decision matrix, performance tradeoffs.
wshaddix/dotnet-data-access-strategy
Reading or modifying .csproj files. SDK-style structure, PropertyGroup/ItemGroup, CPM, props.
wshaddix/dotnet-csproj-reading
Creating source generators. IIncrementalGenerator, GeneratedRegex, LoggerMessage, STJ source-gen.
wshaddix/dotnet-csharp-source-generators
Enabling nullable reference types. Annotation strategies, attributes, common agent mistakes.
wshaddix/dotnet-csharp-nullable-reference-types
Using records, pattern matching, primary constructors, collection expressions. C# 12-15 by TFM.
wshaddix/dotnet-csharp-modern-patterns
Registering or resolving services with MS DI. Keyed services, scopes, decoration, hosted services.
wshaddix/dotnet-csharp-dependency-injection
Using Options pattern, user secrets, or feature flags. IOptions<T> and FeatureManagement.
wshaddix/dotnet-csharp-configuration
Reviewing C# for logic issues. Anti-patterns, common pitfalls, async misuse, DI mistakes.
wshaddix/dotnet-csharp-code-smells
Writing async/await code. Task patterns, ConfigureAwait, cancellation, and common agent pitfalls.
wshaddix/dotnet-csharp-async-patterns
Choosing crypto algorithms, hashing, encryption, or key derivation. AES-GCM, RSA, ECDSA, PQC.
wshaddix/dotnet-cryptography
Containerizing .NET apps. Multi-stage Dockerfiles, SDK container publish (.NET 8+), rootless.
wshaddix/dotnet-containers
Deploying .NET containers. Kubernetes probes, Docker Compose for local dev, CI/CD integration.
wshaddix/dotnet-container-deployment
Releasing CLI tools. GitHub Actions build matrix, artifact staging, Releases, checksums.
wshaddix/dotnet-cli-release-pipeline
Publishing to package managers. Homebrew, apt/deb, winget, Scoop, Chocolatey manifests.
wshaddix/dotnet-cli-packaging
Choosing CLI output format. AOT vs framework-dependent, RID matrix, single-file, dotnet tool.
wshaddix/dotnet-cli-distribution
Structuring CLI app layers. Command/handler/service separation, clig.dev principles, exit codes.
wshaddix/dotnet-cli-architecture
Gating CI on perf regressions. Automated threshold alerts, baseline tracking, trend reports.
wshaddix/dotnet-ci-benchmarking
Using producer/consumer queues. Channel<T>, bounded/unbounded, backpressure, drain patterns
wshaddix/dotnet-channels
Diagnosing slow builds or incremental failures. Binary logs, parallel builds, restore.
wshaddix/dotnet-build-optimization
Interpreting MSBuild output, NuGet errors, or analyzer warnings. Error codes, CI drift fixes.
wshaddix/dotnet-build-analysis
Testing Blazor components. bUnit rendering, events, cascading params, JS interop mocking.
wshaddix/dotnet-blazor-testing
Building Blazor apps. Hosting models, render modes, routing, streaming rendering, prerender.
wshaddix/dotnet-blazor-patterns
Building Blazor components. Lifecycle, state management, JS interop, EditForm validation, QuickGrid.
wshaddix/dotnet-blazor-components
Adding auth to Blazor. AuthorizeView, CascadingAuthenticationState, Identity UI, per-model flows.
wshaddix/dotnet-blazor-auth
Writing benchmarks. BenchmarkDotNet setup, memory diagnosers, baselines, result analysis.
wshaddix/dotnet-benchmarkdotnet
Using .NET Aspire. AppHost orchestration, service discovery, components, dashboard, health checks.
wshaddix/dotnet-aspire-patterns
Using artifacts output layout. UseArtifactsOutput, ArtifactsPath, impact on CI and Docker.
wshaddix/dotnet-artifacts-output
Organizing APIs at scale. Vertical slices, request pipelines, caching, error handling, idempotency.
wshaddix/dotnet-architecture-patterns
Versioning HTTP APIs. Asp.Versioning.Http/Mvc, URL segment, header, query string, sunset.
wshaddix/dotnet-api-versioning
Detecting API changes in CI. PublicApiAnalyzers, Verify snapshots, breaking change enforcement.
wshaddix/dotnet-api-surface-validation
Implementing API auth. Identity, OAuth/OIDC, JWT bearer, passkeys (WebAuthn), CORS, rate limiting.
wshaddix/dotnet-api-security
Generating API documentation. DocFX setup, OpenAPI-as-docs, doc-code sync, versioned docs.
wshaddix/dotnet-api-docs
AOT-compiling for WebAssembly. Blazor/Uno WASM AOT, size vs speed, lazy loading, Brotli.
wshaddix/dotnet-aot-wasm
Designing AOT-first apps. Source gen over reflection, AOT-safe DI, serialization, factories.
wshaddix/dotnet-aot-architecture
Generating or modifying .NET code. Common agent mistakes: async, NuGet, deprecated APIs, DI.
wshaddix/dotnet-agent-gotchas
Working with .NET, C#, ASP.NET Core, or related frameworks. Routes to specialist skills.
wshaddix/dotnet-advisor
Using ADO-exclusive features. Environments, approvals, service connections, classic releases.
wshaddix/dotnet-ado-unique
Publishing .NET artifacts from Azure DevOps. NuGet push, containers to ACR, pipeline artifacts.
wshaddix/dotnet-ado-publish
Designing composable Azure DevOps YAML pipelines. Templates, variable groups, multi-stage, triggers.
wshaddix/dotnet-ado-patterns
Configuring .NET build/test in Azure DevOps. DotNetCoreCLI task, Artifacts, test results.
wshaddix/dotnet-ado-build-test
Adding test infrastructure to a .NET project. Scaffolds xUnit project, coverlet, layout.
wshaddix/dotnet-add-testing
Adding CI/CD to a .NET project. GitHub Actions vs Azure DevOps detection, workflow templates.
wshaddix/dotnet-add-ci
Adding analyzer packages to a project. Nullable, trimming, AOT compat analyzers, severity config.
wshaddix/dotnet-add-analyzers
Building accessible .NET UI. SemanticProperties, ARIA, AutomationPeer, testing tools per platform.
wshaddix/dotnet-accessibility
Database access patterns for performance. Separate read/write models, avoid N+1 queries, use AsNoTracking, apply row limits, and never do application-side joins. Works with EF Core and Dapper. Use when designing data access layers, optimizing slow database queries, choosing between EF Core and Dapper, or avoiding common performance pitfalls.
wshaddix/database-performance
ASP.NET Core Data Protection API patterns for encryption, key management, and secure data handling in web applications. Use when protecting sensitive data at rest or in transit, managing encryption keys in ASP.NET Core applications, or implementing secure token generation and validation.
wshaddix/data-protection
Build .NET applications with WolverineFX for messaging, HTTP services, and event sourcing. Use when implementing command handlers, message handlers, HTTP endpoints with WolverineFx.HTTP, transactional outbox patterns, event sourcing with Marten, CQRS architectures, cascading messages, batch message processing, or configuring transports like RabbitMQ, Azure Service Bus, or Amazon SQS.
wshaddix/csharp-wolverinefx
Run single-file C# programs as scripts for quick experimentation, prototyping, and concept testing. Use when the user wants to write and execute a small C# program without creating a full project.
wshaddix/csharp-scripts
Choosing the right concurrency abstraction in .NET - from async/await for I/O to Channels for producer/consumer to Akka.NET for stateful entity management. Covers both high-level abstractions and low-level synchronization primitives. Use when deciding how to handle concurrent operations in .NET, evaluating whether to use async/await, Channels, or Akka.NET, or managing state across multiple concurrent entities.
wshaddix/csharp-concurrency-patterns
Analyze code coverage and CRAP (Change Risk Anti-Patterns) scores to identify high-risk code. Use OpenCover format with ReportGenerator for Risk Hotspots showing cyclomatic complexity and untested code paths. Use when evaluating code quality and test coverage before changes, identifying high-risk code that needs refactoring or testing, setting up coverage collection for a .NET project, or establishing coverage thresholds for CI/CD pipelines.
wshaddix/crap-analysis
Comprehensive caching patterns for ASP.NET Core Razor Pages applications. Covers output caching, response caching, memory caching, distributed caching with Redis, cache invalidation strategies, and HybridCache (.NET 9+). Use when implementing caching in Razor Pages applications, choosing between memory and distributed caching, or optimizing application performance with caching.
wshaddix/caching-strategies
Production-grade Bootstrap 5.3 patterns for building modern, responsive web UIs in HTML and ASP.NET Core Razor Pages/Views. Use when creating or styling web pages, layouts, navigation, forms, cards, modals, tables, or any UI component with Bootstrap 5. Covers the grid system, responsive breakpoints, utility classes, color modes (dark/light), accessibility, and integration with ASP.NET Core tag helpers and Razor syntax. Trigger on any task involving Bootstrap CSS classes, responsive HTML layouts, Razor Page UI design, or front-end styling for .NET web applications.
wshaddix/bootstrap5-ui
Hosted services, background jobs, outbox patterns, and graceful shutdown handling for ASP.NET Core applications. Includes patterns for reliable job processing, distributed systems, and lifecycle management. Use when implementing background processing in ASP.NET Core applications, handling outbox patterns for reliable message delivery, or managing graceful service shutdown.
wshaddix/background-services
Create a shared ServiceDefaults project for Aspire applications. Centralizes OpenTelemetry, health checks, resilience, and service discovery configuration across all services. Use when building Aspire-based distributed applications, needing consistent observability across services, or configuring HttpClient resilience and service discovery.
wshaddix/aspire-service-defaults
Write integration tests using .NET Aspire's testing facilities with xUnit. Covers test fixtures, distributed application setup, endpoint discovery, and patterns for testing ASP.NET Core apps with real dependencies. Use when writing integration tests for .NET Aspire applications, testing ASP.NET Core apps with real database connections, or verifying service-to-service communication in distributed applications.
wshaddix/aspire-integration-testing
Configure Aspire AppHost to emit explicit app config via environment variables while keeping app code free of Aspire clients and service discovery. Use when wiring AppHost resources to application configuration, ensuring production configuration is transparent and portable outside of Aspire, or avoiding Aspire client packages inside application code.
wshaddix/aspire-configuration
Production-grade patterns for ASP.NET Core Identity in Razor Pages and web apps. Covers setup, customization, security hardening, auth flows, roles/claims, external providers, and integration best practices for .NET 8+ / .NET 9+. Use when implementing authentication and authorization in ASP.NET Core applications, configuring ASP.NET Core Identity, setting up external login providers, or managing roles and claims.
wshaddix/asp-net-core-identity-patterns
Design stable, compatible public APIs using extend-only design principles. Manage API compatibility, wire compatibility, versioning, naming conventions, parameter ordering, and return types for NuGet packages and distributed systems. Use when designing public APIs for NuGet packages or libraries, making changes to existing public APIs, planning wire format changes for distributed systems, or reviewing pull requests for breaking changes.
wshaddix/api-design
Browser automation CLI for AI agents. Use when the user needs to interact with websites, including navigating pages, filling forms, clicking buttons, taking screenshots, extracting data, testing web apps, or automating any browser task. Triggers include requests to "open a website", "fill out a form", "click a button", "take a screenshot", "scrape data from a page", "test this web app", "login to a site", "automate browser actions", or any task requiring programmatic web interaction.
wshaddix/agent-browser