@su-record/vibe 2.3.0 β 2.3.2
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/settings.json +35 -35
- package/.claude/settings.local.json +24 -25
- package/.claude/vibe/constitution.md +184 -184
- package/.claude/vibe/rules/core/communication-guide.md +104 -104
- package/.claude/vibe/rules/core/development-philosophy.md +52 -52
- package/.claude/vibe/rules/core/quick-start.md +120 -120
- package/.claude/vibe/rules/languages/dart-flutter.md +509 -509
- package/.claude/vibe/rules/languages/go.md +396 -396
- package/.claude/vibe/rules/languages/java-spring.md +586 -586
- package/.claude/vibe/rules/languages/kotlin-android.md +491 -491
- package/.claude/vibe/rules/languages/python-django.md +371 -371
- package/.claude/vibe/rules/languages/python-fastapi.md +386 -386
- package/.claude/vibe/rules/languages/rust.md +425 -425
- package/.claude/vibe/rules/languages/swift-ios.md +516 -516
- package/.claude/vibe/rules/languages/typescript-nextjs.md +441 -441
- package/.claude/vibe/rules/languages/typescript-node.md +375 -375
- package/.claude/vibe/rules/languages/typescript-nuxt.md +521 -521
- package/.claude/vibe/rules/languages/typescript-react-native.md +446 -446
- package/.claude/vibe/rules/languages/typescript-react.md +525 -525
- package/.claude/vibe/rules/languages/typescript-vue.md +353 -353
- package/.claude/vibe/rules/quality/bdd-contract-testing.md +388 -388
- package/.claude/vibe/rules/quality/checklist.md +276 -276
- package/.claude/vibe/rules/quality/testing-strategy.md +437 -437
- package/.claude/vibe/rules/standards/anti-patterns.md +369 -369
- package/.claude/vibe/rules/standards/code-structure.md +291 -291
- package/.claude/vibe/rules/standards/complexity-metrics.md +312 -312
- package/.claude/vibe/rules/standards/naming-conventions.md +198 -198
- package/.claude/vibe/setup.sh +31 -31
- package/.claude/vibe/templates/constitution-template.md +184 -184
- package/.claude/vibe/templates/contract-backend-template.md +517 -517
- package/.claude/vibe/templates/contract-frontend-template.md +594 -594
- package/.claude/vibe/templates/feature-template.md +96 -96
- package/.claude/vibe/templates/spec-template.md +199 -199
- package/CLAUDE.md +345 -323
- package/LICENSE +21 -21
- package/README.md +744 -724
- package/agents/compounder.md +261 -261
- package/agents/diagrammer.md +178 -178
- package/agents/e2e-tester.md +266 -266
- package/agents/explorer.md +48 -48
- package/agents/implementer.md +53 -53
- package/agents/research/best-practices-agent.md +139 -139
- package/agents/research/codebase-patterns-agent.md +147 -147
- package/agents/research/framework-docs-agent.md +181 -181
- package/agents/research/security-advisory-agent.md +167 -167
- package/agents/review/architecture-reviewer.md +107 -107
- package/agents/review/complexity-reviewer.md +116 -116
- package/agents/review/data-integrity-reviewer.md +88 -88
- package/agents/review/git-history-reviewer.md +103 -103
- package/agents/review/performance-reviewer.md +86 -86
- package/agents/review/python-reviewer.md +152 -152
- package/agents/review/rails-reviewer.md +139 -139
- package/agents/review/react-reviewer.md +144 -144
- package/agents/review/security-reviewer.md +80 -80
- package/agents/review/simplicity-reviewer.md +140 -140
- package/agents/review/test-coverage-reviewer.md +116 -116
- package/agents/review/typescript-reviewer.md +127 -127
- package/agents/searcher.md +54 -54
- package/agents/simplifier.md +119 -119
- package/agents/tester.md +49 -49
- package/agents/ui-previewer.md +137 -137
- package/commands/vibe.analyze.md +245 -180
- package/commands/vibe.reason.md +223 -183
- package/commands/vibe.review.md +200 -136
- package/commands/vibe.run.md +838 -836
- package/commands/vibe.spec.md +419 -383
- package/commands/vibe.utils.md +101 -101
- package/commands/vibe.verify.md +282 -241
- package/dist/cli/index.js +385 -385
- package/dist/lib/MemoryManager.d.ts.map +1 -1
- package/dist/lib/MemoryManager.js +119 -114
- package/dist/lib/MemoryManager.js.map +1 -1
- 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/index.d.ts +50 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +61 -0
- package/dist/tools/index.js.map +1 -0
- 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/hooks/hooks.json +121 -103
- package/package.json +73 -69
- package/skills/git-worktree.md +178 -178
- package/skills/priority-todos.md +236 -236
package/commands/vibe.verify.md
CHANGED
|
@@ -1,241 +1,282 @@
|
|
|
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" # SPEC κΈ°λ° κ²μ¦
|
|
16
|
-
/vibe.verify --e2e "feature-name" # E2E λΈλΌμ°μ ν
μ€νΈ (agents/e2e-tester.md)
|
|
17
|
-
/vibe.verify --e2e --visual # μκ°μ νκ· ν
μ€νΈ
|
|
18
|
-
/vibe.verify --e2e --record # λΉλμ€ λ
Ήν
|
|
19
|
-
```
|
|
20
|
-
|
|
21
|
-
## ν΅μ¬ μμΉ
|
|
22
|
-
|
|
23
|
-
```
|
|
24
|
-
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
25
|
-
β λΉκ°λ°μκ° μμμΌ ν κ² β
|
|
26
|
-
β β
|
|
27
|
-
β β
μλλ¦¬μ€ 4/4 ν΅κ³Ό β
|
|
28
|
-
β π νμ§ μ μ: 94/100 β
|
|
29
|
-
β β
|
|
30
|
-
β μ΄κ²λ§ 보면 λ¨. λλ¨Έμ§λ μμ€ν
μ΄ μμμ. β
|
|
31
|
-
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
## Process
|
|
35
|
-
|
|
36
|
-
### 1. Load Feature File
|
|
37
|
-
|
|
38
|
-
```
|
|
39
|
-
π .claude/vibe/features/{feature-name}.feature β μλλ¦¬μ€ λͺ©λ‘
|
|
40
|
-
π .claude/vibe/specs/{feature-name}.md β κ²μ¦ κΈ°μ€ (μ°Έμ‘°)
|
|
41
|
-
```
|
|
42
|
-
|
|
43
|
-
**Feature νμΌμ΄ μμΌλ©΄**:
|
|
44
|
-
```
|
|
45
|
-
β Feature νμΌμ΄ μμ΅λλ€.
|
|
46
|
-
λ¨Όμ /vibe.spec "{feature-name}"μ μ€ννμΈμ.
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
### 2. Scenario-by-Scenario Verification
|
|
50
|
-
|
|
51
|
-
κ° μλ리μ€λ³ μλ κ²μ¦:
|
|
52
|
-
|
|
53
|
-
```
|
|
54
|
-
ββββββββββββββββββββββββββββββββββββββββββββ
|
|
55
|
-
π Scenario 1/4: μ ν¨ν λ‘κ·ΈμΈ μ±κ³΅
|
|
56
|
-
ββββββββββββββββββββββββββββββββββββββββββββ
|
|
57
|
-
|
|
58
|
-
Given: μ¬μ©μκ° λ±λ‘λμ΄ μλ€
|
|
59
|
-
β κ²μ¦: μ¬μ©μ μμ± API μ‘΄μ¬? β
|
|
60
|
-
β κ²μ¦: ν
μ€νΈ μ¬μ©μ λ°μ΄ν°? β
|
|
61
|
-
|
|
62
|
-
When: μ ν¨ν μ΄λ©μΌκ³Ό λΉλ°λ²νΈλ‘ λ‘κ·ΈμΈ
|
|
63
|
-
β κ²μ¦: POST /login μλν¬μΈνΈ? β
|
|
64
|
-
β κ²μ¦: μμ² μ²λ¦¬ λ‘μ§? β
|
|
65
|
-
|
|
66
|
-
Then: λ‘κ·ΈμΈ μ±κ³΅ + JWT ν ν° λ°ν
|
|
67
|
-
β κ²μ¦: μ±κ³΅ μλ΅ μ½λ 200? β
|
|
68
|
-
β κ²μ¦: JWT ν ν° ν¬ν¨? β
|
|
69
|
-
|
|
70
|
-
β
Scenario 1 ν΅κ³Ό!
|
|
71
|
-
ββββββββββββββββββββββββββββββββββββββββββββ
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
### 3. Verification Methods (μλ μ ν)
|
|
75
|
-
|
|
76
|
-
| λ°©λ² | 쑰건 | κ²μ¦ λ΄μ© |
|
|
77
|
-
|------|------|-----------|
|
|
78
|
-
| **ν
μ€νΈ μ€ν** | ν
μ€νΈ νμΌ μ‘΄μ¬ μ | `npm test`, `pytest` λ± μ€ν |
|
|
79
|
-
| **μ½λ λΆμ** | νμ | ꡬν μ¬λΆ, λ‘μ§ νμΈ |
|
|
80
|
-
| **λΉλ κ²μ¦** | λΉλ μ€ν¬λ¦½νΈ μ‘΄μ¬ μ | μ»΄νμΌ μλ¬ νμΈ |
|
|
81
|
-
| **νμ
κ²μ¬** | TypeScript λ± | νμ
μλ¬ νμΈ |
|
|
82
|
-
|
|
83
|
-
### 4. Quality Report (μλ μμ±)
|
|
84
|
-
|
|
85
|
-
```
|
|
86
|
-
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
87
|
-
β π VERIFICATION REPORT: login β
|
|
88
|
-
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
|
|
89
|
-
β β
|
|
90
|
-
β β
μλ리μ€: 4/4 ν΅κ³Ό (100%) β
|
|
91
|
-
β β
|
|
92
|
-
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
93
|
-
β β # β Scenario β Given β When β Then β Status β β
|
|
94
|
-
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
95
|
-
β β 1 β μ ν¨ν λ‘κ·ΈμΈ μ±κ³΅ β β
β β
β β
β β
β β
|
|
96
|
-
β β 2 β μλͺ»λ λΉλ°λ²νΈ μλ¬ β β
β β
β β
β β
β β
|
|
97
|
-
β β 3 β μ΄λ©μΌ νμ κ²μ¦ β β
β β
β β
β β
β β
|
|
98
|
-
β β 4 β λΉλ°λ²νΈ μ°ΎκΈ° λ§ν¬ β β
β β
β β
β β
β β
|
|
99
|
-
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
100
|
-
β β
|
|
101
|
-
β π νμ§ μ μ: 94/100 β
|
|
102
|
-
β β
|
|
103
|
-
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
104
|
-
β β νλͺ© β κ²°κ³Ό β μμΈ β β
|
|
105
|
-
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
106
|
-
β β λΉλ β β
β μ±κ³΅ β β
|
|
107
|
-
β β ν
μ€νΈ β β
β 12/12 ν΅κ³Ό β β
|
|
108
|
-
β β νμ
κ²μ¬ β β
β μλ¬ 0κ° β β
|
|
109
|
-
β β 볡μ‘λ β β
β λͺ¨λ ν¨μ β€20μ€ β β
|
|
110
|
-
β β μ½λ 컀λ²λ¦¬μ§ β β οΈ β 78% (λͺ©ν: 80%) β β
|
|
111
|
-
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
112
|
-
β β
|
|
113
|
-
β π κΆμ₯ μ¬ν: β
|
|
114
|
-
β - μ½λ 컀λ²λ¦¬μ§ 2% μΆκ° νμ (auth.service.ts line 45-52) β
|
|
115
|
-
β β
|
|
116
|
-
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
### μ€ν¨ μ 리ν¬νΈ
|
|
120
|
-
|
|
121
|
-
```
|
|
122
|
-
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
123
|
-
β π VERIFICATION REPORT: login β
|
|
124
|
-
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
|
|
125
|
-
β β
|
|
126
|
-
β β μλ리μ€: 3/4 ν΅κ³Ό (75%) β
|
|
127
|
-
β β
|
|
128
|
-
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
129
|
-
β β # β Scenario β Given β When β Then β Status β β
|
|
130
|
-
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
131
|
-
β β 1 β μ ν¨ν λ‘κ·ΈμΈ μ±κ³΅ β β
β β
β β
β β
β β
|
|
132
|
-
β β 2 β μλͺ»λ λΉλ°λ²νΈ μλ¬ β β
β β
β β
β β
β β
|
|
133
|
-
β β 3 β μ΄λ©μΌ νμ κ²μ¦ β β
β β
β β
β β
β β
|
|
134
|
-
β β 4 β λΉλ°λ²νΈ μ°ΎκΈ° λ§ν¬ β β
β β β - β β β β
|
|
135
|
-
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
136
|
-
β β
|
|
137
|
-
β β μ€ν¨ μμΈ: β
|
|
138
|
-
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
139
|
-
β Scenario 4: λΉλ°λ²νΈ μ°ΎκΈ° λ§ν¬ β
|
|
140
|
-
β β
|
|
141
|
-
β When: "λΉλ°λ²νΈ μ°ΎκΈ°" ν΄λ¦ β
|
|
142
|
-
β β λ¬Έμ : λ§ν¬κ° ꡬνλμ§ μμ β
|
|
143
|
-
β π μμΉ: LoginForm.tsx line 42 β
|
|
144
|
-
β π‘ μμ : "Forgot password" λ§ν¬ μΆκ° νμ β
|
|
145
|
-
β β
|
|
146
|
-
β π§ μλ μμ μ€ν: /vibe.run "login" --fix β
|
|
147
|
-
β β
|
|
148
|
-
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
149
|
-
```
|
|
150
|
-
|
|
151
|
-
## Input
|
|
152
|
-
|
|
153
|
-
- `.claude/vibe/features/{feature-name}.feature` - BDD scenarios
|
|
154
|
-
- `.claude/vibe/specs/{feature-name}.md` - SPEC document (reference)
|
|
155
|
-
- Implemented source code
|
|
156
|
-
|
|
157
|
-
## Output
|
|
158
|
-
|
|
159
|
-
- Verification result report (terminal output)
|
|
160
|
-
- Passed/failed scenario list
|
|
161
|
-
- Items needing fixes
|
|
162
|
-
|
|
163
|
-
## Example
|
|
164
|
-
|
|
165
|
-
```
|
|
166
|
-
User: /vibe.verify "login"
|
|
167
|
-
|
|
168
|
-
Claude:
|
|
169
|
-
π Loading Feature: .claude/vibe/features/login.feature
|
|
170
|
-
π κ²μ¦ μμ...
|
|
171
|
-
|
|
172
|
-
ββββββββββββββββββββββββββββββββββββββββββββ
|
|
173
|
-
π Scenario 1/4: μ ν¨ν λ‘κ·ΈμΈ μ±κ³΅
|
|
174
|
-
ββββββββββββββββββββββββββββββββββββββββββββ
|
|
175
|
-
β
Given: μ¬μ©μ λ±λ‘ - OK
|
|
176
|
-
β
When: λ‘κ·ΈμΈ μλ - OK
|
|
177
|
-
β
Then: JWT ν ν° λ°ν - OK
|
|
178
|
-
β
ν΅κ³Ό!
|
|
179
|
-
|
|
180
|
-
ββββββββββββββββββββββββββββββββββββββββββββ
|
|
181
|
-
π Scenario 2/4: μλͺ»λ λΉλ°λ²νΈ μλ¬
|
|
182
|
-
ββββββββββββββββββββββββββββββββββββββββββββ
|
|
183
|
-
β
Given: OK
|
|
184
|
-
β
When: OK
|
|
185
|
-
β
Then: OK
|
|
186
|
-
β
ν΅κ³Ό!
|
|
187
|
-
|
|
188
|
-
ββββββββββββββββββββββββββββββββββββββββββββ
|
|
189
|
-
π Scenario 3/4: μ΄λ©μΌ νμ κ²μ¦
|
|
190
|
-
ββββββββββββββββββββββββββββββββββββββββββββ
|
|
191
|
-
β
Given: OK
|
|
192
|
-
β
When: OK
|
|
193
|
-
β
Then: OK
|
|
194
|
-
β
ν΅κ³Ό!
|
|
195
|
-
|
|
196
|
-
ββββββββββββββββββββββββββββββββββββββββββββ
|
|
197
|
-
π Scenario 4/4: λΉλ°λ²νΈ μ°ΎκΈ° λ§ν¬
|
|
198
|
-
ββββββββββββββββββββββββββββββββββββββββββββ
|
|
199
|
-
β
Given: OK
|
|
200
|
-
β When: "λΉλ°λ²νΈ μ°ΎκΈ°" λ§ν¬ - μμ
|
|
201
|
-
- Then: (μ€ν΅)
|
|
202
|
-
β μ€ν¨!
|
|
203
|
-
|
|
204
|
-
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
205
|
-
β π VERIFICATION REPORT: login β
|
|
206
|
-
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
|
|
207
|
-
β β
|
|
208
|
-
β β μλ리μ€: 3/4 ν΅κ³Ό (75%) β
|
|
209
|
-
β β
|
|
210
|
-
β | # | Scenario | Status | β
|
|
211
|
-
β |---|βββββββββββββββββββββββ|ββββββββ| β
|
|
212
|
-
β | 1 | μ ν¨ν λ‘κ·ΈμΈ μ±κ³΅ | β
| β
|
|
213
|
-
β | 2 | μλͺ»λ λΉλ°λ²νΈ μλ¬ | β
| β
|
|
214
|
-
β | 3 | μ΄λ©μΌ νμ κ²μ¦ | β
| β
|
|
215
|
-
β | 4 | λΉλ°λ²νΈ μ°ΎκΈ° λ§ν¬ | β | β
|
|
216
|
-
β β
|
|
217
|
-
β π νμ§ μ μ: 75/100 β
|
|
218
|
-
β β
|
|
219
|
-
β β μμ νμ: β
|
|
220
|
-
β - Scenario 4: LoginForm.tsxμ "Forgot password" λ§ν¬ μΆκ° β
|
|
221
|
-
β β
|
|
222
|
-
β π§ μλ μμ : /vibe.run "login" --fix β
|
|
223
|
-
β β
|
|
224
|
-
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
225
|
-
```
|
|
226
|
-
|
|
227
|
-
##
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
```
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
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" # SPEC κΈ°λ° κ²μ¦
|
|
16
|
+
/vibe.verify --e2e "feature-name" # E2E λΈλΌμ°μ ν
μ€νΈ (agents/e2e-tester.md)
|
|
17
|
+
/vibe.verify --e2e --visual # μκ°μ νκ· ν
μ€νΈ
|
|
18
|
+
/vibe.verify --e2e --record # λΉλμ€ λ
Ήν
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
## ν΅μ¬ μμΉ
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
25
|
+
β λΉκ°λ°μκ° μμμΌ ν κ² β
|
|
26
|
+
β β
|
|
27
|
+
β β
μλλ¦¬μ€ 4/4 ν΅κ³Ό β
|
|
28
|
+
β π νμ§ μ μ: 94/100 β
|
|
29
|
+
β β
|
|
30
|
+
β μ΄κ²λ§ 보면 λ¨. λλ¨Έμ§λ μμ€ν
μ΄ μμμ. β
|
|
31
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
## Process
|
|
35
|
+
|
|
36
|
+
### 1. Load Feature File
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
π .claude/vibe/features/{feature-name}.feature β μλλ¦¬μ€ λͺ©λ‘
|
|
40
|
+
π .claude/vibe/specs/{feature-name}.md β κ²μ¦ κΈ°μ€ (μ°Έμ‘°)
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
**Feature νμΌμ΄ μμΌλ©΄**:
|
|
44
|
+
```
|
|
45
|
+
β Feature νμΌμ΄ μμ΅λλ€.
|
|
46
|
+
λ¨Όμ /vibe.spec "{feature-name}"μ μ€ννμΈμ.
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### 2. Scenario-by-Scenario Verification
|
|
50
|
+
|
|
51
|
+
κ° μλ리μ€λ³ μλ κ²μ¦:
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
ββββββββββββββββββββββββββββββββββββββββββββ
|
|
55
|
+
π Scenario 1/4: μ ν¨ν λ‘κ·ΈμΈ μ±κ³΅
|
|
56
|
+
ββββββββββββββββββββββββββββββββββββββββββββ
|
|
57
|
+
|
|
58
|
+
Given: μ¬μ©μκ° λ±λ‘λμ΄ μλ€
|
|
59
|
+
β κ²μ¦: μ¬μ©μ μμ± API μ‘΄μ¬? β
|
|
60
|
+
β κ²μ¦: ν
μ€νΈ μ¬μ©μ λ°μ΄ν°? β
|
|
61
|
+
|
|
62
|
+
When: μ ν¨ν μ΄λ©μΌκ³Ό λΉλ°λ²νΈλ‘ λ‘κ·ΈμΈ
|
|
63
|
+
β κ²μ¦: POST /login μλν¬μΈνΈ? β
|
|
64
|
+
β κ²μ¦: μμ² μ²λ¦¬ λ‘μ§? β
|
|
65
|
+
|
|
66
|
+
Then: λ‘κ·ΈμΈ μ±κ³΅ + JWT ν ν° λ°ν
|
|
67
|
+
β κ²μ¦: μ±κ³΅ μλ΅ μ½λ 200? β
|
|
68
|
+
β κ²μ¦: JWT ν ν° ν¬ν¨? β
|
|
69
|
+
|
|
70
|
+
β
Scenario 1 ν΅κ³Ό!
|
|
71
|
+
ββββββββββββββββββββββββββββββββββββββββββββ
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
### 3. Verification Methods (μλ μ ν)
|
|
75
|
+
|
|
76
|
+
| λ°©λ² | 쑰건 | κ²μ¦ λ΄μ© |
|
|
77
|
+
|------|------|-----------|
|
|
78
|
+
| **ν
μ€νΈ μ€ν** | ν
μ€νΈ νμΌ μ‘΄μ¬ μ | `npm test`, `pytest` λ± μ€ν |
|
|
79
|
+
| **μ½λ λΆμ** | νμ | ꡬν μ¬λΆ, λ‘μ§ νμΈ |
|
|
80
|
+
| **λΉλ κ²μ¦** | λΉλ μ€ν¬λ¦½νΈ μ‘΄μ¬ μ | μ»΄νμΌ μλ¬ νμΈ |
|
|
81
|
+
| **νμ
κ²μ¬** | TypeScript λ± | νμ
μλ¬ νμΈ |
|
|
82
|
+
|
|
83
|
+
### 4. Quality Report (μλ μμ±)
|
|
84
|
+
|
|
85
|
+
```
|
|
86
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
87
|
+
β π VERIFICATION REPORT: login β
|
|
88
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
|
|
89
|
+
β β
|
|
90
|
+
β β
μλ리μ€: 4/4 ν΅κ³Ό (100%) β
|
|
91
|
+
β β
|
|
92
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
93
|
+
β β # β Scenario β Given β When β Then β Status β β
|
|
94
|
+
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
95
|
+
β β 1 β μ ν¨ν λ‘κ·ΈμΈ μ±κ³΅ β β
β β
β β
β β
β β
|
|
96
|
+
β β 2 β μλͺ»λ λΉλ°λ²νΈ μλ¬ β β
β β
β β
β β
β β
|
|
97
|
+
β β 3 β μ΄λ©μΌ νμ κ²μ¦ β β
β β
β β
β β
β β
|
|
98
|
+
β β 4 β λΉλ°λ²νΈ μ°ΎκΈ° λ§ν¬ β β
β β
β β
β β
β β
|
|
99
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
100
|
+
β β
|
|
101
|
+
β π νμ§ μ μ: 94/100 β
|
|
102
|
+
β β
|
|
103
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
104
|
+
β β νλͺ© β κ²°κ³Ό β μμΈ β β
|
|
105
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
106
|
+
β β λΉλ β β
β μ±κ³΅ β β
|
|
107
|
+
β β ν
μ€νΈ β β
β 12/12 ν΅κ³Ό β β
|
|
108
|
+
β β νμ
κ²μ¬ β β
β μλ¬ 0κ° β β
|
|
109
|
+
β β 볡μ‘λ β β
β λͺ¨λ ν¨μ β€20μ€ β β
|
|
110
|
+
β β μ½λ 컀λ²λ¦¬μ§ β β οΈ β 78% (λͺ©ν: 80%) β β
|
|
111
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
112
|
+
β β
|
|
113
|
+
β π κΆμ₯ μ¬ν: β
|
|
114
|
+
β - μ½λ 컀λ²λ¦¬μ§ 2% μΆκ° νμ (auth.service.ts line 45-52) β
|
|
115
|
+
β β
|
|
116
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### μ€ν¨ μ 리ν¬νΈ
|
|
120
|
+
|
|
121
|
+
```
|
|
122
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
123
|
+
β π VERIFICATION REPORT: login β
|
|
124
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
|
|
125
|
+
β β
|
|
126
|
+
β β μλ리μ€: 3/4 ν΅κ³Ό (75%) β
|
|
127
|
+
β β
|
|
128
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
129
|
+
β β # β Scenario β Given β When β Then β Status β β
|
|
130
|
+
β ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
131
|
+
β β 1 β μ ν¨ν λ‘κ·ΈμΈ μ±κ³΅ β β
β β
β β
β β
β β
|
|
132
|
+
β β 2 β μλͺ»λ λΉλ°λ²νΈ μλ¬ β β
β β
β β
β β
β β
|
|
133
|
+
β β 3 β μ΄λ©μΌ νμ κ²μ¦ β β
β β
β β
β β
β β
|
|
134
|
+
β β 4 β λΉλ°λ²νΈ μ°ΎκΈ° λ§ν¬ β β
β β β - β β β β
|
|
135
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
136
|
+
β β
|
|
137
|
+
β β μ€ν¨ μμΈ: β
|
|
138
|
+
β βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ β
|
|
139
|
+
β Scenario 4: λΉλ°λ²νΈ μ°ΎκΈ° λ§ν¬ β
|
|
140
|
+
β β
|
|
141
|
+
β When: "λΉλ°λ²νΈ μ°ΎκΈ°" ν΄λ¦ β
|
|
142
|
+
β β λ¬Έμ : λ§ν¬κ° ꡬνλμ§ μμ β
|
|
143
|
+
β π μμΉ: LoginForm.tsx line 42 β
|
|
144
|
+
β π‘ μμ : "Forgot password" λ§ν¬ μΆκ° νμ β
|
|
145
|
+
β β
|
|
146
|
+
β π§ μλ μμ μ€ν: /vibe.run "login" --fix β
|
|
147
|
+
β β
|
|
148
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
## Input
|
|
152
|
+
|
|
153
|
+
- `.claude/vibe/features/{feature-name}.feature` - BDD scenarios
|
|
154
|
+
- `.claude/vibe/specs/{feature-name}.md` - SPEC document (reference)
|
|
155
|
+
- Implemented source code
|
|
156
|
+
|
|
157
|
+
## Output
|
|
158
|
+
|
|
159
|
+
- Verification result report (terminal output)
|
|
160
|
+
- Passed/failed scenario list
|
|
161
|
+
- Items needing fixes
|
|
162
|
+
|
|
163
|
+
## Example
|
|
164
|
+
|
|
165
|
+
```
|
|
166
|
+
User: /vibe.verify "login"
|
|
167
|
+
|
|
168
|
+
Claude:
|
|
169
|
+
π Loading Feature: .claude/vibe/features/login.feature
|
|
170
|
+
π κ²μ¦ μμ...
|
|
171
|
+
|
|
172
|
+
ββββββββββββββββββββββββββββββββββββββββββββ
|
|
173
|
+
π Scenario 1/4: μ ν¨ν λ‘κ·ΈμΈ μ±κ³΅
|
|
174
|
+
ββββββββββββββββββββββββββββββββββββββββββββ
|
|
175
|
+
β
Given: μ¬μ©μ λ±λ‘ - OK
|
|
176
|
+
β
When: λ‘κ·ΈμΈ μλ - OK
|
|
177
|
+
β
Then: JWT ν ν° λ°ν - OK
|
|
178
|
+
β
ν΅κ³Ό!
|
|
179
|
+
|
|
180
|
+
ββββββββββββββββββββββββββββββββββββββββββββ
|
|
181
|
+
π Scenario 2/4: μλͺ»λ λΉλ°λ²νΈ μλ¬
|
|
182
|
+
ββββββββββββββββββββββββββββββββββββββββββββ
|
|
183
|
+
β
Given: OK
|
|
184
|
+
β
When: OK
|
|
185
|
+
β
Then: OK
|
|
186
|
+
β
ν΅κ³Ό!
|
|
187
|
+
|
|
188
|
+
ββββββββββββββββββββββββββββββββββββββββββββ
|
|
189
|
+
π Scenario 3/4: μ΄λ©μΌ νμ κ²μ¦
|
|
190
|
+
ββββββββββββββββββββββββββββββββββββββββββββ
|
|
191
|
+
β
Given: OK
|
|
192
|
+
β
When: OK
|
|
193
|
+
β
Then: OK
|
|
194
|
+
β
ν΅κ³Ό!
|
|
195
|
+
|
|
196
|
+
ββββββββββββββββββββββββββββββββββββββββββββ
|
|
197
|
+
π Scenario 4/4: λΉλ°λ²νΈ μ°ΎκΈ° λ§ν¬
|
|
198
|
+
ββββββββββββββββββββββββββββββββββββββββββββ
|
|
199
|
+
β
Given: OK
|
|
200
|
+
β When: "λΉλ°λ²νΈ μ°ΎκΈ°" λ§ν¬ - μμ
|
|
201
|
+
- Then: (μ€ν΅)
|
|
202
|
+
β μ€ν¨!
|
|
203
|
+
|
|
204
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
205
|
+
β π VERIFICATION REPORT: login β
|
|
206
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ€
|
|
207
|
+
β β
|
|
208
|
+
β β μλ리μ€: 3/4 ν΅κ³Ό (75%) β
|
|
209
|
+
β β
|
|
210
|
+
β | # | Scenario | Status | β
|
|
211
|
+
β |---|βββββββββββββββββββββββ|ββββββββ| β
|
|
212
|
+
β | 1 | μ ν¨ν λ‘κ·ΈμΈ μ±κ³΅ | β
| β
|
|
213
|
+
β | 2 | μλͺ»λ λΉλ°λ²νΈ μλ¬ | β
| β
|
|
214
|
+
β | 3 | μ΄λ©μΌ νμ κ²μ¦ | β
| β
|
|
215
|
+
β | 4 | λΉλ°λ²νΈ μ°ΎκΈ° λ§ν¬ | β | β
|
|
216
|
+
β β
|
|
217
|
+
β π νμ§ μ μ: 75/100 β
|
|
218
|
+
β β
|
|
219
|
+
β β μμ νμ: β
|
|
220
|
+
β - Scenario 4: LoginForm.tsxμ "Forgot password" λ§ν¬ μΆκ° β
|
|
221
|
+
β β
|
|
222
|
+
β π§ μλ μμ : /vibe.run "login" --fix β
|
|
223
|
+
β β
|
|
224
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
## Vibe Tools (Code Analysis & Quality)
|
|
228
|
+
|
|
229
|
+
### Tool Invocation
|
|
230
|
+
|
|
231
|
+
All tools are called via:
|
|
232
|
+
|
|
233
|
+
```bash
|
|
234
|
+
node -e "import('@su-record/vibe/tools').then(t => t.TOOL_NAME({...args}).then(r => console.log(r.content[0].text)))"
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
### Recommended Tools for Verification
|
|
238
|
+
|
|
239
|
+
| Tool | Purpose | When to Use |
|
|
240
|
+
|------|---------|-------------|
|
|
241
|
+
| `validateCodeQuality` | Code quality validation | Check complexity, style violations |
|
|
242
|
+
| `analyzeComplexity` | Complexity analysis | Verify function length, nesting depth |
|
|
243
|
+
| `findSymbol` | Find implementations | Verify feature implementation exists |
|
|
244
|
+
| `findReferences` | Find usages | Check if all references are correct |
|
|
245
|
+
|
|
246
|
+
### Example Tool Usage in Verification
|
|
247
|
+
|
|
248
|
+
**1. Validate code quality:**
|
|
249
|
+
|
|
250
|
+
```bash
|
|
251
|
+
node -e "import('@su-record/vibe/tools').then(t => t.validateCodeQuality({targetPath: 'src/auth/', projectPath: process.cwd()}).then(r => console.log(r.content[0].text)))"
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
**2. Analyze complexity of implementation:**
|
|
255
|
+
|
|
256
|
+
```bash
|
|
257
|
+
node -e "import('@su-record/vibe/tools').then(t => t.analyzeComplexity({targetPath: 'src/auth/login.ts', projectPath: process.cwd()}).then(r => console.log(r.content[0].text)))"
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
**3. Find implemented feature:**
|
|
261
|
+
|
|
262
|
+
```bash
|
|
263
|
+
node -e "import('@su-record/vibe/tools').then(t => t.findSymbol({symbolName: 'handleLogin', searchPath: 'src/'}).then(r => console.log(r.content[0].text)))"
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
## Next Step
|
|
267
|
+
|
|
268
|
+
On verification pass:
|
|
269
|
+
|
|
270
|
+
```
|
|
271
|
+
Complete! Proceed to next feature.
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
On verification fail:
|
|
275
|
+
|
|
276
|
+
```
|
|
277
|
+
/vibe.run "feature-name" --fix # Fix failed scenarios
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
---
|
|
281
|
+
|
|
282
|
+
ARGUMENTS: $ARGUMENTS
|