@su-record/vibe 2.4.72 → 2.4.76

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 (164) 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 -223
  23. package/commands/vibe.spec.md +425 -186
  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/MemoryManager.d.ts +13 -155
  37. package/dist/lib/MemoryManager.d.ts.map +1 -1
  38. package/dist/lib/MemoryManager.js +52 -617
  39. package/dist/lib/MemoryManager.js.map +1 -1
  40. package/dist/lib/gemini-api.js +12 -12
  41. package/dist/lib/gemini-api.js.map +1 -1
  42. package/dist/lib/gemini-oauth.js +22 -22
  43. package/dist/lib/gemini-oauth.js.map +1 -1
  44. package/dist/lib/gemini-storage.js +3 -3
  45. package/dist/lib/gemini-storage.js.map +1 -1
  46. package/dist/lib/gpt-api.js +11 -11
  47. package/dist/lib/gpt-api.js.map +1 -1
  48. package/dist/lib/gpt-oauth.js +28 -28
  49. package/dist/lib/gpt-oauth.js.map +1 -1
  50. package/dist/lib/gpt-storage.js +3 -3
  51. package/dist/lib/gpt-storage.js.map +1 -1
  52. package/dist/lib/memory/KnowledgeGraph.d.ts +34 -0
  53. package/dist/lib/memory/KnowledgeGraph.d.ts.map +1 -0
  54. package/dist/lib/memory/KnowledgeGraph.js +216 -0
  55. package/dist/lib/memory/KnowledgeGraph.js.map +1 -0
  56. package/dist/lib/memory/KnowledgeGraph.test.d.ts +2 -0
  57. package/dist/lib/memory/KnowledgeGraph.test.d.ts.map +1 -0
  58. package/dist/lib/memory/KnowledgeGraph.test.js +189 -0
  59. package/dist/lib/memory/KnowledgeGraph.test.js.map +1 -0
  60. package/dist/lib/memory/MemorySearch.d.ts +25 -0
  61. package/dist/lib/memory/MemorySearch.d.ts.map +1 -0
  62. package/dist/lib/memory/MemorySearch.js +85 -0
  63. package/dist/lib/memory/MemorySearch.js.map +1 -0
  64. package/dist/lib/memory/MemorySearch.test.d.ts +2 -0
  65. package/dist/lib/memory/MemorySearch.test.d.ts.map +1 -0
  66. package/dist/lib/memory/MemorySearch.test.js +149 -0
  67. package/dist/lib/memory/MemorySearch.test.js.map +1 -0
  68. package/dist/lib/memory/MemoryStorage.d.ts +77 -0
  69. package/dist/lib/memory/MemoryStorage.d.ts.map +1 -0
  70. package/dist/lib/memory/MemoryStorage.js +278 -0
  71. package/dist/lib/memory/MemoryStorage.js.map +1 -0
  72. package/dist/lib/memory/MemoryStorage.test.d.ts +2 -0
  73. package/dist/lib/memory/MemoryStorage.test.d.ts.map +1 -0
  74. package/dist/lib/memory/MemoryStorage.test.js +198 -0
  75. package/dist/lib/memory/MemoryStorage.test.js.map +1 -0
  76. package/dist/lib/memory/index.d.ts +4 -0
  77. package/dist/lib/memory/index.d.ts.map +1 -0
  78. package/dist/lib/memory/index.js +8 -0
  79. package/dist/lib/memory/index.js.map +1 -0
  80. package/dist/orchestrator/orchestrator.d.ts.map +1 -1
  81. package/dist/orchestrator/orchestrator.js +4 -6
  82. package/dist/orchestrator/orchestrator.js.map +1 -1
  83. package/dist/tools/convention/analyzeComplexity.d.ts +3 -1
  84. package/dist/tools/convention/analyzeComplexity.d.ts.map +1 -1
  85. package/dist/tools/convention/analyzeComplexity.js +102 -4
  86. package/dist/tools/convention/analyzeComplexity.js.map +1 -1
  87. package/dist/tools/convention/analyzeComplexity.test.d.ts +2 -0
  88. package/dist/tools/convention/analyzeComplexity.test.d.ts.map +1 -0
  89. package/dist/tools/convention/analyzeComplexity.test.js +207 -0
  90. package/dist/tools/convention/analyzeComplexity.test.js.map +1 -0
  91. package/dist/tools/convention/applyQualityRules.js +1 -1
  92. package/dist/tools/convention/applyQualityRules.js.map +1 -1
  93. package/dist/tools/convention/checkCouplingCohesion.js +2 -2
  94. package/dist/tools/convention/checkCouplingCohesion.js.map +1 -1
  95. package/dist/tools/convention/suggestImprovements.js +1 -1
  96. package/dist/tools/convention/suggestImprovements.js.map +1 -1
  97. package/dist/tools/convention/validateCodeQuality.d.ts +3 -1
  98. package/dist/tools/convention/validateCodeQuality.d.ts.map +1 -1
  99. package/dist/tools/convention/validateCodeQuality.js +145 -2
  100. package/dist/tools/convention/validateCodeQuality.js.map +1 -1
  101. package/dist/tools/convention/validateCodeQuality.test.d.ts +2 -0
  102. package/dist/tools/convention/validateCodeQuality.test.d.ts.map +1 -0
  103. package/dist/tools/convention/validateCodeQuality.test.js +230 -0
  104. package/dist/tools/convention/validateCodeQuality.test.js.map +1 -0
  105. package/dist/tools/memory/autoSaveContext.js +1 -1
  106. package/dist/tools/memory/autoSaveContext.js.map +1 -1
  107. package/dist/tools/memory/createMemoryTimeline.js +27 -27
  108. package/dist/tools/memory/createMemoryTimeline.js.map +1 -1
  109. package/dist/tools/memory/deleteMemory.js +1 -1
  110. package/dist/tools/memory/deleteMemory.js.map +1 -1
  111. package/dist/tools/memory/getMemoryGraph.js +24 -24
  112. package/dist/tools/memory/getMemoryGraph.js.map +1 -1
  113. package/dist/tools/memory/getSessionContext.js +36 -36
  114. package/dist/tools/memory/getSessionContext.js.map +1 -1
  115. package/dist/tools/memory/linkMemories.js +21 -21
  116. package/dist/tools/memory/linkMemories.js.map +1 -1
  117. package/dist/tools/memory/prioritizeMemory.js +1 -1
  118. package/dist/tools/memory/prioritizeMemory.js.map +1 -1
  119. package/dist/tools/memory/restoreSessionContext.js +1 -1
  120. package/dist/tools/memory/restoreSessionContext.js.map +1 -1
  121. package/dist/tools/memory/searchMemories.js +1 -1
  122. package/dist/tools/memory/searchMemories.js.map +1 -1
  123. package/dist/tools/memory/searchMemoriesAdvanced.js +42 -42
  124. package/dist/tools/memory/searchMemoriesAdvanced.js.map +1 -1
  125. package/dist/tools/memory/startSession.js +2 -2
  126. package/dist/tools/memory/startSession.js.map +1 -1
  127. package/dist/tools/memory/updateMemory.js +1 -1
  128. package/dist/tools/memory/updateMemory.js.map +1 -1
  129. package/dist/tools/semantic/analyzeDependencyGraph.js +38 -38
  130. package/dist/tools/semantic/analyzeDependencyGraph.js.map +1 -1
  131. package/dist/tools/semantic/findReferences.js +1 -1
  132. package/dist/tools/semantic/findReferences.js.map +1 -1
  133. package/dist/tools/semantic/findSymbol.js +1 -1
  134. package/dist/tools/semantic/findSymbol.js.map +1 -1
  135. package/dist/tools/time/getCurrentTime.js +1 -1
  136. package/dist/tools/time/getCurrentTime.js.map +1 -1
  137. package/dist/tools/ui/previewUiAscii.js +2 -2
  138. package/dist/tools/ui/previewUiAscii.js.map +1 -1
  139. package/hooks/hooks.json +11 -2
  140. package/hooks/scripts/llm-orchestrate.js +1 -1
  141. package/hooks/scripts/utils.js +31 -6
  142. package/languages/csharp-unity.md +82 -83
  143. package/languages/dart-flutter.md +89 -88
  144. package/languages/go.md +76 -75
  145. package/languages/java-spring.md +85 -84
  146. package/languages/kotlin-android.md +64 -63
  147. package/languages/python-django.md +83 -82
  148. package/languages/python-fastapi.md +82 -81
  149. package/languages/rust.md +75 -74
  150. package/languages/swift-ios.md +73 -72
  151. package/languages/typescript-electron.md +70 -71
  152. package/languages/typescript-nextjs.md +93 -92
  153. package/languages/typescript-node.md +64 -63
  154. package/languages/typescript-nuxt.md +113 -112
  155. package/languages/typescript-react-native.md +82 -81
  156. package/languages/typescript-react.md +76 -75
  157. package/languages/typescript-tauri.md +74 -75
  158. package/languages/typescript-vue.md +73 -72
  159. package/package.json +1 -1
  160. package/skills/git-worktree.md +25 -25
  161. package/skills/multi-llm-orchestration.md +4 -6
  162. package/skills/priority-todos.md +39 -39
  163. package/skills/vibe-capabilities.md +2 -2
  164. package/vibe/config.json +2 -2
