@su-record/vibe 2.4.72 → 2.4.74

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 (120) hide show
  1. package/CLAUDE.md +216 -215
  2. package/README.md +4 -4
  3. package/agents/research/best-practices-agent.md +13 -13
  4. package/agents/research/codebase-patterns-agent.md +33 -33
  5. package/agents/research/framework-docs-agent.md +23 -23
  6. package/agents/research/security-advisory-agent.md +29 -29
  7. package/agents/review/architecture-reviewer.md +31 -31
  8. package/agents/review/complexity-reviewer.md +21 -21
  9. package/agents/review/data-integrity-reviewer.md +29 -29
  10. package/agents/review/git-history-reviewer.md +24 -24
  11. package/agents/review/performance-reviewer.md +29 -29
  12. package/agents/review/python-reviewer.md +53 -53
  13. package/agents/review/rails-reviewer.md +40 -40
  14. package/agents/review/react-reviewer.md +40 -40
  15. package/agents/review/security-reviewer.md +29 -29
  16. package/agents/review/simplicity-reviewer.md +24 -24
  17. package/agents/review/test-coverage-reviewer.md +31 -31
  18. package/agents/review/typescript-reviewer.md +41 -41
  19. package/commands/vibe.analyze.md +103 -7
  20. package/commands/vibe.reason.md +106 -0
  21. package/commands/vibe.review.md +123 -38
  22. package/commands/vibe.run.md +286 -221
  23. package/commands/vibe.spec.md +290 -175
  24. package/commands/vibe.utils.md +104 -3
  25. package/commands/vibe.verify.md +179 -86
  26. package/dist/cli/detect.js +40 -40
  27. package/dist/cli/detect.js.map +1 -1
  28. package/dist/cli/index.d.ts +1 -1
  29. package/dist/cli/index.js +1 -1
  30. package/dist/cli/llm.js +5 -5
  31. package/dist/cli/llm.js.map +1 -1
  32. package/dist/cli/setup.js +3 -3
  33. package/dist/cli/setup.js.map +1 -1
  34. package/dist/lib/ContextCompressor.js +1 -1
  35. package/dist/lib/ContextCompressor.js.map +1 -1
  36. package/dist/lib/gemini-api.js +12 -12
  37. package/dist/lib/gemini-api.js.map +1 -1
  38. package/dist/lib/gemini-oauth.js +22 -22
  39. package/dist/lib/gemini-oauth.js.map +1 -1
  40. package/dist/lib/gemini-storage.js +3 -3
  41. package/dist/lib/gemini-storage.js.map +1 -1
  42. package/dist/lib/gpt-api.js +11 -11
  43. package/dist/lib/gpt-api.js.map +1 -1
  44. package/dist/lib/gpt-oauth.js +28 -28
  45. package/dist/lib/gpt-oauth.js.map +1 -1
  46. package/dist/lib/gpt-storage.js +3 -3
  47. package/dist/lib/gpt-storage.js.map +1 -1
  48. package/dist/orchestrator/orchestrator.d.ts.map +1 -1
  49. package/dist/orchestrator/orchestrator.js +4 -6
  50. package/dist/orchestrator/orchestrator.js.map +1 -1
  51. package/dist/tools/convention/analyzeComplexity.js +3 -3
  52. package/dist/tools/convention/analyzeComplexity.js.map +1 -1
  53. package/dist/tools/convention/applyQualityRules.js +1 -1
  54. package/dist/tools/convention/applyQualityRules.js.map +1 -1
  55. package/dist/tools/convention/checkCouplingCohesion.js +2 -2
  56. package/dist/tools/convention/checkCouplingCohesion.js.map +1 -1
  57. package/dist/tools/convention/suggestImprovements.js +1 -1
  58. package/dist/tools/convention/suggestImprovements.js.map +1 -1
  59. package/dist/tools/convention/validateCodeQuality.js +1 -1
  60. package/dist/tools/convention/validateCodeQuality.js.map +1 -1
  61. package/dist/tools/memory/autoSaveContext.js +1 -1
  62. package/dist/tools/memory/autoSaveContext.js.map +1 -1
  63. package/dist/tools/memory/createMemoryTimeline.js +27 -27
  64. package/dist/tools/memory/createMemoryTimeline.js.map +1 -1
  65. package/dist/tools/memory/deleteMemory.js +1 -1
  66. package/dist/tools/memory/deleteMemory.js.map +1 -1
  67. package/dist/tools/memory/getMemoryGraph.js +24 -24
  68. package/dist/tools/memory/getMemoryGraph.js.map +1 -1
  69. package/dist/tools/memory/getSessionContext.js +36 -36
  70. package/dist/tools/memory/getSessionContext.js.map +1 -1
  71. package/dist/tools/memory/linkMemories.js +21 -21
  72. package/dist/tools/memory/linkMemories.js.map +1 -1
  73. package/dist/tools/memory/prioritizeMemory.js +1 -1
  74. package/dist/tools/memory/prioritizeMemory.js.map +1 -1
  75. package/dist/tools/memory/restoreSessionContext.js +1 -1
  76. package/dist/tools/memory/restoreSessionContext.js.map +1 -1
  77. package/dist/tools/memory/searchMemories.js +1 -1
  78. package/dist/tools/memory/searchMemories.js.map +1 -1
  79. package/dist/tools/memory/searchMemoriesAdvanced.js +42 -42
  80. package/dist/tools/memory/searchMemoriesAdvanced.js.map +1 -1
  81. package/dist/tools/memory/startSession.js +2 -2
  82. package/dist/tools/memory/startSession.js.map +1 -1
  83. package/dist/tools/memory/updateMemory.js +1 -1
  84. package/dist/tools/memory/updateMemory.js.map +1 -1
  85. package/dist/tools/semantic/analyzeDependencyGraph.js +38 -38
  86. package/dist/tools/semantic/analyzeDependencyGraph.js.map +1 -1
  87. package/dist/tools/semantic/findReferences.js +1 -1
  88. package/dist/tools/semantic/findReferences.js.map +1 -1
  89. package/dist/tools/semantic/findSymbol.js +1 -1
  90. package/dist/tools/semantic/findSymbol.js.map +1 -1
  91. package/dist/tools/time/getCurrentTime.js +1 -1
  92. package/dist/tools/time/getCurrentTime.js.map +1 -1
  93. package/dist/tools/ui/previewUiAscii.js +2 -2
  94. package/dist/tools/ui/previewUiAscii.js.map +1 -1
  95. package/hooks/hooks.json +11 -2
  96. package/hooks/scripts/llm-orchestrate.js +1 -1
  97. package/hooks/scripts/utils.js +31 -6
  98. package/languages/csharp-unity.md +82 -83
  99. package/languages/dart-flutter.md +89 -88
  100. package/languages/go.md +76 -75
  101. package/languages/java-spring.md +85 -84
  102. package/languages/kotlin-android.md +64 -63
  103. package/languages/python-django.md +83 -82
  104. package/languages/python-fastapi.md +82 -81
  105. package/languages/rust.md +75 -74
  106. package/languages/swift-ios.md +73 -72
  107. package/languages/typescript-electron.md +70 -71
  108. package/languages/typescript-nextjs.md +93 -92
  109. package/languages/typescript-node.md +64 -63
  110. package/languages/typescript-nuxt.md +113 -112
  111. package/languages/typescript-react-native.md +82 -81
  112. package/languages/typescript-react.md +76 -75
  113. package/languages/typescript-tauri.md +74 -75
  114. package/languages/typescript-vue.md +73 -72
  115. package/package.json +1 -1
  116. package/skills/git-worktree.md +25 -25
  117. package/skills/multi-llm-orchestration.md +4 -6
  118. package/skills/priority-todos.md +39 -39
  119. package/skills/vibe-capabilities.md +2 -2
  120. package/vibe/config.json +2 -2
