m09-domain

Enables modeling of domain concepts and business rules in software systems.

51|6|Updated Mar 28, 2019
One-click install
npx skills add https://github.com/Mte90/dotfiles --skill m09-domain-mte90
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: m09-domain
Source: https://github.com/Mte90/dotfiles/tree/main/.config/opencode/skills/m09-domain
Command: npx skills add https://github.com/Mte90/dotfiles --skill m09-domain-mte90

SYSTEM DOCUMENTATION & REQUIREMENTS

💡 This Skill includes references (resource) components.

What problem does it solve?

This Skill provides a structured approach to modeling complex domain concepts in software development, ensuring clarity, maintainability, and adherence to Domain-Driven Design principles.

Core Features & Use Cases

  • Entity vs. Value Object Distinction: Guides the decision-making process for identifying and implementing entities and value objects.
  • Aggregate Design: Helps define aggregate boundaries and ownership within the domain model.
  • Invariant Enforcement: Provides patterns for ensuring business rules and invariants are maintained.
  • Use Case: When designing a new feature for an e-commerce platform, use this Skill to correctly model Product as an Entity and Money as a Value Object, ensuring proper encapsulation and validation.

Quick Start

Use the m09-domain skill to model a 'Customer' as an Entity with a unique 'CustomerId'.

Frequently Asked Questions about m09-domain

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I distinguish between an entity and a value object when domain modeling in Rust?

Defining aggregate boundaries in Rust requires grouping related entities and value objects into a single consistency boundary. This skill provides a framework for mapping domain concepts to Rust structs and traits, ensuring proper encapsulation and ownership within aggregates.

Can I enforce business invariants using Rust structs and traits?

You can enforce business invariants using Rust structs and traits by leveraging Rust's type safety and ownership rules. This skill provides specific patterns for maintaining domain rules and ensuring invariants are validated during domain concept mapping.

What's the best way to map Domain-Driven Design concepts to Rust modules?

Mapping Domain-Driven Design concepts to Rust modules is best achieved by translating DDD patterns into Rust structs, traits, and modules. This skill provides a structured approach emphasizing ownership implications and type safety for complex domain modeling.

Does domain modeling in Rust require special dependencies for aggregate design?

Domain modeling in Rust does not require external dependencies for aggregate design. This skill operates dependency-free, guiding developers in defining aggregate boundaries and enforcing business invariants using native Rust programming patterns.