@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.
- package/CLAUDE.md +6 -0
- package/README.en.md +50 -28
- package/README.md +37 -9
- package/dist/cli/auth.d.ts +2 -2
- package/dist/cli/auth.js +12 -12
- package/dist/cli/auth.js.map +1 -1
- package/dist/cli/commands/codex-proxy.d.ts +1 -1
- package/dist/cli/commands/codex-proxy.js +11 -11
- package/dist/cli/commands/codex-proxy.js.map +1 -1
- package/dist/cli/commands/config.d.ts +1 -1
- package/dist/cli/commands/config.d.ts.map +1 -1
- package/dist/cli/commands/config.js +22 -21
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/info.js +2 -2
- package/dist/cli/commands/init.d.ts +2 -2
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +20 -16
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/setup.d.ts +1 -1
- package/dist/cli/commands/setup.js +24 -24
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/cli/commands/skills.d.ts.map +1 -1
- package/dist/cli/commands/skills.js +8 -7
- package/dist/cli/commands/skills.js.map +1 -1
- package/dist/cli/commands/update.d.ts.map +1 -1
- package/dist/cli/commands/update.js +28 -16
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/design/design-md-parser.d.ts +25 -0
- package/dist/cli/design/design-md-parser.d.ts.map +1 -0
- package/dist/cli/design/design-md-parser.js +86 -0
- package/dist/cli/design/design-md-parser.js.map +1 -0
- package/dist/cli/design/design-md-parser.test.d.ts +2 -0
- package/dist/cli/design/design-md-parser.test.d.ts.map +1 -0
- package/dist/cli/design/design-md-parser.test.js +149 -0
- package/dist/cli/design/design-md-parser.test.js.map +1 -0
- package/dist/cli/index.js +22 -23
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/llm/antigravity-commands.d.ts +25 -0
- package/dist/cli/llm/antigravity-commands.d.ts.map +1 -0
- package/dist/cli/llm/antigravity-commands.js +142 -0
- package/dist/cli/llm/antigravity-commands.js.map +1 -0
- package/dist/cli/llm/claude-commands.d.ts.map +1 -1
- package/dist/cli/llm/claude-commands.js +3 -1
- package/dist/cli/llm/claude-commands.js.map +1 -1
- package/dist/cli/llm/config.js +7 -7
- package/dist/cli/llm/config.js.map +1 -1
- package/dist/cli/llm/gemini-commands.d.ts.map +1 -1
- package/dist/cli/llm/gemini-commands.js +7 -4
- package/dist/cli/llm/gemini-commands.js.map +1 -1
- package/dist/cli/llm/gpt-commands.d.ts.map +1 -1
- package/dist/cli/llm/gpt-commands.js +3 -3
- package/dist/cli/llm/gpt-commands.js.map +1 -1
- package/dist/cli/llm/help.js +4 -4
- package/dist/cli/llm/index.d.ts +1 -1
- package/dist/cli/llm/index.d.ts.map +1 -1
- package/dist/cli/llm/index.js +1 -1
- package/dist/cli/llm/index.js.map +1 -1
- package/dist/cli/llm.d.ts +2 -2
- package/dist/cli/llm.js +2 -2
- package/dist/cli/postinstall/constants.d.ts.map +1 -1
- package/dist/cli/postinstall/constants.js +18 -17
- package/dist/cli/postinstall/constants.js.map +1 -1
- package/dist/cli/postinstall/inline-skills.js +5 -5
- package/dist/cli/postinstall/inline-skills.js.map +1 -1
- package/dist/cli/postinstall/main.d.ts.map +1 -1
- package/dist/cli/postinstall/main.js +14 -9
- package/dist/cli/postinstall/main.js.map +1 -1
- package/dist/cli/setup/CodexHooks.d.ts +20 -0
- package/dist/cli/setup/CodexHooks.d.ts.map +1 -0
- package/dist/cli/setup/CodexHooks.js +50 -0
- package/dist/cli/setup/CodexHooks.js.map +1 -0
- package/dist/cli/setup/CodexHooks.test.d.ts +2 -0
- package/dist/cli/setup/CodexHooks.test.d.ts.map +1 -0
- package/dist/cli/setup/CodexHooks.test.js +23 -0
- package/dist/cli/setup/CodexHooks.test.js.map +1 -0
- package/dist/cli/setup/LegacyMigration.js +2 -2
- package/dist/cli/setup/ProjectSetup.d.ts +4 -4
- package/dist/cli/setup/ProjectSetup.d.ts.map +1 -1
- package/dist/cli/setup/ProjectSetup.js +21 -19
- package/dist/cli/setup/ProjectSetup.js.map +1 -1
- package/dist/cli/setup/index.d.ts +1 -0
- package/dist/cli/setup/index.d.ts.map +1 -1
- package/dist/cli/setup/index.js +1 -0
- package/dist/cli/setup/index.js.map +1 -1
- package/dist/cli/setup.d.ts +2 -1
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +2 -1
- package/dist/cli/setup.js.map +1 -1
- package/dist/cli/types.d.ts +7 -9
- package/dist/cli/types.d.ts.map +1 -1
- package/dist/cli/utils/cli-detector.d.ts +5 -5
- package/dist/cli/utils/cli-detector.d.ts.map +1 -1
- package/dist/cli/utils/cli-detector.js +18 -14
- package/dist/cli/utils/cli-detector.js.map +1 -1
- package/dist/cli/utils/cli-detector.test.d.ts +2 -0
- package/dist/cli/utils/cli-detector.test.d.ts.map +1 -0
- package/dist/cli/utils/cli-detector.test.js +51 -0
- package/dist/cli/utils/cli-detector.test.js.map +1 -0
- package/dist/infra/lib/ReviewRace.d.ts +4 -4
- package/dist/infra/lib/ReviewRace.d.ts.map +1 -1
- package/dist/infra/lib/ReviewRace.js +16 -16
- package/dist/infra/lib/ReviewRace.js.map +1 -1
- package/dist/infra/lib/SkillRepository.js +7 -7
- package/dist/infra/lib/antigravity/auth.d.ts +18 -0
- package/dist/infra/lib/antigravity/auth.d.ts.map +1 -0
- package/dist/infra/lib/antigravity/auth.js +32 -0
- package/dist/infra/lib/antigravity/auth.js.map +1 -0
- package/dist/infra/lib/antigravity/capabilities.d.ts +28 -0
- package/dist/infra/lib/antigravity/capabilities.d.ts.map +1 -0
- package/dist/infra/lib/antigravity/capabilities.js +178 -0
- package/dist/infra/lib/antigravity/capabilities.js.map +1 -0
- package/dist/infra/lib/antigravity/chat.d.ts +34 -0
- package/dist/infra/lib/antigravity/chat.d.ts.map +1 -0
- package/dist/infra/lib/antigravity/chat.js +160 -0
- package/dist/infra/lib/antigravity/chat.js.map +1 -0
- package/dist/infra/lib/antigravity/completion.d.ts +12 -0
- package/dist/infra/lib/antigravity/completion.d.ts.map +1 -0
- package/dist/infra/lib/antigravity/completion.js +13 -0
- package/dist/infra/lib/antigravity/completion.js.map +1 -0
- package/dist/infra/lib/antigravity/constants.d.ts +8 -0
- package/dist/infra/lib/antigravity/constants.d.ts.map +1 -0
- package/dist/infra/lib/antigravity/constants.js +11 -0
- package/dist/infra/lib/antigravity/constants.js.map +1 -0
- package/dist/infra/lib/antigravity/index.d.ts +13 -0
- package/dist/infra/lib/antigravity/index.d.ts.map +1 -0
- package/dist/infra/lib/antigravity/index.js +12 -0
- package/dist/infra/lib/antigravity/index.js.map +1 -0
- package/dist/infra/lib/antigravity/models.d.ts +11 -0
- package/dist/infra/lib/antigravity/models.d.ts.map +1 -0
- package/dist/infra/lib/antigravity/models.js +38 -0
- package/dist/infra/lib/antigravity/models.js.map +1 -0
- package/dist/infra/lib/antigravity/orchestration.d.ts +33 -0
- package/dist/infra/lib/antigravity/orchestration.d.ts.map +1 -0
- package/dist/infra/lib/antigravity/orchestration.js +62 -0
- package/dist/infra/lib/antigravity/orchestration.js.map +1 -0
- package/dist/infra/lib/antigravity/types.d.ts +115 -0
- package/dist/infra/lib/antigravity/types.d.ts.map +1 -0
- package/dist/infra/lib/antigravity/types.js +5 -0
- package/dist/infra/lib/antigravity/types.js.map +1 -0
- package/dist/infra/lib/codex-proxy.d.ts +1 -1
- package/dist/infra/lib/codex-proxy.js +9 -9
- package/dist/infra/lib/codex-proxy.js.map +1 -1
- package/dist/infra/lib/config/GlobalConfigManager.d.ts +6 -3
- package/dist/infra/lib/config/GlobalConfigManager.d.ts.map +1 -1
- package/dist/infra/lib/config/GlobalConfigManager.js +47 -37
- package/dist/infra/lib/config/GlobalConfigManager.js.map +1 -1
- package/dist/infra/lib/config/GlobalConfigManager.test.d.ts +2 -0
- package/dist/infra/lib/config/GlobalConfigManager.test.d.ts.map +1 -0
- package/dist/infra/lib/config/GlobalConfigManager.test.js +9 -0
- package/dist/infra/lib/config/GlobalConfigManager.test.js.map +1 -0
- package/dist/infra/lib/constants.js +1 -1
- package/dist/infra/lib/constants.js.map +1 -1
- package/dist/infra/lib/gemini/auth.d.ts +3 -3
- package/dist/infra/lib/gemini/auth.js +9 -9
- package/dist/infra/lib/gemini/auth.js.map +1 -1
- package/dist/infra/lib/llm/auth/AuthProfileManager.d.ts +3 -3
- package/dist/infra/lib/llm/auth/AuthProfileManager.d.ts.map +1 -1
- package/dist/infra/lib/llm/auth/AuthProfileManager.js.map +1 -1
- package/dist/infra/lib/llm/auth/AuthProfileManager.test.js +8 -8
- package/dist/infra/lib/llm/auth/AuthProfileManager.test.js.map +1 -1
- package/dist/infra/lib/llm/auth/ConfigManager.js +2 -2
- package/dist/infra/lib/llm/auth/ConfigManager.js.map +1 -1
- package/dist/infra/lib/llm/auth/TokenRefresher.d.ts +1 -1
- package/dist/infra/lib/llm/auth/TokenRefresher.js +1 -1
- package/dist/infra/lib/llm/auth/index.js +1 -1
- package/dist/infra/lib/llm/auth/index.js.map +1 -1
- package/dist/infra/lib/llm/index.d.ts +1 -1
- package/dist/infra/lib/llm/index.js +1 -1
- package/dist/infra/lib/llm/types.d.ts +3 -3
- package/dist/infra/lib/llm/types.d.ts.map +1 -1
- package/dist/infra/lib/llm/types.js +1 -1
- package/dist/infra/lib/llm/utils/stream.js +1 -1
- package/dist/infra/lib/llm/utils/stream.js.map +1 -1
- package/dist/infra/lib/llm-availability.d.ts +5 -5
- package/dist/infra/lib/llm-availability.d.ts.map +1 -1
- package/dist/infra/lib/llm-availability.js +13 -10
- package/dist/infra/lib/llm-availability.js.map +1 -1
- package/dist/infra/lib/llm-availability.test.d.ts +2 -0
- package/dist/infra/lib/llm-availability.test.d.ts.map +1 -0
- package/dist/infra/lib/llm-availability.test.js +36 -0
- package/dist/infra/lib/llm-availability.test.js.map +1 -0
- package/dist/infra/lib/ui-ux/UiUxWorkflow.d.ts.map +1 -1
- package/dist/infra/lib/ui-ux/UiUxWorkflow.js +23 -5
- package/dist/infra/lib/ui-ux/UiUxWorkflow.js.map +1 -1
- package/dist/infra/orchestrator/AgentExecutor.d.ts.map +1 -1
- package/dist/infra/orchestrator/AgentExecutor.js +30 -1
- package/dist/infra/orchestrator/AgentExecutor.js.map +1 -1
- package/dist/infra/orchestrator/AgentManifestCache.js +1 -1
- package/dist/infra/orchestrator/AgentManifestCache.js.map +1 -1
- package/dist/infra/orchestrator/BackgroundManager.js +2 -2
- package/dist/infra/orchestrator/BackgroundManager.js.map +1 -1
- package/dist/infra/orchestrator/CodexAgentRuntime.d.ts +12 -0
- package/dist/infra/orchestrator/CodexAgentRuntime.d.ts.map +1 -0
- package/dist/infra/orchestrator/CodexAgentRuntime.js +94 -0
- package/dist/infra/orchestrator/CodexAgentRuntime.js.map +1 -0
- package/dist/infra/orchestrator/CodexAgentRuntime.test.d.ts +2 -0
- package/dist/infra/orchestrator/CodexAgentRuntime.test.d.ts.map +1 -0
- package/dist/infra/orchestrator/CodexAgentRuntime.test.js +37 -0
- package/dist/infra/orchestrator/CodexAgentRuntime.test.js.map +1 -0
- package/dist/infra/orchestrator/LLMCluster.d.ts +11 -11
- package/dist/infra/orchestrator/LLMCluster.d.ts.map +1 -1
- package/dist/infra/orchestrator/LLMCluster.js +22 -22
- package/dist/infra/orchestrator/LLMCluster.js.map +1 -1
- package/dist/infra/orchestrator/MultiLlmResearch.d.ts +3 -3
- package/dist/infra/orchestrator/MultiLlmResearch.d.ts.map +1 -1
- package/dist/infra/orchestrator/MultiLlmResearch.js +17 -17
- package/dist/infra/orchestrator/MultiLlmResearch.js.map +1 -1
- package/dist/infra/orchestrator/SmartRouter.d.ts +2 -2
- package/dist/infra/orchestrator/SmartRouter.js +7 -7
- package/dist/infra/orchestrator/SmartRouter.js.map +1 -1
- package/dist/infra/orchestrator/SmartRouter.test.js +74 -74
- package/dist/infra/orchestrator/SmartRouter.test.js.map +1 -1
- package/dist/infra/orchestrator/agentDiscovery.d.ts +1 -1
- package/dist/infra/orchestrator/agentDiscovery.js +4 -4
- package/dist/infra/orchestrator/agentDiscovery.js.map +1 -1
- package/dist/infra/orchestrator/index.d.ts +17 -17
- package/dist/infra/orchestrator/index.d.ts.map +1 -1
- package/dist/infra/orchestrator/index.js +30 -30
- package/dist/infra/orchestrator/index.js.map +1 -1
- package/dist/infra/orchestrator/orchestrator.d.ts +4 -4
- package/dist/infra/orchestrator/orchestrator.d.ts.map +1 -1
- package/dist/infra/orchestrator/orchestrator.js +5 -5
- package/dist/infra/orchestrator/orchestrator.js.map +1 -1
- package/dist/infra/orchestrator/parallelResearch.d.ts.map +1 -1
- package/dist/infra/orchestrator/parallelResearch.js +11 -0
- package/dist/infra/orchestrator/parallelResearch.js.map +1 -1
- package/dist/infra/orchestrator/types.d.ts +7 -8
- package/dist/infra/orchestrator/types.d.ts.map +1 -1
- package/dist/infra/orchestrator/types.js +17 -18
- package/dist/infra/orchestrator/types.js.map +1 -1
- package/dist/tools/spec/specGenerator.d.ts +1 -1
- package/dist/tools/spec/specGenerator.js +1 -1
- package/hooks/antigravity-hooks.json +73 -0
- package/hooks/scripts/__tests__/codex-hook-adapter.test.js +31 -0
- package/hooks/scripts/__tests__/hook-payload.test.js +29 -0
- package/hooks/scripts/__tests__/llm-orchestrate-antigravity.test.js +63 -0
- package/hooks/scripts/codex-hook-adapter.js +124 -0
- package/hooks/scripts/codex-review-gate.js +7 -3
- package/hooks/scripts/devlog-gen.js +1 -1
- package/hooks/scripts/hook-payload.js +64 -0
- package/hooks/scripts/lib/dispatcher.js +20 -0
- package/hooks/scripts/llm-orchestrate.js +40 -44
- package/hooks/scripts/prompt-dispatcher.js +9 -9
- package/hooks/scripts/stop-notify.js +1 -1
- package/hooks/scripts/utils.js +1 -1
- package/package.json +1 -1
- package/skills/brand-assets/SKILL.md +11 -11
- package/skills/docs/SKILL.md +10 -5
- package/skills/event-comms/SKILL.md +1 -1
- package/skills/event-ops/SKILL.md +4 -4
- package/skills/spec/SKILL.md +29 -29
- package/skills/spec-review/SKILL.md +23 -23
- package/skills/tool-fallback/SKILL.md +2 -2
- package/skills/tool-fallback/rubrics/fallback-chain.md +2 -2
- package/skills/vibe.design/SKILL.md +183 -0
- package/skills/vibe.design/heuristics/code-extract.md +100 -0
- package/skills/vibe.design/references/README.md +39 -0
- package/skills/vibe.design/templates/DESIGN.md.template +100 -0
- package/skills/vibe.event/SKILL.md +1 -1
- package/skills/vibe.figma/SKILL.md +17 -1
- package/skills/vibe.review/SKILL.md +20 -13
- package/skills/vibe.run/SKILL.md +47 -30
- package/skills/vibe.spec/SKILL.md +4 -4
- package/skills/vibe.utils/SKILL.md +17 -17
- package/skills/vibe.verify/SKILL.md +20 -0
- 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 +
|
|
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+
|
|
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 +
|
|
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
|
-
└─
|
|
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,
|
|
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
|
-
|
|
|
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,
|
|
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+
|
|
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 |
|
|
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 +
|
|
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 +
|
|
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
|
-
#
|
|
150
|
-
node "[LLM_SCRIPT]"
|
|
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)에 자동 포함
|
package/skills/vibe.run/SKILL.md
CHANGED
|
@@ -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/
|
|
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+
|
|
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`, `
|
|
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
|
-
- `
|
|
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
|
-
#
|
|
787
|
-
node "[LLM_SCRIPT]"
|
|
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/
|
|
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
|
|
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]
|
|
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
|
|
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
|
-
-
|
|
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]"
|
|
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 +
|
|
1489
|
+
### 5. Race Code Review (GPT + Antigravity) + Auto-Fix (v2.6.9)
|
|
1473
1490
|
|
|
1474
|
-
After all scenarios are implemented, **GPT and
|
|
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 +
|
|
1497
|
+
🏁 RACE CODE REVIEW (GPT + Antigravity)
|
|
1481
1498
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
1482
1499
|
|
|
1483
1500
|
[Step 1] Parallel review execution...
|
|
1484
1501
|
├─ GPT Codex: Reviewing...
|
|
1485
|
-
└─
|
|
1502
|
+
└─ Antigravity: Reviewing...
|
|
1486
1503
|
|
|
1487
1504
|
[Step 2] Cross-validation results:
|
|
1488
1505
|
┌──────────────────────────────────────────────────────────────────┐
|
|
1489
|
-
│ Issue │ GPT │
|
|
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 +
|
|
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 +
|
|
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
|
-
#
|
|
1530
|
-
node "[LLM_SCRIPT]"
|
|
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+
|
|
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 |
|
|
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 +
|
|
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
|
-
🔍
|
|
1762
|
+
🔍 ANTIGRAVITY CODE REVIEW
|
|
1746
1763
|
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
1747
1764
|
|
|
1748
|
-
📤 Sending code to
|
|
1749
|
-
📝
|
|
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: ✅ |
|
|
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 +
|
|
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 +
|
|
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/
|
|
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 +
|
|
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 +
|
|
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 +
|
|
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
|
|
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
|
-
- **
|
|
39
|
-
- **
|
|
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
|
|
89
|
+
Generate images using the Antigravity image backend.
|
|
90
90
|
|
|
91
|
-
- **Default**:
|
|
92
|
-
- **--pro**:
|
|
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 (
|
|
101
|
+
**General image generation (Antigravity fast image):**
|
|
102
102
|
```bash
|
|
103
|
-
node "[LLM_SCRIPT]"
|
|
103
|
+
node "[LLM_SCRIPT]" antigravity image "IMAGE_DESCRIPTION" --output "OUTPUT_PATH"
|
|
104
104
|
```
|
|
105
105
|
|
|
106
|
-
**Pro quality (
|
|
106
|
+
**Pro quality (Antigravity pro image):**
|
|
107
107
|
```bash
|
|
108
|
-
node "[LLM_SCRIPT]"
|
|
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]"
|
|
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]"
|
|
128
|
+
node "[LLM_SCRIPT]" antigravity image "A friendly AI character mascot, colorful, approachable" --output "./ai-character.png"
|
|
129
129
|
|
|
130
|
-
node "[LLM_SCRIPT]"
|
|
130
|
+
node "[LLM_SCRIPT]" antigravity image "Professional website banner, modern design" --pro --size "1920x400" --output "./banner.png"
|
|
131
131
|
|
|
132
|
-
node "[LLM_SCRIPT]"
|
|
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]"
|
|
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]"
|
|
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
|
-
-
|
|
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.
|
package/hooks/gemini-hooks.json
DELETED
|
@@ -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
|
-
}
|