@@ -7,7 +7,7 @@ argument-hint: "feature name" or --phase N
7
7
 
8
8
  Execute **Scenario-Driven Implementation** with automatic quality verification.
9
9
 
10
- > **핵심 원칙**: 시나리오가 구현 단위이자 검증 기준. 모든 시나리오 통과 = 품질 보장.
10
+ > **Core Principle**: Scenarios are both the implementation unit and verification criteria. All scenarios passing = Quality guaranteed.
11
11
 
12
12
  ## Usage
13
13
 
@@ -22,86 +22,86 @@ Execute **Scenario-Driven Implementation** with automatic quality verification.
22
22
 
23
23
  ## **Scenario-Driven Development (SDD)**
24
24
 
25
- > 비개발자도 품질을 신뢰할 있도록, **시나리오 = 구현 = 검증**을 자동화
25
+ > Automate **Scenario = Implementation = Verification** so even non-developers can trust quality
26
26
 
27
- ### 핵심 흐름
27
+ ### Core Flow
28
28
 
29
29
  ```
30
30
  ┌─────────────────────────────────────────────────────────────────┐
31
31
  │ SCENARIO-DRIVEN IMPLEMENTATION │
32
32
  │ │
33
- │ Feature 파일 로드
33
+ Load Feature file
34
34
  │ ↓ │
35
35
  │ ┌──────────────────────────────────────────────────────────┐ │
36
36
  │ │ Scenario 1: Happy Path │ │
37
37
  │ │ Given → When → Then │ │
38
38
  │ │ ↓ │ │
39
- │ │ [구현] → [즉시 검증] → ✅ Pass │ │
39
+ │ │ [Implement] → [Verify immediately] → ✅ Pass │ │
40
40
  │ └──────────────────────────────────────────────────────────┘ │
41
41
  │ ↓ │
42
42
  │ ┌──────────────────────────────────────────────────────────┐ │
43
43
  │ │ Scenario 2: Edge Case │ │
44
44
  │ │ Given → When → Then │ │
45
45
  │ │ ↓ │ │
46
- │ │ [구현] → [즉시 검증] → ❌ Fail → [수정] → ✅ Pass │ │
46
+ │ │ [Implement] → [Verify] → ❌ Fail → [Fix] → ✅ Pass │ │
47
47
  │ └──────────────────────────────────────────────────────────┘ │
48
48
  │ ↓ │
49
49
  │ ┌──────────────────────────────────────────────────────────┐ │
50
50
  │ │ Scenario N: ... │ │
51
- │ │ [구현] → [즉시 검증] → ✅ Pass │ │
51
+ │ │ [Implement] → [Verify immediately] → ✅ Pass │ │
52
52
  │ └──────────────────────────────────────────────────────────┘ │
53
53
  │ ↓ │
54
54
  │ ┌──────────────────────────────────────────────────────────┐ │
55
55
  │ │ 📊 QUALITY REPORT │ │
56
56
  │ │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ │ │
57
- │ │ 시나리오: 5/5 통과 │ │
58
- │ │ 품질 점수: 94/100 │ │
59
- │ │ 빌드: ✅ | 테스트: ✅ │ │
57
+ │ │ Scenarios: 5/5 passed │ │
58
+ │ │ Quality score: 94/100 │ │
59
+ │ │ Build: ✅ | Tests: ✅ │ │
60
60
  │ └──────────────────────────────────────────────────────────┘ │
61
61
  └─────────────────────────────────────────────────────────────────┘
62
62
  ```
63
63
 
64
- ### 시나리오 = 구현 단위
64
+ ### Scenario = Implementation Unit
65
65
 
66
- **기존 방식 (Phase 기반)**:
66
+ **Traditional approach (Phase-based)**:
67
67
  ```
68
- Phase 1 → Phase 2 → Phase 3 → ... → 마지막에 검증
68
+ Phase 1 → Phase 2 → Phase 3 → ... → Verify at the end
69
69
 
70
- "어디서 잘못됐지?"
70
+ "Where did it go wrong?"
71
71
  ```
72
72
 
