zhanghandong/rust-skills/m09-domain
Claude Code and agent skill by zhanghandong/rust-skills
Trust tier 2
- community
Source check pending
Checking that the SKILL.md file is still in the repository.
CRITICAL: Use for domain modeling. Triggers: domain model, DDD, domain-driven design, entity, value object, aggregate, repository pattern, business rules, validation, invariant, 领域模型, 领域驱动设计, 业务规则
Install
npx vskill@latest install zhanghandong/rust-skills/m09-domainSKILL.md
Domain Modeling
Layer 2: Design Choices
Core Question
What is this concept's role in the domain?
Before modeling in code, understand:
- Is it an Entity (identity matters) or Value Object (interchangeable)?
- What invariants must be maintained?
- Where are the aggregate boundaries?
Domain Concept → Rust Pattern
| Domain Concept | Rust Pattern | Ownership Implication | |
|---|---|---|---|
| Entity | struct + Id | Owned, unique identity | |
| Value Object | struct + Clone/Copy | Shareable, immutable | |
| Aggregate Root | struct owns children | Clear ownership tree | |
| Repository | trait | Abstracts persistence | |
| Domain Event | enum | Captures state changes | |
| Service | impl block / free fn | Stateless operations |
Thinking Prompt
Before creating a domain type:
- What's the concept's identity?
- Needs unique identity → Entity (Id field)
- Interchangeable by value → Value Object (Clone/Copy)
- What invariants must hold?
- Always valid → private fields + validated constructor
- Transition rules → type state pattern
- Who owns this data?
- Single owner (parent) → owned field
- Shared reference → Arc/Rc
- Weak reference → Weak
Trace Up ↑
To domain constraints (Layer 3):
| Design Question | Trace To | Ask | |
|---|---|---|---|
| Entity vs Value Object | domain-* | What makes two instances "the same"? | |
| Aggregate boundaries | domain-* | What must be consistent together? | |
| Validation rules | domain-* | What business rules apply? |
Trace Down ↓
To implementation (Layer 1):
Quick Reference
| DDD Concept | Rust Pattern | Example | |
|---|---|---|---|
| Value Object | Newtype | struct Email(String); | |
| Entity | Struct + ID | struct User { id: UserId, ... } | |
| Aggregate | Module boundary | mod order { ... } | |
| Repository | Trait | trait UserRepo { fn find(...) } | |
| Domain Event | Enum | enum OrderEvent { Created, ... } |
Pattern Templates
Value Object
Entity
Aggregate
Common Mistakes
| Mistake | Why Wrong | Better | |
|---|---|---|---|
| Primitive obsession | No type safety | Newtype wrappers | |
| Public fields with invariants | Invariants violated | Private + accessor | |
| Leaked aggregate internals | Broken encapsulation | Methods on root | |
| String for semantic types | No validation | Validated newtype |
Related Skills
| When | See | |
|---|---|---|
| Type-driven implementation | m05-type-driven | |
| Ownership for aggregates | m01-ownership | |
| Domain error handling | m13-domain-error | |
| Specific domain rules | domain-* |
Security
- Security scanPassed, 100 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/m09-domain/SKILL.md
Popularity
- Repository stars
- 1,136
- Repository forks
- 99
- 7-day trend score
- 35
Stars and forks are for the whole GitHub repository, not this skill alone. Refreshed 5 Apr 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/zhanghandong/rust-skills/m09-domain)