muno-claude-plugin 1.0.0

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.
Files changed (48) hide show
  1. package/README.md +834 -0
  2. package/bin/cli.js +262 -0
  3. package/package.json +37 -0
  4. package/templates/WORKFLOW.md +260 -0
  5. package/templates/agents/acceptance-test-generator.md +508 -0
  6. package/templates/agents/epic-story-reviewer.md +255 -0
  7. package/templates/agents/hld-reviewer.md +306 -0
  8. package/templates/agents/lld-reviewer.md +310 -0
  9. package/templates/agents/prd-reviewer.md +174 -0
  10. package/templates/agents/task-tracker.md +445 -0
  11. package/templates/agents/tc-reviewer.md +339 -0
  12. package/templates/agents/unit-test-generator.md +431 -0
  13. package/templates/commands/claude-code-expert.md +9 -0
  14. package/templates/commands/dev.md +9 -0
  15. package/templates/commands/po.md +9 -0
  16. package/templates/commands/principal-engineer.md +9 -0
  17. package/templates/commands/qa.md +9 -0
  18. package/templates/commands/sm.md +9 -0
  19. package/templates/commands/staff-engineer.md +9 -0
  20. package/templates/personas/claude-code-expert.md +153 -0
  21. package/templates/personas/dev.md +130 -0
  22. package/templates/personas/po.md +92 -0
  23. package/templates/personas/principal-engineer.md +163 -0
  24. package/templates/personas/qa.md +174 -0
  25. package/templates/personas/sm.md +101 -0
  26. package/templates/personas/staff-engineer.md +153 -0
  27. package/templates/references/claude-code-resources.md +79 -0
  28. package/templates/skills/epic-story-generator/SKILL.md +453 -0
  29. package/templates/skills/epic-story-generator/reference/epic-template.md +192 -0
  30. package/templates/skills/epic-story-generator/reference/story-template.md +297 -0
  31. package/templates/skills/hld-generator/SKILL.md +400 -0
  32. package/templates/skills/hld-generator/reference/hld-examples.md +305 -0
  33. package/templates/skills/hld-generator/reference/hld-template.md +244 -0
  34. package/templates/skills/hld-generator/reference/tech-stack-guidelines.md +194 -0
  35. package/templates/skills/lld-generator/SKILL.md +360 -0
  36. package/templates/skills/lld-generator/reference/lld-examples.md +338 -0
  37. package/templates/skills/lld-generator/reference/lld-template.md +286 -0
  38. package/templates/skills/prd-generator/SKILL.md +352 -0
  39. package/templates/skills/prd-generator/reference/prd-template.md +98 -0
  40. package/templates/skills/task-generator/SKILL.md +661 -0
  41. package/templates/skills/task-generator/reference/impl-task-template.md +621 -0
  42. package/templates/skills/task-generator/reference/task-examples.md +678 -0
  43. package/templates/skills/task-reviewer/SKILL.md +463 -0
  44. package/templates/skills/task-reviewer/reference/review-criteria.md +501 -0
  45. package/templates/skills/task-reviewer/reference/review-template.md +403 -0
  46. package/templates/skills/tc-generator/SKILL.md +595 -0
  47. package/templates/skills/tc-generator/reference/tc-examples.md +654 -0
  48. package/templates/skills/tc-generator/reference/tc-template.md +451 -0
