nesbo/dotnet-claude-code-skills/ddd-dotnet
Claude Code and agent skill by nesbo/dotnet-claude-code-skills
- community
Checking that the SKILL.md file is still in the repository.
Install
npx vskill@latest install nesbo/dotnet-claude-code-skills/ddd-dotnetSKILL.md
Domain-Driven Design (DDD) in .NET - Basics & Patterns
Overview
This skill provides a comprehensive guide to implementing Domain-Driven Design patterns in .NET, based on real-world production code from the LMP project. These patterns promote clean architecture, maintainability, and testability.
Key Benefits
- Clear Separation of Concerns: Domain logic isolated from infrastructure
- CQRS Pattern: Optimized read and write operations
- Hexagonal Architecture: Ports (domain) and Adapters (infrastructure)
- Testability: Domain logic testable without dependencies
- Time Control: Deterministic time handling for testing
Core Building Blocks
1. Domain Object Hierarchy
All domain objects implement a marker interface at the root:
2. Aggregates
Aggregates are consistency boundaries and entry points for domain operations.
Versioned Aggregates track changes over time:
Key Principles:
- Aggregates are the only objects that can be retrieved from repositories
- They maintain invariants and enforce business rules
- They control access to their entities
- Use
CreatedAtfor business time,InsertedAtfor audit/database time
3. Entities
Entities are objects with identity that belong to aggregates:
Example Entity:
Aggregate Root Pattern
Example: ShipperOrder Aggregate
Key Patterns:
- Protected parameterless constructor for EF Core
- Public constructor with all required data
- Private setters on properties
- Private backing fields for collections with
IReadOnlyCollection<T>exposure - Business logic encapsulated in methods
- Validation within business methods
- Track domain events in collections
Repository Pattern (CQRS)
Write Repository
Query Repository
Usage:
- Write operations: Use
IRepository<TAggregate, TUniqueKey>in command handlers - Read operations: Use
IQueryRepository<TAggregate>in query handlers - Write repositories can check existence and add entities
- Query repositories are simpler and optimized for reads
- In command handlers where you need to load(read) then update the aggregate and save, use the write repository to load the aggregate. The query repository does not track the entity and the save on the write repository will do nothing if the aggregate is loaded with the query repository.
Specific Repository Interfaces
Define domain-specific repository interfaces in the Domain project:
Implementations live in the Data project (adapter layer).
Time Control Pattern
NEVER use `DateTime.Now` or `DateTime.UtcNow` directly in domain code!
IClock Interface
Usage in Domain Code
Benefits:
- Testable: Inject mock clock for deterministic tests
- Auditable: Separate business time from processing time
- Consistent: All time handling centralized
Unit of Work Pattern
For transactions spanning multiple repositories:
Usage in Command Handlers:
Command Pattern (Paramore.Brighter)
Domain Command Base Class
Command Implementation
Commands and their handlers are in the same file:
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewNot runA model review is scheduled for the next rescan.
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingddd-dotnet/SKILL.md
Popularity
- Repository stars
- 46
- Repository forks
- 2
- 7-day trend score
- 19
Stars and forks are for the whole GitHub repository, not this skill alone. Refreshed 18 Mar 2026, 7 months ago.
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/nesbo/dotnet-claude-code-skills/ddd-dotnet)