@@ -10,7 +10,7 @@ Collection of utility tools. Use with options.
10
10
  ## Usage
11
11
 
12
12
  ```
13
- /vibe.utils --ui "설명" # UI ASCII preview
13
+ /vibe.utils --ui "description" # UI ASCII preview
14
14
  /vibe.utils --diagram # Architecture diagram
15
15
  /vibe.utils --diagram --er # ERD diagram
16
16
  /vibe.utils --diagram --flow # Flowchart
@@ -30,7 +30,7 @@ Generate ASCII-based UI preview from description.
30
30
 
31
31
  **Example:**
32
32
  ```
33
- /vibe.utils --ui "로그인 - 이메일, 비밀번호 입력 + 로그인 버튼"
33
+ /vibe.utils --ui "Login form - email, password input + login button"
34
34
  ```
35
35
 
36
36
  ---
@@ -84,7 +84,7 @@ Read and follow `agents/compounder.md` for solution documentation.
84
84
  Document solved problems for knowledge accumulation.
85
85
 
86
86
  **Usually auto-triggered by hooks when:**
87
- - "버그 해결됨", "bug fixed", "PR merged" detected
87
+ - "bug fixed", "PR merged" detected
88
88
 
89
89
  **Output location:** `.claude/vibe/solutions/`
90
90
 
@@ -98,4 +98,105 @@ Document solved problems for knowledge accumulation.
98
98
 
99
99
  ---
100
100
 
101
+ ## --continue (Session Restore)
102
+
103
+ Restore previous session context for continuity.
104
+
105
+ **Usage:**
106
+ ```
107
+ /vibe.utils --continue
108
+ ```
109
+
110
+ **What it does:**
111
+ 1. Calls `vibe_start_session` to load project memories
112
+ 2. Restores previous conversation context
113
+ 3. Resumes work from last checkpoint
114
+
115
+ ---
116
+
117
+ ## Quality Gate (Mandatory)
118
+
119
+ ### UI Preview Quality Checklist (--ui)
120
+
121
+ | Category | Check Item | Weight |
122
+ |----------|------------|--------|
123
+ | **Completeness** | All requested elements present | 30% |
124
+ | **Layout** | Proper spacing and alignment | 20% |
125
+ | **Labels** | All buttons/inputs labeled | 20% |
126
+ | **Accessibility** | Tab order logical | 15% |
127
+ | **Responsiveness** | Mobile/desktop variants shown | 15% |
128
+
129
+ ### Diagram Quality Checklist (--diagram)
130
+
131
+ | Category | Check Item | Weight |
132
+ |----------|------------|--------|
133
+ | **Accuracy** | Matches actual codebase structure | 30% |
134
+ | **Completeness** | All major components included | 25% |
135
+ | **Relationships** | Connections correctly shown | 20% |
136
+ | **Readability** | Not too cluttered | 15% |
137
+ | **Mermaid Syntax** | Valid, renders correctly | 10% |
138
+
139
+ ### E2E Test Quality Checklist (--e2e)
140
+
141
+ | Category | Check Item | Weight |
142
+ |----------|------------|--------|
143
+ | **Coverage** | All critical paths tested | 25% |
144
+ | **Assertions** | Each step has verification | 20% |
145
+ | **Stability** | No flaky selectors | 20% |
146
+ | **Error Handling** | Failures captured with screenshots | 15% |
147
+ | **Performance** | Tests complete in reasonable time | 10% |
148
+ | **Accessibility** | a11y checks included | 10% |
149
+
150
+ ### E2E Test Requirements
151
+
152
+ | Test Type | Required Output |
153
+ |-----------|-----------------|
154
+ | Standard | Pass/fail status + console errors |
155
+ | Visual (`--visual`) | Screenshot comparison + diff |
156
+ | Recording (`--record`) | Video file path + duration |
157
+
158
+ ### E2E Forbidden Patterns
159
+
160
+ | Pattern | Issue | Required Fix |
161
+ |---------|-------|--------------|
162
+ | Hardcoded waits (`sleep(5000)`) | Flaky tests | Use `waitFor` conditions |
163
+ | XPath selectors | Brittle | Use data-testid |
164
+ | No assertions | Useless test | Add expect() calls |
165
+ | Ignoring console errors | Missing bugs | Capture and report |
166
+
167
+ ### Compound (Solution) Quality Checklist (--compound)
168
+
169
+ | Category | Check Item | Weight |
170
+ |----------|------------|--------|
171
+ | **Problem** | Clearly described root cause | 25% |
172
+ | **Solution** | Step-by-step fix documented | 25% |
173
+ | **Prevention** | How to avoid in future | 20% |
174
+ | **Code Samples** | Before/after snippets | 15% |
175
+ | **Tags** | Properly categorized | 15% |
176
+
177
+ ### Quality Score Calculation
178
+
179
+ ```
180
+ Score = Σ(checked items × weight) / 100
181
+
182
+ Grades:
183
+ - 95-100: ✅ EXCELLENT - Ready to use
184
+ - 85-94: ✅ GOOD - Minor improvements optional
185
+ - 70-84: ⚠️ FAIR - Improvements needed
186
+ - 0-69: ❌ POOR - Redo required
187
+ ```
188
+
189
+ ### Output Requirements by Tool
190
+
191
+ | Tool | Required Output |
192
+ |------|-----------------|
193
+ | `--ui` | ASCII preview + component list |
194
+ | `--diagram` | Valid Mermaid code + rendered preview |
195
+ | `--diagram --er` | Entity names, fields, relationships |
196
+ | `--diagram --flow` | Start/end nodes, decision points |
197
+ | `--e2e` | Test file + execution results |
198
+ | `--compound` | Solution markdown + category tag |
199
+
200
+ ---
201
+
101
202
  ARGUMENTS: $ARGUMENTS
@@ -5,29 +5,29 @@ argument-hint: "feature name"
5
5
 
6
6
  # /vibe.verify
7
7
 
8
- **품질 검증 자동화** - 비개발자도 품질을 신뢰할 있도록.
8
+ **Automated Quality Verification** - Making quality trustworthy even for non-developers.
9
9
 
10
- > 모든 시나리오 통과 = 품질 보장
10
+ > All scenarios passed = Quality assured
11
11
 
12
12
  ## Usage
13
13
 
14
14
  ```
