@su-record/vibe 0.3.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/.claude/agents/simplifier.md +120 -0
  2. package/.claude/commands/vibe.run.md +133 -113
  3. package/.claude/commands/vibe.spec.md +143 -218
  4. package/.claude/commands/vibe.verify.md +7 -0
  5. package/.claude/settings.local.json +22 -1
  6. package/CLAUDE.md +41 -0
  7. package/README.md +181 -443
  8. package/bin/vibe +183 -152
  9. package/package.json +3 -6
  10. package/templates/hooks-template.json +26 -0
  11. package/.claude/commands/vibe.plan.md +0 -81
  12. package/.claude/commands/vibe.tasks.md +0 -83
  13. package/agents/backend-python-expert.md +0 -453
  14. package/agents/database-postgres-expert.md +0 -538
  15. package/agents/frontend-flutter-expert.md +0 -487
  16. package/agents/frontend-react-expert.md +0 -424
  17. package/agents/quality-reviewer.md +0 -542
  18. package/agents/reasoning-agent.md +0 -353
  19. package/agents/specification-agent.md +0 -582
  20. package/scripts/install-mcp.js +0 -74
  21. package/scripts/install.sh +0 -70
  22. package/templates/plan-template.md +0 -237
  23. package/templates/tasks-template.md +0 -132
  24. /package/{skills → .agent/rules}/core/communication-guide.md +0 -0
  25. /package/{skills → .agent/rules}/core/development-philosophy.md +0 -0
  26. /package/{skills → .agent/rules}/core/quick-start.md +0 -0
  27. /package/{skills → .agent/rules}/languages/dart-flutter.md +0 -0
  28. /package/{skills → .agent/rules}/languages/python-fastapi.md +0 -0
  29. /package/{skills → .agent/rules}/languages/typescript-nextjs.md +0 -0
  30. /package/{skills → .agent/rules}/languages/typescript-react-native.md +0 -0
  31. /package/{skills → .agent/rules}/languages/typescript-react.md +0 -0
  32. /package/{skills → .agent/rules}/quality/bdd-contract-testing.md +0 -0
  33. /package/{skills → .agent/rules}/quality/checklist.md +0 -0
  34. /package/{skills → .agent/rules}/quality/testing-strategy.md +0 -0
  35. /package/{skills → .agent/rules}/standards/anti-patterns.md +0 -0
  36. /package/{skills → .agent/rules}/standards/code-structure.md +0 -0
  37. /package/{skills → .agent/rules}/standards/complexity-metrics.md +0 -0
  38. /package/{skills → .agent/rules}/standards/naming-conventions.md +0 -0
  39. /package/{skills → .agent/rules}/tools/mcp-hi-ai-guide.md +0 -0
  40. /package/{skills → .agent/rules}/tools/mcp-workflow.md +0 -0
package/bin/vibe CHANGED
@@ -2,192 +2,227 @@
2
2
 
3
3
  /**
4
4
  * vibe CLI
5
- * Vibe Development - SPEC-driven AI coding framework
5
+ * SPEC-driven AI coding framework (Claude Code 전용)
6
6
  */
7
7
 
8
8
  const path = require('path');
9
9
  const fs = require('fs');
10
10
 
11
- // 명령어 목록 (Claude Code 전용)
12
- const commands = {
13
- init: 'Initialize vibe in current project (MCP registration)',
14
- help: 'Show help message'
15
- };
16
-
17
11
  const args = process.argv.slice(2);
18
12
  const command = args[0];
19
13
 
