Teach and run domain-driven design modeling before any code gets written: build a ubiquitous-language glossary, run an event-storming-lite board, carve out bounded contexts, and draw a context map. Use when starting a greenfield project or feature and the domain is fuzzy, when a team keeps arguing over what words mean, when a system has grown into a tangled model, or when planning where team and service boundaries should go.
./install.sh domain-modelingname: domain_modeling description: Teach and run domain-driven design modeling before any code gets written: build a ubiquitous-language glossary, run an event-storming-lite board, carve out bounded contexts, and draw a context map. Use when starting a greenfield project or feature and the domain is fuzzy, when a team keeps arguing over what words mean, when a system has grown into a tangled model, or when planning where team and service boundaries should go.
Model the domain before coding it. Most design arguments are really language arguments and boundary arguments. This skill runs the modeling discipline from Eric Evans' domain-driven design: capture the language the business actually speaks, storm the domain as a timeline of events, and split the result into bounded contexts with explicit relationships. The output is a set of documents a team or agent can design and build from.
Ask the user (or the domain expert) to narrate one typical day in the business, end to end, in plain words. No code, no databases, no API talk yet. Keep asking "and then what happens?" until the story covers the happy path and the two or three most common variations. Write it down verbatim first; interpretation comes later.
Pull every business term out of the story into a glossary table: term, definition in the expert's own words, and where it shows up. Rules:
Use the template at assets/glossary-template.md.
You do not need a wall or a workshop. Work the timeline solo or with the expert using the sticky grammar Alberto Brandolini defined:
Walk the story left to right, event by event, and fill in the surrounding stickies with the causal loop: actor -> command -> aggregate -> domain event -> policy -> command. Every hotspot is an interview question for the next conversation. See references/worked-example.md for a full walkthrough.
Look at the board and find clusters of events and aggregates that change together for one reason. Each cluster is a candidate bounded context. Test each boundary:
Name each context in the business's words, not technical ones.
For every pair of contexts that exchange information, name the relationship using Evans' patterns: Partnership, Shared Kernel (keep it small), Customer/Supplier, Conformist, Anti-Corruption Layer (an isolating layer that translates the upstream model into yours), Open Host Service, Published Language, Separate Ways. A Big Ball of Mud with no boundaries is a map too, and an honest one.
Mark which relationships cross team boundaries; those are the ones that need explicit agreements.
Only then is the model ready to inform code.
A finished modeling pass produces, in this order:
assets/glossary-template.md.publisher key 2e43c913833850e6d80f939677e3de76e806d47785c0f1caaca90f9d18c98e1e
No ratings yet — be the first to rate it.