15
- /vibe.verify "feature-name" # SPEC 기반 검증
16
- /vibe.verify --e2e "feature-name" # E2E 브라우저 테스트 (agents/e2e-tester.md)
17
- /vibe.verify --e2e --visual # 시각적 회귀 테스트
18
- /vibe.verify --e2e --record # 비디오 녹화
15
+ /vibe.verify "feature-name" # SPEC-based verification
16
+ /vibe.verify --e2e "feature-name" # E2E browser test (agents/e2e-tester.md)
17
+ /vibe.verify --e2e --visual # Visual regression test
18
+ /vibe.verify --e2e --record # Video recording
19
19
  ```
20
20
 
21
- ## 핵심 원칙
21
+ ## Core Principles
22
22
 
23
23
  ```
24
24
  ┌─────────────────────────────────────────────────────────────────┐
25
- 비개발자가 알아야
25
+ What non-developers need to know
26
26
  │ │
27
- │ ✅ 시나리오 4/4 통과
28
- │ 📈 품질 점수: 94/100
27
+ │ ✅ Scenarios: 4/4 passed
28
+ │ 📈 Quality Score: 94/100
29
29
  │ │
30
- 이것만 보면 됨. 나머지는 시스템이 알아서.
30
+ Just look at this. The system handles the rest.
31
31
  └─────────────────────────────────────────────────────────────────┘
