domain-driven-design
CommunityModel domains precisely, prevent bugs.
Software Engineering#architecture#software design#domain modeling#ddd#functional programming#ubiquitous language#type-driven design
Authorbfollington
Version1.0.0
Installs0
System Documentation
What problem does it solve?
Software often struggles with complexity, inconsistent terminology, and invalid states, leading to bugs and difficult maintenance. This skill provides a structured approach to domain modeling, leveraging principles from Rich Hickey and Scott Wlaschin, to ensure your software accurately reflects the business domain, prevents illegal states, and fosters a clear, ubiquitous language.
Core Features & Use Cases
- Ubiquitous Language Development: Guides you in establishing consistent terminology across code, documentation, and business conversations, reducing ambiguity.
- Type-Driven Design: Helps you model data and workflows using types that make illegal states unrepresentable, catching errors at compile time.
- Architectural Patterns: Provides guidance on entities, value objects, aggregates, bounded contexts, and functional core/imperative shell architecture.
- Visualization Tools: Generates Mermaid, Graphviz/DOT, or ASCII diagrams to clearly communicate complex domain structures and workflows.
- Use Case: You're designing an e-commerce order system. Use this skill to define
Orderas an aggregate root, model itsPaymentStatususing a sum type to prevent invalid states, and visualize the order lifecycle with a Mermaid state diagram, ensuring a robust and clear design.
Quick Start
Help me define the core entities and value objects for a simple banking domain, focusing on Account and Money.
Dependency Matrix
Required Modules
None requiredComponents
references
💻 Claude Code Installation
Recommended: Let Claude install automatically. Simply copy and paste the text below to Claude Code.
Please help me install this Skill: Name: domain-driven-design Download link: https://github.com/bfollington/terma/archive/main.zip#domain-driven-design Please download this .zip file, extract it, and install it in the .claude/skills/ directory.