Loading...
Loading...
Found 53 Skills
Complete domain-driven design workflow — an Event Storming-driven six-step domain modeling process, a five-step aggregate design method plus six principles, bounded context identification, entity/value object design patterns, a domain event catalog, and code mapping. Use when the user asks about domain modeling, aggregate design, bounded context, or needs to design a DDD domain model.
Surface-independent commerce domain logic — pricing models (customer groups, channel fallback, high-precision money), discount stacking (Product/Cart/Code/Direct/Groups), shipping predicates and cart score, tax modes, payment object modeling, Import API bulk patterns, and catalog architecture. Use for commerce-domain questions that are independent of surface (storefront, MC app, Connect).
Enforces a pure-Dart value-object core that stores every quantity canonically — money as integer minor units keyed to each currency's real ISO-4217 exponent (never *100), physical amounts as SI whole units, timestamps as UTC — and converts only at the presentation edge; forbids double/num money, cross-currency arithmetic, and defaulting an unknown currency to two decimals; routes every division of money through one largest-remainder allocate() primitive so parts always sum to the whole to the exact minor unit; derives totals instead of storing them, links entities by stable id, and injects a Clock instead of DateTime.now. Use when defining or changing Money, Currency, or a unit value object; parsing or formatting an amount; splitting, prorating, discounting, tax/tip, or distributing money; adding a currency or FX rate; converting quantities; or fixing float-money, hardcoded-100, cross-currency, off-by-a-cent, or stored-total-drift bugs.
Use when establishing or auditing a domain's shared vocabulary — phrases like "ubiquitous language", "what should we call this concept", "the team uses different words for the same thing", "the code uses different names than the business". Defines what a ubiquitous language is, how to grow one, and the smell tests that reveal a missing one. Do NOT use for code generation; this is a process/language skill.
Use when creation of an aggregate or complex value object requires non-trivial work — phrases like "factory", "the constructor is doing too much", "construction has business meaning", "how do I create this aggregate", "constructor with twelve parameters". Defines when to introduce a factory and when a constructor or static creation method suffices.