@su-record/vibe 0.4.5 → 0.4.7
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/simplifier.md +1 -1
- package/.claude/commands/vibe.analyze.md +1 -1
- package/.claude/commands/vibe.run.md +1 -1
- package/.claude/commands/vibe.spec.md +2 -2
- package/.claude/commands/vibe.verify.md +1 -1
- package/.claude/settings.local.json +3 -1
- package/README.md +4 -4
- package/bin/vibe +41 -13
- package/package.json +2 -2
- package/templates/hooks-template.json +1 -1
- /package/{.agent → .vibe}/rules/core/communication-guide.md +0 -0
- /package/{.agent → .vibe}/rules/core/development-philosophy.md +0 -0
- /package/{.agent → .vibe}/rules/core/quick-start.md +0 -0
- /package/{.agent → .vibe}/rules/languages/dart-flutter.md +0 -0
- /package/{.agent → .vibe}/rules/languages/go.md +0 -0
- /package/{.agent → .vibe}/rules/languages/java-spring.md +0 -0
- /package/{.agent → .vibe}/rules/languages/kotlin-android.md +0 -0
- /package/{.agent → .vibe}/rules/languages/python-django.md +0 -0
- /package/{.agent → .vibe}/rules/languages/python-fastapi.md +0 -0
- /package/{.agent → .vibe}/rules/languages/rust.md +0 -0
- /package/{.agent → .vibe}/rules/languages/swift-ios.md +0 -0
- /package/{.agent → .vibe}/rules/languages/typescript-nextjs.md +0 -0
- /package/{.agent → .vibe}/rules/languages/typescript-node.md +0 -0
- /package/{.agent → .vibe}/rules/languages/typescript-react-native.md +0 -0
- /package/{.agent → .vibe}/rules/languages/typescript-react.md +0 -0
- /package/{.agent → .vibe}/rules/languages/typescript-vue.md +0 -0
- /package/{.agent → .vibe}/rules/quality/bdd-contract-testing.md +0 -0
- /package/{.agent → .vibe}/rules/quality/checklist.md +0 -0
- /package/{.agent → .vibe}/rules/quality/testing-strategy.md +0 -0
- /package/{.agent → .vibe}/rules/standards/anti-patterns.md +0 -0
- /package/{.agent → .vibe}/rules/standards/code-structure.md +0 -0
- /package/{.agent → .vibe}/rules/standards/complexity-metrics.md +0 -0
- /package/{.agent → .vibe}/rules/standards/naming-conventions.md +0 -0
- /package/{.agent → .vibe}/rules/tools/mcp-hi-ai-guide.md +0 -0
- /package/{.agent → .vibe}/rules/tools/mcp-workflow.md +0 -0
|
@@ -117,7 +117,7 @@ argument-hint: "기능명" or --code or --deps or --arch (optional)
|
|
|
117
117
|
|
|
118
118
|
#### 6. 개발 규칙 확인
|
|
119
119
|
|
|
120
|
-
`.
|
|
120
|
+
`.vibe/rules/`에서 관련 규칙 로드:
|
|
121
121
|
- `core/quick-start.md` - 5가지 핵심 원칙
|
|
122
122
|
- `standards/complexity-metrics.md` - 복잡도 기준
|
|
123
123
|
- `quality/checklist.md` - 품질 체크리스트
|
|
@@ -16,7 +16,7 @@ SPEC을 기반으로 구현합니다 (Implementation Agent).
|
|
|
16
16
|
|
|
17
17
|
## Rules Reference
|
|
18
18
|
|
|
19
|
-
**반드시 `.
|
|
19
|
+
**반드시 `.vibe/rules/` 규칙을 따릅니다:**
|
|
20
20
|
- `core/development-philosophy.md` - 수술적 정밀도, 요청 범위만 수정
|
|
21
21
|
- `core/quick-start.md` - 한국어, DRY, SRP, YAGNI
|
|
22
22
|
- `standards/complexity-metrics.md` - 함수 ≤20줄, 중첩 ≤3단계
|
|
@@ -15,7 +15,7 @@ SPEC 문서를 작성합니다 (Specification Agent).
|
|
|
15
15
|
|
|
16
16
|
## Rules Reference
|
|
17
17
|
|
|
18
|
-
**반드시 `.
|
|
18
|
+
**반드시 `.vibe/rules/` 규칙을 따릅니다:**
|
|
19
19
|
- `core/development-philosophy.md` - 수술적 정밀도, 단순함
|
|
20
20
|
- `core/quick-start.md` - 한국어 우선, DRY, SRP
|
|
21
21
|
- `core/communication-guide.md` - 커뮤니케이션 원칙
|
|
@@ -142,7 +142,7 @@ SPEC 문서를 작성합니다 (Specification Agent).
|
|
|
142
142
|
|
|
143
143
|
### 5. 품질 검증
|
|
144
144
|
|
|
145
|
-
`.
|
|
145
|
+
`.vibe/rules/quality/checklist.md` 기준 자체 평가 (0-100점)
|
|
146
146
|
|
|
147
147
|
## Output
|
|
148
148
|
|
|
@@ -15,7 +15,7 @@ argument-hint: "feature name"
|
|
|
15
15
|
|
|
16
16
|
## Rules Reference
|
|
17
17
|
|
|
18
|
-
**반드시 `.
|
|
18
|
+
**반드시 `.vibe/rules/` 규칙을 따릅니다:**
|
|
19
19
|
- `quality/checklist.md` - 코드 품질 체크리스트 (필수)
|
|
20
20
|
- `standards/complexity-metrics.md` - 복잡도 기준
|
|
21
21
|
- `standards/anti-patterns.md` - 안티패턴 검출
|
|
@@ -40,7 +40,9 @@
|
|
|
40
40
|
"Bash(npm version:*)",
|
|
41
41
|
"Bash(npx @su-record/vibe@latest update)",
|
|
42
42
|
"Bash(gh release:*)",
|
|
43
|
-
"Bash(npx @su-record/vibe@latest init:*)"
|
|
43
|
+
"Bash(npx @su-record/vibe@latest init:*)",
|
|
44
|
+
"Bash(vibe version:*)",
|
|
45
|
+
"Bash(vibe update:*)"
|
|
44
46
|
],
|
|
45
47
|
"deny": [],
|
|
46
48
|
"ask": []
|
package/README.md
CHANGED
|
@@ -15,7 +15,7 @@ SPEC 문서 하나로 AI가 바로 구현하는 2-step 워크플로우.
|
|
|
15
15
|
- **Claude Code 전용**: 네이티브 슬래시 커맨드 + MCP 통합
|
|
16
16
|
- **2-Step 워크플로우**: SPEC → RUN → VERIFY (PLAN/TASKS 불필요)
|
|
17
17
|
- **PTCF 구조**: Persona, Task, Context, Format - Gemini 프롬프트 최적화
|
|
18
|
-
- **코딩 규칙 내장**: `.
|
|
18
|
+
- **코딩 규칙 내장**: `.vibe/rules/` - 품질 기준, 복잡도 제한, 안티패턴
|
|
19
19
|
- **자동 품질 검증**: code-simplifier 서브에이전트
|
|
20
20
|
- **36개 MCP 도구**: @su-record/hi-ai 통합
|
|
21
21
|
|
|
@@ -64,7 +64,7 @@ cd my-project
|
|
|
64
64
|
│ /vibe.run "기능명" │
|
|
65
65
|
│ ↓ SPEC 읽고 바로 구현 │
|
|
66
66
|
│ ↓ Phase별 순차 실행 │
|
|
67
|
-
│ ↓ .
|
|
67
|
+
│ ↓ .vibe/rules/ 규칙 준수 │
|
|
68
68
|
├─────────────────────────────────────────────────────┤
|
|
69
69
|
│ /vibe.verify "기능명" │
|
|
70
70
|
│ ↓ Acceptance Criteria 검증 │
|
|
@@ -117,7 +117,7 @@ project/
|
|
|
117
117
|
├── .claude/
|
|
118
118
|
│ ├── commands/ # 슬래시 커맨드 (7개)
|
|
119
119
|
│ └── agents/ # 서브에이전트 (simplifier)
|
|
120
|
-
├── .
|
|
120
|
+
├── .vibe/rules/ # 코딩 규칙
|
|
121
121
|
│ ├── core/ # 핵심 원칙 (수술적 정밀도, DRY, SRP)
|
|
122
122
|
│ ├── quality/ # 품질 체크리스트
|
|
123
123
|
│ ├── standards/ # 복잡도, 네이밍, 안티패턴
|
|
@@ -182,7 +182,7 @@ AI의 역할과 전문성 정의
|
|
|
182
182
|
|
|
183
183
|
---
|
|
184
184
|
|
|
185
|
-
## Coding Rules (.
|
|
185
|
+
## Coding Rules (.vibe/rules/)
|
|
186
186
|
|
|
187
187
|
### 핵심 원칙
|
|
188
188
|
|
package/bin/vibe
CHANGED
|
@@ -236,11 +236,11 @@ async function init(projectName) {
|
|
|
236
236
|
log(' ✅ CLAUDE.md 생성\n');
|
|
237
237
|
}
|
|
238
238
|
|
|
239
|
-
// .
|
|
240
|
-
const rulesSource = path.join(__dirname, '../.
|
|
241
|
-
const rulesTarget = path.join(
|
|
239
|
+
// .vibe/rules/ 복사 (코딩 규칙)
|
|
240
|
+
const rulesSource = path.join(__dirname, '../.vibe/rules');
|
|
241
|
+
const rulesTarget = path.join(vibeDir, 'rules');
|
|
242
242
|
copyDirRecursive(rulesSource, rulesTarget);
|
|
243
|
-
log(' ✅ 코딩 규칙 설치 완료 (.
|
|
243
|
+
log(' ✅ 코딩 규칙 설치 완료 (.vibe/rules/)\n');
|
|
244
244
|
|
|
245
245
|
// .claude/agents/ 복사 (서브에이전트)
|
|
246
246
|
const agentsDir = path.join(claudeDir, 'agents');
|
|
@@ -277,14 +277,14 @@ ${isNewProject ? `프로젝트 위치:
|
|
|
277
277
|
├── commands/ # 슬래시 커맨드 (7개)
|
|
278
278
|
├── agents/ # 서브에이전트 (simplifier)
|
|
279
279
|
└── settings.local.json # Hooks 설정 (자동 품질 검증)
|
|
280
|
-
.agent/rules/ # 코딩 규칙
|
|
281
|
-
├── core/ # 핵심 원칙
|
|
282
|
-
├── quality/ # 품질 체크리스트
|
|
283
|
-
└── standards/ # 코딩 표준
|
|
284
280
|
.vibe/
|
|
285
281
|
├── config.json # 프로젝트 설정
|
|
286
282
|
├── constitution.md # 프로젝트 원칙
|
|
287
283
|
├── setup.sh # 협업자 설치 스크립트
|
|
284
|
+
├── rules/ # 코딩 규칙
|
|
285
|
+
│ ├── core/ # 핵심 원칙
|
|
286
|
+
│ ├── quality/ # 품질 체크리스트
|
|
287
|
+
│ └── languages/ # 언어별 규칙
|
|
288
288
|
├── specs/ # SPEC 문서들
|
|
289
289
|
└── features/ # BDD Feature 파일들
|
|
290
290
|
|
|
@@ -337,6 +337,21 @@ Workflow:
|
|
|
337
337
|
`);
|
|
338
338
|
}
|
|
339
339
|
|
|
340
|
+
// 디렉토리 삭제 (재귀)
|
|
341
|
+
function removeDirRecursive(dirPath) {
|
|
342
|
+
if (!fs.existsSync(dirPath)) return;
|
|
343
|
+
|
|
344
|
+
fs.readdirSync(dirPath).forEach(item => {
|
|
345
|
+
const itemPath = path.join(dirPath, item);
|
|
346
|
+
if (fs.statSync(itemPath).isDirectory()) {
|
|
347
|
+
removeDirRecursive(itemPath);
|
|
348
|
+
} else {
|
|
349
|
+
fs.unlinkSync(itemPath);
|
|
350
|
+
}
|
|
351
|
+
});
|
|
352
|
+
fs.rmdirSync(dirPath);
|
|
353
|
+
}
|
|
354
|
+
|
|
340
355
|
// 프로젝트 업데이트
|
|
341
356
|
async function update() {
|
|
342
357
|
try {
|
|
@@ -351,6 +366,19 @@ async function update() {
|
|
|
351
366
|
|
|
352
367
|
log('🔄 vibe 업데이트 중...\n');
|
|
353
368
|
|
|
369
|
+
// 마이그레이션: .agent/rules/ → .vibe/rules/
|
|
370
|
+
const oldRulesDir = path.join(projectRoot, '.agent/rules');
|
|
371
|
+
const oldAgentDir = path.join(projectRoot, '.agent');
|
|
372
|
+
if (fs.existsSync(oldRulesDir)) {
|
|
373
|
+
log(' 🔄 마이그레이션: .agent/rules/ → .vibe/rules/\n');
|
|
374
|
+
removeDirRecursive(oldRulesDir);
|
|
375
|
+
// .agent 폴더가 비어있으면 삭제
|
|
376
|
+
if (fs.existsSync(oldAgentDir) && fs.readdirSync(oldAgentDir).length === 0) {
|
|
377
|
+
fs.rmdirSync(oldAgentDir);
|
|
378
|
+
}
|
|
379
|
+
log(' ✅ 기존 .agent/rules/ 폴더 정리 완료\n');
|
|
380
|
+
}
|
|
381
|
+
|
|
354
382
|
// .claude/commands 업데이트
|
|
355
383
|
const commandsDir = path.join(claudeDir, 'commands');
|
|
356
384
|
ensureDir(commandsDir);
|
|
@@ -358,11 +386,11 @@ async function update() {
|
|
|
358
386
|
copyDirContents(sourceDir, commandsDir);
|
|
359
387
|
log(' ✅ 슬래시 커맨드 업데이트 완료 (7개)\n');
|
|
360
388
|
|
|
361
|
-
// .
|
|
362
|
-
const rulesSource = path.join(__dirname, '../.
|
|
363
|
-
const rulesTarget = path.join(
|
|
389
|
+
// .vibe/rules/ 업데이트
|
|
390
|
+
const rulesSource = path.join(__dirname, '../.vibe/rules');
|
|
391
|
+
const rulesTarget = path.join(vibeDir, 'rules');
|
|
364
392
|
copyDirRecursive(rulesSource, rulesTarget);
|
|
365
|
-
log(' ✅ 코딩 규칙 업데이트 완료 (.
|
|
393
|
+
log(' ✅ 코딩 규칙 업데이트 완료 (.vibe/rules/)\n');
|
|
366
394
|
|
|
367
395
|
// .claude/agents/ 업데이트
|
|
368
396
|
const agentsDir = path.join(claudeDir, 'agents');
|
|
@@ -412,7 +440,7 @@ async function update() {
|
|
|
412
440
|
|
|
413
441
|
업데이트된 항목:
|
|
414
442
|
- 슬래시 커맨드 (7개)
|
|
415
|
-
- 코딩 규칙 (.
|
|
443
|
+
- 코딩 규칙 (.vibe/rules/)
|
|
416
444
|
- 서브에이전트 (.claude/agents/)
|
|
417
445
|
- Hooks 설정
|
|
418
446
|
- MCP 서버
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@su-record/vibe",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.7",
|
|
4
4
|
"description": "Vibe - Claude Code exclusive SPEC-driven AI coding framework",
|
|
5
5
|
"bin": {
|
|
6
6
|
"vibe": "./bin/vibe"
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
"files": [
|
|
38
38
|
"bin/",
|
|
39
39
|
".claude/",
|
|
40
|
-
".
|
|
40
|
+
".vibe/",
|
|
41
41
|
"templates/",
|
|
42
42
|
"CLAUDE.md",
|
|
43
43
|
"README.md",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|