@su-record/vibe 2.10.2 → 2.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (266) hide show
  1. package/CLAUDE.md +6 -0
  2. package/README.en.md +50 -28
  3. package/README.md +37 -9
  4. package/dist/cli/auth.d.ts +2 -2
  5. package/dist/cli/auth.js +12 -12
  6. package/dist/cli/auth.js.map +1 -1
  7. package/dist/cli/commands/codex-proxy.d.ts +1 -1
  8. package/dist/cli/commands/codex-proxy.js +11 -11
  9. package/dist/cli/commands/codex-proxy.js.map +1 -1
  10. package/dist/cli/commands/config.d.ts +1 -1
  11. package/dist/cli/commands/config.d.ts.map +1 -1
  12. package/dist/cli/commands/config.js +22 -21
  13. package/dist/cli/commands/config.js.map +1 -1
  14. package/dist/cli/commands/info.js +2 -2
  15. package/dist/cli/commands/init.d.ts +2 -2
  16. package/dist/cli/commands/init.d.ts.map +1 -1
  17. package/dist/cli/commands/init.js +20 -16
  18. package/dist/cli/commands/init.js.map +1 -1
  19. package/dist/cli/commands/setup.d.ts +1 -1
  20. package/dist/cli/commands/setup.js +24 -24
  21. package/dist/cli/commands/setup.js.map +1 -1
  22. package/dist/cli/commands/skills.d.ts.map +1 -1
  23. package/dist/cli/commands/skills.js +8 -7
  24. package/dist/cli/commands/skills.js.map +1 -1
  25. package/dist/cli/commands/update.d.ts.map +1 -1
  26. package/dist/cli/commands/update.js +28 -16
  27. package/dist/cli/commands/update.js.map +1 -1
  28. package/dist/cli/design/design-md-parser.d.ts +25 -0
  29. package/dist/cli/design/design-md-parser.d.ts.map +1 -0
  30. package/dist/cli/design/design-md-parser.js +86 -0
  31. package/dist/cli/design/design-md-parser.js.map +1 -0
  32. package/dist/cli/design/design-md-parser.test.d.ts +2 -0
  33. package/dist/cli/design/design-md-parser.test.d.ts.map +1 -0
  34. package/dist/cli/design/design-md-parser.test.js +149 -0
  35. package/dist/cli/design/design-md-parser.test.js.map +1 -0
  36. package/dist/cli/index.js +22 -23
  37. package/dist/cli/index.js.map +1 -1
  38. package/dist/cli/llm/antigravity-commands.d.ts +25 -0
  39. package/dist/cli/llm/antigravity-commands.d.ts.map +1 -0
  40. package/dist/cli/llm/antigravity-commands.js +142 -0
  41. package/dist/cli/llm/antigravity-commands.js.map +1 -0
  42. package/dist/cli/llm/claude-commands.d.ts.map +1 -1
  43. package/dist/cli/llm/claude-commands.js +3 -1
  44. package/dist/cli/llm/claude-commands.js.map +1 -1
  45. package/dist/cli/llm/config.js +7 -7
  46. package/dist/cli/llm/config.js.map +1 -1
  47. package/dist/cli/llm/gemini-commands.d.ts.map +1 -1
  48. package/dist/cli/llm/gemini-commands.js +7 -4
  49. package/dist/cli/llm/gemini-commands.js.map +1 -1
  50. package/dist/cli/llm/gpt-commands.d.ts.map +1 -1
  51. package/dist/cli/llm/gpt-commands.js +3 -3
  52. package/dist/cli/llm/gpt-commands.js.map +1 -1
  53. package/dist/cli/llm/help.js +4 -4
  54. package/dist/cli/llm/index.d.ts +1 -1
  55. package/dist/cli/llm/index.d.ts.map +1 -1
  56. package/dist/cli/llm/index.js +1 -1
  57. package/dist/cli/llm/index.js.map +1 -1
  58. package/dist/cli/llm.d.ts +2 -2
  59. package/dist/cli/llm.js +2 -2
  60. package/dist/cli/postinstall/constants.d.ts.map +1 -1
  61. package/dist/cli/postinstall/constants.js +18 -17
  62. package/dist/cli/postinstall/constants.js.map +1 -1
  63. package/dist/cli/postinstall/inline-skills.js +5 -5
  64. package/dist/cli/postinstall/inline-skills.js.map +1 -1
  65. package/dist/cli/postinstall/main.d.ts.map +1 -1
  66. package/dist/cli/postinstall/main.js +14 -9
  67. package/dist/cli/postinstall/main.js.map +1 -1
  68. package/dist/cli/setup/CodexHooks.d.ts +20 -0
  69. package/dist/cli/setup/CodexHooks.d.ts.map +1 -0
  70. package/dist/cli/setup/CodexHooks.js +50 -0
  71. package/dist/cli/setup/CodexHooks.js.map +1 -0
  72. package/dist/cli/setup/CodexHooks.test.d.ts +2 -0
  73. package/dist/cli/setup/CodexHooks.test.d.ts.map +1 -0
  74. package/dist/cli/setup/CodexHooks.test.js +23 -0
  75. package/dist/cli/setup/CodexHooks.test.js.map +1 -0
  76. package/dist/cli/setup/LegacyMigration.js +2 -2
  77. package/dist/cli/setup/ProjectSetup.d.ts +4 -4
  78. package/dist/cli/setup/ProjectSetup.d.ts.map +1 -1
  79. package/dist/cli/setup/ProjectSetup.js +21 -19
  80. package/dist/cli/setup/ProjectSetup.js.map +1 -1
  81. package/dist/cli/setup/index.d.ts +1 -0
  82. package/dist/cli/setup/index.d.ts.map +1 -1
  83. package/dist/cli/setup/index.js +1 -0
  84. package/dist/cli/setup/index.js.map +1 -1
  85. package/dist/cli/setup.d.ts +2 -1
  86. package/dist/cli/setup.d.ts.map +1 -1
  87. package/dist/cli/setup.js +2 -1
  88. package/dist/cli/setup.js.map +1 -1
  89. package/dist/cli/types.d.ts +7 -9
  90. package/dist/cli/types.d.ts.map +1 -1
  91. package/dist/cli/utils/cli-detector.d.ts +5 -5
  92. package/dist/cli/utils/cli-detector.d.ts.map +1 -1
  93. package/dist/cli/utils/cli-detector.js +18 -14
  94. package/dist/cli/utils/cli-detector.js.map +1 -1
  95. package/dist/cli/utils/cli-detector.test.d.ts +2 -0
  96. package/dist/cli/utils/cli-detector.test.d.ts.map +1 -0
  97. package/dist/cli/utils/cli-detector.test.js +51 -0
  98. package/dist/cli/utils/cli-detector.test.js.map +1 -0
  99. package/dist/infra/lib/ReviewRace.d.ts +4 -4
  100. package/dist/infra/lib/ReviewRace.d.ts.map +1 -1
  101. package/dist/infra/lib/ReviewRace.js +16 -16
  102. package/dist/infra/lib/ReviewRace.js.map +1 -1
  103. package/dist/infra/lib/SkillRepository.js +7 -7
  104. package/dist/infra/lib/antigravity/auth.d.ts +18 -0
  105. package/dist/infra/lib/antigravity/auth.d.ts.map +1 -0
  106. package/dist/infra/lib/antigravity/auth.js +32 -0
  107. package/dist/infra/lib/antigravity/auth.js.map +1 -0
  108. package/dist/infra/lib/antigravity/capabilities.d.ts +28 -0
  109. package/dist/infra/lib/antigravity/capabilities.d.ts.map +1 -0
  110. package/dist/infra/lib/antigravity/capabilities.js +178 -0
  111. package/dist/infra/lib/antigravity/capabilities.js.map +1 -0
  112. package/dist/infra/lib/antigravity/chat.d.ts +34 -0
  113. package/dist/infra/lib/antigravity/chat.d.ts.map +1 -0
  114. package/dist/infra/lib/antigravity/chat.js +160 -0
  115. package/dist/infra/lib/antigravity/chat.js.map +1 -0
  116. package/dist/infra/lib/antigravity/completion.d.ts +12 -0
  117. package/dist/infra/lib/antigravity/completion.d.ts.map +1 -0
  118. package/dist/infra/lib/antigravity/completion.js +13 -0
  119. package/dist/infra/lib/antigravity/completion.js.map +1 -0
  120. package/dist/infra/lib/antigravity/constants.d.ts +8 -0
  121. package/dist/infra/lib/antigravity/constants.d.ts.map +1 -0
  122. package/dist/infra/lib/antigravity/constants.js +11 -0
  123. package/dist/infra/lib/antigravity/constants.js.map +1 -0
  124. package/dist/infra/lib/antigravity/index.d.ts +13 -0
  125. package/dist/infra/lib/antigravity/index.d.ts.map +1 -0
  126. package/dist/infra/lib/antigravity/index.js +12 -0
  127. package/dist/infra/lib/antigravity/index.js.map +1 -0
  128. package/dist/infra/lib/antigravity/models.d.ts +11 -0
  129. package/dist/infra/lib/antigravity/models.d.ts.map +1 -0
  130. package/dist/infra/lib/antigravity/models.js +38 -0
  131. package/dist/infra/lib/antigravity/models.js.map +1 -0
  132. package/dist/infra/lib/antigravity/orchestration.d.ts +33 -0
  133. package/dist/infra/lib/antigravity/orchestration.d.ts.map +1 -0
  134. package/dist/infra/lib/antigravity/orchestration.js +62 -0
  135. package/dist/infra/lib/antigravity/orchestration.js.map +1 -0
  136. package/dist/infra/lib/antigravity/types.d.ts +115 -0
  137. package/dist/infra/lib/antigravity/types.d.ts.map +1 -0
  138. package/dist/infra/lib/antigravity/types.js +5 -0
  139. package/dist/infra/lib/antigravity/types.js.map +1 -0
  140. package/dist/infra/lib/codex-proxy.d.ts +1 -1
  141. package/dist/infra/lib/codex-proxy.js +9 -9
  142. package/dist/infra/lib/codex-proxy.js.map +1 -1
  143. package/dist/infra/lib/config/GlobalConfigManager.d.ts +6 -3
  144. package/dist/infra/lib/config/GlobalConfigManager.d.ts.map +1 -1
  145. package/dist/infra/lib/config/GlobalConfigManager.js +47 -37
  146. package/dist/infra/lib/config/GlobalConfigManager.js.map +1 -1
  147. package/dist/infra/lib/config/GlobalConfigManager.test.d.ts +2 -0
  148. package/dist/infra/lib/config/GlobalConfigManager.test.d.ts.map +1 -0
  149. package/dist/infra/lib/config/GlobalConfigManager.test.js +9 -0
  150. package/dist/infra/lib/config/GlobalConfigManager.test.js.map +1 -0
  151. package/dist/infra/lib/constants.js +1 -1
  152. package/dist/infra/lib/constants.js.map +1 -1
  153. package/dist/infra/lib/gemini/auth.d.ts +3 -3
  154. package/dist/infra/lib/gemini/auth.js +9 -9
  155. package/dist/infra/lib/gemini/auth.js.map +1 -1
  156. package/dist/infra/lib/llm/auth/AuthProfileManager.d.ts +3 -3
  157. package/dist/infra/lib/llm/auth/AuthProfileManager.d.ts.map +1 -1
  158. package/dist/infra/lib/llm/auth/AuthProfileManager.js.map +1 -1
  159. package/dist/infra/lib/llm/auth/AuthProfileManager.test.js +8 -8
  160. package/dist/infra/lib/llm/auth/AuthProfileManager.test.js.map +1 -1
  161. package/dist/infra/lib/llm/auth/ConfigManager.js +2 -2
  162. package/dist/infra/lib/llm/auth/ConfigManager.js.map +1 -1
  163. package/dist/infra/lib/llm/auth/TokenRefresher.d.ts +1 -1
  164. package/dist/infra/lib/llm/auth/TokenRefresher.js +1 -1
  165. package/dist/infra/lib/llm/auth/index.js +1 -1
  166. package/dist/infra/lib/llm/auth/index.js.map +1 -1
  167. package/dist/infra/lib/llm/index.d.ts +1 -1
  168. package/dist/infra/lib/llm/index.js +1 -1
  169. package/dist/infra/lib/llm/types.d.ts +3 -3
  170. package/dist/infra/lib/llm/types.d.ts.map +1 -1
  171. package/dist/infra/lib/llm/types.js +1 -1
  172. package/dist/infra/lib/llm/utils/stream.js +1 -1
  173. package/dist/infra/lib/llm/utils/stream.js.map +1 -1
  174. package/dist/infra/lib/llm-availability.d.ts +5 -5
  175. package/dist/infra/lib/llm-availability.d.ts.map +1 -1
  176. package/dist/infra/lib/llm-availability.js +13 -10
  177. package/dist/infra/lib/llm-availability.js.map +1 -1
  178. package/dist/infra/lib/llm-availability.test.d.ts +2 -0
  179. package/dist/infra/lib/llm-availability.test.d.ts.map +1 -0
  180. package/dist/infra/lib/llm-availability.test.js +36 -0
  181. package/dist/infra/lib/llm-availability.test.js.map +1 -0
  182. package/dist/infra/lib/ui-ux/UiUxWorkflow.d.ts.map +1 -1
  183. package/dist/infra/lib/ui-ux/UiUxWorkflow.js +23 -5
  184. package/dist/infra/lib/ui-ux/UiUxWorkflow.js.map +1 -1
  185. package/dist/infra/orchestrator/AgentExecutor.d.ts.map +1 -1
  186. package/dist/infra/orchestrator/AgentExecutor.js +30 -1
  187. package/dist/infra/orchestrator/AgentExecutor.js.map +1 -1
  188. package/dist/infra/orchestrator/AgentManifestCache.js +1 -1
  189. package/dist/infra/orchestrator/AgentManifestCache.js.map +1 -1
  190. package/dist/infra/orchestrator/BackgroundManager.js +2 -2
  191. package/dist/infra/orchestrator/BackgroundManager.js.map +1 -1
  192. package/dist/infra/orchestrator/CodexAgentRuntime.d.ts +12 -0
  193. package/dist/infra/orchestrator/CodexAgentRuntime.d.ts.map +1 -0
  194. package/dist/infra/orchestrator/CodexAgentRuntime.js +94 -0
  195. package/dist/infra/orchestrator/CodexAgentRuntime.js.map +1 -0
  196. package/dist/infra/orchestrator/CodexAgentRuntime.test.d.ts +2 -0
  197. package/dist/infra/orchestrator/CodexAgentRuntime.test.d.ts.map +1 -0
  198. package/dist/infra/orchestrator/CodexAgentRuntime.test.js +37 -0
  199. package/dist/infra/orchestrator/CodexAgentRuntime.test.js.map +1 -0
  200. package/dist/infra/orchestrator/LLMCluster.d.ts +11 -11
  201. package/dist/infra/orchestrator/LLMCluster.d.ts.map +1 -1
  202. package/dist/infra/orchestrator/LLMCluster.js +22 -22
  203. package/dist/infra/orchestrator/LLMCluster.js.map +1 -1
  204. package/dist/infra/orchestrator/MultiLlmResearch.d.ts +3 -3
  205. package/dist/infra/orchestrator/MultiLlmResearch.d.ts.map +1 -1
  206. package/dist/infra/orchestrator/MultiLlmResearch.js +17 -17
  207. package/dist/infra/orchestrator/MultiLlmResearch.js.map +1 -1
  208. package/dist/infra/orchestrator/SmartRouter.d.ts +2 -2
  209. package/dist/infra/orchestrator/SmartRouter.js +7 -7
  210. package/dist/infra/orchestrator/SmartRouter.js.map +1 -1
  211. package/dist/infra/orchestrator/SmartRouter.test.js +74 -74
  212. package/dist/infra/orchestrator/SmartRouter.test.js.map +1 -1
  213. package/dist/infra/orchestrator/agentDiscovery.d.ts +1 -1
  214. package/dist/infra/orchestrator/agentDiscovery.js +4 -4
  215. package/dist/infra/orchestrator/agentDiscovery.js.map +1 -1
  216. package/dist/infra/orchestrator/index.d.ts +17 -17
  217. package/dist/infra/orchestrator/index.d.ts.map +1 -1
  218. package/dist/infra/orchestrator/index.js +30 -30
  219. package/dist/infra/orchestrator/index.js.map +1 -1
  220. package/dist/infra/orchestrator/orchestrator.d.ts +4 -4
  221. package/dist/infra/orchestrator/orchestrator.d.ts.map +1 -1
  222. package/dist/infra/orchestrator/orchestrator.js +5 -5
  223. package/dist/infra/orchestrator/orchestrator.js.map +1 -1
  224. package/dist/infra/orchestrator/parallelResearch.d.ts.map +1 -1
  225. package/dist/infra/orchestrator/parallelResearch.js +11 -0
  226. package/dist/infra/orchestrator/parallelResearch.js.map +1 -1
  227. package/dist/infra/orchestrator/types.d.ts +7 -8
  228. package/dist/infra/orchestrator/types.d.ts.map +1 -1
  229. package/dist/infra/orchestrator/types.js +17 -18
  230. package/dist/infra/orchestrator/types.js.map +1 -1
  231. package/dist/tools/spec/specGenerator.d.ts +1 -1
  232. package/dist/tools/spec/specGenerator.js +1 -1
  233. package/hooks/antigravity-hooks.json +73 -0
  234. package/hooks/scripts/__tests__/codex-hook-adapter.test.js +31 -0
  235. package/hooks/scripts/__tests__/hook-payload.test.js +29 -0
  236. package/hooks/scripts/__tests__/llm-orchestrate-antigravity.test.js +63 -0
  237. package/hooks/scripts/codex-hook-adapter.js +124 -0
  238. package/hooks/scripts/codex-review-gate.js +7 -3
  239. package/hooks/scripts/devlog-gen.js +1 -1
  240. package/hooks/scripts/hook-payload.js +64 -0
  241. package/hooks/scripts/lib/dispatcher.js +20 -0
  242. package/hooks/scripts/llm-orchestrate.js +40 -44
  243. package/hooks/scripts/prompt-dispatcher.js +9 -9
  244. package/hooks/scripts/stop-notify.js +1 -1
  245. package/hooks/scripts/utils.js +1 -1
  246. package/package.json +1 -1
  247. package/skills/brand-assets/SKILL.md +11 -11
  248. package/skills/docs/SKILL.md +10 -5
  249. package/skills/event-comms/SKILL.md +1 -1
  250. package/skills/event-ops/SKILL.md +4 -4
  251. package/skills/spec/SKILL.md +29 -29
  252. package/skills/spec-review/SKILL.md +23 -23
  253. package/skills/tool-fallback/SKILL.md +2 -2
  254. package/skills/tool-fallback/rubrics/fallback-chain.md +2 -2
  255. package/skills/vibe.design/SKILL.md +183 -0
  256. package/skills/vibe.design/heuristics/code-extract.md +100 -0
  257. package/skills/vibe.design/references/README.md +39 -0
  258. package/skills/vibe.design/templates/DESIGN.md.template +100 -0
  259. package/skills/vibe.event/SKILL.md +1 -1
  260. package/skills/vibe.figma/SKILL.md +17 -1
  261. package/skills/vibe.review/SKILL.md +20 -13
  262. package/skills/vibe.run/SKILL.md +47 -30
  263. package/skills/vibe.spec/SKILL.md +4 -4
  264. package/skills/vibe.utils/SKILL.md +17 -17
  265. package/skills/vibe.verify/SKILL.md +20 -0
  266. package/hooks/gemini-hooks.json +0 -73
