model-domain
Installation
SKILL.md
Model Domain
Quick Reference
| DDD concept | Ruby default | Avoid by default | Typical home |
|---|---|---|---|
| Entity | Plain class when persisted identity matters | Extra wrapper object with no added meaning | models/ or project namespace |
| Value object | PORO — immutable, equality by value | Shoving logic into helpers or primitives | models/ or near the domain |
| Aggregate root | The class that guards invariants and is the single entry point | Splitting invariants across multiple models/classes | models/ or project namespace |
| Domain service | PORO for behavior spanning multiple entities | Arbitrary model chosen just to hold code | services/ |
| Application service | Orchestrator for one use case | Fat controllers, callback chains, or leaking rules | services/ |
| Repository | Only when a real persistence boundary exists beyond simple data access | Repositories for every query | repositories/ |
| Domain event | Explicit object when multiple downstream consumers justify it | Callback-driven hidden side effects | events/ or project namespace |