@su-record/vibe 2.7.19 → 2.7.21

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 (129) hide show
  1. package/README.md +178 -77
  2. package/agents/qa/qa-coordinator.md +131 -0
  3. package/commands/vibe.review.md +79 -0
  4. package/commands/vibe.run.md +68 -9
  5. package/commands/vibe.spec.review.md +48 -8
  6. package/commands/vibe.verify.md +26 -0
  7. package/dist/cli/commands/init.d.ts.map +1 -1
  8. package/dist/cli/commands/init.js +4 -12
  9. package/dist/cli/commands/init.js.map +1 -1
  10. package/dist/cli/postinstall/claude-agents.d.ts.map +1 -1
  11. package/dist/cli/postinstall/claude-agents.js +1 -0
  12. package/dist/cli/postinstall/claude-agents.js.map +1 -1
  13. package/dist/cli/postinstall/codex-agents.d.ts +18 -6
  14. package/dist/cli/postinstall/codex-agents.d.ts.map +1 -1
  15. package/dist/cli/postinstall/codex-agents.js +78 -16
  16. package/dist/cli/postinstall/codex-agents.js.map +1 -1
  17. package/dist/cli/postinstall/constants.d.ts.map +1 -1
  18. package/dist/cli/postinstall/constants.js +17 -14
  19. package/dist/cli/postinstall/constants.js.map +1 -1
  20. package/dist/cli/postinstall/index.d.ts +1 -1
  21. package/dist/cli/postinstall/index.d.ts.map +1 -1
  22. package/dist/cli/postinstall/index.js +1 -1
  23. package/dist/cli/postinstall/index.js.map +1 -1
  24. package/dist/cli/postinstall/main.d.ts.map +1 -1
  25. package/dist/cli/postinstall/main.js +4 -8
  26. package/dist/cli/postinstall/main.js.map +1 -1
  27. package/dist/cli/postinstall.d.ts +1 -1
  28. package/dist/cli/postinstall.d.ts.map +1 -1
  29. package/dist/cli/postinstall.js +1 -1
  30. package/dist/cli/postinstall.js.map +1 -1
  31. package/dist/cli/types.d.ts +1 -0
  32. package/dist/cli/types.d.ts.map +1 -1
  33. package/dist/cli/utils/cli-detector.d.ts +1 -0
  34. package/dist/cli/utils/cli-detector.d.ts.map +1 -1
  35. package/dist/cli/utils/cli-detector.js +1 -0
  36. package/dist/cli/utils/cli-detector.js.map +1 -1
  37. package/dist/infra/lib/ComponentRegistry.d.ts +35 -0
  38. package/dist/infra/lib/ComponentRegistry.d.ts.map +1 -0
  39. package/dist/infra/lib/ComponentRegistry.js +59 -0
  40. package/dist/infra/lib/ComponentRegistry.js.map +1 -0
  41. package/dist/infra/lib/ReviewRace.d.ts.map +1 -1
  42. package/dist/infra/lib/ReviewRace.js +11 -7
  43. package/dist/infra/lib/ReviewRace.js.map +1 -1
  44. package/dist/infra/lib/__tests__/ComponentRegistry.test.d.ts +2 -0
  45. package/dist/infra/lib/__tests__/ComponentRegistry.test.d.ts.map +1 -0
  46. package/dist/infra/lib/__tests__/ComponentRegistry.test.js +99 -0
  47. package/dist/infra/lib/__tests__/ComponentRegistry.test.js.map +1 -0
  48. package/dist/infra/lib/embedding/__tests__/EmbeddingProvider.test.js +4 -0
  49. package/dist/infra/lib/embedding/__tests__/EmbeddingProvider.test.js.map +1 -1
  50. package/dist/infra/lib/evolution/DescriptionOptimizer.d.ts +45 -0
  51. package/dist/infra/lib/evolution/DescriptionOptimizer.d.ts.map +1 -1
  52. package/dist/infra/lib/evolution/DescriptionOptimizer.js +151 -0
  53. package/dist/infra/lib/evolution/DescriptionOptimizer.js.map +1 -1
  54. package/dist/infra/lib/evolution/__tests__/eval.test.js +64 -0
  55. package/dist/infra/lib/evolution/__tests__/eval.test.js.map +1 -1
  56. package/dist/infra/lib/gpt/chat.d.ts.map +1 -1
  57. package/dist/infra/lib/gpt/chat.js +8 -0
  58. package/dist/infra/lib/gpt/chat.js.map +1 -1
  59. package/dist/infra/lib/gpt/specializations.d.ts.map +1 -1
  60. package/dist/infra/lib/gpt/specializations.js +5 -0
  61. package/dist/infra/lib/gpt/specializations.js.map +1 -1
  62. package/dist/infra/lib/llm-availability.d.ts +21 -0
  63. package/dist/infra/lib/llm-availability.d.ts.map +1 -0
  64. package/dist/infra/lib/llm-availability.js +57 -0
  65. package/dist/infra/lib/llm-availability.js.map +1 -0
  66. package/dist/infra/lib/memory/IMemoryStorage.d.ts +16 -0
  67. package/dist/infra/lib/memory/IMemoryStorage.d.ts.map +1 -0
  68. package/dist/infra/lib/memory/IMemoryStorage.js +7 -0
  69. package/dist/infra/lib/memory/IMemoryStorage.js.map +1 -0
  70. package/dist/infra/lib/memory/InMemoryStorage.d.ts +13 -0
  71. package/dist/infra/lib/memory/InMemoryStorage.d.ts.map +1 -0
  72. package/dist/infra/lib/memory/InMemoryStorage.js +44 -0
  73. package/dist/infra/lib/memory/InMemoryStorage.js.map +1 -0
  74. package/dist/infra/lib/memory/MemoryStorage.d.ts +2 -1
  75. package/dist/infra/lib/memory/MemoryStorage.d.ts.map +1 -1
  76. package/dist/infra/lib/memory/MemoryStorage.js.map +1 -1
  77. package/dist/infra/lib/memory/__tests__/InMemoryStorage.test.d.ts +2 -0
  78. package/dist/infra/lib/memory/__tests__/InMemoryStorage.test.d.ts.map +1 -0
  79. package/dist/infra/lib/memory/__tests__/InMemoryStorage.test.js +114 -0
  80. package/dist/infra/lib/memory/__tests__/InMemoryStorage.test.js.map +1 -0
  81. package/dist/infra/lib/memory/index.d.ts +2 -0
  82. package/dist/infra/lib/memory/index.d.ts.map +1 -1
  83. package/dist/infra/lib/memory/index.js +1 -0
  84. package/dist/infra/lib/memory/index.js.map +1 -1
  85. package/dist/infra/lib/telemetry/SkillTelemetry.d.ts +8 -0
  86. package/dist/infra/lib/telemetry/SkillTelemetry.d.ts.map +1 -1
  87. package/dist/infra/lib/telemetry/SkillTelemetry.js +40 -0
  88. package/dist/infra/lib/telemetry/SkillTelemetry.js.map +1 -1
  89. package/dist/infra/lib/telemetry/SkillTelemetry.test.js +33 -0
  90. package/dist/infra/lib/telemetry/SkillTelemetry.test.js.map +1 -1
  91. package/dist/infra/lib/telemetry/VibeSpan.d.ts +20 -0
  92. package/dist/infra/lib/telemetry/VibeSpan.d.ts.map +1 -0
  93. package/dist/infra/lib/telemetry/VibeSpan.js +26 -0
  94. package/dist/infra/lib/telemetry/VibeSpan.js.map +1 -0
  95. package/dist/infra/orchestrator/BackgroundManager.d.ts.map +1 -1
  96. package/dist/infra/orchestrator/BackgroundManager.js +2 -0
  97. package/dist/infra/orchestrator/BackgroundManager.js.map +1 -1
  98. package/dist/infra/orchestrator/MultiLlmResearch.d.ts.map +1 -1
  99. package/dist/infra/orchestrator/MultiLlmResearch.js +49 -40
  100. package/dist/infra/orchestrator/MultiLlmResearch.js.map +1 -1
  101. package/dist/infra/orchestrator/SmartRouter.d.ts.map +1 -1
  102. package/dist/infra/orchestrator/SmartRouter.js +4 -3
  103. package/dist/infra/orchestrator/SmartRouter.js.map +1 -1
  104. package/dist/infra/orchestrator/types.d.ts +8 -0
  105. package/dist/infra/orchestrator/types.d.ts.map +1 -1
  106. package/dist/infra/orchestrator/types.js +36 -0
  107. package/dist/infra/orchestrator/types.js.map +1 -1
  108. package/dist/tools/index.d.ts +6 -0
  109. package/dist/tools/index.d.ts.map +1 -1
  110. package/dist/tools/index.js +5 -0
  111. package/dist/tools/index.js.map +1 -1
  112. package/hooks/hooks.json +4 -0
  113. package/hooks/scripts/codex-detect.js +46 -0
  114. package/hooks/scripts/codex-review-gate.js +80 -0
  115. package/hooks/scripts/evolution-engine.js +69 -0
  116. package/hooks/scripts/llm-orchestrate.js +9 -5
  117. package/hooks/scripts/skill-injector.js +83 -0
  118. package/package.json +1 -1
  119. package/skills/arch-guard/SKILL.md +1 -1
  120. package/skills/brand-assets/SKILL.md +1 -1
  121. package/skills/capability-loop/SKILL.md +1 -1
  122. package/skills/characterization-test/SKILL.md +1 -1
  123. package/skills/commerce-patterns/SKILL.md +1 -1
  124. package/skills/e2e-commerce/SKILL.md +1 -1
  125. package/skills/exec-plan/SKILL.md +1 -1
  126. package/skills/parallel-research/SKILL.md +1 -1
  127. package/skills/seo-checklist/SKILL.md +1 -1
  128. package/skills/ui-ux-pro-max/SKILL.md +1 -1
  129. package/skills/video-production/SKILL.md +1 -1