@@ -16,7 +16,7 @@ user-invocable: true
16
16
  /vibe.review PR#123 # Review specific PR
17
17
  /vibe.review feature/login # Review specific branch
18
18
  /vibe.review src/api/ # Review specific path
19
- /vibe.review --race # Multi-LLM race mode (GPT + Gemini)
19
+ /vibe.review --race # Multi-LLM race mode (GPT + Antigravity)
20
20
  /vibe.review --race security # Race mode for specific review type
21
21
  ```
22
22
 
@@ -30,11 +30,11 @@ user-invocable: true
30
30
  > CODEX_AVAILABLE=$(node "{{VIBE_PATH}}/hooks/scripts/codex-detect.js" 2>/dev/null || echo "unavailable")
31
31
  > ```
32
32
  >
33
- > `available`이면 `/codex:review`, `/codex:rescue` 자동 호출. `unavailable`이면 기존 GPT+Gemini Race 모드로 동작.
33
+ > `available`이면 `/codex:review`, `/codex:rescue` 자동 호출. `unavailable`이면 기존 GPT+Antigravity Race 모드로 동작.
34
34
 
35
35
  ## Race Mode (v2.6.9)
36
36
 
37
- **Multi-LLM competitive review** - Same review task runs on GPT + Gemini in parallel, results are cross-validated.
37
+ **Multi-LLM competitive review** - Same review task runs on GPT + Antigravity in parallel, results are cross-validated.
38
38
 
