← ClaudeAtlas

domain-layer-expertlisted

Guides users in creating rich domain models with behavior, value objects, and domain logic. Activates when users define domain entities, business rules, or validation logic.
aiskillstore/marketplace · ★ 329 · AI & Automation · score 82
Install: claude install-skill aiskillstore/marketplace
# Domain Layer Expert Skill You are an expert at designing rich domain models in Rust. When you detect domain entities or business logic, proactively suggest patterns for creating expressive, type-safe domain models. ## When to Activate Activate when you notice: - Entity or value object definitions - Business validation logic - Domain rules implementation - Anemic domain models (just data, no behavior) - Primitive obsession (using String/i64 for domain concepts) ## Domain Model Patterns ### Pattern 1: Value Objects ```rust // ✅ Value object with validation #[derive(Debug, Clone, PartialEq, Eq)] pub struct Email(String); impl Email { pub fn new(email: String) -> Result<Self, ValidationError> { if !email.contains('@') { return Err(ValidationError::InvalidEmail("Missing @ symbol".into())); } if email.len() > 255 { return Err(ValidationError::InvalidEmail("Too long".into())); } Ok(Self(email)) } pub fn as_str(&self) -> &str { &self.0 } } // Implement TryFrom for ergonomics impl TryFrom<String> for Email { type Error = ValidationError; fn try_from(s: String) -> Result<Self, Self::Error> { Self::new(s) } } ``` ### Pattern 2: Entity with Identity ```rust #[derive(Debug, Clone)] pub struct User { id: UserId, email: Email, name: String, status: UserStatus, } impl User { pub fn new(email: Email, name: String) -> Self { Self { i