What problem does it solve? Primitive types like String, int, and f64 let invalid values, swapped arguments, and unit mismatches slip past compilers and tests into production. This Skill guides the design of Domain Primitives and Always-Valid domain models so invalid states become compile-time errors instead of runtime bugs. ## Core Features & Use Cases - Anti-pattern Detection: Identifies primitive-typed parameters and fields that should be wrapped in domain types, including argument-swapping risks and unvalidated Strings. - Design Patterns: Provides Smart Constructor, composite value (Money), range-constrained (Age), and NonEmpty<T> patterns with code examples. - Multi-language Implementations: Shows newtype/TryFrom in Rust, Branded Types in TypeScript, and private-constructor factories in Java, applicable to Kotlin, Scala, Go, and Python. - Use Case: When reviewing a function like fn transfer(from: &str, to: &str, amount: i64), use this Skill to refactor it into typed primitives (AccountId, Money) so negative amounts and swapped arguments fail at compile time. ## Quick Start Ask the AI to review your domain model or function signatures and refactor primitive-typed parameters into validated domain primitives using Smart Constructors.