Why Use This
This skill provides specialized capabilities for mitkox's codebase.
Use Cases
- Developing new features in the mitkox repository
- Refactoring existing code to follow mitkox standards
- Understanding and working with mitkox's codebase structure
Install Guide
2 steps - 1
- 2
Install inside Ananke
Click Install Skill, paste the link below, then press Install.
https://github.com/mitkox/ai-coding-factory/tree/master/.opencode/skill/net-domain-model
Skill Snapshot
Auto scan of skill assets. Informational only.
Valid SKILL.md
Checks against SKILL.md specification
Source & Community
Updated At Jan 10, 2026, 10:29 AM
Skill Stats
SKILL.md 123 Lines
Total Files 1
Total Size 0 B
License MIT
---
name: net-domain-model
description: Create domain models following Domain-Driven Design principles
license: MIT
compatibility: opencode
metadata:
audience: .net-developers
framework: entityframeworkcore
patterns: ddd
---
## What I Do
I help you create domain models following DDD principles:
- Entities with identity
- Value objects (immutable)
- Aggregates and aggregate roots
- Domain events
- Repositories interfaces
- Domain services
## When to Use Me
Use this skill when:
- Modeling business domain
- Creating entity classes
- Implementing value objects
- Defining aggregate boundaries
- Creating domain services
## Domain Model Structure
```
src/{ProjectName}.Domain/
├── Entities/
│ ├── Product.cs
│ ├── Order.cs
│ └── Customer.cs
├── ValueObjects/
│ ├── Money.cs
│ ├── Email.cs
│ └── Address.cs
├── Aggregates/
│ └── OrderAggregate/
│ ├── Order.cs
│ └── OrderItem.cs
├── Interfaces/
│ ├── IProductRepository.cs
│ ├── IOrderRepository.cs
│ └── IUnitOfWork.cs
├── Events/
│ ├── OrderCreatedEvent.cs
│ └── OrderPaidEvent.cs
└── Services/
└── DomainService.cs
```
## Patterns I Implement
### Entity
```csharp
public abstract class Entity
{
public Guid Id { get; protected set; }
public DateTime CreatedAt { get; protected set; }
public DateTime? UpdatedAt { get; protected set; }
public List<IDomainEvent> DomainEvents { get; } = new();
protected Entity(Guid id) => Id = id;
protected Entity() { }
}
```
### Value Object
```csharp
public abstract class ValueObject : IEquatable<ValueObject>
{
protected abstract IEnumerable<object> GetEqualityComponents();
public bool Equals(ValueObject? other)
{
if (other is null) return false;
if (ReferenceEquals(this, other)) return true;
return GetEqualityComponents()
.SequenceEqual(other.GetEqualityComponents());
}
}
```
### Aggregate Root
```csharp
public abstract class AggregateRoot : Entity
{
public override void RaiseDomainEvent(IDomainEvent domainEvent)
{
DomainEvents.Add(domainEvent);
}
public void ClearDomainEvents() => DomainEvents.Clear();
}
```
## Best Practices
1. Entities protect invariants
2. Value objects are immutable
3. Aggregates define consistency boundaries
4. Domain events capture business events
5. Repositories are in Domain layer
6. Domain services contain business logic
## Example Usage
```
Create a domain model for an e-commerce system with:
- Product entity
- Order aggregate root
- Money value object
- OrderCreated domain event
- Repository interfaces
```
I will generate complete domain model following DDD patterns.