@su-record/vibe 2.5.18 → 2.5.20
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 +10 -6
- package/commands/vibe.spec.md +62 -191
- package/commands/vibe.spec.review.md +300 -0
- package/hooks/scripts/generate-brand-assets.js +3 -1
- package/package.json +1 -1
package/CLAUDE.md
CHANGED
|
@@ -40,14 +40,17 @@ Follow these standards when writing code. See `~/.claude/vibe/rules/` (global) f
|
|
|
40
40
|
## Workflow
|
|
41
41
|
|
|
42
42
|
```
|
|
43
|
-
/vibe.spec →
|
|
43
|
+
/vibe.spec → /new → /vibe.spec.review → /vibe.run → (auto) code review → ✅ Done
|
|
44
44
|
```
|
|
45
45
|
|
|
46
|
-
**
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
46
|
+
**Flow:**
|
|
47
|
+
|
|
48
|
+
1. `/vibe.spec` - Write SPEC (requirements + research + draft)
|
|
49
|
+
2. `/new` - Start new session (clean context)
|
|
50
|
+
3. `/vibe.spec.review` - GPT/Gemini review (3-round mandatory)
|
|
51
|
+
4. `/vibe.run` - Implementation + Gemini review
|
|
52
|
+
5. **(auto)** 13+ agent parallel review
|
|
53
|
+
6. **(auto)** P1/P2 issue auto-fix
|
|
51
54
|
|
|
52
55
|
## Plan Mode vs VIBE (Workflow Selection)
|
|
53
56
|
|
|
@@ -102,6 +105,7 @@ Include `ultrawork` or `ulw` keyword to activate maximum performance mode:
|
|
|
102
105
|
| Command | Description |
|
|
103
106
|
|---------|-------------|
|
|
104
107
|
| `/vibe.spec "feature-name"` | Write SPEC (PTCF structure) + parallel research |
|
|
108
|
+
| `/vibe.spec.review "feature-name"` | **GPT/Gemini review** (run in new session) |
|
|
105
109
|
| `/vibe.run "feature-name"` | Execute implementation |
|
|
106
110
|
| `/vibe.run "feature-name" ultrawork` | **Maximum performance mode** |
|
|
107
111
|
| `/vibe.verify "feature-name"` | Verification |
|
package/commands/vibe.spec.md
CHANGED
|
@@ -131,33 +131,50 @@ vibe status # Check current settings
|
|
|
131
131
|
|
|
132
132
|
## Process
|
|
133
133
|
|
|
134
|
-
### 0. Git Branch Setup (
|
|
134
|
+
### 0. Git Branch Setup (MANDATORY - Execute First!)
|
|
135
135
|
|
|
136
|
-
**CRITICAL:
|
|
136
|
+
> ⚠️ **CRITICAL: You MUST execute this step FIRST before anything else!**
|
|
137
|
+
> This is NOT optional documentation - you must RUN these git commands.
|
|
138
|
+
|
|
139
|
+
**Step 0 is BLOCKING - do not proceed to Step 1 until branch is ready.**
|
|
140
|
+
|
|
141
|
+
**Execute these commands using Bash tool:**
|
|
137
142
|
|
|
138
143
|
```bash
|
|
139
|
-
# Check current branch
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
144
|
+
# 1. Check current branch
|
|
145
|
+
git branch --show-current
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
**Then based on result:**
|
|
149
|
+
|
|
150
|
+
| Current Branch | Action |
|
|
151
|
+
|----------------|--------|
|
|
152
|
+
| `main` or `master` | **MUST** create feature branch: `git checkout -b feature/{feature-name}` |
|
|
153
|
+
| `feature/*` | Ask user: "Continue on this branch or create new?" |
|
|
154
|
+
| Other | Ask user to confirm |
|
|
155
|
+
|
|
156
|
+
**Example execution:**
|
|
157
|
+
|
|
158
|
+
```
|
|
159
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
160
|
+
🌿 GIT BRANCH SETUP
|
|
161
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
162
|
+
|
|
163
|
+
Current branch: main
|
|
164
|
+
|
|
165
|
+
Creating feature branch...
|
|
166
|
+
$ git checkout -b feature/login-page
|
|
167
|
+
|
|
168
|
+
✅ Switched to new branch: feature/login-page
|
|
169
|
+
|
|
170
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
154
171
|
```
|
|
155
172
|
|
|
156
|
-
**
|
|
157
|
-
-
|
|
158
|
-
-
|
|
159
|
-
-
|
|
160
|
-
-
|
|
173
|
+
**Branch naming rules:**
|
|
174
|
+
- Convert to lowercase: `Login Page` → `login-page`
|
|
175
|
+
- Replace spaces with hyphens
|
|
176
|
+
- Prefix with `feature/`
|
|
177
|
+
- Example: `feature/passkey-auth`, `feature/dark-mode`
|
|
161
178
|
|
|
162
179
|
### 1. Project Analysis
|
|
163
180
|
|
|
@@ -263,8 +280,11 @@ Read ~/.claude/vibe/languages/typescript-react.md
|
|
|
263
280
|
|
|
264
281
|
**→ IMMEDIATELY run these 4 Bash commands IN PARALLEL (all at once):**
|
|
265
282
|
|
|
283
|
+
**🚨 MANDATORY: Copy the EXACT path below. DO NOT modify or use alternative paths.**
|
|
284
|
+
|
|
266
285
|
```bash
|
|
267
286
|
# Cross-platform path (works on Windows/macOS/Linux)
|
|
287
|
+
# ⚠️ COPY THIS EXACTLY - DO NOT USE ~/.claude/ or any other path!
|
|
268
288
|
VIBE_SCRIPTS="$(node -p "process.env.APPDATA || require('os').homedir() + '/.config'")/vibe/hooks/scripts"
|
|
269
289
|
|
|
270
290
|
# 1. GPT: Best practices
|
|
@@ -688,7 +708,7 @@ Grades:
|
|
|
688
708
|
|
|
689
709
|
#### 7.3 Quality Gate (Auto-verification)
|
|
690
710
|
|
|
691
|
-
**Minimum 95 points required to
|
|
711
|
+
**Minimum 95 points required to complete SPEC draft**
|
|
692
712
|
|
|
693
713
|
```
|
|
694
714
|
SPEC writing complete
|
|
@@ -697,7 +717,7 @@ SPEC writing complete
|
|
|
697
717
|
↓
|
|
698
718
|
Score < 95? → Show missing items → Attempt auto-fix → Re-evaluate
|
|
699
719
|
↓
|
|
700
|
-
Score ≥ 95 →
|
|
720
|
+
Score ≥ 95 → SPEC Draft Complete → Handoff to /vibe.spec.review
|
|
701
721
|
```
|
|
702
722
|
|
|
703
723
|
#### 7.4 Auto-Fix for Low Score
|
|
@@ -711,182 +731,33 @@ If score is below 95, attempt automatic fixes:
|
|
|
711
731
|
| Missing error handling | Add common error scenarios |
|
|
712
732
|
| Missing performance targets | Apply industry standard criteria |
|
|
713
733
|
|
|
714
|
-
### 8. SPEC
|
|
715
|
-
|
|
716
|
-
**🚨 CRITICAL: YOU MUST EXECUTE ALL 3 ROUNDS. DO NOT SKIP.**
|
|
717
|
-
|
|
718
|
-
```bash
|
|
719
|
-
/vibe.spec "feature" # Default: 3 rounds (MANDATORY)
|
|
720
|
-
/vibe.spec "feature" --quick # Quick mode: 1 round only
|
|
721
|
-
```
|
|
722
|
-
|
|
723
|
-
**3-Round Review Process (MANDATORY):**
|
|
724
|
-
|
|
725
|
-
```
|
|
726
|
-
# 🚨 CRITICAL: This is a FOR loop, NOT a WHILE loop with early exit
|
|
727
|
-
# You MUST complete all 3 rounds regardless of feedback
|
|
728
|
-
|
|
729
|
-
FOR round_count IN [1, 2, 3]: # EXACTLY 3 rounds, NO early exit
|
|
730
|
-
|
|
731
|
-
print(f"━━━ Round {round_count}/3 ━━━")
|
|
732
|
-
|
|
733
|
-
# 1. Call GPT + Gemini in parallel (Bash)
|
|
734
|
-
gpt_result = Bash("node llm-orchestrate.js gpt ...")
|
|
735
|
-
gemini_result = Bash("node llm-orchestrate.js gemini ...")
|
|
736
|
-
|
|
737
|
-
# 2. Merge and apply feedback (even if "no issues", still run next round)
|
|
738
|
-
apply_feedback(gpt_result, gemini_result)
|
|
739
|
-
update_spec()
|
|
740
|
-
|
|
741
|
-
# 3. Show progress
|
|
742
|
-
print(f"✅ Round {round_count}/3 complete")
|
|
743
|
-
|
|
744
|
-
# 4. NO EARLY EXIT - continue to next round
|
|
745
|
-
# Even if both say "no issues", proceed to next round for verification
|
|
746
|
-
|
|
747
|
-
# After ALL 3 rounds complete:
|
|
748
|
-
print(f"🎉 Review complete! All 3 rounds finished.")
|
|
749
|
-
```
|
|
750
|
-
|
|
751
|
-
**🚨 ABSOLUTE RULES (NO EXCEPTIONS):**
|
|
752
|
-
1. **MUST complete Round 1** - never skip
|
|
753
|
-
2. **MUST complete Round 2** - even if Round 1 had no issues
|
|
754
|
-
3. **MUST complete Round 3** - even if Round 1 and 2 had no issues
|
|
755
|
-
4. **MUST show "Round X/3"** in output for EACH round
|
|
756
|
-
5. **NO EARLY EXIT** - all 3 rounds are mandatory for quality assurance
|
|
757
|
-
6. **VIOLATION = SPEC NOT COMPLETE** - if less than 3 rounds, SPEC is invalid
|
|
758
|
-
|
|
759
|
-
**Output format for each round:**
|
|
760
|
-
|
|
761
|
-
```
|
|
762
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
763
|
-
🔍 SPEC REVIEW - Round 1/3
|
|
764
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
765
|
-
[GPT] 3 issues found: ...
|
|
766
|
-
[Gemini] 2 issues found: ...
|
|
767
|
-
✅ Applied 5 improvements
|
|
768
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
769
|
-
|
|
770
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
771
|
-
🔍 SPEC REVIEW - Round 2/3
|
|
772
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
773
|
-
[GPT] 1 issue found: ...
|
|
774
|
-
[Gemini] 0 issues found
|
|
775
|
-
✅ Applied 1 improvement
|
|
776
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
777
|
-
|
|
778
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
779
|
-
🔍 SPEC REVIEW - Round 3/3
|
|
780
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
781
|
-
[GPT] 0 issues found
|
|
782
|
-
[Gemini] 0 issues found
|
|
783
|
-
✅ No changes needed
|
|
784
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
734
|
+
### 8. SPEC Draft Complete - Handoff to Review
|
|
785
735
|
|
|
786
|
-
|
|
787
|
-
```
|
|
736
|
+
**🚨 IMPORTANT: GPT/Gemini review is now a SEPARATE command**
|
|
788
737
|
|
|
789
|
-
|
|
738
|
+
After SPEC draft is complete (score ≥ 95), output the handoff message:
|
|
790
739
|
|
|
791
740
|
```
|
|
792
|
-
|
|
793
|
-
|
|
794
|
-
|
|
741
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
742
|
+
✅ SPEC DRAFT COMPLETE: {feature-name}
|
|
743
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
795
744
|
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
- Project context
|
|
800
|
-
|
|
801
|
-
[Step 2] Review feedback:
|
|
802
|
-
┌─────────────────────────────────────────┐
|
|
803
|
-
│ 📝 SPEC Review Feedback │
|
|
804
|
-
│ │
|
|
805
|
-
│ 1. [Missing] Error handling scenarios │
|
|
806
|
-
│ → Recommend adding "retry on network │
|
|
807
|
-
│ error" │
|
|
808
|
-
│ │
|
|
809
|
-
│ 2. [Security] Auth token expiry │
|
|
810
|
-
│ handling undefined │
|
|
811
|
-
│ → Recommend adding refresh token │
|
|
812
|
-
│ flow │
|
|
813
|
-
│ │
|
|
814
|
-
│ 3. [Edge] Concurrent login policy │
|
|
815
|
-
│ undefined │
|
|
816
|
-
│ → Need to specify existing session │
|
|
817
|
-
│ handling method │
|
|
818
|
-
└─────────────────────────────────────────┘
|
|
819
|
-
|
|
820
|
-
[Step 3] Auto-applying...
|
|
821
|
-
✅ Added error handling Phase to SPEC Task
|
|
822
|
-
✅ Added token expiry scenario to Feature
|
|
823
|
-
✅ Added concurrent login policy to Constraints
|
|
824
|
-
|
|
825
|
-
[Step 4] Re-verifying...
|
|
826
|
-
✅ Ambiguity Scan: 0 issues
|
|
827
|
-
✅ Quality Score: 95/100
|
|
828
|
-
|
|
829
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
830
|
-
✅ SPEC Review complete! 3 improvements applied
|
|
831
|
-
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
832
|
-
```
|
|
745
|
+
📋 SPEC: .claude/vibe/specs/{feature-name}.spec.md
|
|
746
|
+
📋 Feature: .claude/vibe/features/{feature-name}.feature
|
|
747
|
+
📊 Quality Score: {score}/100
|
|
833
748
|
|
|
834
|
-
|
|
749
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
750
|
+
⚠️ NEXT STEP: Run GPT/Gemini review in a NEW session
|
|
835
751
|
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
```bash
|
|
841
|
-
# Cross-platform path (works on Windows/macOS/Linux)
|
|
842
|
-
VIBE_SCRIPTS="$(node -p "process.env.APPDATA || require('os').homedir() + '/.config'")/vibe/hooks/scripts"
|
|
843
|
-
|
|
844
|
-
# GPT review (code patterns, architecture perspective)
|
|
845
|
-
node "$VIBE_SCRIPTS/llm-orchestrate.js" gpt orchestrate-json "Review SPEC for [feature-name]. Stack: [stack]. Summary: [summary]. Check: completeness, error handling, security, edge cases."
|
|
846
|
-
|
|
847
|
-
# Gemini review (latest docs, best practices perspective)
|
|
848
|
-
node "$VIBE_SCRIPTS/llm-orchestrate.js" gemini orchestrate-json "Review SPEC for [feature-name]. Stack: [stack]. Summary: [summary]. Check: completeness, error handling, security, edge cases."
|
|
752
|
+
1. Start new session: /new
|
|
753
|
+
2. Run review: /vibe.spec.review "{feature-name}"
|
|
754
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
849
755
|
```
|
|
850
756
|
|
|
851
|
-
**
|
|
852
|
-
|
|
853
|
-
-
|
|
854
|
-
-
|
|
855
|
-
- If one model fails, apply only the remaining result
|
|
856
|
-
- Don't send full SPEC, send only **key summary** (save tokens)
|
|
857
|
-
- Parse JSON response and auto-apply to SPEC
|
|
858
|
-
|
|
859
|
-
**Why parallel execution:**
|
|
860
|
-
|
|
861
|
-
| Model | Strengths |
|
|
862
|
-
|-------|-----------|
|
|
863
|
-
| GPT | Code patterns, architecture, logic validation |
|
|
864
|
-
| Gemini | Latest web info, doc search, best practices |
|
|
865
|
-
|
|
866
|
-
**Result merge:** Combine feedback from both models for more thorough review
|
|
867
|
-
|
|
868
|
-
**Review items:**
|
|
869
|
-
|
|
870
|
-
| Category | Check Point |
|
|
871
|
-
|----------|-------------|
|
|
872
|
-
| Completeness | All user flows covered? |
|
|
873
|
-
| Error Handling | Failure scenarios defined? |
|
|
874
|
-
| Security | Auth/authorization/data protection? |
|
|
875
|
-
| Edge Cases | Boundary conditions handled? |
|
|
876
|
-
| Testability | ACs verifiable? |
|
|
877
|
-
|
|
878
|
-
**Auto-apply rules:**
|
|
879
|
-
|
|
880
|
-
| Feedback Type | Action |
|
|
881
|
-
|---------------|--------|
|
|
882
|
-
| Missing scenario | Auto-add to Feature |
|
|
883
|
-
| Security considerations | Auto-add to Constraints |
|
|
884
|
-
| Edge cases | Auto-add to Task Phase |
|
|
885
|
-
| Lack of clarity | Supplement the section |
|
|
886
|
-
|
|
887
|
-
**Fallback handling:**
|
|
888
|
-
- On `"status": "fallback"` response → Skip and proceed to next step
|
|
889
|
-
- On network error → Retry once then skip
|
|
757
|
+
**Why separate session?**
|
|
758
|
+
- Prevents context bloat from affecting review accuracy
|
|
759
|
+
- Ensures GPT/Gemini paths and instructions are followed correctly
|
|
760
|
+
- Review command is short and focused
|
|
890
761
|
|
|
891
762
|
## Output (MANDATORY File Creation)
|
|
892
763
|
|
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
# /vibe.spec.review - SPEC Quality Review
|
|
2
|
+
|
|
3
|
+
Review and enhance SPEC with GPT/Gemini cross-validation.
|
|
4
|
+
|
|
5
|
+
**Purpose:** Run this command in a NEW session after `/vibe.spec` to ensure accurate review execution.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Usage
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
/vibe.spec.review "feature-name"
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
**Prerequisites:**
|
|
16
|
+
- SPEC file exists: `.claude/vibe/specs/{feature-name}.spec.md`
|
|
17
|
+
- Feature file exists: `.claude/vibe/features/{feature-name}.feature`
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Workflow
|
|
22
|
+
|
|
23
|
+
```
|
|
24
|
+
/vibe.spec "feature" → SPEC 생성 완료
|
|
25
|
+
↓
|
|
26
|
+
/new (새 세션)
|
|
27
|
+
↓
|
|
28
|
+
/vibe.spec.review "feature" → 품질 검증 + GPT/Gemini 리뷰
|
|
29
|
+
↓
|
|
30
|
+
/vibe.run "feature"
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
## Step 1: Load SPEC Files
|
|
36
|
+
|
|
37
|
+
Read the existing SPEC and Feature files:
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
.claude/vibe/specs/{feature-name}.spec.md
|
|
41
|
+
.claude/vibe/features/{feature-name}.feature
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
**Output:**
|
|
45
|
+
```
|
|
46
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
47
|
+
📋 SPEC REVIEW: {feature-name}
|
|
48
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
49
|
+
|
|
50
|
+
Loading files...
|
|
51
|
+
✅ SPEC: .claude/vibe/specs/{feature-name}.spec.md
|
|
52
|
+
✅ Feature: .claude/vibe/features/{feature-name}.feature
|
|
53
|
+
|
|
54
|
+
Extracted info:
|
|
55
|
+
- Feature: {feature description}
|
|
56
|
+
- Stack: {tech stack}
|
|
57
|
+
- Phases: {number of phases}
|
|
58
|
+
- Scenarios: {number of scenarios}
|
|
59
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
---
|
|
63
|
+
|
|
64
|
+
## Step 2: Quality Validation (95-Point Gate)
|
|
65
|
+
|
|
66
|
+
**🚨 MANDATORY: Score must be ≥ 95 to proceed**
|
|
67
|
+
|
|
68
|
+
### 2.1 Quality Checklist
|
|
69
|
+
|
|
70
|
+
| Category | Check Item | Weight |
|
|
71
|
+
|----------|------------|--------|
|
|
72
|
+
| **Completeness** | All user flows included in Task | 15% |
|
|
73
|
+
| **Completeness** | All ACs converted to Feature scenarios | 10% |
|
|
74
|
+
| **Completeness** | Error handling scenarios defined | 10% |
|
|
75
|
+
| **Specificity** | All numbers specified (timeout, limits, etc.) | 15% |
|
|
76
|
+
| **Specificity** | No ambiguous terms ("appropriate", "proper", etc.) | 10% |
|
|
77
|
+
| **Testability** | Each AC is verifiable | 10% |
|
|
78
|
+
| **Testability** | Feature scenarios have concrete Given/When/Then | 10% |
|
|
79
|
+
| **Security** | Auth/permission requirements specified | 10% |
|
|
80
|
+
| **Performance** | Response time/load requirements specified | 10% |
|
|
81
|
+
|
|
82
|
+
### 2.2 Quality Gate Loop
|
|
83
|
+
|
|
84
|
+
```python
|
|
85
|
+
max_iterations = 3
|
|
86
|
+
iteration = 0
|
|
87
|
+
|
|
88
|
+
while iteration < max_iterations:
|
|
89
|
+
iteration += 1
|
|
90
|
+
score = calculate_quality_score(spec, feature)
|
|
91
|
+
|
|
92
|
+
print(f"━━━ Quality Check [{iteration}/{max_iterations}] ━━━")
|
|
93
|
+
print(f"Score: {score}/100")
|
|
94
|
+
|
|
95
|
+
if score >= 95:
|
|
96
|
+
print("✅ Quality Gate PASSED")
|
|
97
|
+
break
|
|
98
|
+
|
|
99
|
+
# Auto-fix missing items
|
|
100
|
+
missing_items = identify_missing_items(spec)
|
|
101
|
+
for item in missing_items:
|
|
102
|
+
auto_fix(item)
|
|
103
|
+
update_spec()
|
|
104
|
+
update_feature()
|
|
105
|
+
|
|
106
|
+
print(f"✅ Applied {len(missing_items)} fixes - Re-evaluating...")
|
|
107
|
+
|
|
108
|
+
if score < 95:
|
|
109
|
+
print(f"❌ BLOCKED: Score {score} < 95 after {max_iterations} iterations")
|
|
110
|
+
print("Manual intervention required.")
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
**Output format:**
|
|
114
|
+
```
|
|
115
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
116
|
+
📊 QUALITY GATE [1/3]
|
|
117
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
118
|
+
Score: 87/100 ⚠️ BELOW THRESHOLD (95)
|
|
119
|
+
|
|
120
|
+
Missing items:
|
|
121
|
+
❌ Error handling scenarios (10%)
|
|
122
|
+
❌ Performance targets (5%)
|
|
123
|
+
|
|
124
|
+
Auto-fixing...
|
|
125
|
+
✅ Added network error handling scenario
|
|
126
|
+
✅ Added response time targets (<500ms)
|
|
127
|
+
|
|
128
|
+
Re-evaluating...
|
|
129
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
130
|
+
|
|
131
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
132
|
+
📊 QUALITY GATE [2/3]
|
|
133
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
134
|
+
Score: 96/100 ✅ PASSED
|
|
135
|
+
|
|
136
|
+
✅ Quality Gate PASSED - proceeding to GPT/Gemini review
|
|
137
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
### 2.3 Auto-Fix Rules
|
|
141
|
+
|
|
142
|
+
| Missing Item | Auto-Fix Method |
|
|
143
|
+
|--------------|-----------------|
|
|
144
|
+
| Missing AC | Auto-generate AC based on Task |
|
|
145
|
+
| Numbers not specified | Apply project defaults (timeout 30s, etc.) |
|
|
146
|
+
| Missing error handling | Add common error scenarios |
|
|
147
|
+
| Missing performance targets | Apply industry standard criteria |
|
|
148
|
+
| Missing security | Add auth/data protection requirements |
|
|
149
|
+
| Ambiguous terms | Replace with specific values |
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## Step 3: GPT/Gemini Review (3-Round Mandatory)
|
|
154
|
+
|
|
155
|
+
**🚨 CRITICAL: Execute ALL 3 rounds. DO NOT skip.**
|
|
156
|
+
|
|
157
|
+
### 3.1 Path Configuration
|
|
158
|
+
|
|
159
|
+
**🚨 MANDATORY: Copy the EXACT path below. DO NOT modify or use alternative paths.**
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
# Cross-platform path (works on Windows/macOS/Linux)
|
|
163
|
+
# ⚠️ COPY THIS EXACTLY - DO NOT USE ~/.claude/ or any other path!
|
|
164
|
+
VIBE_SCRIPTS="$(node -p "process.env.APPDATA || require('os').homedir() + '/.config'")/vibe/hooks/scripts"
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
### 3.2 Review Loop (3 Rounds)
|
|
168
|
+
|
|
169
|
+
For each round (1 to 3):
|
|
170
|
+
|
|
171
|
+
**Run GPT and Gemini in PARALLEL (2 Bash calls simultaneously):**
|
|
172
|
+
|
|
173
|
+
```bash
|
|
174
|
+
# GPT review
|
|
175
|
+
node "$VIBE_SCRIPTS/llm-orchestrate.js" gpt orchestrate-json "Review SPEC for {feature-name}. Stack: {stack}. Summary: {spec-summary}. Round {N}/3. Check: completeness, error handling, security, edge cases, performance."
|
|
176
|
+
|
|
177
|
+
# Gemini review
|
|
178
|
+
node "$VIBE_SCRIPTS/llm-orchestrate.js" gemini orchestrate-json "Review SPEC for {feature-name}. Stack: {stack}. Summary: {spec-summary}. Round {N}/3. Check: completeness, error handling, security, edge cases, performance."
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
**After each round:**
|
|
182
|
+
1. Parse JSON responses from both GPT and Gemini
|
|
183
|
+
2. Merge feedback (deduplicate, prioritize)
|
|
184
|
+
3. Auto-apply improvements to SPEC and Feature files
|
|
185
|
+
4. Continue to next round
|
|
186
|
+
|
|
187
|
+
**Output format:**
|
|
188
|
+
```
|
|
189
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
190
|
+
🔍 SPEC REVIEW - Round 1/3
|
|
191
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
192
|
+
[GPT] 2 issues found:
|
|
193
|
+
1. Missing retry logic for API calls
|
|
194
|
+
2. Token refresh flow not specified
|
|
195
|
+
|
|
196
|
+
[Gemini] 1 issue found:
|
|
197
|
+
1. Missing rate limiting specification
|
|
198
|
+
|
|
199
|
+
Merged: 3 unique issues
|
|
200
|
+
Auto-applying...
|
|
201
|
+
✅ Added retry logic (3 attempts, exponential backoff)
|
|
202
|
+
✅ Added token refresh flow to auth section
|
|
203
|
+
✅ Added rate limiting (100 req/min)
|
|
204
|
+
|
|
205
|
+
✅ Round 1 complete - 3 improvements applied
|
|
206
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
207
|
+
|
|
208
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
209
|
+
🔍 SPEC REVIEW - Round 2/3
|
|
210
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
211
|
+
[GPT] 1 issue found:
|
|
212
|
+
1. Concurrent session handling unclear
|
|
213
|
+
|
|
214
|
+
[Gemini] 0 issues found
|
|
215
|
+
|
|
216
|
+
Auto-applying...
|
|
217
|
+
✅ Added concurrent session policy
|
|
218
|
+
|
|
219
|
+
✅ Round 2 complete - 1 improvement applied
|
|
220
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
221
|
+
|
|
222
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
223
|
+
🔍 SPEC REVIEW - Round 3/3
|
|
224
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
225
|
+
[GPT] 0 issues found
|
|
226
|
+
[Gemini] 0 issues found
|
|
227
|
+
|
|
228
|
+
✅ No changes needed - SPEC is complete
|
|
229
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
---
|
|
233
|
+
|
|
234
|
+
## Step 4: Final Summary
|
|
235
|
+
|
|
236
|
+
```
|
|
237
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
238
|
+
✅ SPEC REVIEW COMPLETE: {feature-name}
|
|
239
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
240
|
+
|
|
241
|
+
Quality Score: 96/100 ✅
|
|
242
|
+
Review Rounds: 3/3 ✅
|
|
243
|
+
Total Improvements: 4
|
|
244
|
+
|
|
245
|
+
Updated files:
|
|
246
|
+
📋 .claude/vibe/specs/{feature-name}.spec.md
|
|
247
|
+
📋 .claude/vibe/features/{feature-name}.feature
|
|
248
|
+
|
|
249
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
250
|
+
|
|
251
|
+
## Next Step
|
|
252
|
+
|
|
253
|
+
/vibe.run "{feature-name}"
|
|
254
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
---
|
|
258
|
+
|
|
259
|
+
## Error Handling
|
|
260
|
+
|
|
261
|
+
### SPEC Not Found
|
|
262
|
+
```
|
|
263
|
+
❌ ERROR: SPEC file not found
|
|
264
|
+
|
|
265
|
+
Expected: .claude/vibe/specs/{feature-name}.spec.md
|
|
266
|
+
|
|
267
|
+
Please run /vibe.spec "{feature-name}" first to create the SPEC.
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
### Feature Not Found
|
|
271
|
+
```
|
|
272
|
+
❌ ERROR: Feature file not found
|
|
273
|
+
|
|
274
|
+
Expected: .claude/vibe/features/{feature-name}.feature
|
|
275
|
+
|
|
276
|
+
Please run /vibe.spec "{feature-name}" first to create the Feature file.
|
|
277
|
+
```
|
|
278
|
+
|
|
279
|
+
### GPT/Gemini Call Failed
|
|
280
|
+
```
|
|
281
|
+
⚠️ WARNING: {GPT|Gemini} call failed
|
|
282
|
+
|
|
283
|
+
Error: {error message}
|
|
284
|
+
|
|
285
|
+
Continuing with {other model} results only...
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
---
|
|
289
|
+
|
|
290
|
+
## Quick Mode
|
|
291
|
+
|
|
292
|
+
For faster iteration (1 round only):
|
|
293
|
+
|
|
294
|
+
```bash
|
|
295
|
+
/vibe.spec.review "feature-name" --quick
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
---
|
|
299
|
+
|
|
300
|
+
ARGUMENTS: $ARGUMENTS
|
|
@@ -52,7 +52,9 @@ function getGeminiApiKey() {
|
|
|
52
52
|
}
|
|
53
53
|
|
|
54
54
|
async function generateImageWithGemini(prompt, apiKey) {
|
|
55
|
-
|
|
55
|
+
// Nano Banana (Gemini 2.5 Flash Image) - fast image generation for icons/logos
|
|
56
|
+
// For professional assets, use gemini-3-pro-image-preview (Nano Banana Pro)
|
|
57
|
+
const url = `https://generativelanguage.googleapis.com/v1beta/models/gemini-2.5-flash-image:generateContent?key=${apiKey}`;
|
|
56
58
|
|
|
57
59
|
const requestBody = {
|
|
58
60
|
contents: [{
|