39
39
  ### How It Works
40
40
 
@@ -43,7 +43,7 @@ user-invocable: true
43
43
 
44
44
  security-review:
45
45
  ├─ GPT Codex → [SQL injection, XSS]
46
- └─ Gemini → [SQL injection, CSRF]
46
+ └─ Antigravity → [SQL injection, CSRF]
47
47
 
48
48
  Cross-validation:
49
49
  - SQL injection (2/2) → 🔴 P1 (100% confidence)
@@ -73,14 +73,14 @@ security-review:
73
73
  ## SECURITY Review (Race Mode)
74
74
 
75
75
  **Duration**: 3420ms
76
- **Models**: GPT Codex, Gemini
76
+ **Models**: GPT Codex, Antigravity
77
77
 
78
78
  ### Model Results
79
79
 
80
80
  | Model | Issues Found | Duration | Status |
81
81
  |-------|--------------|----------|--------|
82
82
  | gpt | 3 | 1823ms | OK |
83
- | gemini | 2 | 2156ms | OK |
83
+ | antigravity | 2 | 2156ms | OK |
84
84
 
85
85
  ### Cross-Validated Issues
86
86
 
@@ -89,7 +89,7 @@ security-review:
89
89
 
90
90
  #### 🔴 P1 - SQL Injection in user query