73
- **SDD 방식 (Scenario 기반)**:
73
+ **SDD approach (Scenario-based)**:
74
74
  ```
75
- Scenario 1 → 구현검증
76
- Scenario 2 → 구현검증
77
- Scenario 3 → 구현검증 ❌ → 수정 → ✅
75
+ Scenario 1 → ImplementVerify
76
+ Scenario 2 → ImplementVerify
77
+ Scenario 3 → ImplementVerify ❌ → Fix → ✅
78
78
  ...
79
- 전체 통과 = 품질 보장
79
+ All pass = Quality guaranteed
80
80
  ```
81
81
 
82
- ### 검증 자동화
82
+ ### Automated Verification
83
83
 
84
- 시나리오 구현 **자동 검증**:
84
+ After implementing each scenario, **automatic verification**:
85
85
 
86
- | 검증 항목 | 자동 체크 |
87
- |-----------|-----------|
88
- | Given (전제조건) | 상태/데이터 준비 확인 |
89
- | When (행동) | 기능 실행 가능 여부 |
90
- | Then (결과) | 예상 결과 일치 여부 |
91
- | 코드 품질 | 복잡도, 스타일, 보안 |
86
+ | Verification Item | Auto Check |
87
+ |-------------------|------------|
88
+ | Given (precondition) | State/data preparation confirmed |
89
+ | When (action) | Feature execution possible |
90
+ | Then (result) | Expected result matches |
91
+ | Code quality | Complexity, style, security |
92
92
 
93
- ### 실패 자동 수정
93
+ ### Auto-Fix on Failure
94
94
 
95
95
  ```
96
- Scenario 검증 실패
96
+ Scenario verification failed
97
97
 
98
- [원인 분석] - 어떤 Then 조건이 실패?
98
+ [Root cause analysis] - Which Then condition failed?
99
99
 
100
- [수정 구현] - 해당 부분만 수정
100
+ [Implement fix] - Fix only that part
101
101
 
102
- [재검증] - 다시 체크
102
+ [Re-verify] - Check again
103
103
 
104
- 통과할 때까지 반복 (최대 3)
104
+ Repeat until pass (max 3 times)
105
105
  ```
106
106
 
107
107
  ---
@@ -229,7 +229,7 @@ Claude:
229
229
  - `standards/complexity-metrics.md` - Functions ≤20 lines, nesting ≤3 levels
230
230
  - `quality/checklist.md` - Code quality checklist
231
231
 
232
- **Language guide:** `~/.claude/vibe/languages/{stack}.md` (전역 참조)
232
+ **Language guide:** `~/.claude/vibe/languages/{stack}.md` (global reference)
233
233
 
234
234
  ## Description
235
235
 
@@ -272,31 +272,31 @@ When external LLMs are enabled in `.claude/vibe/config.json`:
272
272
 
273
273
  | Role | Method | Condition |
274
274
  |------|--------|-----------|
275
- | User direct query | `gpt.질문`, `gemini.질문` | Hook 자동 처리 |
276
- | Internal orchestration | Bash로 전역 스크립트 호출 | Claude 직접 호출 |
275
+ | User direct query | `gpt.question`, `gemini.question` | Hook auto-handles |
276
+ | Internal orchestration | Call global script via Bash | Claude calls directly |
277
277
 
278
- **사용자 질문 (Hook 자동 처리):**
279
- - `gpt.질문` - GPT 아키텍처 상담
280
- - `gemini.질문` - Gemini 질문/상담
278
+ **User questions (Hook auto-handles):**
279
+ - `gpt.question` - GPT architecture consultation
280
+ - `gemini.question` - Gemini Q&A/consultation
281
281
 
282
- **Claude 내부 호출 (Bash로 직접):**
282
+ **Claude internal calls (directly via Bash):**
283
283
  ```bash
284
284
  # Usage: node llm-orchestrate.js <provider> <mode> [systemPrompt] [prompt]
285
- # - systemPrompt 생략 기본값 사용
286
- # - systemPrompt "-" 전달 기본값 사용하고 다음 인자를 prompt로 처리
285
+ # - If systemPrompt omitted, uses default
286
+ # - If systemPrompt is "-", uses default and treats next argument as prompt
287
287
 
288
- # GPT 호출 (Windows)
289
- node "$APPDATA/vibe/hooks/scripts/llm-orchestrate.js" gpt orchestrate-json "[질문 내용]"
290
- # GPT 호출 (macOS/Linux)
291
- node ~/.config/vibe/hooks/scripts/llm-orchestrate.js gpt orchestrate-json "[질문 내용]"
288
+ # GPT call (Windows)
289
+ node "$APPDATA/vibe/hooks/scripts/llm-orchestrate.js" gpt orchestrate-json "[question content]"
290
+ # GPT call (macOS/Linux)
291
+ node ~/.config/vibe/hooks/scripts/llm-orchestrate.js gpt orchestrate-json "[question content]"
292
292
 
293
- # Gemini 호출 (Windows)
294
- node "$APPDATA/vibe/hooks/scripts/llm-orchestrate.js" gemini orchestrate-json "[질문 내용]"
295
- # Gemini 호출 (macOS/Linux)
296
- node ~/.config/vibe/hooks/scripts/llm-orchestrate.js gemini orchestrate-json "[질문 내용]"
293
+ # Gemini call (Windows)
294
+ node "$APPDATA/vibe/hooks/scripts/llm-orchestrate.js" gemini orchestrate-json "[question content]"
295
+ # Gemini call (macOS/Linux)
296
+ node ~/.config/vibe/hooks/scripts/llm-orchestrate.js gemini orchestrate-json "[question content]"
297
297
 
298
- # 커스텀 시스템 프롬프트 사용
299
- node "$APPDATA/vibe/hooks/scripts/llm-orchestrate.js" gpt orchestrate-json "You are a code reviewer" "[질문 내용]"
298
+ # Custom system prompt usage
299
+ node "$APPDATA/vibe/hooks/scripts/llm-orchestrate.js" gpt orchestrate-json "You are a code reviewer" "[question content]"
300
300
  ```
