What problem does it solve? Designing the domain layer in ABP-based .NET applications often leads to anemic entities, misplaced repositories, and leaked business logic. This Skill provides concrete patterns and anti-patterns for building a rich domain model that enforces invariants and keeps business rules inside the domain layer. ## Core Features & Use Cases - Rich Domain Modeling: Create entities and aggregate roots with private setters, behavior methods, and invariant enforcement instead of anemic data containers. - Repository & Domain Service Guidance: Apply the one-repository-per-aggregate-root rule and implement domain services (Manager classes) for logic spanning multiple aggregates. - Domain Events & Specifications: Publish local and distributed events from aggregates and encapsulate reusable query conditions with the Specification pattern. - Use Case: When adding an Order aggregate to an ABP application, use this Skill to structure the entity, its OrderLine child entities, an IOrderRepository interface, an OrderManager domain service, and OrderCompleted events correctly. ## Quick Start Ask the AI to create an ABP aggregate root with child entities, a repository interface, and a domain service following DDD best practices.