91
91
 
92
- - **Confidence**: 100% (gpt, gemini)
92
+ - **Confidence**: 100% (gpt, antigravity)
93
93
  - **Severity**: critical
94
94
  - **Location**: `src/api/users.ts:42`
95
95
  - **Suggestion**: Use parameterized queries
@@ -103,7 +103,7 @@ security-review:
103
103
 
104
104
  ### Codex Review (Codex 플러그인 활성화 시)
105
105
 
106
- Race Mode에서 GPT+Gemini와 **동시에** Codex review 실행하여 3중 교차 검증:
106
+ Race Mode에서 GPT+Antigravity와 **동시에** Codex review 실행하여 3중 교차 검증:
107
107
 
108
108
  ```
109
109
  /codex:review
@@ -112,7 +112,7 @@ Race Mode에서 GPT+Gemini와 **동시에** Codex review 실행하여 3중 교
112
112
  교차 검증 테이블:
113
113
 
114
114
  ```markdown
115
- | Issue | GPT | Gemini | Codex | Confidence |
115
+ | Issue | GPT | Antigravity | Codex | Confidence |
116
116
  |-------|-----|--------|-------|------------|
117
117
  | {이슈} | ✅/❌ | ✅/❌ | ✅/❌ | {%} |
118
118
  ```
@@ -129,7 +129,7 @@ Race Mode에서 GPT+Gemini와 **동시에** Codex review 실행하여 3중 교
129
129
  | Quick iteration | ❌ Standard review |
130
130
  | API cost concerns | ❌ Standard review |
131
131
 
132
- ### Tool Invocation (Race Mode - GPT + Gemini in parallel via Bash)
132
+ ### Tool Invocation (Race Mode - GPT + Antigravity in parallel via Bash)
133
133
 
134
134
  **🚨 Use --input file to avoid CLI argument length limits and Windows pipe issues.**
135
135
 
@@ -138,7 +138,7 @@ Race Mode에서 GPT+Gemini와 **동시에** Codex review 실행하여 3중 교
138
138
  - `{"prompt": "Review this code for [REVIEW_TYPE]. Return JSON: {issues: [{id, title, description, severity, suggestion}]}. Code: [CODE_CONTENT]"}`
139
139
  - Where `[CODE_CONTENT]` is the code text (properly JSON-escaped inside the prompt string)
140
140
  3. Script path: `[LLM_SCRIPT]` = `{{VIBE_PATH}}/hooks/scripts/llm-orchestrate.js`
141
- 4. Run GPT + Gemini in PARALLEL (two Bash tool calls at once):
141
+ 4. Run GPT + Antigravity in PARALLEL (two Bash tool calls at once):
142
142
 
143
143
  ```bash
144
144
  # GPT review (Bash tool call 1)
@@ -146,8 +146,8 @@ node "[LLM_SCRIPT]" gpt orchestrate-json --input "[SCRATCHPAD]/review-input.json
146
146
  ```
147
147
 
148
148
  ```bash
149
- # Gemini review (Bash tool call 2 - run in parallel)
150
- node "[LLM_SCRIPT]" gemini orchestrate-json --input "[SCRATCHPAD]/review-input.json"
149
+ # Antigravity review (Bash tool call 2 - run in parallel)
150
+ node "[LLM_SCRIPT]" antigravity orchestrate-json --input "[SCRATCHPAD]/review-input.json"
151
151
  ```
152
152
 
153
153
  ## File Reading Policy (Mandatory)
@@ -284,6 +284,13 @@ Task(subagent_type="ui-antipattern-detector",
284
284
  prompt="Detect UI anti-patterns in: {changed_ui_files}. Check against MASTER.md if exists at .vibe/design-system/{project}/MASTER.md.")
285
285
  ```
286
286
 
287
+ #### Visual P1 Baseline
288
+
289
+ - 프로젝트 루트에 `DESIGN.md` 가 존재하면 **시각 P1 의 1 차 baseline** 으로 사용한다 (§2 Color Palette / §7 Do's & Don'ts).
290
+ - `DESIGN.md` 부재 시 기존 폴백을 사용 (WCAG 2.1 AA + `MASTER.md` + design-audit 기본 5 차원).
291
+ - v1 범위: hex 컬러 드리프트만 P1 후보. spacing / font 드리프트는 Phase 2+ 에서 추가.
292
+ - 안티패턴 검출(⑧) 은 `DESIGN.md §7` 의 "DON'T" 항목을 우선 규칙으로 사용한다.
293
+
287
294
  **findings 통합**: ⑥⑦⑧ findings를 기존 findings[]와 병합 → P1/P2/P3 통합 정렬
288
295
 
289
296
  **⑦ Critical finding 에스컬레이션**: ui-a11y-auditor의 P1 finding은 Review Debate Team(Phase 4.5)에 자동 포함
@@ -69,6 +69,23 @@ Load skill `regress` with: list --feature "{feature-name}"
69
69
 
70
70
  Also load `.vibe/contracts/{feature-name}.md` if present — use it as the contract reference during implementation.
71
71
 