301
301
 
302
302
  ### External LLM Fallback
@@ -357,84 +357,84 @@ node -e "import('@su-record/vibe/tools').then(t => t.saveMemory({key: 'auth-patt
357
357
  ### 1. Load SPEC + Feature
358
358
 
359
359
  ```
360
- 📄 .claude/vibe/specs/{feature-name}.md → SPEC (구조, 제약, 컨텍스트)
361
- 📄 .claude/vibe/features/{feature-name}.feature → Feature (시나리오 = 구현 단위)
360
+ 📄 .claude/vibe/specs/{feature-name}.md → SPEC (structure, constraints, context)
361
+ 📄 .claude/vibe/features/{feature-name}.feature → Feature (scenario = implementation unit)
362
362
  ```
363
363
 
364
- **Feature 파일이 없으면 에러**:
364
+ **Error if Feature file missing**:
365
365
  ```
366
- ❌ Feature 파일이 없습니다.
367
- 먼저 /vibe.spec "{feature-name}" 실행하세요.
366
+ ❌ Feature file not found.
367
+ Run /vibe.spec "{feature-name}" first.
368
368
  ```
369
369
 
370
- ### 2. Scenario 목록 추출
370
+ ### 2. Extract Scenario List
371
371
 
372
- Feature 파일에서 모든 Scenario 추출:
372
+ Extract all Scenarios from Feature file:
373
373
 
374
374
  ```markdown
375
375
  ## Scenarios to Implement
376
376
 
377
377
  | # | Scenario | Status |
378
378
  |---|----------|--------|
379
- | 1 | 유효한 로그인 성공 | ⬜ |
380
- | 2 | 잘못된 비밀번호 에러 | ⬜ |
381
- | 3 | 이메일 형식 검증 | ⬜ |
382
- | 4 | 비밀번호 찾기 링크 | ⬜ |
379
+ | 1 | Valid login success | ⬜ |
380
+ | 2 | Invalid password error | ⬜ |
381
+ | 3 | Email format validation | ⬜ |
382
+ | 4 | Password reset link | ⬜ |
383
383
 
384
384
  Total: 4 scenarios
385
385
  ```
386
386
 
387
- ### 3. Scenario-by-Scenario Implementation (핵심)
387
+ ### 3. Scenario-by-Scenario Implementation (Core)
388
388
 
389
- **각 시나리오마다**:
389
+ **For each scenario**:
390
390
 
391
391
  ```
392
392
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
393
- 🎯 Scenario 1/4: 유효한 로그인 성공
393
+ 🎯 Scenario 1/4: Valid login success
394
394
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
395
395
 
396
- Given: 사용자가 등록되어 있다
397
- When: 유효한 이메일과 비밀번호로 로그인
398
- Then: 로그인 성공 + JWT 토큰 반환
396
+ Given: User is registered
397
+ When: Login with valid email and password
398
+ Then: Login success + JWT token returned
399
399
 
400
- [Step 1] 구현 분석...
401
- - 필요한 파일: auth.service.ts, login.controller.ts
402
- - 관련 코드 탐색 중...
400
+ [Step 1] Analyzing implementation...
401
+ - Required files: auth.service.ts, login.controller.ts
402
+ - Exploring related code...
403
403
 
404
- [Step 2] 구현 중...
405
- ✅ auth.service.ts - login() 메서드 추가
406
- ✅ login.controller.ts - POST /login 엔드포인트
404
+ [Step 2] Implementing...
405
+ ✅ auth.service.ts - Added login() method
406
+ ✅ login.controller.ts - POST /login endpoint
407
407
 
408
- [Step 3] 검증 중...
409
- ✅ Given: 테스트 사용자 생성 가능
410
- ✅ When: 로그인 API 호출 성공
411
- ✅ Then: JWT 토큰 반환 확인
408
+ [Step 3] Verifying...
409
+ ✅ Given: Test user creation possible
410
+ ✅ When: Login API call succeeded
411
+ ✅ Then: JWT token return confirmed
412
412
 
413
- ✅ Scenario 1 통과!
413
+ ✅ Scenario 1 passed!
414
414
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
415
415
  ```
416
416
 
417
- **실패 시**:
417
+ **On failure**:
418
418
 
419
419
  ```
420
420
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
421
- 🎯 Scenario 2/4: 잘못된 비밀번호 에러
421
+ 🎯 Scenario 2/4: Invalid password error
422
422
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
423
423
 
424
- [Step 3] 검증 중...
425
- ✅ Given: 테스트 사용자 존재
426
- ✅ When: 잘못된 비밀번호로 로그인 시도
427
- ❌ Then: "Invalid credentials" 에러 메시지
428
- 실제: "Error occurred" 반환됨
424
+ [Step 3] Verifying...
425
+ ✅ Given: Test user exists
426
+ ✅ When: Login attempt with wrong password
427
+ ❌ Then: "Invalid credentials" error message
428
+ Actual: "Error occurred" returned
429
429
 
430
- [자동 수정 1/3]
431
- 원인: 에러 메시지 하드코딩 안됨
432
- 수정: auth.service.ts line 42
430
+ [Auto-fix 1/3]
431
+ Cause: Error message not properly set
432
+ Fix: auth.service.ts line 42
433
433
 
434
- [재검증]
435
- ✅ Then: "Invalid credentials" 에러 메시지
434
+ [Re-verify]
435
+ ✅ Then: "Invalid credentials" error message
436
436
 
437
- ✅ Scenario 2 통과! (수정 1회)
437
+ ✅ Scenario 2 passed! (1 fix)
438
438
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
439
439
  ```
440
440
 
@@ -461,8 +461,8 @@ Then: 로그인 성공 + JWT 토큰 반환
461
461
  │ │ │
462
462
  │ Task(haiku) ─┴─→ "Find existing patterns and conventions" │
463
463
  │ │
