@su-record/vibe 2.7.20 → 2.7.22
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/README.md +156 -57
- package/agents/qa/qa-coordinator.md +131 -0
- package/commands/vibe.review.md +79 -0
- package/commands/vibe.run.md +68 -9
- package/commands/vibe.spec.review.md +48 -8
- package/commands/vibe.verify.md +26 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +4 -12
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/postinstall/claude-agents.d.ts.map +1 -1
- package/dist/cli/postinstall/claude-agents.js +1 -0
- package/dist/cli/postinstall/claude-agents.js.map +1 -1
- package/dist/cli/postinstall/codex-agents.d.ts +18 -6
- package/dist/cli/postinstall/codex-agents.d.ts.map +1 -1
- package/dist/cli/postinstall/codex-agents.js +78 -16
- package/dist/cli/postinstall/codex-agents.js.map +1 -1
- package/dist/cli/postinstall/constants.d.ts.map +1 -1
- package/dist/cli/postinstall/constants.js +17 -14
- package/dist/cli/postinstall/constants.js.map +1 -1
- package/dist/cli/postinstall/index.d.ts +1 -1
- package/dist/cli/postinstall/index.d.ts.map +1 -1
- package/dist/cli/postinstall/index.js +1 -1
- package/dist/cli/postinstall/index.js.map +1 -1
- package/dist/cli/postinstall/main.d.ts.map +1 -1
- package/dist/cli/postinstall/main.js +4 -8
- package/dist/cli/postinstall/main.js.map +1 -1
- package/dist/cli/postinstall.d.ts +1 -1
- package/dist/cli/postinstall.d.ts.map +1 -1
- package/dist/cli/postinstall.js +1 -1
- package/dist/cli/postinstall.js.map +1 -1
- package/dist/cli/types.d.ts +1 -0
- package/dist/cli/types.d.ts.map +1 -1
- package/dist/cli/utils/cli-detector.d.ts +1 -0
- package/dist/cli/utils/cli-detector.d.ts.map +1 -1
- package/dist/cli/utils/cli-detector.js +1 -0
- package/dist/cli/utils/cli-detector.js.map +1 -1
- package/dist/infra/lib/ComponentRegistry.d.ts +35 -0
- package/dist/infra/lib/ComponentRegistry.d.ts.map +1 -0
- package/dist/infra/lib/ComponentRegistry.js +59 -0
- package/dist/infra/lib/ComponentRegistry.js.map +1 -0
- package/dist/infra/lib/ReviewRace.d.ts.map +1 -1
- package/dist/infra/lib/ReviewRace.js +11 -7
- package/dist/infra/lib/ReviewRace.js.map +1 -1
- package/dist/infra/lib/__tests__/ComponentRegistry.test.d.ts +2 -0
- package/dist/infra/lib/__tests__/ComponentRegistry.test.d.ts.map +1 -0
- package/dist/infra/lib/__tests__/ComponentRegistry.test.js +99 -0
- package/dist/infra/lib/__tests__/ComponentRegistry.test.js.map +1 -0
- package/dist/infra/lib/evolution/DescriptionOptimizer.d.ts +45 -0
- package/dist/infra/lib/evolution/DescriptionOptimizer.d.ts.map +1 -1
- package/dist/infra/lib/evolution/DescriptionOptimizer.js +151 -0
- package/dist/infra/lib/evolution/DescriptionOptimizer.js.map +1 -1
- package/dist/infra/lib/evolution/__tests__/eval.test.js +64 -0
- package/dist/infra/lib/evolution/__tests__/eval.test.js.map +1 -1
- package/dist/infra/lib/gpt/chat.d.ts.map +1 -1
- package/dist/infra/lib/gpt/chat.js +8 -0
- package/dist/infra/lib/gpt/chat.js.map +1 -1
- package/dist/infra/lib/gpt/specializations.d.ts.map +1 -1
- package/dist/infra/lib/gpt/specializations.js +5 -0
- package/dist/infra/lib/gpt/specializations.js.map +1 -1
- package/dist/infra/lib/llm-availability.d.ts +21 -0
- package/dist/infra/lib/llm-availability.d.ts.map +1 -0
- package/dist/infra/lib/llm-availability.js +57 -0
- package/dist/infra/lib/llm-availability.js.map +1 -0
- package/dist/infra/lib/memory/IMemoryStorage.d.ts +16 -0
- package/dist/infra/lib/memory/IMemoryStorage.d.ts.map +1 -0
- package/dist/infra/lib/memory/IMemoryStorage.js +7 -0
- package/dist/infra/lib/memory/IMemoryStorage.js.map +1 -0
- package/dist/infra/lib/memory/InMemoryStorage.d.ts +13 -0
- package/dist/infra/lib/memory/InMemoryStorage.d.ts.map +1 -0
- package/dist/infra/lib/memory/InMemoryStorage.js +44 -0
- package/dist/infra/lib/memory/InMemoryStorage.js.map +1 -0
- package/dist/infra/lib/memory/MemoryStorage.d.ts +2 -1
- package/dist/infra/lib/memory/MemoryStorage.d.ts.map +1 -1
- package/dist/infra/lib/memory/MemoryStorage.js.map +1 -1
- package/dist/infra/lib/memory/__tests__/InMemoryStorage.test.d.ts +2 -0
- package/dist/infra/lib/memory/__tests__/InMemoryStorage.test.d.ts.map +1 -0
- package/dist/infra/lib/memory/__tests__/InMemoryStorage.test.js +114 -0
- package/dist/infra/lib/memory/__tests__/InMemoryStorage.test.js.map +1 -0
- package/dist/infra/lib/memory/index.d.ts +2 -0
- package/dist/infra/lib/memory/index.d.ts.map +1 -1
- package/dist/infra/lib/memory/index.js +1 -0
- package/dist/infra/lib/memory/index.js.map +1 -1
- package/dist/infra/lib/telemetry/SkillTelemetry.d.ts +8 -0
- package/dist/infra/lib/telemetry/SkillTelemetry.d.ts.map +1 -1
- package/dist/infra/lib/telemetry/SkillTelemetry.js +40 -0
- package/dist/infra/lib/telemetry/SkillTelemetry.js.map +1 -1
- package/dist/infra/lib/telemetry/SkillTelemetry.test.js +33 -0
- package/dist/infra/lib/telemetry/SkillTelemetry.test.js.map +1 -1
- package/dist/infra/lib/telemetry/VibeSpan.d.ts +20 -0
- package/dist/infra/lib/telemetry/VibeSpan.d.ts.map +1 -0
- package/dist/infra/lib/telemetry/VibeSpan.js +26 -0
- package/dist/infra/lib/telemetry/VibeSpan.js.map +1 -0
- package/dist/infra/orchestrator/MultiLlmResearch.d.ts.map +1 -1
- package/dist/infra/orchestrator/MultiLlmResearch.js +49 -40
- package/dist/infra/orchestrator/MultiLlmResearch.js.map +1 -1
- package/dist/infra/orchestrator/SmartRouter.d.ts.map +1 -1
- package/dist/infra/orchestrator/SmartRouter.js +4 -3
- package/dist/infra/orchestrator/SmartRouter.js.map +1 -1
- package/dist/infra/orchestrator/types.d.ts +8 -0
- package/dist/infra/orchestrator/types.d.ts.map +1 -1
- package/dist/infra/orchestrator/types.js +36 -0
- package/dist/infra/orchestrator/types.js.map +1 -1
- package/dist/tools/index.d.ts +6 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +5 -0
- package/dist/tools/index.js.map +1 -1
- package/hooks/hooks.json +4 -0
- package/hooks/scripts/codex-detect.js +46 -0
- package/hooks/scripts/codex-review-gate.js +80 -0
- package/hooks/scripts/llm-orchestrate.js +9 -5
- package/package.json +1 -1
- package/skills/arch-guard/SKILL.md +1 -1
- package/skills/brand-assets/SKILL.md +1 -1
- package/skills/capability-loop/SKILL.md +1 -1
- package/skills/characterization-test/SKILL.md +1 -1
- package/skills/commerce-patterns/SKILL.md +1 -1
- package/skills/e2e-commerce/SKILL.md +1 -1
- package/skills/exec-plan/SKILL.md +1 -1
- package/skills/parallel-research/SKILL.md +1 -1
- package/skills/seo-checklist/SKILL.md +1 -1
- package/skills/ui-ux-pro-max/SKILL.md +1 -1
- package/skills/video-production/SKILL.md +1 -1
package/README.md
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
# VIBE — AI Coding Framework
|
|
1
|
+
# VIBE — AI Coding Framework
|
|
2
2
|
|
|
3
3
|
[](https://www.npmjs.com/package/@su-record/vibe)
|
|
4
4
|
[](https://www.npmjs.com/package/@su-record/vibe)
|
|
@@ -6,7 +6,9 @@
|
|
|
6
6
|
[](https://www.typescriptlang.org/)
|
|
7
7
|
[](https://opensource.org/licenses/MIT)
|
|
8
8
|
|
|
9
|
-
**설치 한 줄로
|
|
9
|
+
**설치 한 줄로 56개 에이전트, 43+ 도구, 멀티 LLM 오케스트레이션을 더합니다.**
|
|
10
|
+
|
|
11
|
+
Claude Code, Codex, Cursor, Gemini CLI 모두 지원.
|
|
10
12
|
|
|
11
13
|
```bash
|
|
12
14
|
npm install -g @su-record/vibe
|
|
@@ -24,7 +26,7 @@ Vibe는 구조로 해결합니다.
|
|
|
24
26
|
|------|------|
|
|
25
27
|
| AI가 `any` 타입 남발 | Quality Gate가 `any`/`@ts-ignore` 차단 |
|
|
26
28
|
| 한 번에 완성 기대 | SPEC → 구현 → 검증 단계별 워크플로우 |
|
|
27
|
-
| 리뷰 없이 머지 | 12개 에이전트 병렬 리뷰 |
|
|
29
|
+
| 리뷰 없이 머지 | 12개 에이전트 병렬 리뷰 + 경계면 불일치 감지 |
|
|
28
30
|
| AI 결과를 그대로 수용 | GPT + Gemini 교차 검증 |
|
|
29
31
|
| 컨텍스트 소실 | Session RAG로 자동 저장/복원 |
|
|
30
32
|
| 복잡한 작업에서 길을 잃음 | SwarmOrchestrator 자동 분해 + 병렬 실행 |
|
|
@@ -39,6 +41,42 @@ Vibe는 구조로 해결합니다.
|
|
|
39
41
|
|
|
40
42
|
---
|
|
41
43
|
|
|
44
|
+
## 멀티 CLI 지원
|
|
45
|
+
|
|
46
|
+
| CLI | 설치 방식 | 에이전트 | 스킬 | 지시사항 |
|
|
47
|
+
|-----|----------|---------|------|---------|
|
|
48
|
+
| **Claude Code** | `~/.claude/agents/` (YAML frontmatter) | 56개 | `~/.claude/skills/` | `CLAUDE.md` |
|
|
49
|
+
| **Codex** | `~/.codex/plugins/vibe/` (Plugin) | 56개 | 플러그인 내장 | `AGENTS.md` |
|
|
50
|
+
| **Cursor** | `~/.cursor/agents/` | 56개 | `~/.cursor/skills/` | `.cursorrules` |
|
|
51
|
+
| **Gemini CLI** | `~/.gemini/agents/` | 56개 | `~/.gemini/skills/` | `GEMINI.md` |
|
|
52
|
+
|
|
53
|
+
### Codex 플러그인 통합
|
|
54
|
+
|
|
55
|
+
Codex Claude Code 플러그인(`codex-plugin-cc`) 설치 시 워크플로우 전 단계에서 자동 활용:
|
|
56
|
+
|
|
57
|
+
| 워크플로우 | Codex 활용 | 명령 |
|
|
58
|
+
|-----------|-----------|------|
|
|
59
|
+
| **spec review** | SPEC 설계 도전 리뷰 | `/codex:adversarial-review` |
|
|
60
|
+
| **run** | 병렬 구현 위임 | `/codex:rescue --background` |
|
|
61
|
+
| **run / review** | 3중 교차 코드 리뷰 (GPT+Gemini+Codex) | `/codex:review` |
|
|
62
|
+
| **run / review** | auto-fix 실패 시 폴백 | `/codex:rescue` |
|
|
63
|
+
| **verify** | 최종 리뷰 게이트 | `/codex:review` |
|
|
64
|
+
| **Stop 훅** | 코드 변경 시 자동 리뷰 | `codex-review-gate.js` |
|
|
65
|
+
|
|
66
|
+
Codex 미설치 시 자동 스킵 — 기존 워크플로우로 동작.
|
|
67
|
+
|
|
68
|
+
`vibe init` 시 Codex 플러그인 번들도 자동 생성:
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
~/.codex/plugins/vibe/
|
|
72
|
+
├── .codex-plugin/plugin.json # 플러그인 매니페스트
|
|
73
|
+
├── agents/ # 56개 에이전트 (순수 마크다운)
|
|
74
|
+
├── skills/ # 전역 스킬
|
|
75
|
+
└── AGENTS.md # VIBE 지시사항
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
42
80
|
## 워크플로우
|
|
43
81
|
|
|
44
82
|
```mermaid
|
|
@@ -50,9 +88,9 @@ flowchart LR
|
|
|
50
88
|
```
|
|
51
89
|
|
|
52
90
|
1. **`/vibe.spec`** — 요구사항을 SPEC 문서로 정의 (GPT + Gemini 병렬 리서치)
|
|
53
|
-
2. **`/vibe.spec.review`** — SPEC 품질 리뷰
|
|
54
|
-
3. **`/vibe.run`** — SPEC 기반 구현
|
|
55
|
-
4. **자동 리뷰** — 12개 전문 에이전트 병렬
|
|
91
|
+
2. **`/vibe.spec.review`** — SPEC 품질 리뷰 + Codex adversarial review (3중 교차 검증)
|
|
92
|
+
3. **`/vibe.run`** — SPEC 기반 구현 (Codex rescue 병렬 위임) + 3중 코드 리뷰
|
|
93
|
+
4. **자동 리뷰** — 12개 전문 에이전트 병렬 검토 + Codex/경계면 검증, P1/P2 자동 수정
|
|
56
94
|
|
|
57
95
|
`ultrawork` 키워드를 붙이면 전 과정이 자동화됩니다:
|
|
58
96
|
|
|
@@ -62,7 +100,7 @@ flowchart LR
|
|
|
62
100
|
|
|
63
101
|
---
|
|
64
102
|
|
|
65
|
-
## 에이전트 (
|
|
103
|
+
## 에이전트 (56개)
|
|
66
104
|
|
|
67
105
|
### 메인 에이전트 (19)
|
|
68
106
|
|
|
@@ -87,48 +125,42 @@ Security, Performance, Architecture, Complexity, Simplicity, Data Integrity, Tes
|
|
|
87
125
|
| RUN | ui-stack-implementer, ui-dataviz-advisor |
|
|
88
126
|
| REVIEW | ux-compliance-reviewer, ui-a11y-auditor, ui-antipattern-detector |
|
|
89
127
|
|
|
90
|
-
###
|
|
91
|
-
|
|
92
|
-
Best Practices, Framework Docs, Codebase Patterns, Security Advisory, Requirements Analyst, UX Advisor, Acceptance Tester, Edge Case Finder, API Documenter, Changelog Writer
|
|
93
|
-
|
|
94
|
-
### 이벤트 에이전트 (6)
|
|
128
|
+
### QA & 리서치 (11)
|
|
95
129
|
|
|
96
|
-
|
|
130
|
+
| 카테고리 | 에이전트 |
|
|
131
|
+
|----------|---------|
|
|
132
|
+
| **QA** | QA Coordinator, Edge Case Finder, Acceptance Tester |
|
|
133
|
+
| **리서치** | Best Practices, Framework Docs, Codebase Patterns, Security Advisory |
|
|
134
|
+
| **분석** | Requirements Analyst, UX Advisor, API Documenter, Changelog Writer |
|
|
97
135
|
|
|
98
|
-
|
|
136
|
+
QA Coordinator는 변경된 코드를 분석하여 적절한 QA 에이전트를 병렬 디스패치하고, 통합 QA 리포트를 생성합니다.
|
|
99
137
|
|
|
100
|
-
|
|
138
|
+
### 이벤트 에이전트 (6)
|
|
101
139
|
|
|
102
|
-
|
|
103
|
-
|----|--------|------|
|
|
104
|
-
| Lite | `/vibe.run` 일반 | architect, implementer, tester |
|
|
105
|
-
| Dev | `/vibe.run` ULTRAWORK | + security-reviewer |
|
|
106
|
-
| Research | `/vibe.spec` | 4개 리서치 에이전트 |
|
|
107
|
-
| Review Debate | `/vibe.review` | security, architecture, performance, simplicity |
|
|
108
|
-
| Debug | `/vibe.run` 실패 | architect, implementer, tester |
|
|
109
|
-
| Security | `/vibe.run` 보안 | security, data-integrity, security-advisory, tester |
|
|
110
|
-
| Migration | `/vibe.run` 마이그레이션 | + build-error-resolver |
|
|
111
|
-
| Fullstack | `/vibe.run` 풀스택 | frontend + backend implementer |
|
|
112
|
-
| SPEC Debate | `/vibe.spec.review` | 동일 |
|
|
140
|
+
Event Content, Event Image, Event Speaker, Event Ops, Event Comms, Event Scheduler
|
|
113
141
|
|
|
114
142
|
---
|
|
115
143
|
|
|
116
144
|
## 멀티 LLM 오케스트레이션
|
|
117
145
|
|
|
118
|
-
| 프로바이더 | 역할 | 인증 |
|
|
119
|
-
|
|
120
|
-
| **Claude** |
|
|
121
|
-
| **GPT** | 아키텍처,
|
|
122
|
-
| **
|
|
146
|
+
| 프로바이더 | 모델 | 역할 | 인증 |
|
|
147
|
+
|-----------|------|------|------|
|
|
148
|
+
| **Claude** | Opus / Sonnet / Haiku | SPEC 작성, 코드 리뷰, 오케스트레이션 | 내장 (Claude Code) |
|
|
149
|
+
| **GPT** | gpt-5.4 | 추론, 아키텍처, 엣지케이스 분석 | Codex CLI / API Key |
|
|
150
|
+
| **Codex** | gpt-5.3-codex | 구현, 멀티파일 코딩 | Codex CLI / Plugin |
|
|
151
|
+
| **Codex Spark** | gpt-5.3-codex-spark | 초고속 리뷰/린트 (1000+ tok/s) | Codex CLI / Plugin |
|
|
152
|
+
| **Gemini** | gemini-3.1-pro | 리서치, 교차 검증, UI/UX | gemini-cli / API Key |
|
|
123
153
|
|
|
124
|
-
###
|
|
154
|
+
### 동적 모델 라우팅
|
|
125
155
|
|
|
126
|
-
|
|
156
|
+
Codex/Gemini 활성화 상태에 따라 자동 스위칭. 기본은 Claude만으로 동작.
|
|
127
157
|
|
|
128
|
-
|
|
|
129
|
-
|
|
130
|
-
|
|
|
131
|
-
|
|
|
158
|
+
| 상태 | 동작 |
|
|
159
|
+
|------|------|
|
|
160
|
+
| **Claude only** | Opus(설계/판단) + Sonnet(리뷰/구현) + Haiku(탐색) |
|
|
161
|
+
| **+Codex** | 구현→5.3-Codex, 리뷰→Spark, 추론→5.4 스위칭 |
|
|
162
|
+
| **+Gemini** | 리서치/리뷰에 Gemini 병렬 추가 |
|
|
163
|
+
| **+Codex +Gemini** | 풀 오케스트레이션 (7개 모델) |
|
|
132
164
|
|
|
133
165
|
---
|
|
134
166
|
|
|
@@ -150,6 +182,58 @@ ULTRAWORK 모드에서 다음 Phase의 `prepare()`를 병렬 실행.
|
|
|
150
182
|
|
|
151
183
|
---
|
|
152
184
|
|
|
185
|
+
## 인프라 패턴
|
|
186
|
+
|
|
187
|
+
Agent-Lightning(Microsoft Research)의 핵심 아키텍처 패턴을 적용합니다.
|
|
188
|
+
|
|
189
|
+
### Store Interface
|
|
190
|
+
|
|
191
|
+
`IMemoryStorage` 인터페이스로 스토어를 추상화합니다. 테스트에서 SQLite 없이 `InMemoryStorage`로 교체 가능.
|
|
192
|
+
|
|
193
|
+
```typescript
|
|
194
|
+
import { InMemoryStorage } from '@su-record/vibe/tools';
|
|
195
|
+
const store = new InMemoryStorage(); // DB 없이 테스트
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
### Structured Telemetry Spans
|
|
199
|
+
|
|
200
|
+
8종의 타입화된 스팬으로 모든 작업을 추적합니다.
|
|
201
|
+
|
|
202
|
+
| 스팬 타입 | 용도 |
|
|
203
|
+
|----------|------|
|
|
204
|
+
| `skill_run` | 스킬 실행 |
|
|
205
|
+
| `agent_run` | 에이전트 실행 |
|
|
206
|
+
| `edit` | 파일 수정 |
|
|
207
|
+
| `build` | 빌드/컴파일 |
|
|
208
|
+
| `review` | 코드 리뷰 |
|
|
209
|
+
| `hook` | 훅 실행 |
|
|
210
|
+
| `llm_call` | LLM 호출 |
|
|
211
|
+
| `decision` | 의사결정 |
|
|
212
|
+
|
|
213
|
+
```typescript
|
|
214
|
+
import { createSpan, completeSpan } from '@su-record/vibe/tools';
|
|
215
|
+
|
|
216
|
+
const span = createSpan('agent_run', 'explorer-low', { model: 'haiku' });
|
|
217
|
+
// ... 작업 수행
|
|
218
|
+
const done = completeSpan(span, 'ok', 1500);
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
부모-자식 계층 추적을 지원합니다 (`parent_id`). 모든 데이터는 로컬 JSONL에만 저장됩니다.
|
|
222
|
+
|
|
223
|
+
### Component Registry
|
|
224
|
+
|
|
225
|
+
런타임 컴포넌트 등록/해제를 지원하는 범용 레지스트리입니다.
|
|
226
|
+
|
|
227
|
+
```typescript
|
|
228
|
+
import { ComponentRegistry } from '@su-record/vibe/tools';
|
|
229
|
+
|
|
230
|
+
const skills = new ComponentRegistry<SkillRunner>();
|
|
231
|
+
skills.register('review', () => new ReviewRunner(), { version: '2.0' });
|
|
232
|
+
const runner = skills.resolve('review');
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
---
|
|
236
|
+
|
|
153
237
|
## Session RAG
|
|
154
238
|
|
|
155
239
|
SQLite + FTS5 하이브리드 검색으로 세션 간 컨텍스트를 유지합니다.
|
|
@@ -166,22 +250,21 @@ SQLite + FTS5 하이브리드 검색으로 세션 간 컨텍스트를 유지합
|
|
|
166
250
|
|
|
167
251
|
## 스킬
|
|
168
252
|
|
|
169
|
-
### 내장 스킬
|
|
253
|
+
### 내장 스킬 (26개)
|
|
170
254
|
|
|
171
255
|
에이전트가 활용하는 도메인별 스킬 모듈입니다. 스택 감지 결과에 따라 자동 설치됩니다.
|
|
172
256
|
|
|
173
257
|
**코어**: Core Capabilities, Parallel Research, Commit Push PR, Git Worktree, Handoff, Priority Todos, Tool Fallback, Context7, Tech Debt, Characterization Test, Agents MD, Exec Plan, Arch Guard, Capability Loop
|
|
174
258
|
|
|
175
|
-
**프론트엔드**: Frontend Design, UI/UX Pro Max, Brand Assets, SEO Checklist
|
|
259
|
+
**프론트엔드**: Frontend Design, UI/UX Pro Max, Brand Assets, SEO Checklist
|
|
176
260
|
|
|
177
|
-
**도메인**: Commerce Patterns, E2E Commerce, Video Production
|
|
261
|
+
**도메인**: Commerce Patterns, E2E Commerce, Video Production
|
|
178
262
|
|
|
179
263
|
### 외부 스킬 (skills.sh)
|
|
180
264
|
|
|
181
265
|
[skills.sh](https://skills.sh) 에코시스템의 외부 스킬을 설치할 수 있습니다.
|
|
182
266
|
|
|
183
267
|
```bash
|
|
184
|
-
# 수동 설치
|
|
185
268
|
vibe skills add vercel-labs/next-skills
|
|
186
269
|
```
|
|
187
270
|
|
|
@@ -192,8 +275,6 @@ vibe skills add vercel-labs/next-skills
|
|
|
192
275
|
| `typescript-react` | `vercel-labs/agent-skills` |
|
|
193
276
|
| `typescript-nextjs` | `vercel-labs/agent-skills`, `vercel-labs/next-skills` |
|
|
194
277
|
|
|
195
|
-
설치된 패키지는 `.claude/vibe/config.json`의 `installedExternalSkills`로 추적되어 중복 설치를 방지합니다.
|
|
196
|
-
|
|
197
278
|
---
|
|
198
279
|
|
|
199
280
|
## 25개 프레임워크 지원
|
|
@@ -239,7 +320,8 @@ vibe skills add vercel-labs/next-skills
|
|
|
239
320
|
| 가드레일 | 메커니즘 |
|
|
240
321
|
|----------|---------|
|
|
241
322
|
| **타입 안전성** | Quality Gate — `any`, `@ts-ignore` 차단 |
|
|
242
|
-
| **코드 리뷰** | 12개
|
|
323
|
+
| **코드 리뷰** | 12개 Sonnet 에이전트 병렬 리뷰 + Codex 3중 교차 검증 |
|
|
324
|
+
| **경계면 검증** | API↔프론트엔드 타입/라우팅/상태 정합성 자동 검증 |
|
|
243
325
|
| **완성도** | Ralph Loop — 100%까지 반복 (범위 축소 없음) |
|
|
244
326
|
| **수렴 보장** | Convergence — P1=0이면 완료, 반복 시 범위 축소 |
|
|
245
327
|
| **스코프 보호** | pre-tool-guard — 요청 범위 외 수정 방지 |
|
|
@@ -262,7 +344,7 @@ vibe skills add vercel-labs/next-skills
|
|
|
262
344
|
| UserPromptSubmit | `keyword-detector.js` | 매직 키워드 감지 |
|
|
263
345
|
| Notification | `context-save.js` | 컨텍스트 80/90/95% 자동 저장 |
|
|
264
346
|
|
|
265
|
-
추가: `llm-orchestrate.js`, `code-review.js`, `recall.js`, `complexity.js`, `compound.js`, `stop-notify.js`
|
|
347
|
+
추가: `llm-orchestrate.js`, `codex-review-gate.js`, `codex-detect.js`, `code-review.js`, `recall.js`, `complexity.js`, `compound.js`, `stop-notify.js`
|
|
266
348
|
|
|
267
349
|
---
|
|
268
350
|
|
|
@@ -366,13 +448,16 @@ vibe help / version
|
|
|
366
448
|
import { MemoryStorage, SessionRAGStore } from '@su-record/vibe/memory';
|
|
367
449
|
import { SwarmOrchestrator, PhasePipeline } from '@su-record/vibe/orchestrator';
|
|
368
450
|
import { findSymbol, validateCodeQuality } from '@su-record/vibe/tools';
|
|
451
|
+
|
|
452
|
+
// Agent-Lightning 패턴
|
|
453
|
+
import { InMemoryStorage, ComponentRegistry, createSpan } from '@su-record/vibe/tools';
|
|
369
454
|
```
|
|
370
455
|
|
|
371
456
|
| 서브패스 | 주요 export |
|
|
372
457
|
|---------|------------|
|
|
373
|
-
| `@su-record/vibe/memory` | `MemoryStorage`, `KnowledgeGraph`, `SessionRAGStore` |
|
|
458
|
+
| `@su-record/vibe/memory` | `MemoryStorage`, `IMemoryStorage`, `InMemoryStorage`, `KnowledgeGraph`, `SessionRAGStore` |
|
|
374
459
|
| `@su-record/vibe/orchestrator` | `SwarmOrchestrator`, `PhasePipeline`, `BackgroundManager` |
|
|
375
|
-
| `@su-record/vibe/tools` | `findSymbol`, `validateCodeQuality`, `
|
|
460
|
+
| `@su-record/vibe/tools` | `findSymbol`, `validateCodeQuality`, `createSpan`, `ComponentRegistry` 등 |
|
|
376
461
|
| `@su-record/vibe/tools/memory` | 메모리 도구 |
|
|
377
462
|
| `@su-record/vibe/tools/convention` | 코드 품질 도구 |
|
|
378
463
|
| `@su-record/vibe/tools/semantic` | 시맨틱 분석 도구 |
|
|
@@ -396,18 +481,27 @@ your-project/
|
|
|
396
481
|
│ │ └── reports/ # 리뷰 리포트
|
|
397
482
|
│ └── skills/ # 로컬 + 외부 스킬
|
|
398
483
|
├── CLAUDE.md # 프로젝트 가이드 (자동 생성)
|
|
484
|
+
├── AGENTS.md # Codex CLI 가이드 (자동 생성)
|
|
399
485
|
└── ...
|
|
400
486
|
|
|
401
487
|
~/.vibe/config.json # 전역 설정 (인증, 채널, 모델)
|
|
488
|
+
~/.vibe/analytics/ # 텔레메트리 (로컬 JSONL)
|
|
489
|
+
│ ├── skill-usage.jsonl # 스킬 사용 기록
|
|
490
|
+
│ ├── spans.jsonl # 구조화된 스팬
|
|
491
|
+
│ └── decisions.jsonl # 의사결정 추적
|
|
402
492
|
~/.claude/
|
|
403
493
|
├── vibe/
|
|
404
494
|
│ ├── rules/ # 코딩 규칙
|
|
405
495
|
│ ├── skills/ # 전역 스킬
|
|
406
|
-
│
|
|
407
|
-
│ ├── session-rag.db # Session RAG (SQLite + FTS5)
|
|
408
|
-
│ └── memories.json # 저장된 메모리
|
|
496
|
+
│ └── ui-ux-data/ # UI/UX CSV 데이터
|
|
409
497
|
├── commands/ # 슬래시 명령어
|
|
410
|
-
└── agents/ # 에이전트 정의 (
|
|
498
|
+
└── agents/ # 에이전트 정의 (56개)
|
|
499
|
+
~/.codex/
|
|
500
|
+
└── plugins/vibe/ # Codex 플러그인
|
|
501
|
+
├── .codex-plugin/plugin.json
|
|
502
|
+
├── agents/
|
|
503
|
+
├── skills/
|
|
504
|
+
└── AGENTS.md
|
|
411
505
|
```
|
|
412
506
|
|
|
413
507
|
---
|
|
@@ -421,8 +515,9 @@ flowchart TD
|
|
|
421
515
|
C --> D["SmartRouter"]
|
|
422
516
|
|
|
423
517
|
D --> E["LLMCluster"]
|
|
424
|
-
E --> E1["GPT"]
|
|
425
|
-
E --> E2["
|
|
518
|
+
E --> E1["GPT-5.4 (추론)"]
|
|
519
|
+
E --> E2["Codex Spark (리뷰)"]
|
|
520
|
+
E --> E3["Gemini (리서치)"]
|
|
426
521
|
|
|
427
522
|
D --> F["PhasePipeline"]
|
|
428
523
|
F --> G["SwarmOrchestrator"]
|
|
@@ -430,12 +525,16 @@ flowchart TD
|
|
|
430
525
|
H --> I["AgentRegistry"]
|
|
431
526
|
|
|
432
527
|
D --> J["병렬 리뷰"]
|
|
433
|
-
J --> J1["12개 리뷰 에이전트"]
|
|
434
|
-
|
|
528
|
+
J --> J1["12개 Sonnet 리뷰 에이전트"]
|
|
529
|
+
J --> J2["/codex:review"]
|
|
530
|
+
J1 --> K["3중 교차 검증 → P1/P2/P3"]
|
|
531
|
+
J2 --> K
|
|
532
|
+
J --> J3["경계면 검증"]
|
|
435
533
|
|
|
436
534
|
L["Session RAG"] -.-> M["Decision / Constraint / Goal / Evidence"]
|
|
437
|
-
|
|
438
|
-
|
|
535
|
+
N["VibeSpan"] -.-> O["spans.jsonl (로컬 텔레메트리)"]
|
|
536
|
+
P["품질 게이트"] -.-> Q["pre-tool-guard → 차단"]
|
|
537
|
+
P -.-> R["code-check → 검증"]
|
|
439
538
|
```
|
|
440
539
|
|
|
441
540
|
---
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
# QA Coordinator
|
|
2
|
+
|
|
3
|
+
<!-- QA Orchestrator Agent — routes changed code to appropriate QA agents -->
|
|
4
|
+
|
|
5
|
+
## Role
|
|
6
|
+
|
|
7
|
+
- Analyze code changes to determine which QA modalities are needed
|
|
8
|
+
- Dispatch QA agents in parallel based on change type
|
|
9
|
+
- Collect and synthesize results into a unified QA report
|
|
10
|
+
- Ensure feature readiness before dispatching (build passes, no syntax errors)
|
|
11
|
+
|
|
12
|
+
## Model
|
|
13
|
+
|
|
14
|
+
**Sonnet** — Balanced reasoning for routing decisions
|
|
15
|
+
|
|
16
|
+
## Execution Mode: Sub-Agent (Fan-out/Fan-in)
|
|
17
|
+
|
|
18
|
+
Dispatches multiple QA agents in parallel, collects results, synthesizes.
|
|
19
|
+
|
|
20
|
+
## Change Type → QA Agent Routing
|
|
21
|
+
|
|
22
|
+
| Change Type | Signal | QA Agents to Dispatch |
|
|
23
|
+
|-------------|--------|----------------------|
|
|
24
|
+
| **API/Backend** | `src/api/`, `src/services/`, `routes/`, `controllers/` | security-reviewer, edge-case-finder, performance-reviewer |
|
|
25
|
+
| **Frontend/UI** | `src/components/`, `src/pages/`, `*.tsx`, `*.vue` | ui-a11y-auditor, ux-compliance-reviewer, edge-case-finder |
|
|
26
|
+
| **Data/Schema** | `models/`, `migrations/`, `schema/`, `*.prisma` | data-integrity-reviewer, edge-case-finder, acceptance-tester |
|
|
27
|
+
| **Auth/Security** | `auth/`, `middleware/`, `session/`, `token/` | security-reviewer, edge-case-finder, e2e-tester |
|
|
28
|
+
| **State Machine** | state transitions, workflow, status changes | edge-case-finder, acceptance-tester, data-integrity-reviewer |
|
|
29
|
+
| **E2E Flow** | checkout, payment, multi-step form | e2e-tester, edge-case-finder, acceptance-tester |
|
|
30
|
+
| **Config/Infra** | `.env`, `config/`, `docker`, CI/CD | security-reviewer, architecture-reviewer |
|
|
31
|
+
|
|
32
|
+
## Workflow
|
|
33
|
+
|
|
34
|
+
### Phase 1: Readiness Check
|
|
35
|
+
|
|
36
|
+
Before dispatching any QA agent, verify:
|
|
37
|
+
|
|
38
|
+
1. **Build passes**: Run `npm run build` (or project equivalent) — if it fails, STOP and report build errors
|
|
39
|
+
2. **Changed files identified**: Use `git diff --name-only` to get the list of changed files
|
|
40
|
+
3. **Change type classified**: Match changed files against the routing table above
|
|
41
|
+
|
|
42
|
+
If build fails → return build errors immediately. Do not dispatch QA agents on broken code.
|
|
43
|
+
|
|
44
|
+
### Phase 2: Agent Dispatch (Parallel)
|
|
45
|
+
|
|
46
|
+
Based on classified change types, dispatch agents in a single message:
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
Agent(subagent_type="edge-case-finder", model="haiku",
|
|
50
|
+
prompt="Analyze these changed files for edge cases: {file_list}. Read each file fully before analysis.",
|
|
51
|
+
run_in_background=true)
|
|
52
|
+
|
|
53
|
+
Agent(subagent_type="security-reviewer", model="haiku",
|
|
54
|
+
prompt="Security review for: {file_list}. Check OWASP Top 10. Read each file fully.",
|
|
55
|
+
run_in_background=true)
|
|
56
|
+
|
|
57
|
+
Agent(subagent_type="{other-agent}", model="haiku",
|
|
58
|
+
prompt="...",
|
|
59
|
+
run_in_background=true)
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
**Rules:**
|
|
63
|
+
- Maximum 5 parallel agents (avoid context explosion)
|
|
64
|
+
- Always include `edge-case-finder` (catches what others miss)
|
|
65
|
+
- De-duplicate: if multiple change types route to the same agent, dispatch once with combined file list
|
|
66
|
+
- Each agent prompt MUST include the specific file list to review
|
|
67
|
+
|
|
68
|
+
### Phase 3: Result Collection & Synthesis
|
|
69
|
+
|
|
70
|
+
1. Wait for all agents to complete
|
|
71
|
+
2. Read each agent's output
|
|
72
|
+
3. Merge findings by priority:
|
|
73
|
+
- **P1 (Critical)**: Aggregate from all agents, de-duplicate
|
|
74
|
+
- **P2 (Important)**: Aggregate, de-duplicate
|
|
75
|
+
- **P3 (Nice-to-have)**: List briefly
|
|
76
|
+
4. Cross-reference: if multiple agents flag the same location, elevate confidence
|
|
77
|
+
|
|
78
|
+
### Phase 4: Unified Report
|
|
79
|
+
|
|
80
|
+
```markdown
|
|
81
|
+
## QA Coordinator Report
|
|
82
|
+
|
|
83
|
+
### Summary
|
|
84
|
+
- Changed files: {N}
|
|
85
|
+
- Change types: {list}
|
|
86
|
+
- QA agents dispatched: {N} ({agent names})
|
|
87
|
+
- Total findings: P1={N}, P2={N}, P3={N}
|
|
88
|
+
|
|
89
|
+
### Build Status
|
|
90
|
+
- [PASS/FAIL] Build check
|
|
91
|
+
|
|
92
|
+
### P1 Findings (Must Fix)
|
|
93
|
+
| # | Agent | Finding | Location | Recommendation |
|
|
94
|
+
|---|-------|---------|----------|----------------|
|
|
95
|
+
| 1 | security-reviewer | SQL injection risk | src/api/users.ts:42 | Use parameterized query |
|
|
96
|
+
| 2 | edge-case-finder | No null check | src/services/auth.ts:15 | Add validation |
|
|
97
|
+
|
|
98
|
+
### P2 Findings (Should Fix)
|
|
99
|
+
| # | Agent | Finding | Location | Recommendation |
|
|
100
|
+
|---|-------|---------|----------|----------------|
|
|
101
|
+
|
|
102
|
+
### P3 Findings (Consider)
|
|
103
|
+
- {brief list}
|
|
104
|
+
|
|
105
|
+
### Cross-Validated Findings
|
|
106
|
+
Findings flagged by 2+ agents (high confidence):
|
|
107
|
+
- {finding} — flagged by {agent1}, {agent2}
|
|
108
|
+
|
|
109
|
+
### Coverage Gaps
|
|
110
|
+
QA modalities NOT run (and why):
|
|
111
|
+
- {e.g., "e2e-tester: no E2E flow changes detected"}
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
## Error Handling
|
|
115
|
+
|
|
116
|
+
| Situation | Strategy |
|
|
117
|
+
|-----------|----------|
|
|
118
|
+
| Agent fails | 1 retry. If fails again, note in report as "coverage gap" |
|
|
119
|
+
| Agent timeout | Use partial results if available, note in report |
|
|
120
|
+
| Build fails | Stop immediately, report build errors only |
|
|
121
|
+
| No changed files | Report "nothing to review" |
|
|
122
|
+
| All agents return P1=0 | Report clean status, still list what was checked |
|
|
123
|
+
|
|
124
|
+
## CRITICAL: NO DIRECT CODE FIXES
|
|
125
|
+
|
|
126
|
+
This agent coordinates and reports only. It does NOT:
|
|
127
|
+
- Modify source code
|
|
128
|
+
- Create fix PRs
|
|
129
|
+
- Write test files
|
|
130
|
+
|
|
131
|
+
It produces the QA report. Fixes are handled by the user or implementer agents.
|
package/commands/vibe.review.md
CHANGED
|
@@ -20,6 +20,16 @@ argument-hint: "PR number, branch name, or file path"
|
|
|
20
20
|
|
|
21
21
|
> **⏱️ Timer**: Call `getCurrentTime` tool at the START. Record the result as `{start_time}`.
|
|
22
22
|
|
|
23
|
+
## Codex Plugin Integration
|
|
24
|
+
|
|
25
|
+
> **Codex 플러그인 감지**: 워크플로우 시작 시 아래 명령으로 자동 감지.
|
|
26
|
+
>
|
|
27
|
+
> ```bash
|
|
28
|
+
> CODEX_AVAILABLE=$(node "{{VIBE_PATH}}/hooks/scripts/codex-detect.js" 2>/dev/null || echo "unavailable")
|
|
29
|
+
> ```
|
|
30
|
+
>
|
|
31
|
+
> `available`이면 `/codex:review`, `/codex:rescue` 자동 호출. `unavailable`이면 기존 GPT+Gemini Race 모드로 동작.
|
|
32
|
+
|
|
23
33
|
## Race Mode (v2.6.9)
|
|
24
34
|
|
|
25
35
|
**Multi-LLM competitive review** - Same review task runs on GPT + Gemini in parallel, results are cross-validated.
|
|
@@ -89,6 +99,25 @@ security-review:
|
|
|
89
99
|
- **Location**: `src/components/Comment.tsx:15`
|
|
90
100
|
```
|
|
91
101
|
|
|
102
|
+
### Codex Review (Codex 플러그인 활성화 시)
|
|
103
|
+
|
|
104
|
+
Race Mode에서 GPT+Gemini와 **동시에** Codex review 실행하여 3중 교차 검증:
|
|
105
|
+
|
|
106
|
+
```
|
|
107
|
+
/codex:review
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
교차 검증 테이블:
|
|
111
|
+
|
|
112
|
+
```markdown
|
|
113
|
+
| Issue | GPT | Gemini | Codex | Confidence |
|
|
114
|
+
|-------|-----|--------|-------|------------|
|
|
115
|
+
| {이슈} | ✅/❌ | ✅/❌ | ✅/❌ | {%} |
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
- 3개 모델 중 2개 이상 동의 → **High Confidence** (P1 자동 수정)
|
|
119
|
+
- Codex만 발견 → **Medium Confidence** (P2 수동 검토)
|
|
120
|
+
|
|
92
121
|
### When to Use Race Mode
|
|
93
122
|
|
|
94
123
|
| Scenario | Recommended |
|
|
@@ -257,6 +286,46 @@ Task(subagent_type="ui-antipattern-detector",
|
|
|
257
286
|
|
|
258
287
|
**⑦ Critical finding 에스컬레이션**: ui-a11y-auditor의 P1 finding은 Review Debate Team(Phase 4.5)에 자동 포함
|
|
259
288
|
|
|
289
|
+
### Phase 2.7: Boundary Mismatch Detection (Integration Coherence)
|
|
290
|
+
|
|
291
|
+
> **활성화 조건**: 변경된 파일 중 API route + 프론트엔드 훅/컴포넌트가 함께 존재
|
|
292
|
+
> 경계면 불일치는 개별 파일 리뷰로는 발견 불가 — **양쪽을 동시에 읽어야** 잡힘
|
|
293
|
+
|
|
294
|
+
**검증 방법: "양쪽 동시 읽기"**
|
|
295
|
+
|
|
296
|
+
반드시 **생산자와 소비자 코드를 동시에** Read하여 교차 비교한다.
|
|
297
|
+
|
|
298
|
+
| 검증 영역 | 생산자 (왼쪽) | 소비자 (오른쪽) | 검증 내용 |
|
|
299
|
+
|----------|-------------|---------------|----------|
|
|
300
|
+
| API ↔ 훅 타입 | route의 Response.json() shape | hooks의 fetch\<T\> 타입 | shape 일치, 래핑 unwrap, case 변환 |
|
|
301
|
+
| 라우팅 정합성 | src/app/ page 파일 경로 | href, router.push 값 | 경로 매칭, route group 처리, 동적 세그먼트 |
|
|
302
|
+
| 상태 전이 | STATE_TRANSITIONS 맵 | .update({ status }) 코드 | 죽은 전이, 무단 전이, 중간→최종 누락 |
|
|
303
|
+
| 데이터 흐름 | DB 스키마 필드명 | API 응답 → 프론트 타입 | 필드명 일치, optional 처리 일관성 |
|
|
304
|
+
|
|
305
|
+
**실행 방식 — 변경 파일 기반 자동 판별:**
|
|
306
|
+
|
|
307
|
+
```text
|
|
308
|
+
1. git diff에서 API route 파일과 대응 프론트 파일을 짝으로 매칭
|
|
309
|
+
2. 짝이 있는 경우 → 아래 4개 검증 실행
|
|
310
|
+
3. 짝이 없는 경우 (API만 또는 프론트만 변경) → "대응 파일 미변경" 경고 후 스킵
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
**검증 체크리스트:**
|
|
314
|
+
|
|
315
|
+
- [ ] API 응답 shape과 대응 훅의 제네릭 타입이 일치
|
|
316
|
+
- [ ] 래핑된 응답(`{ items: [...] }`)은 훅에서 unwrap하는지 확인
|
|
317
|
+
- [ ] snake_case ↔ camelCase 변환이 일관되게 적용
|
|
318
|
+
- [ ] 모든 API 엔드포인트에 대응하는 프론트 훅이 존재하고 실제 호출됨
|
|
319
|
+
- [ ] 코드 내 모든 href/router.push 값이 실제 page 파일 경로와 매칭
|
|
320
|
+
- [ ] 정의된 모든 상태 전이가 코드에서 실행됨 (죽은 전이 없음)
|
|
321
|
+
- [ ] 프론트에서 상태 기반 분기의 값이 실제 도달 가능한 상태
|
|
322
|
+
- [ ] DB 필드명 → API 응답 필드명 → 프론트 타입 정의 간 매핑 일관
|
|
323
|
+
|
|
324
|
+
**Findings 분류:**
|
|
325
|
+
- 경계면 불일치 → **P1** (런타임 에러의 주요 원인)
|
|
326
|
+
- 대응 파일 미존재 (API 있으나 훅 없음) → **P2**
|
|
327
|
+
- case 변환 비일관성 → **P2**
|
|
328
|
+
|
|
260
329
|
### Phase 3: Deep Analysis
|
|
261
330
|
|
|
262
331
|
After agent results:
|
|
@@ -408,6 +477,16 @@ P2 Important:
|
|
|
408
477
|
|
|
409
478
|
→ Manual handling instructions in Phase 6
|
|
410
479
|
|
|
480
|
+
### Auto-Fix 실패 시 Codex Rescue (Codex 플러그인 활성화 시)
|
|
481
|
+
|
|
482
|
+
P1/P2 auto-fix **3회 실패** 시, Codex에 위임:
|
|
483
|
+
|
|
484
|
+
```
|
|
485
|
+
/codex:rescue "Fix {priority} issue: {issue-description}. File: {file-path}"
|
|
486
|
+
```
|
|
487
|
+
|
|
488
|
+
Codex 수정 완료 후 해당 리뷰 에이전트가 재검증.
|
|
489
|
+
|
|
411
490
|
### Phase 6: Todo File Creation (Items Requiring Manual Handling)
|
|
412
491
|
|
|
413
492
|
Save **remaining** findings to `.claude/vibe/todos/`:
|