72
+ ### DESIGN.md Gate (UI stack only, before Phase 1)
73
+
74
+ Run immediately after the contract load:
75
+
76
+ ```bash
77
+ # UI stack 감지: .vibe/config.json 의 stacks[].type 중 STACK_TO_SKILLS 가 vibe.design 을 포함하는 것
78
+ # DESIGN.md 존재: 프로젝트 루트
79
+ test -f DESIGN.md
80
+ ```
81
+
82
+ - **DESIGN.md present OR no UI stack** → silently continue
83
+ - **DESIGN.md absent AND UI stack present**:
84
+ - interactive mode: 한 줄 안내 — "💡 UI 작업에 `DESIGN.md` 시각 SSOT 가 없습니다. `/vibe.design init` 으로 생성하면 시각 드리프트가 자동 검출됩니다. (생략 가능 — 1 회만 안내)"
85
+ - ultrawork mode: 무음 스킵 (gate 가 막지 않음)
86
+
87
+ > **권유 > 강제**. DESIGN.md 부재는 절대 vibe.run 을 블록하지 않는다.
88
+
72
89
  ### Core Flow
73
90
 
74
91
  ```
@@ -223,9 +240,9 @@ When you include `ultrawork` (or `ulw`), ALL of these activate automatically:
223
240
  | **Boulder Loop** | Auto-continues until ALL phases complete |
224
241
  | **Context Compression** | Aggressive auto-save at 70%+ context |
225
242
  | **No Pause** | Doesn't wait for confirmation between phases |
226
- | **External LLMs** | Auto-consults GPT/Gemini if enabled |
243
+ | **External LLMs** | Auto-consults GPT/Antigravity if enabled |
227
244
  | **Error Recovery** | Loops until 100% or stuck; on stuck auto-records TODO and proceeds (no user prompt) |
228
- | **Race Review (v2.6.9)** | Multi-LLM review (GPT+Gemini) with cross-validation |
245
+ | **Race Review (v2.6.9)** | Multi-LLM review (GPT+Antigravity) with cross-validation |
229
246
 
230
247
  ### Boulder Loop (Inspired by Sisyphus)
231
248
 
@@ -765,12 +782,12 @@ When external LLMs are enabled in `.vibe/config.json`:
765
782
 
766
783
  | Role | Method | Condition |
767
784
  |------|--------|-----------|
768
- | User direct query | `gpt.question`, `gemini.question` | Hook auto-handles |
785
+ | User direct query | `gpt.question`, `antigravity.question` | Hook auto-handles |
769
786
  | Internal orchestration | Call global script via Bash | Claude calls directly |
770
787
 
771
788
  **User questions (Hook auto-handles):**
772
789
  - `gpt.question` - GPT architecture consultation
773
- - `gemini.question` - Gemini Q&A/consultation
790
+ - `antigravity.question` - Antigravity Q&A/consultation
774
791
 
775
792
  **Claude internal calls (directly via Bash):**
776
793
  ```bash
@@ -783,8 +800,8 @@ When external LLMs are enabled in `.vibe/config.json`:
783
800
  # GPT call (short prompt - CLI arg)
784
801
  node "[LLM_SCRIPT]" gpt orchestrate-json "[question content]"
785
802
 
786
- # Gemini call
787
- node "[LLM_SCRIPT]" gemini orchestrate-json "[question content]"
803
+ # Antigravity call
804
+ node "[LLM_SCRIPT]" antigravity orchestrate-json "[question content]"
788
805
 
789
806
  # Custom system prompt usage
790
807
  node "[LLM_SCRIPT]" gpt orchestrate-json "You are a code reviewer" "[question content]"
@@ -796,7 +813,7 @@ node "[LLM_SCRIPT]" gpt orchestrate-json --input "[SCRATCHPAD]/input.json"
796
813
 
797
814
  ### External LLM Fallback
798
815
 
799
- **IMPORTANT**: When GPT/Gemini hook fails, Claude MUST handle the task directly:
816
+ **IMPORTANT**: When GPT/Antigravity hook fails, Claude MUST handle the task directly:
800
817
 
801
818
  **Fallback behavior**:
802
819
  - Do NOT retry the external LLM call
@@ -1140,7 +1157,7 @@ Then: Login success + JWT token returned
1140
1157
  │ Task(haiku) ─┴─→ "Find existing patterns and conventions" │
1141
1158
  │ │
1142
1159
  │ [If GPT enabled] Bash: node "[LLM_SCRIPT]" gpt-codex orchestrate-json "[question]"
1143
- │ [If Gemini enabled] Bash: node "[LLM_SCRIPT]" gemini orchestrate-json "[question]"
1160
+ │ [If Antigravity enabled] Bash: node "[LLM_SCRIPT]" antigravity orchestrate-json "[question]"
1144
1161
  └─────────────────────────────────────────────────────────────────┘
1145
1162
 
1146
1163
  ↓ (wait for all to complete)
@@ -1423,10 +1440,10 @@ When starting a **new project** with brand context in SPEC, auto-generate app ic
1423
1440
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1424
1441
 
1425
1442
  [Check] Brand assets exist? → Skip if favicon.ico exists
1426
- [Check] Gemini API configured? → Required for image generation
1443
+ [Check] Antigravity API configured? → Required for image generation
1427
1444
  [Check] SPEC has brand context? → Extract app name, colors, style
1428
1445
 
1429
- [Generate] Creating app icon with Gemini Image API...
1446
+ [Generate] Creating app icon with Antigravity Image API...
1430
1447
  - Prompt: "App icon for [AppName], [style], [color]..."
1431
1448
  - Generated: 512x512 master icon
1432
1449
 
@@ -1459,34 +1476,34 @@ Brand:
1459
1476
  **Trigger Conditions:**
1460
1477
  - First `/vibe.run` execution (no existing icons)
1461
1478
  - SPEC contains brand/design context
1462
- - Gemini API key configured (`vibe gemini key <key>`)
1479
+ - Antigravity API key configured (`vibe antigravity key <key>`)
1463
1480
 
1464
1481
  **Manual Generation:**
1465
1482
  ```bash
1466
1483
  # [LLM_SCRIPT] = {{VIBE_PATH}}/hooks/scripts/llm-orchestrate.js
1467
- node "[LLM_SCRIPT]" gemini image "App icon for MyApp, primary color #2F6BFF, square format 1:1, simple recognizable design, works well at small sizes, no text or letters, solid or gradient background, modern minimalist" --output "./public/app-icon.png"
1484
+ node "[LLM_SCRIPT]" antigravity image "App icon for MyApp, primary color #2F6BFF, square format 1:1, simple recognizable design, works well at small sizes, no text or letters, solid or gradient background, modern minimalist" --output "./public/app-icon.png"
1468
1485
  ```
1469
1486
 
1470
1487
  ---
1471
1488
 
1472
- ### 5. Race Code Review (GPT + Gemini) + Auto-Fix (v2.6.9)
1489
+ ### 5. Race Code Review (GPT + Antigravity) + Auto-Fix (v2.6.9)
1473
1490
 