464
- │ [If GPT enabled] Bash: node {{VIBE_PATH}}/hooks/scripts/llm-orchestrate.js gpt orchestrate-json "[질문]"
465
- │ [If Gemini enabled] Bash: node {{VIBE_PATH}}/hooks/scripts/llm-orchestrate.js gemini orchestrate-json "[질문]"
464
+ │ [If GPT enabled] Bash: node {{VIBE_PATH}}/hooks/scripts/llm-orchestrate.js gpt orchestrate-json "[question]"
465
+ │ [If Gemini enabled] Bash: node {{VIBE_PATH}}/hooks/scripts/llm-orchestrate.js gemini orchestrate-json "[question]"
466
466
  └─────────────────────────────────────────────────────────────────┘
467
467
 
468
468
  ↓ (wait for all to complete)
@@ -624,144 +624,144 @@ Phase N+1 Start (IMMEDIATE - exploration already done!)
624
624
  3. **Constraint compliance**: Check `<constraints>`
625
625
  4. **Run verification**: Execute verification commands
626
626
 
627
- ### 4. Gemini 코드 리뷰 + 자동 수정 (NEW)
627
+ ### 4. Gemini Code Review + Auto-Fix (NEW)
628
628
 
629
- 모든 시나리오 구현 완료 후, **Gemini 코드를 리뷰하고 피드백 기반으로 자동 수정**:
629
+ After all scenarios are implemented, **Gemini reviews the code and auto-fixes based on feedback**:
630
630
 
631
631
  ```
632
632
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
633
633
  🔍 GEMINI CODE REVIEW
634
634
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
635
635
 
636
- [Step 1] Gemini에게 구현 코드 전송...
637
- - 변경된 파일: auth.service.ts, auth.controller.ts, ...
636
+ [Step 1] Sending implementation code to Gemini...
637
+ - Changed files: auth.service.ts, auth.controller.ts, ...
638
638
 
639
- [Step 2] Gemini 리뷰 결과:
639
+ [Step 2] Gemini review results:
640
640
  ┌─────────────────────────────────────────────────────┐
641
641
  │ 📝 Gemini Feedback │
642
642
  │ │
643
- │ 1. [개선] auth.service.ts:24
644
- 비밀번호 비교 시 timing attack 방지 필요
645
- │ → crypto.timingSafeEqual() 사용 권장
643
+ │ 1. [Improvement] auth.service.ts:24
644
+ Need timing attack prevention for password compare
645
+ │ → Recommend using crypto.timingSafeEqual()
646
646
  │ │
647
- │ 2. [개선] auth.controller.ts:15
648
- rate limiting 미적용
649
- │ → 로그인 시도 제한 추가 권장
647
+ │ 2. [Improvement] auth.controller.ts:15
648
+ Rate limiting not applied
649
+ │ → Recommend adding login attempt limit
650
650
  │ │
651
- │ 3. [스타일] auth.service.ts:42
652
- 매직 넘버 사용
653
- │ → 상수로 추출 권장
651
+ │ 3. [Style] auth.service.ts:42
652
+ Magic number usage
653
+ │ → Recommend extracting to constant
654
654
  └─────────────────────────────────────────────────────┘
655
655
 
656
- [Step 3] 피드백 기반 자동 수정...
657
- ✅ auth.service.ts:24 - timingSafeEqual 적용
658
- ✅ auth.controller.ts:15 - rate limiter 추가
659
- ✅ auth.service.ts:42 - 상수 추출
656
+ [Step 3] Auto-fixing based on feedback...
657
+ ✅ auth.service.ts:24 - Applied timingSafeEqual
658
+ ✅ auth.controller.ts:15 - Added rate limiter
659
+ ✅ auth.service.ts:42 - Extracted constant
660
660
 
661
- [Step 4] 재검증...
662
- 빌드 성공
663
- 테스트 통과
661
+ [Step 4] Re-verifying...
662
+ Build succeeded
663
+ Tests passed
664
664
 
665
665
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
666
- ✅ Gemini 리뷰 완료! 3 개선사항 반영
666
+ ✅ Gemini review complete! 3 improvements applied
667
667
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
668
668
  ```
669
669
 
670
- **MUST: Gemini 코드 리뷰 (필수)**
670
+ **MUST: Gemini Code Review (Required)**
671
671
 
672
- Gemini 활성화된 경우, **반드시** 전역 스크립트로 코드 리뷰:
672
+ When Gemini is enabled, **must** use global hook script for code review:
673
673
 
674
674
  ```bash
675
675
  # Windows
676
- node "$APPDATA/vibe/hooks/scripts/llm-orchestrate.js" gemini orchestrate-json "Review this code for security, performance, best-practices: [코드 요약]. SPEC: [요약]. Scenarios: [목록]"
676
+ node "$APPDATA/vibe/hooks/scripts/llm-orchestrate.js" gemini orchestrate-json "Review this code for security, performance, best-practices: [code summary]. SPEC: [summary]. Scenarios: [list]"
677
677
 
678
678
  # macOS/Linux
679
- node ~/.config/vibe/hooks/scripts/llm-orchestrate.js gemini orchestrate-json "Review this code for security, performance, best-practices: [코드 요약]. SPEC: [요약]. Scenarios: [목록]"
679
+ node ~/.config/vibe/hooks/scripts/llm-orchestrate.js gemini orchestrate-json "Review this code for security, performance, best-practices: [code summary]. SPEC: [summary]. Scenarios: [list]"
680
680
  ```
681
681
 
682
- **호출 순서:**
683
- 1. 변경된 파일들의 핵심 내용 요약
684
- 2. SPEC 요구사항 요약 추가
685
- 3. 전역 스크립트 호출 실행
686
- 4. 응답의 피드백 항목별로 코드 수정
687
- 5. 빌드/테스트 재실행
682
+ **Call sequence:**
683
+ 1. Summarize key content of changed files
684
+ 2. Add SPEC requirements summary
685
+ 3. Execute global script call
686
+ 4. Fix code for each feedback item in response
687
+ 5. Re-run build/tests
688
688
 
