muno-claude-plugin 1.5.0 → 1.7.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "muno-claude-plugin",
3
- "version": "1.5.0",
3
+ "version": "1.7.0",
4
4
  "description": "Unleash Claude Code's full power - Complete development workflow with expert personas, TDD-based agents, and automated documentation",
5
5
  "main": "bin/cli.js",
6
6
  "bin": {
@@ -73,29 +73,30 @@ AI 기반 개발 워크플로우 스킬 체계입니다.
73
73
  ## 문서 저장 구조
74
74
 
75
75
  ```
76
- project/
77
- ├── documents/
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
76
+ documents/
77
+ ├── system-design/
78
+ │ ├── architecture.md ← 전체 시스템 아키텍처 (SAD, 1개)
79
+ │ └── features/
80
+ └── {feature-name}/
81
+ ├── hld.md ← Feature HLD
82
+ └── lld.md ← Feature LLD
86
83
 
87
- ├── backlogs/ # Epic/Story
88
- │ └── feature-name/
89
- │ ├── index.md
90
- │ └── STORY-xxx.md
84
+ ├── request/
85
+ │ └── {feature-name}-prd.md ← PRD
91
86
 
92
- ├── .tasks/ # Task
93
- └── STORY-xxx/
94
- └── TASK-xxx.md
87
+ ├── issues/
88
+ ├── epics/
89
+ └── EPIC-xxx.md ← Epic
90
+ │ ├── stories/
91
+ │ │ └── STORY-xxx.md ← Story (Epic 없이 독립 가능)
92
+ │ └── tasks/
93
+ │ └── TASK-xxx.md ← Task (Story 없이 독립 가능)
95
94
 
96
- └── test-cases/ # Test Cases
97
- └── STORY-xxx/
98
- └── TC-xxx.md
95
+ └── test/
96
+ ├── unit/
97
+ └── UT-xxx.md ← Unit Test Case
98
+ └── acceptance/
99
+ └── AT-xxx.md ← Acceptance Test Case
99
100
  ```
100
101
 
101
102
  ---
@@ -106,8 +106,8 @@ TC 생성 및 리뷰 흐름:
106
106
 
107
107
  1. tc-generator 실행
108
108
  └─ Story AC 분석
109
- └─ TC 문서 생성 (test-cases/STORY-XXX/)
110
- └─ TC index.md 생성
109
+ └─ AT 문서 생성 (documents/test/acceptance/AT-XXX.md)
110
+ └─ UT 문서 생성 (documents/test/unit/UT-XXX.md)
111
111
 
112
112
 
113
113
  2. tc-reviewer 자동 호출
@@ -125,12 +125,12 @@ TC 생성 및 리뷰 흐름:
125
125
 
126
126
  ---
127
127
 
128
- ## 입력: TC 문서 구조
128
+ ## 입력: AT 문서 구조
129
129
 
130
130
  ```yaml
131
- # test-cases/STORY-001/TC-001-01-create-chatroom.md
131
+ # documents/test/acceptance/AT-001-create-chatroom.md
132
132
  ---
133
- id: TC-001-01
133
+ id: AT-001
134
134
  title: 채팅방 생성 - Happy Path
135
135
  story_id: STORY-001
136
136
  type: integration
@@ -345,12 +345,12 @@ func TestChatRoomAcceptance(t *testing.T) {
345
345
 
346
346
  ## 생성 워크플로우
347
347
 
348
- ### Step 1: TC 분석
348
+ ### Step 1: AT 분석
349
349
 
350
350
  ```
351
- 1. TC 문서 읽기 (test-cases/STORY-XXX/*.md)
352
- 2. TC index.md에서 전체 TC 목록 확인
353
- 3. 각 TC의 유형 파악 (integration, e2e, etc.)
351
+ 1. AT 문서 읽기 (documents/test/acceptance/AT-XXX.md)
352
+ 2. 전체 AT 목록 확인
353
+ 3. 각 AT의 유형 파악 (integration, e2e, etc.)
354
354
  4. 우선순위 확인 (high, medium, low)
355
355
  ```
356
356
 
@@ -465,19 +465,18 @@ src/test/kotlin/com/example/
465
465
  ## 체크리스트
466
466
 
467
467
  ### 테스트 생성 전
468
- - [ ] TC 문서가 생성되었는가?
469
- - [ ] TC index.md가 있는가?
470
- - [ ] 각 TC의 사전 조건/기대 결과가 명확한가?
468
+ - [ ] AT 문서가 생성되었는가? (documents/test/acceptance/)
469
+ - [ ] AT의 사전 조건/기대 결과가 명확한가?
471
470
 
472
471
  ### 테스트 생성 후
473
- - [ ] 모든 TC가 테스트 메서드로 변환되었는가?
474
- - [ ] @DisplayName에 TC ID가 포함되어 있는가?
472
+ - [ ] 모든 AT가 테스트 메서드로 변환되었는가?
473
+ - [ ] @DisplayName에 AT ID가 포함되어 있는가?
475
474
  - [ ] 사전 조건이 Arrange로 변환되었는가?
476
475
  - [ ] 기대 결과가 Assert로 변환되었는가?
477
476
  - [ ] 테스트가 컴파일되는가?
478
477
 
479
478
  ### Story-Level TDD 확인
480
- - [ ] TC 생성 직후 테스트가 작성되었는가?
479
+ - [ ] AT 생성 직후 테스트가 작성되었는가?
481
480
  - [ ] 테스트 실행 시 실패하는가? (Red)
482
481
  - [ ] Task 구현 후 테스트가 통과하는가? (Green)
483
482
 
@@ -200,23 +200,24 @@ Epic (EPIC-001)
200
200
  ### 파일 저장 위치
201
201
 
202
202
  ```
203
- backlogs/
204
- └── {feature}/
205
- ├── EPIC-001-xxx.md # Epic 정의
206
- ├── STORY-001-xxx.md # Story 정의 (AC 포함)
207
- └── STORY-002-xxx.md
208
-
209
- .tasks/
210
- └── {STORY-ID}/ # Story별 디렉토리
211
- ├── index.md
212
- ├── TASK-001-xxx.md
213
- └── TASK-002-xxx.md
214
-
215
- test-cases/
216
- └── {STORY-ID}/ # Story별 디렉토리
217
- ├── index.md
218
- ├── TC-001-01-xxx.md
219
- └── TC-001-02-xxx.md
203
+ documents/
204
+ ├── issues/
205
+ ├── epics/
206
+ │ │ └── EPIC-001-xxx.md # Epic 정의
207
+ │ ├── stories/
208
+ │ │ ├── STORY-001-xxx.md # Story 정의 (AC 포함)
209
+ │ │ └── STORY-002-xxx.md
210
+ └── tasks/
211
+ ├── TASK-001-xxx.md
212
+ │ └── TASK-002-xxx.md
213
+
214
+ └── test/
215
+ ├── unit/
216
+ │ ├── UT-001-xxx.md # Unit Test
217
+ │ └── UT-002-xxx.md
218
+ └── acceptance/
219
+ ├── AT-001-xxx.md # Acceptance Test
220
+ └── AT-002-xxx.md
220
221
  ```
221
222
 
222
223
  ### 상위 참조 규칙
@@ -360,12 +361,12 @@ updated_at: 2024-01-10
360
361
  ---
361
362
  ```
362
363
 
363
- ### TC (상위: Story)
364
+ ### Acceptance Test (상위: Story)
364
365
 
365
366
  ```yaml
366
367
  ---
367
- id: TC-XXX-NN
368
- title: [TC 제목]
368
+ id: AT-XXX
369
+ title: [AT 제목]
369
370
  story_id: STORY-XXX # 상위 Story 참조
370
371
  ac_ids: [AC-1, AC-2] # 연결된 AC
371
372
  status: ready # ready | passed | failed | blocked
@@ -374,6 +375,19 @@ updated_at: 2024-01-10
374
375
  ---
375
376
  ```
376
377
 
378
+ ### Unit Test (상위: Task)
379
+
380
+ ```yaml
381
+ ---
382
+ id: UT-XXX
383
+ title: [UT 제목]
384
+ task_id: TASK-XXX # 상위 Task 참조
385
+ status: ready # ready | passed | failed | blocked
386
+ created_at: 2024-01-10
387
+ updated_at: 2024-01-10
388
+ ---
389
+ ```
390
+
377
391
  ---
378
392
 
379
393
  ## 출력 형식
@@ -92,9 +92,9 @@ color: green
92
92
  ```
93
93
  코딩 Agent가 Task 구현 시작하려고 할 때:
94
94
 
95
- 1. Task 문서 확인 (.tasks/STORY-XXX/TASK-XXX.md)
95
+ 1. Task 문서 확인 (documents/issues/tasks/TASK-XXX.md)
96
96
  2. unit-test-generator 호출 (이 subagent)
97
- 3. Unit Test 생성 완료
97
+ 3. Unit Test 생성 완료 (documents/test/unit/UT-XXX.md)
98
98
  4. 테스트 실행 → 실패 확인 (Red)
99
99
  5. 구현 시작
100
100
  ```
@@ -104,7 +104,7 @@ color: green
104
104
  ## 입력: Task 문서 구조
105
105
 
106
106
  ```yaml
107
- # .tasks/STORY-001/TASK-001-entity.md
107
+ # documents/issues/tasks/TASK-001-entity.md
108
108
  ---
109
109
  id: TASK-001
110
110
  title: ChatRoom Entity 생성
@@ -346,7 +346,7 @@ func TestChatRoom(t *testing.T) {
346
346
  ### Step 1: Task 분석
347
347
 
348
348
  ```
349
- 1. Task 문서 읽기 (.tasks/STORY-XXX/TASK-XXX.md)
349
+ 1. Task 문서 읽기 (documents/issues/tasks/TASK-XXX.md)
350
350
  2. Acceptance Criteria 섹션 추출
351
351
  3. Test Scenarios 섹션 추출
352
352
  4. 테스트 대상 파악 (Entity, Service, Repository 등)
@@ -190,20 +190,18 @@ color: cyan
190
190
 
191
191
  ```
192
192
  1. documents/ 폴더 확인
193
- - documents/prd/ → PRD 존재 여부
194
- - documents/hld/ → HLD 존재 여부
195
- - documents/lld/ → LLD 존재 여부
196
-
197
- 2. backlogs/ 폴더 확인
198
- - Epic/Story 존재 여부
199
- - Story 상태 (open/close)
200
-
201
- 3. .tasks/ 폴더 확인
202
- - Task 존재 여부
203
- - Task 상태 (todo/inprogress/done)
204
-
205
- 4. test-cases/ 폴더 확인
206
- - TC 존재 여부
193
+ - documents/request/ → PRD 존재 여부
194
+ - documents/system-design/architecture.mdSAD 존재 여부
195
+ - documents/system-design/features/{feature}/HLD/LLD 존재 여부
196
+
197
+ 2. documents/issues/ 폴더 확인
198
+ - documents/issues/epics/ → Epic 존재 여부
199
+ - documents/issues/stories/ → Story 존재 여부 및 상태
200
+ - documents/issues/tasks/ → Task 존재 여부 및 상태
201
+
202
+ 3. documents/test/ 폴더 확인
203
+ - documents/test/unit/ Unit Test 존재 여부
204
+ - documents/test/acceptance/ → Acceptance Test 존재 여부
207
205
  ```
208
206
 
209
207
  ### Step 2: 복잡도 판단
@@ -93,7 +93,7 @@ flowchart TD
93
93
  ## Step 0: 기존 SAD 확인
94
94
 
95
95
  ```
96
- documents/architecture/system-architecture.md 파일이 존재하는지 확인합니다.
96
+ documents/system-design/architecture.md 파일이 존재하는지 확인합니다.
97
97
 
98
98
  있으면 → 업데이트 모드
99
99
  없으면 → 신규 생성 모드
@@ -387,7 +387,7 @@ graph TB
387
387
 
388
388
  ## 산출물
389
389
 
390
- **저장 위치**: `documents/architecture/system-architecture.md`
390
+ **저장 위치**: `documents/system-design/architecture.md`
391
391
 
392
392
  ---
393
393
 
@@ -278,19 +278,25 @@ Story 분해안을 검토해주세요.
278
278
  ### 출력 구조
279
279
 
280
280
  ```
281
- docs/
282
- └── issue/
283
- └── {feature-name}/
284
- ├── index.md # 전체 백로그 개요
285
- ├── epic-{epic-name}.md # Epic 개별 문서
286
- ├── story-{story-name}.md # Story 개별 문서
287
- └── task-{task-name}.md # Task 개별 문서 (task-generator)
281
+ documents/
282
+ └── issues/
283
+ ├── epics/
284
+ │ └── EPIC-xxx.md # Epic 개별 문서
285
+ ├── stories/
286
+ │ └── STORY-xxx.md # Story 개별 문서
287
+ └── tasks/
288
+ └── TASK-xxx.md # Task 개별 문서 (task-generator)
288
289
  ```
289
290
 
290
291
  **파일명 규칙**:
291
- - Epic: `epic-{kebab-case-name}.md` (예: `epic-user-authentication.md`)
292
- - Story: `story-{kebab-case-name}.md` (예: `story-email-login.md`)
293
- - Task: `task-{kebab-case-name}.md` (예: `task-login-entity.md`)
292
+ - Epic: `EPIC-{number}-{kebab-case-name}.md` (예: `EPIC-001-user-authentication.md`)
293
+ - Story: `STORY-{number}-{kebab-case-name}.md` (예: `STORY-001-email-login.md`)
294
+ - Task: `TASK-{number}-{kebab-case-name}.md` (예: `TASK-001-login-entity.md`)
295
+
296
+ **특징**:
297
+ - Epic 없이 Story만 독립적으로 존재 가능
298
+ - Story 없이 Task만 독립적으로 존재 가능
299
+ - 각각 별도 폴더에서 독립적으로 관리
294
300
 
295
301
  ### index.md 구조
296
302
 
@@ -337,20 +343,39 @@ Total: X SP
337
343
 
338
344
  ## Epic/Story 작성 완료 후 필수 작업
339
345
 
340
- **중요: Epic/Story 파일 저장이 완료되면 반드시 다음을 수행합니다:**
346
+ **중요: Epic/Story 파일 저장이 완료되면 반드시 다음 Subagent 체인을 순서대로 실행합니다:**
347
+
348
+ ### Step 1: 품질 검토 (필수)
349
+
350
+ **Subagent**: `epic-story-reviewer`
341
351
 
342
- 1. **epic-story-reviewer subagent 실행** (필수)
343
- - Task 도구를 사용하여 `epic-story-reviewer` subagent를 실행
344
- - 백로그 폴더 경로를 전달하여 품질 검토 수행
345
- - 검토 결과에 따라 Epic/Story 보완
352
+ Task 도구를 사용하여 다음과 같이 호출합니다:
346
353
 
347
354
  ```
348
- Epic/Story 작성이 완료되었습니다.
349
- 품질 검토를 위해 epic-story-reviewer를 실행합니다.
355
+ Task 도구 호출:
356
+ - subagent_type: epic-story-reviewer
357
+ - prompt: "다음 백로그 폴더의 Epic/Story 문서를 검토해주세요: {백로그 폴더 경로}"
350
358
  ```
351
359
 
352
- 2. **사용자 최종 확인**
353
- - 리뷰 완료 사용자에게 최종 검토 요청
360
+ **다음 단계 조건**:
361
+ - 리뷰 통과 Step 2로 진행
362
+ - ❌ 리뷰 실패 → 피드백 반영 후 다시 Step 1
363
+
364
+ ### Step 2: 상태 추적 (필수)
365
+
366
+ **Subagent**: `task-tracker`
367
+
368
+ 리뷰 통과 후, Task 도구를 사용하여 상태를 동기화합니다:
369
+
370
+ ```
371
+ Task 도구 호출:
372
+ - subagent_type: task-tracker
373
+ - prompt: "Epic/Story 문서가 생성되었습니다. 상태를 추적해주세요: {생성된 Epic/Story 파일 목록}"
374
+ ```
375
+
376
+ ### Step 3: 사용자 최종 확인
377
+
378
+ - 리뷰 및 상태 추적 완료 후 사용자에게 최종 검토 요청
354
379
 
355
380
  ---
356
381
 
@@ -111,7 +111,7 @@ Feature HLD 작성 전 SAD와 PRD 존재 여부를 확인합니다.
111
111
 
112
112
  ### SAD 확인
113
113
  ```
114
- documents/architecture/system-architecture.md 파일 확인
114
+ documents/system-design/architecture.md 파일 확인
115
115
 
116
116
  있으면 → SAD 참조하여 HLD 작성
117
117
  없으면 → SAD 없이 진행 가능 (권장: /architecture-design으로 먼저 작성)
@@ -385,34 +385,55 @@ erDiagram
385
385
 
386
386
  ## 산출물
387
387
 
388
- **저장 위치**: `docs/system-design/{feature-name}/hld.md`
388
+ **저장 위치**: `documents/system-design/features/{feature-name}/hld.md`
389
389
 
390
390
  ```
391
- docs/
391
+ documents/
392
392
  └── system-design/
393
- └── {feature-name}/
394
- ├── hld.md 이 스킬로 생성
395
- └── lld.md ← lld-generator로 생성
393
+ ├── architecture.md ← 전체 시스템 아키텍처 (SAD)
394
+ └── features/
395
+ └── {feature-name}/
396
+ ├── hld.md ← 이 스킬로 생성
397
+ └── lld.md ← lld-generator로 생성
396
398
  ```
397
399
 
398
400
  ---
399
401
 
400
402
  ## HLD 작성 완료 후 필수 작업
401
403
 
402
- **중요: HLD 파일 저장이 완료되면 반드시 다음을 수행합니다:**
404
+ **중요: HLD 파일 저장이 완료되면 반드시 다음 Subagent 체인을 순서대로 실행합니다:**
403
405
 
404
- 1. **hld-reviewer subagent 실행** (필수)
405
- - Task 도구를 사용하여 `hld-reviewer` subagent를 실행
406
- - HLD 파일 경로를 전달하여 아키텍처 리뷰 수행
407
- - 검토 결과에 따라 HLD 보완
406
+ ### Step 1: 품질 검토 (필수)
407
+
408
+ **Subagent**: `hld-reviewer`
409
+
410
+ Task 도구를 사용하여 다음과 같이 호출합니다:
411
+
412
+ ```
413
+ Task 도구 호출:
414
+ - subagent_type: hld-reviewer
415
+ - prompt: "다음 HLD 문서를 검토해주세요: {HLD 파일 경로}"
416
+ ```
417
+
418
+ **다음 단계 조건**:
419
+ - ✅ 리뷰 통과 → Step 2로 진행
420
+ - ❌ 리뷰 실패 → 피드백 반영 후 다시 Step 1
421
+
422
+ ### Step 2: 상태 추적 (필수)
423
+
424
+ **Subagent**: `task-tracker`
425
+
426
+ 리뷰 통과 후, Task 도구를 사용하여 상태를 동기화합니다:
408
427
 
409
428
  ```
410
- HLD 작성이 완료되었습니다.
411
- 아키텍처 검토를 위해 hld-reviewer를 실행합니다.
429
+ Task 도구 호출:
430
+ - subagent_type: task-tracker
431
+ - prompt: "HLD 문서가 생성되었습니다. 상태를 추적해주세요: {HLD 파일 경로}"
412
432
  ```
413
433
 
414
- 2. **사용자 최종 확인**
415
- - 리뷰 완료 후 사용자에게 최종 검토 요청
434
+ ### Step 3: 사용자 최종 확인
435
+
436
+ - 리뷰 및 상태 추적 완료 후 사용자에게 최종 검토 요청
416
437
 
417
438
  ---
418
439
 
@@ -310,34 +310,55 @@ HLD에서 추출할 정보:
310
310
 
311
311
  ## 산출물
312
312
 
313
- **저장 위치**: `docs/system-design/{feature-name}/lld.md`
313
+ **저장 위치**: `documents/system-design/features/{feature-name}/lld.md`
314
314
 
315
315
  ```
316
- docs/
316
+ documents/
317
317
  └── system-design/
318
- └── {feature-name}/
319
- ├── hld.md hld-generator로 생성
320
- └── lld.md ← 이 스킬로 생성
318
+ ├── architecture.md ← 전체 시스템 아키텍처 (SAD)
319
+ └── features/
320
+ └── {feature-name}/
321
+ ├── hld.md ← hld-generator로 생성
322
+ └── lld.md ← 이 스킬로 생성
321
323
  ```
322
324
 
323
325
  ---
324
326
 
325
327
  ## LLD 작성 완료 후 필수 작업
326
328
 
327
- **중요: LLD 파일 저장이 완료되면 반드시 다음을 수행합니다:**
329
+ **중요: LLD 파일 저장이 완료되면 반드시 다음 Subagent 체인을 순서대로 실행합니다:**
328
330
 
329
- 1. **lld-reviewer subagent 실행** (필수)
330
- - Task 도구를 사용하여 `lld-reviewer` subagent를 실행
331
- - LLD 파일 경로를 전달하여 상세 설계 리뷰 수행
332
- - 검토 결과에 따라 LLD 보완
331
+ ### Step 1: 품질 검토 (필수)
332
+
333
+ **Subagent**: `lld-reviewer`
334
+
335
+ Task 도구를 사용하여 다음과 같이 호출합니다:
336
+
337
+ ```
338
+ Task 도구 호출:
339
+ - subagent_type: lld-reviewer
340
+ - prompt: "다음 LLD 문서를 검토해주세요: {LLD 파일 경로}"
341
+ ```
342
+
343
+ **다음 단계 조건**:
344
+ - ✅ 리뷰 통과 → Step 2로 진행
345
+ - ❌ 리뷰 실패 → 피드백 반영 후 다시 Step 1
346
+
347
+ ### Step 2: 상태 추적 (필수)
348
+
349
+ **Subagent**: `task-tracker`
350
+
351
+ 리뷰 통과 후, Task 도구를 사용하여 상태를 동기화합니다:
333
352
 
334
353
  ```
335
- LLD 작성이 완료되었습니다.
336
- 상세 설계 검토를 위해 lld-reviewer를 실행합니다.
354
+ Task 도구 호출:
355
+ - subagent_type: task-tracker
356
+ - prompt: "LLD 문서가 생성되었습니다. 상태를 추적해주세요: {LLD 파일 경로}"
337
357
  ```
338
358
 
339
- 2. **사용자 최종 확인**
340
- - 리뷰 완료 후 사용자에게 최종 검토 요청
359
+ ### Step 3: 사용자 최종 확인
360
+
361
+ - 리뷰 및 상태 추적 완료 후 사용자에게 최종 검토 요청
341
362
 
342
363
  ---
343
364
 
@@ -389,33 +389,51 @@ owner: [작성자]
389
389
 
390
390
  ## 산출물
391
391
 
392
- **저장 위치**: `docs/specification/{feature-name}/prd.md`
392
+ **저장 위치**: `documents/request/{feature-name}-prd.md`
393
393
 
394
394
  ```
395
- docs/
396
- └── specification/
397
- └── {feature-name}/
398
- └── prd.md
395
+ documents/
396
+ └── request/
397
+ └── {feature-name}-prd.md
399
398
  ```
400
399
 
401
400
  ---
402
401
 
403
402
  ## PRD 작성 완료 후 필수 작업
404
403
 
405
- **중요: PRD 파일 저장이 완료되면 반드시 다음을 수행합니다:**
404
+ **중요: PRD 파일 저장이 완료되면 반드시 다음 Subagent 체인을 순서대로 실행합니다:**
406
405
 
407
- 1. **prd-reviewer subagent 실행** (필수)
408
- - Task 도구를 사용하여 `prd-reviewer` subagent를 실행
409
- - PRD 파일 경로를 전달하여 품질 검토 수행
410
- - 검토 결과에 따라 PRD 보완
406
+ ### Step 1: 품질 검토 (필수)
407
+
408
+ **Subagent**: `prd-reviewer`
409
+
410
+ Task 도구를 사용하여 다음과 같이 호출합니다:
411
+
412
+ ```
413
+ Task 도구 호출:
414
+ - subagent_type: prd-reviewer
415
+ - prompt: "다음 PRD 문서를 검토해주세요: {PRD 파일 경로}"
416
+ ```
417
+
418
+ **다음 단계 조건**:
419
+ - ✅ 리뷰 통과 → Step 2로 진행
420
+ - ❌ 리뷰 실패 → 피드백 반영 후 다시 Step 1
421
+
422
+ ### Step 2: 상태 추적 (필수)
423
+
424
+ **Subagent**: `task-tracker`
425
+
426
+ 리뷰 통과 후, Task 도구를 사용하여 상태를 동기화합니다:
411
427
 
412
428
  ```
413
- PRD 작성이 완료되었습니다.
414
- 품질 검토를 위해 prd-reviewer를 실행합니다.
429
+ Task 도구 호출:
430
+ - subagent_type: task-tracker
431
+ - prompt: "PRD 문서가 생성되었습니다. 상태를 추적해주세요: {PRD 파일 경로}"
415
432
  ```
416
433
 
417
- 2. **사용자 최종 확인**
418
- - 리뷰 완료 후 사용자에게 최종 검토 요청
434
+ ### Step 3: 사용자 최종 확인
435
+
436
+ - 리뷰 및 상태 추적 완료 후 사용자에게 최종 검토 요청
419
437
 
420
438
  ---
421
439
 
@@ -715,19 +715,62 @@ class UserEntity(
715
715
  ## 출력 구조
716
716
 
717
717
  ```
718
- docs/
719
- └── issue/
720
- └── {feature-name}/
721
- ├── index.md # 전체 백로그 개요 (epic-story-generator)
722
- ├── epic-{epic-name}.md # Epic 문서
723
- ├── story-{story-name}.md # Story 문서
724
- ├── task-{task-name}.md # Task 개별 문서 (이 스킬)
725
- └── ...
718
+ documents/
719
+ └── issues/
720
+ └── tasks/
721
+ └── TASK-{story-id}-{seq}-{kebab-case-name}.md
726
722
  ```
727
723
 
728
724
  **파일명 규칙**:
729
- - `task-{kebab-case-name}.md` (예: `task-chatroom-entity.md`)
730
- - Task ID는 문서 내부 frontmatter에서 관리
725
+
726
+ | Task 유형 | 파일명 패턴 | 예시 |
727
+ |----------|------------|------|
728
+ | Story 기반 | `TASK-{STORY-ID}-{seq}-{name}.md` | `TASK-S001-01-chatroom-entity.md` |
729
+ | Epic 기반 | `TASK-{EPIC-ID}-{seq}-{name}.md` | `TASK-E001-01-db-migration.md` |
730
+ | 독립 Task | `TASK-IND-{seq}-{name}.md` | `TASK-IND-01-fix-login-bug.md` |
731
+
732
+ **예시 (Story 기반)**:
733
+ ```
734
+ documents/issues/tasks/
735
+ ├── TASK-S001-01-chatroom-entity.md # Story-001의 1번째 Task
736
+ ├── TASK-S001-02-chatroom-repository.md # Story-001의 2번째 Task
737
+ ├── TASK-S001-03-chatroom-service.md # Story-001의 3번째 Task
738
+ ├── TASK-S002-01-message-entity.md # Story-002의 1번째 Task
739
+ └── TASK-IND-01-refactor-auth.md # 독립 Task
740
+ ```
741
+
742
+ **ID 규칙**:
743
+ - `S001` = Story-001 (Story 기반)
744
+ - `E001` = Epic-001 (Epic 기반)
745
+ - `IND` = Independent (독립 Task)
746
+ - `seq` = 01, 02, 03... (순번)
747
+
748
+ **특징**:
749
+ - 파일명만 보고 상위 Story/Epic 연결 파악 가능
750
+ - 같은 Story의 Task들이 파일 탐색기에서 그룹핑됨
751
+ - 상위 Epic/Story 링크는 문서 내부 frontmatter에서도 관리
752
+
753
+ ---
754
+
755
+ ## Task 작성 완료 후 필수 작업
756
+
757
+ **중요: Task 파일 저장이 완료되면 반드시 다음 Subagent를 실행합니다:**
758
+
759
+ ### Step 1: 상태 추적 (필수)
760
+
761
+ **Subagent**: `task-tracker`
762
+
763
+ Task 도구를 사용하여 상태를 동기화합니다:
764
+
765
+ ```
766
+ Task 도구 호출:
767
+ - subagent_type: task-tracker
768
+ - prompt: "Task 문서가 생성되었습니다. 상태를 추적해주세요: {생성된 Task 파일 목록}"
769
+ ```
770
+
771
+ ### Step 2: 사용자 최종 확인
772
+
773
+ - 상태 추적 완료 후 사용자에게 최종 검토 요청
731
774
 
732
775
  ---
733
776
 
@@ -740,6 +783,7 @@ docs/
740
783
  - `/prd-generator`: PRD 생성
741
784
 
742
785
  **Subagents**:
786
+ - `task-tracker`: Task 생성 시 상태 추적 (자동 호출)
743
787
  - `unit-test-generator`: Task 구현 전 Unit Test 자동 생성 (TDD)
744
788
  - Task의 Acceptance Criteria 기반
745
789
  - 구현 전에 실패하는 테스트 먼저 생성
@@ -425,26 +425,37 @@ VALUES
425
425
  ### 출력 구조
426
426
 
427
427
  ```
428
- docs/
429
- └── implementation/
430
- └── {feature-name}/
431
- ├── tc-{story-name}.md # Story 레벨 TC (전체 시나리오 포함)
432
- └── test-data/
433
- ├── users.sql # 테스트 데이터 SQL
434
- └── mock-responses.json # Mock 응답 데이터
428
+ documents/
429
+ └── test/
430
+ ├── unit/
431
+ │ └── UT-{number}-{kebab-case-name}.md # Unit Test Case
432
+ └── acceptance/
433
+ └── AT-{number}-{kebab-case-name}.md # Acceptance Test Case
435
434
  ```
436
435
 
437
436
  **파일명 규칙**:
438
- - `tc-{story-name}.md` (예: `tc-email-login.md`)
439
- - 1 Story = 1 TC 문서 (여러 시나리오 포함)
437
+ - Unit Test: `UT-{number}-{kebab-case-name}.md` (예: `UT-001-user-repository.md`)
438
+ - Acceptance Test: `AT-{number}-{kebab-case-name}.md` (예: `AT-001-email-login.md`)
439
+ - 1 Story = 1 AT 문서 (여러 시나리오 포함)
440
+ - Task 레벨 검증 = UT 문서
440
441
 
441
- ### TC 문서 구조 (tc-{story-name}.md)
442
+ ### Unit Test vs Acceptance Test
443
+
444
+ | 항목 | Unit Test (UT) | Acceptance Test (AT) |
445
+ |------|---------------|---------------------|
446
+ | 레벨 | Task 레벨 | Story 레벨 |
447
+ | 관점 | 기술/구현 | 사용자/비즈니스 |
448
+ | 목적 | Task 완료 검증 | Story "close" 검증 |
449
+ | 예시 | "userId로 Entity 조회 성공" | "로그인 후 홈 이동" |
450
+ | 저장 경로 | `documents/test/unit/` | `documents/test/acceptance/` |
451
+
452
+ ### Acceptance Test 문서 구조 (AT-{number}-{name}.md)
442
453
 
443
454
  ```markdown
444
455
  ---
445
- id: TC-{story-id}
446
- title: [Story 제목] Test Cases
447
- story: story-{story-name}.md
456
+ id: AT-{number}
457
+ title: [Story 제목] Acceptance Test
458
+ story: STORY-xxx
448
459
  feature: {feature-name}
449
460
  status: ready # draft | ready | passed | failed
450
461
  total_scenarios: N
@@ -452,14 +463,14 @@ automation_rate: X%
452
463
  created_at: YYYY-MM-DD
453
464
  ---
454
465
 
455
- # [TC-XXX] Test Cases for Story
466
+ # [AT-XXX] Acceptance Test for Story
456
467
 
457
468
  ## Story 정보
458
469
 
459
470
  | 항목 | 내용 |
460
471
  |------|------|
461
- | Story | `docs/issue/{feature}/story-{story-name}.md` |
462
- | Epic | `docs/issue/{feature}/epic-{epic-name}.md` |
472
+ | Story | `documents/issues/stories/STORY-xxx.md` |
473
+ | Epic | `documents/issues/epics/EPIC-xxx.md` |
463
474
  | 총 시나리오 수 | N개 |
464
475
  | 자동화율 | X% |
465
476
 
@@ -467,27 +478,57 @@ created_at: YYYY-MM-DD
467
478
 
468
479
  | Story AC | AC 내용 | TC 시나리오 |
469
480
  |----------|---------|-------------|
470
- | AC-1 | 정상 로그인 | TC-01 |
471
- | AC-2 | 로그인 실패 처리 | TC-02 |
472
- | AC-3 | 계정 잠금 정책 | TC-03 |
481
+ | AC-1 | 정상 로그인 | AT-01 |
482
+ | AC-2 | 로그인 실패 처리 | AT-02 |
483
+ | AC-3 | 계정 잠금 정책 | AT-03 |
473
484
 
474
485
  ## 시나리오 목록
475
486
 
476
487
  | ID | 제목 | 유형 | 우선순위 | 자동화 |
477
488
  |----|------|------|----------|--------|
478
- | TC-01 | 정상 로그인 | E2E | P0 | Yes |
479
- | TC-02 | 잘못된 비밀번호 | E2E | P1 | Yes |
480
- | TC-03 | 계정 잠금 | E2E | P1 | Yes |
489
+ | AT-01 | 정상 로그인 | E2E | P0 | Yes |
490
+ | AT-02 | 잘못된 비밀번호 | E2E | P1 | Yes |
491
+ | AT-03 | 계정 잠금 | E2E | P1 | Yes |
481
492
 
482
493
  ## 실행 순서
483
494
 
484
- 1. 데이터 초기화: `test-data/users.sql` 실행
485
- 2. TC-01 실행 (정상 케이스 먼저)
486
- 3. TC-02 실행
487
- 4. TC-03 실행
495
+ 1. 데이터 초기화
496
+ 2. AT-01 실행 (정상 케이스 먼저)
497
+ 3. AT-02 실행
498
+ 4. AT-03 실행
488
499
  5. 데이터 정리
489
500
  ```
490
501
 
502
+ ### Unit Test 문서 구조 (UT-{number}-{name}.md)
503
+
504
+ ```markdown
505
+ ---
506
+ id: UT-{number}
507
+ title: [Task 제목] Unit Test
508
+ task: TASK-xxx
509
+ feature: {feature-name}
510
+ status: ready # draft | ready | passed | failed
511
+ total_scenarios: N
512
+ created_at: YYYY-MM-DD
513
+ ---
514
+
515
+ # [UT-XXX] Unit Test for Task
516
+
517
+ ## Task 정보
518
+
519
+ | 항목 | 내용 |
520
+ |------|------|
521
+ | Task | `documents/issues/tasks/TASK-xxx.md` |
522
+ | Story | `documents/issues/stories/STORY-xxx.md` |
523
+
524
+ ## 테스트 시나리오
525
+
526
+ | ID | 제목 | 유형 | 우선순위 |
527
+ |----|------|------|----------|
528
+ | UT-01 | findById 성공 | Unit | P0 |
529
+ | UT-02 | findById 실패 - 존재하지 않음 | Unit | P1 |
530
+ ```
531
+
491
532
  ---
492
533
 
493
534
  ## Test Agent 연동
@@ -529,20 +570,39 @@ fun `유효한 이메일과 비밀번호로 로그인 시 홈 화면으로 이
529
570
 
530
571
  ## TC 작성 완료 후 필수 작업
531
572
 
532
- **중요: TC 파일 저장이 완료되면 반드시 다음을 수행합니다:**
573
+ **중요: TC 파일 저장이 완료되면 반드시 다음 Subagent 체인을 순서대로 실행합니다:**
574
+
575
+ ### Step 1: 품질 검토 (필수)
576
+
577
+ **Subagent**: `tc-reviewer`
578
+
579
+ Task 도구를 사용하여 다음과 같이 호출합니다:
533
580
 
534
- 1. **tc-reviewer subagent 실행** (필수)
535
- - Task 도구를 사용하여 `tc-reviewer` subagent를 실행
536
- - TC 폴더 경로를 전달하여 품질 검토 수행
537
- - 검토 결과에 따라 TC 보완
581
+ ```
582
+ Task 도구 호출:
583
+ - subagent_type: tc-reviewer
584
+ - prompt: "다음 TC 문서를 검토해주세요: {TC 파일 경로}"
585
+ ```
586
+
587
+ **다음 단계 조건**:
588
+ - ✅ 리뷰 통과 → Step 2로 진행
589
+ - ❌ 리뷰 실패 → 피드백 반영 후 다시 Step 1
590
+
591
+ ### Step 2: 상태 추적 (필수)
592
+
593
+ **Subagent**: `task-tracker`
594
+
595
+ 리뷰 통과 후, Task 도구를 사용하여 상태를 동기화합니다:
538
596
 
539
597
  ```
540
- TC 작성이 완료되었습니다.
541
- 품질 검토를 위해 tc-reviewer를 실행합니다.
598
+ Task 도구 호출:
599
+ - subagent_type: task-tracker
600
+ - prompt: "TC 문서가 생성되었습니다. 상태를 추적해주세요: {TC 파일 경로}"
542
601
  ```
543
602
 
544
- 2. **사용자 최종 확인**
545
- - 리뷰 완료 후 사용자에게 최종 검토 요청
603
+ ### Step 3: 사용자 최종 확인
604
+
605
+ - 리뷰 및 상태 추적 완료 후 사용자에게 최종 검토 요청
546
606
 
547
607
  ---
548
608