@su-record/vibe 2.0.0 → 2.0.2
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/agents/explorer.md +48 -48
- package/.claude/agents/implementer.md +53 -53
- package/.claude/agents/searcher.md +54 -54
- package/.claude/agents/simplifier.md +119 -119
- package/.claude/agents/tester.md +49 -49
- package/.claude/commands/vibe.analyze.md +239 -239
- package/.claude/commands/vibe.continue.md +88 -88
- package/.claude/commands/vibe.diagram.md +178 -178
- package/.claude/commands/vibe.reason.md +306 -306
- package/.claude/commands/vibe.run.md +760 -760
- package/.claude/commands/vibe.spec.md +339 -339
- package/.claude/commands/vibe.tool.md +153 -153
- package/.claude/commands/vibe.ui.md +137 -137
- package/.claude/commands/vibe.verify.md +238 -238
- package/.claude/settings.json +152 -152
- package/.claude/settings.local.json +4 -57
- package/.vibe/config.json +9 -0
- package/.vibe/constitution.md +184 -184
- package/.vibe/rules/core/communication-guide.md +104 -104
- package/.vibe/rules/core/development-philosophy.md +52 -52
- package/.vibe/rules/core/quick-start.md +120 -120
- package/.vibe/rules/quality/bdd-contract-testing.md +388 -388
- package/.vibe/rules/quality/checklist.md +276 -276
- package/.vibe/rules/quality/testing-strategy.md +437 -437
- package/.vibe/rules/standards/anti-patterns.md +369 -369
- package/.vibe/rules/standards/code-structure.md +291 -291
- package/.vibe/rules/standards/complexity-metrics.md +312 -312
- package/.vibe/rules/standards/naming-conventions.md +198 -198
- package/.vibe/rules/tools/mcp-hi-ai-guide.md +665 -665
- package/.vibe/rules/tools/mcp-workflow.md +51 -51
- package/.vibe/setup.sh +31 -31
- package/CLAUDE.md +122 -122
- package/LICENSE +21 -21
- package/README.md +568 -568
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +391 -406
- package/dist/cli/index.js.map +1 -1
- package/dist/lib/MemoryManager.js +92 -92
- package/dist/lib/PythonParser.js +108 -108
- package/dist/lib/gemini-mcp.js +15 -15
- package/dist/lib/gemini-oauth.d.ts.map +1 -1
- package/dist/lib/gemini-oauth.js +41 -38
- package/dist/lib/gemini-oauth.js.map +1 -1
- package/dist/lib/gpt-mcp.js +17 -17
- package/dist/lib/gpt-oauth.d.ts.map +1 -1
- package/dist/lib/gpt-oauth.js +50 -45
- package/dist/lib/gpt-oauth.js.map +1 -1
- package/dist/tools/analytics/getUsageAnalytics.js +12 -12
- package/dist/tools/memory/createMemoryTimeline.js +10 -10
- package/dist/tools/memory/getMemoryGraph.js +12 -12
- package/dist/tools/memory/getSessionContext.js +9 -9
- package/dist/tools/memory/linkMemories.js +14 -14
- package/dist/tools/memory/listMemories.js +4 -4
- package/dist/tools/memory/recallMemory.js +4 -4
- package/dist/tools/memory/saveMemory.js +4 -4
- package/dist/tools/memory/searchMemoriesAdvanced.js +22 -22
- package/dist/tools/planning/generatePrd.js +46 -46
- package/dist/tools/prompt/enhancePromptGemini.js +160 -160
- package/dist/tools/reasoning/applyReasoningFramework.js +56 -56
- package/dist/tools/semantic/analyzeDependencyGraph.js +12 -12
- package/package.json +67 -67
- package/templates/constitution-template.md +184 -184
- package/templates/contract-backend-template.md +517 -517
- package/templates/contract-frontend-template.md +594 -594
- package/templates/feature-template.md +96 -96
- package/templates/hooks-template.json +103 -103
- package/templates/spec-template.md +199 -199
- package/dist/lib/vibe-mcp.d.ts.map +0 -1
- package/dist/lib/vibe-mcp.js.map +0 -1
package/README.md
CHANGED
|
@@ -1,568 +1,568 @@
|
|
|
1
|
-
# Vibe
|
|
2
|
-
|
|
3
|
-
**SPEC-driven AI coding framework (Claude Code 전용)**
|
|
4
|
-
|
|
5
|
-
SPEC 문서 하나로 AI가 바로 구현하고, **시나리오별 자동 검증**으로 품질을 보장하는 프레임워크.
|
|
6
|
-
|
|
7
|
-
> **품질은 사용자가 신경 쓰는 게 아니라, 시스템이 보장하는 것.**
|
|
8
|
-
|
|
9
|
-
[](https://www.npmjs.com/package/@su-record/vibe)
|
|
10
|
-
[](https://opensource.org/licenses/MIT)
|
|
11
|
-
[](https://github.com/su-record/vibe)
|
|
12
|
-
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
## Features
|
|
16
|
-
|
|
17
|
-
- **🤖 멀티모델 AI 오케스트레이션**: Claude + GPT + Gemini를 서브에이전트로 통합 (OAuth 인증)
|
|
18
|
-
- **시나리오 주도 개발 (SDD)**: 각 시나리오 = 구현 단위 = 검증 단위
|
|
19
|
-
- **BDD 자동 검증**: Given/When/Then 단계별 자동 품질 검증
|
|
20
|
-
- **품질 보장 시스템**: 비개발자도 품질을 신뢰할 수 있는 자동화
|
|
21
|
-
- **ULTRAWORK Mode**: `ulw` 한 단어로 모든 최적화 자동 활성화
|
|
22
|
-
- **Boulder Loop**: 모든 시나리오 완료까지 자동 진행
|
|
23
|
-
- **병렬 서브에이전트**: Haiku 3+ 동시 탐색으로 ~3배 속도 향상
|
|
24
|
-
- **자동 컨텍스트 관리**: 80%+ 시 자동 저장, 세션 자동 복원
|
|
25
|
-
- **36개 내장 도구**: 코드 분석, 품질 검증, 세션 메모리 (MCP 오버헤드 제거)
|
|
26
|
-
|
|
27
|
-
---
|
|
28
|
-
|
|
29
|
-
## Installation
|
|
30
|
-
|
|
31
|
-
```bash
|
|
32
|
-
npm install -g @su-record/vibe
|
|
33
|
-
```
|
|
34
|
-
|
|
35
|
-
---
|
|
36
|
-
|
|
37
|
-
## Quick Start
|
|
38
|
-
|
|
39
|
-
### 1. 프로젝트 초기화 (터미널)
|
|
40
|
-
|
|
41
|
-
```bash
|
|
42
|
-
# 기존 프로젝트에서
|
|
43
|
-
vibe init
|
|
44
|
-
# → 내장 도구 활성화 + MCP 서버 등록 (vibe-gemini, vibe-gpt, context7)
|
|
45
|
-
|
|
46
|
-
# 새 프로젝트 생성
|
|
47
|
-
vibe init my-project
|
|
48
|
-
cd my-project
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
### 2. 슬래시 커맨드 사용 (Claude Code)
|
|
52
|
-
|
|
53
|
-
```
|
|
54
|
-
/vibe.spec "로그인 기능" # SPEC 작성 (대화형)
|
|
55
|
-
/vibe.run "로그인 기능" # 구현 실행
|
|
56
|
-
/vibe.run "로그인 기능" ultrawork # 🚀 최대 성능 모드 (권장)
|
|
57
|
-
/vibe.verify "로그인 기능" # 검증
|
|
58
|
-
```
|
|
59
|
-
|
|
60
|
-
---
|
|
61
|
-
|
|
62
|
-
## Workflow
|
|
63
|
-
|
|
64
|
-
```
|
|
65
|
-
┌─────────────────────────────────────────────────────┐
|
|
66
|
-
│ /vibe.spec "기능명" │
|
|
67
|
-
│ ↓ 대화형 요구사항 수집 │
|
|
68
|
-
│ ↓ .vibe/specs/{기능명}.md (PTCF 구조) │
|
|
69
|
-
│ ↓ .vibe/features/{기능명}.feature (BDD 시나리오) │
|
|
70
|
-
├─────────────────────────────────────────────────────┤
|
|
71
|
-
│ /vibe.run "기능명" ultrawork │
|
|
72
|
-
│ ↓ 시나리오별 구현 + 즉시 검증 (SDD) │
|
|
73
|
-
│ ↓ Scenario 1 → 구현 → ✅ → Scenario 2 → ... │
|
|
74
|
-
│ ↓ 실패 시 자동 재시도 (최대 3회) │
|
|
75
|
-
├─────────────────────────────────────────────────────┤
|
|
76
|
-
│ /vibe.verify "기능명" │
|
|
77
|
-
│ ↓ Given/When/Then 단계별 검증 │
|
|
78
|
-
│ ↓ 품질 리포트 자동 생성 │
|
|
79
|
-
└─────────────────────────────────────────────────────┘
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
### 시나리오 주도 개발 (SDD)
|
|
83
|
-
|
|
84
|
-
> **각 시나리오가 곧 구현 단위이자 검증 단위입니다.**
|
|
85
|
-
|
|
86
|
-
```
|
|
87
|
-
Feature 로드 → Scenario 1 [구현→검증] → Scenario 2 [구현→검증] → ... → 품질 리포트
|
|
88
|
-
↓ ↓
|
|
89
|
-
✅ 통과 시 다음 ❌ 실패 시 수정 후 재검증
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
비개발자도 시나리오 통과율만 보면 품질을 알 수 있습니다:
|
|
93
|
-
- ✅ 4/4 시나리오 통과 = 품질 보장
|
|
94
|
-
- 📈 품질 점수: 94/100
|
|
95
|
-
|
|
96
|
-
---
|
|
97
|
-
|
|
98
|
-
## Commands
|
|
99
|
-
|
|
100
|
-
### 터미널 명령어
|
|
101
|
-
|
|
102
|
-
| 명령어 | 설명 |
|
|
103
|
-
|--------|------|
|
|
104
|
-
| `vibe init` | 현재 폴더에 vibe 초기화 |
|
|
105
|
-
| `vibe init <name>` | 새 프로젝트 생성 |
|
|
106
|
-
| `vibe update` | 설정 업데이트 (커맨드, 규칙, Hooks) |
|
|
107
|
-
| `vibe remove` | vibe 완전 제거 |
|
|
108
|
-
| `vibe status` | 현재 설정 상태 |
|
|
109
|
-
| `vibe help` | 도움말 |
|
|
110
|
-
| `vibe version` | 버전 정보 |
|
|
111
|
-
|
|
112
|
-
### 외부 LLM 연동 (선택적)
|
|
113
|
-
|
|
114
|
-
| 명령어 | 설명 |
|
|
115
|
-
|--------|------|
|
|
116
|
-
| `vibe gpt
|
|
117
|
-
| `vibe gpt <
|
|
118
|
-
| `vibe gemini
|
|
119
|
-
| `vibe gemini <
|
|
120
|
-
| `vibe
|
|
121
|
-
| `vibe
|
|
122
|
-
| `vibe
|
|
123
|
-
|
|
124
|
-
> **OAuth 인증** 또는 API 키를 등록해서 사용할 수 있습니다.
|
|
125
|
-
|
|
126
|
-
### Claude Code 슬래시 커맨드
|
|
127
|
-
|
|
128
|
-
#### 핵심 워크플로우
|
|
129
|
-
|
|
130
|
-
| 명령어 | 설명 |
|
|
131
|
-
|--------|------|
|
|
132
|
-
| `/vibe.spec "기능명"` | SPEC 작성 (PTCF 구조) |
|
|
133
|
-
| `/vibe.run "기능명"` | 구현 실행 |
|
|
134
|
-
| `/vibe.run "기능명" ultrawork` | 🚀 **최대 성능 모드** (권장) |
|
|
135
|
-
| `/vibe.run "기능명" ulw` | ultrawork 단축어 |
|
|
136
|
-
| `/vibe.run "기능명" --phase N` | 특정 Phase만 실행 |
|
|
137
|
-
| `/vibe.verify "기능명"` | 검증 |
|
|
138
|
-
|
|
139
|
-
#### 분석 & 도구
|
|
140
|
-
|
|
141
|
-
| 명령어 | 설명 |
|
|
142
|
-
|--------|------|
|
|
143
|
-
| `/vibe.analyze` | 프로젝트 전체 분석 |
|
|
144
|
-
| `/vibe.analyze "기능명"` | 특정 기능/모듈 분석 |
|
|
145
|
-
| `/vibe.analyze --code` | 코드 품질 분석만 |
|
|
146
|
-
| `/vibe.analyze --deps` | 의존성 분석만 |
|
|
147
|
-
| `/vibe.analyze --arch` | 아키텍처 분석만 |
|
|
148
|
-
| `/vibe.reason "문제"` | 체계적 추론 (9단계) |
|
|
149
|
-
| `/vibe.ui "설명"` | ASCII UI 미리보기 |
|
|
150
|
-
| `/vibe.diagram` | 아키텍처 다이어그램 |
|
|
151
|
-
| `/vibe.diagram --er` | ERD 다이어그램 |
|
|
152
|
-
| `/vibe.diagram --flow` | 플로우차트 |
|
|
153
|
-
|
|
154
|
-
---
|
|
155
|
-
|
|
156
|
-
## ULTRAWORK Mode
|
|
157
|
-
|
|
158
|
-
> `ultrawork` 또는 `ulw` 키워드 하나로 **모든 최적화가 자동 활성화**됩니다.
|
|
159
|
-
|
|
160
|
-
```bash
|
|
161
|
-
/vibe.run "기능명" ultrawork # 최대 성능 모드
|
|
162
|
-
/vibe.run "기능명" ulw # 동일 (단축어)
|
|
163
|
-
```
|
|
164
|
-
|
|
165
|
-
### 활성화 기능
|
|
166
|
-
|
|
167
|
-
| 기능 | 설명 |
|
|
168
|
-
|------|------|
|
|
169
|
-
| **병렬 탐색** | 3+ Task(haiku) 에이전트 동시 실행 |
|
|
170
|
-
| **Boulder Loop** | 모든 Phase 완료까지 자동 진행 (멈추지 않음) |
|
|
171
|
-
| **자동 재시도** | 에러 발생 시 최대 3회 자동 재시도 |
|
|
172
|
-
| **컨텍스트 관리** | 80%+ 시 자동 저장 |
|
|
173
|
-
| **무중단 실행** | Phase 간 확인 없이 연속 진행 |
|
|
174
|
-
| **외부 LLM** | GPT/Gemini 활성화 시 자동 참조 |
|
|
175
|
-
|
|
176
|
-
### Boulder Loop
|
|
177
|
-
|
|
178
|
-
시지푸스처럼 바위를 굴리듯, **모든 시나리오가 통과될 때까지** 자동으로 진행:
|
|
179
|
-
|
|
180
|
-
```
|
|
181
|
-
Scenario 1 → Scenario 2 → Scenario 3 → ... → Scenario N
|
|
182
|
-
↓ ↓ ↓ ↓
|
|
183
|
-
[탐색+구현] [탐색+구현] [탐색+구현] [탐색+구현]
|
|
184
|
-
[즉시 검증] [즉시 검증] [즉시 검증] [즉시 검증]
|
|
185
|
-
✅ ✅ ✅ ✅
|
|
186
|
-
↓
|
|
187
|
-
🎉 품질 보장 완료!
|
|
188
|
-
```
|
|
189
|
-
|
|
190
|
-
### 일반 모드 vs ULTRAWORK
|
|
191
|
-
|
|
192
|
-
| 항목 | 일반 모드 | ULTRAWORK |
|
|
193
|
-
|------|----------|-----------|
|
|
194
|
-
| 시나리오 전환 | 일시정지 가능 | 자동 진행 |
|
|
195
|
-
| 검증 실패 | 보고 후 중단 | 자동 재시도 (3회) |
|
|
196
|
-
| 컨텍스트 80%+ | 경고만 | 자동 저장 |
|
|
197
|
-
| 탐색 방식 | 순차 가능 | **강제 병렬** |
|
|
198
|
-
| 완료 조건 | 시나리오별 | 전체 시나리오 통과까지 |
|
|
199
|
-
|
|
200
|
-
---
|
|
201
|
-
|
|
202
|
-
## BDD 자동 검증
|
|
203
|
-
|
|
204
|
-
### 품질 리포트 예시
|
|
205
|
-
|
|
206
|
-
`/vibe.verify` 실행 시 자동 생성되는 품질 리포트:
|
|
207
|
-
|
|
208
|
-
```
|
|
209
|
-
┌─────────────────────────────────────────────────────────────────┐
|
|
210
|
-
│ 📊 VERIFICATION REPORT: login │
|
|
211
|
-
├─────────────────────────────────────────────────────────────────┤
|
|
212
|
-
│ │
|
|
213
|
-
│ ✅ 시나리오: 4/4 통과 (100%) │
|
|
214
|
-
│ │
|
|
215
|
-
│ | # | Scenario | Given | When | Then | Status | │
|
|
216
|
-
│ |---|───────────────────────|───────|──────|──────|────────| │
|
|
217
|
-
│ | 1 | 유효한 로그인 성공 | ✅ | ✅ | ✅ | ✅ | │
|
|
218
|
-
│ | 2 | 잘못된 비밀번호 에러 | ✅ | ✅ | ✅ | ✅ | │
|
|
219
|
-
│ | 3 | 이메일 형식 검증 | ✅ | ✅ | ✅ | ✅ | │
|
|
220
|
-
│ | 4 | 비밀번호 찾기 링크 | ✅ | ✅ | ✅ | ✅ | │
|
|
221
|
-
│ │
|
|
222
|
-
│ 📈 품질 점수: 94/100 │
|
|
223
|
-
│ │
|
|
224
|
-
└─────────────────────────────────────────────────────────────────┘
|
|
225
|
-
```
|
|
226
|
-
|
|
227
|
-
### 검증 실패 시
|
|
228
|
-
|
|
229
|
-
```
|
|
230
|
-
❌ Scenario 4: 비밀번호 찾기 링크
|
|
231
|
-
|
|
232
|
-
When: "비밀번호 찾기" 클릭
|
|
233
|
-
❌ 문제: 링크가 구현되지 않음
|
|
234
|
-
📍 위치: LoginForm.tsx line 42
|
|
235
|
-
💡 수정: "Forgot password" 링크 추가 필요
|
|
236
|
-
|
|
237
|
-
🔧 자동 수정: /vibe.run "login" --fix
|
|
238
|
-
```
|
|
239
|
-
|
|
240
|
-
비개발자가 알아야 할 것:
|
|
241
|
-
- ✅ 시나리오 4/4 통과 → **품질 보장됨**
|
|
242
|
-
- ❌ 시나리오 3/4 통과 → **수정 필요** (자동 수정 가능)
|
|
243
|
-
|
|
244
|
-
---
|
|
245
|
-
|
|
246
|
-
## Project Structure
|
|
247
|
-
|
|
248
|
-
`vibe init` 실행 후 생성되는 구조:
|
|
249
|
-
|
|
250
|
-
```
|
|
251
|
-
project/
|
|
252
|
-
├── CLAUDE.md # 프로젝트 컨텍스트 ← git 공유
|
|
253
|
-
├── .claude/ # ⚠️ 반드시 git에 커밋 ← git 공유
|
|
254
|
-
│ ├── commands/ # 슬래시 커맨드 (7개)
|
|
255
|
-
│ ├── agents/ # 서브에이전트
|
|
256
|
-
│ ├── settings.json # Hooks 설정
|
|
257
|
-
│ └── settings.local.json # 개인 설정 ← git 제외 (자동)
|
|
258
|
-
└── .vibe/
|
|
259
|
-
├── config.json # 프로젝트 설정 ← git 공유
|
|
260
|
-
├── constitution.md # 프로젝트 원칙 ← git 공유
|
|
261
|
-
├── rules/ # 코딩 규칙 ← git 공유
|
|
262
|
-
├── specs/ # SPEC 문서들 ← git 공유
|
|
263
|
-
└── features/ # BDD Feature 파일들 ← git 공유
|
|
264
|
-
```
|
|
265
|
-
|
|
266
|
-
> **⚠️ 중요**: `.claude/` 폴더는 팀과 공유해야 합니다. 커밋 시 제외하지 마세요.
|
|
267
|
-
> `settings.local.json`만 개인 설정이므로 자동으로 git에서 제외됩니다.
|
|
268
|
-
|
|
269
|
-
---
|
|
270
|
-
|
|
271
|
-
## Feature 파일 (BDD 시나리오)
|
|
272
|
-
|
|
273
|
-
```gherkin
|
|
274
|
-
# .vibe/features/login.feature
|
|
275
|
-
|
|
276
|
-
Feature: 로그인
|
|
277
|
-
|
|
278
|
-
Scenario: 유효한 로그인 성공
|
|
279
|
-
Given 사용자가 등록되어 있다
|
|
280
|
-
# 검증: 사용자 생성 API 존재
|
|
281
|
-
When 유효한 이메일과 비밀번호로 로그인
|
|
282
|
-
# 검증: POST /login 엔드포인트
|
|
283
|
-
Then 로그인 성공 + JWT 토큰 반환
|
|
284
|
-
# 검증: 200 응답 + 토큰 포함
|
|
285
|
-
|
|
286
|
-
Scenario: 잘못된 비밀번호 에러
|
|
287
|
-
Given 사용자가 등록되어 있다
|
|
288
|
-
When 잘못된 비밀번호로 로그인
|
|
289
|
-
Then 401 에러 + "비밀번호가 틀립니다" 메시지
|
|
290
|
-
```
|
|
291
|
-
|
|
292
|
-
각 시나리오의 Given/When/Then이 자동 검증 포인트가 됩니다.
|
|
293
|
-
|
|
294
|
-
---
|
|
295
|
-
|
|
296
|
-
## SPEC Document (PTCF Structure)
|
|
297
|
-
|
|
298
|
-
```markdown
|
|
299
|
-
# SPEC: {기능명}
|
|
300
|
-
|
|
301
|
-
## Persona
|
|
302
|
-
<role>
|
|
303
|
-
AI의 역할과 전문성 정의
|
|
304
|
-
</role>
|
|
305
|
-
|
|
306
|
-
## Context
|
|
307
|
-
<context>
|
|
308
|
-
- 배경, 목적
|
|
309
|
-
- 기술 스택
|
|
310
|
-
- 관련 코드
|
|
311
|
-
</context>
|
|
312
|
-
|
|
313
|
-
## Task
|
|
314
|
-
<task>
|
|
315
|
-
### Scenario 1: {시나리오명}
|
|
316
|
-
Given: {전제 조건}
|
|
317
|
-
When: {사용자 행동}
|
|
318
|
-
Then: {예상 결과}
|
|
319
|
-
|
|
320
|
-
### Scenario 2: {시나리오명}
|
|
321
|
-
...
|
|
322
|
-
</task>
|
|
323
|
-
|
|
324
|
-
## Constraints
|
|
325
|
-
<constraints>
|
|
326
|
-
- 기존 코드 패턴 준수
|
|
327
|
-
- 에러 메시지 한글화
|
|
328
|
-
</constraints>
|
|
329
|
-
|
|
330
|
-
## Acceptance Criteria
|
|
331
|
-
<acceptance>
|
|
332
|
-
- [ ] Scenario 1 통과
|
|
333
|
-
- [ ] Scenario 2 통과
|
|
334
|
-
</acceptance>
|
|
335
|
-
```
|
|
336
|
-
|
|
337
|
-
---
|
|
338
|
-
|
|
339
|
-
## Coding Rules (.vibe/rules/)
|
|
340
|
-
|
|
341
|
-
### 핵심 원칙
|
|
342
|
-
|
|
343
|
-
- **수술적 정밀도**: 요청받지 않은 코드는 절대 수정하지 않음
|
|
344
|
-
- **한국어 우선**: 모든 커뮤니케이션은 한국어로
|
|
345
|
-
- **DRY**: 반복하지 말고 재사용
|
|
346
|
-
- **SRP**: 하나의 함수는 하나의 목적만
|
|
347
|
-
- **YAGNI**: 필요하지 않으면 만들지 않음
|
|
348
|
-
|
|
349
|
-
### 복잡도 기준
|
|
350
|
-
|
|
351
|
-
| 메트릭 | 기준 |
|
|
352
|
-
|--------|------|
|
|
353
|
-
| 순환 복잡도 | ≤ 10 |
|
|
354
|
-
| 함수 길이 | ≤ 20줄 |
|
|
355
|
-
| 중첩 깊이 | ≤ 3단계 |
|
|
356
|
-
| 매개변수 | ≤ 5개 |
|
|
357
|
-
| 컴포넌트 JSX | ≤ 50줄 |
|
|
358
|
-
|
|
359
|
-
### 품질 등급
|
|
360
|
-
|
|
361
|
-
| 등급 | 점수 | 설명 |
|
|
362
|
-
|------|------|------|
|
|
363
|
-
| A+ | 95-100 | 완벽 |
|
|
364
|
-
| A | 90-94 | 우수 |
|
|
365
|
-
| B+ | 85-89 | 양호 |
|
|
366
|
-
| B | 80-84 | 개선 권장 |
|
|
367
|
-
| C | 70-79 | 개선 필요 |
|
|
368
|
-
| F | < 70 | 리팩토링 필요 |
|
|
369
|
-
|
|
370
|
-
---
|
|
371
|
-
|
|
372
|
-
## 내장 도구 & MCP
|
|
373
|
-
|
|
374
|
-
### 내장 도구 (v2.0+)
|
|
375
|
-
|
|
376
|
-
vibe는 36개의 도구를 **내장**하여 MCP 프로토콜 오버헤드 없이 직접 실행합니다.
|
|
377
|
-
|
|
378
|
-
| 도구 | 설명 |
|
|
379
|
-
|------|------|
|
|
380
|
-
| `vibe_find_symbol` | 심볼 정의 찾기 |
|
|
381
|
-
| `vibe_find_references` | 참조 찾기 |
|
|
382
|
-
| `vibe_analyze_complexity` | 복잡도 분석 |
|
|
383
|
-
| `vibe_validate_code_quality` | 품질 검증 |
|
|
384
|
-
| `vibe_start_session` | 세션 시작 (이전 컨텍스트 자동 복원) |
|
|
385
|
-
| `vibe_auto_save_context` | 현재 상태 저장 |
|
|
386
|
-
| `vibe_save_memory` | 중요 결정사항 저장 |
|
|
387
|
-
|
|
388
|
-
### MCP 서버 (외부 LLM)
|
|
389
|
-
|
|
390
|
-
| MCP 서버 | 설명 | 등록 방식 |
|
|
391
|
-
|----------|------|----------|
|
|
392
|
-
| `vibe-gemini` | Gemini 3 Flash/Pro 서브에이전트 | 전역 (`-s user`) |
|
|
393
|
-
| `vibe-gpt` | GPT-5.2 Codex 서브에이전트 | 전역 (`-s user`) |
|
|
394
|
-
| `context7` | 라이브러리 문서 실시간 검색 | 전역 (`-s user`) |
|
|
395
|
-
|
|
396
|
-
> **Note**: MCP 서버들은 전역 등록되어 모든 프로젝트에서 사용 가능합니다.
|
|
397
|
-
> OAuth 인증 후 Claude Code에서 GPT/Gemini를 서브에이전트로 호출할 수 있습니다.
|
|
398
|
-
|
|
399
|
-
### Hooks (자동 설정)
|
|
400
|
-
|
|
401
|
-
| Hook | 트리거 | 동작 |
|
|
402
|
-
|------|--------|------|
|
|
403
|
-
| `SessionStart` | 세션 시작 | `vibe_start_session` 자동 호출 → 이전 컨텍스트 복원 |
|
|
404
|
-
| `UserPromptSubmit` | `ultrawork`/`ulw` 감지 | 🚀 ULTRAWORK 모드 활성화 |
|
|
405
|
-
| `PostToolUse` | Write/Edit 후 | 품질 체크 (멈추지 않음) |
|
|
406
|
-
| `Notification` | 컨텍스트 80% | **MANDATORY** `vibe_auto_save_context` 호출 |
|
|
407
|
-
| `Notification` | 컨텍스트 90% | **MANDATORY** 즉시 저장 (urgency=high) |
|
|
408
|
-
| `Notification` | 컨텍스트 95% | **MANDATORY** 긴급 저장 + 세션 전환 준비 |
|
|
409
|
-
|
|
410
|
-
### 선택적 연동 (외부 LLM)
|
|
411
|
-
|
|
412
|
-
| MCP 서버 | 명령어 | 설명 |
|
|
413
|
-
|----------|--------|------|
|
|
414
|
-
| GPT-5.2 Codex | `vibe gpt
|
|
415
|
-
| GPT-5.2 Codex | `vibe gpt <key>` | API 키 방식 |
|
|
416
|
-
| Gemini 3 Flash/Pro | `vibe gemini
|
|
417
|
-
| Gemini 3 Flash/Pro | `vibe gemini <key>` | API 키 방식 |
|
|
418
|
-
|
|
419
|
-
> **OAuth 인증** 또는 API 키를 등록해서 사용할 수 있습니다.
|
|
420
|
-
|
|
421
|
-
### 주요 내장 도구
|
|
422
|
-
|
|
423
|
-
- **코드 분석**: `vibe_analyze_complexity`, `vibe_validate_code_quality`
|
|
424
|
-
- **시맨틱 검색**: `vibe_find_symbol`, `vibe_find_references`
|
|
425
|
-
- **추론**: `vibe_create_thinking_chain`, `vibe_analyze_problem`
|
|
426
|
-
- **메모리**: `vibe_save_memory`, `vibe_recall_memory`, `vibe_auto_save_context`
|
|
427
|
-
- **UI**: `vibe_preview_ui_ascii`
|
|
428
|
-
|
|
429
|
-
### context7 사용법
|
|
430
|
-
|
|
431
|
-
최신 라이브러리 문서가 필요할 때:
|
|
432
|
-
|
|
433
|
-
```
|
|
434
|
-
"React 19의 use() 훅 사용법을 context7으로 검색해줘"
|
|
435
|
-
"Next.js 15 App Router 문서를 확인해줘"
|
|
436
|
-
```
|
|
437
|
-
|
|
438
|
-
---
|
|
439
|
-
|
|
440
|
-
## 컨텍스트 관리 팁
|
|
441
|
-
|
|
442
|
-
### 모델 선택 전략
|
|
443
|
-
|
|
444
|
-
| 작업 유형 | 권장 모델 | 이유 |
|
|
445
|
-
|----------|----------|------|
|
|
446
|
-
| 탐색/검색 | Haiku | 빠르고 저비용 |
|
|
447
|
-
| 구현/디버깅 | Sonnet | 균형잡힌 성능 |
|
|
448
|
-
| 아키텍처/복잡한 로직 | Opus | 최고 성능 |
|
|
449
|
-
|
|
450
|
-
> vibe의 서브에이전트는 기본적으로 Haiku를 사용합니다. 고비용 모델이 필요 없는 탐색 작업을 저비용 모델에게 위임하는 전략입니다.
|
|
451
|
-
|
|
452
|
-
### Claude Code 기본 명령어
|
|
453
|
-
|
|
454
|
-
| 명령어 | 용도 |
|
|
455
|
-
|--------|------|
|
|
456
|
-
| `/context` | 현재 컨텍스트 사용량 확인 |
|
|
457
|
-
| `/rewind` | 이전 시점으로 되돌리기 |
|
|
458
|
-
| `/new` | 새 세션 시작 |
|
|
459
|
-
| `Shift + Tab` | 플랜 모드 진입 |
|
|
460
|
-
|
|
461
|
-
> **⚠️ `/compact` 사용 금지**: 정보 손실/왜곡 위험. vibe 메모리 시스템 사용 권장.
|
|
462
|
-
|
|
463
|
-
### 컨텍스트 80%+ 시 자동 처리
|
|
464
|
-
|
|
465
|
-
```
|
|
466
|
-
80% 도달 → vibe_auto_save_context 자동 호출 (MANDATORY)
|
|
467
|
-
90% 도달 → 즉시 저장 (urgency=high)
|
|
468
|
-
95% 도달 → 긴급 저장 + 세션 전환 준비
|
|
469
|
-
|
|
470
|
-
새 세션 시작 → vibe_start_session 자동 호출 → 이전 컨텍스트 복원
|
|
471
|
-
```
|
|
472
|
-
|
|
473
|
-
> **⚠️ `/compact` 사용 금지**: 정보 손실/왜곡 위험. vibe 메모리 시스템이 자동으로 관리합니다.
|
|
474
|
-
|
|
475
|
-
### 가치 밀도 높은 컨텍스트 유지
|
|
476
|
-
|
|
477
|
-
1. **계획 먼저** - `/vibe.spec`으로 명확한 계획 수립
|
|
478
|
-
2. **필요한 정보만** - 서브에이전트가 탐색하고 요약만 전달
|
|
479
|
-
3. **자동 저장** - 80%+ 시 `vibe_auto_save_context` 자동 호출
|
|
480
|
-
4. **Just-in-Time** - context7로 필요할 때만 문서 검색
|
|
481
|
-
|
|
482
|
-
---
|
|
483
|
-
|
|
484
|
-
## Example
|
|
485
|
-
|
|
486
|
-
```
|
|
487
|
-
User: /vibe.spec "벽돌게임"
|
|
488
|
-
|
|
489
|
-
Claude:
|
|
490
|
-
벽돌게임을 만드시는군요! 어떤 스타일을 생각하고 계신가요?
|
|
491
|
-
|
|
492
|
-
1. 클래식 벽돌깨기 (Breakout)
|
|
493
|
-
2. 아르카노이드 (파워업 포함)
|
|
494
|
-
3. 커스텀 스타일
|
|
495
|
-
|
|
496
|
-
또는 직접 설명해주셔도 됩니다.
|
|
497
|
-
|
|
498
|
-
User: 1
|
|
499
|
-
|
|
500
|
-
Claude: 어떤 플랫폼에서 실행하시겠어요?
|
|
501
|
-
|
|
502
|
-
1. 웹 (브라우저)
|
|
503
|
-
2. 모바일
|
|
504
|
-
3. 데스크톱
|
|
505
|
-
|
|
506
|
-
User: 1
|
|
507
|
-
|
|
508
|
-
Claude: 기술 스택을 제안드립니다:
|
|
509
|
-
|
|
510
|
-
1. Phaser.js (추천) - 게임 프레임워크
|
|
511
|
-
2. Canvas + JavaScript
|
|
512
|
-
3. PixiJS + Matter.js
|
|
513
|
-
|
|
514
|
-
User: 1
|
|
515
|
-
|
|
516
|
-
[대화 계속...]
|
|
517
|
-
|
|
518
|
-
✅ SPEC 문서 작성 완료!
|
|
519
|
-
📄 .vibe/specs/brick-game.md
|
|
520
|
-
📄 .vibe/features/brick-game.feature
|
|
521
|
-
|
|
522
|
-
다음 단계: /vibe.run "벽돌게임"
|
|
523
|
-
```
|
|
524
|
-
|
|
525
|
-
---
|
|
526
|
-
|
|
527
|
-
## Requirements
|
|
528
|
-
|
|
529
|
-
- **Node.js**: 18.0.0+
|
|
530
|
-
- **Claude Code**: 필수
|
|
531
|
-
|
|
532
|
-
---
|
|
533
|
-
|
|
534
|
-
## Links
|
|
535
|
-
|
|
536
|
-
- **Repository**: [github.com/su-record/vibe](https://github.com/su-record/vibe)
|
|
537
|
-
- **Issues**: [GitHub Issues](https://github.com/su-record/vibe/issues)
|
|
538
|
-
|
|
539
|
-
---
|
|
540
|
-
|
|
541
|
-
## License
|
|
542
|
-
|
|
543
|
-
MIT License
|
|
544
|
-
|
|
545
|
-
---
|
|
546
|
-
|
|
547
|
-
**Built with ❤️ by Su & Claude**
|
|
548
|
-
|
|
549
|
-
## Vibe Setup (AI Coding)
|
|
550
|
-
|
|
551
|
-
이 프로젝트는 [Vibe](https://github.com/su-record/vibe) AI 코딩 프레임워크를 사용합니다.
|
|
552
|
-
|
|
553
|
-
### 협업자 설치
|
|
554
|
-
|
|
555
|
-
```bash
|
|
556
|
-
# 전역 설치 (권장)
|
|
557
|
-
npm install -g @su-record/vibe
|
|
558
|
-
vibe update
|
|
559
|
-
|
|
560
|
-
# 또는 setup 스크립트 실행
|
|
561
|
-
./.vibe/setup.sh
|
|
562
|
-
```
|
|
563
|
-
|
|
564
|
-
### 사용법
|
|
565
|
-
|
|
566
|
-
Claude Code에서 슬래시 커맨드 사용:
|
|
567
|
-
- `/vibe.spec "기능명"` - SPEC 문서 작성
|
|
568
|
-
- `/vibe.run "기능명"` - 구현 실행
|
|
1
|
+
# Vibe
|
|
2
|
+
|
|
3
|
+
**SPEC-driven AI coding framework (Claude Code 전용)**
|
|
4
|
+
|
|
5
|
+
SPEC 문서 하나로 AI가 바로 구현하고, **시나리오별 자동 검증**으로 품질을 보장하는 프레임워크.
|
|
6
|
+
|
|
7
|
+
> **품질은 사용자가 신경 쓰는 게 아니라, 시스템이 보장하는 것.**
|
|
8
|
+
|
|
9
|
+
[](https://www.npmjs.com/package/@su-record/vibe)
|
|
10
|
+
[](https://opensource.org/licenses/MIT)
|
|
11
|
+
[](https://github.com/su-record/vibe)
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
## Features
|
|
16
|
+
|
|
17
|
+
- **🤖 멀티모델 AI 오케스트레이션**: Claude + GPT + Gemini를 서브에이전트로 통합 (OAuth 인증)
|
|
18
|
+
- **시나리오 주도 개발 (SDD)**: 각 시나리오 = 구현 단위 = 검증 단위
|
|
19
|
+
- **BDD 자동 검증**: Given/When/Then 단계별 자동 품질 검증
|
|
20
|
+
- **품질 보장 시스템**: 비개발자도 품질을 신뢰할 수 있는 자동화
|
|
21
|
+
- **ULTRAWORK Mode**: `ulw` 한 단어로 모든 최적화 자동 활성화
|
|
22
|
+
- **Boulder Loop**: 모든 시나리오 완료까지 자동 진행
|
|
23
|
+
- **병렬 서브에이전트**: Haiku 3+ 동시 탐색으로 ~3배 속도 향상
|
|
24
|
+
- **자동 컨텍스트 관리**: 80%+ 시 자동 저장, 세션 자동 복원
|
|
25
|
+
- **36개 내장 도구**: 코드 분석, 품질 검증, 세션 메모리 (MCP 오버헤드 제거)
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## Installation
|
|
30
|
+
|
|
31
|
+
```bash
|
|
32
|
+
npm install -g @su-record/vibe
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## Quick Start
|
|
38
|
+
|
|
39
|
+
### 1. 프로젝트 초기화 (터미널)
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
# 기존 프로젝트에서
|
|
43
|
+
vibe init
|
|
44
|
+
# → 내장 도구 활성화 + MCP 서버 등록 (vibe-gemini, vibe-gpt, context7)
|
|
45
|
+
|
|
46
|
+
# 새 프로젝트 생성
|
|
47
|
+
vibe init my-project
|
|
48
|
+
cd my-project
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
### 2. 슬래시 커맨드 사용 (Claude Code)
|
|
52
|
+
|
|
53
|
+
```
|
|
54
|
+
/vibe.spec "로그인 기능" # SPEC 작성 (대화형)
|
|
55
|
+
/vibe.run "로그인 기능" # 구현 실행
|
|
56
|
+
/vibe.run "로그인 기능" ultrawork # 🚀 최대 성능 모드 (권장)
|
|
57
|
+
/vibe.verify "로그인 기능" # 검증
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
---
|
|
61
|
+
|
|
62
|
+
## Workflow
|
|
63
|
+
|
|
64
|
+
```
|
|
65
|
+
┌─────────────────────────────────────────────────────┐
|
|
66
|
+
│ /vibe.spec "기능명" │
|
|
67
|
+
│ ↓ 대화형 요구사항 수집 │
|
|
68
|
+
│ ↓ .vibe/specs/{기능명}.md (PTCF 구조) │
|
|
69
|
+
│ ↓ .vibe/features/{기능명}.feature (BDD 시나리오) │
|
|
70
|
+
├─────────────────────────────────────────────────────┤
|
|
71
|
+
│ /vibe.run "기능명" ultrawork │
|
|
72
|
+
│ ↓ 시나리오별 구현 + 즉시 검증 (SDD) │
|
|
73
|
+
│ ↓ Scenario 1 → 구현 → ✅ → Scenario 2 → ... │
|
|
74
|
+
│ ↓ 실패 시 자동 재시도 (최대 3회) │
|
|
75
|
+
├─────────────────────────────────────────────────────┤
|
|
76
|
+
│ /vibe.verify "기능명" │
|
|
77
|
+
│ ↓ Given/When/Then 단계별 검증 │
|
|
78
|
+
│ ↓ 품질 리포트 자동 생성 │
|
|
79
|
+
└─────────────────────────────────────────────────────┘
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
### 시나리오 주도 개발 (SDD)
|
|
83
|
+
|
|
84
|
+
> **각 시나리오가 곧 구현 단위이자 검증 단위입니다.**
|
|
85
|
+
|
|
86
|
+
```
|
|
87
|
+
Feature 로드 → Scenario 1 [구현→검증] → Scenario 2 [구현→검증] → ... → 품질 리포트
|
|
88
|
+
↓ ↓
|
|
89
|
+
✅ 통과 시 다음 ❌ 실패 시 수정 후 재검증
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
비개발자도 시나리오 통과율만 보면 품질을 알 수 있습니다:
|
|
93
|
+
- ✅ 4/4 시나리오 통과 = 품질 보장
|
|
94
|
+
- 📈 품질 점수: 94/100
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## Commands
|
|
99
|
+
|
|
100
|
+
### 터미널 명령어
|
|
101
|
+
|
|
102
|
+
| 명령어 | 설명 |
|
|
103
|
+
|--------|------|
|
|
104
|
+
| `vibe init` | 현재 폴더에 vibe 초기화 |
|
|
105
|
+
| `vibe init <name>` | 새 프로젝트 생성 |
|
|
106
|
+
| `vibe update` | 설정 업데이트 (커맨드, 규칙, Hooks) |
|
|
107
|
+
| `vibe remove` | vibe 완전 제거 |
|
|
108
|
+
| `vibe status` | 현재 설정 상태 |
|
|
109
|
+
| `vibe help` | 도움말 |
|
|
110
|
+
| `vibe version` | 버전 정보 |
|
|
111
|
+
|
|
112
|
+
### 외부 LLM 연동 (선택적)
|
|
113
|
+
|
|
114
|
+
| 명령어 | 설명 |
|
|
115
|
+
|--------|------|
|
|
116
|
+
| `vibe auth gpt` | GPT OAuth 인증 (ChatGPT Plus/Pro 구독자용, 권장) |
|
|
117
|
+
| `vibe auth gpt --key <key>` | GPT API 키 방식 |
|
|
118
|
+
| `vibe auth gemini` | Gemini OAuth 인증 (구독자용, 권장) |
|
|
119
|
+
| `vibe auth gemini --key <key>` | Gemini API 키 방식 |
|
|
120
|
+
| `vibe status gpt` / `vibe status gemini` | 인증 상태 확인 |
|
|
121
|
+
| `vibe logout gpt` / `vibe logout gemini` | 로그아웃 |
|
|
122
|
+
| `vibe remove gpt` / `vibe remove gemini` | 비활성화 |
|
|
123
|
+
|
|
124
|
+
> **OAuth 인증** 또는 API 키를 등록해서 사용할 수 있습니다.
|
|
125
|
+
|
|
126
|
+
### Claude Code 슬래시 커맨드
|
|
127
|
+
|
|
128
|
+
#### 핵심 워크플로우
|
|
129
|
+
|
|
130
|
+
| 명령어 | 설명 |
|
|
131
|
+
|--------|------|
|
|
132
|
+
| `/vibe.spec "기능명"` | SPEC 작성 (PTCF 구조) |
|
|
133
|
+
| `/vibe.run "기능명"` | 구현 실행 |
|
|
134
|
+
| `/vibe.run "기능명" ultrawork` | 🚀 **최대 성능 모드** (권장) |
|
|
135
|
+
| `/vibe.run "기능명" ulw` | ultrawork 단축어 |
|
|
136
|
+
| `/vibe.run "기능명" --phase N` | 특정 Phase만 실행 |
|
|
137
|
+
| `/vibe.verify "기능명"` | 검증 |
|
|
138
|
+
|
|
139
|
+
#### 분석 & 도구
|
|
140
|
+
|
|
141
|
+
| 명령어 | 설명 |
|
|
142
|
+
|--------|------|
|
|
143
|
+
| `/vibe.analyze` | 프로젝트 전체 분석 |
|
|
144
|
+
| `/vibe.analyze "기능명"` | 특정 기능/모듈 분석 |
|
|
145
|
+
| `/vibe.analyze --code` | 코드 품질 분석만 |
|
|
146
|
+
| `/vibe.analyze --deps` | 의존성 분석만 |
|
|
147
|
+
| `/vibe.analyze --arch` | 아키텍처 분석만 |
|
|
148
|
+
| `/vibe.reason "문제"` | 체계적 추론 (9단계) |
|
|
149
|
+
| `/vibe.ui "설명"` | ASCII UI 미리보기 |
|
|
150
|
+
| `/vibe.diagram` | 아키텍처 다이어그램 |
|
|
151
|
+
| `/vibe.diagram --er` | ERD 다이어그램 |
|
|
152
|
+
| `/vibe.diagram --flow` | 플로우차트 |
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
## ULTRAWORK Mode
|
|
157
|
+
|
|
158
|
+
> `ultrawork` 또는 `ulw` 키워드 하나로 **모든 최적화가 자동 활성화**됩니다.
|
|
159
|
+
|
|
160
|
+
```bash
|
|
161
|
+
/vibe.run "기능명" ultrawork # 최대 성능 모드
|
|
162
|
+
/vibe.run "기능명" ulw # 동일 (단축어)
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### 활성화 기능
|
|
166
|
+
|
|
167
|
+
| 기능 | 설명 |
|
|
168
|
+
|------|------|
|
|
169
|
+
| **병렬 탐색** | 3+ Task(haiku) 에이전트 동시 실행 |
|
|
170
|
+
| **Boulder Loop** | 모든 Phase 완료까지 자동 진행 (멈추지 않음) |
|
|
171
|
+
| **자동 재시도** | 에러 발생 시 최대 3회 자동 재시도 |
|
|
172
|
+
| **컨텍스트 관리** | 80%+ 시 자동 저장 |
|
|
173
|
+
| **무중단 실행** | Phase 간 확인 없이 연속 진행 |
|
|
174
|
+
| **외부 LLM** | GPT/Gemini 활성화 시 자동 참조 |
|
|
175
|
+
|
|
176
|
+
### Boulder Loop
|
|
177
|
+
|
|
178
|
+
시지푸스처럼 바위를 굴리듯, **모든 시나리오가 통과될 때까지** 자동으로 진행:
|
|
179
|
+
|
|
180
|
+
```
|
|
181
|
+
Scenario 1 → Scenario 2 → Scenario 3 → ... → Scenario N
|
|
182
|
+
↓ ↓ ↓ ↓
|
|
183
|
+
[탐색+구현] [탐색+구현] [탐색+구현] [탐색+구현]
|
|
184
|
+
[즉시 검증] [즉시 검증] [즉시 검증] [즉시 검증]
|
|
185
|
+
✅ ✅ ✅ ✅
|
|
186
|
+
↓
|
|
187
|
+
🎉 품질 보장 완료!
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
### 일반 모드 vs ULTRAWORK
|
|
191
|
+
|
|
192
|
+
| 항목 | 일반 모드 | ULTRAWORK |
|
|
193
|
+
|------|----------|-----------|
|
|
194
|
+
| 시나리오 전환 | 일시정지 가능 | 자동 진행 |
|
|
195
|
+
| 검증 실패 | 보고 후 중단 | 자동 재시도 (3회) |
|
|
196
|
+
| 컨텍스트 80%+ | 경고만 | 자동 저장 |
|
|
197
|
+
| 탐색 방식 | 순차 가능 | **강제 병렬** |
|
|
198
|
+
| 완료 조건 | 시나리오별 | 전체 시나리오 통과까지 |
|
|
199
|
+
|
|
200
|
+
---
|
|
201
|
+
|
|
202
|
+
## BDD 자동 검증
|
|
203
|
+
|
|
204
|
+
### 품질 리포트 예시
|
|
205
|
+
|
|
206
|
+
`/vibe.verify` 실행 시 자동 생성되는 품질 리포트:
|
|
207
|
+
|
|
208
|
+
```
|
|
209
|
+
┌─────────────────────────────────────────────────────────────────┐
|
|
210
|
+
│ 📊 VERIFICATION REPORT: login │
|
|
211
|
+
├─────────────────────────────────────────────────────────────────┤
|
|
212
|
+
│ │
|
|
213
|
+
│ ✅ 시나리오: 4/4 통과 (100%) │
|
|
214
|
+
│ │
|
|
215
|
+
│ | # | Scenario | Given | When | Then | Status | │
|
|
216
|
+
│ |---|───────────────────────|───────|──────|──────|────────| │
|
|
217
|
+
│ | 1 | 유효한 로그인 성공 | ✅ | ✅ | ✅ | ✅ | │
|
|
218
|
+
│ | 2 | 잘못된 비밀번호 에러 | ✅ | ✅ | ✅ | ✅ | │
|
|
219
|
+
│ | 3 | 이메일 형식 검증 | ✅ | ✅ | ✅ | ✅ | │
|
|
220
|
+
│ | 4 | 비밀번호 찾기 링크 | ✅ | ✅ | ✅ | ✅ | │
|
|
221
|
+
│ │
|
|
222
|
+
│ 📈 품질 점수: 94/100 │
|
|
223
|
+
│ │
|
|
224
|
+
└─────────────────────────────────────────────────────────────────┘
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
### 검증 실패 시
|
|
228
|
+
|
|
229
|
+
```
|
|
230
|
+
❌ Scenario 4: 비밀번호 찾기 링크
|
|
231
|
+
|
|
232
|
+
When: "비밀번호 찾기" 클릭
|
|
233
|
+
❌ 문제: 링크가 구현되지 않음
|
|
234
|
+
📍 위치: LoginForm.tsx line 42
|
|
235
|
+
💡 수정: "Forgot password" 링크 추가 필요
|
|
236
|
+
|
|
237
|
+
🔧 자동 수정: /vibe.run "login" --fix
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
비개발자가 알아야 할 것:
|
|
241
|
+
- ✅ 시나리오 4/4 통과 → **품질 보장됨**
|
|
242
|
+
- ❌ 시나리오 3/4 통과 → **수정 필요** (자동 수정 가능)
|
|
243
|
+
|
|
244
|
+
---
|
|
245
|
+
|
|
246
|
+
## Project Structure
|
|
247
|
+
|
|
248
|
+
`vibe init` 실행 후 생성되는 구조:
|
|
249
|
+
|
|
250
|
+
```
|
|
251
|
+
project/
|
|
252
|
+
├── CLAUDE.md # 프로젝트 컨텍스트 ← git 공유
|
|
253
|
+
├── .claude/ # ⚠️ 반드시 git에 커밋 ← git 공유
|
|
254
|
+
│ ├── commands/ # 슬래시 커맨드 (7개)
|
|
255
|
+
│ ├── agents/ # 서브에이전트
|
|
256
|
+
│ ├── settings.json # Hooks 설정
|
|
257
|
+
│ └── settings.local.json # 개인 설정 ← git 제외 (자동)
|
|
258
|
+
└── .vibe/
|
|
259
|
+
├── config.json # 프로젝트 설정 ← git 공유
|
|
260
|
+
├── constitution.md # 프로젝트 원칙 ← git 공유
|
|
261
|
+
├── rules/ # 코딩 규칙 ← git 공유
|
|
262
|
+
├── specs/ # SPEC 문서들 ← git 공유
|
|
263
|
+
└── features/ # BDD Feature 파일들 ← git 공유
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
> **⚠️ 중요**: `.claude/` 폴더는 팀과 공유해야 합니다. 커밋 시 제외하지 마세요.
|
|
267
|
+
> `settings.local.json`만 개인 설정이므로 자동으로 git에서 제외됩니다.
|
|
268
|
+
|
|
269
|
+
---
|
|
270
|
+
|
|
271
|
+
## Feature 파일 (BDD 시나리오)
|
|
272
|
+
|
|
273
|
+
```gherkin
|
|
274
|
+
# .vibe/features/login.feature
|
|
275
|
+
|
|
276
|
+
Feature: 로그인
|
|
277
|
+
|
|
278
|
+
Scenario: 유효한 로그인 성공
|
|
279
|
+
Given 사용자가 등록되어 있다
|
|
280
|
+
# 검증: 사용자 생성 API 존재
|
|
281
|
+
When 유효한 이메일과 비밀번호로 로그인
|
|
282
|
+
# 검증: POST /login 엔드포인트
|
|
283
|
+
Then 로그인 성공 + JWT 토큰 반환
|
|
284
|
+
# 검증: 200 응답 + 토큰 포함
|
|
285
|
+
|
|
286
|
+
Scenario: 잘못된 비밀번호 에러
|
|
287
|
+
Given 사용자가 등록되어 있다
|
|
288
|
+
When 잘못된 비밀번호로 로그인
|
|
289
|
+
Then 401 에러 + "비밀번호가 틀립니다" 메시지
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
각 시나리오의 Given/When/Then이 자동 검증 포인트가 됩니다.
|
|
293
|
+
|
|
294
|
+
---
|
|
295
|
+
|
|
296
|
+
## SPEC Document (PTCF Structure)
|
|
297
|
+
|
|
298
|
+
```markdown
|
|
299
|
+
# SPEC: {기능명}
|
|
300
|
+
|
|
301
|
+
## Persona
|
|
302
|
+
<role>
|
|
303
|
+
AI의 역할과 전문성 정의
|
|
304
|
+
</role>
|
|
305
|
+
|
|
306
|
+
## Context
|
|
307
|
+
<context>
|
|
308
|
+
- 배경, 목적
|
|
309
|
+
- 기술 스택
|
|
310
|
+
- 관련 코드
|
|
311
|
+
</context>
|
|
312
|
+
|
|
313
|
+
## Task
|
|
314
|
+
<task>
|
|
315
|
+
### Scenario 1: {시나리오명}
|
|
316
|
+
Given: {전제 조건}
|
|
317
|
+
When: {사용자 행동}
|
|
318
|
+
Then: {예상 결과}
|
|
319
|
+
|
|
320
|
+
### Scenario 2: {시나리오명}
|
|
321
|
+
...
|
|
322
|
+
</task>
|
|
323
|
+
|
|
324
|
+
## Constraints
|
|
325
|
+
<constraints>
|
|
326
|
+
- 기존 코드 패턴 준수
|
|
327
|
+
- 에러 메시지 한글화
|
|
328
|
+
</constraints>
|
|
329
|
+
|
|
330
|
+
## Acceptance Criteria
|
|
331
|
+
<acceptance>
|
|
332
|
+
- [ ] Scenario 1 통과
|
|
333
|
+
- [ ] Scenario 2 통과
|
|
334
|
+
</acceptance>
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
---
|
|
338
|
+
|
|
339
|
+
## Coding Rules (.vibe/rules/)
|
|
340
|
+
|
|
341
|
+
### 핵심 원칙
|
|
342
|
+
|
|
343
|
+
- **수술적 정밀도**: 요청받지 않은 코드는 절대 수정하지 않음
|
|
344
|
+
- **한국어 우선**: 모든 커뮤니케이션은 한국어로
|
|
345
|
+
- **DRY**: 반복하지 말고 재사용
|
|
346
|
+
- **SRP**: 하나의 함수는 하나의 목적만
|
|
347
|
+
- **YAGNI**: 필요하지 않으면 만들지 않음
|
|
348
|
+
|
|
349
|
+
### 복잡도 기준
|
|
350
|
+
|
|
351
|
+
| 메트릭 | 기준 |
|
|
352
|
+
|--------|------|
|
|
353
|
+
| 순환 복잡도 | ≤ 10 |
|
|
354
|
+
| 함수 길이 | ≤ 20줄 |
|
|
355
|
+
| 중첩 깊이 | ≤ 3단계 |
|
|
356
|
+
| 매개변수 | ≤ 5개 |
|
|
357
|
+
| 컴포넌트 JSX | ≤ 50줄 |
|
|
358
|
+
|
|
359
|
+
### 품질 등급
|
|
360
|
+
|
|
361
|
+
| 등급 | 점수 | 설명 |
|
|
362
|
+
|------|------|------|
|
|
363
|
+
| A+ | 95-100 | 완벽 |
|
|
364
|
+
| A | 90-94 | 우수 |
|
|
365
|
+
| B+ | 85-89 | 양호 |
|
|
366
|
+
| B | 80-84 | 개선 권장 |
|
|
367
|
+
| C | 70-79 | 개선 필요 |
|
|
368
|
+
| F | < 70 | 리팩토링 필요 |
|
|
369
|
+
|
|
370
|
+
---
|
|
371
|
+
|
|
372
|
+
## 내장 도구 & MCP
|
|
373
|
+
|
|
374
|
+
### 내장 도구 (v2.0+)
|
|
375
|
+
|
|
376
|
+
vibe는 36개의 도구를 **내장**하여 MCP 프로토콜 오버헤드 없이 직접 실행합니다.
|
|
377
|
+
|
|
378
|
+
| 도구 | 설명 |
|
|
379
|
+
|------|------|
|
|
380
|
+
| `vibe_find_symbol` | 심볼 정의 찾기 |
|
|
381
|
+
| `vibe_find_references` | 참조 찾기 |
|
|
382
|
+
| `vibe_analyze_complexity` | 복잡도 분석 |
|
|
383
|
+
| `vibe_validate_code_quality` | 품질 검증 |
|
|
384
|
+
| `vibe_start_session` | 세션 시작 (이전 컨텍스트 자동 복원) |
|
|
385
|
+
| `vibe_auto_save_context` | 현재 상태 저장 |
|
|
386
|
+
| `vibe_save_memory` | 중요 결정사항 저장 |
|
|
387
|
+
|
|
388
|
+
### MCP 서버 (외부 LLM)
|
|
389
|
+
|
|
390
|
+
| MCP 서버 | 설명 | 등록 방식 |
|
|
391
|
+
|----------|------|----------|
|
|
392
|
+
| `vibe-gemini` | Gemini 3 Flash/Pro 서브에이전트 | 전역 (`-s user`) |
|
|
393
|
+
| `vibe-gpt` | GPT-5.2 Codex 서브에이전트 | 전역 (`-s user`) |
|
|
394
|
+
| `context7` | 라이브러리 문서 실시간 검색 | 전역 (`-s user`) |
|
|
395
|
+
|
|
396
|
+
> **Note**: MCP 서버들은 전역 등록되어 모든 프로젝트에서 사용 가능합니다.
|
|
397
|
+
> OAuth 인증 후 Claude Code에서 GPT/Gemini를 서브에이전트로 호출할 수 있습니다.
|
|
398
|
+
|
|
399
|
+
### Hooks (자동 설정)
|
|
400
|
+
|
|
401
|
+
| Hook | 트리거 | 동작 |
|
|
402
|
+
|------|--------|------|
|
|
403
|
+
| `SessionStart` | 세션 시작 | `vibe_start_session` 자동 호출 → 이전 컨텍스트 복원 |
|
|
404
|
+
| `UserPromptSubmit` | `ultrawork`/`ulw` 감지 | 🚀 ULTRAWORK 모드 활성화 |
|
|
405
|
+
| `PostToolUse` | Write/Edit 후 | 품질 체크 (멈추지 않음) |
|
|
406
|
+
| `Notification` | 컨텍스트 80% | **MANDATORY** `vibe_auto_save_context` 호출 |
|
|
407
|
+
| `Notification` | 컨텍스트 90% | **MANDATORY** 즉시 저장 (urgency=high) |
|
|
408
|
+
| `Notification` | 컨텍스트 95% | **MANDATORY** 긴급 저장 + 세션 전환 준비 |
|
|
409
|
+
|
|
410
|
+
### 선택적 연동 (외부 LLM)
|
|
411
|
+
|
|
412
|
+
| MCP 서버 | 명령어 | 설명 |
|
|
413
|
+
|----------|--------|------|
|
|
414
|
+
| GPT-5.2 Codex | `vibe auth gpt` | OAuth 인증 (ChatGPT Plus/Pro, 권장) |
|
|
415
|
+
| GPT-5.2 Codex | `vibe auth gpt --key <key>` | API 키 방식 |
|
|
416
|
+
| Gemini 3 Flash/Pro | `vibe auth gemini` | OAuth 인증 (구독자용, 권장) |
|
|
417
|
+
| Gemini 3 Flash/Pro | `vibe auth gemini --key <key>` | API 키 방식 |
|
|
418
|
+
|
|
419
|
+
> **OAuth 인증** 또는 API 키를 등록해서 사용할 수 있습니다.
|
|
420
|
+
|
|
421
|
+
### 주요 내장 도구
|
|
422
|
+
|
|
423
|
+
- **코드 분석**: `vibe_analyze_complexity`, `vibe_validate_code_quality`
|
|
424
|
+
- **시맨틱 검색**: `vibe_find_symbol`, `vibe_find_references`
|
|
425
|
+
- **추론**: `vibe_create_thinking_chain`, `vibe_analyze_problem`
|
|
426
|
+
- **메모리**: `vibe_save_memory`, `vibe_recall_memory`, `vibe_auto_save_context`
|
|
427
|
+
- **UI**: `vibe_preview_ui_ascii`
|
|
428
|
+
|
|
429
|
+
### context7 사용법
|
|
430
|
+
|
|
431
|
+
최신 라이브러리 문서가 필요할 때:
|
|
432
|
+
|
|
433
|
+
```
|
|
434
|
+
"React 19의 use() 훅 사용법을 context7으로 검색해줘"
|
|
435
|
+
"Next.js 15 App Router 문서를 확인해줘"
|
|
436
|
+
```
|
|
437
|
+
|
|
438
|
+
---
|
|
439
|
+
|
|
440
|
+
## 컨텍스트 관리 팁
|
|
441
|
+
|
|
442
|
+
### 모델 선택 전략
|
|
443
|
+
|
|
444
|
+
| 작업 유형 | 권장 모델 | 이유 |
|
|
445
|
+
|----------|----------|------|
|
|
446
|
+
| 탐색/검색 | Haiku | 빠르고 저비용 |
|
|
447
|
+
| 구현/디버깅 | Sonnet | 균형잡힌 성능 |
|
|
448
|
+
| 아키텍처/복잡한 로직 | Opus | 최고 성능 |
|
|
449
|
+
|
|
450
|
+
> vibe의 서브에이전트는 기본적으로 Haiku를 사용합니다. 고비용 모델이 필요 없는 탐색 작업을 저비용 모델에게 위임하는 전략입니다.
|
|
451
|
+
|
|
452
|
+
### Claude Code 기본 명령어
|
|
453
|
+
|
|
454
|
+
| 명령어 | 용도 |
|
|
455
|
+
|--------|------|
|
|
456
|
+
| `/context` | 현재 컨텍스트 사용량 확인 |
|
|
457
|
+
| `/rewind` | 이전 시점으로 되돌리기 |
|
|
458
|
+
| `/new` | 새 세션 시작 |
|
|
459
|
+
| `Shift + Tab` | 플랜 모드 진입 |
|
|
460
|
+
|
|
461
|
+
> **⚠️ `/compact` 사용 금지**: 정보 손실/왜곡 위험. vibe 메모리 시스템 사용 권장.
|
|
462
|
+
|
|
463
|
+
### 컨텍스트 80%+ 시 자동 처리
|
|
464
|
+
|
|
465
|
+
```
|
|
466
|
+
80% 도달 → vibe_auto_save_context 자동 호출 (MANDATORY)
|
|
467
|
+
90% 도달 → 즉시 저장 (urgency=high)
|
|
468
|
+
95% 도달 → 긴급 저장 + 세션 전환 준비
|
|
469
|
+
|
|
470
|
+
새 세션 시작 → vibe_start_session 자동 호출 → 이전 컨텍스트 복원
|
|
471
|
+
```
|
|
472
|
+
|
|
473
|
+
> **⚠️ `/compact` 사용 금지**: 정보 손실/왜곡 위험. vibe 메모리 시스템이 자동으로 관리합니다.
|
|
474
|
+
|
|
475
|
+
### 가치 밀도 높은 컨텍스트 유지
|
|
476
|
+
|
|
477
|
+
1. **계획 먼저** - `/vibe.spec`으로 명확한 계획 수립
|
|
478
|
+
2. **필요한 정보만** - 서브에이전트가 탐색하고 요약만 전달
|
|
479
|
+
3. **자동 저장** - 80%+ 시 `vibe_auto_save_context` 자동 호출
|
|
480
|
+
4. **Just-in-Time** - context7로 필요할 때만 문서 검색
|
|
481
|
+
|
|
482
|
+
---
|
|
483
|
+
|
|
484
|
+
## Example
|
|
485
|
+
|
|
486
|
+
```
|
|
487
|
+
User: /vibe.spec "벽돌게임"
|
|
488
|
+
|
|
489
|
+
Claude:
|
|
490
|
+
벽돌게임을 만드시는군요! 어떤 스타일을 생각하고 계신가요?
|
|
491
|
+
|
|
492
|
+
1. 클래식 벽돌깨기 (Breakout)
|
|
493
|
+
2. 아르카노이드 (파워업 포함)
|
|
494
|
+
3. 커스텀 스타일
|
|
495
|
+
|
|
496
|
+
또는 직접 설명해주셔도 됩니다.
|
|
497
|
+
|
|
498
|
+
User: 1
|
|
499
|
+
|
|
500
|
+
Claude: 어떤 플랫폼에서 실행하시겠어요?
|
|
501
|
+
|
|
502
|
+
1. 웹 (브라우저)
|
|
503
|
+
2. 모바일
|
|
504
|
+
3. 데스크톱
|
|
505
|
+
|
|
506
|
+
User: 1
|
|
507
|
+
|
|
508
|
+
Claude: 기술 스택을 제안드립니다:
|
|
509
|
+
|
|
510
|
+
1. Phaser.js (추천) - 게임 프레임워크
|
|
511
|
+
2. Canvas + JavaScript
|
|
512
|
+
3. PixiJS + Matter.js
|
|
513
|
+
|
|
514
|
+
User: 1
|
|
515
|
+
|
|
516
|
+
[대화 계속...]
|
|
517
|
+
|
|
518
|
+
✅ SPEC 문서 작성 완료!
|
|
519
|
+
📄 .vibe/specs/brick-game.md
|
|
520
|
+
📄 .vibe/features/brick-game.feature
|
|
521
|
+
|
|
522
|
+
다음 단계: /vibe.run "벽돌게임"
|
|
523
|
+
```
|
|
524
|
+
|
|
525
|
+
---
|
|
526
|
+
|
|
527
|
+
## Requirements
|
|
528
|
+
|
|
529
|
+
- **Node.js**: 18.0.0+
|
|
530
|
+
- **Claude Code**: 필수
|
|
531
|
+
|
|
532
|
+
---
|
|
533
|
+
|
|
534
|
+
## Links
|
|
535
|
+
|
|
536
|
+
- **Repository**: [github.com/su-record/vibe](https://github.com/su-record/vibe)
|
|
537
|
+
- **Issues**: [GitHub Issues](https://github.com/su-record/vibe/issues)
|
|
538
|
+
|
|
539
|
+
---
|
|
540
|
+
|
|
541
|
+
## License
|
|
542
|
+
|
|
543
|
+
MIT License
|
|
544
|
+
|
|
545
|
+
---
|
|
546
|
+
|
|
547
|
+
**Built with ❤️ by Su & Claude**
|
|
548
|
+
|
|
549
|
+
## Vibe Setup (AI Coding)
|
|
550
|
+
|
|
551
|
+
이 프로젝트는 [Vibe](https://github.com/su-record/vibe) AI 코딩 프레임워크를 사용합니다.
|
|
552
|
+
|
|
553
|
+
### 협업자 설치
|
|
554
|
+
|
|
555
|
+
```bash
|
|
556
|
+
# 전역 설치 (권장)
|
|
557
|
+
npm install -g @su-record/vibe
|
|
558
|
+
vibe update
|
|
559
|
+
|
|
560
|
+
# 또는 setup 스크립트 실행
|
|
561
|
+
./.vibe/setup.sh
|
|
562
|
+
```
|
|
563
|
+
|
|
564
|
+
### 사용법
|
|
565
|
+
|
|
566
|
+
Claude Code에서 슬래시 커맨드 사용:
|
|
567
|
+
- `/vibe.spec "기능명"` - SPEC 문서 작성
|
|
568
|
+
- `/vibe.run "기능명"` - 구현 실행
|