@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.
- package/CLAUDE.md +216 -215
- package/README.md +4 -4
- package/agents/research/best-practices-agent.md +13 -13
- package/agents/research/codebase-patterns-agent.md +33 -33
- package/agents/research/framework-docs-agent.md +23 -23
- package/agents/research/security-advisory-agent.md +29 -29
- package/agents/review/architecture-reviewer.md +31 -31
- package/agents/review/complexity-reviewer.md +21 -21
- package/agents/review/data-integrity-reviewer.md +29 -29
- package/agents/review/git-history-reviewer.md +24 -24
- package/agents/review/performance-reviewer.md +29 -29
- package/agents/review/python-reviewer.md +53 -53
- package/agents/review/rails-reviewer.md +40 -40
- package/agents/review/react-reviewer.md +40 -40
- package/agents/review/security-reviewer.md +29 -29
- package/agents/review/simplicity-reviewer.md +24 -24
- package/agents/review/test-coverage-reviewer.md +31 -31
- package/agents/review/typescript-reviewer.md +41 -41
- package/commands/vibe.analyze.md +103 -7
- package/commands/vibe.reason.md +106 -0
- package/commands/vibe.review.md +123 -38
- package/commands/vibe.run.md +286 -221
- package/commands/vibe.spec.md +290 -175
- package/commands/vibe.utils.md +104 -3
- package/commands/vibe.verify.md +179 -86
- package/dist/cli/detect.js +40 -40
- package/dist/cli/detect.js.map +1 -1
- package/dist/cli/index.d.ts +1 -1
- package/dist/cli/index.js +1 -1
- package/dist/cli/llm.js +5 -5
- package/dist/cli/llm.js.map +1 -1
- package/dist/cli/setup.js +3 -3
- package/dist/cli/setup.js.map +1 -1
- package/dist/lib/ContextCompressor.js +1 -1
- package/dist/lib/ContextCompressor.js.map +1 -1
- package/dist/lib/gemini-api.js +12 -12
- package/dist/lib/gemini-api.js.map +1 -1
- package/dist/lib/gemini-oauth.js +22 -22
- package/dist/lib/gemini-oauth.js.map +1 -1
- package/dist/lib/gemini-storage.js +3 -3
- package/dist/lib/gemini-storage.js.map +1 -1
- package/dist/lib/gpt-api.js +11 -11
- package/dist/lib/gpt-api.js.map +1 -1
- package/dist/lib/gpt-oauth.js +28 -28
- package/dist/lib/gpt-oauth.js.map +1 -1
- package/dist/lib/gpt-storage.js +3 -3
- package/dist/lib/gpt-storage.js.map +1 -1
- package/dist/orchestrator/orchestrator.d.ts.map +1 -1
- package/dist/orchestrator/orchestrator.js +4 -6
- package/dist/orchestrator/orchestrator.js.map +1 -1
- package/dist/tools/convention/analyzeComplexity.js +3 -3
- package/dist/tools/convention/analyzeComplexity.js.map +1 -1
- package/dist/tools/convention/applyQualityRules.js +1 -1
- package/dist/tools/convention/applyQualityRules.js.map +1 -1
- package/dist/tools/convention/checkCouplingCohesion.js +2 -2
- package/dist/tools/convention/checkCouplingCohesion.js.map +1 -1
- package/dist/tools/convention/suggestImprovements.js +1 -1
- package/dist/tools/convention/suggestImprovements.js.map +1 -1
- package/dist/tools/convention/validateCodeQuality.js +1 -1
- package/dist/tools/convention/validateCodeQuality.js.map +1 -1
- package/dist/tools/memory/autoSaveContext.js +1 -1
- package/dist/tools/memory/autoSaveContext.js.map +1 -1
- package/dist/tools/memory/createMemoryTimeline.js +27 -27
- package/dist/tools/memory/createMemoryTimeline.js.map +1 -1
- package/dist/tools/memory/deleteMemory.js +1 -1
- package/dist/tools/memory/deleteMemory.js.map +1 -1
- package/dist/tools/memory/getMemoryGraph.js +24 -24
- package/dist/tools/memory/getMemoryGraph.js.map +1 -1
- package/dist/tools/memory/getSessionContext.js +36 -36
- package/dist/tools/memory/getSessionContext.js.map +1 -1
- package/dist/tools/memory/linkMemories.js +21 -21
- package/dist/tools/memory/linkMemories.js.map +1 -1
- package/dist/tools/memory/prioritizeMemory.js +1 -1
- package/dist/tools/memory/prioritizeMemory.js.map +1 -1
- package/dist/tools/memory/restoreSessionContext.js +1 -1
- package/dist/tools/memory/restoreSessionContext.js.map +1 -1
- package/dist/tools/memory/searchMemories.js +1 -1
- package/dist/tools/memory/searchMemories.js.map +1 -1
- package/dist/tools/memory/searchMemoriesAdvanced.js +42 -42
- package/dist/tools/memory/searchMemoriesAdvanced.js.map +1 -1
- package/dist/tools/memory/startSession.js +2 -2
- package/dist/tools/memory/startSession.js.map +1 -1
- package/dist/tools/memory/updateMemory.js +1 -1
- package/dist/tools/memory/updateMemory.js.map +1 -1
- package/dist/tools/semantic/analyzeDependencyGraph.js +38 -38
- package/dist/tools/semantic/analyzeDependencyGraph.js.map +1 -1
- package/dist/tools/semantic/findReferences.js +1 -1
- package/dist/tools/semantic/findReferences.js.map +1 -1
- package/dist/tools/semantic/findSymbol.js +1 -1
- package/dist/tools/semantic/findSymbol.js.map +1 -1
- package/dist/tools/time/getCurrentTime.js +1 -1
- package/dist/tools/time/getCurrentTime.js.map +1 -1
- package/dist/tools/ui/previewUiAscii.js +2 -2
- package/dist/tools/ui/previewUiAscii.js.map +1 -1
- package/hooks/hooks.json +11 -2
- package/hooks/scripts/llm-orchestrate.js +1 -1
- package/hooks/scripts/utils.js +31 -6
- package/languages/csharp-unity.md +82 -83
- package/languages/dart-flutter.md +89 -88
- package/languages/go.md +76 -75
- package/languages/java-spring.md +85 -84
- package/languages/kotlin-android.md +64 -63
- package/languages/python-django.md +83 -82
- package/languages/python-fastapi.md +82 -81
- package/languages/rust.md +75 -74
- package/languages/swift-ios.md +73 -72
- package/languages/typescript-electron.md +70 -71
- package/languages/typescript-nextjs.md +93 -92
- package/languages/typescript-node.md +64 -63
- package/languages/typescript-nuxt.md +113 -112
- package/languages/typescript-react-native.md +82 -81
- package/languages/typescript-react.md +76 -75
- package/languages/typescript-tauri.md +74 -75
- package/languages/typescript-vue.md +73 -72
- package/package.json +1 -1
- package/skills/git-worktree.md +25 -25
- package/skills/multi-llm-orchestration.md +4 -6
- package/skills/priority-todos.md +39 -39
- package/skills/vibe-capabilities.md +2 -2
- package/vibe/config.json +2 -2
package/commands/vibe.run.md
CHANGED
|
@@ -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
|
-
│ │ [
|
|
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
|
-
│ │ [
|
|
46
|
+
│ │ [Implement] → [Verify] → ❌ Fail → [Fix] → ✅ Pass │ │
|
|
47
47
|
│ └──────────────────────────────────────────────────────────┘ │
|
|
48
48
|
│ ↓ │
|
|
49
49
|
│ ┌──────────────────────────────────────────────────────────┐ │
|
|
50
50
|
│ │ Scenario N: ... │ │
|
|
51
|
-
│ │ [
|
|
51
|
+
│ │ [Implement] → [Verify immediately] → ✅ Pass │ │
|
|
52
52
|
│ └──────────────────────────────────────────────────────────┘ │
|
|
53
53
|
│ ↓ │
|
|
54
54
|
│ ┌──────────────────────────────────────────────────────────┐ │
|
|
55
55
|
│ │ 📊 QUALITY REPORT │ │
|
|
56
56
|
│ │ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ │ │
|
|
57
|
-
│ │
|
|
58
|
-
│ │
|
|
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
|
-
|
|
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
|
|
73
|
+
**SDD approach (Scenario-based)**:
|
|
74
74
|
```
|
|
75
|
-
Scenario 1 →
|
|
76
|
-
Scenario 2 →
|
|
77
|
-
Scenario 3 →
|
|
75
|
+
Scenario 1 → Implement → Verify ✅
|
|
76
|
+
Scenario 2 → Implement → Verify ✅
|
|
77
|
+
Scenario 3 → Implement → Verify ❌ → 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
|
-
[
|
|
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
|
-
|
|
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
|
|
276
|
-
| Internal orchestration |
|
|
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
|
-
|
|
279
|
-
- `gpt
|
|
280
|
-
- `gemini
|
|
278
|
+
**User questions (Hook auto-handles):**
|
|
279
|
+
- `gpt.question` - GPT architecture consultation
|
|
280
|
+
- `gemini.question` - Gemini Q&A/consultation
|
|
281
281
|
|
|
282
|
-
**Claude
|
|
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
|
|
285
|
+
# - If systemPrompt omitted, uses default
|
|
286
|
+
# - If systemPrompt is "-", uses default and treats next argument as prompt
|
|
287
287
|
|
|
288
|
-
# GPT
|
|
289
|
-
node "$APPDATA/vibe/hooks/scripts/llm-orchestrate.js" gpt orchestrate-json "[
|
|
290
|
-
# GPT
|
|
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
|
|
294
|
-
node "$APPDATA/vibe/hooks/scripts/llm-orchestrate.js" gemini orchestrate-json "[
|
|
295
|
-
# Gemini
|
|
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
|
-
|
|
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
|
-
|
|
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:
|
|
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
|
-
-
|
|
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:
|
|
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
|
-
|
|
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
|
-
[
|
|
431
|
-
|
|
432
|
-
|
|
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
|
|
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
|
|
627
|
+
### 4. Gemini Code Review + Auto-Fix (NEW)
|
|
628
628
|
|
|
629
|
-
|
|
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]
|
|
637
|
-
-
|
|
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. [
|
|
644
|
-
│
|
|
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. [
|
|
648
|
-
│
|
|
649
|
-
│ →
|
|
647
|
+
│ 2. [Improvement] auth.controller.ts:15 │
|
|
648
|
+
│ Rate limiting not applied │
|
|
649
|
+
│ → Recommend adding login attempt limit │
|
|
650
650
|
│ │
|
|
651
|
-
│ 3. [
|
|
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
|
|
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: [
|
|
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: [
|
|
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
|
-
**
|
|
690
|
-
- `"status": "fallback"`
|
|
691
|
-
-
|
|
689
|
+
**Fallback handling:**
|
|
690
|
+
- On `"status": "fallback"` response → Skip and proceed to next step
|
|
691
|
+
- On network error → Retry 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
|
|
704
|
-
-
|
|
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
|
-
|
|
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
|
-
│ ✅
|
|
716
|
+
│ ✅ Scenarios: 4/4 passed │
|
|
717
717
|
│ │
|
|
718
718
|
│ ┌───────────────────────────────────────────────────────────┐ │
|
|
719
719
|
│ │ # │ Scenario │ Status │ Retries │ │ │
|
|
720
720
|
│ │───│───────────────────────────│────────│─────────│ │ │
|
|
721
|
-
│ │ 1 │
|
|
722
|
-
│ │ 2 │
|
|
723
|
-
│ │ 3 │
|
|
724
|
-
│ │ 4 │
|
|
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
|
-
│ 📈
|
|
727
|
+
│ 📈 Quality score: 94/100 │
|
|
728
728
|
│ │
|
|
729
729
|
│ ┌─────────────────────────────────────────────────────────┐ │
|
|
730
|
-
│ │
|
|
731
|
-
│
|
|
732
|
-
│ │
|
|
733
|
-
│ │
|
|
734
|
-
│ │
|
|
735
|
-
│ │
|
|
736
|
-
│ │
|
|
737
|
-
│ │ Gemini
|
|
730
|
+
│ │ Item │ Result │ 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
|
-
│ ⏱️
|
|
740
|
+
│ ⏱️ Total time: 3m 42s │
|
|
741
741
|
│ │
|
|
742
742
|
└─────────────────────────────────────────────────────────────────┘
|
|
743
743
|
```
|
|
744
744
|
|
|
745
|
-
|
|
746
|
-
-
|
|
747
|
-
-
|
|
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
|
-
|
|
|
762
|
-
|
|
|
763
|
-
|
|
|
764
|
-
|
|
|
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:
|
|
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
|
-
✅
|
|
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
|
-
|
|
848
|
+
❌ Then: "Invalid credentials" error message
|
|
849
|
+
Actual: "Error" returned
|
|
850
850
|
|
|
851
|
-
🔄
|
|
852
|
-
|
|
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
|
|
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
|
-
📤
|
|
880
|
-
📝 Gemini
|
|
881
|
-
1. [
|
|
882
|
-
2. [
|
|
879
|
+
📤 Sending code to Gemini...
|
|
880
|
+
📝 Gemini feedback:
|
|
881
|
+
1. [Security] Need timing attack prevention → Fixing...
|
|
882
|
+
2. [Performance] Unnecessary DB call → Fixing...
|
|
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
|
-
│ ✅
|
|
891
|
+
│ ✅ Scenarios: 4/4 passed │
|
|
892
892
|
│ │
|
|
893
893
|
│ | # | Scenario | Status | Retries | │
|
|
894
894
|
│ |---|───────────────────────|───────|─────────| │
|
|
895
|
-
│ | 1 |
|
|
896
|
-
│ | 2 |
|
|
897
|
-
│ | 3 |
|
|
898
|
-
│ | 4 |
|
|
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
|
-
│ 📈
|
|
901
|
-
│
|
|
900
|
+
│ 📈 Quality score: 94/100 │
|
|
901
|
+
│ Build: ✅ | Tests: ✅ | Types: ✅ | Gemini: ✅ (2 applied) │
|
|
902
902
|
│ │
|
|
903
|
-
│ ⏱️
|
|
903
|
+
│ ⏱️ Total time: 3m 42s │
|
|
904
904
|
└─────────────────────────────────────────────────────────────────┘
|
|
905
905
|
|
|
906
|
-
🎉
|
|
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 query → Fixed
|
|
925
|
+
2. [ARCH] Circular dependency → Fixed
|
|
926
926
|
|
|
927
|
-
✅ Auto Review
|
|
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
|
```
|