One-click install
npx skills add https://github.com/markky21/claude-skills --skill ddd-oop
Or copy as Structured Prompt for Agent
Please help me install this Agent Skill.
Skill: ddd-oop
Source: https://github.com/markky21/claude-skills/tree/main/plugins/my-personal-tools/skills/ddd-oop
Command: npx skills add https://github.com/markky21/claude-skills --skill ddd-oop

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve?

This Skill helps software engineers design robust, behavior-rich domain models by applying Domain-Driven Design (DDD) and solid object-oriented programming principles. It addresses the common pitfall of anemic domain models by guiding developers to place behavior with data and define clear boundaries.

Core Features & Use Cases

  • Rich domain modelling: embed behavior in domain objects and enforce invariants.
  • Aggregates and boundaries: design small, cohesive aggregates and reference others by identity to improve concurrency and invariants.
  • Domain events and ubiquitous language: capture meaningful domain changes and align code with business concepts for clearer communication.
  • Bounded contexts: delineate explicit contexts to prevent ambiguity and integration issues across domains.

Quick Start

  • Identify data-only objects and move relevant behavior into their owning entities.
  • Define small aggregates with invariants and reference other aggregates by ID.
  • Introduce domain events to represent significant domain changes and use them to drive integrations.

Frequently Asked Questions about ddd-oop

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

FAQPage Schema
How do I build a rich domain model and avoid anemic domain objects?

To build a rich domain model, you embed behavior directly within domain objects and enforce invariants there, preventing anemic structures where data and logic are incorrectly separated.

How do I design small aggregates in domain-driven design?

Design small aggregates by keeping them cohesive and enforcing invariants internally, while referencing other aggregates strictly by identity to improve concurrency and maintain clear boundaries.

When do I need bounded contexts in backend software design?

You need bounded contexts in backend software design to delineate explicit boundaries, preventing ambiguity and integration issues across different domains by ensuring ubiquitous language alignment.

How do I use domain events to capture meaningful domain changes?

Use domain events to represent significant domain changes explicitly, driving integrations and communication between bounded contexts while aligning code with business concepts.

Do I need external tooling to apply DDD and OOP principles?

No, you do not need external tooling to apply DDD and OOP principles; this approach can be explained and taught through conceptual walkthroughs and practical examples.

What is the best way to align code with business concepts using ubiquitous language?

The best way to align code with business concepts is by adopting a ubiquitous language, capturing meaningful domain changes through domain events to ensure clearer communication across bounded contexts.