muno-claude-plugin 1.5.0 → 1.6.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.6.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
 
@@ -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,14 +385,16 @@ 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
  ---
@@ -310,14 +310,16 @@ 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
  ---
@@ -389,13 +389,12 @@ 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
  ---
@@ -715,19 +715,19 @@ 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-{number}-{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
+ - `TASK-{number}-{kebab-case-name}.md` (예: `TASK-001-chatroom-entity.md`)
726
+ - Task ID는 파일명에 포함
727
+
728
+ **특징**:
729
+ - Task는 Story 없이 독립적으로 존재 가능
730
+ - 상위 Epic/Story 링크는 문서 내부 frontmatter에서 관리
731
731
 
732
732
  ---
733
733
 
@@ -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 연동