689
- **fallback 처리:**
690
- - `"status": "fallback"` 응답 스킵하고 다음 단계로 진행
691
- - 네트워크 에러 1회 재시도 스킵
689
+ **Fallback handling:**
690
+ - On `"status": "fallback"` responseSkip and proceed to next step
691
+ - On network errorRetry once, then skip
692
692
 
693
- **리뷰 적용 규칙:**
693
+ **Review application rules:**
694
694
 
695
- | 피드백 유형 | 처리 |
696
- |------------|------|
697
- | 보안 취약점 | 즉시 자동 수정 |
698
- | 성능 개선 | 즉시 자동 수정 |
699
- | 베스트 프랙티스 | 자동 수정 |
700
- | 스타일/취향 | 선택적 적용 (프로젝트 컨벤션 우선) |
695
+ | Feedback Type | Action |
696
+ |---------------|--------|
697
+ | Security vulnerability | Auto-fix immediately |
698
+ | Performance improvement | Auto-fix immediately |
699
+ | Best practices | Auto-fix |
700
+ | Style/preference | Apply selectively (project convention takes priority) |
701
701
 
702
- **조건:**
703
- - Gemini MCP 활성화된 경우에만 실행 (`vibe gemini auth`)
704
- - fallback 응답 스킵하고 다음 단계로 진행
705
- - 수정 반드시 빌드/테스트 재검증
702
+ **Conditions:**
703
+ - Only runs when Gemini MCP is enabled (`vibe gemini auth`)
704
+ - Skip and proceed on fallback response
705
+ - Must re-verify build/tests after fixes
706
706
 
707
- ### 5. Quality Report (자동 생성)
707
+ ### 5. Quality Report (Auto-generated)
708
708
 
709
- 모든 시나리오 완료 + Gemini 리뷰 **품질 리포트 자동 생성**:
709
+ After all scenarios complete + Gemini review, **quality report is auto-generated**:
710
710
 
711
711
  ```
712
712
  ┌─────────────────────────────────────────────────────────────────┐
713
713
  │ 📊 QUALITY REPORT: login │
714
714
  ├─────────────────────────────────────────────────────────────────┤
715
715
  │ │
716
- │ ✅ 시나리오: 4/4 통과
716
+ │ ✅ Scenarios: 4/4 passed
717
717
  │ │
718
718
  │ ┌───────────────────────────────────────────────────────────┐ │
719
719
  │ │ # │ Scenario │ Status │ Retries │ │ │
720
720
  │ │───│───────────────────────────│────────│─────────│ │ │
721
- │ │ 1 │ 유효한 로그인 성공 │ ✅ │ 0 │ │ │
722
- │ │ 2 │ 잘못된 비밀번호 에러 │ ✅ │ 1 │ │ │
723
- │ │ 3 │ 이메일 형식 검증 │ ✅ │ 0 │ │ │
724
- │ │ 4 │ 비밀번호 찾기 링크 │ ✅ │ 0 │ │ │
721
+ │ │ 1 │ Valid login success │ ✅ │ 0 │ │ │
722
+ │ │ 2 │ Invalid password error │ ✅ │ 1 │ │ │
723
+ │ │ 3 │ Email format validation │ ✅ │ 0 │ │ │
724
+ │ │ 4 │ Password reset link │ ✅ │ 0 │ │ │
725
725
  │ └───────────────────────────────────────────────────────────┘ │
726
726
  │ │
727
- │ 📈 품질 점수: 94/100
727
+ │ 📈 Quality score: 94/100
728
728
  │ │
729
729
  │ ┌─────────────────────────────────────────────────────────┐ │
730
- │ │ 항목결과 비고 │ │
731
- │───────────────────│───────│─────────────────────────────│
732
- │ │ 빌드 │ ✅ │ npm run build 성공 │ │
733
- │ │ 테스트 │ ✅ │ 12/12 통과 │ │
734
- │ │ 타입 검사 │ ✅ 에러 0개 │ │
735
- │ │ 복잡도 │ ✅ 모든 함수 ≤30│ │
736
- │ │ 보안 │ ✅ 취약점 0개 │ │
737
- │ │ Gemini 리뷰 │ ✅ │ 3 개선사항 반영 │ │
730
+ │ │ ItemResult Notes │ │
731
+ │───────────────────│────────│─────────────────────────────│
732
+ │ │ Build │ ✅ │ npm run build succeeded │ │
733
+ │ │ Tests │ ✅ │ 12/12 passed │ │
734
+ │ │ Type check │ ✅ 0 errors │ │
735
+ │ │ Complexity │ ✅ All functions ≤30 lines │ │
736
+ │ │ Security │ ✅ 0 vulnerabilities │ │
737
+ │ │ Gemini review │ ✅ │ 3 improvements applied │ │
738
738
  │ └─────────────────────────────────────────────────────────┘ │
739
739
  │ │
740
- │ ⏱️ 소요: 3m 42s
740
+ │ ⏱️ Total time: 3m 42s
741
741
  │ │
742
742
  └─────────────────────────────────────────────────────────────────┘
743
743
  ```
744
744
 
745
- **사용자가 확인할 것**:
746
- - 시나리오 통과율 (4/4 = 100%)
747
- - 품질 점수 (94/100)
748
- - 빌드/테스트 상태
745
+ **What users should check**:
746
+ - Scenario pass rate (4/4 = 100%)
747
+ - Quality score (94/100)
748
+ - Build/test status
749
749
 
750
- **이것만 보면 품질을 신뢰할 있음.**
750
+ **This alone is enough to trust quality.**
751
751
 
752
752
  ### 6. Update Feature File
753
753
 
754
- 시나리오 상태 자동 업데이트:
754
+ Auto-update scenario status:
755
755
 
