domain-driven-design
Use when aligning code structure with business concepts, designing service boundaries, or when domain experts and developers cannot agree on what things mean. Triggers on: "도메인 모델링", "바운디드 컨텍스트", "DDD", "domain-driven design", "bounded context".
- License 许可
- MIT
- 最近更新
- 2026-11-11
- Stars
- ★ 3
- Forks
- 1
01 前言 Front Matter
- name
- domain-driven-design
- license
- MIT
- metadata
- { "version": "1.0.1" }
- scenarios
- [ "help me model this business domain", "how do I define bounded contexts for this system?", "what's the difference between entity and value object?", "도메인 모델 설계해줘", "바운디드 컨텍스트 어떻게 나눠야 해?", "도메인 전문가와 개발자 언어가 달라서 문제야" ]
- description
- Use when aligning code structure with business concepts, designing service boundaries, or when domain experts and developers cannot agree on what things mean. Triggers on: "도메인 모델링", "바운디드 컨텍스트", "DDD", "domain-driven design", "bounded context".
- compatibility
- { "optional": [ "mcp-reasoner" ], "recommended": [ "think-tool", "sequential-thinking" ], "remote_mcp_note": "think-tool이 있으면 바운디드 컨텍스트 경계 결정과 컨텍스트 매핑 트레이드오프 분석이 더 정확해집니다. Claude 설정 → MCP Servers에서 remote SSE 엔드포인트를 추가하세요." }
02 资源文件 6
- 参考文档references/bounded-contexts.md3.0 KB
- 参考文档references/building-blocks.md3.1 KB
- 参考文档references/domain-events.md2.7 KB
- 参考文档references/repositories-factories.md3.0 KB
- 参考文档references/strategic-design.md2.4 KB
- 参考文档references/ubiquitous-language.md2.3 KB
03 SKILL.md 正文
Standing Mandates
- NEVER draw a context boundary from a noun list. A border goes where a term changes meaning, and the map quotes both
meanings. Contexts cut per noun (
Customer,Order,Product) become entity services that call each other on every request — the coupling stays, now over the network, anddevelop:service-boundary-validatorthen finds it. - A business rule nobody stated is marked
[확인 필요: <rule>], never invented; an invented invariant ships as code.
Goal: every context on the map cites the term whose meaning changes at its border, every aggregate names the invariant it guards, and the closing tally recounts to the tables.
Domain-Driven Design
Keeps the code shaped like the business: shared words, explicit borders, small aggregates that guard real rules.
Not for layering or the dependency rule (develop:clean-architecture); checking whether existing service cuts hold
(develop:service-boundary-validator); topology, ADRs, datastore choice (develop:architecture-designer); running a
discovery workshop from nothing (develop:event-storming). Plain CRUD with no rules → say so and stop.
Process
- Read before asking. Collect the vocabulary already in the code, docs, tickets and the user's words. Ask at most one line, only for what none of them answers.
- Language. List each key term with its meaning per speaker or module. A term with two meanings is a border
candidate; a technical name (
Manager,Helper,Processor) marks an unnamed concept. Detail:references/ubiquitous-language.md. - Contexts. Draw a border at each meaning change, name the relationship on each edge (ACL, Shared Kernel,
Conformist, Open Host / Published Language) and classify each context core / supporting / generic. Detail:
references/bounded-contexts.md,references/strategic-design.md. - Aggregates. Per context: entities vs value objects, then aggregates sized to one invariant each, referencing
other aggregates by id. An aggregate with no invariant to name is not one — fold it or drop it. Detail:
references/building-blocks.md. - Events and persistence. Past-tense events each aggregate emits, with consumers; repository interfaces in the
domain, factories where construction can fail. Detail:
references/domain-events.md,references/repositories-factories.md. - Check. Recount: contexts without a quoted term, aggregates without an invariant, rules left in services over a hollow model, outside systems reached without translation. Fix or list each; then write the tally.
Output Template
Context map — Mermaid or a table: context, type (core/supporting/generic), edges with relationship pattern.
| Context | Border term | Meaning here | Meaning across the border |
|---|---|---|---|
| Billing | "account" | payer with a balance | Identity: login credentials |
| Context | Aggregate | Invariant it guards | Events emitted → consumer |
|---|---|---|---|
| Ordering | Order | total = Σ lines; no lines after placed |
OrderPlaced → Billing |
Glossary: term — definition, per context. Open: each [확인 필요: …] with who can answer.
Tally: <n> contexts (core <a> / supporting <b> / generic <c>) · <m> aggregates, <m> with an invariant ·
<k> open rules.
What Claude Does / What You Do
| Claude | You |
|---|---|
| Extracts terms from code and docs, draws borders where meanings split | Confirm each meaning with a domain expert |
| Sizes aggregates to named invariants; marks unstated rules | Supply or reject each [확인 필요] rule |
| Names events, consumers and repository interfaces | Decide which context is core and where effort goes |
Related Skills
develop:event-storming— discover events and terms with the team before modellingdevelop:service-boundary-validator— test whether the drawn borders survive as service cutsdevelop:clean-architecture— layers and the dependency rule inside a contextdevelop:architecture-designer— topology and ADRs once the contexts are set
04 同仓库更多 Skills
diagram
Use when something must be drawn as a checked figure, not Mermaid: page layout, B-tree, lock timeline, ER, benchmark chart, architecture, sequence. SVG + PNG. Triggers: "도식화해줘", "그림으로 그려줘", "책에 넣을 그림", "시퀀스 다이어그램", "draw this as a figure".
test-master
Use when writing, improving, or auditing tests, or writing case specs with expected results from a spec. Triggers: "테스트 작성", "테스트 케이스 작성", "test case writing", "단위 테스트", "커버리지 분석", "test plan", "defect report".
sre-engineer
Use when setting up production reliability practices. Triggers on: "SLO 정하고 싶어", "에러 버짓", "알람 피로", "반복 작업(toil) 줄이기", "golden signals dashboard", "burn-rate alert". Not for active incidents or chaos tests.
sql-pro
Use when someone needs help writing or rewriting SQL — authoring complex joins, CTEs, window functions, or recursive queries — or designing a schema from scratch, normalizing an existing one, or migrating queries between database dialects.
spring-boot-engineer
Use when building or extending a Spring Boot 3.x Java backend — REST, Spring Security, JPA, WebFlux, Actuator. Triggers on: "Spring Boot API", "스프링 시큐리티 설정", "JPA 연동". Not for service decomposition or query tuning.
spec-driven-development
Use when a feature should be specified before it is coded — stories, acceptance criteria, tasks, a per-criterion check. Triggers: "스펙 먼저", "명세부터 쓰고 구현", "수용 기준 먼저", "spec first", "spec-driven development".