What problem does it solve? Designing a pure .NET domain layer is error-prone: records that mutate state, guard clauses with hidden generic constraints, validators that drift from constructors, and infrastructure dependencies leaking into domain code. This Skill provides concrete patterns and tested conventions for building immutable C# domain models that stay clean and verifiable. ## Core Features & Use Cases - Immutable Record Pattern: Sealed records with required/init properties, state-transition methods returning new instances via with expressions, and CommunityToolkit.Diagnostics guards (including the Guard.IsEqualTo notnull/IEquatable pitfalls and fixes). - Policy Objects & State Machines: Standalone policy classes for multi-input decisions, lifecycle transition matrices, and Default Interface Methods for evolving extension-point interfaces without breaking implementors. - Domain Purity & Testing: ArchUnitNET rules blocking infrastructure namespaces, FluentValidation nested validators, TDD workflows, Cosmos persistence patterns (encrypted documents, optimistic concurrency, wildcard-ETag upserts), and Durable Functions orchestration guidance. - Use Case: When adding a new aggregate to a Clean Architecture .NET solution — for example a case-management entity with status transitions — use this Skill to scaffold the record, guards, policy, repository interface, contract tests, and Cosmos adapter in the correct order. ## Quick Start Ask the agent to model a new C# domain aggregate with immutable records, guard clauses, and a state machine following the dotnet-domain-modeling conventions.