32
32
  ```
33
33
 
@@ -36,114 +36,114 @@ argument-hint: "feature name"
36
36
  ### 1. Load Feature File
37
37
 
38
38
  ```
39
- 📄 .claude/vibe/features/{feature-name}.feature → 시나리오 목록
40
- 📄 .claude/vibe/specs/{feature-name}.md → 검증 기준 (참조)
39
+ 📄 .claude/vibe/features/{feature-name}.feature → Scenario list
40
+ 📄 .claude/vibe/specs/{feature-name}.md → Verification criteria (reference)
41
41
  ```
42
42
 
43
- **Feature 파일이 없으면**:
43
+ **If feature file does not exist**:
44
44
  ```
45
- ❌ Feature 파일이 없습니다.
46
- 먼저 /vibe.spec "{feature-name}" 실행하세요.
45
+ ❌ Feature file not found.
46
+ Run /vibe.spec "{feature-name}" first.
47
47
  ```
48
48
 
49
49
  ### 2. Scenario-by-Scenario Verification
50
50
 
51
- 시나리오별 자동 검증:
51
+ Automatic verification for each scenario:
52
52
 
53
53
  ```
54
54
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
55
- 🔍 Scenario 1/4: 유효한 로그인 성공
55
+ 🔍 Scenario 1/4: Valid login success
56
56
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
57
57
 
58
- Given: 사용자가 등록되어 있다
59
- 검증: 사용자 생성 API 존재?
60
- 검증: 테스트 사용자 데이터?
58
+ Given: User is registered
59
+ Verify: User creation API exists?
60
+ Verify: Test user data available?
61
61
 
62
- When: 유효한 이메일과 비밀번호로 로그인
63
- 검증: POST /login 엔드포인트?
64
- 검증: 요청 처리 로직?
62
+ When: Login with valid email and password
63
+ Verify: POST /login endpoint exists?
64
+ Verify: Request handling logic exists?
65
65
 
66
- Then: 로그인 성공 + JWT 토큰 반환
67
- 검증: 성공 응답 코드 200? ✅
68
- 검증: JWT 토큰 포함?
66
+ Then: Login success + JWT token returned
67
+ Verify: Success response code 200? ✅
68
+ Verify: JWT token included?
69
69
 
70
- ✅ Scenario 1 통과!
70
+ ✅ Scenario 1 passed!
71
71
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
72
72
  ```
73
73
 
74
- ### 3. Verification Methods (자동 선택)
74
+ ### 3. Verification Methods (Auto-selected)
75
75
 
76
- | 방법 | 조건 | 검증 내용 |
77
- |------|------|-----------|
78
- | **테스트 실행** | 테스트 파일 존재 | `npm test`, `pytest` 실행 |
79
- | **코드 분석** | 항상 | 구현 여부, 로직 확인 |
80
- | **빌드 검증** | 빌드 스크립트 존재 | 컴파일 에러 확인 |
81
- | **타입 검사** | TypeScript | 타입 에러 확인 |
76
+ | Method | Condition | Verification Content |
77
+ |--------|-----------|---------------------|
78
+ | **Test Execution** | When test files exist | Run `npm test`, `pytest`, etc. |
79
+ | **Code Analysis** | Always | Check implementation, verify logic |
80
+ | **Build Verification** | When build script exists | Check for compile errors |
81
+ | **Type Check** | TypeScript, etc. | Check for type errors |
82
82
 
83
- ### 4. Quality Report (자동 생성)
83
+ ### 4. Quality Report (Auto-generated)
84
84
 
85
85
  ```
86
86
  ┌─────────────────────────────────────────────────────────────────┐
87
87
  │ 📊 VERIFICATION REPORT: login │
88
88
  ├─────────────────────────────────────────────────────────────────┤
89
89
  │ │
90
- │ ✅ 시나리오: 4/4 통과 (100%)
90
+ │ ✅ Scenarios: 4/4 passed (100%)
91
91
  │ │
92
92
  │ ┌───────────────────────────────────────────────────────────┐ │
93
93
  │ │ # │ Scenario │ Given │ When │ Then │ Status │ │
94
94
  │ │───│───────────────────────│───────│──────│──────│────────│ │
95
- │ │ 1 │ 유효한 로그인 성공 │ ✅ │ ✅ │ ✅ │ ✅ │ │
96
- │ │ 2 │ 잘못된 비밀번호 에러 │ ✅ │ ✅ │ ✅ │ ✅ │ │
97
- │ │ 3 │ 이메일 형식 검증 │ ✅ │ ✅ │ ✅ │ ✅ │ │
98
- │ │ 4 │ 비밀번호 찾기 링크 │ ✅ │ ✅ │ ✅ │ ✅ │ │
95
+ │ │ 1 │ Valid login success │ ✅ │ ✅ │ ✅ │ ✅ │ │
96
+ │ │ 2 │ Invalid password error│ ✅ │ ✅ │ ✅ │ ✅ │ │
97
+ │ │ 3 │ Email format validation│ ✅ │ ✅ │ ✅ │ ✅ │ │
98
+ │ │ 4 │ Forgot password link │ ✅ │ ✅ │ ✅ │ ✅ │ │
99
99
  │ └───────────────────────────────────────────────────────────┘ │
100
100
  │ │
101
- │ 📈 품질 점수: 94/100
101
+ │ 📈 Quality Score: 94/100
102
102
  │ │
103
103
  │ ┌─────────────────────────────────────────────────────────┐ │
104
- │ │ 항목결과 상세 │ │
104
+ │ │ ItemResultDetails │ │
105
105
  │ │───────────────────│───────│─────────────────────────────│ │
106
- │ │ 빌드 │ ✅ │ 성공 │ │
107
- │ │ 테스트 │ ✅ │ 12/12 통과 │ │
108
- │ │ 타입 검사 │ ✅ │ 에러 0개 │ │
109
- │ │ 복잡도 │ ✅ │ 모든 함수 ≤30│ │
110
- │ │ 코드 커버리지 │ ⚠️ │ 78% (목표: 80%) │ │
106
+ │ │ Build │ ✅ │ Success │ │
107
+ │ │ Tests │ ✅ │ 12/12 passed │ │
108
+ │ │ Type Check │ ✅ │ 0 errors │ │
109
+ │ │ Complexity │ ✅ │ All functions ≤30 lines │ │
110
+ │ │ Code Coverage │ ⚠️ │ 78% (target: 80%) │ │
111
111
  │ └─────────────────────────────────────────────────────────┘ │
112
112
  │ │
113
- │ 📋 권장 사항:
114
- │ - 코드 커버리지 2% 추가 필요 (auth.service.ts line 45-52) │
113
+ │ 📋 Recommendations:
114
+ │ - Need 2% more code coverage (auth.service.ts line 45-52) │
115
115
  │ │
116
116
  └─────────────────────────────────────────────────────────────────┘
117
117
  ```
118
118
 
119
- ### 실패 시 리포트
119
+ ### Failure Report
120
120
 
121
121
  ```
122
122
  ┌─────────────────────────────────────────────────────────────────┐
123
123
  │ 📊 VERIFICATION REPORT: login │
124
124
  ├─────────────────────────────────────────────────────────────────┤
