@su-record/vibe 2.3.1 β†’ 2.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (124) hide show
  1. package/.claude/settings.json +35 -35
  2. package/.claude/settings.local.json +30 -24
  3. package/.claude/vibe/constitution.md +184 -184
  4. package/.claude/vibe/rules/core/communication-guide.md +104 -104
  5. package/.claude/vibe/rules/core/development-philosophy.md +52 -52
  6. package/.claude/vibe/rules/core/quick-start.md +120 -120
  7. package/.claude/vibe/rules/languages/dart-flutter.md +509 -509
  8. package/.claude/vibe/rules/languages/go.md +396 -396
  9. package/.claude/vibe/rules/languages/java-spring.md +586 -586
  10. package/.claude/vibe/rules/languages/kotlin-android.md +491 -491
  11. package/.claude/vibe/rules/languages/python-django.md +371 -371
  12. package/.claude/vibe/rules/languages/python-fastapi.md +386 -386
  13. package/.claude/vibe/rules/languages/rust.md +425 -425
  14. package/.claude/vibe/rules/languages/swift-ios.md +516 -516
  15. package/.claude/vibe/rules/languages/typescript-nextjs.md +441 -441
  16. package/.claude/vibe/rules/languages/typescript-node.md +375 -375
  17. package/.claude/vibe/rules/languages/typescript-nuxt.md +521 -521
  18. package/.claude/vibe/rules/languages/typescript-react-native.md +446 -446
  19. package/.claude/vibe/rules/languages/typescript-react.md +525 -525
  20. package/.claude/vibe/rules/languages/typescript-vue.md +353 -353
  21. package/.claude/vibe/rules/quality/bdd-contract-testing.md +388 -388
  22. package/.claude/vibe/rules/quality/checklist.md +276 -276
  23. package/.claude/vibe/rules/quality/testing-strategy.md +437 -437
  24. package/.claude/vibe/rules/standards/anti-patterns.md +369 -369
  25. package/.claude/vibe/rules/standards/code-structure.md +291 -291
  26. package/.claude/vibe/rules/standards/complexity-metrics.md +312 -312
  27. package/.claude/vibe/rules/standards/naming-conventions.md +198 -198
  28. package/.claude/vibe/setup.sh +31 -31
  29. package/.claude/vibe/templates/constitution-template.md +184 -184
  30. package/.claude/vibe/templates/contract-backend-template.md +517 -517
  31. package/.claude/vibe/templates/contract-frontend-template.md +594 -594
  32. package/.claude/vibe/templates/feature-template.md +96 -96
  33. package/.claude/vibe/templates/spec-template.md +199 -199
  34. package/CLAUDE.md +345 -345
  35. package/LICENSE +21 -21
  36. package/README.md +817 -744
  37. package/agents/compounder.md +261 -261
  38. package/agents/diagrammer.md +178 -178
  39. package/agents/e2e-tester.md +266 -266
  40. package/agents/explorer.md +48 -48
  41. package/agents/implementer.md +53 -53
  42. package/agents/research/best-practices-agent.md +139 -139
  43. package/agents/research/codebase-patterns-agent.md +147 -147
  44. package/agents/research/framework-docs-agent.md +181 -181
  45. package/agents/research/security-advisory-agent.md +167 -167
  46. package/agents/review/architecture-reviewer.md +107 -107
  47. package/agents/review/complexity-reviewer.md +116 -116
  48. package/agents/review/data-integrity-reviewer.md +88 -88
  49. package/agents/review/git-history-reviewer.md +103 -103
  50. package/agents/review/performance-reviewer.md +86 -86
  51. package/agents/review/python-reviewer.md +152 -152
  52. package/agents/review/rails-reviewer.md +139 -139
  53. package/agents/review/react-reviewer.md +144 -144
  54. package/agents/review/security-reviewer.md +80 -80
  55. package/agents/review/simplicity-reviewer.md +140 -140
  56. package/agents/review/test-coverage-reviewer.md +116 -116
  57. package/agents/review/typescript-reviewer.md +127 -127
  58. package/agents/searcher.md +54 -54
  59. package/agents/simplifier.md +119 -119
  60. package/agents/tester.md +49 -49
  61. package/agents/ui-previewer.md +137 -137
  62. package/commands/vibe.analyze.md +260 -199
  63. package/commands/vibe.reason.md +223 -183
  64. package/commands/vibe.review.md +213 -160
  65. package/commands/vibe.run.md +842 -836
  66. package/commands/vibe.spec.md +405 -383
  67. package/commands/vibe.utils.md +101 -101
  68. package/commands/vibe.verify.md +282 -241
  69. package/dist/cli/index.d.ts.map +1 -1
  70. package/dist/cli/index.js +422 -385
  71. package/dist/cli/index.js.map +1 -1
  72. package/dist/lib/MemoryManager.d.ts.map +1 -1
  73. package/dist/lib/MemoryManager.js +119 -114
  74. package/dist/lib/MemoryManager.js.map +1 -1
  75. package/dist/lib/PythonParser.js +108 -108
  76. package/dist/lib/gemini-mcp.js +15 -15
  77. package/dist/lib/gemini-oauth.js +35 -35
  78. package/dist/lib/gpt-mcp.js +17 -17
  79. package/dist/lib/gpt-oauth.js +44 -44
  80. package/dist/orchestrator/agentDiscovery.d.ts +18 -0
  81. package/dist/orchestrator/agentDiscovery.d.ts.map +1 -0
  82. package/dist/orchestrator/agentDiscovery.js +174 -0
  83. package/dist/orchestrator/agentDiscovery.js.map +1 -0
  84. package/dist/orchestrator/backgroundAgent.d.ts +31 -0
  85. package/dist/orchestrator/backgroundAgent.d.ts.map +1 -0
  86. package/dist/orchestrator/backgroundAgent.js +325 -0
  87. package/dist/orchestrator/backgroundAgent.js.map +1 -0
  88. package/dist/orchestrator/index.d.ts +58 -0
  89. package/dist/orchestrator/index.d.ts.map +1 -0
  90. package/dist/orchestrator/index.js +115 -0
  91. package/dist/orchestrator/index.js.map +1 -0
  92. package/dist/orchestrator/orchestrator.d.ts +82 -0
  93. package/dist/orchestrator/orchestrator.d.ts.map +1 -0
  94. package/dist/orchestrator/orchestrator.js +257 -0
  95. package/dist/orchestrator/orchestrator.js.map +1 -0
  96. package/dist/orchestrator/parallelResearch.d.ts +19 -0
  97. package/dist/orchestrator/parallelResearch.d.ts.map +1 -0
  98. package/dist/orchestrator/parallelResearch.js +214 -0
  99. package/dist/orchestrator/parallelResearch.js.map +1 -0
  100. package/dist/orchestrator/types.d.ts +109 -0
  101. package/dist/orchestrator/types.d.ts.map +1 -0
  102. package/dist/orchestrator/types.js +5 -0
  103. package/dist/orchestrator/types.js.map +1 -0
  104. package/dist/tools/analytics/getUsageAnalytics.js +12 -12
  105. package/dist/tools/index.d.ts +50 -0
  106. package/dist/tools/index.d.ts.map +1 -0
  107. package/dist/tools/index.js +61 -0
  108. package/dist/tools/index.js.map +1 -0
  109. package/dist/tools/memory/createMemoryTimeline.js +10 -10
  110. package/dist/tools/memory/getMemoryGraph.js +12 -12
  111. package/dist/tools/memory/getSessionContext.js +9 -9
  112. package/dist/tools/memory/linkMemories.js +14 -14
  113. package/dist/tools/memory/listMemories.js +4 -4
  114. package/dist/tools/memory/recallMemory.js +4 -4
  115. package/dist/tools/memory/saveMemory.js +4 -4
  116. package/dist/tools/memory/searchMemoriesAdvanced.js +22 -22
  117. package/dist/tools/planning/generatePrd.js +46 -46
  118. package/dist/tools/prompt/enhancePromptGemini.js +160 -160
  119. package/dist/tools/reasoning/applyReasoningFramework.js +56 -56
  120. package/dist/tools/semantic/analyzeDependencyGraph.js +12 -12
  121. package/hooks/hooks.json +121 -103
  122. package/package.json +75 -69
  123. package/skills/git-worktree.md +178 -178
  124. package/skills/priority-todos.md +236 -236