756
756
  ```markdown
757
757
  ## Coverage
758
758
 
759
759
  | Scenario | SPEC AC | Status |
760
760
  |----------|---------|--------|
761
- | 유효한 로그인 성공 | AC-1 | ✅ |
762
- | 잘못된 비밀번호 에러 | AC-2 | ✅ |
763
- | 이메일 형식 검증 | AC-3 | ✅ |
764
- | 비밀번호 찾기 링크 | AC-4 | ✅ |
761
+ | Valid login success | AC-1 | ✅ |
762
+ | Invalid password error | AC-2 | ✅ |
763
+ | Email format validation | AC-3 | ✅ |
764
+ | Password reset link | AC-4 | ✅ |
765
765
 
766
766
  **Last verified**: 2024-01-15 14:32
767
767
  **Quality score**: 94/100
@@ -806,125 +806,125 @@ Claude:
806
806
 
807
807
  | # | Scenario | Status |
808
808
  |---|----------|--------|
809
- | 1 | 유효한 로그인 성공 | ⬜ |
810
- | 2 | 잘못된 비밀번호 에러 | ⬜ |
811
- | 3 | 이메일 형식 검증 | ⬜ |
812
- | 4 | 비밀번호 찾기 링크 | ⬜ |
809
+ | 1 | Valid login success | ⬜ |
810
+ | 2 | Invalid password error | ⬜ |
811
+ | 3 | Email format validation | ⬜ |
812
+ | 4 | Password reset link | ⬜ |
813
813
 
814
814
  Total: 4 scenarios
815
815
 
816
816
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
817
- 🎯 Scenario 1/4: 유효한 로그인 성공
817
+ 🎯 Scenario 1/4: Valid login success
818
818
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
819
819
 
820
- Given: 사용자가 등록되어 있다
821
- When: 유효한 이메일과 비밀번호로 로그인
822
- Then: 로그인 성공 + JWT 토큰 반환
820
+ Given: User is registered
821
+ When: Login with valid email and password
822
+ Then: Login success + JWT token returned
823
823
 
824
- ⚡ [PARALLEL] 탐색 중...
825
- 탐색 완료 (2.1s)
824
+ ⚡ [PARALLEL] Exploring...
825
+ Exploration complete (2.1s)
826
826
 
827
- 🔨 구현 중...
828
- ✅ auth.service.ts - login() 추가
827
+ 🔨 Implementing...
828
+ ✅ auth.service.ts - Added login()
829
829
  ✅ auth.controller.ts - POST /login
830
830
 
831
- 🔍 검증 중...
831
+ 🔍 Verifying...
832
832
  ✅ Given: OK
833
833
  ✅ When: OK
834
834
  ✅ Then: OK
835
835
 
836
- ✅ Scenario 1 통과!
836
+ ✅ Scenario 1 passed!
837
837
 
838
838
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
839
- 🎯 Scenario 2/4: 잘못된 비밀번호 에러
839
+ 🎯 Scenario 2/4: Invalid password error
840
840
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
841
841
 
842
- 🔨 구현 중...
843
- ✅ auth.service.ts - 비밀번호 검증 로직
842
+ 🔨 Implementing...
843
+ ✅ auth.service.ts - Password validation logic
844
844
 
845
- 🔍 검증 중...
845
+ 🔍 Verifying...
846
846
  ✅ Given: OK
847
847
  ✅ When: OK
848
- ❌ Then: "Invalid credentials" 에러 메시지
849
- 실제: "Error" 반환
848
+ ❌ Then: "Invalid credentials" error message
849
+ Actual: "Error" returned
850
850
 
851
- 🔄 자동 수정 1/3...
852
- 수정: auth.service.ts line 42
851
+ 🔄 Auto-fix 1/3...
852
+ Fix: auth.service.ts line 42
853
853
 
854
- 🔍 재검증...
854
+ 🔍 Re-verifying...
855
855
  ✅ Then: OK
856
856
 
857
- ✅ Scenario 2 통과! (수정 1회)
857
+ ✅ Scenario 2 passed! (1 fix)
858
858
 
859
859
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
860
- 🎯 Scenario 3/4: 이메일 형식 검증
860
+ 🎯 Scenario 3/4: Email format validation
861
861
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
862
862
 
863
- 🔨 구현 중...
864
- 🔍 검증 중...
865
- ✅ Scenario 3 통과!
863
+ 🔨 Implementing...
864
+ 🔍 Verifying...
865
+ ✅ Scenario 3 passed!
866
866
 
867
867
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
868
- 🎯 Scenario 4/4: 비밀번호 찾기 링크
868
+ 🎯 Scenario 4/4: Password reset link
869
869
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
870
870
 
871
- 🔨 구현 중...
872
- 🔍 검증 중...
873
- ✅ Scenario 4 통과!
871
+ 🔨 Implementing...
872
+ 🔍 Verifying...
873
+ ✅ Scenario 4 passed!
874
874
 
875
875
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
876
876
  🔍 GEMINI CODE REVIEW
877
877
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
878
878
 
879
- 📤 Gemini에게 코드 전송 중...
880
- 📝 Gemini 피드백:
881
- 1. [보안] timing attack 방지 필요 수정 중...
882
- 2. [성능] 불필요한 DB 호출수정 중...
879
+ 📤 Sending code to Gemini...
880
+ 📝 Gemini feedback:
881
+ 1. [Security] Need timing attack preventionFixing...
882
+ 2. [Performance] Unnecessary DB callFixing...
883
883
 
884
- ✅ 2 개선사항 자동 반영
885
- 🔍 재검증...통과
884
+ ✅ 2 improvements auto-applied
885
+ 🔍 Re-verifying...Passed
886
886
 
887
887
  ┌─────────────────────────────────────────────────────────────────┐
888
888
  │ 📊 QUALITY REPORT: login │
889
889
  ├─────────────────────────────────────────────────────────────────┤
890
890
  │ │
891
- │ ✅ 시나리오: 4/4 통과
891
+ │ ✅ Scenarios: 4/4 passed
892
892
  │ │
893
893
  │ | # | Scenario | Status | Retries | │
894
894
  │ |---|───────────────────────|───────|─────────| │
895
- │ | 1 | 유효한 로그인 성공 | ✅ | 0 | │
896
- │ | 2 | 잘못된 비밀번호 에러 | ✅ | 1 | │
897
- │ | 3 | 이메일 형식 검증 | ✅ | 0 | │
898
- │ | 4 | 비밀번호 찾기 링크 | ✅ | 0 | │
895
+ │ | 1 | Valid login success | ✅ | 0 | │
896
+ │ | 2 | Invalid password error| ✅ | 1 | │
897
+ │ | 3 | Email format validation| ✅ | 0 | │
898
+ │ | 4 | Password reset link | ✅ | 0 | │
899
899
  │ │
900
- │ 📈 품질 점수: 94/100
901
- 빌드: ✅ | 테스트: ✅ | 타입: ✅ | Gemini: ✅ (2 반영)
900
+ │ 📈 Quality score: 94/100
901
+ Build: ✅ | Tests: ✅ | Types: ✅ | Gemini: ✅ (2 applied)
902
902
  │ │
903
- │ ⏱️ 소요: 3m 42s
903
+ │ ⏱️ Total time: 3m 42s
904
904
  └─────────────────────────────────────────────────────────────────┘
905
905
 
906
- 🎉 구현 완료! 모든 시나리오 통과 + Gemini 리뷰 반영.
906
+ 🎉 Implementation complete! All scenarios passed + Gemini review applied.
907
907
 
908
908
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
909
909
  🔍 AUTO REVIEW (13+ Agents)
910
910
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
911
911
 
912
- ⚡ [PARALLEL] 13 전문 에이전트 리뷰 중...
912
+ ⚡ [PARALLEL] 13 expert agents reviewing...
913
913
  - security-reviewer ✅
914
914
  - performance-reviewer ✅
915
915
  - architecture-reviewer ✅
916
916
  - ...
917
917
 
918
- 📋 리뷰 결과:
918
+ 📋 Review results:
919
919
  - P1 Critical: 0
920
920
  - P2 Important: 2
921
921
  - P3 Nice-to-have: 1
922
922
 
923
- 🔧 P2 자동 수정 중...
924
- 1. [PERF] N+1 쿼리수정 완료
925
- 2. [ARCH] 순환 의존성수정 완료
923
+ 🔧 Auto-fixing P2 issues...
924
+ 1. [PERF] N+1 queryFixed
925
+ 2. [ARCH] Circular dependencyFixed
926
926
 
927
- ✅ Auto Review 완료! 2 문제 자동 해결.
927
+ ✅ Auto Review complete! 2 issues auto-resolved.
928
928
  ```