package/README.md CHANGED
@@ -1,4 +1,4 @@
1
- # VIBE — AI Coding Framework for Claude Code
1
+ # VIBE — AI Coding Framework
2
2
 
3
3
  [![npm version](https://img.shields.io/npm/v/@su-record/vibe)](https://www.npmjs.com/package/@su-record/vibe)
4
4
  [![npm downloads](https://img.shields.io/npm/dt/@su-record/vibe.svg?style=flat-square&color=blue)](https://www.npmjs.com/package/@su-record/vibe)
@@ -6,7 +6,9 @@
6
6
  [![TypeScript](https://img.shields.io/badge/TypeScript-5.5+-blue)](https://www.typescriptlang.org/)
7
7
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
8
8
 
9
- **설치 한 줄로 Claude Code에 49개 에이전트, 41+ 도구, 멀티 LLM 오케스트레이션을 더합니다.**
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
- | 리뷰 없이 머지 | 13개 에이전트 병렬 리뷰 |
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. **자동 리뷰** — 13개 전문 에이전트 병렬 검토, P1/P2 자동 수정
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
- ## 에이전트 (49개)
103
+ ## 에이전트 (56개)
66
104
 
67
105
  ### 메인 에이전트 (19)
68
106
 
@@ -87,54 +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
- ### 리서치 & QA (10)
128
+ ### QA & 리서치 (11)
91
129
 
92
- Best Practices, Framework Docs, Codebase Patterns, Security Advisory, Requirements Analyst, UX Advisor, Acceptance Tester, Edge Case Finder, API Documenter, Changelog Writer
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 |
93
135
 
94
- ### 에이전트 (9팀)
136
+ QA Coordinator는 변경된 코드를 분석하여 적절한 QA 에이전트를 병렬 디스패치하고, 통합 QA 리포트를 생성합니다.
95
137
 
96
- 에이전트가 팀을 구성하여 공유 태스크 리스트로 협업합니다.
138
+ ### 이벤트 에이전트 (6)
97
139
 
98
- | | 트리거 | 멤버 |
99
- |----|--------|------|
100
- | Lite | `/vibe.run` 일반 | architect, implementer, tester |
101
- | Dev | `/vibe.run` ULTRAWORK | + security-reviewer |
102
- | Research | `/vibe.spec` | 4개 리서치 에이전트 |
103
- | Review Debate | `/vibe.review` | security, architecture, performance, simplicity |
104
- | Debug | `/vibe.run` 실패 | architect, implementer, tester |
105
- | Security | `/vibe.run` 보안 | security, data-integrity, security-advisory, tester |
106
- | Migration | `/vibe.run` 마이그레이션 | + build-error-resolver |
107
- | Fullstack | `/vibe.run` 풀스택 | frontend + backend implementer |
108
- | SPEC Debate | `/vibe.spec.review` | 동일 |
140
+ Event Content, Event Image, Event Speaker, Event Ops, Event Comms, Event Scheduler
109
141
 
110
142
  ---
111
143
 
112
144
  ## 멀티 LLM 오케스트레이션
113
145
 
114
- | 프로바이더 | 역할 | 인증 |
115
- |-----------|------|------|
116
- | **Claude** | 오케스트레이션, 코드 생성 | 내장 (Claude Code) |
117
- | **GPT** | 아키텍처, 디버깅, 교차 리뷰 | OAuth / API Key |
118
- | **Gemini** | UI/UX, 검색, 음성, 리서치 | OAuth / API Key |
119
-
120
- ### SmartRouter
121
-
122
- 작업 유형별 자동 라우팅 + 폴백 체인. 프로바이더별 30초 타임아웃, 최대 3회 재시도, 5분 가용성 캐시.
123
-
124
- | 작업 유형 | 우선순위 |
125
- |----------|---------|
126
- | 코드 분석, 리뷰, 추론, 아키텍처 | GPT → Gemini → Claude |
127
- | UI/UX, 웹 검색 | Gemini → GPT → Claude |
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 |
128
153
 
129
- ### ReviewRace
154
+ ### 동적 모델 라우팅
130
155
 
131
- GPT/Gemini 동시에 리뷰 Jaccard 유사도 교차 검증 → 우선순위 산출.
156
+ Codex/Gemini 활성화 상태에 따라 자동 스위칭. 기본은 Claude만으로 동작.
132
157
 
133
- | 우선순위 | 조건 | 처리 |
134
- |---------|------|------|
135
- | **P1** | 신뢰도 >= 0.9 AND critical/high | 자동 수정 |
136
- | **P2** | 신뢰도 >= 0.6 OR medium | 자동 수정 |
137
- | **P3** | 나머지 | 참고 |
158
+ | 상태 | 동작 |
159
+ |------|------|
160
+ | **Claude only** | Opus(설계/판단) + Sonnet(리뷰/구현) + Haiku(탐색) |
161
+ | **+Codex** | 구현→5.3-Codex, 리뷰→Spark, 추론→5.4 스위칭 |
162
+ | **+Gemini** | 리서치/리뷰에 Gemini 병렬 추가 |
163
+ | **+Codex +Gemini** | 풀 오케스트레이션 (7개 모델) |
138
164
 
139
165
  ---
140
166
 
@@ -156,6 +182,58 @@ ULTRAWORK 모드에서 다음 Phase의 `prepare()`를 병렬 실행.
156
182
 
157
183
  ---
158
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
+
159
237
  ## Session RAG
160
238
 
161
239
  SQLite + FTS5 하이브리드 검색으로 세션 간 컨텍스트를 유지합니다.
@@ -172,22 +250,21 @@ SQLite + FTS5 하이브리드 검색으로 세션 간 컨텍스트를 유지합
172
250
 
173
251
  ## 스킬
174
252
 
175
- ### 내장 스킬
253
+ ### 내장 스킬 (26개)
176
254
 
177
255
  에이전트가 활용하는 도메인별 스킬 모듈입니다. 스택 감지 결과에 따라 자동 설치됩니다.
178
256
 
179
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
180
258
 
181
- **프론트엔드**: Frontend Design, UI/UX Pro Max, Brand Assets, SEO Checklist, Vercel React Best Practices
259
+ **프론트엔드**: Frontend Design, UI/UX Pro Max, Brand Assets, SEO Checklist
182
260
 
183
- **도메인**: Commerce Patterns, E2E Commerce, Video Production, TypeScript Advanced Types
261
+ **도메인**: Commerce Patterns, E2E Commerce, Video Production
184
262
 
185
263
  ### 외부 스킬 (skills.sh)
186
264
 
187
265
  [skills.sh](https://skills.sh) 에코시스템의 외부 스킬을 설치할 수 있습니다.
188
266
 
189
267
  ```bash
190
- # 수동 설치
191
268
  vibe skills add vercel-labs/next-skills
192
269
  ```
193
270
 
@@ -198,8 +275,6 @@ vibe skills add vercel-labs/next-skills
198
275
  | `typescript-react` | `vercel-labs/agent-skills` |
199
276
  | `typescript-nextjs` | `vercel-labs/agent-skills`, `vercel-labs/next-skills` |
200
277
 
201
- 설치된 패키지는 `.claude/vibe/config.json`의 `installedExternalSkills`로 추적되어 중복 설치를 방지합니다.
202
-
203
278
  ---
204
279
 
205
280
  ## 25개 프레임워크 지원
@@ -216,7 +291,7 @@ vibe skills add vercel-labs/next-skills
216
291
 
217
292
  ---
218
293
 
219
- ## 41+ 내장 도구
294
+ ## 43+ 내장 도구
220
295
 
221
296
  ### 메모리 & 세션 (21)
222
297
 
@@ -226,14 +301,18 @@ vibe skills add vercel-labs/next-skills
226
301
 
227
302
  `core_find_symbol`, `core_find_references`, `core_analyze_dependency_graph`, `core_analyze_complexity`, `core_validate_code_quality`, `core_check_coupling_cohesion`, `core_suggest_improvements`, `core_apply_quality_rules`
228
303
 
229
- ### SPEC & 테스트 (9)
304
+ ### SPEC & 테스트 (7)
230
305
 
231
- `core_spec_generator`, `core_prd_parser`, `core_traceability_matrix`, `core_e2e_test_generator`, `core_preview_ui_ascii` 등
306
+ `core_spec_generator`, `core_prd_parser`, `core_traceability_matrix`, `core_preview_ui_ascii` 등
232
307
 
233
308
  ### UI/UX (4)
234
309
 
235
310
  `core_ui_search`, `core_ui_stack_search`, `core_ui_generate_design_system`, `core_ui_persist_design_system`
236
311
 
312
+ ### 반복 제어 (3+)
313
+
314
+ `LoopBreaker`, `VerificationLoop`, `DecisionTracer`, `InteractiveCheckpoint`, `AutomationLevel`
315
+
237
316
  ---
238
317
 
239
318
  ## 품질 보장
@@ -241,11 +320,12 @@ vibe skills add vercel-labs/next-skills
241
320
  | 가드레일 | 메커니즘 |
242
321
  |----------|---------|
243
322
  | **타입 안전성** | Quality Gate — `any`, `@ts-ignore` 차단 |
244
- | **코드 리뷰** | ReviewRace GPT + Gemini 교차 검증 |
323
+ | **코드 리뷰** | 12개 Sonnet 에이전트 병렬 리뷰 + Codex 3중 교차 검증 |
324
+ | **경계면 검증** | API↔프론트엔드 타입/라우팅/상태 정합성 자동 검증 |
245
325
  | **완성도** | Ralph Loop — 100%까지 반복 (범위 축소 없음) |
326
+ | **수렴 보장** | Convergence — P1=0이면 완료, 반복 시 범위 축소 |
246
327
  | **스코프 보호** | pre-tool-guard — 요청 범위 외 수정 방지 |
247
328
  | **컨텍스트 보호** | context-save — 80/90/95% 자동 저장 |
248
- | **합리화 방지** | Anti-Rationalization — AI 변명 패턴 차단 |
249
329
  | **증거 게이트** | Evidence Gate — 증거 없는 완료 주장 금지 |
250
330
 
251
331
  **복잡도 제한**: 함수 ≤50줄 | 중첩 ≤3단계 | 매개변수 ≤5 | 순환 복잡도 ≤10
@@ -264,7 +344,7 @@ vibe skills add vercel-labs/next-skills
264
344
  | UserPromptSubmit | `keyword-detector.js` | 매직 키워드 감지 |
265
345
  | Notification | `context-save.js` | 컨텍스트 80/90/95% 자동 저장 |
266
346
 
267
- 추가: `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`
268
348
 
269
349
  ---
270
350
 
@@ -274,12 +354,13 @@ vibe skills add vercel-labs/next-skills
274
354
  |--------|------|
275
355
  | `/vibe.spec "기능"` | SPEC 작성 + GPT/Gemini 병렬 리서치 |
276
356
  | `/vibe.spec.review` | SPEC 품질 리뷰 |
277
- | `/vibe.run "기능"` | SPEC 기반 구현 + Race Review |
357
+ | `/vibe.run "기능"` | SPEC 기반 구현 + 병렬 코드 리뷰 |
278
358
  | `/vibe.verify "기능"` | SPEC 대비 BDD 검증 |
279
- | `/vibe.review` | 13개 에이전트 병렬 코드 리뷰 |
359
+ | `/vibe.review` | 12개 에이전트 병렬 코드 리뷰 |
280
360
  | `/vibe.trace "기능"` | 요구사항 추적성 매트릭스 |
281
361
  | `/vibe.reason "문제"` | 체계적 추론 프레임워크 |
282
362
  | `/vibe.analyze` | 프로젝트 분석 |
363
+ | `/vibe.event` | 이벤트 자동화 |
283
364
  | `/vibe.utils` | 유틸리티 (E2E, 다이어그램, UI, 세션 복원) |
284
365
 
285
366
  ---
@@ -316,8 +397,8 @@ vibe help / version
316
397
 
317
398
  | 프로바이더 | 우선순위 |
318
399
  |-----------|---------|
319
- | **GPT** | OAuth → API Key → Azure OpenAI |
320
- | **Gemini** | gemini-cli 자동감지 → OAuth → API Key |
400
+ | **GPT** | Codex CLI → API Key |
401
+ | **Gemini** | gemini-cli 자동감지 → API Key |
321
402
 
322
403
  ---
323
404
 
@@ -342,8 +423,8 @@ vibe help / version
342
423
  ```json
343
424
  {
344
425
  "credentials": {
345
- "gpt": { "oauthRefreshToken": "..." },
346
- "gemini": { "oauthRefreshToken": "..." }
426
+ "gpt": { "apiKey": "..." },
427
+ "gemini": { "apiKey": "..." }
347
428
  },
348
429
  "channels": {
349
430
  "telegram": { "botToken": "...", "allowedChatIds": ["..."] },
@@ -367,14 +448,22 @@ vibe help / version
367
448
  import { MemoryStorage, SessionRAGStore } from '@su-record/vibe/memory';
368
449
  import { SwarmOrchestrator, PhasePipeline } from '@su-record/vibe/orchestrator';
369
450
  import { findSymbol, validateCodeQuality } from '@su-record/vibe/tools';
451
+
452
+ // Agent-Lightning 패턴
453
+ import { InMemoryStorage, ComponentRegistry, createSpan } from '@su-record/vibe/tools';
370
454
  ```
371
455
 
372
456
  | 서브패스 | 주요 export |
373
457
  |---------|------------|
374
- | `@su-record/vibe/agent` | Agent 클래스 타입 |
375
- | `@su-record/vibe/memory` | `MemoryStorage`, `KnowledgeGraph`, `SessionRAGStore` |
458
+ | `@su-record/vibe/memory` | `MemoryStorage`, `IMemoryStorage`, `InMemoryStorage`, `KnowledgeGraph`, `SessionRAGStore` |
376
459
  | `@su-record/vibe/orchestrator` | `SwarmOrchestrator`, `PhasePipeline`, `BackgroundManager` |
377
- | `@su-record/vibe/tools` | `findSymbol`, `validateCodeQuality`, `saveMemory` 등 |
460
+ | `@su-record/vibe/tools` | `findSymbol`, `validateCodeQuality`, `createSpan`, `ComponentRegistry` 등 |
461
+ | `@su-record/vibe/tools/memory` | 메모리 도구 |
462
+ | `@su-record/vibe/tools/convention` | 코드 품질 도구 |
463
+ | `@su-record/vibe/tools/semantic` | 시맨틱 분석 도구 |
464
+ | `@su-record/vibe/tools/ui` | UI/UX 도구 |
465
+ | `@su-record/vibe/tools/interaction` | 사용자 상호작용 도구 |
466
+ | `@su-record/vibe/tools/time` | 시간 도구 |
378
467
 
379
468
  ---
380
469
 
@@ -392,18 +481,27 @@ your-project/
392
481
  │ │ └── reports/ # 리뷰 리포트
393
482
  │ └── skills/ # 로컬 + 외부 스킬
394
483
  ├── CLAUDE.md # 프로젝트 가이드 (자동 생성)
484
+ ├── AGENTS.md # Codex CLI 가이드 (자동 생성)
395
485
  └── ...
396
486
 
397
487
  ~/.vibe/config.json # 전역 설정 (인증, 채널, 모델)
488
+ ~/.vibe/analytics/ # 텔레메트리 (로컬 JSONL)
489
+ │ ├── skill-usage.jsonl # 스킬 사용 기록
490
+ │ ├── spans.jsonl # 구조화된 스팬
491
+ │ └── decisions.jsonl # 의사결정 추적
398
492
  ~/.claude/
399
493
  ├── vibe/
400
494
  │ ├── rules/ # 코딩 규칙
401
495
  │ ├── skills/ # 전역 스킬
402
- ├── ui-ux-data/ # UI/UX CSV 데이터
403
- ├── session-rag.db # Session RAG (SQLite + FTS5)
404
- └── memories.json # 저장된 메모리
405
- ├── commands/ # 슬래시 명령어 (10개)
406
- └── agents/ # 에이전트 정의 (49개)
496
+ └── ui-ux-data/ # UI/UX CSV 데이터
497
+ ├── commands/ # 슬래시 명령어
498
+ └── agents/ # 에이전트 정의 (56개)
499
+ ~/.codex/
500
+ └── plugins/vibe/ # Codex 플러그인
501
+ ├── .codex-plugin/plugin.json
502
+ ├── agents/
503
+ ├── skills/
504
+ └── AGENTS.md
407
505
  ```
408
506
 
409
507
  ---
@@ -417,23 +515,26 @@ flowchart TD
417
515
  C --> D["SmartRouter"]
418
516
 
419
517
  D --> E["LLMCluster"]
420
- E --> E1["GPT"]
421
- E --> E2["Gemini"]
518
+ E --> E1["GPT-5.4 (추론)"]
519
+ E --> E2["Codex Spark (리뷰)"]
520
+ E --> E3["Gemini (리서치)"]
422
521
 
423
522
  D --> F["PhasePipeline"]
424
523
  F --> G["SwarmOrchestrator"]
425
524
  G --> H["BackgroundManager"]
426
525
  H --> I["AgentRegistry"]
427
526
 
428
- D --> J["ReviewRace"]
429
- J --> J1["GPT 리뷰"]
430
- J --> J2["Gemini 리뷰"]
431
- J1 --> K["교차 검증 → P1/P2/P3"]
527
+ D --> J["병렬 리뷰"]
528
+ J --> J1["12개 Sonnet 리뷰 에이전트"]
529
+ J --> J2["/codex:review"]
530
+ J1 --> K["3중 교차 검증 → P1/P2/P3"]
432
531
  J2 --> K
532
+ J --> J3["경계면 검증"]
433
533
 
434
534
  L["Session RAG"] -.-> M["Decision / Constraint / Goal / Evidence"]
435
- O["품질 게이트"] -.-> P["pre-tool-guard 차단"]
436
- O -.-> Q["code-check검증"]
535
+ N["VibeSpan"] -.-> O["spans.jsonl (로컬 텔레메트리)"]
536
+ P["품질 게이트"] -.-> Q["pre-tool-guard차단"]
537
+ P -.-> R["code-check → 검증"]
437
538
  ```
438
539
 
439
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.
@@ -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/`: