@su-record/vibe 2.0.0 → 2.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/agents/explorer.md +48 -48
- package/.claude/agents/implementer.md +53 -53
- package/.claude/agents/searcher.md +54 -54
- package/.claude/agents/simplifier.md +119 -119
- package/.claude/agents/tester.md +49 -49
- package/.claude/commands/vibe.analyze.md +239 -239
- package/.claude/commands/vibe.continue.md +88 -88
- package/.claude/commands/vibe.diagram.md +178 -178
- package/.claude/commands/vibe.reason.md +306 -306
- package/.claude/commands/vibe.run.md +760 -760
- package/.claude/commands/vibe.spec.md +339 -339
- package/.claude/commands/vibe.tool.md +153 -153
- package/.claude/commands/vibe.ui.md +137 -137
- package/.claude/commands/vibe.verify.md +238 -238
- package/.claude/settings.json +152 -152
- package/.claude/settings.local.json +4 -57
- package/.vibe/config.json +9 -0
- package/.vibe/constitution.md +184 -184
- package/.vibe/rules/core/communication-guide.md +104 -104
- package/.vibe/rules/core/development-philosophy.md +52 -52
- package/.vibe/rules/core/quick-start.md +120 -120
- package/.vibe/rules/quality/bdd-contract-testing.md +388 -388
- package/.vibe/rules/quality/checklist.md +276 -276
- package/.vibe/rules/quality/testing-strategy.md +437 -437
- package/.vibe/rules/standards/anti-patterns.md +369 -369
- package/.vibe/rules/standards/code-structure.md +291 -291
- package/.vibe/rules/standards/complexity-metrics.md +312 -312
- package/.vibe/rules/standards/naming-conventions.md +198 -198
- package/.vibe/rules/tools/mcp-hi-ai-guide.md +665 -665
- package/.vibe/rules/tools/mcp-workflow.md +51 -51
- package/.vibe/setup.sh +31 -31
- package/CLAUDE.md +122 -122
- package/LICENSE +21 -21
- package/README.md +568 -568
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +391 -406
- package/dist/cli/index.js.map +1 -1
- package/dist/lib/MemoryManager.js +92 -92
- package/dist/lib/PythonParser.js +108 -108
- package/dist/lib/gemini-mcp.js +15 -15
- package/dist/lib/gemini-oauth.js +35 -35
- package/dist/lib/gpt-mcp.js +17 -17
- package/dist/lib/gpt-oauth.js +44 -44
- package/dist/tools/analytics/getUsageAnalytics.js +12 -12
- package/dist/tools/memory/createMemoryTimeline.js +10 -10
- package/dist/tools/memory/getMemoryGraph.js +12 -12
- package/dist/tools/memory/getSessionContext.js +9 -9
- package/dist/tools/memory/linkMemories.js +14 -14
- package/dist/tools/memory/listMemories.js +4 -4
- package/dist/tools/memory/recallMemory.js +4 -4
- package/dist/tools/memory/saveMemory.js +4 -4
- package/dist/tools/memory/searchMemoriesAdvanced.js +22 -22
- package/dist/tools/planning/generatePrd.js +46 -46
- package/dist/tools/prompt/enhancePromptGemini.js +160 -160
- package/dist/tools/reasoning/applyReasoningFramework.js +56 -56
- package/dist/tools/semantic/analyzeDependencyGraph.js +12 -12
- package/package.json +67 -67
- package/templates/constitution-template.md +184 -184
- package/templates/contract-backend-template.md +517 -517
- package/templates/contract-frontend-template.md +594 -594
- package/templates/feature-template.md +96 -96
- package/templates/hooks-template.json +103 -103
- package/templates/spec-template.md +199 -199
- package/dist/lib/vibe-mcp.d.ts.map +0 -1
- package/dist/lib/vibe-mcp.js.map +0 -1
|
@@ -1,238 +1,238 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Verify implementation against SPEC requirements
|
|
3
|
-
argument-hint: "feature name"
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
# /vibe.verify
|
|
7
|
-
|
|
8
|
-
**품질 검증 자동화** - 비개발자도 품질을 신뢰할 수 있도록.
|
|
9
|
-
|
|
10
|
-
> 모든 시나리오 통과 = 품질 보장
|
|
11
|
-
|
|
12
|
-
## Usage
|
|
13
|
-
|
|
14
|
-
```
|
|
15
|
-
/vibe.verify "feature-name"
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
## 핵심 원칙
|
|
19
|
-
|
|
20
|
-
```
|
|
21
|
-
┌─────────────────────────────────────────────────────────────────┐
|
|
22
|
-
│ 비개발자가 알아야 할 것 │
|
|
23
|
-
│ │
|
|
24
|
-
│ ✅ 시나리오 4/4 통과 │
|
|
25
|
-
│ 📈 품질 점수: 94/100 │
|
|
26
|
-
│ │
|
|
27
|
-
│ 이것만 보면 됨. 나머지는 시스템이 알아서. │
|
|
28
|
-
└─────────────────────────────────────────────────────────────────┘
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
## Process
|
|
32
|
-
|
|
33
|
-
### 1. Load Feature File
|
|
34
|
-
|
|
35
|
-
```
|
|
36
|
-
📄 .vibe/features/{feature-name}.feature → 시나리오 목록
|
|
37
|
-
📄 .vibe/specs/{feature-name}.md → 검증 기준 (참조)
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
**Feature 파일이 없으면**:
|
|
41
|
-
```
|
|
42
|
-
❌ Feature 파일이 없습니다.
|
|
43
|
-
먼저 /vibe.spec "{feature-name}"을 실행하세요.
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
### 2. Scenario-by-Scenario Verification
|
|
47
|
-
|
|
48
|
-
각 시나리오별 자동 검증:
|
|
49
|
-
|
|
50
|
-
```
|
|
51
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
52
|
-
🔍 Scenario 1/4: 유효한 로그인 성공
|
|
53
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
54
|
-
|
|
55
|
-
Given: 사용자가 등록되어 있다
|
|
56
|
-
→ 검증: 사용자 생성 API 존재? ✅
|
|
57
|
-
→ 검증: 테스트 사용자 데이터? ✅
|
|
58
|
-
|
|
59
|
-
When: 유효한 이메일과 비밀번호로 로그인
|
|
60
|
-
→ 검증: POST /login 엔드포인트? ✅
|
|
61
|
-
→ 검증: 요청 처리 로직? ✅
|
|
62
|
-
|
|
63
|
-
Then: 로그인 성공 + JWT 토큰 반환
|
|
64
|
-
→ 검증: 성공 응답 코드 200? ✅
|
|
65
|
-
→ 검증: JWT 토큰 포함? ✅
|
|
66
|
-
|
|
67
|
-
✅ Scenario 1 통과!
|
|
68
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
69
|
-
```
|
|
70
|
-
|
|
71
|
-
### 3. Verification Methods (자동 선택)
|
|
72
|
-
|
|
73
|
-
| 방법 | 조건 | 검증 내용 |
|
|
74
|
-
|------|------|-----------|
|
|
75
|
-
| **테스트 실행** | 테스트 파일 존재 시 | `npm test`, `pytest` 등 실행 |
|
|
76
|
-
| **코드 분석** | 항상 | 구현 여부, 로직 확인 |
|
|
77
|
-
| **빌드 검증** | 빌드 스크립트 존재 시 | 컴파일 에러 확인 |
|
|
78
|
-
| **타입 검사** | TypeScript 등 | 타입 에러 확인 |
|
|
79
|
-
|
|
80
|
-
### 4. Quality Report (자동 생성)
|
|
81
|
-
|
|
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
|
-
```
|
|
115
|
-
|
|
116
|
-
### 실패 시 리포트
|
|
117
|
-
|
|
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
|
-
└─────────────────────────────────────────────────────────────────┘
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
## Input
|
|
149
|
-
|
|
150
|
-
- `.vibe/features/{feature-name}.feature` - BDD scenarios
|
|
151
|
-
- `.vibe/specs/{feature-name}.md` - SPEC document (reference)
|
|
152
|
-
- Implemented source code
|
|
153
|
-
|
|
154
|
-
## Output
|
|
155
|
-
|
|
156
|
-
- Verification result report (terminal output)
|
|
157
|
-
- Passed/failed scenario list
|
|
158
|
-
- Items needing fixes
|
|
159
|
-
|
|
160
|
-
## Example
|
|
161
|
-
|
|
162
|
-
```
|
|
163
|
-
User: /vibe.verify "login"
|
|
164
|
-
|
|
165
|
-
Claude:
|
|
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
|
-
└─────────────────────────────────────────────────────────────────┘
|
|
222
|
-
```
|
|
223
|
-
|
|
224
|
-
## Next Step
|
|
225
|
-
|
|
226
|
-
On verification pass:
|
|
227
|
-
```
|
|
228
|
-
Complete! Proceed to next feature.
|
|
229
|
-
```
|
|
230
|
-
|
|
231
|
-
On verification fail:
|
|
232
|
-
```
|
|
233
|
-
/vibe.run "feature-name" --fix # Fix failed scenarios
|
|
234
|
-
```
|
|
235
|
-
|
|
236
|
-
---
|
|
237
|
-
|
|
238
|
-
ARGUMENTS: $ARGUMENTS
|
|
1
|
+
---
|
|
2
|
+
description: Verify implementation against SPEC requirements
|
|
3
|
+
argument-hint: "feature name"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# /vibe.verify
|
|
7
|
+
|
|
8
|
+
**품질 검증 자동화** - 비개발자도 품질을 신뢰할 수 있도록.
|
|
9
|
+
|
|
10
|
+
> 모든 시나리오 통과 = 품질 보장
|
|
11
|
+
|
|
12
|
+
## Usage
|
|
13
|
+
|
|
14
|
+
```
|
|
15
|
+
/vibe.verify "feature-name"
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
## 핵심 원칙
|
|
19
|
+
|
|
20
|
+
```
|
|
21
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
22
|
+
│ 비개발자가 알아야 할 것 │
|
|
23
|
+
│ │
|
|
24
|
+
│ ✅ 시나리오 4/4 통과 │
|
|
25
|
+
│ 📈 품질 점수: 94/100 │
|
|
26
|
+
│ │
|
|
27
|
+
│ 이것만 보면 됨. 나머지는 시스템이 알아서. │
|
|
28
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
## Process
|
|
32
|
+
|
|
33
|
+
### 1. Load Feature File
|
|
34
|
+
|
|
35
|
+
```
|
|
36
|
+
📄 .vibe/features/{feature-name}.feature → 시나리오 목록
|
|
37
|
+
📄 .vibe/specs/{feature-name}.md → 검증 기준 (참조)
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
**Feature 파일이 없으면**:
|
|
41
|
+
```
|
|
42
|
+
❌ Feature 파일이 없습니다.
|
|
43
|
+
먼저 /vibe.spec "{feature-name}"을 실행하세요.
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### 2. Scenario-by-Scenario Verification
|
|
47
|
+
|
|
48
|
+
각 시나리오별 자동 검증:
|
|
49
|
+
|
|
50
|
+
```
|
|
51
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
52
|
+
🔍 Scenario 1/4: 유효한 로그인 성공
|
|
53
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
54
|
+
|
|
55
|
+
Given: 사용자가 등록되어 있다
|
|
56
|
+
→ 검증: 사용자 생성 API 존재? ✅
|
|
57
|
+
→ 검증: 테스트 사용자 데이터? ✅
|
|
58
|
+
|
|
59
|
+
When: 유효한 이메일과 비밀번호로 로그인
|
|
60
|
+
→ 검증: POST /login 엔드포인트? ✅
|
|
61
|
+
→ 검증: 요청 처리 로직? ✅
|
|
62
|
+
|
|
63
|
+
Then: 로그인 성공 + JWT 토큰 반환
|
|
64
|
+
→ 검증: 성공 응답 코드 200? ✅
|
|
65
|
+
→ 검증: JWT 토큰 포함? ✅
|
|
66
|
+
|
|
67
|
+
✅ Scenario 1 통과!
|
|
68
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### 3. Verification Methods (자동 선택)
|
|
72
|
+
|
|
73
|
+
| 방법 | 조건 | 검증 내용 |
|
|
74
|
+
|------|------|-----------|
|
|
75
|
+
| **테스트 실행** | 테스트 파일 존재 시 | `npm test`, `pytest` 등 실행 |
|
|
76
|
+
| **코드 분석** | 항상 | 구현 여부, 로직 확인 |
|
|
77
|
+
| **빌드 검증** | 빌드 스크립트 존재 시 | 컴파일 에러 확인 |
|
|
78
|
+
| **타입 검사** | TypeScript 등 | 타입 에러 확인 |
|
|
79
|
+
|
|
80
|
+
### 4. Quality Report (자동 생성)
|
|
81
|
+
|
|
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
|
+
```
|
|
115
|
+
|
|
116
|
+
### 실패 시 리포트
|
|
117
|
+
|
|
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
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
## Input
|
|
149
|
+
|
|
150
|
+
- `.vibe/features/{feature-name}.feature` - BDD scenarios
|
|
151
|
+
- `.vibe/specs/{feature-name}.md` - SPEC document (reference)
|
|
152
|
+
- Implemented source code
|
|
153
|
+
|
|
154
|
+
## Output
|
|
155
|
+
|
|
156
|
+
- Verification result report (terminal output)
|
|
157
|
+
- Passed/failed scenario list
|
|
158
|
+
- Items needing fixes
|
|
159
|
+
|
|
160
|
+
## Example
|
|
161
|
+
|
|
162
|
+
```
|
|
163
|
+
User: /vibe.verify "login"
|
|
164
|
+
|
|
165
|
+
Claude:
|
|
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
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
## Next Step
|
|
225
|
+
|
|
226
|
+
On verification pass:
|
|
227
|
+
```
|
|
228
|
+
Complete! Proceed to next feature.
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
On verification fail:
|
|
232
|
+
```
|
|
233
|
+
/vibe.run "feature-name" --fix # Fix failed scenarios
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
---
|
|
237
|
+
|
|
238
|
+
ARGUMENTS: $ARGUMENTS
|