@@ -1,836 +1,842 @@
1
- ---
2
- description: Execute implementation from SPEC
3
- argument-hint: "feature name" or --phase N
4
- ---
5
-
6
- # /vibe.run
7
-
8
- Execute **Scenario-Driven Implementation** with automatic quality verification.
9
-
10
- > **핡심 원칙**: μ‹œλ‚˜λ¦¬μ˜€κ°€ κ³§ κ΅¬ν˜„ λ‹¨μœ„μ΄μž 검증 κΈ°μ€€. λͺ¨λ“  μ‹œλ‚˜λ¦¬μ˜€ 톡과 = ν’ˆμ§ˆ 보μž₯.
11
-
12
- ## Usage
13
-
14
- ```
15
- /vibe.run "feature-name" # Full implementation
16
- /vibe.run "feature-name" --phase 1 # Specific Phase only
17
- /vibe.run "feature-name" ultrawork # ULTRAWORK mode (recommended)
18
- /vibe.run "feature-name" ulw # Short alias for ultrawork
19
- ```
20
-
21
- ---
22
-
23
- ## **Scenario-Driven Development (SDD)**
24
-
25
- > λΉ„κ°œλ°œμžλ„ ν’ˆμ§ˆμ„ μ‹ λ’°ν•  수 μžˆλ„λ‘, **μ‹œλ‚˜λ¦¬μ˜€ = κ΅¬ν˜„ = 검증**을 μžλ™ν™”
26
-
27
- ### 핡심 흐름
28
-
29
- ```
30
- β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
31
- β”‚ SCENARIO-DRIVEN IMPLEMENTATION β”‚
32
- β”‚ β”‚
33
- β”‚ Feature 파일 λ‘œλ“œ β”‚
34
- β”‚ ↓ β”‚
35
- β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
36
- β”‚ β”‚ Scenario 1: Happy Path β”‚ β”‚
37
- β”‚ β”‚ Given β†’ When β†’ Then β”‚ β”‚
38
- β”‚ β”‚ ↓ β”‚ β”‚
39
- β”‚ β”‚ [κ΅¬ν˜„] β†’ [μ¦‰μ‹œ 검증] β†’ βœ… Pass β”‚ β”‚
40
- β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
41
- β”‚ ↓ β”‚
42
- β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
43
- β”‚ β”‚ Scenario 2: Edge Case β”‚ β”‚
44
- β”‚ β”‚ Given β†’ When β†’ Then β”‚ β”‚
45
- β”‚ β”‚ ↓ β”‚ β”‚
46
- β”‚ β”‚ [κ΅¬ν˜„] β†’ [μ¦‰μ‹œ 검증] β†’ ❌ Fail β†’ [μˆ˜μ •] β†’ βœ… Pass β”‚ β”‚
47
- β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
48
- β”‚ ↓ β”‚
49
- β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
50
- β”‚ β”‚ Scenario N: ... β”‚ β”‚
51
- β”‚ β”‚ [κ΅¬ν˜„] β†’ [μ¦‰μ‹œ 검증] β†’ βœ… Pass β”‚ β”‚
52
- β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
53
- β”‚ ↓ β”‚
54
- β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
55
- β”‚ β”‚ πŸ“Š QUALITY REPORT β”‚ β”‚
56
- β”‚ β”‚ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ β”‚ β”‚
57
- β”‚ β”‚ μ‹œλ‚˜λ¦¬μ˜€: 5/5 톡과 βœ… β”‚ β”‚
58
- β”‚ β”‚ ν’ˆμ§ˆ 점수: 94/100 β”‚ β”‚
59
- β”‚ β”‚ λΉŒλ“œ: βœ… | ν…ŒμŠ€νŠΈ: βœ… β”‚ β”‚
60
- β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
61
- β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
62
- ```
63
-
64
- ### μ‹œλ‚˜λ¦¬μ˜€ = κ΅¬ν˜„ λ‹¨μœ„
65
-
66
- **κΈ°μ‘΄ 방식 (Phase 기반)**:
67
- ```
68
- Phase 1 β†’ Phase 2 β†’ Phase 3 β†’ ... β†’ λ§ˆμ§€λ§‰μ— 검증
69
- ↓
70
- "μ–΄λ””μ„œ 잘λͺ»λμ§€?"
71
- ```
72
-
73
- **SDD 방식 (Scenario 기반)**:
74
- ```
75
- Scenario 1 β†’ κ΅¬ν˜„ β†’ 검증 βœ…
76
- Scenario 2 β†’ κ΅¬ν˜„ β†’ 검증 βœ…
77
- Scenario 3 β†’ κ΅¬ν˜„ β†’ 검증 ❌ β†’ μˆ˜μ • β†’ βœ…
78
- ...
79
- 전체 톡과 = ν’ˆμ§ˆ 보μž₯
80
- ```
81
-
82
- ### 검증 μžλ™ν™”
83
-
84
- 각 μ‹œλ‚˜λ¦¬μ˜€ κ΅¬ν˜„ ν›„ **μžλ™ 검증**:
85
-
86
- | 검증 ν•­λͺ© | μžλ™ 체크 |
87
- |-----------|-----------|
88
- | Given (μ „μ œμ‘°κ±΄) | μƒνƒœ/데이터 μ€€λΉ„ 확인 |
89
- | When (행동) | κΈ°λŠ₯ μ‹€ν–‰ κ°€λŠ₯ μ—¬λΆ€ |
90
- | Then (κ²°κ³Ό) | μ˜ˆμƒ κ²°κ³Ό 일치 μ—¬λΆ€ |
91
- | μ½”λ“œ ν’ˆμ§ˆ | λ³΅μž‘λ„, μŠ€νƒ€μΌ, λ³΄μ•ˆ |
92
-
93
- ### μ‹€νŒ¨ μ‹œ μžλ™ μˆ˜μ •
94
-
95
- ```
96
- Scenario 검증 μ‹€νŒ¨
97
- ↓
98
- [원인 뢄석] - μ–΄λ–€ Then 쑰건이 μ‹€νŒ¨?
99
- ↓
100
- [μˆ˜μ • κ΅¬ν˜„] - ν•΄λ‹Ή λΆ€λΆ„λ§Œ μˆ˜μ •
101
- ↓
102
- [μž¬κ²€μ¦] - λ‹€μ‹œ 체크
103
- ↓
104
- 톡과할 λ•ŒκΉŒμ§€ 반볡 (μ΅œλŒ€ 3회)
105
- ```
106
-
107
- ---
108
-
109
- ## **ULTRAWORK Mode** (ulw)
110
-
111
- > Include `ultrawork` or `ulw` in your command to activate **maximum performance mode**.
112
-
113
- ### What ULTRAWORK Enables
114
-
115
- When you include `ultrawork` (or `ulw`), ALL of these activate automatically:
116
-
117
- | Feature | Description |
118
- |---------|-------------|
119
- | **Parallel Exploration** | 3+ Task(haiku) agents run simultaneously |
120
- | **Boulder Loop** | Auto-continues until ALL phases complete |
121
- | **Context Compression** | Aggressive auto-save at 70%+ context |
122
- | **No Pause** | Doesn't wait for confirmation between phases |
123
- | **External LLMs** | Auto-consults GPT/Gemini if enabled |
124
- | **Error Recovery** | Auto-retries on failure (up to 3 times) |
125
-
126
- ### Boulder Loop (Inspired by Sisyphus)
127
-
128
- Like Sisyphus rolling the boulder, ULTRAWORK **keeps going until done**:
129
-
130
- ```
131
- β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
132
- β”‚ BOULDER LOOP (ultrawork) β”‚
133
- β”‚ β”‚
134
- β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
135
- β”‚ β”‚ Phase 1 │───→│ Phase 2 │───→│ Phase 3 │───→│ Phase N β”‚ β”‚
136
- β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
137
- β”‚ β”‚ β”‚ β”‚ β”‚ β”‚
138
- β”‚ ↓ ↓ ↓ ↓ β”‚
139
- β”‚ [Parallel] [Parallel] [Parallel] [Parallel] β”‚
140
- β”‚ [Implement] [Implement] [Implement] [Implement] β”‚
141
- β”‚ [Test] [Test] [Test] [Test] β”‚
142
- β”‚ β”‚ β”‚ β”‚ β”‚ β”‚
143
- β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
144
- β”‚ β”‚ β”‚
145
- β”‚ ↓ β”‚
146
- β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
147
- β”‚ β”‚ ALL DONE? β”‚ β”‚
148
- β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
149
- β”‚ β”‚ β”‚ β”‚
150
- β”‚ NO YES β”‚
151
- β”‚ β”‚ β”‚ β”‚
152
- β”‚ ↓ ↓ β”‚
153
- β”‚ [Continue] [πŸŽ‰ Complete!] β”‚
154
- β”‚ β”‚
155
- β”‚ NO STOPPING until acceptance criteria met or error limit hit β”‚
156
- β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
157
- ```
158
-
159
- ### ULTRAWORK Example
160
-
161
- ```
162
- User: /vibe.run "brick-game" ultrawork
163
-
164
- Claude:
165
- πŸš€ ULTRAWORK MODE ACTIVATED
166
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
167
-
168
- πŸ“„ SPEC: .claude/vibe/specs/brick-game.md
169
- 🎯 4 Phases detected
170
- ⚑ Boulder Loop: ENABLED (will continue until all phases complete)
171
- πŸ”„ Auto-retry: ON (max 3 per phase)
172
- πŸ’Ύ Context compression: AGGRESSIVE
173
-
174
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
175
- πŸ”οΈ BOULDER ROLLING... Phase 1/4
176
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
177
-
178
- ⚑ [PARALLEL] Launching 3 exploration agents...
179
- βœ… Exploration complete (7.2s)
180
- πŸ”¨ Implementing...
181
- βœ… Phase 1 complete
182
-
183
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
184
- πŸ”οΈ BOULDER ROLLING... Phase 2/4
185
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
186
-
187
- ⚑ [PARALLEL] Launching 3 exploration agents...
188
- βœ… Exploration complete (6.8s)
189
- πŸ”¨ Implementing...
190
- ❌ Test failed: collision detection
191
- πŸ”„ Auto-retry 1/3...
192
- πŸ”¨ Fixing...
193
- βœ… Phase 2 complete
194
-
195
- [...continues automatically...]
196
-
197
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
198
- πŸŽ‰ BOULDER REACHED THE TOP!
199
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
200
-
201
- βœ… All 4 phases complete
202
- βœ… All acceptance criteria passed
203
- βœ… Build succeeded
204
- βœ… Tests passed
205
-
206
- ⏱️ Total: 8m 24s
207
- πŸ“Š Retries: 2
208
- πŸ’Ύ Context saved: 3 checkpoints
209
- ```
210
-
211
- ### Normal vs ULTRAWORK Comparison
212
-
213
- | Aspect | Normal | ULTRAWORK |
214
- |--------|--------|-----------|
215
- | Phase transition | May pause | Auto-continues |
216
- | On error | Reports and stops | Auto-retries (3x) |
217
- | Context 70%+ | Warning only | Auto-compress + save |
218
- | Exploration | Sequential possible | FORCED parallel |
219
- | Completion | Phase-by-phase | Until ALL done |
220
-
221
- ---
222
-
223
- ## Rules Reference
224
-
225
- **Must follow `.claude/vibe/rules/`:**
226
- - `core/development-philosophy.md` - Surgical precision, modify only requested scope
227
- - `core/quick-start.md` - Korean, DRY, SRP, YAGNI
228
- - `standards/complexity-metrics.md` - Functions ≀20 lines, nesting ≀3 levels
229
- - `quality/checklist.md` - Code quality checklist
230
-
231
- ## Description
232
-
233
- Read PTCF structured SPEC document and execute implementation immediately.
234
-
235
- > **PLAN, TASKS documents unnecessary** - SPEC is the executable prompt
236
-
237
- ## Model Orchestration
238
-
239
- Automatically select optimal model based on task type:
240
-
241
- ```
242
- β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
243
- β”‚ Opus 4.5 (Orchestrator) β”‚
244
- β”‚ - Coordinate overall flow β”‚
245
- β”‚ - Final decisions/review β”‚
246
- β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
247
- β”‚
248
- β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
249
- ↓ ↓ ↓
250
- β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”
251
- β”‚ Haiku β”‚ β”‚ Sonnet β”‚ β”‚ Haiku β”‚
252
- β”‚(Explore)β”‚ β”‚ (Impl) β”‚ β”‚ (Test) β”‚
253
- β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
254
- ```
255
-
256
- ### Task Calls by Role
257
-
258
- | Task Type | Model | Task Parameter |
259
- |-----------|-------|----------------|
260
- | Codebase exploration | Haiku 4.5 | `model: "haiku"` |
261
- | Core implementation | Sonnet 4 | `model: "sonnet"` |
262
- | Test writing | Haiku 4.5 | `model: "haiku"` |
263
- | Architecture decisions | Opus 4.5 | Main session |
264
- | Final review | Opus 4.5 | Main session |
265
-
266
- ### External LLM Usage (When Enabled)
267
-
268
- When external LLMs are enabled in `.claude/vibe/config.json`:
269
-
270
- | Role | Model | Condition |
271
- |------|-------|-----------|
272
- | Architecture/Debugging | GPT 5.2 | When `vibe gpt <key>` executed |
273
- | UI/UX Design, Exploration | Gemini 2.5/3 | When `vibe gemini --auth` executed |
274
-
275
- When external LLM enabled, automatically called via MCP:
276
- - `mcp__vibe-gpt__chat` - GPT 5.2 architecture consultation
277
- - `mcp__vibe-gemini__gemini_chat` - Gemini 질문/상담
278
- - `mcp__vibe-gemini__gemini_analyze_code` - μ½”λ“œ 뢄석
279
- - `mcp__vibe-gemini__gemini_review_ui` - UI/UX 리뷰
280
- - `mcp__vibe-gemini__gemini_quick_ask` - λΉ λ₯Έ 질문 (νƒμƒ‰μš©)
281
-
282
- ### External LLM Fallback
283
-
284
- **IMPORTANT**: When Gemini/GPT MCP returns `"status": "fallback"`, Claude MUST handle the task directly:
285
-
286
- ```json
287
- {
288
- "status": "fallback",
289
- "reason": "rate_limit", // or "auth_error"
290
- "message": "Gemini API ν• λ‹ΉλŸ‰ 초과. Claudeκ°€ 직접 μ²˜λ¦¬ν•΄μ£Όμ„Έμš”."
291
- }
292
- ```
293
-
294
- **Fallback behavior**:
295
- - Do NOT retry the external LLM call
296
- - Claude handles the task using its own capabilities
297
- - Continue with the implementation without interruption
298
- - Log the fallback but don't block progress
299
-
300
- ## Semantic Code Analysis (hi-ai MCP)
301
-
302
- Use hi-ai MCP semantic tools to accurately understand codebase before implementation:
303
-
304
- | MCP Tool | Purpose | When Used |
305
- |----------|---------|-----------|
306
- | `vibe_find_symbol` | Find symbol definitions | Locate class/function |
307
- | `vibe_find_references` | Find references | Analyze impact scope |
308
- | `vibe_analyze_complexity` | Analyze complexity | Determine refactoring need |
309
- | `vibe_validate_code_quality` | Validate quality | Verify post-implementation quality |
310
-
311
- ### Semantic Analysis Flow
312
-
313
- ```
314
- Start Implementation
315
- β”‚
316
- β”œβ”€β†’ find_symbol: Locate exact position of function/class to modify
317
- β”‚
318
- β”œβ”€β†’ find_references: Check all places using that symbol
319
- β”‚
320
- β”œβ”€β†’ analyze_complexity: Check existing code complexity
321
- β”‚
322
- ↓
323
- Implementation (with accurate understanding of impact scope)
324
- β”‚
325
- ↓
326
- validate_code_quality: Verify quality after implementation
327
- ```
328
-
329
- ### Context Management (Session Continuity)
330
-
331
- | MCP Tool | Purpose |
332
- |----------|---------|
333
- | `vibe_start_session` | Start session, restore previous context |
334
- | `vibe_auto_save_context` | Auto-save current state |
335
- | `vibe_restore_session_context` | Restore previous session context |
336
- | `vibe_save_memory` | Save important decisions/patterns |
337
-
338
- **On session start**: `vibe_start_session` auto-restores previous context
339
- **On session end**: Hook auto-executes `vibe_auto_save_context`
340
-
341
- ## Process
342
-
343
- ### 1. Load SPEC + Feature
344
-
345
- ```
346
- πŸ“„ .claude/vibe/specs/{feature-name}.md β†’ SPEC (ꡬ쑰, μ œμ•½, μ»¨ν…μŠ€νŠΈ)
347
- πŸ“„ .claude/vibe/features/{feature-name}.feature β†’ Feature (μ‹œλ‚˜λ¦¬μ˜€ = κ΅¬ν˜„ λ‹¨μœ„)
348
- ```
349
-
350
- **Feature 파일이 μ—†μœΌλ©΄ μ—λŸ¬**:
351
- ```
352
- ❌ Feature 파일이 μ—†μŠ΅λ‹ˆλ‹€.
353
- λ¨Όμ € /vibe.spec "{feature-name}"을 μ‹€ν–‰ν•˜μ„Έμš”.
354
- ```
355
-
356
- ### 2. Scenario λͺ©λ‘ μΆ”μΆœ
357
-
358
- Feature νŒŒμΌμ—μ„œ λͺ¨λ“  Scenario μΆ”μΆœ:
359
-
360
- ```markdown
361
- ## Scenarios to Implement
362
-
363
- | # | Scenario | Status |
364
- |---|----------|--------|
365
- | 1 | μœ νš¨ν•œ 둜그인 성곡 | ⬜ |
366
- | 2 | 잘λͺ»λœ λΉ„λ°€λ²ˆν˜Έ μ—λŸ¬ | ⬜ |
367
- | 3 | 이메일 ν˜•μ‹ 검증 | ⬜ |
368
- | 4 | λΉ„λ°€λ²ˆν˜Έ μ°ΎκΈ° 링크 | ⬜ |
369
-
370
- Total: 4 scenarios
371
- ```
372
-
373
- ### 3. Scenario-by-Scenario Implementation (핡심)
374
-
375
- **각 μ‹œλ‚˜λ¦¬μ˜€λ§ˆλ‹€**:
376
-
377
- ```
378
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
379
- 🎯 Scenario 1/4: μœ νš¨ν•œ 둜그인 성곡
380
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
381
-
382
- Given: μ‚¬μš©μžκ°€ λ“±λ‘λ˜μ–΄ μžˆλ‹€
383
- When: μœ νš¨ν•œ 이메일과 λΉ„λ°€λ²ˆν˜Έλ‘œ 둜그인
384
- Then: 둜그인 성곡 + JWT 토큰 λ°˜ν™˜
385
-
386
- [Step 1] κ΅¬ν˜„ 뢄석...
387
- - ν•„μš”ν•œ 파일: auth.service.ts, login.controller.ts
388
- - κ΄€λ ¨ μ½”λ“œ 탐색 쀑...
389
-
390
- [Step 2] κ΅¬ν˜„ 쀑...
391
- βœ… auth.service.ts - login() λ©”μ„œλ“œ μΆ”κ°€
392
- βœ… login.controller.ts - POST /login μ—”λ“œν¬μΈνŠΈ
393
-
394
- [Step 3] 검증 쀑...
395
- βœ… Given: ν…ŒμŠ€νŠΈ μ‚¬μš©μž 생성 κ°€λŠ₯
396
- βœ… When: 둜그인 API 호좜 성곡
397
- βœ… Then: JWT 토큰 λ°˜ν™˜ 확인
398
-
399
- βœ… Scenario 1 톡과!
400
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
401
- ```
402
-
403
- **μ‹€νŒ¨ μ‹œ**:
404
-
405
- ```
406
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
407
- 🎯 Scenario 2/4: 잘λͺ»λœ λΉ„λ°€λ²ˆν˜Έ μ—λŸ¬
408
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
409
-
410
- [Step 3] 검증 쀑...
411
- βœ… Given: ν…ŒμŠ€νŠΈ μ‚¬μš©μž 쑴재
412
- βœ… When: 잘λͺ»λœ λΉ„λ°€λ²ˆν˜Έλ‘œ 둜그인 μ‹œλ„
413
- ❌ Then: "Invalid credentials" μ—λŸ¬ λ©”μ‹œμ§€
414
- μ‹€μ œ: "Error occurred" λ°˜ν™˜λ¨
415
-
416
- [μžλ™ μˆ˜μ • 1/3]
417
- 원인: μ—λŸ¬ λ©”μ‹œμ§€ ν•˜λ“œμ½”λ”© μ•ˆλ¨
418
- μˆ˜μ •: auth.service.ts line 42
419
-
420
- [μž¬κ²€μ¦]
421
- βœ… Then: "Invalid credentials" μ—λŸ¬ λ©”μ‹œμ§€
422
-
423
- βœ… Scenario 2 톡과! (μˆ˜μ • 1회)
424
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
425
- ```
426
-
427
- ---
428
-
429
- ## **CRITICAL: Parallel Sub-Agent Execution**
430
-
431
- > **MUST USE PARALLEL TASK CALLS** - This is REQUIRED, not optional.
432
- > Sequential execution when parallel is possible = VIOLATION of this workflow.
433
-
434
- ### Mandatory Parallel Exploration (Phase Start)
435
-
436
- **BEFORE any implementation, you MUST launch these Task calls IN PARALLEL (single message, multiple tool calls):**
437
-
438
- ```
439
- β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
440
- β”‚ STEP 1: PARALLEL EXPLORATION (REQUIRED) β”‚
441
- β”‚ β”‚
442
- β”‚ Launch ALL of these in ONE message: β”‚
443
- β”‚ β”‚
444
- β”‚ Task(haiku) ─┬─→ "Analyze related files in <context>" β”‚
445
- β”‚ β”‚ β”‚
446
- β”‚ Task(haiku) ─┼─→ "Check dependencies and imports" β”‚
447
- β”‚ β”‚ β”‚
448
- β”‚ Task(haiku) ─┴─→ "Find existing patterns and conventions" β”‚
449
- β”‚ β”‚
450
- β”‚ [If GPT enabled] + MCP(vibe-gpt): Architecture review β”‚
451
- β”‚ [If Gemini enabled] + MCP(vibe-gemini): UI/UX consultation β”‚
452
- β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
453
- β”‚
454
- ↓ (wait for all to complete)
455
- β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
456
- β”‚ STEP 2: SYNTHESIZE (Opus) β”‚
457
- β”‚ - Review all exploration results β”‚
458
- β”‚ - Decide implementation approach β”‚
459
- β”‚ - Identify files to modify/create β”‚
460
- β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
461
- β”‚
462
- ↓
463
- β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
464
- β”‚ STEP 3: IMPLEMENT + BACKGROUND AGENTS (PARALLEL) β”‚
465
- β”‚ β”‚
466
- β”‚ Main Agent (sonnet): β”‚
467
- β”‚ └─→ Execute current phase implementation β”‚
468
- β”‚ β”‚
469
- β”‚ Background Agents (haiku, run_in_background=true): β”‚
470
- β”‚ β”œβ”€β†’ Task: "Prepare Phase N+1 - analyze required files" β”‚
471
- β”‚ β”œβ”€β†’ Task: "Pre-generate test cases for current implementation" β”‚
472
- β”‚ └─→ Task: "Search for related types/interfaces needed" β”‚
473
- β”‚ β”‚
474
- β”‚ [ULTRAWORK] All 4 agents run simultaneously! β”‚
475
- β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
476
- β”‚
477
- ↓ (main completes, check backgrounds)
478
- β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
479
- β”‚ STEP 4: TEST + PHASE PIPELINING β”‚
480
- β”‚ β”‚
481
- β”‚ Current Phase: β”‚
482
- β”‚ └─→ Task(haiku): Write tests using pre-generated cases β”‚
483
- β”‚ β”‚
484
- β”‚ Next Phase Prep (from background results): β”‚
485
- β”‚ └─→ Already have file analysis, ready to start immediately β”‚
486
- β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
487
- ```
488
-
489
- ### Parallel Task Call Pattern (MUST FOLLOW)
490
-
491
- **Correct - Single message with multiple parallel Tasks:**
492
- ```
493
- <message>
494
- Task(haiku, "Analyze src/components/ for existing patterns")
495
- Task(haiku, "Check package.json dependencies")
496
- Task(haiku, "Find usage of similar features in codebase")
497
- </message>
498
- β†’ All 3 run simultaneously, ~3x faster
499
- ```
500
-
501
- **WRONG - Sequential calls (DO NOT DO THIS):**
502
- ```
503
- <message>Task(haiku, "Analyze...")</message>
504
- <message>Task(haiku, "Check...")</message>
505
- <message>Task(haiku, "Find...")</message>
506
- β†’ 3x slower, wastes time
507
- ```
508
-
509
- ### Background Agent Pattern (ULTRAWORK)
510
-
511
- **During implementation, launch background agents for next phase:**
512
- ```
513
- <message>
514
- // Main agent - blocks until complete
515
- Task(sonnet, "Implement Phase 1: Create login form component")
516
-
517
- // Background agents - run simultaneously, don't block
518
- Task(haiku, run_in_background=true, "Phase 2 prep: Analyze auth API endpoints")
519
- Task(haiku, run_in_background=true, "Pre-generate test cases for login form")
520
- Task(haiku, run_in_background=true, "Find existing validation patterns")
521
- </message>
522
- β†’ Main completes in ~60s, backgrounds ready when needed
523
- ```
524
-
525
- **Checking background results:**
526
- ```
527
- // After main implementation completes
528
- TaskOutput(task_id, block=false) // Check if ready
529
- // OR
530
- Read(output_file) // Read background agent's findings
531
- ```
532
-
533
- **Why Background Agents Matter:**
534
-
535
- | Without Background | With Background |
536
- |--------------------|-----------------|
537
- | Phase 1: 60s | Phase 1: 60s (+ backgrounds running) |
538
- | Phase 2 prep: 20s | Phase 2 prep: 0s (already done!) |
539
- | Phase 2: 60s | Phase 2: 60s |
540
- | **Total: 140s** | **Total: 120s** |
541
-
542
- For 5 phases: 4 Γ— 20s saved = **80s faster**
543
-
544
- ### Why Parallel Matters
545
-
546
- | Approach | Time | Cache Benefit |
547
- |----------|------|---------------|
548
- | Sequential (3 Tasks) | ~30s | Cache cold on each |
549
- | **Parallel (3 Tasks)** | **~10s** | **Cache warmed once, shared** |
550
-
551
- hi-ai ProjectCache (LRU) caches ts-morph parsing results. Parallel calls share the warmed cache.
552
-
553
- ### Phase Execution Flow (ULTRAWORK Pipeline)
554
-
555
- ```
556
- Phase N Start
557
- β”‚
558
- β”œβ”€β†’ [PARALLEL] Task(haiku) Γ— 3: Exploration
559
- β”‚ - Related code analysis
560
- β”‚ - Dependency check
561
- β”‚ - Pattern discovery
562
- β”‚
563
- ↓ (all complete)
564
- β”‚
565
- β”œβ”€β†’ Opus: Synthesize and decide
566
- β”‚
567
- β”œβ”€β†’ [PARALLEL PIPELINE] ←── KEY SPEED OPTIMIZATION
568
- β”‚ β”‚
569
- β”‚ β”œβ”€β†’ Main: Task(sonnet) Implementation
570
- β”‚ β”‚
571
- β”‚ └─→ Background (run_in_background=true):
572
- β”‚ β”œβ”€β†’ Task(haiku): Phase N+1 file analysis
573
- β”‚ β”œβ”€β†’ Task(haiku): Test case preparation
574
- β”‚ └─→ Task(haiku): Type/interface lookup
575
- β”‚
576
- ↓ (main completes)
577
- β”‚
578
- β”œβ”€β†’ Task(haiku): Tests (uses pre-generated cases)
579
- β”‚
580
- ↓
581
- Phase N Complete
582
- β”‚
583
- ↓ (Background results ready - NO WAIT for Phase N+1 exploration!)
584
- β”‚
585
- Phase N+1 Start (IMMEDIATE - exploration already done!)
586
- ```
587
-
588
- **Speed Comparison:**
589
-
590
- | Mode | Phase Time | 5 Phases Total |
591
- |------|------------|----------------|
592
- | Sequential | ~2min/phase | ~10min |
593
- | Parallel Exploration | ~1.5min/phase | ~7.5min |
594
- | **ULTRAWORK Pipeline** | **~1min/phase** | **~5min** |
595
-
596
- **Why Pipeline is Faster:**
597
- - Background agents prepare next phase WHILE current phase implements
598
- - No idle time between phases
599
- - Test cases pre-generated during implementation
600
- - Cache stays warm across parallel tasks
601
-
602
- ---
603
-
604
- 1. **Related code analysis**: Task(haiku) explores `<context>` related code
605
- 2. **File creation/modification**: Task(sonnet) implements per `<output_format>`
606
- 3. **Constraint compliance**: Check `<constraints>`
607
- 4. **Run verification**: Execute verification commands
608
-
609
- ### 4. Quality Report (μžλ™ 생성)
610
-
611
- λͺ¨λ“  μ‹œλ‚˜λ¦¬μ˜€ μ™„λ£Œ ν›„ **ν’ˆμ§ˆ 리포트 μžλ™ 생성**:
612
-
613
- ```
614
- β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
615
- β”‚ πŸ“Š QUALITY REPORT: login β”‚
616
- β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
617
- β”‚ β”‚
618
- β”‚ βœ… μ‹œλ‚˜λ¦¬μ˜€: 4/4 톡과 β”‚
619
- β”‚ β”‚
620
- β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
621
- β”‚ β”‚ # β”‚ Scenario β”‚ Status β”‚ Retries β”‚ β”‚ β”‚
622
- β”‚ │───│───────────────────────────│────────│─────────│ β”‚ β”‚
623
- β”‚ β”‚ 1 β”‚ μœ νš¨ν•œ 둜그인 성곡 β”‚ βœ… β”‚ 0 β”‚ β”‚ β”‚
624
- β”‚ β”‚ 2 β”‚ 잘λͺ»λœ λΉ„λ°€λ²ˆν˜Έ μ—λŸ¬ β”‚ βœ… β”‚ 1 β”‚ β”‚ β”‚
625
- β”‚ β”‚ 3 β”‚ 이메일 ν˜•μ‹ 검증 β”‚ βœ… β”‚ 0 β”‚ β”‚ β”‚
626
- β”‚ β”‚ 4 β”‚ λΉ„λ°€λ²ˆν˜Έ μ°ΎκΈ° 링크 β”‚ βœ… β”‚ 0 β”‚ β”‚ β”‚
627
- β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
628
- β”‚ β”‚
629
- β”‚ πŸ“ˆ ν’ˆμ§ˆ 점수: 94/100 β”‚
630
- β”‚ β”‚
631
- β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
632
- β”‚ β”‚ ν•­λͺ© β”‚ κ²°κ³Ό β”‚ λΉ„κ³  β”‚ β”‚
633
- β”‚ │───────────────────│───────│─────────────────────────────│ β”‚
634
- β”‚ β”‚ λΉŒλ“œ β”‚ βœ… β”‚ npm run build 성곡 β”‚ β”‚
635
- β”‚ β”‚ ν…ŒμŠ€νŠΈ β”‚ βœ… β”‚ 12/12 톡과 β”‚ β”‚
636
- β”‚ β”‚ νƒ€μž… 검사 β”‚ βœ… β”‚ μ—λŸ¬ 0개 β”‚ β”‚
637
- β”‚ β”‚ λ³΅μž‘λ„ β”‚ βœ… β”‚ λͺ¨λ“  ν•¨μˆ˜ ≀20쀄 β”‚ β”‚
638
- β”‚ β”‚ λ³΄μ•ˆ β”‚ βœ… β”‚ 취약점 0개 β”‚ β”‚
639
- β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
640
- β”‚ β”‚
641
- β”‚ ⏱️ 총 μ†Œμš”: 3m 42s β”‚
642
- β”‚ β”‚
643
- β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
644
- ```
645
-
646
- **μ‚¬μš©μžκ°€ 확인할 것**:
647
- - μ‹œλ‚˜λ¦¬μ˜€ ν†΅κ³Όμœ¨ (4/4 = 100%)
648
- - ν’ˆμ§ˆ 점수 (94/100)
649
- - λΉŒλ“œ/ν…ŒμŠ€νŠΈ μƒνƒœ
650
-
651
- **μ΄κ²ƒλ§Œ 보면 ν’ˆμ§ˆμ„ μ‹ λ’°ν•  수 있음.**
652
-
653
- ### 5. Update Feature File
654
-
655
- μ‹œλ‚˜λ¦¬μ˜€ μƒνƒœ μžλ™ μ—…λ°μ΄νŠΈ:
656
-
657
- ```markdown
658
- ## Coverage
659
-
660
- | Scenario | SPEC AC | Status |
661
- |----------|---------|--------|
662
- | μœ νš¨ν•œ 둜그인 성곡 | AC-1 | βœ… |
663
- | 잘λͺ»λœ λΉ„λ°€λ²ˆν˜Έ μ—λŸ¬ | AC-2 | βœ… |
664
- | 이메일 ν˜•μ‹ 검증 | AC-3 | βœ… |
665
- | λΉ„λ°€λ²ˆν˜Έ μ°ΎκΈ° 링크 | AC-4 | βœ… |
666
-
667
- **Last verified**: 2024-01-15 14:32
668
- **Quality score**: 94/100
669
- ```
670
-
671
- ## TRUST 5 Principles
672
-
673
- Follow during implementation:
674
-
675
- | Principle | Description |
676
- |-----------|-------------|
677
- | **T**est-first | Write tests first |
678
- | **R**eadable | Clear code |
679
- | **U**nified | Consistent style |
680
- | **S**ecured | Consider security |
681
- | **T**rackable | Logging, monitoring |
682
-
683
- ## Input
684
-
685
- - `.claude/vibe/specs/{feature-name}.md` (PTCF SPEC)
686
- - `.claude/vibe/features/{feature-name}.feature` (BDD)
687
- - `CLAUDE.md` (project context)
688
-
689
- ## Output
690
-
691
- - Implemented code files
692
- - Test files
693
- - Updated SPEC document (checkmarks)
694
-
695
- ## Example
696
-
697
- ```
698
- User: /vibe.run "login"
699
-
700
- Claude:
701
- πŸ“„ Loading SPEC: .claude/vibe/specs/login.md
702
- πŸ“„ Loading Feature: .claude/vibe/features/login.feature
703
-
704
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
705
- πŸ“‹ Scenarios to Implement
706
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
707
-
708
- | # | Scenario | Status |
709
- |---|----------|--------|
710
- | 1 | μœ νš¨ν•œ 둜그인 성곡 | ⬜ |
711
- | 2 | 잘λͺ»λœ λΉ„λ°€λ²ˆν˜Έ μ—λŸ¬ | ⬜ |
712
- | 3 | 이메일 ν˜•μ‹ 검증 | ⬜ |
713
- | 4 | λΉ„λ°€λ²ˆν˜Έ μ°ΎκΈ° 링크 | ⬜ |
714
-
715
- Total: 4 scenarios
716
-
717
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
718
- 🎯 Scenario 1/4: μœ νš¨ν•œ 둜그인 성곡
719
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
720
-
721
- Given: μ‚¬μš©μžκ°€ λ“±λ‘λ˜μ–΄ μžˆλ‹€
722
- When: μœ νš¨ν•œ 이메일과 λΉ„λ°€λ²ˆν˜Έλ‘œ 둜그인
723
- Then: 둜그인 성곡 + JWT 토큰 λ°˜ν™˜
724
-
725
- ⚑ [PARALLEL] 탐색 쀑...
726
- βœ… 탐색 μ™„λ£Œ (2.1s)
727
-
728
- πŸ”¨ κ΅¬ν˜„ 쀑...
729
- βœ… auth.service.ts - login() μΆ”κ°€
730
- βœ… auth.controller.ts - POST /login
731
-
732
- πŸ” 검증 쀑...
733
- βœ… Given: OK
734
- βœ… When: OK
735
- βœ… Then: OK
736
-
737
- βœ… Scenario 1 톡과!
738
-
739
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
740
- 🎯 Scenario 2/4: 잘λͺ»λœ λΉ„λ°€λ²ˆν˜Έ μ—λŸ¬
741
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
742
-
743
- πŸ”¨ κ΅¬ν˜„ 쀑...
744
- βœ… auth.service.ts - λΉ„λ°€λ²ˆν˜Έ 검증 둜직
745
-
746
- πŸ” 검증 쀑...
747
- βœ… Given: OK
748
- βœ… When: OK
749
- ❌ Then: "Invalid credentials" μ—λŸ¬ λ©”μ‹œμ§€
750
- μ‹€μ œ: "Error" λ°˜ν™˜
751
-
752
- πŸ”„ μžλ™ μˆ˜μ • 1/3...
753
- μˆ˜μ •: auth.service.ts line 42
754
-
755
- πŸ” μž¬κ²€μ¦...
756
- βœ… Then: OK
757
-
758
- βœ… Scenario 2 톡과! (μˆ˜μ • 1회)
759
-
760
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
761
- 🎯 Scenario 3/4: 이메일 ν˜•μ‹ 검증
762
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
763
-
764
- πŸ”¨ κ΅¬ν˜„ 쀑...
765
- πŸ” 검증 쀑...
766
- βœ… Scenario 3 톡과!
767
-
768
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
769
- 🎯 Scenario 4/4: λΉ„λ°€λ²ˆν˜Έ μ°ΎκΈ° 링크
770
- ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
771
-
772
- πŸ”¨ κ΅¬ν˜„ 쀑...
773
- πŸ” 검증 쀑...
774
- βœ… Scenario 4 톡과!
775
-
776
- β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
777
- β”‚ πŸ“Š QUALITY REPORT: login β”‚
778
- β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
779
- β”‚ β”‚
780
- β”‚ βœ… μ‹œλ‚˜λ¦¬μ˜€: 4/4 톡과 β”‚
781
- β”‚ β”‚
782
- β”‚ | # | Scenario | Status | Retries | β”‚
783
- β”‚ |---|───────────────────────|───────|─────────| β”‚
784
- β”‚ | 1 | μœ νš¨ν•œ 둜그인 성곡 | βœ… | 0 | β”‚
785
- β”‚ | 2 | 잘λͺ»λœ λΉ„λ°€λ²ˆν˜Έ μ—λŸ¬ | βœ… | 1 | β”‚
786
- β”‚ | 3 | 이메일 ν˜•μ‹ 검증 | βœ… | 0 | β”‚
787
- β”‚ | 4 | λΉ„λ°€λ²ˆν˜Έ μ°ΎκΈ° 링크 | βœ… | 0 | β”‚
788
- β”‚ β”‚
789
- β”‚ πŸ“ˆ ν’ˆμ§ˆ 점수: 94/100 β”‚
790
- β”‚ λΉŒλ“œ: βœ… | ν…ŒμŠ€νŠΈ: βœ… | νƒ€μž…: βœ… β”‚
791
- β”‚ β”‚
792
- β”‚ ⏱️ 총 μ†Œμš”: 3m 42s β”‚
793
- β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
794
-
795
- πŸŽ‰ κ΅¬ν˜„ μ™„λ£Œ! λͺ¨λ“  μ‹œλ‚˜λ¦¬μ˜€ 톡과.
796
- ```
797
-
798
- ### Phase-specific Execution
799
-
800
- ```
801
- User: /vibe.run "brick-game" --phase 2
802
-
803
- Claude:
804
- πŸ“„ Reading SPEC: .claude/vibe/specs/brick-game.md
805
- 🎯 Executing Phase 2 only.
806
-
807
- Phase 2: Game Logic
808
- 1. [ ] Paddle movement implementation
809
- 2. [ ] Ball physics engine
810
- 3. [ ] Brick collision handling
811
- 4. [ ] Score system
812
- 5. [ ] Game over conditions
813
-
814
- ⚑ Launching parallel exploration...
815
- [Task(haiku) Γ— 3 launched in parallel]
816
-
817
- πŸš€ Starting implementation...
818
- ```
819
-
820
- ## Error Handling
821
-
822
- On failure:
823
- 1. Check error message
824
- 2. Review `<constraints>`
825
- 3. Fix code and retry
826
- 4. If continues to fail, report to user
827
-
828
- ## Next Step
829
-
830
- ```
831
- /vibe.verify "brick-game"
832
- ```
833
-
834
- ---
835
-
836
- ARGUMENTS: $ARGUMENTS
1
+ ---
2
+ description: Execute implementation from SPEC
3
+ argument-hint: "feature name" or --phase N
4
+ ---
5
+
6
+ # /vibe.run
7
+
8
+ Execute **Scenario-Driven Implementation** with automatic quality verification.
9
+
10
+ > **핡심 원칙**: μ‹œλ‚˜λ¦¬μ˜€κ°€ κ³§ κ΅¬ν˜„ λ‹¨μœ„μ΄μž 검증 κΈ°μ€€. λͺ¨λ“  μ‹œλ‚˜λ¦¬μ˜€ 톡과 = ν’ˆμ§ˆ 보μž₯.
11
+
12
+ ## Usage
13
+
14
+ ```
15
+ /vibe.run "feature-name" # Full implementation
16
+ /vibe.run "feature-name" --phase 1 # Specific Phase only
17
+ /vibe.run "feature-name" ultrawork # ULTRAWORK mode (recommended)
18
+ /vibe.run "feature-name" ulw # Short alias for ultrawork
19
+ ```
20
+
21
+ ---
22
+
23
+ ## **Scenario-Driven Development (SDD)**
24
+
25
+ > λΉ„κ°œλ°œμžλ„ ν’ˆμ§ˆμ„ μ‹ λ’°ν•  수 μžˆλ„λ‘, **μ‹œλ‚˜λ¦¬μ˜€ = κ΅¬ν˜„ = 검증**을 μžλ™ν™”
26
+
27
+ ### 핡심 흐름
28
+
29
+ ```
30
+ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
31
+ β”‚ SCENARIO-DRIVEN IMPLEMENTATION β”‚
32
+ β”‚ β”‚
33
+ β”‚ Feature 파일 λ‘œλ“œ β”‚
34
+ β”‚ ↓ β”‚
35
+ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
36
+ β”‚ β”‚ Scenario 1: Happy Path β”‚ β”‚
37
+ β”‚ β”‚ Given β†’ When β†’ Then β”‚ β”‚
38
+ β”‚ β”‚ ↓ β”‚ β”‚
39
+ β”‚ β”‚ [κ΅¬ν˜„] β†’ [μ¦‰μ‹œ 검증] β†’ βœ… Pass β”‚ β”‚
40
+ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
41
+ β”‚ ↓ β”‚
42
+ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
43
+ β”‚ β”‚ Scenario 2: Edge Case β”‚ β”‚
44
+ β”‚ β”‚ Given β†’ When β†’ Then β”‚ β”‚
45
+ β”‚ β”‚ ↓ β”‚ β”‚
46
+ β”‚ β”‚ [κ΅¬ν˜„] β†’ [μ¦‰μ‹œ 검증] β†’ ❌ Fail β†’ [μˆ˜μ •] β†’ βœ… Pass β”‚ β”‚
47
+ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
48
+ β”‚ ↓ β”‚
49
+ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
50
+ β”‚ β”‚ Scenario N: ... β”‚ β”‚
51
+ β”‚ β”‚ [κ΅¬ν˜„] β†’ [μ¦‰μ‹œ 검증] β†’ βœ… Pass β”‚ β”‚
52
+ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
53
+ β”‚ ↓ β”‚
54
+ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
55
+ β”‚ β”‚ πŸ“Š QUALITY REPORT β”‚ β”‚
56
+ β”‚ β”‚ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ β”‚ β”‚
57
+ β”‚ β”‚ μ‹œλ‚˜λ¦¬μ˜€: 5/5 톡과 βœ… β”‚ β”‚
58
+ β”‚ β”‚ ν’ˆμ§ˆ 점수: 94/100 β”‚ β”‚
59
+ β”‚ β”‚ λΉŒλ“œ: βœ… | ν…ŒμŠ€νŠΈ: βœ… β”‚ β”‚
60
+ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
61
+ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
62
+ ```
63
+
64
+ ### μ‹œλ‚˜λ¦¬μ˜€ = κ΅¬ν˜„ λ‹¨μœ„
65
+
66
+ **κΈ°μ‘΄ 방식 (Phase 기반)**:
67
+ ```
68
+ Phase 1 β†’ Phase 2 β†’ Phase 3 β†’ ... β†’ λ§ˆμ§€λ§‰μ— 검증
69
+ ↓
70
+ "μ–΄λ””μ„œ 잘λͺ»λμ§€?"
71
+ ```
72
+
73
+ **SDD 방식 (Scenario 기반)**:
74
+ ```
75
+ Scenario 1 β†’ κ΅¬ν˜„ β†’ 검증 βœ…
76
+ Scenario 2 β†’ κ΅¬ν˜„ β†’ 검증 βœ…
77
+ Scenario 3 β†’ κ΅¬ν˜„ β†’ 검증 ❌ β†’ μˆ˜μ • β†’ βœ…
78
+ ...
79
+ 전체 톡과 = ν’ˆμ§ˆ 보μž₯
80
+ ```
81
+
82
+ ### 검증 μžλ™ν™”
83
+
84
+ 각 μ‹œλ‚˜λ¦¬μ˜€ κ΅¬ν˜„ ν›„ **μžλ™ 검증**:
85
+
86
+ | 검증 ν•­λͺ© | μžλ™ 체크 |
87
+ |-----------|-----------|
88
+ | Given (μ „μ œμ‘°κ±΄) | μƒνƒœ/데이터 μ€€λΉ„ 확인 |
89
+ | When (행동) | κΈ°λŠ₯ μ‹€ν–‰ κ°€λŠ₯ μ—¬λΆ€ |
90
+ | Then (κ²°κ³Ό) | μ˜ˆμƒ κ²°κ³Ό 일치 μ—¬λΆ€ |
91
+ | μ½”λ“œ ν’ˆμ§ˆ | λ³΅μž‘λ„, μŠ€νƒ€μΌ, λ³΄μ•ˆ |
92
+
93
+ ### μ‹€νŒ¨ μ‹œ μžλ™ μˆ˜μ •
94
+
95
+ ```
96
+ Scenario 검증 μ‹€νŒ¨
97
+ ↓
98
+ [원인 뢄석] - μ–΄λ–€ Then 쑰건이 μ‹€νŒ¨?
99
+ ↓
100
+ [μˆ˜μ • κ΅¬ν˜„] - ν•΄λ‹Ή λΆ€λΆ„λ§Œ μˆ˜μ •
101
+ ↓
102
+ [μž¬κ²€μ¦] - λ‹€μ‹œ 체크
103
+ ↓
104
+ 톡과할 λ•ŒκΉŒμ§€ 반볡 (μ΅œλŒ€ 3회)
105
+ ```
106
+
107
+ ---
108
+
109
+ ## **ULTRAWORK Mode** (ulw)
110
+
111
+ > Include `ultrawork` or `ulw` in your command to activate **maximum performance mode**.
112
+
113
+ ### What ULTRAWORK Enables
114
+
115
+ When you include `ultrawork` (or `ulw`), ALL of these activate automatically:
116
+
117
+ | Feature | Description |
118
+ |---------|-------------|
119
+ | **Parallel Exploration** | 3+ Task(haiku) agents run simultaneously |
120
+ | **Boulder Loop** | Auto-continues until ALL phases complete |
121
+ | **Context Compression** | Aggressive auto-save at 70%+ context |
122
+ | **No Pause** | Doesn't wait for confirmation between phases |
123
+ | **External LLMs** | Auto-consults GPT/Gemini if enabled |
124
+ | **Error Recovery** | Auto-retries on failure (up to 3 times) |
125
+
126
+ ### Boulder Loop (Inspired by Sisyphus)
127
+
128
+ Like Sisyphus rolling the boulder, ULTRAWORK **keeps going until done**:
129
+
130
+ ```
131
+ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
132
+ β”‚ BOULDER LOOP (ultrawork) β”‚
133
+ β”‚ β”‚
134
+ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
135
+ β”‚ β”‚ Phase 1 │───→│ Phase 2 │───→│ Phase 3 │───→│ Phase N β”‚ β”‚
136
+ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
137
+ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚
138
+ β”‚ ↓ ↓ ↓ ↓ β”‚
139
+ β”‚ [Parallel] [Parallel] [Parallel] [Parallel] β”‚
140
+ β”‚ [Implement] [Implement] [Implement] [Implement] β”‚
141
+ β”‚ [Test] [Test] [Test] [Test] β”‚
142
+ β”‚ β”‚ β”‚ β”‚ β”‚ β”‚
143
+ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
144
+ β”‚ β”‚ β”‚
145
+ β”‚ ↓ β”‚
146
+ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
147
+ β”‚ β”‚ ALL DONE? β”‚ β”‚
148
+ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
149
+ β”‚ β”‚ β”‚ β”‚
150
+ β”‚ NO YES β”‚
151
+ β”‚ β”‚ β”‚ β”‚
152
+ β”‚ ↓ ↓ β”‚
153
+ β”‚ [Continue] [πŸŽ‰ Complete!] β”‚
154
+ β”‚ β”‚
155
+ β”‚ NO STOPPING until acceptance criteria met or error limit hit β”‚
156
+ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
157
+ ```
158
+
159
+ ### ULTRAWORK Example
160
+
161
+ ```
162
+ User: /vibe.run "brick-game" ultrawork
163
+
164
+ Claude:
165
+ πŸš€ ULTRAWORK MODE ACTIVATED
166
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
167
+
168
+ πŸ“„ SPEC: .claude/vibe/specs/brick-game.md
169
+ 🎯 4 Phases detected
170
+ ⚑ Boulder Loop: ENABLED (will continue until all phases complete)
171
+ πŸ”„ Auto-retry: ON (max 3 per phase)
172
+ πŸ’Ύ Context compression: AGGRESSIVE
173
+
174
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
175
+ πŸ”οΈ BOULDER ROLLING... Phase 1/4
176
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
177
+
178
+ ⚑ [PARALLEL] Launching 3 exploration agents...
179
+ βœ… Exploration complete (7.2s)
180
+ πŸ”¨ Implementing...
181
+ βœ… Phase 1 complete
182
+
183
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
184
+ πŸ”οΈ BOULDER ROLLING... Phase 2/4
185
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
186
+
187
+ ⚑ [PARALLEL] Launching 3 exploration agents...
188
+ βœ… Exploration complete (6.8s)
189
+ πŸ”¨ Implementing...
190
+ ❌ Test failed: collision detection
191
+ πŸ”„ Auto-retry 1/3...
192
+ πŸ”¨ Fixing...
193
+ βœ… Phase 2 complete
194
+
195
+ [...continues automatically...]
196
+
197
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
198
+ πŸŽ‰ BOULDER REACHED THE TOP!
199
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
200
+
201
+ βœ… All 4 phases complete
202
+ βœ… All acceptance criteria passed
203
+ βœ… Build succeeded
204
+ βœ… Tests passed
205
+
206
+ ⏱️ Total: 8m 24s
207
+ πŸ“Š Retries: 2
208
+ πŸ’Ύ Context saved: 3 checkpoints
209
+ ```
210
+
211
+ ### Normal vs ULTRAWORK Comparison
212
+
213
+ | Aspect | Normal | ULTRAWORK |
214
+ |--------|--------|-----------|
215
+ | Phase transition | May pause | Auto-continues |
216
+ | On error | Reports and stops | Auto-retries (3x) |
217
+ | Context 70%+ | Warning only | Auto-compress + save |
218
+ | Exploration | Sequential possible | FORCED parallel |
219
+ | Completion | Phase-by-phase | Until ALL done |
220
+
221
+ ---
222
+
223
+ ## Rules Reference
224
+
225
+ **Must follow `.claude/vibe/rules/`:**
226
+ - `core/development-philosophy.md` - Surgical precision, modify only requested scope
227
+ - `core/quick-start.md` - Korean, DRY, SRP, YAGNI
228
+ - `standards/complexity-metrics.md` - Functions ≀20 lines, nesting ≀3 levels
229
+ - `quality/checklist.md` - Code quality checklist
230
+
231
+ ## Description
232
+
233
+ Read PTCF structured SPEC document and execute implementation immediately.
234
+
235
+ > **PLAN, TASKS documents unnecessary** - SPEC is the executable prompt
236
+
237
+ ## Model Orchestration
238
+
239
+ Automatically select optimal model based on task type:
240
+
241
+ ```
242
+ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
243
+ β”‚ Opus 4.5 (Orchestrator) β”‚
244
+ β”‚ - Coordinate overall flow β”‚
245
+ β”‚ - Final decisions/review β”‚
246
+ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
247
+ β”‚
248
+ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
249
+ ↓ ↓ ↓
250
+ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”
251
+ β”‚ Haiku β”‚ β”‚ Sonnet β”‚ β”‚ Haiku β”‚
252
+ β”‚(Explore)β”‚ β”‚ (Impl) β”‚ β”‚ (Test) β”‚
253
+ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
254
+ ```
255
+
256
+ ### Task Calls by Role
257
+
258
+ | Task Type | Model | Task Parameter |
259
+ |-----------|-------|----------------|
260
+ | Codebase exploration | Haiku 4.5 | `model: "haiku"` |
261
+ | Core implementation | Sonnet 4 | `model: "sonnet"` |
262
+ | Test writing | Haiku 4.5 | `model: "haiku"` |
263
+ | Architecture decisions | Opus 4.5 | Main session |
264
+ | Final review | Opus 4.5 | Main session |
265
+
266
+ ### External LLM Usage (When Enabled)
267
+
268
+ When external LLMs are enabled in `.claude/vibe/config.json`:
269
+
270
+ | Role | Model | Condition |
271
+ |------|-------|-----------|
272
+ | Architecture/Debugging | GPT 5.2 | When `vibe gpt <key>` executed |
273
+ | UI/UX Design, Exploration | Gemini 2.5/3 | When `vibe gemini --auth` executed |
274
+
275
+ When external LLM enabled, automatically called via MCP:
276
+ - `mcp__vibe-gpt__chat` - GPT 5.2 architecture consultation
277
+ - `mcp__vibe-gemini__gemini_chat` - Gemini 질문/상담
278
+ - `mcp__vibe-gemini__gemini_analyze_code` - μ½”λ“œ 뢄석
279
+ - `mcp__vibe-gemini__gemini_review_ui` - UI/UX 리뷰
280
+ - `mcp__vibe-gemini__gemini_quick_ask` - λΉ λ₯Έ 질문 (νƒμƒ‰μš©)
281
+
282
+ ### External LLM Fallback
283
+
284
+ **IMPORTANT**: When Gemini/GPT MCP returns `"status": "fallback"`, Claude MUST handle the task directly:
285
+
286
+ ```json
287
+ {
288
+ "status": "fallback",
289
+ "reason": "rate_limit", // or "auth_error"
290
+ "message": "Gemini API ν• λ‹ΉλŸ‰ 초과. Claudeκ°€ 직접 μ²˜λ¦¬ν•΄μ£Όμ„Έμš”."
291
+ }
292
+ ```
293
+
294
+ **Fallback behavior**:
295
+ - Do NOT retry the external LLM call
296
+ - Claude handles the task using its own capabilities
297
+ - Continue with the implementation without interruption
298
+ - Log the fallback but don't block progress
299
+
300
+ ## Vibe Tools (Semantic Analysis & Memory)
301
+
302
+ Use vibe tools for accurate codebase understanding and session continuity.
303
+
304
+ ### Tool Invocation
305
+
306
+ All tools are called via:
307
+ ```bash
308
+ node -e "import('@su-record/vibe/tools').then(t => t.TOOL_NAME({...args}).then(r => console.log(r.content[0].text)))"
309
+ ```
310
+
311
+ ### Semantic Analysis Tools
312
+
313
+ | Tool | Purpose | Usage |
314
+ |------|---------|-------|
315
+ | `findSymbol` | Find symbol definitions | `{symbolName: 'functionName', searchPath: '.'}` |
316
+ | `findReferences` | Find all references | `{symbolName: 'functionName', searchPath: '.'}` |
317
+ | `analyzeComplexity` | Analyze code complexity | `{filePath: 'src/file.ts'}` |
318
+ | `validateCodeQuality` | Validate code quality | `{filePath: 'src/file.ts'}` |
319
+
320
+ **Example - Find symbol:**
321
+ ```bash
322
+ node -e "import('@su-record/vibe/tools').then(t => t.findSymbol({symbolName: 'login', searchPath: '.'}).then(r => console.log(r.content[0].text)))"
323
+ ```
324
+
325
+ ### Memory Tools
326
+
327
+ | Tool | Purpose | Usage |
328
+ |------|---------|-------|
329
+ | `saveMemory` | Save important decisions | `{key: 'decision-name', value: 'content', category: 'project'}` |
330
+ | `recallMemory` | Recall saved memory | `{key: 'decision-name'}` |
331
+ | `listMemories` | List all memories | `{category: 'project'}` |
332
+
333
+ **Example - Save important decision:**
334
+ ```bash
335
+ node -e "import('@su-record/vibe/tools').then(t => t.saveMemory({key: 'auth-pattern', value: 'Using JWT with refresh tokens', category: 'project'}).then(r => console.log(r.content[0].text)))"
336
+ ```
337
+
338
+ ### Session Management (Auto via Hooks)
339
+
340
+ - **Session start**: Hook auto-calls `startSession` to restore previous context
341
+ - **Context 80%+**: Hook auto-calls `autoSaveContext` to preserve state
342
+
343
+ ## Process
344
+
345
+ ### 1. Load SPEC + Feature
346
+
347
+ ```
348
+ πŸ“„ .claude/vibe/specs/{feature-name}.md β†’ SPEC (ꡬ쑰, μ œμ•½, μ»¨ν…μŠ€νŠΈ)
349
+ πŸ“„ .claude/vibe/features/{feature-name}.feature β†’ Feature (μ‹œλ‚˜λ¦¬μ˜€ = κ΅¬ν˜„ λ‹¨μœ„)
350
+ ```
351
+
352
+ **Feature 파일이 μ—†μœΌλ©΄ μ—λŸ¬**:
353
+ ```
354
+ ❌ Feature 파일이 μ—†μŠ΅λ‹ˆλ‹€.
355
+ λ¨Όμ € /vibe.spec "{feature-name}"을 μ‹€ν–‰ν•˜μ„Έμš”.
356
+ ```
357
+
358
+ ### 2. Scenario λͺ©λ‘ μΆ”μΆœ
359
+
360
+ Feature νŒŒμΌμ—μ„œ λͺ¨λ“  Scenario μΆ”μΆœ:
361
+
362
+ ```markdown
363
+ ## Scenarios to Implement
364
+
365
+ | # | Scenario | Status |
366
+ |---|----------|--------|
367
+ | 1 | μœ νš¨ν•œ 둜그인 성곡 | ⬜ |
368
+ | 2 | 잘λͺ»λœ λΉ„λ°€λ²ˆν˜Έ μ—λŸ¬ | ⬜ |
369
+ | 3 | 이메일 ν˜•μ‹ 검증 | ⬜ |
370
+ | 4 | λΉ„λ°€λ²ˆν˜Έ μ°ΎκΈ° 링크 | ⬜ |
371
+
372
+ Total: 4 scenarios
373
+ ```
374
+
375
+ ### 3. Scenario-by-Scenario Implementation (핡심)
376
+
377
+ **각 μ‹œλ‚˜λ¦¬μ˜€λ§ˆλ‹€**:
378
+
379
+ ```
380
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
381
+ 🎯 Scenario 1/4: μœ νš¨ν•œ 둜그인 성곡
382
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
383
+
384
+ Given: μ‚¬μš©μžκ°€ λ“±λ‘λ˜μ–΄ μžˆλ‹€
385
+ When: μœ νš¨ν•œ 이메일과 λΉ„λ°€λ²ˆν˜Έλ‘œ 둜그인
386
+ Then: 둜그인 성곡 + JWT 토큰 λ°˜ν™˜
387
+
388
+ [Step 1] κ΅¬ν˜„ 뢄석...
389
+ - ν•„μš”ν•œ 파일: auth.service.ts, login.controller.ts
390
+ - κ΄€λ ¨ μ½”λ“œ 탐색 쀑...
391
+
392
+ [Step 2] κ΅¬ν˜„ 쀑...
393
+ βœ… auth.service.ts - login() λ©”μ„œλ“œ μΆ”κ°€
394
+ βœ… login.controller.ts - POST /login μ—”λ“œν¬μΈνŠΈ
395
+
396
+ [Step 3] 검증 쀑...
397
+ βœ… Given: ν…ŒμŠ€νŠΈ μ‚¬μš©μž 생성 κ°€λŠ₯
398
+ βœ… When: 둜그인 API 호좜 성곡
399
+ βœ… Then: JWT 토큰 λ°˜ν™˜ 확인
400
+
401
+ βœ… Scenario 1 톡과!
402
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
403
+ ```
404
+
405
+ **μ‹€νŒ¨ μ‹œ**:
406
+
407
+ ```
408
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
409
+ 🎯 Scenario 2/4: 잘λͺ»λœ λΉ„λ°€λ²ˆν˜Έ μ—λŸ¬
410
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
411
+
412
+ [Step 3] 검증 쀑...
413
+ βœ… Given: ν…ŒμŠ€νŠΈ μ‚¬μš©μž 쑴재
414
+ βœ… When: 잘λͺ»λœ λΉ„λ°€λ²ˆν˜Έλ‘œ 둜그인 μ‹œλ„
415
+ ❌ Then: "Invalid credentials" μ—λŸ¬ λ©”μ‹œμ§€
416
+ μ‹€μ œ: "Error occurred" λ°˜ν™˜λ¨
417
+
418
+ [μžλ™ μˆ˜μ • 1/3]
419
+ 원인: μ—λŸ¬ λ©”μ‹œμ§€ ν•˜λ“œμ½”λ”© μ•ˆλ¨
420
+ μˆ˜μ •: auth.service.ts line 42
421
+
422
+ [μž¬κ²€μ¦]
423
+ βœ… Then: "Invalid credentials" μ—λŸ¬ λ©”μ‹œμ§€
424
+
425
+ βœ… Scenario 2 톡과! (μˆ˜μ • 1회)
426
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
427
+ ```
428
+
429
+ ---
430
+
431
+ ## **CRITICAL: Parallel Sub-Agent Execution**
432
+
433
+ > **MUST USE PARALLEL TASK CALLS** - This is REQUIRED, not optional.
434
+ > Sequential execution when parallel is possible = VIOLATION of this workflow.
435
+
436
+ ### Mandatory Parallel Exploration (Phase Start)
437
+
438
+ **BEFORE any implementation, you MUST launch these Task calls IN PARALLEL (single message, multiple tool calls):**
439
+
440
+ ```
441
+ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
442
+ β”‚ STEP 1: PARALLEL EXPLORATION (REQUIRED) β”‚
443
+ β”‚ β”‚
444
+ β”‚ Launch ALL of these in ONE message: β”‚
445
+ β”‚ β”‚
446
+ β”‚ Task(haiku) ─┬─→ "Analyze related files in <context>" β”‚
447
+ β”‚ β”‚ β”‚
448
+ β”‚ Task(haiku) ─┼─→ "Check dependencies and imports" β”‚
449
+ β”‚ β”‚ β”‚
450
+ β”‚ Task(haiku) ─┴─→ "Find existing patterns and conventions" β”‚
451
+ β”‚ β”‚
452
+ β”‚ [If GPT enabled] + MCP(vibe-gpt): Architecture review β”‚
453
+ β”‚ [If Gemini enabled] + MCP(vibe-gemini): UI/UX consultation β”‚
454
+ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
455
+ β”‚
456
+ ↓ (wait for all to complete)
457
+ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
458
+ β”‚ STEP 2: SYNTHESIZE (Opus) β”‚
459
+ β”‚ - Review all exploration results β”‚
460
+ β”‚ - Decide implementation approach β”‚
461
+ β”‚ - Identify files to modify/create β”‚
462
+ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
463
+ β”‚
464
+ ↓
465
+ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
466
+ β”‚ STEP 3: IMPLEMENT + BACKGROUND AGENTS (PARALLEL) β”‚
467
+ β”‚ β”‚
468
+ β”‚ Main Agent (sonnet): β”‚
469
+ β”‚ └─→ Execute current phase implementation β”‚
470
+ β”‚ β”‚
471
+ β”‚ Background Agents (haiku, run_in_background=true): β”‚
472
+ β”‚ β”œβ”€β†’ Task: "Prepare Phase N+1 - analyze required files" β”‚
473
+ β”‚ β”œβ”€β†’ Task: "Pre-generate test cases for current implementation" β”‚
474
+ β”‚ └─→ Task: "Search for related types/interfaces needed" β”‚
475
+ β”‚ β”‚
476
+ β”‚ [ULTRAWORK] All 4 agents run simultaneously! β”‚
477
+ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
478
+ β”‚
479
+ ↓ (main completes, check backgrounds)
480
+ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
481
+ β”‚ STEP 4: TEST + PHASE PIPELINING β”‚
482
+ β”‚ β”‚
483
+ β”‚ Current Phase: β”‚
484
+ β”‚ └─→ Task(haiku): Write tests using pre-generated cases β”‚
485
+ β”‚ β”‚
486
+ β”‚ Next Phase Prep (from background results): β”‚
487
+ β”‚ └─→ Already have file analysis, ready to start immediately β”‚
488
+ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
489
+ ```
490
+
491
+ ### Parallel Task Call Pattern (MUST FOLLOW)
492
+
493
+ **Correct - Single message with multiple parallel Tasks:**
494
+ ```
495
+ <message>
496
+ Task(haiku, "Analyze src/components/ for existing patterns")
497
+ Task(haiku, "Check package.json dependencies")
498
+ Task(haiku, "Find usage of similar features in codebase")
499
+ </message>
500
+ β†’ All 3 run simultaneously, ~3x faster
501
+ ```
502
+
503
+ **WRONG - Sequential calls (DO NOT DO THIS):**
504
+ ```
505
+ <message>Task(haiku, "Analyze...")</message>
506
+ <message>Task(haiku, "Check...")</message>
507
+ <message>Task(haiku, "Find...")</message>
508
+ β†’ 3x slower, wastes time
509
+ ```
510
+
511
+ ### Background Agent Pattern (ULTRAWORK) via Orchestrator
512
+
513
+ **Launch background agents for next phase via Orchestrator:**
514
+ ```bash
515
+ # Start background agent (doesn't block)
516
+ node -e "import('@su-record/vibe/orchestrator').then(o => o.runAgent('Phase 2 prep: Analyze auth API endpoints', 'phase2-prep').then(r => console.log(r.content[0].text)))"
517
+
518
+ # Multiple backgrounds in parallel
519
+ node -e "import('@su-record/vibe/orchestrator').then(async o => {
520
+ await Promise.all([
521
+ o.runAgent('Phase 2 prep: Analyze auth API endpoints', 'phase2-prep'),
522
+ o.runAgent('Pre-generate test cases for login form', 'test-prep'),
523
+ o.runAgent('Find existing validation patterns', 'pattern-finder')
524
+ ]);
525
+ console.log('All background agents started');
526
+ })"
527
+ ```
528
+
529
+ **Check background agent status:**
530
+ ```bash
531
+ node -e "import('@su-record/vibe/orchestrator').then(o => console.log(o.status().content[0].text))"
532
+ ```
533
+
534
+ **Get result when ready:**
535
+ ```bash
536
+ node -e "import('@su-record/vibe/orchestrator').then(o => o.getResult('SESSION_ID').then(r => console.log(r.content[0].text)))"
537
+ ```
538
+
539
+ **Why Background Agents Matter:**
540
+
541
+ | Without Background | With Background |
542
+ |--------------------|-----------------|
543
+ | Phase 1: 60s | Phase 1: 60s (+ backgrounds running) |
544
+ | Phase 2 prep: 20s | Phase 2 prep: 0s (already done!) |
545
+ | Phase 2: 60s | Phase 2: 60s |
546
+ | **Total: 140s** | **Total: 120s** |
547
+
548
+ For 5 phases: 4 Γ— 20s saved = **80s faster**
549
+
550
+ ### Why Parallel Matters
551
+
552
+ | Approach | Time | Cache Benefit |
553
+ |----------|------|---------------|
554
+ | Sequential (3 Tasks) | ~30s | Cache cold on each |
555
+ | **Parallel (3 Tasks)** | **~10s** | **Cache warmed once, shared** |
556
+
557
+ hi-ai ProjectCache (LRU) caches ts-morph parsing results. Parallel calls share the warmed cache.
558
+
559
+ ### Phase Execution Flow (ULTRAWORK Pipeline)
560
+
561
+ ```
562
+ Phase N Start
563
+ β”‚
564
+ β”œβ”€β†’ [PARALLEL] Task(haiku) Γ— 3: Exploration
565
+ β”‚ - Related code analysis
566
+ β”‚ - Dependency check
567
+ β”‚ - Pattern discovery
568
+ β”‚
569
+ ↓ (all complete)
570
+ β”‚
571
+ β”œβ”€β†’ Opus: Synthesize and decide
572
+ β”‚
573
+ β”œβ”€β†’ [PARALLEL PIPELINE] ←── KEY SPEED OPTIMIZATION
574
+ β”‚ β”‚
575
+ β”‚ β”œβ”€β†’ Main: Task(sonnet) Implementation
576
+ β”‚ β”‚
577
+ β”‚ └─→ Background (run_in_background=true):
578
+ β”‚ β”œβ”€β†’ Task(haiku): Phase N+1 file analysis
579
+ β”‚ β”œβ”€β†’ Task(haiku): Test case preparation
580
+ β”‚ └─→ Task(haiku): Type/interface lookup
581
+ β”‚
582
+ ↓ (main completes)
583
+ β”‚
584
+ β”œβ”€β†’ Task(haiku): Tests (uses pre-generated cases)
585
+ β”‚
586
+ ↓
587
+ Phase N Complete
588
+ β”‚
589
+ ↓ (Background results ready - NO WAIT for Phase N+1 exploration!)
590
+ β”‚
591
+ Phase N+1 Start (IMMEDIATE - exploration already done!)
592
+ ```
593
+
594
+ **Speed Comparison:**
595
+
596
+ | Mode | Phase Time | 5 Phases Total |
597
+ |------|------------|----------------|
598
+ | Sequential | ~2min/phase | ~10min |
599
+ | Parallel Exploration | ~1.5min/phase | ~7.5min |
600
+ | **ULTRAWORK Pipeline** | **~1min/phase** | **~5min** |
601
+
602
+ **Why Pipeline is Faster:**
603
+ - Background agents prepare next phase WHILE current phase implements
604
+ - No idle time between phases
605
+ - Test cases pre-generated during implementation
606
+ - Cache stays warm across parallel tasks
607
+
608
+ ---
609
+
610
+ 1. **Related code analysis**: Task(haiku) explores `<context>` related code
611
+ 2. **File creation/modification**: Task(sonnet) implements per `<output_format>`
612
+ 3. **Constraint compliance**: Check `<constraints>`
613
+ 4. **Run verification**: Execute verification commands
614
+
615
+ ### 4. Quality Report (μžλ™ 생성)
616
+
617
+ λͺ¨λ“  μ‹œλ‚˜λ¦¬μ˜€ μ™„λ£Œ ν›„ **ν’ˆμ§ˆ 리포트 μžλ™ 생성**:
618
+
619
+ ```
620
+ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
621
+ β”‚ πŸ“Š QUALITY REPORT: login β”‚
622
+ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
623
+ β”‚ β”‚
624
+ β”‚ βœ… μ‹œλ‚˜λ¦¬μ˜€: 4/4 톡과 β”‚
625
+ β”‚ β”‚
626
+ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
627
+ β”‚ β”‚ # β”‚ Scenario β”‚ Status β”‚ Retries β”‚ β”‚ β”‚
628
+ β”‚ │───│───────────────────────────│────────│─────────│ β”‚ β”‚
629
+ β”‚ β”‚ 1 β”‚ μœ νš¨ν•œ 둜그인 성곡 β”‚ βœ… β”‚ 0 β”‚ β”‚ β”‚
630
+ β”‚ β”‚ 2 β”‚ 잘λͺ»λœ λΉ„λ°€λ²ˆν˜Έ μ—λŸ¬ β”‚ βœ… β”‚ 1 β”‚ β”‚ β”‚
631
+ β”‚ β”‚ 3 β”‚ 이메일 ν˜•μ‹ 검증 β”‚ βœ… β”‚ 0 β”‚ β”‚ β”‚
632
+ β”‚ β”‚ 4 β”‚ λΉ„λ°€λ²ˆν˜Έ μ°ΎκΈ° 링크 β”‚ βœ… β”‚ 0 β”‚ β”‚ β”‚
633
+ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
634
+ β”‚ β”‚
635
+ β”‚ πŸ“ˆ ν’ˆμ§ˆ 점수: 94/100 β”‚
636
+ β”‚ β”‚
637
+ β”‚ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β” β”‚
638
+ β”‚ β”‚ ν•­λͺ© β”‚ κ²°κ³Ό β”‚ λΉ„κ³  β”‚ β”‚
639
+ β”‚ │───────────────────│───────│─────────────────────────────│ β”‚
640
+ β”‚ β”‚ λΉŒλ“œ β”‚ βœ… β”‚ npm run build 성곡 β”‚ β”‚
641
+ β”‚ β”‚ ν…ŒμŠ€νŠΈ β”‚ βœ… β”‚ 12/12 톡과 β”‚ β”‚
642
+ β”‚ β”‚ νƒ€μž… 검사 β”‚ βœ… β”‚ μ—λŸ¬ 0개 β”‚ β”‚
643
+ β”‚ β”‚ λ³΅μž‘λ„ β”‚ βœ… β”‚ λͺ¨λ“  ν•¨μˆ˜ ≀20쀄 β”‚ β”‚
644
+ β”‚ β”‚ λ³΄μ•ˆ β”‚ βœ… β”‚ 취약점 0개 β”‚ β”‚
645
+ β”‚ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜ β”‚
646
+ β”‚ β”‚
647
+ β”‚ ⏱️ 총 μ†Œμš”: 3m 42s β”‚
648
+ β”‚ β”‚
649
+ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
650
+ ```
651
+
652
+ **μ‚¬μš©μžκ°€ 확인할 것**:
653
+ - μ‹œλ‚˜λ¦¬μ˜€ ν†΅κ³Όμœ¨ (4/4 = 100%)
654
+ - ν’ˆμ§ˆ 점수 (94/100)
655
+ - λΉŒλ“œ/ν…ŒμŠ€νŠΈ μƒνƒœ
656
+
657
+ **μ΄κ²ƒλ§Œ 보면 ν’ˆμ§ˆμ„ μ‹ λ’°ν•  수 있음.**
658
+
659
+ ### 5. Update Feature File
660
+
661
+ μ‹œλ‚˜λ¦¬μ˜€ μƒνƒœ μžλ™ μ—…λ°μ΄νŠΈ:
662
+
663
+ ```markdown
664
+ ## Coverage
665
+
666
+ | Scenario | SPEC AC | Status |
667
+ |----------|---------|--------|
668
+ | μœ νš¨ν•œ 둜그인 성곡 | AC-1 | βœ… |
669
+ | 잘λͺ»λœ λΉ„λ°€λ²ˆν˜Έ μ—λŸ¬ | AC-2 | βœ… |
670
+ | 이메일 ν˜•μ‹ 검증 | AC-3 | βœ… |
671
+ | λΉ„λ°€λ²ˆν˜Έ μ°ΎκΈ° 링크 | AC-4 | βœ… |
672
+
673
+ **Last verified**: 2024-01-15 14:32
674
+ **Quality score**: 94/100
675
+ ```
676
+
677
+ ## TRUST 5 Principles
678
+
679
+ Follow during implementation:
680
+
681
+ | Principle | Description |
682
+ |-----------|-------------|
683
+ | **T**est-first | Write tests first |
684
+ | **R**eadable | Clear code |
685
+ | **U**nified | Consistent style |
686
+ | **S**ecured | Consider security |
687
+ | **T**rackable | Logging, monitoring |
688
+
689
+ ## Input
690
+
691
+ - `.claude/vibe/specs/{feature-name}.md` (PTCF SPEC)
692
+ - `.claude/vibe/features/{feature-name}.feature` (BDD)
693
+ - `CLAUDE.md` (project context)
694
+
695
+ ## Output
696
+
697
+ - Implemented code files
698
+ - Test files
699
+ - Updated SPEC document (checkmarks)
700
+
701
+ ## Example
702
+
703
+ ```
704
+ User: /vibe.run "login"
705
+
706
+ Claude:
707
+ πŸ“„ Loading SPEC: .claude/vibe/specs/login.md
708
+ πŸ“„ Loading Feature: .claude/vibe/features/login.feature
709
+
710
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
711
+ πŸ“‹ Scenarios to Implement
712
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
713
+
714
+ | # | Scenario | Status |
715
+ |---|----------|--------|
716
+ | 1 | μœ νš¨ν•œ 둜그인 성곡 | ⬜ |
717
+ | 2 | 잘λͺ»λœ λΉ„λ°€λ²ˆν˜Έ μ—λŸ¬ | ⬜ |
718
+ | 3 | 이메일 ν˜•μ‹ 검증 | ⬜ |
719
+ | 4 | λΉ„λ°€λ²ˆν˜Έ μ°ΎκΈ° 링크 | ⬜ |
720
+
721
+ Total: 4 scenarios
722
+
723
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
724
+ 🎯 Scenario 1/4: μœ νš¨ν•œ 둜그인 성곡
725
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
726
+
727
+ Given: μ‚¬μš©μžκ°€ λ“±λ‘λ˜μ–΄ μžˆλ‹€
728
+ When: μœ νš¨ν•œ 이메일과 λΉ„λ°€λ²ˆν˜Έλ‘œ 둜그인
729
+ Then: 둜그인 성곡 + JWT 토큰 λ°˜ν™˜
730
+
731
+ ⚑ [PARALLEL] 탐색 쀑...
732
+ βœ… 탐색 μ™„λ£Œ (2.1s)
733
+
734
+ πŸ”¨ κ΅¬ν˜„ 쀑...
735
+ βœ… auth.service.ts - login() μΆ”κ°€
736
+ βœ… auth.controller.ts - POST /login
737
+
738
+ πŸ” 검증 쀑...
739
+ βœ… Given: OK
740
+ βœ… When: OK
741
+ βœ… Then: OK
742
+
743
+ βœ… Scenario 1 톡과!
744
+
745
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
746
+ 🎯 Scenario 2/4: 잘λͺ»λœ λΉ„λ°€λ²ˆν˜Έ μ—λŸ¬
747
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
748
+
749
+ πŸ”¨ κ΅¬ν˜„ 쀑...
750
+ βœ… auth.service.ts - λΉ„λ°€λ²ˆν˜Έ 검증 둜직
751
+
752
+ πŸ” 검증 쀑...
753
+ βœ… Given: OK
754
+ βœ… When: OK
755
+ ❌ Then: "Invalid credentials" μ—λŸ¬ λ©”μ‹œμ§€
756
+ μ‹€μ œ: "Error" λ°˜ν™˜
757
+
758
+ πŸ”„ μžλ™ μˆ˜μ • 1/3...
759
+ μˆ˜μ •: auth.service.ts line 42
760
+
761
+ πŸ” μž¬κ²€μ¦...
762
+ βœ… Then: OK
763
+
764
+ βœ… Scenario 2 톡과! (μˆ˜μ • 1회)
765
+
766
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
767
+ 🎯 Scenario 3/4: 이메일 ν˜•μ‹ 검증
768
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
769
+
770
+ πŸ”¨ κ΅¬ν˜„ 쀑...
771
+ πŸ” 검증 쀑...
772
+ βœ… Scenario 3 톡과!
773
+
774
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
775
+ 🎯 Scenario 4/4: λΉ„λ°€λ²ˆν˜Έ μ°ΎκΈ° 링크
776
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
777
+
778
+ πŸ”¨ κ΅¬ν˜„ 쀑...
779
+ πŸ” 검증 쀑...
780
+ βœ… Scenario 4 톡과!
781
+
782
+ β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
783
+ β”‚ πŸ“Š QUALITY REPORT: login β”‚
784
+ β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
785
+ β”‚ β”‚
786
+ β”‚ βœ… μ‹œλ‚˜λ¦¬μ˜€: 4/4 톡과 β”‚
787
+ β”‚ β”‚
788
+ β”‚ | # | Scenario | Status | Retries | β”‚
789
+ β”‚ |---|───────────────────────|───────|─────────| β”‚
790
+ β”‚ | 1 | μœ νš¨ν•œ 둜그인 성곡 | βœ… | 0 | β”‚
791
+ β”‚ | 2 | 잘λͺ»λœ λΉ„λ°€λ²ˆν˜Έ μ—λŸ¬ | βœ… | 1 | β”‚
792
+ β”‚ | 3 | 이메일 ν˜•μ‹ 검증 | βœ… | 0 | β”‚
793
+ β”‚ | 4 | λΉ„λ°€λ²ˆν˜Έ μ°ΎκΈ° 링크 | βœ… | 0 | β”‚
794
+ β”‚ β”‚
795
+ β”‚ πŸ“ˆ ν’ˆμ§ˆ 점수: 94/100 β”‚
796
+ β”‚ λΉŒλ“œ: βœ… | ν…ŒμŠ€νŠΈ: βœ… | νƒ€μž…: βœ… β”‚
797
+ β”‚ β”‚
798
+ β”‚ ⏱️ 총 μ†Œμš”: 3m 42s β”‚
799
+ β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
800
+
801
+ πŸŽ‰ κ΅¬ν˜„ μ™„λ£Œ! λͺ¨λ“  μ‹œλ‚˜λ¦¬μ˜€ 톡과.
802
+ ```
803
+
804
+ ### Phase-specific Execution
805
+
806
+ ```
807
+ User: /vibe.run "brick-game" --phase 2
808
+
809
+ Claude:
810
+ πŸ“„ Reading SPEC: .claude/vibe/specs/brick-game.md
811
+ 🎯 Executing Phase 2 only.
812
+
813
+ Phase 2: Game Logic
814
+ 1. [ ] Paddle movement implementation
815
+ 2. [ ] Ball physics engine
816
+ 3. [ ] Brick collision handling
817
+ 4. [ ] Score system
818
+ 5. [ ] Game over conditions
819
+
820
+ ⚑ Launching parallel exploration...
821
+ [Task(haiku) Γ— 3 launched in parallel]
822
+
823
+ πŸš€ Starting implementation...
824
+ ```
825
+
826
+ ## Error Handling
827
+
828
+ On failure:
829
+ 1. Check error message
830
+ 2. Review `<constraints>`
831
+ 3. Fix code and retry
832
+ 4. If continues to fail, report to user
833
+
834
+ ## Next Step
835
+
836
+ ```
837
+ /vibe.verify "brick-game"
838
+ ```
839
+
840
+ ---
841
+
842
+ ARGUMENTS: $ARGUMENTS