1474
- After all scenarios are implemented, **GPT and Gemini review in parallel with cross-validation**:
1491
+ After all scenarios are implemented, **GPT and Antigravity review in parallel with cross-validation**:
1475
1492
 
1476
1493
  > **ULTRAWORK Default**: In ULTRAWORK mode, race review is automatically enabled.
1477
1494
 
1478
1495
  ```
1479
1496
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1480
- 🏁 RACE CODE REVIEW (GPT + Gemini)
1497
+ 🏁 RACE CODE REVIEW (GPT + Antigravity)
1481
1498
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1482
1499
 
1483
1500
  [Step 1] Parallel review execution...
1484
1501
  ├─ GPT Codex: Reviewing...
1485
- └─ Gemini: Reviewing...
1502
+ └─ Antigravity: Reviewing...
1486
1503
 
1487
1504
  [Step 2] Cross-validation results:
1488
1505
  ┌──────────────────────────────────────────────────────────────────┐
1489
- │ Issue │ GPT │ Gemini │ Codex │ Confidence│
1506
+ │ Issue │ GPT │ Antigravity │ Codex │ Confidence│
1490
1507
  │────────────────────────────────│─────│────────│───────│───────────│
1491
1508
  │ Timing attack in password │ ✅ │ ✅ │ ✅ │ 100% → P1 │
1492
1509
  │ Rate limiting missing │ ✅ │ ✅ │ ✅ │ 100% → P1 │
@@ -1509,7 +1526,7 @@ After all scenarios are implemented, **GPT and Gemini review in parallel with cr
1509
1526
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1510
1527
  ```
1511
1528
 
1512
- **Race Review Invocation (GPT + Gemini in parallel via Bash):**
1529
+ **Race Review Invocation (GPT + Antigravity in parallel via Bash):**
1513
1530
 
1514
1531
  **🚨 Use --input file to avoid CLI argument length limits and Windows pipe issues.**
1515
1532
 
@@ -1518,7 +1535,7 @@ After all scenarios are implemented, **GPT and Gemini review in parallel with cr
1518
1535
  - `{"prompt": "Review this code for security, performance, and best practices. Return JSON: {issues: [{id, title, description, severity, suggestion}]}. Code: [CODE_CONTENT]"}`
1519
1536
  - Where `[CODE_CONTENT]` is the code text (properly JSON-escaped inside the prompt string)
1520
1537
  3. Script path: `[LLM_SCRIPT]` = `{{VIBE_PATH}}/hooks/scripts/llm-orchestrate.js`
1521
- 4. Run GPT + Gemini in PARALLEL (two Bash tool calls at once):
1538
+ 4. Run GPT + Antigravity in PARALLEL (two Bash tool calls at once):
1522
1539
 
1523
1540
  ```bash
1524
1541
  # GPT review (Bash tool call 1)
@@ -1526,8 +1543,8 @@ node "[LLM_SCRIPT]" gpt orchestrate-json --input "[SCRATCHPAD]/review-input.json
1526
1543
  ```
1527
1544
 
1528
1545
  ```bash
1529
- # Gemini review (Bash tool call 2 - run in parallel)
1530
- node "[LLM_SCRIPT]" gemini orchestrate-json --input "[SCRATCHPAD]/review-input.json"
1546
+ # Antigravity review (Bash tool call 2 - run in parallel)
1547
+ node "[LLM_SCRIPT]" antigravity orchestrate-json --input "[SCRATCHPAD]/review-input.json"
1531
1548
  ```
1532
1549
 
1533
1550
  **Confidence-based Priority:**
@@ -1558,7 +1575,7 @@ node "[LLM_SCRIPT]" gemini orchestrate-json --input "[SCRATCHPAD]/review-input.j
1558
1575
 
1559
1576
  ### Codex Code Review (Codex 플러그인 활성화 시)
1560
1577
 
1561
- GPT+Gemini race와 **동시에** Codex review 실행:
1578
+ GPT+Antigravity race와 **동시에** Codex review 실행:
1562
1579
 
1563
1580
  ```
1564
1581
  /codex:review
@@ -1567,14 +1584,14 @@ GPT+Gemini race와 **동시에** Codex review 실행:
1567
1584
  결과를 race review 교차 검증에 포함 — 3중 리뷰:
1568
1585
 
1569
1586
  ```markdown
1570
- | Issue | GPT | Gemini | Codex | Confidence |
1587
+ | Issue | GPT | Antigravity | Codex | Confidence |
1571
1588
  |-------|-----|--------|-------|------------|
1572
1589
  | {이슈} | ✅/❌ | ✅/❌ | ✅/❌ | {%} |
1573
1590
  ```
1574
1591
 
1575
1592
  ### 6. Quality Report (Auto-generated)
1576
1593
 
1577
- After all scenarios complete + Gemini review, **quality report is auto-generated**:
1594
+ After all scenarios complete + Antigravity review, **quality report is auto-generated**:
1578
1595
 
1579
1596
  ```
1580
1597
  ┌─────────────────────────────────────────────────────────────────┐
@@ -1742,11 +1759,11 @@ Then: Login success + JWT token returned
1742
1759
  ✅ Scenario 4 passed!
1743
1760
 
1744
1761
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1745
- 🔍 GEMINI CODE REVIEW
1762
+ 🔍 ANTIGRAVITY CODE REVIEW
1746
1763
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1747
1764
 
1748
- 📤 Sending code to Gemini...
1749
- 📝 Gemini feedback:
1765
+ 📤 Sending code to Antigravity...
1766
+ 📝 Antigravity feedback:
1750
1767
  1. [Security] Need timing attack prevention → Fixing...
1751
1768
  2. [Performance] Unnecessary DB call → Fixing...
1752
1769
 
@@ -1767,13 +1784,13 @@ Then: Login success + JWT token returned
1767
1784
  │ | 4 | Password reset link | ✅ | 0 | │
1768
1785
  │ │
1769
1786
  │ 📈 Quality score: 94/100 │
1770
- │ Build: ✅ | Tests: ✅ | Types: ✅ | Gemini: ✅ (2 applied) │
1787
+ │ Build: ✅ | Tests: ✅ | Types: ✅ | Antigravity: ✅ (2 applied) │
1771
1788
  │ │
1772
1789
  │ ⏱️ Started: {start_time} │
1773
1790
  │ ⏱️ Completed: {getCurrentTime 결과} │
1774
1791
  └─────────────────────────────────────────────────────────────────┘
1775
1792
 
1776
- 🎉 Implementation complete! All scenarios passed + Gemini review applied.
1793
+ 🎉 Implementation complete! All scenarios passed + Antigravity review applied.
1777
1794
 
1778
1795
  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
1779
1796
  🔍 AUTO REVIEW (13+ Agents)
@@ -1867,7 +1884,7 @@ Grades:
1867
1884
  |------|---------------|-----------|
1868
1885
  | **Scenario Complete** | 95 | Each scenario must score ≥95 |