929
929
 
930
930
  ### Phase-specific Execution
@@ -957,6 +957,71 @@ On failure:
957
957
  3. Fix code and retry
958
958
  4. If continues to fail, report to user
959
959
 
960
+ ---
961
+
962
+ ## Quality Gate (Mandatory)
963
+
964
+ ### Implementation Quality Checklist
965
+
966
+ Before marking any scenario as complete, ALL items must pass:
967
+
968
+ | Category | Check Item | Weight |
969
+ |----------|------------|--------|
970
+ | **Functionality** | All Given/When/Then conditions verified | 20% |
971
+ | **Functionality** | Edge cases handled per scenario | 10% |
972
+ | **Code Quality** | No `any` types in TypeScript | 10% |
973
+ | **Code Quality** | Functions ≤30 lines, nesting ≤3 levels | 10% |
974
+ | **Code Quality** | No hardcoded values (use constants) | 5% |
975
+ | **Security** | Input validation implemented | 10% |
976
+ | **Security** | Authentication/authorization checked | 5% |
977
+ | **Error Handling** | Try-catch or error states present | 10% |
978
+ | **Error Handling** | User-friendly error messages | 5% |
979
+ | **Testing** | Unit tests exist for core logic | 10% |
980
+ | **Performance** | No N+1 queries or unnecessary loops | 5% |
981
+
982
+ ### Quality Score Calculation
983
+
984
+ ```
985
+ Score = Σ(checked items × weight) / 100
986
+
987
+ Grades:
988
+ - 95-100: ✅ EXCELLENT - Ready to merge
989
+ - 85-94: ✅ GOOD - Minor improvements recommended
990
+ - 70-84: ⚠️ FAIR - Improvements required before merge
991
+ - 0-69: ❌ POOR - Major fixes needed
992
+ ```
993
+
994
+ ### Quality Gate Thresholds
995
+
996
+ | Gate | Minimum Score | Condition |
997
+ |------|---------------|-----------|
998
+ | **Scenario Complete** | 85 | Each scenario must score ≥85 |
999
+ | **Phase Complete** | 90 | Average of all scenarios ≥90 |
1000
+ | **Feature Complete** | 90 | All phases complete + Gemini review |
1001
+
1002
+ ### Auto-Fix Triggers
1003
+
1004
+ | Issue Type | Auto-Fix Action |
1005
+ |------------|-----------------|
1006
+ | Missing error handling | Add try-catch wrapper |
1007
+ | Hardcoded values | Extract to constants file |
1008
+ | Missing input validation | Add validation schema |
1009
+ | Function too long | Suggest split points |
1010
+ | N+1 query detected | Add eager loading |
1011
+
1012
+ ### Forbidden Patterns (Block Merge)
1013
+
1014
+ | Pattern | Why Forbidden | Detection |
1015
+ |---------|---------------|-----------|
1016
+ | `console.log` | Debug code in production | Regex scan |
1017
+ | `// TODO` without issue | Untracked work | Comment scan |
1018
+ | `any` type | Type safety bypass | TypeScript check |
1019
+ | `@ts-ignore` | Type error suppression | TypeScript check |
1020
+ | Empty catch blocks | Silent error swallowing | AST analysis |
1021
+ | Commented-out code | Dead code | Comment scan |
1022
+
1023
+ ---
1024
+
960
1025
  ## Next Step
961
1026
 
962
1027
  ```