andes-software-solutions/andes-dotnet
C#/.NET standards as on-demand skills (C# 14, ASP.NET Core Minimal APIs, FluentValidation, Azure Functions, MCP servers, EF Core, xUnit v3 + NSubstitute) and a report-only C# reviewer.
Use when building or reviewing ASP.NET Core Web APIs (Minimal APIs only, never controllers): endpoint groups, TypedResults, FluentValidation endpoint filters, Problem Details, Entra ID/JWT auth, versioning, OpenAPI, caching, and container deployment.
Use when building or reviewing Azure Functions in C# (isolated worker): triggers and bindings, host.json and local.settings.json, DI, retries, observability, scaling, security, testing, and in-process migration.
Use when writing or reviewing asynchronous C# code: async/await, Task vs ValueTask, CancellationToken flow, ConfigureAwait, exception handling, and avoiding sync-over-async deadlocks.
Use when adding or reviewing XML documentation comments on C# public APIs: summary, param, returns, exception, inheritdoc, remarks, and example conventions.
Use when building or reviewing a Model Context Protocol (MCP) server in C# with the ModelContextProtocol SDK: tools, prompts, resources, transports, stderr logging, security, and testing with McpClient.
Use when writing, editing, or reviewing any C# (.cs) code: C# 14 idioms, naming, the mandatory file layout (interface members, then Private methods / Public static methods / Logging regions), primary constructors, collection expressions, var, LoggerMessage logging, nullability, security, Minimal APIs + FluentValidation, and the xUnit v3 + NSubstitute policy.
Use when writing or reviewing .NET tests: xUnit v3 (latest, Microsoft Testing Platform) + NSubstitute only (no FluentAssertions, Moq, NUnit, or MSTest), naming, theories, fixtures, WebApplicationFactory integration tests, and the Testcontainers → SQLite → test DB → EF InMemory database ladder.
Use when adding, moving, renaming, or registering files, folders, or projects in a .NET solution shaped Api → Service → Repository → Entity → Common (+ Dto), or when asked where a type goes or what to call it: placement, one type per file (Models/, Exceptions/ subfolders), type and DI names, options and validators, services over provider-owned persistence (no repositories), and the test layout.
Use when writing or reviewing Entity Framework Core code: DbContext and entity design, queries, change tracking, migrations, performance, security, and database testing (Testcontainers first, EF InMemory last).
Use when adding or reviewing entities that need a Guid key, soft delete, audit timestamps, or optimistic concurrency: BaseEntity / BaseCreatedEntity / BaseModifiedEntity in Entity/Base/, their abstract EF configurations in Configurations/Base/, the named SoftDelete query filter, the SoftDelete and AuditTimestamp interceptors on TimeProvider, and row-version conflicts as ConflictException.
Use when a column must reference a fixed set of values (status, type, category) as a lookup table tied to a C# enum: BaseEnumEntity<TEnum> with the enum as the key on both sides (stored as int), the sealed row type, BaseEnumEntityConfiguration seeding every member with HasData, enum-typed foreign keys, and the add / rename / never-delete rules for members.
Use when creating, updating, refactoring, explaining, or reviewing Microsoft Agent Framework (.NET) solutions: agents, tools, workflows, and hosting. Public preview — ground APIs in live Microsoft Learn docs.
Query official Microsoft documentation to find concepts, tutorials, and code examples across Azure, .NET, Agent Framework, Aspire, VS Code, GitHub, and more. Uses Microsoft Learn MCP as the default, with Context7 and Aspire MCP for content that lives outside learn.microsoft.com.