1869
1886
  | **Phase Complete** | 95 | Average of all scenarios ≥95 |
1870
- | **Feature Complete** | 95 | All phases complete + Gemini review |
1887
+ | **Feature Complete** | 95 | All phases complete + Antigravity review |
1871
1888
 
1872
1889
  ### Auto-Fix Triggers
1873
1890
 
@@ -62,13 +62,13 @@ Phase 2: Plan (skill: plan)
62
62
 
63
63
  Phase 3: SPEC 작성 (skill: spec)
64
64
  - PTCF 구조 SPEC 문서 + Feature(BDD) 파일
65
- - Parallel research (GPT/Gemini/Claude agents)
65
+ - Parallel research (GPT/Antigravity/Claude agents)
66
66
  - Large scope 자동 분할
67
67
  - Ambiguity scan + 품질 게이트(100점, 수렴까지 루프)
68
68
  - 출력: .vibe/specs/{feature}.md + .vibe/features/{feature}.feature
69
69
 
70
70
  Phase 4: SPEC Review (skill: spec-review)
71
- - Race Review (GPT + Gemini, 라운드 수 캡 없음, 수렴까지 루프)
71
+ - Race Review (GPT + Antigravity, 라운드 수 캡 없음, 수렴까지 루프)
72
72
  - (옵션) Codex adversarial review
73
73
  - 사용자 최종 체크포인트
74
74
 
@@ -345,7 +345,7 @@ Load skill `spec` with input: .vibe/plans/{feature}.md
345
345
 
346
346
  1. Project analysis (explorer agent)
347
347
  2. config.json references 로드
348
- 3. Parallel research (GPT + Gemini + Claude agents, 8개 병렬)
348
+ 3. Parallel research (GPT + Antigravity + Claude agents, 8개 병렬)
349
349
  4. UI/UX Design Intelligence (UI 키워드 시 자동)
350
350
  5. PTCF SPEC 작성 (Large scope 자동 분할)
351
351
  6. Feature file (BDD) 생성
@@ -369,7 +369,7 @@ Load skill `spec-review` with feature: {feature-name}
369
369
 
370
370
  1. SPEC/Feature 파일 로드 (single/split 자동 감지)
371
371
  2. Quality Validation (100점 게이트, 수렴까지 auto-fix 루프)
372
- 3. Race Review (GPT + Gemini parallel, 라운드 수 캡 없음, P1=0 + 수렴 시 종료)
372
+ 3. Race Review (GPT + Antigravity parallel, 라운드 수 캡 없음, P1=0 + 수렴 시 종료)
373
373
  4. (옵션) Codex adversarial review
374
374
  5. Review Debate Team (2+ P1/P2 이슈 시)
375
375
  6. 사용자 최종 체크포인트
@@ -19,7 +19,7 @@ Collection of utility tools. Use with options.
19
19
  /vibe.utils --e2e "scenario" # E2E browser test (Playwright)
20
20
  /vibe.utils --e2e --visual # Visual regression test
21
21
  /vibe.utils --e2e --record # Video recording
22
- /vibe.utils --image "description" # Generate image with Gemini (icon, banner, etc.)
22
+ /vibe.utils --image "description" # Generate image with Antigravity (icon, banner, etc.)
23
23
  /vibe.utils --image --icon "AppName" # Generate app icon/favicon
24
24
  /vibe.utils --build-fix # Fix build errors (minimal diff)
25
25
  /vibe.utils --clean # Remove dead code + DELETION_LOG
@@ -35,8 +35,8 @@ Read and follow `agents/ui-previewer.md` for UI preview generation.
35
35
 
36
36
  Generate UI preview from description or design folder.
37
37
 
38
- - **Gemini enabled**: UI mockup image + component code generation (via `llm-orchestrate.js` → `gemini-api`)
39
- - **Gemini disabled**: ASCII art fallback
38
+ - **Antigravity enabled**: UI mockup image + component code generation
39
+ - **Antigravity disabled**: ASCII art fallback
40
40
 
41
41
  **Input types:**
42
42
 
@@ -86,10 +86,10 @@ Generate Mermaid diagrams for architecture visualization.
86
86
 
87
87
  ## --image (Image Generation)
88
88
 
89
- Generate images using Gemini Image API.
89
+ Generate images using the Antigravity image backend.
90
90
 
91
- - **Default**: Gemini Flash Image (`gemini-2.5-flash-image`) - 빠르고 가벼운 이미지 생성
92
- - **--pro**: Gemini Pro Image (`gemini-3-pro-image-preview`) - 고품질 이미지 생성
91
+ - **Default**: Antigravity fast image - 빠르고 가벼운 이미지 생성
92
+ - **--pro**: Antigravity pro image - 고품질 이미지 생성
93
93
 
94
94
  ### MANDATORY Tool Invocation
95
95
 
@@ -98,19 +98,19 @@ Generate images using Gemini Image API.
98
98
  **Step 0: Script path:**
99
99
  - `[LLM_SCRIPT]` = `{{VIBE_PATH}}/hooks/scripts/llm-orchestrate.js`
100
100
 
101
- **General image generation (Gemini Flash Image):**
101
+ **General image generation (Antigravity fast image):**
102
102
  ```bash
103
- node "[LLM_SCRIPT]" gemini image "IMAGE_DESCRIPTION" --output "OUTPUT_PATH"
103
+ node "[LLM_SCRIPT]" antigravity image "IMAGE_DESCRIPTION" --output "OUTPUT_PATH"
104
104
  ```
105
105
 
106
- **Pro quality (Gemini Pro Image):**
106
+ **Pro quality (Antigravity pro image):**
107
107
  ```bash
108
- node "[LLM_SCRIPT]" gemini image "IMAGE_DESCRIPTION" --pro --output "OUTPUT_PATH"
108
+ node "[LLM_SCRIPT]" antigravity image "IMAGE_DESCRIPTION" --pro --output "OUTPUT_PATH"
109
109
  ```
110
110
 
111
111
  **With size option:**
112
112
  ```bash
113
- node "[LLM_SCRIPT]" gemini image "IMAGE_DESCRIPTION" --size "1920x1080" --output "OUTPUT_PATH"
113
+ node "[LLM_SCRIPT]" antigravity image "IMAGE_DESCRIPTION" --size "1920x1080" --output "OUTPUT_PATH"
114
114
  ```
115
115
 
116
116
  ### How to Parse User Request
@@ -125,11 +125,11 @@ node "[LLM_SCRIPT]" gemini image "IMAGE_DESCRIPTION" --size "1920x1080" --output
125
125
  ### Examples
126
126
 