125
125
  │ │
126
- │ ❌ 시나리오: 3/4 통과 (75%)
126
+ │ ❌ Scenarios: 3/4 passed (75%)
127
127
  │ │
128
128
  │ ┌───────────────────────────────────────────────────────────┐ │
129
129
  │ │ # │ Scenario │ Given │ When │ Then │ Status │ │
130
130
  │ │───│───────────────────────│───────│──────│──────│────────│ │
131
- │ │ 1 │ 유효한 로그인 성공 │ ✅ │ ✅ │ ✅ │ ✅ │ │
132
- │ │ 2 │ 잘못된 비밀번호 에러 │ ✅ │ ✅ │ ✅ │ ✅ │ │
133
- │ │ 3 │ 이메일 형식 검증 │ ✅ │ ✅ │ ✅ │ ✅ │ │
134
- │ │ 4 │ 비밀번호 찾기 링크 │ ✅ │ ❌ │ - │ ❌ │ │
131
+ │ │ 1 │ Valid login success │ ✅ │ ✅ │ ✅ │ ✅ │ │
132
+ │ │ 2 │ Invalid password error│ ✅ │ ✅ │ ✅ │ ✅ │ │
133
+ │ │ 3 │ Email format validation│ ✅ │ ✅ │ ✅ │ ✅ │ │
134
+ │ │ 4 │ Forgot password link │ ✅ │ ❌ │ - │ ❌ │ │
135
135
  │ └───────────────────────────────────────────────────────────┘ │
136
136
  │ │
137
- │ ❌ 실패 상세:
137
+ │ ❌ Failure Details:
138
138
  │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ │
139
- │ Scenario 4: 비밀번호 찾기 링크
139
+ │ Scenario 4: Forgot password link
140
140
  │ │
141
- │ When: "비밀번호 찾기" 클릭
142
- │ ❌ 문제: 링크가 구현되지 않음
143
- │ 📍 위치: LoginForm.tsx line 42
144
- │ 💡 수정: "Forgot password" 링크 추가 필요
141
+ │ When: Click "Forgot password"
142
+ │ ❌ Issue: Link not implemented
143
+ │ 📍 Location: LoginForm.tsx line 42
144
+ │ 💡 Fix: Need to add "Forgot password" link
145
145
  │ │
146
- │ 🔧 자동 수정 실행: /vibe.run "login" --fix
146
+ │ 🔧 Auto-fix command: /vibe.run "login" --fix
147
147
  │ │
148
148
  └─────────────────────────────────────────────────────────────────┘
149
149
  ```
@@ -167,59 +167,59 @@ User: /vibe.verify "login"
167
167
 
168
168
  Claude:
169
169
  📄 Loading Feature: .claude/vibe/features/login.feature
170
- 🔍 검증 시작...
170
+ 🔍 Starting verification...
171
171
 
172
172
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
173
- 🔍 Scenario 1/4: 유효한 로그인 성공
173
+ 🔍 Scenario 1/4: Valid login success
174
174
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
175
- ✅ Given: 사용자 등록 - OK
176
- ✅ When: 로그인 시도 - OK
177
- ✅ Then: JWT 토큰 반환 - OK
178
- 통과!
175
+ ✅ Given: User registered - OK
176
+ ✅ When: Login attempt - OK
177
+ ✅ Then: JWT token returned - OK
178
+ Passed!
179
179
 
180
180
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
181
- 🔍 Scenario 2/4: 잘못된 비밀번호 에러
181
+ 🔍 Scenario 2/4: Invalid password error
182
182
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
183
183
  ✅ Given: OK
184
184
  ✅ When: OK
185
185
  ✅ Then: OK
186
- 통과!
186
+ Passed!
187
187
 
188
188
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
189
- 🔍 Scenario 3/4: 이메일 형식 검증
189
+ 🔍 Scenario 3/4: Email format validation
190
190
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
191
191
  ✅ Given: OK
192
192
  ✅ When: OK
193
193
  ✅ Then: OK
194
- 통과!
194
+ Passed!
195
195
 
196
196
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
197
- 🔍 Scenario 4/4: 비밀번호 찾기 링크
197
+ 🔍 Scenario 4/4: Forgot password link
198
198
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
199
199
  ✅ Given: OK
200
- ❌ When: "비밀번호 찾기" 링크 - 없음
201
- - Then: (스킵)
202
- 실패!
200
+ ❌ When: "Forgot password" link - missing
201
+ - Then: (skipped)
202
+ Failed!
203
203
 
204
204
  ┌─────────────────────────────────────────────────────────────────┐
205
205
  │ 📊 VERIFICATION REPORT: login │
206
206
  ├─────────────────────────────────────────────────────────────────┤
207
207
  │ │
208
- │ ❌ 시나리오: 3/4 통과 (75%)
208
+ │ ❌ Scenarios: 3/4 passed (75%)
209
209
  │ │
210
210
  │ | # | Scenario | Status | │
211
211
  │ |---|───────────────────────|────────| │
212
- │ | 1 | 유효한 로그인 성공 | ✅ | │
213
- │ | 2 | 잘못된 비밀번호 에러 | ✅ | │
214
- │ | 3 | 이메일 형식 검증 | ✅ | │
215
- │ | 4 | 비밀번호 찾기 링크 | ❌ | │
212
+ │ | 1 | Valid login success | ✅ | │
213
+ │ | 2 | Invalid password error| ✅ | │
214
+ │ | 3 | Email format validation| ✅ | │
215
+ │ | 4 | Forgot password link | ❌ | │
216
216
  │ │
217
- │ 📈 품질 점수: 75/100
217
+ │ 📈 Quality Score: 75/100
218
218
  │ │
219
- │ ❌ 수정 필요:
220
- │ - Scenario 4: LoginForm.tsx에 "Forgot password" 링크 추가
219
+ │ ❌ Fixes needed:
220
+ │ - Scenario 4: Add "Forgot password" link in LoginForm.tsx
221
221
  │ │
222
- │ 🔧 자동 수정: /vibe.run "login" --fix
222
+ │ 🔧 Auto-fix: /vibe.run "login" --fix
223
223
  │ │
224
224
  └─────────────────────────────────────────────────────────────────┘
225
225
  ```
