What problem does it solve? Java microservices with non-trivial business logic often degrade into anemic models, leaked abstractions, and unclear consistency boundaries. This Skill provides a shared tactical Domain-Driven Design vocabulary so aggregates, value objects, and domain events are modeled consistently across services. ## Core Features & Use Cases - Aggregate and invariant modeling: Defines Aggregate Roots that encapsulate state, enforce invariants, and register domain events, with one aggregate per transaction. - Value Objects and Domain Events: Uses Java records for identity-free types like Money and DocumentId, plus past-tense event records published via the outbox pattern. - Integration patterns: Covers Anti-Corruption Layers for external systems, Domain Services for cross-aggregate behavior, Repositories returning only roots, and composable Specifications. - Use Case: When adding a new Document aggregate to an existing Spring Boot service, use this Skill to structure the root entity, wrap identifiers in value objects, and emit a DocumentRenamedEvent through the messaging outbox. ## Quick Start Apply the domain-modeling skill to design the aggregate, value objects, and domain events for the new business concept in this service.