@@ -0,0 +1,400 @@
1
+ ---
2
+ name: hld-generator
3
+ description: |
4
+ PRD를 기반으로 HLD(High-Level Design)를 생성합니다.
5
+ HLD는 구현 전에 시스템의 큰 그림을 설계하는 문서로, 방향 정렬, 리스크 조기 발견,
6
+ 의사결정 기록, 시니어/아키텍트의 조기 피드백을 위해 작성합니다.
7
+ "HLD 작성해줘", "상위 설계 문서 만들어줘", "시스템 설계", "아키텍처 설계" 등의 요청에 사용합니다.
8
+ allowed-tools: Read, Glob, Grep, Write, Edit, WebSearch, WebFetch
9
+ ---
10
+
11
+ # HLD Generator
12
+
13
+ ## 페르소나
14
+
15
+ @.claude/personas/principal-engineer.md
16
+
17
+ ---
18
+
19
+ ## HLD란?
20
+
21
+ **High-Level Design (HLD)**는 구현 전에 전체 시스템의 큰 그림을 설계하는 문서입니다.
22
+
23
+ ### 언제 작성하는가
24
+
25
+ ```
26
+ 요구사항 분석(PRD) → HLD → LLD(Low-Level Design) → 구현
27
+ ```
28
+
29
+ - 요구사항이 어느 정도 정리된 후
30
+ - 실제 코딩을 시작하기 전
31
+ - 새로운 기능, 시스템, 또는 큰 변경이 있을 때
32
+
33
+ ### 목적
34
+
35
+ | 목적 | 설명 |
36
+ |------|------|
37
+ | **방향 정렬** | 이해관계자(PM, 개발자, 아키텍트)가 "우리가 뭘 만들 건지" 합의 |
38
+ | **리스크 조기 발견** | 구현 전 기술적 리스크, 병목, 의존성 파악 → 뒤엎는 비용 감소 |
39
+ | **의사결정 기록** | 왜 이 구조를 선택했는지 (trade-off) 기록 |
40
+ | **조기 피드백** | 코드 전 설계 단계에서 시니어/아키텍트 개입 가능 |
41
+
42
+ ### HLD vs LLD
43
+
44
+ | 구분 | HLD | LLD |
45
+ |------|-----|-----|
46
+ | 범위 | 전체 구조, 큰 그림 | 세부 구현, 클래스/함수 레벨 |
47
+ | 질문 | "어떤 컴포넌트가 있고 어떻게 연결되는가" | "컴포넌트 내부는 어떻게 동작하는가" |
48
+ | 대상 | 비개발자도 이해 가능 | 개발자용 |
49
+
50
+ ### HLD에 포함되는 것
51
+
52
+ - 시스템 아키텍처 다이어그램
53
+ - 주요 컴포넌트와 역할
54
+ - 데이터 흐름
55
+ - API 인터페이스 (대략적)
56
+ - 기술 스택 선택과 이유
57
+ - 고려한 대안과 왜 선택/기각했는지
58
+
59
+ ---
60
+
61
+ ## 워크플로우
62
+
63
+ ```mermaid
64
+ flowchart TD
65
+ A[사용자 요청] --> B{PRD 존재?}
66
+ B -->|No| C[PRD 작성 권유]
67
+ B -->|Yes| D[Step 1: PRD 분석]
68
+ D --> E{정보 충분?}
69
+ E -->|No| F[보충 질문 2-3개]
70
+ F --> G[사용자 응답]
71
+ G --> E
72
+ E -->|Yes| H[Step 2: 아키텍처 방향 파악]
73
+ H --> I{정보 충분?}
74
+ I -->|No| J[보충 질문 2-3개]
75
+ J --> K[사용자 응답]
76
+ K --> I
77
+ I -->|Yes| L[Step 3: 기술적 제약/리스크 파악]
78
+ L --> M{정보 충분?}
79
+ M -->|No| N[보충 질문 2-3개]
80
+ N --> O[사용자 응답]
81
+ O --> M
82
+ M -->|Yes| P[Step 4: HLD 작성]
83
+ P --> Q[사용자 검토 요청]
84
+ Q -->|수정| P
85
+ Q -->|승인| R[저장]
86
+ ```
87
+
88
+ ---
89
+
90
+ ## Step 0: PRD 확인
91
+
92
+ HLD 작성 전 반드시 PRD 존재 여부를 확인합니다.
93
+
94
+ ### PRD가 없는 경우
95
+ ```
96
+ HLD 작성을 위해 PRD(제품 요구사항 정의서)가 필요합니다.
97
+ PRD가 준비되어 있으신가요? 없다면 먼저 PRD를 작성해주세요.
98
+ ```
99
+
100
+ ### PRD가 있는 경우
101
+ PRD를 읽고 다음 정보를 추출합니다:
102
+ - 문제 정의 (Problem Statement)
103
+ - 핵심 요구사항 (Must-have)
104
+ - 성공 지표
105
+ - 범위 (In-Scope / Out-of-Scope)
106
+
107
+ ---
108
+
109
+ ## Step 1: PRD 분석 & 용어 파악
110
+
111
+ ### 수집해야 할 정보
112
+ - PRD에 나온 도메인 용어 중 명확한 정의가 필요한 것
113
+ - 기존 시스템과 신규 시스템의 용어 차이
114
+ - 비즈니스 요구사항의 기술적 해석
115
+
116
+ ### 질문 예시 (한 번에 2-3개)
117
+ ```
118
+ PRD를 확인했습니다. 몇 가지 확인이 필요합니다.
119
+
120
+ 1. "[용어]"가 정확히 어떤 의미인가요?
121
+ 2. 기존 시스템에서 유사한 개념이 있나요?
122
+ 3. [요구사항]의 우선순위는 어떻게 되나요?
123
+ ```
124
+
125
+ ---
126
+
127
+ ## Step 2: 아키텍처 방향 파악
128
+
129
+ ### 수집해야 할 정보
130
+ - 현재 시스템 아키텍처 (모놀리식, MSA, 레이어드 등)
131
+ - 선호하는 기술 스택 또는 제약사항
132
+ - 확장성 요구사항
133
+ - 기존 시스템과의 통합 방식
134
+
135
+ ### 질문 예시 (한 번에 2-3개)
136
+ ```
137
+ 아키텍처 설계 방향을 정하고 싶습니다.
138
+
139
+ 1. 현재 시스템은 어떤 아키텍처인가요?
140
+ 2. 기술 스택에 제약이 있나요?
141
+ 3. 연동해야 할 외부 시스템이 있나요?
142
+ ```
143
+
144
+ ---
145
+
146
+ ## Step 3: 기술적 제약 & 리스크 파악
147
+
148
+ ### 수집해야 할 정보
149
+ - 성능 요구사항 (응답시간, TPS)
150
+ - 기술적 제약 (레거시 호환성)
151
+ - 알려진 기술적 리스크
152
+ - 장애 허용 수준
153
+
154
+ ### 질문 예시 (한 번에 2-3개)
155
+ ```
156
+ 제약조건과 리스크를 파악하고 싶습니다.
157
+
158
+ 1. 예상 트래픽 규모는 어느 정도인가요?
159
+ 2. 반드시 호환해야 하는 레거시 시스템이 있나요?
160
+ 3. 가장 우려되는 기술적 리스크는 무엇인가요?
161
+ ```
162
+
163
+ ---
164
+
165
+ ## Step 4: HLD 작성
166
+
167
+ 모든 정보가 수집되면 아래 구조로 HLD를 작성합니다.
168
+
169
+ ### HLD 문서 구조
170
+
171
+ ```markdown
172
+ # [기능명] - High-Level Design
173
+
174
+ ## 문서 정보
175
+
176
+ | 항목 | 내용 |
177
+ |------|------|
178
+ | 작성자 | @작성자 |
179
+ | 작성일 | YYYY-MM-DD |
180
+ | PRD | [PRD 링크] |
181
+ | 상태 | Draft / Review / Approved |
182
+
183
+ ---
184
+
185
+ ## 1. 개요 (Overview)
186
+
187
+ ### 1.1 목적
188
+ [이 설계의 목적과 해결하려는 문제]
189
+
190
+ ### 1.2 범위
191
+ | 포함 | 미포함 |
192
+ |------|--------|
193
+ | [범위1] | [미포함1 - 이유] |
194
+
195
+ ### 1.3 용어 정의
196
+ | 용어 | 정의 |
197
+ |------|------|
198
+ | [Term] | [Definition] |
199
+
200
+ ---
201
+
202
+ ## 2. 시스템 아키텍처 (Architecture)
203
+
204
+ ### 2.1 아키텍처 다이어그램
205
+
206
+ ```mermaid
207
+ graph TB
208
+ subgraph Client
209
+ Web[Web App]
210
+ end
211
+ subgraph Backend
212
+ API[API Server]
213
+ DB[(Database)]
214
+ end
215
+ Web --> API --> DB
216
+ ```
217
+
218
+ ### 2.2 주요 컴포넌트
219
+
220
+ | 컴포넌트 | 역할 | 기술 |
221
+ |----------|------|------|
222
+ | [컴포넌트1] | [역할] | [기술스택] |
223
+
224
+ ---
225
+
226
+ ## 3. 데이터 흐름 (Data Flow)
227
+
228
+ ### 3.1 주요 흐름
229
+
230
+ ```mermaid
231
+ sequenceDiagram
232
+ participant User
233
+ participant API
234
+ participant DB
235
+ User->>API: Request
236
+ API->>DB: Query
237
+ DB-->>API: Result
238
+ API-->>User: Response
239
+ ```
240
+
241
+ ### 3.2 데이터 모델 (개략)
242
+
243
+ ```mermaid
244
+ erDiagram
245
+ Entity1 ||--o{ Entity2 : has
246
+ ```
247
+
248
+ ---
249
+
250
+ ## 4. 핵심 설계 결정 (Key Design Decisions)
251
+
252
+ ### 4.1 [결정 사항]
253
+
254
+ - **결정**: [무엇을 결정했는가]
255
+ - **배경**: [왜 이 결정이 필요했는가]
256
+ - **대안 검토**:
257
+ | 대안 | 장점 | 단점 |
258
+ |------|------|------|
259
+ | [대안1] | [장점] | [단점] |
260
+ | [대안2] | [장점] | [단점] |
261
+ - **선택 이유**: [왜 이 대안을 선택했는가]
262
+
263
+ ---
264
+
265
+ ## 5. 기술 스택 (Tech Stack)
266
+
267
+ | 레이어 | 기술 | 선택 이유 |
268
+ |--------|------|-----------|
269
+ | Backend | [기술] | [이유] |
270
+ | Database | [기술] | [이유] |
271
+ | Infra | [기술] | [이유] |
272
+
273
+ ---
274
+
275
+ ## 6. 리스크 및 대응 (Risks & Mitigations)
276
+
277
+ | 리스크 | 영향도 | 발생 가능성 | 대응 방안 |
278
+ |--------|--------|-------------|-----------|
279
+ | [리스크1] | High/Medium/Low | High/Medium/Low | [대응] |
280
+
281
+ ---
282
+
283
+ ## 7. 미결정 사항 (Open Questions)
284
+
285
+ - [ ] [아직 결정되지 않은 사항1]
286
+ - [ ] [아직 결정되지 않은 사항2]
287
+
288
+ ---
289
+
290
+ ## 다음 단계
291
+
292
+ - [ ] HLD 리뷰 완료
293
+ - [ ] LLD 작성
294
+ - [ ] 구현 시작
295
+ ```
296
+
297
+ ---
298
+
299
+ ## 작성 원칙
300
+
301
+ ### 포함해야 하는 것
302
+ - 시스템 아키텍처 다이어그램
303
+ - 주요 컴포넌트와 역할
304
+ - 데이터 흐름
305
+ - 기술 스택 선택과 이유
306
+ - 고려한 대안과 선택/기각 이유
307
+ - 리스크와 대응 방안
308
+
309
+ ### 포함하지 않는 것
310
+ - 상세 구현 코드
311
+ - API 스펙 (상세)
312
+ - DB 스키마 (상세)
313
+ - 일정/마일스톤 (프로젝트 관리 영역)
314
+
315
+ ### 작성 규칙
316
+ 1. **비개발자도 이해 가능하게**: 큰 그림을 전달
317
+ 2. **Why를 기록**: 왜 이 결정을 했는지 근거 명시
318
+ 3. **다이어그램 활용**: Mermaid로 구조 시각화
319
+ 4. **대안 검토 기록**: 검토한 대안과 기각 이유
320
+
321
+ ---
322
+
323
+ ## 금지 사항
324
+
325
+ ### 절대 하지 말 것
326
+
327
+ 1. **PRD 없이 작성 금지**
328
+ ```
329
+ ❌ PRD 없이 HLD 작성 시작
330
+ ✅ "PRD를 먼저 준비해주세요" 안내
331
+ ```
332
+
333
+ 2. **정보 없이 추측하여 작성 금지**
334
+ ```
335
+ ❌ 사용자가 "HLD 써줘"라고 하면 바로 작성
336
+ ✅ 필요한 정보 질문 → 수집 → 작성
337
+ ```
338
+
339
+ 3. **모호한 표현 금지**
340
+ ```
341
+ ❌ "빠르게 처리", "적절한 캐싱"
342
+ ✅ "P99 < 200ms", "Redis 캐시 TTL 5분"
343
+ ```
344
+
345
+ 4. **대안 없이 결정만 기록 금지**
346
+ ```
347
+ ❌ "MySQL을 사용한다"
348
+ ✅ "PostgreSQL vs MySQL 검토 후, [이유]로 MySQL 선택"
349
+ ```
350
+
351
+ ---
352
+
353
+ ## 산출물
354
+
355
+ **저장 위치**: `documents/tasks/{task명}/{task명}-hld.md`
356
+
357
+ **사용자 검토**: HLD 작성 후 반드시 사용자에게 검토 요청
358
+ ```
359
+ HLD 초안을 작성했습니다. 검토 후 수정이 필요하면 말씀해주세요.
360
+ 특히 다음 부분을 확인해주세요:
361
+ - 아키텍처가 현재 시스템 구조와 맞는지
362
+ - 기술 스택 선택이 적절한지
363
+ - 누락된 리스크가 있는지
364
+
365
+ 승인되면 저장하고 LLD 작성으로 넘어갑니다.
366
+ ```
367
+
368
+ ---
369
+
370
+ ## 리뷰 체크리스트
371
+
372
+ Staff Engineer 관점에서 HLD 리뷰:
373
+
374
+ ### 아키텍처
375
+ - [ ] 기존 시스템과의 일관성
376
+ - [ ] 확장성/유지보수성 고려
377
+ - [ ] 적절한 추상화 수준
378
+
379
+ ### 설계 결정
380
+ - [ ] 대안 검토가 충분한가
381
+ - [ ] 선택 이유가 명확한가
382
+ - [ ] 트레이드오프가 기록되어 있는가
383
+
384
+ ### 리스크
385
+ - [ ] 주요 리스크가 식별되었는가
386
+ - [ ] 대응 방안이 현실적인가
387
+ - [ ] 누락된 리스크가 없는가
388
+
389
+ ### 완성도
390
+ - [ ] 다이어그램이 구조를 명확히 표현하는가
391
+ - [ ] 비개발자도 큰 그림을 이해할 수 있는가
392
+ - [ ] 미결정 사항이 명시되어 있는가
393
+
394
+ ---
395
+
396
+ ## 관련 스킬
397
+
398
+ - `/skill:prd-generator`: PRD 생성 (HLD 작성 전 필수)
399
+ - `/skill:lld-generator`: HLD 기반 Low Level Design 생성
400
+ - `/skill:task-generator`: LLD 기반 Task 생성
@@ -0,0 +1,305 @@
1
+ # HLD 예시
2
+
3
+ ## Good Practice vs Bad Practice
4
+
5
+ ### 1. 목적 (Purpose)
6
+
7
+ **Good Practice**:
8
+ ```markdown
9
+ ## 1.1 목적
10
+
11
+ 현재 사용자 인증 시스템은 세션 기반으로 구현되어 있어 다음과 같은 문제가 있습니다:
12
+ - 수평 확장 시 세션 동기화 비용 발생
13
+ - 모바일 앱에서 세션 관리의 어려움
14
+ - 외부 서비스 연동 시 토큰 기반 인증 필요
15
+
16
+ 이 설계는 JWT 기반 인증 시스템으로 전환하여 위 문제를 해결하고,
17
+ 마이크로서비스 아키텍처로의 전환을 준비합니다.
18
+ ```
19
+
20
+ **Bad Practice**:
21
+ ```markdown
22
+ ## 목적
23
+ 인증 시스템을 개선합니다.
24
+ ```
25
+ → 왜 개선이 필요한지, 어떤 문제를 해결하는지 명확하지 않음
26
+
27
+ ---
28
+
29
+ ### 2. 범위 (Scope)
30
+
31
+ **Good Practice**:
32
+ ```markdown
33
+ ## 1.2 범위
34
+
35
+ | 포함 (In-Scope) | 미포함 (Out-of-Scope) |
36
+ |-----------------|----------------------|
37
+ | JWT 토큰 발급/검증 | 소셜 로그인 연동 - Phase 2에서 진행 |
38
+ | Refresh Token 관리 | 2FA 인증 - 별도 설계 필요 |
39
+ | 기존 세션 마이그레이션 | 권한 관리(RBAC) - 기존 시스템 유지 |
40
+ ```
41
+
42
+ **Bad Practice**:
43
+ ```markdown
44
+ ## 범위
45
+ 인증 관련 기능을 개발합니다.
46
+ ```
47
+ → 포함/미포함 구분 없음, 범위가 모호함
48
+
49
+ ---
50
+
51
+ ### 3. 용어 정의 (Terminology)
52
+
53
+ **Good Practice**:
54
+ ```markdown
55
+ ## 1.3 용어 정의
56
+
57
+ | 용어 | 정의 |
58
+ |------|------|
59
+ | Access Token | 인증된 사용자임을 증명하는 단기 토큰 (유효기간: 15분) |
60
+ | Refresh Token | Access Token 재발급을 위한 장기 토큰 (유효기간: 7일) |
61
+ | Token Rotation | Refresh Token 사용 시 새 Refresh Token 발급하는 보안 기법 |
62
+ | Blacklist | 무효화된 토큰 목록. Redis에 저장하여 검증 |
63
+ ```
64
+
65
+ **Bad Practice**:
66
+ ```markdown
67
+ ## 용어
68
+ 토큰, 인증 등의 용어를 사용합니다.
69
+ ```
70
+ → 구체적인 정의 없이 일반적인 용어만 나열
71
+
72
+ ---
73
+
74
+ ### 4. 아키텍처 다이어그램
75
+
76
+ **Good Practice**:
77
+ ```markdown
78
+ ## 2.1 아키텍처 다이어그램
79
+
80
+ ```mermaid
81
+ graph TB
82
+ subgraph Client
83
+ Web[Web App]
84
+ Mobile[Mobile App]
85
+ end
86
+
87
+ subgraph Gateway
88
+ APIGW[API Gateway]
89
+ end
90
+
91
+ subgraph Auth
92
+ AuthSvc[Auth Service]
93
+ Redis[(Token Blacklist)]
94
+ end
95
+
96
+ subgraph Services
97
+ UserSvc[User Service]
98
+ OrderSvc[Order Service]
99
+ end
100
+
101
+ subgraph Data
102
+ AuthDB[(Auth DB)]
103
+ UserDB[(User DB)]
104
+ end
105
+
106
+ Web --> APIGW
107
+ Mobile --> APIGW
108
+ APIGW -->|Token 검증| AuthSvc
109
+ APIGW --> UserSvc
110
+ APIGW --> OrderSvc
111
+ AuthSvc --> Redis
112
+ AuthSvc --> AuthDB
113
+ UserSvc --> UserDB
114
+ ```
115
+
116
+ ### 2.2 주요 컴포넌트
117
+
118
+ | 컴포넌트 | 역할 | 기술 |
119
+ |----------|------|------|
120
+ | API Gateway | 모든 요청의 진입점, 토큰 검증 | Kong |
121
+ | Auth Service | 토큰 발급/갱신/무효화 | Spring Boot |
122
+ | Token Blacklist | 무효화된 토큰 저장 | Redis |
123
+ | Auth DB | 사용자 인증 정보, Refresh Token 저장 | PostgreSQL |
124
+ ```
125
+
126
+ **Bad Practice**:
127
+ ```markdown
128
+ ## 아키텍처
129
+ 서버와 DB로 구성됩니다.
130
+ ```
131
+ → 다이어그램 없음, 컴포넌트 역할 설명 없음
132
+
133
+ ---
134
+
135
+ ### 5. 핵심 설계 결정 (Key Design Decisions)
136
+
137
+ **Good Practice**:
138
+ ```markdown
139
+ ## 4.1 토큰 저장소 선택
140
+
141
+ - **결정**: Access Token은 메모리, Refresh Token은 DB에 저장
142
+ - **배경**: 토큰 무효화 기능이 필요하며, 확장성을 고려해야 함
143
+ - **대안 검토**:
144
+
145
+ | 대안 | 장점 | 단점 |
146
+ |------|------|------|
147
+ | 모든 토큰 DB 저장 | 완전한 제어 | 매 요청마다 DB 조회 필요, 성능 저하 |
148
+ | 모든 토큰 Stateless | 빠른 검증 | 토큰 무효화 불가 |
149
+ | Access Token Stateless + Blacklist ✓ | 빠른 검증 + 무효화 가능 | Redis 의존성 추가 |
150
+
151
+ - **선택 이유**: 대부분의 요청은 빠르게 처리하면서, 필요시 토큰 무효화 가능
152
+ - **영향**: Redis 클러스터 운영 필요, Blacklist TTL 관리 정책 수립 필요
153
+ ```
154
+
155
+ **Bad Practice**:
156
+ ```markdown
157
+ ## 설계 결정
158
+ Redis를 사용합니다.
159
+ ```
160
+ → 왜 Redis를 선택했는지, 어떤 대안을 검토했는지 없음
161
+
162
+ ---
163
+
164
+ ### 6. 기술 스택
165
+
166
+ **Good Practice**:
167
+ ```markdown
168
+ ## 5. 기술 스택
169
+
170
+ | 레이어 | 기술 | 버전 | 선택 이유 |
171
+ |--------|------|------|-----------|
172
+ | Language | Kotlin | 1.9 | 기존 프로젝트와 일관성, Null Safety |
173
+ | Framework | Spring Boot | 3.2 | 팀 익숙도, Spring Security 통합 |
174
+ | Token | JWT (jjwt) | 0.12 | 업계 표준, 라이브러리 성숙도 |
175
+ | Cache | Redis | 7.2 | 빠른 Blacklist 조회, 기존 인프라 활용 |
176
+ | Database | PostgreSQL | 15 | 기존 User DB와 통합 |
177
+ ```
178
+
179
+ **Bad Practice**:
180
+ ```markdown
181
+ ## 기술
182
+ Spring Boot, Redis를 사용합니다.
183
+ ```
184
+ → 선택 이유 없음, 버전 정보 없음
185
+
186
+ ---
187
+
188
+ ### 7. 리스크 및 대응
189
+
190
+ **Good Practice**:
191
+ ```markdown
192
+ ## 6. 리스크 및 대응
193
+
194
+ | 리스크 | 영향도 | 발생 가능성 | 대응 방안 |
195
+ |--------|--------|-------------|-----------|
196
+ | Redis 장애로 Blacklist 조회 불가 | High | Low | Redis Sentinel 구성, 장애 시 DB fallback |
197
+ | 토큰 탈취 | High | Medium | Access Token 유효기간 15분으로 제한, HTTPS 강제 |
198
+ | Refresh Token 동시 사용 공격 | Medium | Low | Token Rotation 적용, 기존 토큰 즉시 무효화 |
199
+ | 마이그레이션 중 인증 실패 | High | Medium | 병렬 운영 기간 설정, 점진적 전환 |
200
+ ```
201
+
202
+ **Bad Practice**:
203
+ ```markdown
204
+ ## 리스크
205
+ 보안 문제가 발생할 수 있습니다.
206
+ ```
207
+ → 구체적인 리스크 식별 없음, 대응 방안 없음
208
+
209
+ ---
210
+
211
+ ### 8. 미결정 사항
212
+
213
+ **Good Practice**:
214
+ ```markdown
215
+ ## 7. 미결정 사항
216
+
217
+ - [ ] Access Token 유효기간 (현재 15분 제안) - @security-team 12/20
218
+ - [ ] Refresh Token 최대 발급 개수 제한 - @backend-lead 12/18
219
+ - [ ] 기존 세션 마이그레이션 방식 (점진적 vs 일괄) - @devops 12/22
220
+ ```
221
+
222
+ **Bad Practice**:
223
+ ```markdown
224
+ ## 미결정
225
+ 나중에 정합니다.
226
+ ```
227
+ → 무엇을 언제까지 누가 결정할지 없음
228
+
229
+ ---
230
+
231
+ ## 완성된 HLD 예시 (요약)
232
+
233
+ ```markdown
234
+ # JWT 인증 시스템 - High-Level Design
235
+
236
+ ## 문서 정보
237
+ | 항목 | 내용 |
238
+ |------|------|
239
+ | 작성자 | @backend-lead |
240
+ | 작성일 | 2024-12-15 |
241
+ | PRD | docs/prd/auth-improvement.md |
242
+ | 상태 | Review |
243
+
244
+ ## 1. 개요
245
+ ### 1.1 목적
246
+ 세션 기반 인증을 JWT 기반으로 전환하여 수평 확장성 확보 및 MSA 전환 준비
247
+
248
+ ### 1.2 범위
249
+ | 포함 | 미포함 |
250
+ |------|--------|
251
+ | JWT 토큰 발급/검증 | 소셜 로그인 - Phase 2 |
252
+ | Refresh Token 관리 | 2FA - 별도 설계 |
253
+
254
+ ### 1.3 용어 정의
255
+ | 용어 | 정의 |
256
+ |------|------|
257
+ | Access Token | 인증 증명용 단기 토큰 (15분) |
258
+ | Refresh Token | Access Token 재발급용 장기 토큰 (7일) |
259
+
260
+ ## 2. 시스템 아키텍처
261
+ [다이어그램 + 컴포넌트 테이블]
262
+
263
+ ## 3. 데이터 흐름
264
+ [시퀀스 다이어그램 + ER 다이어그램]
265
+
266
+ ## 4. 핵심 설계 결정
267
+ ### 4.1 토큰 저장 방식
268
+ - 결정: Access Token Stateless + Blacklist
269
+ - 대안 검토: [테이블]
270
+ - 선택 이유: 성능과 무효화 기능 균형
271
+
272
+ ## 5. 기술 스택
273
+ [기술 + 버전 + 선택 이유 테이블]
274
+
275
+ ## 6. 리스크 및 대응
276
+ [리스크 + 영향도 + 대응 테이블]
277
+
278
+ ## 7. 미결정 사항
279
+ - [ ] Access Token 유효기간 최종 확정
280
+
281
+ ## 다음 단계
282
+ - [ ] HLD 리뷰 완료
283
+ - [ ] LLD 작성
284
+ ```
285
+
286
+ ---
287
+
288
+ ## 체크리스트
289
+
290
+ HLD 작성 시 자가 점검:
291
+
292
+ ### 구조 체크
293
+ - [ ] 목적이 "왜 이 설계가 필요한가"에 답하는가?
294
+ - [ ] 범위가 포함/미포함으로 명확히 구분되어 있는가?
295
+ - [ ] 용어 정의가 비전문가도 이해할 수 있는가?
296
+
297
+ ### 설계 체크
298
+ - [ ] 아키텍처 다이어그램이 컴포넌트 관계를 보여주는가?
299
+ - [ ] 데이터 흐름이 시퀀스 다이어그램으로 표현되어 있는가?
300
+ - [ ] 핵심 결정에 대안 검토와 선택 이유가 있는가?
301
+
302
+ ### 리스크 체크
303
+ - [ ] 주요 리스크가 식별되었는가?
304
+ - [ ] 각 리스크에 대응 방안이 있는가?
305
+ - [ ] 미결정 사항이 담당자/일정과 함께 기록되어 있는가?