@@ -279,4 +279,97 @@ On verification fail:
279
279
 
280
280
  ---
281
281
 
282
+ ## Quality Gate (Mandatory)
283
+
284
+ ### Verification Quality Checklist
285
+
286
+ Before marking verification complete, ALL items must pass:
287
+
288
+ | Category | Check Item | Weight |
289
+ |----------|------------|--------|
290
+ | **Scenario Coverage** | All scenarios from feature file tested | 25% |
291
+ | **Given Verification** | All preconditions validated | 15% |
292
+ | **When Verification** | All actions executable | 15% |
293
+ | **Then Verification** | All expected outcomes confirmed | 20% |
294
+ | **Build Status** | Project builds without errors | 10% |
295
+ | **Test Status** | All existing tests pass | 10% |
296
+ | **Type Check** | No TypeScript/type errors | 5% |
297
+
298
+ ### Verification Score Calculation
299
+
300
+ ```
301
+ Score = (passed_scenarios / total_scenarios) × 100
302
+
303
+ Grades:
304
+ - 100%: ✅ PERFECT - All scenarios pass
305
+ - 90-99%: ⚠️ ALMOST - Minor gaps, review needed
306
+ - 70-89%: ❌ INCOMPLETE - Significant gaps
307
+ - 0-69%: ❌ FAILED - Major implementation missing
308
+ ```
309
+
310
+ ### Pass/Fail Criteria
311
+
312
+ | Metric | Pass Threshold | Action on Fail |
313
+ |--------|----------------|----------------|
314
+ | Scenario pass rate | 100% | Run `/vibe.run --fix` |
315
+ | Build status | Success | Fix build errors first |
316
+ | Test pass rate | 100% | Fix failing tests |
317
+ | Type check | 0 errors | Fix type errors |
318
+
319
+ ### Verification Methods Matrix
320
+
321
+ | Method | Trigger Condition | What It Checks |
322
+ |--------|-------------------|----------------|
323
+ | **Code Analysis** | Always | Implementation exists |
324
+ | **Test Execution** | Test files exist | Logic correctness |
325
+ | **Build Verification** | Build script exists | Compilation success |
326
+ | **Type Check** | tsconfig.json exists | Type safety |
327
+ | **Lint Check** | ESLint config exists | Code style |
328
+
329
+ ### Scenario Verification Depth
330
+
331
+ For each scenario, verify at THREE levels:
332
+
333
+ | Level | Verification | Example |
334
+ |-------|--------------|---------|
335
+ | **L1: Existence** | Code/function exists | `login()` function defined |
336
+ | **L2: Logic** | Implementation is correct | Validates email format |
337
+ | **L3: Integration** | Works with other components | Returns valid JWT |
338
+
339
+ ### Auto-Fix Triggers
340
+
341
+ | Verification Failure | Auto-Fix Action |
342
+ |----------------------|-----------------|
343
+ | Missing implementation | Generate skeleton from scenario |
344
+ | Test failure | Analyze and suggest fix |
345
+ | Build error | Show error location |
346
+ | Type error | Suggest type annotations |
347
+
348
+ ### Verification Report Requirements
349
+
350
+ Every verification MUST produce:
351
+
352
+ 1. **Scenario Summary Table**
353
+ - Scenario name
354
+ - Given/When/Then status (✅/❌)
355
+ - Overall status
356
+
357
+ 2. **Quality Metrics**
358
+ - Build status
359
+ - Test pass count
360
+ - Type error count
361
+ - Code coverage percentage
362
+
363
+ 3. **Failure Details** (if any)
364
+ - Exact failure point (Given/When/Then)
365
+ - Expected vs actual
366
+ - File path and line number
367
+ - Suggested fix command
368
+
369
+ 4. **Recommendations**
370
+ - Specific files to modify
371
+ - Auto-fix command if available
372
+
373
+ ---
374
+
282
375
  ARGUMENTS: $ARGUMENTS
