Claude-skill-registry ddd-planning
Domain-Driven Design 기획 및 설계 전문 skill. 프로젝트 도메인 분석, Bounded Context 정의, Aggregate 설계, Context Mapping, Event Storming, Ubiquitous Language 정의 등 DDD 전체 프로세스를 지원합니다. 사용 시기: (1) DDD 기획/설계를 요청할 때 (2) 도메인 모델링을 요청할 때 (3) Bounded Context, Aggregate, Domain Event 설계 시 (4) 화면정의서/DB정의서에서 도메인 추출 시 (5) Context Map 작성 시 (6) Kotlin DDD 코드 생성 시
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/ddd-planning" ~/.claude/skills/majiayu000-claude-skill-registry-ddd-planning && rm -rf "$T"
manifest:
skills/data/ddd-planning/SKILL.mdsource content
DDD Planning
Overview
이 skill은 Domain-Driven Design(DDD) 방법론으로 프로젝트를 기획하고 설계합니다. 기존 문서(화면정의서, DB정의서, 기획서)를 분석하여 도메인을 추출하고, DDD 산출물을 생성합니다.
Workflow
Phase 1: 도메인 분석
기존 문서를 분석하여 도메인을 추출합니다.
- 문서 읽기: 화면정의서, DB정의서, 기획서 읽기
- 도메인 식별: 비즈니스 기능별 도메인 추출
- 용어 수집: 도메인 용어 수집 (Ubiquitous Language 초안)
Phase 2: Strategic Design
전략적 설계를 수행합니다. 자세한 가이드는
references/strategic-design.md 참고.
- 도메인 분류: Core / Supporting / Generic 분류
- Bounded Context 정의: Context 경계와 책임 정의
- Context Mapping: Context 간 관계와 통합 패턴 정의
- Ubiquitous Language: Context별 용어집 작성
산출물:
사용assets/templates/bounded-context.md
사용assets/templates/context-map.md
사용assets/templates/ubiquitous-language-glossary.md
Phase 3: Tactical Design
전술적 설계를 수행합니다. 자세한 가이드는
references/tactical-design.md 참고.
- Aggregate 식별: 트랜잭션 경계와 불변식 정의
- Entity/Value Object 분류: 식별자 필요성과 가변성 기준
- Domain Event 정의: 중요 비즈니스 사건 정의
- Repository 인터페이스: Aggregate별 Repository 정의
산출물:
사용assets/templates/aggregate-design.md
사용assets/templates/domain-model.md
Phase 4: Event Storming (선택)
Event Storming 워크숍을 수행합니다. 가이드는
references/event-storming.md 참고.
산출물:
사용assets/templates/event-storming-result.md
Phase 5: 코드 생성
Kotlin DDD 보일러플레이트를 생성합니다.
템플릿 위치:
assets/kotlin-ddd/
: Aggregate Root 패턴Aggregate.kt
: Entity 패턴Entity.kt
: Value Object 패턴ValueObject.kt
: Domain Event 패턴DomainEvent.kt
: Repository 인터페이스 패턴Repository.kt
: Domain Service 패턴DomainService.kt
Phase 6: 문서 반영
설계 결과를 기존 프로젝트 문서에 반영합니다.
- 기획서에 도메인 모델 섹션 추가
- DB정의서와 도메인 모델 정합성 확인
- 화면정의서와 Bounded Context 매핑
Quick Reference
도메인 분류 기준
| 분류 | 특징 | 전략 |
|---|---|---|
| Core | 비즈니스 차별화 요소, 복잡한 로직 | 직접 개발, 최우선 투자 |
| Supporting | Core 지원, 중간 복잡도 | 직접 개발 또는 커스터마이징 |
| Generic | 범용 기능, 비즈니스 특화 없음 | 외부 서비스/라이브러리 |
Context Mapping 패턴
| 패턴 | 설명 | 사용 시기 |
|---|---|---|
| OHS | Open Host Service | 여러 Consumer 대응 |
| PL | Published Language | OHS와 함께, 공통 언어 |
| ACL | Anti-Corruption Layer | 레거시/외부 연동 |
| CS | Customer-Supplier | Upstream이 협조적 |
| CF | Conformist | Upstream이 비협조적 |
Aggregate 설계 원칙
- 작게 유지: 대부분 1개 Entity
- ID 참조: Aggregate 간 객체 참조 금지
- 트랜잭션 경계: 1 트랜잭션 = 1 Aggregate
- 불변식 보호: 비즈니스 규칙은 Aggregate 내부에서
Resources
references/
DDD 개념과 패턴에 대한 가이드 문서입니다.
: Bounded Context, 도메인 분류, Context Mappingstrategic-design.md
: Aggregate, Entity, Value Object, Domain Eventtactical-design.md
: Context Mapping 패턴 상세context-mapping-patterns.md
: Event Storming 프로세스event-storming.md
: 용어집 작성 가이드ubiquitous-language.md
assets/templates/
DDD 문서 템플릿입니다.
{{PLACEHOLDER}}를 실제 값으로 교체하여 사용합니다.
: Bounded Context 정의서bounded-context.md
: Aggregate 설계서aggregate-design.md
: Context Map 문서context-map.md
: Event Storming 결과event-storming-result.md
: 용어집ubiquitous-language-glossary.md
: 전체 도메인 모델 문서domain-model.md
assets/kotlin-ddd/
Kotlin DDD 코드 보일러플레이트입니다.
: Aggregate Root 패턴 (팩토리 메서드, 이벤트 발행)Aggregate.kt
: Entity 패턴 (ID 기반 동등성)Entity.kt
: Value Object 패턴 (불변성, 자가 검증)ValueObject.kt
: Domain Event 패턴 (이벤트 핸들러 포함)DomainEvent.kt
: Repository 인터페이스 (페이지네이션 포함)Repository.kt
: Domain Service 패턴 (정책, 계산 서비스)DomainService.kt
Usage Examples
도메인 분석 요청
"화면정의서와 DB정의서를 분석해서 도메인을 추출해줘" "FanPulse 프로젝트의 Bounded Context를 정의해줘"
Strategic Design 요청
"투표 도메인과 커뮤니티 도메인의 Context Map을 그려줘" "Core/Supporting/Generic 도메인을 분류해줘"
Tactical Design 요청
"투표 Aggregate를 설계해줘" "멤버십 도메인의 Entity와 Value Object를 정의해줘" "Domain Event 목록을 만들어줘"
코드 생성 요청
"Vote Aggregate의 Kotlin 코드를 생성해줘" "VoteRepository 인터페이스를 만들어줘"
문서 생성 요청
"투표 Context의 Bounded Context 정의서를 작성해줘" "Ubiquitous Language 용어집을 만들어줘" "전체 도메인 모델 문서를 생성해줘"