@su-record/vibe 1.2.21 → 1.3.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.
@@ -5,7 +5,9 @@ argument-hint: "feature name" or --phase N
5
5
 
6
6
  # /vibe.run
7
7
 
8
- Execute implementation based on SPEC (Implementation Agent with Multi-Model Orchestration).
8
+ Execute **Scenario-Driven Implementation** with automatic quality verification.
9
+
10
+ > **핵심 원칙**: 시나리오가 곧 구현 단위이자 검증 기준. 모든 시나리오 통과 = 품질 보장.
9
11
 
10
12
  ## Usage
11
13
 
@@ -18,6 +20,92 @@ Execute implementation based on SPEC (Implementation Agent with Multi-Model Orch
18
20
 
19
21
  ---
20
22
 
23
+ ## **Scenario-Driven Development (SDD)**
24
+
25
+ > 비개발자도 품질을 신뢰할 수 있도록, **시나리오 = 구현 = 검증**을 자동화
26
+
27
+ ### 핵심 흐름
28
+
29
+ ```
30
+ ┌─────────────────────────────────────────────────────────────────┐
31
+ │ SCENARIO-DRIVEN IMPLEMENTATION │
32
+ │ │
33
+ │ Feature 파일 로드 │
34
+ │ ↓ │
35
+ │ ┌──────────────────────────────────────────────────────────┐ │
36
+ │ │ Scenario 1: Happy Path │ │
37
+ │ │ Given → When → Then │ │
38
+ │ │ ↓ │ │
39
+ │ │ [구현] → [즉시 검증] → ✅ Pass │ │
40
+ │ └──────────────────────────────────────────────────────────┘ │
41
+ │ ↓ │
42
+ │ ┌──────────────────────────────────────────────────────────┐ │
43
+ │ │ Scenario 2: Edge Case │ │
44
+ │ │ Given → When → Then │ │
45
+ │ │ ↓ │ │
46
+ │ │ [구현] → [즉시 검증] → ❌ Fail → [수정] → ✅ Pass │ │
47
+ │ └──────────────────────────────────────────────────────────┘ │
48
+ │ ↓ │
49
+ │ ┌──────────────────────────────────────────────────────────┐ │
50
+ │ │ Scenario N: ... │ │
51
+ │ │ [구현] → [즉시 검증] → ✅ Pass │ │
52
+ │ └──────────────────────────────────────────────────────────┘ │
53
+ │ ↓ │
54
+ │ ┌──────────────────────────────────────────────────────────┐ │
55
+ │ │ 📊 QUALITY REPORT │ │
56
+ │ │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ │ │
57
+ │ │ 시나리오: 5/5 통과 ✅ │ │
58
+ │ │ 품질 점수: 94/100 │ │
59
+ │ │ 빌드: ✅ | 테스트: ✅ │ │
60
+ │ └──────────────────────────────────────────────────────────┘ │
61
+ └─────────────────────────────────────────────────────────────────┘
62
+ ```
63
+
64
+ ### 시나리오 = 구현 단위
65
+
66
+ **기존 방식 (Phase 기반)**:
67
+ ```
68
+ Phase 1 → Phase 2 → Phase 3 → ... → 마지막에 검증
69
+
70
+ "어디서 잘못됐지?"
71
+ ```
72
+
73
+ **SDD 방식 (Scenario 기반)**:
74
+ ```
75
+ Scenario 1 → 구현 → 검증 ✅
76
+ Scenario 2 → 구현 → 검증 ✅
77
+ Scenario 3 → 구현 → 검증 ❌ → 수정 → ✅
78
+ ...
79
+ 전체 통과 = 품질 보장
80
+ ```
81
+
82
+ ### 검증 자동화
83
+
84
+ 각 시나리오 구현 후 **자동 검증**:
85
+
86
+ | 검증 항목 | 자동 체크 |
87
+ |-----------|-----------|
88
+ | Given (전제조건) | 상태/데이터 준비 확인 |
89
+ | When (행동) | 기능 실행 가능 여부 |
90
+ | Then (결과) | 예상 결과 일치 여부 |
91
+ | 코드 품질 | 복잡도, 스타일, 보안 |
92
+
93
+ ### 실패 시 자동 수정
94
+
95
+ ```
96
+ Scenario 검증 실패
97
+
98
+ [원인 분석] - 어떤 Then 조건이 실패?
99
+
100
+ [수정 구현] - 해당 부분만 수정
101
+
102
+ [재검증] - 다시 체크
103
+
104
+ 통과할 때까지 반복 (최대 3회)
105
+ ```
106
+
107
+ ---
108
+
21
109
  ## **ULTRAWORK Mode** (ulw)
22
110
 
23
111
  > Include `ultrawork` or `ulw` in your command to activate **maximum performance mode**.
@@ -231,31 +319,89 @@ validate_code_quality: Verify quality after implementation
231
319
 
232
320
  ## Process
233
321
 
234
- ### 1. Read SPEC and Config
322
+ ### 1. Load SPEC + Feature
235
323
 
236
- Parse `.vibe/specs/{feature-name}.md`:
324
+ ```
325
+ 📄 .vibe/specs/{feature-name}.md → SPEC (구조, 제약, 컨텍스트)
326
+ 📄 .vibe/features/{feature-name}.feature → Feature (시나리오 = 구현 단위)
327
+ ```
237
328
 
238
- | Section | Purpose |
239
- |---------|---------|
240
- | `<role>` | AI role definition |
241
- | `<context>` | Background, tech stack, related code |
242
- | `<task>` | Phase-by-phase task list |
243
- | `<constraints>` | Constraints |
244
- | `<output_format>` | Files to create/modify |
245
- | `<acceptance>` | Verification criteria |
329
+ **Feature 파일이 없으면 에러**:
330
+ ```
331
+ Feature 파일이 없습니다.
332
+ 먼저 /vibe.spec "{feature-name}"을 실행하세요.
333
+ ```
246
334
 
247
- Check `.vibe/config.json`:
248
- - External LLM enablement (`models.gpt.enabled`, `models.gemini.enabled`)
335
+ ### 2. Scenario 목록 추출
249
336
 
250
- ### 2. Check Feature File
337
+ Feature 파일에서 모든 Scenario 추출:
251
338
 
252
- `.vibe/features/{feature-name}.feature`:
253
- - Check BDD Scenarios
254
- - Use as test cases
339
+ ```markdown
340
+ ## Scenarios to Implement
255
341
 
256
- ### 3. Phase-by-Phase Implementation
342
+ | # | Scenario | Status |
343
+ |---|----------|--------|
344
+ | 1 | 유효한 로그인 성공 | ⬜ |
345
+ | 2 | 잘못된 비밀번호 에러 | ⬜ |
346
+ | 3 | 이메일 형식 검증 | ⬜ |
347
+ | 4 | 비밀번호 찾기 링크 | ⬜ |
257
348
 
258
- Follow `<task>` section Phase order.
349
+ Total: 4 scenarios
350
+ ```
351
+
352
+ ### 3. Scenario-by-Scenario Implementation (핵심)
353
+
354
+ **각 시나리오마다**:
355
+
356
+ ```
357
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
358
+ 🎯 Scenario 1/4: 유효한 로그인 성공
359
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
360
+
361
+ Given: 사용자가 등록되어 있다
362
+ When: 유효한 이메일과 비밀번호로 로그인
363
+ Then: 로그인 성공 + JWT 토큰 반환
364
+
365
+ [Step 1] 구현 분석...
366
+ - 필요한 파일: auth.service.ts, login.controller.ts
367
+ - 관련 코드 탐색 중...
368
+
369
+ [Step 2] 구현 중...
370
+ ✅ auth.service.ts - login() 메서드 추가
371
+ ✅ login.controller.ts - POST /login 엔드포인트
372
+
373
+ [Step 3] 검증 중...
374
+ ✅ Given: 테스트 사용자 생성 가능
375
+ ✅ When: 로그인 API 호출 성공
376
+ ✅ Then: JWT 토큰 반환 확인
377
+
378
+ ✅ Scenario 1 통과!
379
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
380
+ ```
381
+
382
+ **실패 시**:
383
+
384
+ ```
385
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
386
+ 🎯 Scenario 2/4: 잘못된 비밀번호 에러
387
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
388
+
389
+ [Step 3] 검증 중...
390
+ ✅ Given: 테스트 사용자 존재
391
+ ✅ When: 잘못된 비밀번호로 로그인 시도
392
+ ❌ Then: "Invalid credentials" 에러 메시지
393
+ 실제: "Error occurred" 반환됨
394
+
395
+ [자동 수정 1/3]
396
+ 원인: 에러 메시지 하드코딩 안됨
397
+ 수정: auth.service.ts line 42
398
+
399
+ [재검증]
400
+ ✅ Then: "Invalid credentials" 에러 메시지
401
+
402
+ ✅ Scenario 2 통과! (수정 1회)
403
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
404
+ ```
259
405
 
260
406
  ---
261
407
 
@@ -363,24 +509,66 @@ Phase N Complete → Next Phase
363
509
  3. **Constraint compliance**: Check `<constraints>`
364
510
  4. **Run verification**: Execute verification commands
365
511
 
366
- ### 4. Acceptance Criteria Verification
512
+ ### 4. Quality Report (자동 생성)
513
+
514
+ 모든 시나리오 완료 후 **품질 리포트 자동 생성**:
515
+
516
+ ```
517
+ ┌─────────────────────────────────────────────────────────────────┐
518
+ │ 📊 QUALITY REPORT: login │
519
+ ├─────────────────────────────────────────────────────────────────┤
520
+ │ │
521
+ │ ✅ 시나리오: 4/4 통과 │
522
+ │ │
523
+ │ ┌───────────────────────────────────────────────────────────┐ │
524
+ │ │ # │ Scenario │ Status │ Retries │ │ │
525
+ │ │───│───────────────────────────│────────│─────────│ │ │
526
+ │ │ 1 │ 유효한 로그인 성공 │ ✅ │ 0 │ │ │
527
+ │ │ 2 │ 잘못된 비밀번호 에러 │ ✅ │ 1 │ │ │
528
+ │ │ 3 │ 이메일 형식 검증 │ ✅ │ 0 │ │ │
529
+ │ │ 4 │ 비밀번호 찾기 링크 │ ✅ │ 0 │ │ │
530
+ │ └───────────────────────────────────────────────────────────┘ │
531
+ │ │
532
+ │ 📈 품질 점수: 94/100 │
533
+ │ │
534
+ │ ┌─────────────────────────────────────────────────────────┐ │
535
+ │ │ 항목 │ 결과 │ 비고 │ │
536
+ │ │───────────────────│───────│─────────────────────────────│ │
537
+ │ │ 빌드 │ ✅ │ npm run build 성공 │ │
538
+ │ │ 테스트 │ ✅ │ 12/12 통과 │ │
539
+ │ │ 타입 검사 │ ✅ │ 에러 0개 │ │
540
+ │ │ 복잡도 │ ✅ │ 모든 함수 ≤20줄 │ │
541
+ │ │ 보안 │ ✅ │ 취약점 0개 │ │
542
+ │ └─────────────────────────────────────────────────────────┘ │
543
+ │ │
544
+ │ ⏱️ 총 소요: 3m 42s │
545
+ │ │
546
+ └─────────────────────────────────────────────────────────────────┘
547
+ ```
548
+
549
+ **사용자가 확인할 것**:
550
+ - 시나리오 통과율 (4/4 = 100%)
551
+ - 품질 점수 (94/100)
552
+ - 빌드/테스트 상태
367
553
 
368
- Check `<acceptance>` checklist:
369
- - [ ] Each criterion pass status
370
- - [ ] Tests pass
371
- - [ ] Build succeeds
554
+ **이것만 보면 품질을 신뢰할 수 있음.**
372
555
 
373
- ### 5. Update SPEC
556
+ ### 5. Update Feature File
557
+
558
+ 시나리오 상태 자동 업데이트:
374
559
 
375
- Check completed Tasks:
376
560
  ```markdown
377
- ## Task
378
- <task>
379
- ### Phase 1: Backend
380
- 1. [x] Write DB schema ✅
381
- 2. [x] API endpoint
382
- ...
383
- </task>
561
+ ## Coverage
562
+
563
+ | Scenario | SPEC AC | Status |
564
+ |----------|---------|--------|
565
+ | 유효한 로그인 성공 | AC-1 | |
566
+ | 잘못된 비밀번호 에러 | AC-2 | ✅ |
567
+ | 이메일 형식 검증 | AC-3 | ✅ |
568
+ | 비밀번호 찾기 링크 | AC-4 | ✅ |
569
+
570
+ **Last verified**: 2024-01-15 14:32
571
+ **Quality score**: 94/100
384
572
  ```
385
573
 
386
574
  ## TRUST 5 Principles
@@ -410,69 +598,104 @@ Follow during implementation:
410
598
  ## Example
411
599
 
412
600
  ```
413
- User: /vibe.run "brick-game"
601
+ User: /vibe.run "login"
414
602
 
415
603
  Claude:
416
- 📄 Reading SPEC: .vibe/specs/brick-game.md
604
+ 📄 Loading SPEC: .vibe/specs/login.md
605
+ 📄 Loading Feature: .vibe/features/login.feature
417
606
 
418
- <role> analysis:
419
- - Web game senior developer
420
- - Phaser.js expert
607
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
608
+ 📋 Scenarios to Implement
609
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
421
610
 
422
- <context> analysis:
423
- - Tech stack: Phaser.js, TypeScript
424
- - New project
611
+ | # | Scenario | Status |
612
+ |---|----------|--------|
613
+ | 1 | 유효한 로그인 성공 | ⬜ |
614
+ | 2 | 잘못된 비밀번호 에러 | ⬜ |
615
+ | 3 | 이메일 형식 검증 | ⬜ |
616
+ | 4 | 비밀번호 찾기 링크 | ⬜ |
425
617
 
426
- <task> analysis:
427
- - Phase 1: Project setup (3 tasks)
428
- - Phase 2: Game logic (5 tasks)
429
- - Phase 3: UI/UX (3 tasks)
430
- - Phase 4: Testing (2 tasks)
618
+ Total: 4 scenarios
431
619
 
432
- 🚀 Starting Phase 1...
620
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
621
+ 🎯 Scenario 1/4: 유효한 로그인 성공
622
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
433
623
 
434
- Launching parallel exploration...
435
- [Task(haiku) × 3 launched in parallel]
436
- - Analyzing Phaser.js project patterns
437
- - Checking TypeScript configuration standards
438
- - Finding game loop conventions
624
+ Given: 사용자가 등록되어 있다
625
+ When: 유효한 이메일과 비밀번호로 로그인
626
+ Then: 로그인 성공 + JWT 토큰 반환
439
627
 
440
- Exploration complete (3 tasks, 8.2s)
441
- 📋 Synthesizing results...
628
+ [PARALLEL] 탐색 중...
629
+ 탐색 완료 (2.1s)
442
630
 
443
- 🔨 Implementing Phase 1...
444
- [Task(sonnet) - Project setup]
631
+ 🔨 구현 중...
632
+ auth.service.ts - login() 추가
633
+ ✅ auth.controller.ts - POST /login
445
634
 
446
- Phase 1 complete
447
- - package.json created
448
- - TypeScript configured
449
- - Phaser.js installed
635
+ 🔍 검증 중...
636
+ Given: OK
637
+ When: OK
638
+ Then: OK
450
639
 
451
- 🚀 Starting Phase 2...
640
+ Scenario 1 통과!
452
641
 
453
- ⚡ Launching parallel exploration...
454
- [Task(haiku) × 3 launched in parallel]
455
- - Analyzing game scene structure
456
- - Checking physics engine patterns
457
- - Finding collision detection approaches
642
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
643
+ 🎯 Scenario 2/4: 잘못된 비밀번호 에러
644
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
645
+
646
+ 🔨 구현 중...
647
+ ✅ auth.service.ts - 비밀번호 검증 로직
458
648
 
459
- Exploration complete (3 tasks, 7.5s)
649
+ 🔍 검증 중...
650
+ ✅ Given: OK
651
+ ✅ When: OK
652
+ ❌ Then: "Invalid credentials" 에러 메시지
653
+ 실제: "Error" 반환
460
654
 
461
- 🔨 Implementing Phase 2...
462
- [Task(sonnet) - Game logic]
655
+ 🔄 자동 수정 1/3...
656
+ 수정: auth.service.ts line 42
463
657
 
464
- [Implementation continues...]
658
+ 🔍 재검증...
659
+ ✅ Then: OK
465
660
 
466
- All Phases complete!
467
- 📊 Verifying Acceptance Criteria...
468
- ✅ Game start/end works
469
- ✅ Ball-paddle collision handling
470
- ✅ Score display
471
- ✅ npm run build succeeds
661
+ Scenario 2 통과! (수정 1회)
472
662
 
473
- 🎉 Implementation complete!
663
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
664
+ 🎯 Scenario 3/4: 이메일 형식 검증
665
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
666
+
667
+ 🔨 구현 중...
668
+ 🔍 검증 중...
669
+ ✅ Scenario 3 통과!
670
+
671
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
672
+ 🎯 Scenario 4/4: 비밀번호 찾기 링크
673
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
674
+
675
+ 🔨 구현 중...
676
+ 🔍 검증 중...
677
+ ✅ Scenario 4 통과!
678
+
679
+ ┌─────────────────────────────────────────────────────────────────┐
680
+ │ 📊 QUALITY REPORT: login │
681
+ ├─────────────────────────────────────────────────────────────────┤
682
+ │ │
683
+ │ ✅ 시나리오: 4/4 통과 │
684
+ │ │
685
+ │ | # | Scenario | Status | Retries | │
686
+ │ |---|───────────────────────|───────|─────────| │
687
+ │ | 1 | 유효한 로그인 성공 | ✅ | 0 | │
688
+ │ | 2 | 잘못된 비밀번호 에러 | ✅ | 1 | │
689
+ │ | 3 | 이메일 형식 검증 | ✅ | 0 | │
690
+ │ | 4 | 비밀번호 찾기 링크 | ✅ | 0 | │
691
+ │ │
692
+ │ 📈 품질 점수: 94/100 │
693
+ │ 빌드: ✅ | 테스트: ✅ | 타입: ✅ │
694
+ │ │
695
+ │ ⏱️ 총 소요: 3m 42s │
696
+ └─────────────────────────────────────────────────────────────────┘
474
697
 
475
- ⏱️ Total time: 4m 32s (vs ~12m sequential)
698
+ 🎉 구현 완료! 모든 시나리오 통과.
476
699
  ```
477
700
 
478
701
  ### Phase-specific Execution
@@ -5,7 +5,9 @@ argument-hint: "feature name"
5
5
 
6
6
  # /vibe.verify
7
7
 
8
- Verify implementation based on Feature scenarios.
8
+ **품질 검증 자동화** - 비개발자도 품질을 신뢰할 수 있도록.
9
+
10
+ > 모든 시나리오 통과 = 품질 보장
9
11
 
10
12
  ## Usage
11
13
 
@@ -13,72 +15,134 @@ Verify implementation based on Feature scenarios.
13
15
  /vibe.verify "feature-name"
14
16
  ```
15
17
 
16
- ## Rules Reference
18
+ ## 핵심 원칙
17
19
 
18
- **Must follow `.vibe/rules/`:**
19
- - `quality/checklist.md` - Code quality checklist
20
- - `standards/complexity-metrics.md` - Complexity standards
20
+ ```
21
+ ┌─────────────────────────────────────────────────────────────────┐
22
+ │ 비개발자가 알아야 것 │
23
+ │ │
24
+ │ ✅ 시나리오 4/4 통과 │
25
+ │ 📈 품질 점수: 94/100 │
26
+ │ │
27
+ │ 이것만 보면 됨. 나머지는 시스템이 알아서. │
28
+ └─────────────────────────────────────────────────────────────────┘
29
+ ```
21
30
 
22
31
  ## Process
23
32
 
24
33
  ### 1. Load Feature File
25
34
 
26
- Read `.vibe/features/{feature-name}.feature`
27
-
28
- ### 2. Verify by Scenario
35
+ ```
36
+ 📄 .vibe/features/{feature-name}.feature → 시나리오 목록
37
+ 📄 .vibe/specs/{feature-name}.md 검증 기준 (참조)
38
+ ```
29
39
 
30
- For each Scenario:
40
+ **Feature 파일이 없으면**:
41
+ ```
42
+ ❌ Feature 파일이 없습니다.
43
+ 먼저 /vibe.spec "{feature-name}"을 실행하세요.
44
+ ```
31
45
 
32
- 1. **Given** (Precondition) - Check state
33
- 2. **When** (Action) - Execute feature
34
- 3. **Then** (Result) - Verify expected result
46
+ ### 2. Scenario-by-Scenario Verification
35
47
 
36
- ### 3. Verification Methods
48
+ 시나리오별 자동 검증:
37
49
 
38
- **Code verification:**
39
- - Check if feature is implemented
40
- - Verify Given/When/Then steps work
50
+ ```
51
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
52
+ 🔍 Scenario 1/4: 유효한 로그인 성공
53
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
41
54
 
42
- **Test execution (if available):**
43
- - Run `npm test`, `pytest`, `flutter test`, etc.
44
- - Check BDD test framework results
55
+ Given: 사용자가 등록되어 있다
56
+ 검증: 사용자 생성 API 존재?
57
+ 검증: 테스트 사용자 데이터?
45
58
 
46
- **Manual verification:**
47
- - If no test code, verify via code review
48
- - Check if each scenario's logic is implemented
59
+ When: 유효한 이메일과 비밀번호로 로그인
60
+ 검증: POST /login 엔드포인트?
61
+ 검증: 요청 처리 로직?
49
62
 
50
- ### 4. Result Report
63
+ Then: 로그인 성공 + JWT 토큰 반환
64
+ → 검증: 성공 응답 코드 200? ✅
65
+ → 검증: JWT 토큰 포함? ✅
51
66
 
52
- ```markdown
53
- # Verification Report: {feature-name}
67
+ ✅ Scenario 1 통과!
68
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
69
+ ```
54
70
 
55
- ## Summary
56
- - **Total Scenarios**: N
57
- - **Passed**: N ✅
58
- - **Failed**: N ❌
59
- - **Quality Score**: XX/100
71
+ ### 3. Verification Methods (자동 선택)
60
72
 
61
- ## Scenario Results
73
+ | 방법 | 조건 | 검증 내용 |
74
+ |------|------|-----------|
75
+ | **테스트 실행** | 테스트 파일 존재 시 | `npm test`, `pytest` 등 실행 |
76
+ | **코드 분석** | 항상 | 구현 여부, 로직 확인 |
77
+ | **빌드 검증** | 빌드 스크립트 존재 시 | 컴파일 에러 확인 |
78
+ | **타입 검사** | TypeScript 등 | 타입 에러 확인 |
62
79
 
63
- ### Scenario 1: {title}
64
- - Given: Verified
65
- - When: Implemented
66
- - Then: Works
67
- - **Verification**: AC-1 satisfied
80
+ ### 4. Quality Report (자동 생성)
68
81
 
69
- ### ❌ Scenario 2: {title}
70
- - Given: Verified
71
- - When: Implemented
72
- - Then: **Failed** - {reason}
73
- - **Fix needed**: {specific details}
82
+ ```
83
+ ┌─────────────────────────────────────────────────────────────────┐
84
+ │ 📊 VERIFICATION REPORT: login │
85
+ ├─────────────────────────────────────────────────────────────────┤
86
+ │ │
87
+ │ ✅ 시나리오: 4/4 통과 (100%) │
88
+ │ │
89
+ │ ┌───────────────────────────────────────────────────────────┐ │
90
+ │ │ # │ Scenario │ Given │ When │ Then │ Status │ │
91
+ │ │───│───────────────────────│───────│──────│──────│────────│ │
92
+ │ │ 1 │ 유효한 로그인 성공 │ ✅ │ ✅ │ ✅ │ ✅ │ │
93
+ │ │ 2 │ 잘못된 비밀번호 에러 │ ✅ │ ✅ │ ✅ │ ✅ │ │
94
+ │ │ 3 │ 이메일 형식 검증 │ ✅ │ ✅ │ ✅ │ ✅ │ │
95
+ │ │ 4 │ 비밀번호 찾기 링크 │ ✅ │ ✅ │ ✅ │ ✅ │ │
96
+ │ └───────────────────────────────────────────────────────────┘ │
97
+ │ │
98
+ │ 📈 품질 점수: 94/100 │
99
+ │ │
100
+ │ ┌─────────────────────────────────────────────────────────┐ │
101
+ │ │ 항목 │ 결과 │ 상세 │ │
102
+ │ │───────────────────│───────│─────────────────────────────│ │
103
+ │ │ 빌드 │ ✅ │ 성공 │ │
104
+ │ │ 테스트 │ ✅ │ 12/12 통과 │ │
105
+ │ │ 타입 검사 │ ✅ │ 에러 0개 │ │
106
+ │ │ 복잡도 │ ✅ │ 모든 함수 ≤20줄 │ │
107
+ │ │ 코드 커버리지 │ ⚠️ │ 78% (목표: 80%) │ │
108
+ │ └─────────────────────────────────────────────────────────┘ │
109
+ │ │
110
+ │ 📋 권장 사항: │
111
+ │ - 코드 커버리지 2% 추가 필요 (auth.service.ts line 45-52) │
112
+ │ │
113
+ └─────────────────────────────────────────────────────────────────┘
114
+ ```
74
115
 
75
- ## Code Quality
76
- - Complexity: ✅ Appropriate
77
- - Test Coverage: XX%
78
- - Error Handling: ✅
116
+ ### 실패 시 리포트
79
117
 
80
- ## Next Steps
81
- - {How to fix failed scenarios}
118
+ ```
119
+ ┌─────────────────────────────────────────────────────────────────┐
120
+ │ 📊 VERIFICATION REPORT: login │
121
+ ├─────────────────────────────────────────────────────────────────┤
122
+ │ │
123
+ │ ❌ 시나리오: 3/4 통과 (75%) │
124
+ │ │
125
+ │ ┌───────────────────────────────────────────────────────────┐ │
126
+ │ │ # │ Scenario │ Given │ When │ Then │ Status │ │
127
+ │ │───│───────────────────────│───────│──────│──────│────────│ │
128
+ │ │ 1 │ 유효한 로그인 성공 │ ✅ │ ✅ │ ✅ │ ✅ │ │
129
+ │ │ 2 │ 잘못된 비밀번호 에러 │ ✅ │ ✅ │ ✅ │ ✅ │ │
130
+ │ │ 3 │ 이메일 형식 검증 │ ✅ │ ✅ │ ✅ │ ✅ │ │
131
+ │ │ 4 │ 비밀번호 찾기 링크 │ ✅ │ ❌ │ - │ ❌ │ │
132
+ │ └───────────────────────────────────────────────────────────┘ │
133
+ │ │
134
+ │ ❌ 실패 상세: │
135
+ │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ │
136
+ │ Scenario 4: 비밀번호 찾기 링크 │
137
+ │ │
138
+ │ When: "비밀번호 찾기" 클릭 │
139
+ │ ❌ 문제: 링크가 구현되지 않음 │
140
+ │ 📍 위치: LoginForm.tsx line 42 │
141
+ │ 💡 수정: "Forgot password" 링크 추가 필요 │
142
+ │ │
143
+ │ 🔧 자동 수정 실행: /vibe.run "login" --fix │
144
+ │ │
145
+ └─────────────────────────────────────────────────────────────────┘
82
146
  ```
83
147
 
84
148
  ## Input
@@ -99,40 +163,62 @@ For each Scenario:
99
163
  User: /vibe.verify "login"
100
164
 
101
165
  Claude:
102
- # Verification Report: login
103
-
104
- ## Summary
105
- - **Total Scenarios**: 4
106
- - **Passed**: 3
107
- - **Failed**: 1 ❌
108
- - **Quality Score**: 85/100
109
-
110
- ## Scenario Results
111
-
112
- ### ✅ Scenario 1: Login with valid credentials
113
- - Given: User is on login page → ✅ LoginPage component exists
114
- - When: Enter valid email/password handleSubmit implemented
115
- - Then: Redirect to dashboard → ✅ router.push('/dashboard')
116
-
117
- ### Scenario 2: Login with wrong password
118
- - Given: Login page → ✅
119
- - When: Wrong password → ✅
120
- - Then: Show error message → ✅ "Password does not match"
121
-
122
- ### Scenario 3: Email format validation
123
- - Given: Login page → ✅
124
- - When: Invalid email format → ✅
125
- - Then: Validation error → ✅ zod validation
126
-
127
- ### ❌ Scenario 4: Forgot password link
128
- - Given: Login page → ✅
129
- - When: Click "Forgot password" → ❌ Link missing
130
- - Then: Navigate to forgot password page → ❌
131
-
132
- ## Next Steps
133
- Scenario 4 fix needed:
134
- - Add "Forgot password" link to LoginPage
135
- - Implement /forgot-password route
166
+ 📄 Loading Feature: .vibe/features/login.feature
167
+ 🔍 검증 시작...
168
+
169
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
170
+ 🔍 Scenario 1/4: 유효한 로그인 성공
171
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
172
+ Given: 사용자 등록 - OK
173
+ ✅ When: 로그인 시도 - OK
174
+ Then: JWT 토큰 반환 - OK
175
+ ✅ 통과!
176
+
177
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
178
+ 🔍 Scenario 2/4: 잘못된 비밀번호 에러
179
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
180
+ ✅ Given: OK
181
+ When: OK
182
+ Then: OK
183
+ 통과!
184
+
185
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
186
+ 🔍 Scenario 3/4: 이메일 형식 검증
187
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
188
+ Given: OK
189
+ When: OK
190
+ ✅ Then: OK
191
+ 통과!
192
+
193
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
194
+ 🔍 Scenario 4/4: 비밀번호 찾기 링크
195
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
196
+ Given: OK
197
+ When: "비밀번호 찾기" 링크 - 없음
198
+ - Then: (스킵)
199
+ 실패!
200
+
201
+ ┌─────────────────────────────────────────────────────────────────┐
202
+ │ 📊 VERIFICATION REPORT: login │
203
+ ├─────────────────────────────────────────────────────────────────┤
204
+ │ │
205
+ │ ❌ 시나리오: 3/4 통과 (75%) │
206
+ │ │
207
+ │ | # | Scenario | Status | │
208
+ │ |---|───────────────────────|────────| │
209
+ │ | 1 | 유효한 로그인 성공 | ✅ | │
210
+ │ | 2 | 잘못된 비밀번호 에러 | ✅ | │
211
+ │ | 3 | 이메일 형식 검증 | ✅ | │
212
+ │ | 4 | 비밀번호 찾기 링크 | ❌ | │
213
+ │ │
214
+ │ 📈 품질 점수: 75/100 │
215
+ │ │
216
+ │ ❌ 수정 필요: │
217
+ │ - Scenario 4: LoginForm.tsx에 "Forgot password" 링크 추가 │
218
+ │ │
219
+ │ 🔧 자동 수정: /vibe.run "login" --fix │
220
+ │ │
221
+ └─────────────────────────────────────────────────────────────────┘
136
222
  ```
137
223
 
138
224
  ## Next Step
@@ -48,68 +48,5 @@
48
48
  ],
49
49
  "deny": [],
50
50
  "ask": []
51
- },
52
- "hooks": {
53
- "SessionStart": [
54
- {
55
- "hooks": [
56
- {
57
- "type": "prompt",
58
- "prompt": "Call mcp__vibe__start_session to restore previous session context."
59
- }
60
- ]
61
- }
62
- ],
63
- "UserPromptSubmit": [
64
- {
65
- "matcher": "ultrawork|ulw|울트라워크",
66
- "hooks": [
67
- {
68
- "type": "prompt",
69
- "prompt": "🚀 ULTRAWORK MODE DETECTED. You MUST: (1) Use PARALLEL Task calls for ALL exploration, (2) Enable Boulder Loop - auto-continue through ALL phases without pausing, (3) Auto-retry on errors up to 3 times, (4) Run mcp__vibe__auto_save_context at 70%+ context, (5) Do NOT ask for confirmation between phases. Keep rolling until ALL acceptance criteria pass."
70
- }
71
- ]
72
- }
73
- ],
74
- "PostToolUse": [
75
- {
76
- "matcher": "Write|Edit",
77
- "hooks": [
78
- {
79
- "type": "prompt",
80
- "prompt": "Silently check .vibe/rules/quality/checklist.md. Fix critical issues (syntax errors, security vulnerabilities) inline. Do NOT stop to report - continue your current task."
81
- }
82
- ]
83
- }
84
- ],
85
- "Notification": [
86
- {
87
- "matcher": "context_window_70",
88
- "hooks": [
89
- {
90
- "type": "prompt",
91
- "prompt": "Context at 70%. You still have headroom - don't rush or produce sloppy work. But start being selective about file reads. If ULTRAWORK mode: run mcp__vibe__auto_save_context now."
92
- }
93
- ]
94
- },
95
- {
96
- "matcher": "context_window_85",
97
- "hooks": [
98
- {
99
- "type": "prompt",
100
- "prompt": "Context at 85%. IMMEDIATELY run mcp__vibe__auto_save_context with urgency='high'. Summarize current progress and next steps. Compress verbose outputs."
101
- }
102
- ]
103
- },
104
- {
105
- "matcher": "context_window_95",
106
- "hooks": [
107
- {
108
- "type": "prompt",
109
- "prompt": "Context at 95% - CRITICAL. Run mcp__vibe__auto_save_context with urgency='critical' NOW. Save all progress, blockers, and next steps. Prepare for session transition. If in ULTRAWORK mode, the next session will auto-restore and continue."
110
- }
111
- ]
112
- }
113
- ]
114
51
  }
115
52
  }
@@ -36,7 +36,8 @@
36
36
  "Bash(git checkout:*)",
37
37
  "Bash(git revert:*)",
38
38
  "Bash(ls:*)",
39
- "Bash(npx @su-record/vibe@1.2.14 update:*)"
39
+ "Bash(npx @su-record/vibe@1.2.14 update:*)",
40
+ "Bash(npm unpublish:*)"
40
41
  ],
41
42
  "deny": [],
42
43
  "ask": []
package/README.md CHANGED
@@ -2,7 +2,9 @@
2
2
 
3
3
  **SPEC-driven AI coding framework (Claude Code 전용)**
4
4
 
5
- SPEC 문서 하나로 AI가 바로 구현하는 2-step 워크플로우.
5
+ SPEC 문서 하나로 AI가 바로 구현하고, **시나리오별 자동 검증**으로 품질을 보장하는 프레임워크.
6
+
7
+ > **품질은 사용자가 신경 쓰는 게 아니라, 시스템이 보장하는 것.**
6
8
 
7
9
  [![npm version](https://img.shields.io/npm/v/@su-record/vibe.svg)](https://www.npmjs.com/package/@su-record/vibe)
8
10
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
@@ -12,12 +14,12 @@ SPEC 문서 하나로 AI가 바로 구현하는 2-step 워크플로우.
12
14
 
13
15
  ## Features
14
16
 
15
- - **Claude Code 전용**: 네이티브 슬래시 커맨드 + MCP 통합
17
+ - **시나리오 주도 개발 (SDD)**: 시나리오 = 구현 단위 = 검증 단위
18
+ - **BDD 자동 검증**: Given/When/Then 단계별 자동 품질 검증
19
+ - **품질 보장 시스템**: 비개발자도 품질을 신뢰할 수 있는 자동화
16
20
  - **ULTRAWORK Mode**: `ulw` 한 단어로 모든 최적화 자동 활성화
17
- - **Boulder Loop**: 모든 Phase 완료까지 자동 진행 (시지푸스처럼)
21
+ - **Boulder Loop**: 모든 시나리오 완료까지 자동 진행
18
22
  - **병렬 서브에이전트**: Haiku 3+ 동시 탐색으로 ~3배 속도 향상
19
- - **PTCF 구조**: Persona, Task, Context, Format - Gemini 프롬프트 최적화
20
- - **코딩 규칙 내장**: `.vibe/rules/` - 품질 기준, 복잡도 제한, 안티패턴
21
23
  - **자동 컨텍스트 관리**: 70%+ 시 자동 압축/저장
22
24
  - **36개 MCP 도구**: @su-record/hi-ai 통합
23
25
 
@@ -63,19 +65,33 @@ cd my-project
63
65
  │ /vibe.spec "기능명" │
64
66
  │ ↓ 대화형 요구사항 수집 │
65
67
  │ ↓ .vibe/specs/{기능명}.md (PTCF 구조) │
66
- │ ↓ .vibe/features/{기능명}.feature (BDD)
68
+ │ ↓ .vibe/features/{기능명}.feature (BDD 시나리오)
67
69
  ├─────────────────────────────────────────────────────┤
68
70
  │ /vibe.run "기능명" ultrawork │
69
- │ ↓ 🚀 ULTRAWORK: 병렬 탐색 + 자동 진행
70
- │ ↓ Boulder Loop: 모든 Phase 완료까지 자동 실행
71
- │ ↓ 에러 자동 재시도 (3회)
71
+ │ ↓ 시나리오별 구현 + 즉시 검증 (SDD)
72
+ │ ↓ Scenario 1 구현 → Scenario 2 → ...
73
+ │ ↓ 실패 자동 재시도 (최대 3회)
72
74
  ├─────────────────────────────────────────────────────┤
73
75
  │ /vibe.verify "기능명" │
74
- │ ↓ Acceptance Criteria 검증
75
- │ ↓ 품질 점수 (A+ ~ F)
76
+ │ ↓ Given/When/Then 단계별 검증
77
+ │ ↓ 품질 리포트 자동 생성
76
78
  └─────────────────────────────────────────────────────┘
77
79
  ```
78
80
 
81
+ ### 시나리오 주도 개발 (SDD)
82
+
83
+ > **각 시나리오가 곧 구현 단위이자 검증 단위입니다.**
84
+
85
+ ```
86
+ Feature 로드 → Scenario 1 [구현→검증] → Scenario 2 [구현→검증] → ... → 품질 리포트
87
+ ↓ ↓
88
+ ✅ 통과 시 다음 ❌ 실패 시 수정 후 재검증
89
+ ```
90
+
91
+ 비개발자도 시나리오 통과율만 보면 품질을 알 수 있습니다:
92
+ - ✅ 4/4 시나리오 통과 = 품질 보장
93
+ - 📈 품질 점수: 94/100
94
+
79
95
  ---
80
96
 
81
97
  ## Commands
@@ -152,27 +168,71 @@ cd my-project
152
168
 
153
169
  ### Boulder Loop
154
170
 
155
- 시지푸스처럼 바위를 굴리듯, **모든 작업이 완료될 때까지** 자동으로 진행:
171
+ 시지푸스처럼 바위를 굴리듯, **모든 시나리오가 통과될 때까지** 자동으로 진행:
156
172
 
157
173
  ```
158
- Phase 1 → Phase 2 → Phase 3 → ... → Phase N
159
-
160
- [병렬탐색] [병렬탐색] [병렬탐색] [병렬탐색]
161
- [구현] [구현] [구현] [구현]
162
- [테스트] [테스트] [테스트] [테스트]
163
-
164
- 🎉 완료까지 자동!
174
+ Scenario 1 → Scenario 2 → Scenario 3 → ... → Scenario N
175
+
176
+ [탐색+구현] [탐색+구현] [탐색+구현] [탐색+구현]
177
+ [즉시 검증] [즉시 검증] [즉시 검증] [즉시 검증]
178
+ ✅ ✅ ✅ ✅
179
+
180
+ 🎉 품질 보장 완료!
165
181
  ```
166
182
 
167
183
  ### 일반 모드 vs ULTRAWORK
168
184
 
169
185
  | 항목 | 일반 모드 | ULTRAWORK |
170
186
  |------|----------|-----------|
171
- | Phase 전환 | 일시정지 가능 | 자동 진행 |
172
- | 에러 발생 | 보고 후 중단 | 자동 재시도 (3회) |
187
+ | 시나리오 전환 | 일시정지 가능 | 자동 진행 |
188
+ | 검증 실패 | 보고 후 중단 | 자동 재시도 (3회) |
173
189
  | 컨텍스트 70%+ | 경고만 | 자동 압축/저장 |
174
190
  | 탐색 방식 | 순차 가능 | **강제 병렬** |
175
- | 완료 조건 | Phase별 | 전체 완료까지 |
191
+ | 완료 조건 | 시나리오별 | 전체 시나리오 통과까지 |
192
+
193
+ ---
194
+
195
+ ## BDD 자동 검증
196
+
197
+ ### 품질 리포트 예시
198
+
199
+ `/vibe.verify` 실행 시 자동 생성되는 품질 리포트:
200
+
201
+ ```
202
+ ┌─────────────────────────────────────────────────────────────────┐
203
+ │ 📊 VERIFICATION REPORT: login │
204
+ ├─────────────────────────────────────────────────────────────────┤
205
+ │ │
206
+ │ ✅ 시나리오: 4/4 통과 (100%) │
207
+ │ │
208
+ │ | # | Scenario | Given | When | Then | Status | │
209
+ │ |---|───────────────────────|───────|──────|──────|────────| │
210
+ │ | 1 | 유효한 로그인 성공 | ✅ | ✅ | ✅ | ✅ | │
211
+ │ | 2 | 잘못된 비밀번호 에러 | ✅ | ✅ | ✅ | ✅ | │
212
+ │ | 3 | 이메일 형식 검증 | ✅ | ✅ | ✅ | ✅ | │
213
+ │ | 4 | 비밀번호 찾기 링크 | ✅ | ✅ | ✅ | ✅ | │
214
+ │ │
215
+ │ 📈 품질 점수: 94/100 │
216
+ │ │
217
+ └─────────────────────────────────────────────────────────────────┘
218
+ ```
219
+
220
+ ### 검증 실패 시
221
+
222
+ ```
223
+ ❌ Scenario 4: 비밀번호 찾기 링크
224
+
225
+ When: "비밀번호 찾기" 클릭
226
+ ❌ 문제: 링크가 구현되지 않음
227
+ 📍 위치: LoginForm.tsx line 42
228
+ 💡 수정: "Forgot password" 링크 추가 필요
229
+
230
+ 🔧 자동 수정: /vibe.run "login" --fix
231
+ ```
232
+
233
+ 비개발자가 알아야 할 것:
234
+ - ✅ 시나리오 4/4 통과 → **품질 보장됨**
235
+ - ❌ 시나리오 3/4 통과 → **수정 필요** (자동 수정 가능)
176
236
 
177
237
  ---
178
238
 
@@ -202,6 +262,31 @@ project/
202
262
 
203
263
  ---
204
264
 
265
+ ## Feature 파일 (BDD 시나리오)
266
+
267
+ ```gherkin
268
+ # .vibe/features/login.feature
269
+
270
+ Feature: 로그인
271
+
272
+ Scenario: 유효한 로그인 성공
273
+ Given 사용자가 등록되어 있다
274
+ # 검증: 사용자 생성 API 존재
275
+ When 유효한 이메일과 비밀번호로 로그인
276
+ # 검증: POST /login 엔드포인트
277
+ Then 로그인 성공 + JWT 토큰 반환
278
+ # 검증: 200 응답 + 토큰 포함
279
+
280
+ Scenario: 잘못된 비밀번호 에러
281
+ Given 사용자가 등록되어 있다
282
+ When 잘못된 비밀번호로 로그인
283
+ Then 401 에러 + "비밀번호가 틀립니다" 메시지
284
+ ```
285
+
286
+ 각 시나리오의 Given/When/Then이 자동 검증 포인트가 됩니다.
287
+
288
+ ---
289
+
205
290
  ## SPEC Document (PTCF Structure)
206
291
 
207
292
  ```markdown
@@ -217,16 +302,16 @@ AI의 역할과 전문성 정의
217
302
  - 배경, 목적
218
303
  - 기술 스택
219
304
  - 관련 코드
220
- - 디자인 레퍼런스
221
305
  </context>
222
306
 
223
307
  ## Task
224
308
  <task>
225
- ### Phase 1: {단계명}
226
- 1. [ ] 작업 1
227
- 2. [ ] 작업 2
309
+ ### Scenario 1: {시나리오명}
310
+ Given: {전제 조건}
311
+ When: {사용자 행동}
312
+ Then: {예상 결과}
228
313
 
229
- ### Phase 2: {단계명}
314
+ ### Scenario 2: {시나리오명}
230
315
  ...
231
316
  </task>
232
317
 
@@ -236,17 +321,10 @@ AI의 역할과 전문성 정의
236
321
  - 에러 메시지 한글화
237
322
  </constraints>
238
323
 
239
- ## Output Format
240
- <output_format>
241
- - 생성할 파일
242
- - 수정할 파일
243
- - 검증 명령어
244
- </output_format>
245
-
246
324
  ## Acceptance Criteria
247
325
  <acceptance>
248
- - [ ] 검증 기준 1
249
- - [ ] 검증 기준 2
326
+ - [ ] Scenario 1 통과
327
+ - [ ] Scenario 2 통과
250
328
  </acceptance>
251
329
  ```
252
330
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@su-record/vibe",
3
- "version": "1.2.21",
3
+ "version": "1.3.0",
4
4
  "description": "Vibe - Claude Code exclusive SPEC-driven AI coding framework",
5
5
  "bin": {
6
6
  "vibe": "./bin/vibe"
@@ -1,6 +1,12 @@
1
1
  # Feature: {기능명}
2
2
 
3
+ > 이 파일은 **품질 보장의 핵심**입니다. 모든 시나리오 통과 = 기능 완성.
4
+
3
5
  **SPEC**: `.vibe/specs/{기능명}.md`
6
+ **Last verified**: -
7
+ **Quality score**: -
8
+
9
+ ---
4
10
 
5
11
  ## User Story
6
12
 
@@ -12,59 +18,79 @@
12
18
 
13
19
  ## Scenarios
14
20
 
21
+ > 각 시나리오가 구현 단위이자 검증 단위입니다.
22
+
15
23
  ### Scenario 1: {Happy Path - 정상 케이스}
16
24
 
17
25
  ```gherkin
18
26
  Scenario: {시나리오 제목}
19
27
  Given {전제 조건}
28
+ # 검증: {무엇을 확인하는가}
20
29
  When {사용자 행동}
30
+ # 검증: {어떤 기능이 실행되는가}
21
31
  Then {예상 결과}
32
+ # 검증: {무엇이 보이거나 반환되는가}
22
33
  ```
23
34
 
24
- **검증 기준**: SPEC Acceptance Criteria #1
35
+ **SPEC AC**: #1
36
+ **Status**: ⬜
25
37
 
26
38
  ---
27
39
 
28
- ### Scenario 2: {Edge Case - 예외 케이스}
40
+ ### Scenario 2: {Edge Case - 에러 케이스}
29
41
 
30
42
  ```gherkin
31
43
  Scenario: {에러 시나리오 제목}
32
44
  Given {전제 조건}
33
- When {잘못된 입력}
34
- Then {에러 처리}
45
+ When {잘못된 입력 또는 예외 상황}
46
+ Then {에러 메시지 또는 적절한 처리}
35
47
  ```
36
48
 
37
- **검증 기준**: SPEC Acceptance Criteria #2
49
+ **SPEC AC**: #2
50
+ **Status**: ⬜
38
51
 
39
52
  ---
40
53
 
41
- ### Scenario Outline: {파라미터화 테스트}
54
+ ### Scenario 3: {Boundary Case - 경계 케이스}
42
55
 
43
56
  ```gherkin
44
- Scenario Outline: {시나리오 제목}
57
+ Scenario: {경계값 테스트}
45
58
  Given {전제 조건}
46
- When I input "<input>"
47
- Then I should see "<output>"
48
-
49
- Examples:
50
- | input | output |
51
- | value1 | result1 |
52
- | value2 | result2 |
59
+ When {경계값 입력}
60
+ Then {적절한 처리}
53
61
  ```
54
62
 
63
+ **SPEC AC**: #3
64
+ **Status**: ⬜
65
+
55
66
  ---
56
67
 
57
- ## Coverage
68
+ ## Coverage Summary
58
69
 
59
- | Scenario | SPEC Acceptance | Status |
60
- |----------|-----------------|--------|
61
- | Scenario 1 | AC-1 | ⬜ |
62
- | Scenario 2 | AC-2 | ⬜ |
70
+ | # | Scenario | SPEC AC | Status | Retries |
71
+ |---|----------|---------|--------|---------|
72
+ | 1 | {Happy Path} | AC-1 | ⬜ | - |
73
+ | 2 | {Edge Case} | AC-2 | ⬜ | - |
74
+ | 3 | {Boundary Case} | AC-3 | ⬜ | - |
75
+
76
+ **Total**: 0/3 통과 (0%)
63
77
 
64
78
  ---
65
79
 
66
- ## Verification
80
+ ## Verification Commands
67
81
 
68
82
  ```bash
83
+ # 전체 검증
69
84
  /vibe.verify "{기능명}"
85
+
86
+ # 실패 시 자동 수정
87
+ /vibe.run "{기능명}" --fix
70
88
  ```
89
+
90
+ ---
91
+
92
+ ## Notes
93
+
94
+ - 시나리오 추가/수정 시 Coverage Summary도 함께 업데이트
95
+ - Given/When/Then 각각에 검증 포인트 명시
96
+ - 모든 시나리오 통과 시 품질 보장됨
@@ -65,7 +65,7 @@
65
65
  "hooks": [
66
66
  {
67
67
  "type": "command",
68
- "command": "echo '[CODE CHECK] Continue your task. Quick inline check: no syntax errors, no any types, no security issues, preserves existing code style.'"
68
+ "command": "echo '[CODE CHECK] Review for issues: unused imports, syntax errors, incomplete implementation. If any found, fix immediately in next edit. Continue with task until complete.'"
69
69
  }
70
70
  ]
71
71
  }