From dotnet-10
Decide where DDD tactical patterns (aggregates, value objects, domain services, specifications) earn their keep in a .NET 10 modular monolith, and where they are ceremony. One tool in the modular-monolith toolbox — reach for it to decide the internal shape of a module after the topology is set. Use when the user asks "should this be an aggregate", "do I need a value object here", "is this a domain service or an application service", "where do invariants live", or reaches for DDD vocabulary on a CRUD-shaped module. Status: placeholder — uses the orchestrator's working summary until deep content is written. Applies to the dotnet-10 plugin (.NET 10 / C# 14 / EF Core 10).
How this skill is triggered — by the user, by Claude, or both
Slash command
/dotnet-10:modular-dddThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
> **Status — placeholder.** Scaffolded; deep content to be written. For the working methodology today, use [`modular-monolith`](../modular-monolith/SKILL.md) — this skill is one tool in its toolbox.
Status — placeholder. Scaffolded; deep content to be written. For the working methodology today, use
modular-monolith— this skill is one tool in its toolbox.
DDD tactical patterns are tools. Used where invariants live, they protect the domain from corruption and concentrate change. Used where the data is CRUD-shaped, they are bureaucracy: a ResidentAggregate whose only invariant is "field is non-null" is a class that does the same thing as an EF Core entity, more slowly, with more code, and with worse tooling. The job of this skill is to tell the two cases apart and call each by the right name.
The decision is per-module, sometimes per-feature. A module can be aggregate-rooted at its core and have CRUD-shaped peripheral features. Most real designs are mixed; treating every module as fully DDD or fully CRUD loses information.
Engineers on .NET 10 deciding the internal shape of a module after the topology has been drawn (modular-design) and the cross-module language has been aligned (modular-shared-language).
modular-design.modular-shared-language.record struct, equality, validation in the constructor, IParsable<T>IQueryable is enoughmodular-shared-language)modular-monolith — orchestrator; this skill is one tool in its toolboxmodular-shared-language — feeds this skill the term map that decides where ACLs livemodular-vertical-slice — organizes features inside the shape this skill decidesmodular-ddd-classifier — uses this skill's vocabulary to label legacy codenpx claudepluginhub marafiq/dotnet-skills --plugin dotnetCreates, edits, and optimizes skills for Claude Code, including drafting, evaluating with test prompts, iterating on performance, and improving skill descriptions for better triggering accuracy.