muno-claude-plugin 1.4.0 → 1.4.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json
CHANGED
package/templates/WORKFLOW.md
CHANGED
|
@@ -11,9 +11,10 @@ AI 기반 개발 워크플로우 스킬 체계입니다.
|
|
|
11
11
|
|
|
12
12
|
| 스킬 | 설명 | 주요 입력 |
|
|
13
13
|
|------|------|----------|
|
|
14
|
+
| `/architecture` | System Architecture (SAD) | 시스템 정보 |
|
|
14
15
|
| `/prd-generator` | PRD 생성 | 요구사항 |
|
|
15
16
|
| `/epic-story-generator` | Epic & Story 생성 | PRD (선택) |
|
|
16
|
-
| `/hld-generator` |
|
|
17
|
+
| `/hld-generator` | Feature HLD | SAD + PRD + Story |
|
|
17
18
|
| `/lld-generator` | Low-Level Design | HLD |
|
|
18
19
|
| `/task-generator` | Implementation Task | Story + LLD |
|
|
19
20
|
| `/tc-generator` | Test Case 생성 | Story AC |
|
|
@@ -74,9 +75,14 @@ AI 기반 개발 워크플로우 스킬 체계입니다.
|
|
|
74
75
|
```
|
|
75
76
|
project/
|
|
76
77
|
├── documents/
|
|
77
|
-
│ ├──
|
|
78
|
-
│
|
|
79
|
-
│
|
|
78
|
+
│ ├── architecture/
|
|
79
|
+
│ │ └── system-architecture.md ← SAD (1개, 지속 업데이트)
|
|
80
|
+
│ ├── prd/
|
|
81
|
+
│ │ └── feature-prd.md
|
|
82
|
+
│ ├── hld/
|
|
83
|
+
│ │ └── feature-hld.md ← Feature HLD (피처별)
|
|
84
|
+
│ └── lld/
|
|
85
|
+
│ └── feature-lld.md
|
|
80
86
|
│
|
|
81
87
|
├── backlogs/ # Epic/Story
|
|
82
88
|
│ └── feature-name/
|
|
@@ -20,12 +20,35 @@ color: cyan
|
|
|
20
20
|
|
|
21
21
|
현재 프로젝트 상황을 분석하여 **다음 워크플로우를 제안**합니다.
|
|
22
22
|
- 정적인 워크플로우를 강제하지 않음
|
|
23
|
-
-
|
|
23
|
+
- **복잡도 + 변경 규모 + 기존 문서 커버리지**를 종합 판단
|
|
24
24
|
- 불필요한 단계는 건너뛰기 제안
|
|
25
25
|
|
|
26
26
|
---
|
|
27
27
|
|
|
28
|
-
##
|
|
28
|
+
## 판단 기준: 3가지 축
|
|
29
|
+
|
|
30
|
+
워크플로우 결정은 **복잡도**, **변경 규모**, **기존 문서 커버리지** 3가지를 종합 판단합니다.
|
|
31
|
+
|
|
32
|
+
```
|
|
33
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
34
|
+
│ 워크플로우 판단 매트릭스 │
|
|
35
|
+
├─────────────────────────────────────────────────────────────────┤
|
|
36
|
+
│ │
|
|
37
|
+
│ [축 1] 복잡도 (Complexity) │
|
|
38
|
+
│ └─ 기술적 난이도, 아키텍처 영향 │
|
|
39
|
+
│ │
|
|
40
|
+
│ [축 2] 변경 규모 (Scale) │
|
|
41
|
+
│ └─ 영향 범위, 파일/모듈/팀 수 │
|
|
42
|
+
│ │
|
|
43
|
+
│ [축 3] 기존 문서 커버리지 (Coverage) │
|
|
44
|
+
│ └─ 기존 HLD/LLD가 새 변경을 커버하는지 │
|
|
45
|
+
│ │
|
|
46
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## 축 1: 복잡도 레벨 정의
|
|
29
52
|
|
|
30
53
|
| Level | 설명 | 예시 |
|
|
31
54
|
|-------|------|------|
|
|
@@ -37,6 +60,68 @@ color: cyan
|
|
|
37
60
|
|
|
38
61
|
---
|
|
39
62
|
|
|
63
|
+
## 축 2: 변경 규모 (Scale)
|
|
64
|
+
|
|
65
|
+
| 규모 | 기준 | 예시 |
|
|
66
|
+
|------|------|------|
|
|
67
|
+
| **S (Small)** | 파일 1-5개, 단일 모듈 | 버그 수정, 단일 API 변경 |
|
|
68
|
+
| **M (Medium)** | 파일 6-20개, 2-3개 모듈 | 새 기능, 모듈 내 리팩토링 |
|
|
69
|
+
| **L (Large)** | 파일 20개+, 4개+ 모듈 | 크로스커팅 변경, 대규모 리팩토링 |
|
|
70
|
+
| **XL (Extra Large)** | 전체 시스템, 다중 팀 | 아키텍처 전환, 플랫폼 마이그레이션 |
|
|
71
|
+
|
|
72
|
+
### 규모가 크면 복잡도와 무관하게 문서 필요
|
|
73
|
+
|
|
74
|
+
```
|
|
75
|
+
단순하지만 규모가 큰 경우 (예: 전체 API에 rate limiting 추가)
|
|
76
|
+
├─ 복잡도: L2 (단일 패턴 적용)
|
|
77
|
+
├─ 규모: L (20개+ 파일, 모든 API)
|
|
78
|
+
└─ 결론: HLD 필요 (일관성 확보, 리뷰 용이)
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
---
|
|
82
|
+
|
|
83
|
+
## 축 3: 기존 문서 커버리지 (Coverage)
|
|
84
|
+
|
|
85
|
+
### 기존 HLD 커버리지 체크
|
|
86
|
+
|
|
87
|
+
```
|
|
88
|
+
기존 HLD가 있을 때, 새 변경이 다음에 해당하면 HLD 업데이트 필요:
|
|
89
|
+
- [ ] 새 컴포넌트/서비스 추가
|
|
90
|
+
- [ ] 기존 컴포넌트 간 연동 방식 변경
|
|
91
|
+
- [ ] 데이터 흐름 변경
|
|
92
|
+
- [ ] 기술 스택 추가/변경
|
|
93
|
+
|
|
94
|
+
하나라도 해당 → HLD 업데이트 또는 신규 작성
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
### 기존 LLD 커버리지 체크
|
|
98
|
+
|
|
99
|
+
```
|
|
100
|
+
기존 LLD가 있을 때, 새 변경이 다음에 해당하면 LLD 업데이트 필요:
|
|
101
|
+
- [ ] 새 데이터 서빙 전략
|
|
102
|
+
- [ ] 새 외부 의존성 추가
|
|
103
|
+
- [ ] 장애 대응 전략 변경
|
|
104
|
+
- [ ] 성능 요구사항 변경
|
|
105
|
+
|
|
106
|
+
하나라도 해당 → LLD 업데이트 또는 신규 작성
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
---
|
|
110
|
+
|
|
111
|
+
## 복합 판단 매트릭스
|
|
112
|
+
|
|
113
|
+
| 복잡도 | 규모 | 기존 문서 커버 | 권장 워크플로우 |
|
|
114
|
+
|--------|------|---------------|----------------|
|
|
115
|
+
| L1-L2 | S | - | 바로 구현 |
|
|
116
|
+
| L1-L2 | M-L | - | Task 분해 필요, HLD 선택적 |
|
|
117
|
+
| L1-L2 | L-XL | - | **HLD 필요** (규모로 인한 조정 필요) |
|
|
118
|
+
| L3 | S-M | 커버됨 | Story → Task |
|
|
119
|
+
| L3 | S-M | 커버 안됨 | Story → LLD 업데이트 → Task |
|
|
120
|
+
| L3 | L-XL | - | **HLD 필요** → LLD → Task |
|
|
121
|
+
| L4-L5 | - | - | PRD → Epic/Story → HLD → LLD → Task |
|
|
122
|
+
|
|
123
|
+
---
|
|
124
|
+
|
|
40
125
|
## 레벨별 권장 워크플로우
|
|
41
126
|
|
|
42
127
|
### L1~L2: 단순 작업
|
|
@@ -152,17 +237,21 @@ color: cyan
|
|
|
152
237
|
# 워크플로우 분석
|
|
153
238
|
|
|
154
239
|
## 현재 상태
|
|
155
|
-
| 문서 | 상태 |
|
|
156
|
-
|
|
157
|
-
| PRD |
|
|
158
|
-
| Epic/Story |
|
|
159
|
-
| HLD |
|
|
160
|
-
| LLD |
|
|
161
|
-
| Task |
|
|
162
|
-
| TC |
|
|
163
|
-
|
|
164
|
-
##
|
|
165
|
-
|
|
240
|
+
| 문서 | 상태 | 커버리지 |
|
|
241
|
+
|------|------|----------|
|
|
242
|
+
| PRD | ✅/❌ | - |
|
|
243
|
+
| Epic/Story | ✅/❌ | - |
|
|
244
|
+
| HLD | ✅/❌/⏭️ | 커버됨/커버 안됨/해당없음 |
|
|
245
|
+
| LLD | ✅/❌/⏭️ | 커버됨/커버 안됨/해당없음 |
|
|
246
|
+
| Task | ✅/❌ | - |
|
|
247
|
+
| TC | ✅/❌ | - |
|
|
248
|
+
|
|
249
|
+
## 판단 결과
|
|
250
|
+
| 축 | 판단 | 근거 |
|
|
251
|
+
|----|------|------|
|
|
252
|
+
| 복잡도 | L[N] | [이유] |
|
|
253
|
+
| 규모 | S/M/L/XL | 파일 N개, 모듈 N개 |
|
|
254
|
+
| 커버리지 | 커버됨/안됨 | [기존 문서 상태] |
|
|
166
255
|
|
|
167
256
|
## 다음 스텝 제안
|
|
168
257
|
1. **[권장]** `/skill-name` - [이유]
|
|
@@ -170,6 +259,9 @@ color: cyan
|
|
|
170
259
|
|
|
171
260
|
## 건너뛸 수 있는 단계
|
|
172
261
|
- [단계명]: [건너뛰기 가능 이유]
|
|
262
|
+
|
|
263
|
+
## 주의사항 (해당 시)
|
|
264
|
+
- [규모가 커서 HLD 필요] 또는 [기존 문서 커버 안됨]
|
|
173
265
|
```
|
|
174
266
|
|
|
175
267
|
---
|
|
@@ -226,6 +318,8 @@ color: cyan
|
|
|
226
318
|
|
|
227
319
|
분석 결과:
|
|
228
320
|
- 복잡도: L5 (신규 시스템)
|
|
321
|
+
- 규모: XL (새 시스템)
|
|
322
|
+
- 커버리지: 해당 없음 (신규)
|
|
229
323
|
- PRD: 필수 (이해관계자 합의 필요)
|
|
230
324
|
- Epic/Story: 필수
|
|
231
325
|
- HLD: 필수 (새 아키텍처)
|
|
@@ -236,6 +330,37 @@ color: cyan
|
|
|
236
330
|
2. [이후 순서] Epic/Story → HLD → LLD → Task
|
|
237
331
|
```
|
|
238
332
|
|
|
333
|
+
### 예시 5: 단순하지만 규모가 큰 경우
|
|
334
|
+
```
|
|
335
|
+
사용자: "모든 API 엔드포인트에 rate limiting 추가"
|
|
336
|
+
|
|
337
|
+
분석 결과:
|
|
338
|
+
- 복잡도: L2 (동일 패턴 반복 적용)
|
|
339
|
+
- 규모: L (30개+ API, 전체 모듈 영향)
|
|
340
|
+
- 커버리지: 기존 HLD에 rate limiting 미포함
|
|
341
|
+
|
|
342
|
+
제안:
|
|
343
|
+
1. [권장] `/hld-generator` - rate limiting 전략 문서화
|
|
344
|
+
- 규모가 커서 일관성 확보 필요
|
|
345
|
+
- 리뷰 및 합의 용이
|
|
346
|
+
2. [이후] `/task-generator` - 모듈별 Task 분해
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
### 예시 6: 기존 HLD 커버 안 되는 경우
|
|
350
|
+
```
|
|
351
|
+
사용자: "기존 채팅 시스템에 WebSocket → gRPC 스트리밍으로 변경"
|
|
352
|
+
|
|
353
|
+
분석 결과:
|
|
354
|
+
- 복잡도: L3 (프로토콜 변경)
|
|
355
|
+
- 규모: M (채팅 모듈 내)
|
|
356
|
+
- 커버리지: 기존 HLD는 WebSocket 기반으로 작성됨 → 커버 안 됨
|
|
357
|
+
|
|
358
|
+
제안:
|
|
359
|
+
1. [권장] `/hld-generator` - HLD 업데이트 (gRPC 스트리밍 아키텍처)
|
|
360
|
+
2. [이후] `/lld-generator` - 상세 설계
|
|
361
|
+
3. [이후] `/task-generator` - 구현 Task
|
|
362
|
+
```
|
|
363
|
+
|
|
239
364
|
---
|
|
240
365
|
|
|
241
366
|
## 자동 호출 조건
|
|
@@ -0,0 +1,442 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: architecture
|
|
3
|
+
description: |
|
|
4
|
+
전체 시스템 아키텍처 문서(SAD)를 생성하거나 업데이트합니다.
|
|
5
|
+
SAD는 시스템의 큰 그림을 담는 단일 문서로, 피처 HLD의 기반이 됩니다.
|
|
6
|
+
"아키텍처 문서 만들어줘", "시스템 구조", "전체 아키텍처" 등의 요청에 사용합니다.
|
|
7
|
+
allowed-tools: Read, Glob, Grep, Write, Edit, WebSearch, WebFetch
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# System Architecture Generator
|
|
11
|
+
|
|
12
|
+
## 페르소나
|
|
13
|
+
|
|
14
|
+
@.claude/personas/principal-engineer.md
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## SAD란?
|
|
19
|
+
|
|
20
|
+
**System Architecture Document (SAD)**는 전체 시스템의 큰 그림을 담는 **단일 문서**입니다.
|
|
21
|
+
|
|
22
|
+
### SAD vs Feature HLD
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
26
|
+
│ SAD (System Architecture Document) │
|
|
27
|
+
│ ───────────────────────────────── │
|
|
28
|
+
│ • 전체 시스템 1개 │
|
|
29
|
+
│ • 지속적으로 업데이트 │
|
|
30
|
+
│ • 컴포넌트 구성, 기술 스택, 인프라 │
|
|
31
|
+
│ • "우리 시스템은 이렇게 생겼다" │
|
|
32
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
33
|
+
│
|
|
34
|
+
│ 참조
|
|
35
|
+
▼
|
|
36
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
37
|
+
│ Feature HLD (피처별) │
|
|
38
|
+
│ ──────────────────── │
|
|
39
|
+
│ • 피처/에픽 단위로 작성 (여러 개) │
|
|
40
|
+
│ • SAD 내에서 이 피처가 어떻게 구현되는지 │
|
|
41
|
+
│ • "이 기능은 이렇게 만든다" │
|
|
42
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
### SAD에 포함되는 것
|
|
46
|
+
|
|
47
|
+
| 섹션 | 설명 |
|
|
48
|
+
|------|------|
|
|
49
|
+
| System Overview | 시스템 목적, 핵심 가치 |
|
|
50
|
+
| Architecture Diagram | 전체 컴포넌트 구성도 |
|
|
51
|
+
| Component Catalog | 각 컴포넌트 역할과 책임 |
|
|
52
|
+
| Tech Stack | 기술 스택과 선택 이유 |
|
|
53
|
+
| Data Architecture | 데이터 저장소, 흐름 |
|
|
54
|
+
| Infrastructure | 인프라 구성, 배포 환경 |
|
|
55
|
+
| Cross-Cutting Concerns | 인증, 로깅, 모니터링 등 |
|
|
56
|
+
| Integration Points | 외부 시스템 연동 |
|
|
57
|
+
|
|
58
|
+
### SAD에 포함하지 않는 것
|
|
59
|
+
|
|
60
|
+
- ❌ 특정 피처의 상세 설계 → Feature HLD
|
|
61
|
+
- ❌ API 스펙, DB 스키마 상세 → LLD
|
|
62
|
+
- ❌ 구현 코드, 설정 파일 → Task/Code
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## 워크플로우
|
|
67
|
+
|
|
68
|
+
```mermaid
|
|
69
|
+
flowchart TD
|
|
70
|
+
A[요청] --> B{기존 SAD 있음?}
|
|
71
|
+
B -->|Yes| C[업데이트 모드]
|
|
72
|
+
B -->|No| D[신규 생성 모드]
|
|
73
|
+
|
|
74
|
+
C --> E[변경사항 파악]
|
|
75
|
+
E --> F[영향 받는 섹션 식별]
|
|
76
|
+
F --> G[SAD 업데이트]
|
|
77
|
+
|
|
78
|
+
D --> H[Step 1: 시스템 개요 파악]
|
|
79
|
+
H --> I[Step 2: 컴포넌트 구조 파악]
|
|
80
|
+
I --> J[Step 3: 기술 스택 파악]
|
|
81
|
+
J --> K[Step 4: 인프라 파악]
|
|
82
|
+
K --> L[SAD 작성]
|
|
83
|
+
|
|
84
|
+
G --> M[검토 요청]
|
|
85
|
+
L --> M
|
|
86
|
+
M -->|수정| G
|
|
87
|
+
M -->|수정| L
|
|
88
|
+
M -->|승인| N[저장]
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
## Step 0: 기존 SAD 확인
|
|
94
|
+
|
|
95
|
+
```
|
|
96
|
+
documents/architecture/system-architecture.md 파일이 존재하는지 확인합니다.
|
|
97
|
+
|
|
98
|
+
있으면 → 업데이트 모드
|
|
99
|
+
없으면 → 신규 생성 모드
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## 신규 생성 모드
|
|
105
|
+
|
|
106
|
+
### Step 1: 시스템 개요 파악
|
|
107
|
+
|
|
108
|
+
수집해야 할 정보:
|
|
109
|
+
- 시스템의 목적과 핵심 가치
|
|
110
|
+
- 주요 사용자/고객
|
|
111
|
+
- 핵심 비즈니스 도메인
|
|
112
|
+
|
|
113
|
+
질문 예시:
|
|
114
|
+
```
|
|
115
|
+
시스템 아키텍처 문서를 작성하려고 합니다.
|
|
116
|
+
|
|
117
|
+
1. 이 시스템의 핵심 목적은 무엇인가요?
|
|
118
|
+
2. 주요 사용자는 누구인가요? (고객, 내부 사용자, 다른 시스템)
|
|
119
|
+
3. 핵심 비즈니스 도메인은 무엇인가요? (예: 이커머스, 채팅, 결제)
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
### Step 2: 컴포넌트 구조 파악
|
|
123
|
+
|
|
124
|
+
수집해야 할 정보:
|
|
125
|
+
- 주요 서비스/모듈 목록
|
|
126
|
+
- 각 컴포넌트의 역할과 책임
|
|
127
|
+
- 컴포넌트 간 통신 방식
|
|
128
|
+
|
|
129
|
+
질문 예시:
|
|
130
|
+
```
|
|
131
|
+
컴포넌트 구조를 파악하고 싶습니다.
|
|
132
|
+
|
|
133
|
+
1. 현재 시스템은 어떤 서비스/모듈로 구성되어 있나요?
|
|
134
|
+
2. 각 컴포넌트의 주요 역할은 무엇인가요?
|
|
135
|
+
3. 컴포넌트 간 통신은 어떻게 하나요? (REST, gRPC, 메시지 큐 등)
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### Step 3: 기술 스택 파악
|
|
139
|
+
|
|
140
|
+
수집해야 할 정보:
|
|
141
|
+
- 언어/프레임워크
|
|
142
|
+
- 데이터베이스
|
|
143
|
+
- 메시지 큐/캐시
|
|
144
|
+
- 클라우드/인프라
|
|
145
|
+
|
|
146
|
+
질문 예시:
|
|
147
|
+
```
|
|
148
|
+
기술 스택을 정리하고 싶습니다.
|
|
149
|
+
|
|
150
|
+
1. 사용 중인 언어와 프레임워크는 무엇인가요?
|
|
151
|
+
2. 데이터베이스는 무엇을 사용하나요? (RDB, NoSQL, 검색엔진 등)
|
|
152
|
+
3. 캐시, 메시지 큐 등 미들웨어가 있나요?
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
### Step 4: 인프라 파악
|
|
156
|
+
|
|
157
|
+
수집해야 할 정보:
|
|
158
|
+
- 배포 환경 (클라우드, 온프레미스)
|
|
159
|
+
- 컨테이너/오케스트레이션
|
|
160
|
+
- CI/CD 파이프라인
|
|
161
|
+
|
|
162
|
+
질문 예시:
|
|
163
|
+
```
|
|
164
|
+
인프라 구성을 파악하고 싶습니다.
|
|
165
|
+
|
|
166
|
+
1. 배포 환경은 어디인가요? (AWS, GCP, 온프레미스 등)
|
|
167
|
+
2. 컨테이너를 사용하나요? (Docker, Kubernetes)
|
|
168
|
+
3. CI/CD 파이프라인이 구성되어 있나요?
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
## 업데이트 모드
|
|
174
|
+
|
|
175
|
+
### 변경 유형별 처리
|
|
176
|
+
|
|
177
|
+
| 변경 유형 | 영향 섹션 | 처리 방법 |
|
|
178
|
+
|----------|----------|----------|
|
|
179
|
+
| 새 서비스 추가 | Architecture Diagram, Component Catalog | 다이어그램 업데이트, 컴포넌트 추가 |
|
|
180
|
+
| 기술 스택 변경 | Tech Stack | 변경 이력과 이유 기록 |
|
|
181
|
+
| 인프라 변경 | Infrastructure | 구성도 업데이트 |
|
|
182
|
+
| 외부 연동 추가 | Integration Points | 연동 포인트 추가 |
|
|
183
|
+
|
|
184
|
+
### 업데이트 시 질문 예시
|
|
185
|
+
```
|
|
186
|
+
기존 시스템 아키텍처에 변경이 있나요?
|
|
187
|
+
|
|
188
|
+
1. 어떤 변경이 있었나요? (새 서비스, 기술 스택 변경, 인프라 변경)
|
|
189
|
+
2. 변경 이유는 무엇인가요?
|
|
190
|
+
3. 기존 컴포넌트에 영향이 있나요?
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
## SAD 문서 구조
|
|
196
|
+
|
|
197
|
+
```markdown
|
|
198
|
+
# System Architecture Document
|
|
199
|
+
|
|
200
|
+
## 문서 정보
|
|
201
|
+
|
|
202
|
+
| 항목 | 내용 |
|
|
203
|
+
|------|------|
|
|
204
|
+
| 시스템명 | [시스템 이름] |
|
|
205
|
+
| 버전 | v1.0 |
|
|
206
|
+
| 최종 수정일 | YYYY-MM-DD |
|
|
207
|
+
| 작성자 | @작성자 |
|
|
208
|
+
|
|
209
|
+
---
|
|
210
|
+
|
|
211
|
+
## 1. System Overview
|
|
212
|
+
|
|
213
|
+
### 1.1 목적
|
|
214
|
+
[시스템의 핵심 목적과 해결하는 문제]
|
|
215
|
+
|
|
216
|
+
### 1.2 핵심 가치
|
|
217
|
+
[시스템이 제공하는 핵심 가치]
|
|
218
|
+
|
|
219
|
+
### 1.3 주요 사용자
|
|
220
|
+
| 사용자 유형 | 설명 |
|
|
221
|
+
|------------|------|
|
|
222
|
+
| [유형1] | [설명] |
|
|
223
|
+
|
|
224
|
+
---
|
|
225
|
+
|
|
226
|
+
## 2. Architecture Diagram
|
|
227
|
+
|
|
228
|
+
### 2.1 시스템 전체 구성도
|
|
229
|
+
|
|
230
|
+
```mermaid
|
|
231
|
+
graph TB
|
|
232
|
+
subgraph Client
|
|
233
|
+
Web[Web App]
|
|
234
|
+
Mobile[Mobile App]
|
|
235
|
+
end
|
|
236
|
+
|
|
237
|
+
subgraph Backend
|
|
238
|
+
API[API Gateway]
|
|
239
|
+
Service1[Service A]
|
|
240
|
+
Service2[Service B]
|
|
241
|
+
end
|
|
242
|
+
|
|
243
|
+
subgraph Data
|
|
244
|
+
DB[(Database)]
|
|
245
|
+
Cache[(Cache)]
|
|
246
|
+
end
|
|
247
|
+
|
|
248
|
+
Client --> API
|
|
249
|
+
API --> Service1
|
|
250
|
+
API --> Service2
|
|
251
|
+
Service1 --> DB
|
|
252
|
+
Service2 --> Cache
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
### 2.2 컴포넌트 간 통신
|
|
256
|
+
|
|
257
|
+
| From | To | Protocol | 설명 |
|
|
258
|
+
|------|-----|----------|------|
|
|
259
|
+
| [컴포넌트1] | [컴포넌트2] | REST/gRPC | [설명] |
|
|
260
|
+
|
|
261
|
+
---
|
|
262
|
+
|
|
263
|
+
## 3. Component Catalog
|
|
264
|
+
|
|
265
|
+
### 3.1 [컴포넌트명]
|
|
266
|
+
|
|
267
|
+
| 항목 | 내용 |
|
|
268
|
+
|------|------|
|
|
269
|
+
| 역할 | [역할 설명] |
|
|
270
|
+
| 책임 | [책임 목록] |
|
|
271
|
+
| 소유 팀 | [팀명] |
|
|
272
|
+
| 저장소 | [repo URL] |
|
|
273
|
+
|
|
274
|
+
---
|
|
275
|
+
|
|
276
|
+
## 4. Tech Stack
|
|
277
|
+
|
|
278
|
+
### 4.1 언어 & 프레임워크
|
|
279
|
+
|
|
280
|
+
| 레이어 | 기술 | 버전 | 선택 이유 |
|
|
281
|
+
|--------|------|------|----------|
|
|
282
|
+
| Backend | [기술] | [버전] | [이유] |
|
|
283
|
+
| Frontend | [기술] | [버전] | [이유] |
|
|
284
|
+
|
|
285
|
+
### 4.2 데이터 저장소
|
|
286
|
+
|
|
287
|
+
| 용도 | 기술 | 선택 이유 |
|
|
288
|
+
|------|------|----------|
|
|
289
|
+
| Primary DB | [기술] | [이유] |
|
|
290
|
+
| Cache | [기술] | [이유] |
|
|
291
|
+
|
|
292
|
+
### 4.3 미들웨어
|
|
293
|
+
|
|
294
|
+
| 용도 | 기술 | 선택 이유 |
|
|
295
|
+
|------|------|----------|
|
|
296
|
+
| Message Queue | [기술] | [이유] |
|
|
297
|
+
|
|
298
|
+
---
|
|
299
|
+
|
|
300
|
+
## 5. Data Architecture
|
|
301
|
+
|
|
302
|
+
### 5.1 데이터 흐름
|
|
303
|
+
|
|
304
|
+
```mermaid
|
|
305
|
+
flowchart LR
|
|
306
|
+
Source[Data Source] --> Process[Processing]
|
|
307
|
+
Process --> Store[Storage]
|
|
308
|
+
Store --> Serve[Serving]
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
### 5.2 데이터 저장소 매핑
|
|
312
|
+
|
|
313
|
+
| 도메인 | 저장소 | 데이터 특성 |
|
|
314
|
+
|--------|--------|------------|
|
|
315
|
+
| [도메인1] | [저장소] | [특성] |
|
|
316
|
+
|
|
317
|
+
---
|
|
318
|
+
|
|
319
|
+
## 6. Infrastructure
|
|
320
|
+
|
|
321
|
+
### 6.1 배포 환경
|
|
322
|
+
|
|
323
|
+
| 환경 | 용도 | 구성 |
|
|
324
|
+
|------|------|------|
|
|
325
|
+
| Production | 실서비스 | [구성] |
|
|
326
|
+
| Staging | 테스트 | [구성] |
|
|
327
|
+
|
|
328
|
+
### 6.2 인프라 구성도
|
|
329
|
+
|
|
330
|
+
```mermaid
|
|
331
|
+
graph TB
|
|
332
|
+
subgraph Cloud[AWS/GCP]
|
|
333
|
+
LB[Load Balancer]
|
|
334
|
+
subgraph K8s[Kubernetes]
|
|
335
|
+
Pod1[Service Pods]
|
|
336
|
+
end
|
|
337
|
+
DB[(RDS)]
|
|
338
|
+
end
|
|
339
|
+
|
|
340
|
+
LB --> K8s
|
|
341
|
+
K8s --> DB
|
|
342
|
+
```
|
|
343
|
+
|
|
344
|
+
---
|
|
345
|
+
|
|
346
|
+
## 7. Cross-Cutting Concerns
|
|
347
|
+
|
|
348
|
+
### 7.1 인증/인가
|
|
349
|
+
|
|
350
|
+
| 항목 | 방식 |
|
|
351
|
+
|------|------|
|
|
352
|
+
| 인증 | [JWT/OAuth/etc] |
|
|
353
|
+
| 인가 | [RBAC/ABAC/etc] |
|
|
354
|
+
|
|
355
|
+
### 7.2 로깅 & 모니터링
|
|
356
|
+
|
|
357
|
+
| 항목 | 도구 |
|
|
358
|
+
|------|------|
|
|
359
|
+
| 로깅 | [도구] |
|
|
360
|
+
| 메트릭 | [도구] |
|
|
361
|
+
| 트레이싱 | [도구] |
|
|
362
|
+
|
|
363
|
+
### 7.3 에러 핸들링
|
|
364
|
+
|
|
365
|
+
[공통 에러 처리 전략]
|
|
366
|
+
|
|
367
|
+
---
|
|
368
|
+
|
|
369
|
+
## 8. Integration Points
|
|
370
|
+
|
|
371
|
+
### 8.1 외부 시스템 연동
|
|
372
|
+
|
|
373
|
+
| 시스템 | 용도 | 프로토콜 | 담당 |
|
|
374
|
+
|--------|------|----------|------|
|
|
375
|
+
| [외부시스템] | [용도] | [프로토콜] | [담당팀] |
|
|
376
|
+
|
|
377
|
+
---
|
|
378
|
+
|
|
379
|
+
## 변경 이력
|
|
380
|
+
|
|
381
|
+
| 버전 | 날짜 | 변경 내용 | 작성자 |
|
|
382
|
+
|------|------|----------|--------|
|
|
383
|
+
| v1.0 | YYYY-MM-DD | 최초 작성 | @작성자 |
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
---
|
|
387
|
+
|
|
388
|
+
## 산출물
|
|
389
|
+
|
|
390
|
+
**저장 위치**: `documents/architecture/system-architecture.md`
|
|
391
|
+
|
|
392
|
+
---
|
|
393
|
+
|
|
394
|
+
## 작성 원칙
|
|
395
|
+
|
|
396
|
+
### 포함해야 하는 것
|
|
397
|
+
- 전체 시스템 구성도
|
|
398
|
+
- 모든 주요 컴포넌트와 역할
|
|
399
|
+
- 기술 스택과 선택 이유
|
|
400
|
+
- 데이터 흐름
|
|
401
|
+
- 인프라 구성
|
|
402
|
+
- Cross-cutting concerns
|
|
403
|
+
|
|
404
|
+
### 포함하지 않는 것
|
|
405
|
+
- 특정 피처의 상세 설계 (→ Feature HLD)
|
|
406
|
+
- API 스펙 상세 (→ LLD)
|
|
407
|
+
- 구현 코드 (→ Task)
|
|
408
|
+
|
|
409
|
+
### 작성 규칙
|
|
410
|
+
1. **현재 상태 반영**: 계획이 아닌 현재 구현된 상태
|
|
411
|
+
2. **변경 이력 기록**: 주요 변경은 변경 이력에 기록
|
|
412
|
+
3. **다이어그램 필수**: Mermaid로 구조 시각화
|
|
413
|
+
4. **선택 이유 기록**: 기술 선택의 이유 명시
|
|
414
|
+
|
|
415
|
+
---
|
|
416
|
+
|
|
417
|
+
## 금지 사항
|
|
418
|
+
|
|
419
|
+
1. **상세 설계 포함 금지**
|
|
420
|
+
```
|
|
421
|
+
❌ API 엔드포인트 상세, DB 스키마 상세
|
|
422
|
+
✅ 전체 구조와 컴포넌트 역할만
|
|
423
|
+
```
|
|
424
|
+
|
|
425
|
+
2. **미래 계획만 기록 금지**
|
|
426
|
+
```
|
|
427
|
+
❌ "향후 MSA로 전환 예정"만 기록
|
|
428
|
+
✅ 현재 상태 기록 + 계획은 별도 섹션
|
|
429
|
+
```
|
|
430
|
+
|
|
431
|
+
3. **변경 이력 누락 금지**
|
|
432
|
+
```
|
|
433
|
+
❌ 변경 시 이전 내용 삭제만
|
|
434
|
+
✅ 변경 이력 섹션에 기록
|
|
435
|
+
```
|
|
436
|
+
|
|
437
|
+
---
|
|
438
|
+
|
|
439
|
+
## 관련 스킬
|
|
440
|
+
|
|
441
|
+
- `/hld-generator`: SAD 기반 피처별 HLD 작성
|
|
442
|
+
- `/lld-generator`: HLD 기반 상세 설계
|
|
@@ -18,17 +18,35 @@ allowed-tools: Read, Glob, Grep, Write, Edit, WebSearch, WebFetch
|
|
|
18
18
|
|
|
19
19
|
## HLD란?
|
|
20
20
|
|
|
21
|
-
**High-Level Design (HLD)**는
|
|
21
|
+
**High-Level Design (HLD)**는 **피처/에픽 단위**로 작성하는 설계 문서입니다.
|
|
22
|
+
전체 시스템 아키텍처(SAD)를 기반으로, 해당 피처가 어떻게 구현될지 설계합니다.
|
|
23
|
+
|
|
24
|
+
### SAD vs Feature HLD
|
|
25
|
+
|
|
26
|
+
```
|
|
27
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
28
|
+
│ SAD (System Architecture Document) │
|
|
29
|
+
│ • 전체 시스템 1개, /architecture로 생성 │
|
|
30
|
+
│ • "우리 시스템은 이렇게 생겼다" │
|
|
31
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
32
|
+
│ 참조
|
|
33
|
+
▼
|
|
34
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
35
|
+
│ Feature HLD (이 스킬로 생성) │
|
|
36
|
+
│ • 피처/에픽 단위로 여러 개 │
|
|
37
|
+
│ • "이 기능은 SAD 내에서 이렇게 구현한다" │
|
|
38
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
39
|
+
```
|
|
22
40
|
|
|
23
41
|
### 언제 작성하는가
|
|
24
42
|
|
|
25
43
|
```
|
|
26
|
-
|
|
44
|
+
SAD(시스템 아키텍처) → PRD → Epic/Story → Feature HLD → LLD → 구현
|
|
27
45
|
```
|
|
28
46
|
|
|
29
|
-
-
|
|
30
|
-
-
|
|
31
|
-
-
|
|
47
|
+
- 새로운 피처/에픽 구현 전
|
|
48
|
+
- 기존 아키텍처에 영향을 주는 변경 시
|
|
49
|
+
- 복잡도 L3 이상 또는 규모가 큰 변경 시
|
|
32
50
|
|
|
33
51
|
### 목적
|
|
34
52
|
|
|
@@ -87,13 +105,28 @@ flowchart TD
|
|
|
87
105
|
|
|
88
106
|
---
|
|
89
107
|
|
|
90
|
-
## Step 0: PRD 확인
|
|
108
|
+
## Step 0: SAD 및 PRD 확인
|
|
109
|
+
|
|
110
|
+
Feature HLD 작성 전 SAD와 PRD 존재 여부를 확인합니다.
|
|
91
111
|
|
|
92
|
-
|
|
112
|
+
### SAD 확인
|
|
113
|
+
```
|
|
114
|
+
documents/architecture/system-architecture.md 파일 확인
|
|
115
|
+
|
|
116
|
+
있으면 → SAD 참조하여 HLD 작성
|
|
117
|
+
없으면 → SAD 없이 진행 가능 (권장: /architecture로 먼저 작성)
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
### SAD가 있는 경우
|
|
121
|
+
SAD에서 다음 정보를 추출합니다:
|
|
122
|
+
- 현재 컴포넌트 구성
|
|
123
|
+
- 기술 스택
|
|
124
|
+
- 데이터 흐름
|
|
125
|
+
- 이 피처가 영향을 주는 컴포넌트
|
|
93
126
|
|
|
94
127
|
### PRD가 없는 경우
|
|
95
128
|
```
|
|
96
|
-
HLD 작성을 위해 PRD(제품 요구사항 정의서)가 필요합니다.
|
|
129
|
+
Feature HLD 작성을 위해 PRD(제품 요구사항 정의서)가 필요합니다.
|
|
97
130
|
PRD가 준비되어 있으신가요? 없다면 먼저 PRD를 작성해주세요.
|
|
98
131
|
```
|
|
99
132
|
|