Create pure TypeScript domain models following Domain-Driven Design principles. Use when building domain entities with validation and invariants, value objects with encapsulation, repository interfaces, or domain services. Also use for questions about keeping domain code free of external dependencies, enforcing business rules in the domain layer, or implementing tactical DDD patterns. Triggers on mentions of DDD, domain model, entity, value object, aggregate, repository interface, domain service, or business logic encapsulation.