@@ -301,46 +301,46 @@ export function getLanguageRulesForStacks(stacks) {
301
301
  * 언어별 CLAUDE.md 규칙
302
302
  */
303
303
  export const LANGUAGE_RULES = {
304
- typescript: `### TypeScript 규칙
305
- - \`any\` 타입 사용 금지 \`unknown\` + 타입 가드 사용
306
- - \`as any\` 캐스팅 금지 적절한 인터페이스 정의
307
- - \`@ts-ignore\` 금지 타입 문제 근본 해결
308
- - 모든 함수에 반환 타입 명시`,
309
- python: `### Python 규칙
310
- - 타입 힌트 필수 (함수 매개변수, 반환값)
311
- - \`# type: ignore\` 금지 타입 문제 근본 해결
312
- - f-string 사용 권장 (format() 대신)
313
- - 리스트 컴프리헨션 적절히 활용`,
314
- go: `### Go 규칙
315
- - 에러 반환 즉시 처리 (if err != nil)
316
- - 명시적 에러 래핑 (fmt.Errorf with %w)
317
- - 인터페이스는 사용처에서 정의
318
- - 고루틴 누수 방지 (context 활용)`,
319
- rust: `### Rust 규칙
320
- - unwrap()/expect() 프로덕션 코드 금지 → Result/Option 처리
321
- - unsafe 블록 최소화
322
- - 명시적 에러 타입 정의
323
- - 소유권/수명 주석 명확히`,
324
- java: `### Java 규칙
325
- - Optional 적극 활용 (null 대신)
326
- - 불변 객체 선호 (final 필드)
327
- - 체크 예외 적절히 처리
328
- - 스트림 API 활용`,
329
- kotlin: `### Kotlin 규칙
330
- - nullable 타입 명시 (?)
331
- - !! 연산자 금지 → safe call (?.) 사용
332
- - data class 적극 활용
333
- - 확장 함수로 유틸리티 구현`,
334
- dart: `### Dart 규칙
335
- - null safety 준수 (? ! 적절히 사용)
336
- - late 키워드 남용 금지
337
- - const 생성자 활용
338
- - 비동기 코드에 async/await 사용`,
339
- swift: `### Swift 규칙
340
- - 옵셔널 강제 언래핑 금지 → guard let / if let 사용
341
- - 프로토콜 지향 프로그래밍 권장
342
- - 타입(struct) 우선 사용
343
- - @escaping 클로저 메모리 관리 주의`
304
+ typescript: `### TypeScript Rules
305
+ - No \`any\` type use \`unknown\` + type guards
306
+ - No \`as any\` castingdefine proper interfaces
307
+ - No \`@ts-ignore\` → fix type issues at root
308
+ - Explicit return types on all functions`,
309
+ python: `### Python Rules
310
+ - Type hints required (parameters, return values)
311
+ - No \`# type: ignore\` → fix type issues at root
312
+ - Prefer f-strings (over format())
313
+ - Use list comprehensions appropriately`,
314
+ go: `### Go Rules
315
+ - Handle errors immediately (if err != nil)
316
+ - Explicit error wrapping (fmt.Errorf with %w)
317
+ - Define interfaces at point of use
318
+ - Prevent goroutine leaks (use context)`,
319
+ rust: `### Rust Rules
320
+ - No unwrap()/expect() in productionhandle Result/Option
321
+ - Minimize unsafe blocks
322
+ - Define explicit error types
323
+ - Document ownership/lifetime clearly`,
324
+ java: `### Java Rules
325
+ - Use Optional (instead of null)
326
+ - Prefer immutable objects (final fields)
327
+ - Handle checked exceptions properly
328
+ - Utilize Stream API`,
329
+ kotlin: `### Kotlin Rules
330
+ - Explicit nullable types (?)
331
+ - No !! operatoruse safe call (?.)
332
+ - Use data classes actively
333
+ - Implement utilities as extension functions`,
334
+ dart: `### Dart Rules
335
+ - Follow null safety (use ? and ! properly)
336
+ - Avoid late keyword abuse
337
+ - Use const constructors
338
+ - Use async/await for async code`,
339
+ swift: `### Swift Rules
340
+ - No force unwrappinguse guard let / if let
341
+ - Prefer protocol-oriented programming
342
+ - Prefer value types (struct)
343
+ - Watch memory management with @escaping closures`
344
344
  };
345
345
  /**
346
346
  * 스택에 맞는 언어 규칙 내용 반환