127
127
  ```bash
128
- node "[LLM_SCRIPT]" gemini image "A cute Gemini AI character mascot, colorful, friendly" --output "./gemini-character.png"
128
+ node "[LLM_SCRIPT]" antigravity image "A friendly AI character mascot, colorful, approachable" --output "./ai-character.png"
129
129
 
130
- node "[LLM_SCRIPT]" gemini image "Professional website banner, modern design" --pro --size "1920x400" --output "./banner.png"
130
+ node "[LLM_SCRIPT]" antigravity image "Professional website banner, modern design" --pro --size "1920x400" --output "./banner.png"
131
131
 
132
- node "[LLM_SCRIPT]" gemini image "Modern minimal logo design" --output "./public/logo.png"
132
+ node "[LLM_SCRIPT]" antigravity image "Modern minimal logo design" --output "./public/logo.png"
133
133
  ```
134
134
 
135
135
  ### Output Format
@@ -152,15 +152,15 @@ Use the same command with a pre-built icon prompt template:
152
152
 
153
153
  ```bash
154
154
  # --icon "MyApp"
155
- node "[LLM_SCRIPT]" gemini image "App icon for MyApp, square format 1:1, simple recognizable design, works well at small sizes, no text or letters, solid or gradient background, modern minimalist" --output "./public/app-icon.png"
155
+ node "[LLM_SCRIPT]" antigravity image "App icon for MyApp, square format 1:1, simple recognizable design, works well at small sizes, no text or letters, solid or gradient background, modern minimalist" --output "./public/app-icon.png"
156
156
 
157
157
  # --icon "MyApp" --color "#2F6BFF"
158
- node "[LLM_SCRIPT]" gemini image "App icon for MyApp, primary color #2F6BFF, square format 1:1, simple recognizable design, works well at small sizes, no text or letters, solid or gradient background, modern minimalist" --output "./public/app-icon.png"
158
+ node "[LLM_SCRIPT]" antigravity image "App icon for MyApp, primary color #2F6BFF, square format 1:1, simple recognizable design, works well at small sizes, no text or letters, solid or gradient background, modern minimalist" --output "./public/app-icon.png"
159
159
  ```
160
160
 
161
161
  ### Prerequisites
162
162
 
163
- - Gemini API key configured (`vibe gemini key <key>`)
163
+ - Antigravity API key configured (`vibe antigravity key <key>`)
164
164
 
165
165
  ---
166
166
 
@@ -184,6 +184,26 @@ For each UI scenario in Feature file:
184
184
  - DOM 기반: `div class="nav-wrapper mx-4 flex..."` = 200+ chars
185
185
  - 전자를 사용해야 시나리오 50개도 한 세션에서 검증 가능
186
186
 
187
+ ### 3.2 Visual Drift Detection (--from-design-md)
188
+
189
+ **활성 조건**: 프로젝트 루트에 `DESIGN.md` 존재 + UI 스택. 또는 `--from-design-md` 플래그 명시.
190
+
191
+ **동작**:
192
+
193
+ ```
194
+ Load skill `vibe.design` with: verify --files=<changed-ui-files>
195
+ ```
196
+
197
+ `vibe.design verify` 는 `DESIGN.md §2 Color Palette` 의 hex 토큰 셋을 추출(`extractHexTokens`)하고,
198
+ 변경 파일에서 토큰 밖 hex 하드코딩을 검출(`findHardcodedColors`) 한다.
199
+
200
+ **판정**:
201
+ - P1 drift (토큰 밖 hex) → `/vibe.verify` 실패
202
+ - DESIGN.md 부재 → 안내 후 silent skip (블록하지 않음)
203
+ - v1 범위: hex only. spacing / font 드리프트는 Phase 2+
204
+
205
+ **성능 목표**: <1s / 100 파일 (변경 파일만 스캔 — `/vibe.verify` 기존 정책 일치).
206
+
187
207
  ### 3.5 Step Count (MANDATORY before Quality Report)
188
208
 
189
209
  Read `.vibe/metrics/current-run.json` to obtain the tool-call count from the preceding `/vibe.run` (and any follow-up work in this session). Then append a record to `.vibe/metrics/history.jsonl` and include the count in the Quality Report below.
@@ -1,73 +0,0 @@
1
- {
2
- "hooks": {
3
- "SessionStart": [
4
- {
5
- "command": "VIBE_CLI=gemini node {{VIBE_PATH}}/hooks/scripts/session-start.js"
6
- }
7
- ],
8
- "BeforeTool": [
9
- {
10
- "tool_name": "shell",
11
- "command": "VIBE_CLI=gemini node {{VIBE_PATH}}/hooks/scripts/sentinel-guard.js Bash"
12
- },
13
- {
14
- "tool_name": "shell",
15
- "command": "VIBE_CLI=gemini node {{VIBE_PATH}}/hooks/scripts/pre-tool-guard.js Bash"
16
- },
17
- {
18
- "tool_name": "edit",
19
- "command": "VIBE_CLI=gemini node {{VIBE_PATH}}/hooks/scripts/sentinel-guard.js Edit"
20
- },
21
- {
22
- "tool_name": "edit",
23
- "command": "VIBE_CLI=gemini node {{VIBE_PATH}}/hooks/scripts/pre-tool-guard.js Edit"
24
- },
25
- {
26
- "tool_name": "write_file",
27
- "command": "VIBE_CLI=gemini node {{VIBE_PATH}}/hooks/scripts/sentinel-guard.js Write"
28
- },
29
- {
30
- "tool_name": "write_file",
31
- "command": "VIBE_CLI=gemini node {{VIBE_PATH}}/hooks/scripts/pre-tool-guard.js Write"
32
- }
33
- ],
34
- "AfterTool": [
35
- {
36
- "tool_name": "edit",
37
- "command": "VIBE_CLI=gemini node {{VIBE_PATH}}/hooks/scripts/code-check.js"
38
- },
39
- {
40
- "tool_name": "write_file",
41
- "command": "VIBE_CLI=gemini node {{VIBE_PATH}}/hooks/scripts/code-check.js"
42
- },
43
- {
44
- "tool_name": "edit",
45
- "command": "VIBE_CLI=gemini node {{VIBE_PATH}}/hooks/scripts/post-edit.js"
46
- }
47
- ],
48
- "BeforeAgent": [
49
- {
50
- "command": "VIBE_CLI=gemini node {{VIBE_PATH}}/hooks/scripts/prompt-dispatcher.js"
51
- }
52
- ],
53
- "Notification": [
54
- {
55
- "matcher": "context_window_80",
56
- "command": "VIBE_CLI=gemini node {{VIBE_PATH}}/hooks/scripts/context-save.js medium"
57
- },
58
- {
59
- "matcher": "context_window_90",
60
- "command": "VIBE_CLI=gemini node {{VIBE_PATH}}/hooks/scripts/context-save.js high"
61
- },
62
- {
63
- "matcher": "context_window_95",
64
- "command": "VIBE_CLI=gemini node {{VIBE_PATH}}/hooks/scripts/context-save.js critical"
65
- }
66
- ],
67
- "SessionEnd": [
68
- {
69
- "command": "VIBE_CLI=gemini node {{VIBE_PATH}}/hooks/scripts/stop-notify.js"
70
- }
71
- ]
72
- }
73
- }