20
- // 도움말 출력
21
- function showHelp() {
22
- console.log(`
23
- 📖 Vibe - SPEC-driven AI coding framework for Claude Code
24
-
25
- ⚠️ Vibe는 Claude Code 전용 프레임워크입니다.
26
- 터미널에서는 초기화만 가능합니다.
27
-
28
- 터미널 명령어:
29
- vibe init Initialize vibe in current project
30
- vibe init <project-name> Create new project with vibe
31
- vibe help Show this message
32
-
33
- Claude Code 슬래시 커맨드 (프로젝트 내에서 사용):
34
- /vibe.spec "기능명" SPEC 작성 (대화형 Q&A)
35
- /vibe.plan "기능명" 기술 계획 작성
36
- /vibe.tasks "기능명" Task 목록 생성
37
- /vibe.run "Task 1-1" Task 구현
38
- /vibe.verify "기능명" 검증
39
- /vibe.analyze 프로젝트 분석
40
- /vibe.ui "설명" UI 미리보기
41
- /vibe.diagram --er 다이어그램 생성
42
-
43
- Workflow:
44
- 1. 터미널에서 vibe init 실행 (MCP 서버 등록)
45
- 2. Claude Code에서 슬래시 커맨드 사용
46
- /vibe.spec "푸시 알림 설정"
47
- /vibe.plan "푸시 알림 설정"
48
- /vibe.tasks "푸시 알림 설정"
49
- /vibe.run "Task 1-1"
50
- /vibe.verify "푸시 알림 설정"
51
-
52
- 설치:
53
- npm install -g @su-record/vibe
54
-
55
- 문서:
56
- https://github.com/su-record/vibe/wiki
57
- `);
14
+ // 유틸리티 함수
15
+ function ensureDir(dir) {
16
+ if (!fs.existsSync(dir)) {
17
+ fs.mkdirSync(dir, { recursive: true });
18
+ }
58
19
  }
59
20
 
60
- // 버전 정보
61
- function showVersion() {
62
- const packageJson = require('../package.json');
63
- console.log(`vibe v${packageJson.version}`);
21
+ function copyDirContents(sourceDir, targetDir) {
22
+ if (fs.existsSync(sourceDir)) {
23
+ fs.readdirSync(sourceDir).forEach(file => {
24
+ fs.copyFileSync(path.join(sourceDir, file), path.join(targetDir, file));
25
+ });
26
+ }
64
27
  }
65
28
 
66
- // 프로젝트 초기화
67
- function init(projectName) {
68
- let projectRoot = process.cwd();
69
- let isNewProject = false;
29
+ function copyDirRecursive(sourceDir, targetDir) {
30
+ if (!fs.existsSync(sourceDir)) return;
70
31
 
71
- // 새 프로젝트 생성 케이스
72
- if (projectName) {
73
- projectRoot = path.join(process.cwd(), projectName);
32
+ ensureDir(targetDir);
74
33
 
75
- if (fs.existsSync(projectRoot)) {
76
- console.log(`❌ 폴더가 이미 존재합니다: ${projectName}/`);
77
- return;
78
- }
34
+ fs.readdirSync(sourceDir).forEach(item => {
35
+ const sourcePath = path.join(sourceDir, item);
36
+ const targetPath = path.join(targetDir, item);
79
37
 
80
- console.log(`📁 새 프로젝트 생성: ${projectName}/\n`);
81
- fs.mkdirSync(projectRoot, { recursive: true });
82
- isNewProject = true;
83
- }
84
-
85
- const vibeDir = path.join(projectRoot, '.vibe');
86
-
87
- if (fs.existsSync(vibeDir)) {
88
- console.log('❌ .vibe/ 폴더가 이미 존재합니다.');
89
- return;
90
- }
38
+ if (fs.statSync(sourcePath).isDirectory()) {
39
+ copyDirRecursive(sourcePath, targetPath);
40
+ } else {
41
+ fs.copyFileSync(sourcePath, targetPath);
42
+ }
43
+ });
44
+ }
91
45
 
92
- // MCP 서버 등록 먼저 체크 및 실행
93
- console.log('🔧 MCP 서버 확인 중...\n');
46
+ // 프로젝트 초기화
47
+ async function init(projectName) {
94
48
  try {
95
- const { execSync } = require('child_process');
49
+ let projectRoot = process.cwd();
50
+ let isNewProject = false;
96
51
 
97
- // MCP 서버 등록 스크립트 실행
98
- const installScriptPath = path.join(__dirname, '../scripts/install-mcp.js');
99
- execSync(`node "${installScriptPath}"`, { stdio: 'inherit' });
52
+ if (projectName) {
53
+ projectRoot = path.join(process.cwd(), projectName);
100
54
 
101
- } catch (error) {
102
- console.log('\n⚠️ MCP 서버 등록 오류가 발생했습니다.');
103
- console.log(' 계속 진행합니다...\n');
104
- }
55
+ if (fs.existsSync(projectRoot)) {
56
+ console.log(`❌ 폴더가 이미 존재합니다: ${projectName}/`);
57
+ return;
58
+ }
105
59
 
106
- // 폴더 생성
107
- fs.mkdirSync(vibeDir);
108
- fs.mkdirSync(path.join(vibeDir, 'specs'));
109
- fs.mkdirSync(path.join(vibeDir, 'features'));
110
- fs.mkdirSync(path.join(vibeDir, 'plans'));
111
- fs.mkdirSync(path.join(vibeDir, 'tasks'));
60
+ console.log(`📁 프로젝트 생성: ${projectName}/\n`);
61
+ fs.mkdirSync(projectRoot, { recursive: true });
62
+ isNewProject = true;
63
+ }
112
64
 
113
- // .claude/commands 폴더 생성 및 슬래시 커맨드 복사
114
- const claudeDir = path.join(projectRoot, '.claude');
115
- const commandsDir = path.join(claudeDir, 'commands');
65
+ const vibeDir = path.join(projectRoot, '.vibe');
66
+ if (fs.existsSync(vibeDir)) {
67
+ console.log('❌ .vibe/ 폴더가 이미 존재합니다.');
68
+ return;
69
+ }
116
70
 
117
- if (!fs.existsSync(claudeDir)) {
118
- fs.mkdirSync(claudeDir);
119
- }
120
- if (!fs.existsSync(commandsDir)) {
121
- fs.mkdirSync(commandsDir);
122
- }
71
+ // MCP 서버 등록 (Claude Code)
72
+ const mcpPath = path.join(__dirname, '..', 'node_modules', '@su-record', 'hi-ai', 'dist', 'index.js');
123
73
 
124
- // 슬래시 커맨드 파일들 복사
125
- const sourceCommandsDir = path.join(__dirname, '../.claude/commands');
126
- if (fs.existsSync(sourceCommandsDir)) {
127
- const commandFiles = fs.readdirSync(sourceCommandsDir);
128
- commandFiles.forEach(file => {
129
- const sourcePath = path.join(sourceCommandsDir, file);
130
- const destPath = path.join(commandsDir, file);
131
- fs.copyFileSync(sourcePath, destPath);
132
- });
133
- }
74
+ console.log('🔧 Claude Code MCP 서버 등록 중...\n');
75
+ const { execSync } = require('child_process');
76
+ try {
77
+ execSync(`claude mcp add vibe node "${mcpPath}"`, { stdio: 'pipe' });
78
+ console.log(' ✅ MCP 서버 등록 완료\n');
79
+ } catch (e) {
80
+ if (e.message.includes('already exists')) {
81
+ console.log(' ℹ️ MCP 서버 이미 등록됨\n');
82
+ } else {
83
+ console.log(' ⚠️ MCP 수동 등록 필요\n');
84
+ }
85
+ }
134
86
 
135
- // constitution.md 템플릿 복사
136
- const templatePath = path.join(__dirname, '../templates/constitution-template.md');
137
- const constitutionPath = path.join(vibeDir, 'constitution.md');
87
+ // .vibe 폴더 구조 생성
88
+ const dirs = ['', 'specs', 'features'];
89
+ dirs.forEach(dir => {
90
+ ensureDir(path.join(vibeDir, dir));
91
+ });
138
92
 
139
- if (fs.existsSync(templatePath)) {
140
- fs.copyFileSync(templatePath, constitutionPath);
141
- }
93
+ // .claude/commands 복사
94
+ const claudeDir = path.join(projectRoot, '.claude');
95
+ const commandsDir = path.join(claudeDir, 'commands');
96
+ ensureDir(claudeDir);
97
+ ensureDir(commandsDir);
98
+
99
+ const sourceDir = path.join(__dirname, '../.claude/commands');
100
+ copyDirContents(sourceDir, commandsDir);
101
+ console.log(' ✅ 슬래시 커맨드 설치 완료 (7개)\n');
102
+
103
+ // 설정 파일 생성
104
+ const templatePath = path.join(__dirname, '../templates/constitution-template.md');
105
+ const constitutionPath = path.join(vibeDir, 'constitution.md');
106
+ if (fs.existsSync(templatePath)) {
107
+ fs.copyFileSync(templatePath, constitutionPath);
108
+ }
142
109
 
143
- // config.json 생성 (언어 설정 포함)
144
- const configPath = path.join(vibeDir, 'config.json');
145
- const config = {
146
- language: 'ko', // 기본 한국어
147
- agents: {
148
- default: 'backend-python-expert'
149
- },
150
- mcp: {
151
- enabled: true,
152
- servers: ['vibe']
153
- },
154
- quality: {
155
- strict: true,
156
- autoVerify: true
110
+ const config = {
111
+ language: 'ko',
112
+ quality: { strict: true, autoVerify: true }
113
+ };
114
+ fs.writeFileSync(path.join(vibeDir, 'config.json'), JSON.stringify(config, null, 2));
115
+
116
+ // CLAUDE.md 병합 (기존 내용 보존)
117
+ const vibeClaudeMd = path.join(__dirname, '../CLAUDE.md');
118
+ const projectClaudeMd = path.join(projectRoot, 'CLAUDE.md');
119
+
120
+ if (fs.existsSync(projectClaudeMd)) {
121
+ // 기존 CLAUDE.md가 있으면 vibe 섹션 추가
122
+ const existingContent = fs.readFileSync(projectClaudeMd, 'utf-8');
123
+ const vibeContent = fs.readFileSync(vibeClaudeMd, 'utf-8');
124
+
125
+ if (!existingContent.includes('/vibe.spec')) {
126
+ // vibe 섹션이 없으면 끝에 추가
127
+ const mergedContent = existingContent.trim() + '\n\n---\n\n' + vibeContent;
128
+ fs.writeFileSync(projectClaudeMd, mergedContent);
129
+ console.log(' ✅ CLAUDE.md에 vibe 섹션 추가\n');
130
+ } else {
131
+ console.log(' ℹ️ CLAUDE.md에 vibe 섹션 이미 존재\n');
132
+ }
133
+ } else {
134
+ // 없으면 새로 생성
135
+ fs.copyFileSync(vibeClaudeMd, projectClaudeMd);
136
+ console.log(' ✅ CLAUDE.md 생성\n');
157
137
  }
158
- };
159
- fs.writeFileSync(configPath, JSON.stringify(config, null, 2));
160
138
 
161
- console.log(`
139
+ // .agent/rules/ 복사 (코딩 규칙)
140
+ const rulesSource = path.join(__dirname, '../.agent/rules');
141
+ const rulesTarget = path.join(projectRoot, '.agent/rules');
142
+ copyDirRecursive(rulesSource, rulesTarget);
143
+ console.log(' ✅ 코딩 규칙 설치 완료 (.agent/rules/)\n');
144
+
145
+ // .claude/agents/ 복사 (서브에이전트)
146
+ const agentsDir = path.join(claudeDir, 'agents');
147
+ ensureDir(agentsDir);
148
+ const agentsSourceDir = path.join(__dirname, '../.claude/agents');
149
+ copyDirContents(agentsSourceDir, agentsDir);
150
+ console.log(' ✅ 서브에이전트 설치 완료 (.claude/agents/)\n');
151
+
152
+ // 완료 메시지
153
+ console.log(`
162
154
  ✅ vibe 초기화 완료!
163
155
 
164
156
  ${isNewProject ? `프로젝트 위치:
165
157
  ${projectRoot}/
166
158
 
167
159
  ` : ''}생성된 구조:
168
- .claude/commands/ # 슬래시 커맨드 (8개)
160
+ CLAUDE.md # 프로젝트 컨텍스트
161
+ .claude/
162
+ ├── commands/ # 슬래시 커맨드 (7개)
163
+ └── agents/ # 서브에이전트 (simplifier)
164
+ .agent/rules/ # 코딩 규칙
165
+ ├── core/ # 핵심 원칙
166
+ ├── quality/ # 품질 체크리스트
167
+ └── standards/ # 코딩 표준
169
168
  .vibe/
170
- ├── config.json # 프로젝트 설정 (언어: 한국어)
171
- ├── constitution.md # 프로젝트 원칙
172
- ├── specs/ # SPEC 문서들
173
- ├── features/ # BDD Feature 파일들 (Gherkin)
174
- ├── plans/ # 기술 계획들
175
- └── tasks/ # 작업 목록들
169
+ ├── config.json # 프로젝트 설정
170
+ ├── constitution.md # 프로젝트 원칙
171
+ ├── specs/ # SPEC 문서들
172
+ └── features/ # BDD Feature 파일들
176
173
 
177
- MCP 서버:
178
- ✓ vibe MCP 서버 등록 완료 (38개 도구)
179
- 확인: claude mcp list
174
+ MCP 서버 (hi-ai): ✓
180
175
 
181
- 언어 변경:
182
- .vibe/config.json에서 "language" "en" 또는 "ko"로 변경
176
+ 사용법:
177
+ /vibe.spec "기능명" SPEC 작성 (대화형)
178
+ /vibe.run "기능명" 구현 실행
179
+ /vibe.verify "기능명" 검증
183
180
 
184
181
  다음 단계:
185
- ${isNewProject ? `1. cd ${projectName}\n 2. ` : ''}Claude Code에서 슬래시 커맨드 사용:
186
- /vibe.spec "기능명"
187
- /vibe.plan "기능명"
182
+ ${isNewProject ? `cd ${projectName}\n ` : ''}/vibe.spec "기능명" 으로 시작하세요!
183
+ `);
184
+
185
+ } catch (error) {
186
+ console.error('❌ 초기화 실패:', error.message);
187
+ process.exit(1);
188
+ }
189
+ }
190
+
191
+ // 도움말 출력
192
+ function showHelp() {
193
+ console.log(`
194
+ 📖 Vibe - SPEC-driven AI coding framework (Claude Code 전용)
195
+
196
+ Commands:
197
+ vibe init [project] Initialize vibe in current/new project
198
+ vibe help Show this message
199
+ vibe version Show version
200
+
201
+ Claude Code 슬래시 커맨드:
202
+ /vibe.spec "기능명" SPEC 작성 (PTCF 구조)
203
+ /vibe.run "기능명" 구현 실행
204
+ /vibe.verify "기능명" 검증
205
+ /vibe.reason "문제" 체계적 추론
206
+ /vibe.analyze 프로젝트 분석
207
+ /vibe.ui "설명" UI 미리보기
208
+ /vibe.diagram 다이어그램 생성
209
+
210
+ Workflow:
211
+ /vibe.spec → /vibe.run → /vibe.verify
212
+
213
+ 설치:
214
+ npm install -g @su-record/vibe
215
+
216
+ 문서:
217
+ https://github.com/su-record/vibe
188
218
  `);
189
219
  }
190
220
 
221
+ // 버전 정보
222
+ function showVersion() {
223
+ const packageJson = require('../package.json');
224
+ console.log(`vibe v${packageJson.version}`);
225
+ }
191
226
 
192
227
  // 메인 라우터
193
228
  switch (command) {
@@ -212,14 +247,10 @@ switch (command) {
212
247
  console.log(`
213
248
  ❌ 알 수 없는 명령어: ${command}
214
249
 
215
- ⚠️ Vibe는 Claude Code 전용 프레임워크입니다.
216
- 터미널에서는 'init'만 사용 가능합니다.
217
-
218
- Claude Code에서 슬래시 커맨드를 사용하세요:
219
- /vibe.spec "기능명"
220
- /vibe.plan "기능명"
221
- /vibe.tasks "기능명"
222
- /vibe.run "Task 1-1"
250
+ 사용 가능한 명령어:
251
+ vibe init 프로젝트 초기화
252
+ vibe help 도움말
253
+ vibe version 버전 정보
223
254
 
224
255
  사용법: vibe help
225
256
  `);
package/package.json CHANGED
@@ -1,8 +1,7 @@
1
1
  {
2
2
  "name": "@su-record/vibe",
3
- "version": "0.3.0",
3
+ "version": "0.4.1",
4
4
  "description": "Vibe - Claude Code exclusive SPEC-driven AI coding framework",
5
- "main": "cli/index.js",
6
5
  "bin": {
7
6
  "vibe": "./bin/vibe"
8
7
  },
@@ -37,12 +36,10 @@
37
36
  "devDependencies": {},
38
37
  "files": [
39
38
  "bin/",
40
- "cli/",
41
39
  ".claude/",
42
- "agents/",
43
- "skills/",
40
+ ".agent/",
44
41
  "templates/",
45
- "scripts/",
42
+ "CLAUDE.md",
46
43
  "README.md",
47
44
  "LICENSE"
48
45
  ]
@@ -0,0 +1,26 @@
1
+ {
2
+ "$schema": "https://claude.ai/schemas/hooks.json",
3
+ "description": "VIBE 프레임워크 자동 품질 검증 훅",
4
+ "hooks": {
5
+ "PostToolUse": [
6
+ {
7
+ "tools": ["Write", "Edit"],
8
+ "description": "코드 작성/수정 후 품질 검증",
9
+ "command": "echo '📋 품질 검증 중...' && claude --agent simplifier --file $CHANGED_FILE",
10
+ "enabled": true
11
+ }
12
+ ],
13
+ "PreCommit": [
14
+ {
15
+ "description": "커밋 전 전체 품질 체크",
16
+ "command": "npm run lint && npm run type-check",
17
+ "enabled": true
18
+ }
19
+ ]
20
+ },
21
+ "settings": {
22
+ "autoFix": true,
23
+ "minGrade": "B",
24
+ "reportPath": ".vibe/reports/"
25
+ }
26
+ }
@@ -1,81 +0,0 @@
1
- ---
2
- description: Create PLAN document with Planning Agent
3
- argument-hint: "feature name"
4
- ---
5
-
6
- # /vibe.plan
7
-
8
- PLAN 문서를 작성합니다 (Planning Agent).
9
-
10
- ## Usage
11
-
12
- ```
13
- /vibe.plan "기능명"
14
- ```
15
-
16
- ## Description
17
-
18
- SPEC 문서를 분석하여 기술 구현 계획(PLAN)을 작성합니다.
19
-
20
- ## Process
21
-
22
- 1. **SPEC 문서 읽기**: `.vibe/specs/{기능명}.md` 분석
23
- 2. **Feature 파일 읽기**: `.vibe/features/{기능명}.feature` 확인 (BDD)
24
- 3. **프로젝트 컨텍스트 파악**:
25
- - `CLAUDE.md` 읽기 (기술 스택 확인)
26
- - `package.json` / `pyproject.toml` / `pubspec.yaml` 확인
27
- 4. **PLAN 문서 작성**: 15개 섹션 포함
28
- - 기술 스택 선정 (기존 스택 재사용 우선)
29
- - 아키텍처 설계
30
- - API 설계
31
- - DB 스키마
32
- - 외부 서비스 통합
33
- - 보안 설계
34
- - 성능 최적화
35
- - 에러 처리
36
- - 모니터링 및 로깅
37
- - **테스트 전략 (BDD/Contract Testing 포함)**
38
- - BDD 도구 선정 (pytest-bdd, behave, cucumber 등)
39
- - Contract Testing 도구 (Pact, Spring Cloud Contract 등)
40
- - Feature 파일과 SPEC 매핑
41
- - API Contract 스키마 정의
42
- - 배포 전략
43
- - 비용 예측
44
- - 마일스톤 (Phase별)
45
- - 리스크 및 완화 방안
46
- - 다음 단계
47
- 5. **품질 검증**: 기술 선택 근거, 비용, 일정 현실성, BDD 테스트 전략 타당성
48
-
49
- ## Agent
50
-
51
- `~/.vibe/agents/planning-agent.md`
52
-
53
- ## Input
54
-
55
- - `.vibe/specs/{기능명}.md` (SPEC 문서)
56
- - `.vibe/features/{기능명}.feature` (BDD Feature 파일)
57
- - `CLAUDE.md` (프로젝트 기술 스택)
58
-
59
- ## Output
60
-
61
- - `.vibe/plans/{기능명}.md` - PLAN 문서
62
- - 예상 공수 (시간/일)
63
- - 예상 비용 ($)
64
- - Phase별 마일스톤
65
-
66
- ## Example
67
-
68
- ```
69
- /vibe.plan "푸시 알림 설정 기능"
70
- ```
71
-
72
- **결과:**
73
- - 3 Phases (Backend → Frontend → FCM)
74
- - 24시간 (3일)
75
- - $0.50/월 추가 비용
76
-
77
- ## Next Step
78
-
79
- ```
80
- /vibe.tasks "푸시 알림 설정 기능"
81
- ```
@@ -1,83 +0,0 @@
1
- ---
2
- description: Create TASKS document with Task Agent
3
- argument-hint: "feature name"
4
- ---
5
-
6
- # /vibe.tasks
7
-
8
- TASKS 문서를 작성합니다 (Task Agent).
9
-
10
- ## Usage
11
-
12
- ```
13
- /vibe.tasks "기능명"
14
- ```
15
-
16
- ## Description
17
-
18
- PLAN 문서를 분석하여 Phase별 구체적인 작업 목록(TASKS)을 생성합니다.
19
-
20
- ## Process
21
-
22
- 1. **PLAN 문서 읽기**: `.vibe/plans/{기능명}.md` 분석
23
- 2. **Feature 파일 읽기**: `.vibe/features/{기능명}.feature` 확인 (BDD Scenarios)
24
- 3. **Phase별 Task 분해**:
25
- - Phase 1: Backend 개발 (DB, API, Service, Repository, Unit Tests, **Contract Provider**)
26
- - Phase 2: Frontend 개발 (Model, Service, Provider, UI, Unit Tests, **Contract Consumer**)
27
- - Phase 3: 통합 및 테스트 (FCM, E2E, **BDD Step Definitions**, **Contract Verification**)
28
- 4. **각 Task마다 정의**:
29
- - 상태 (⬜ 대기 / 🟡 진행 중 / ✅ 완료)
30
- - 담당 Agent
31
- - 예상 시간
32
- - 우선순위 (HIGH/MEDIUM/LOW)
33
- - 의존성 (선행 Task)
34
- - Acceptance Criteria (검증 기준)
35
- - 참고 파일 경로
36
- - 검증 명령어
37
- 4. **의존성 그래프 생성**: Task 간 실행 순서 시각화
38
- 5. **체크리스트 생성**: 코드 품질, 테스트, 문서, SPEC 검증
39
-
40
- ## Agent
41
-
42
- `~/.vibe/agents/task-agent.md`
43
-
44
- ## Input
45
-
46
- - `.vibe/plans/{기능명}.md` (PLAN 문서)
47
- - `.vibe/specs/{기능명}.md` (SPEC 문서)
48
- - `.vibe/features/{기능명}.feature` (BDD Feature 파일)
49
-
50
- ## Output
51
-
52
- - `.vibe/tasks/{기능명}.md` - TASKS 문서
53
- - 총 Task 수
54
- - 의존성 그래프
55
- - Phase별 체크리스트
56
-
57
- ## Example
58
-
59
- ```
60
- /vibe.tasks "푸시 알림 설정 기능"
61
- ```
62
-
63
- **결과:**
64
- - 23개 Task (Phase 1: 9개, Phase 2: 9개, Phase 3: 5개)
65
- - **Phase 1:** DB, API, Service, Repository, Unit Tests, **Contract Provider 정의**
66
- - **Phase 2:** Model, Service, Provider, UI, Unit Tests, **Contract Consumer 정의**
67
- - **Phase 3:** FCM, E2E, **BDD Step Definitions**, **Contract Verification**
68
- - 의존성 그래프 포함
69
- - 각 Task별 Acceptance Criteria
70
- - BDD Scenarios와 매핑된 Contract Test Tasks
71
-
72
- ## Next Step
73
-
74
- ```
75
- /vibe.run "Task 1-1"
76
- ```
77
-
78
- 또는:
79
-
80
- ```
81
- /vibe.run --phase 1 # Phase 1 전체 실행
82
- /vibe.run --all # 모든 Task 실행
83
- ```