@su-record/vibe 0.4.2 → 0.4.4

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.
@@ -1,123 +1,235 @@
1
1
  ---
2
- description: Analyze project (code quality, architecture, dependencies)
3
- argument-hint: --code or --deps or --arch (optional)
2
+ description: Analyze project or specific feature/module
3
+ argument-hint: "기능명" or --code or --deps or --arch (optional)
4
4
  ---
5
5
 
6
6
  # /vibe.analyze
7
7
 
8
- 프로젝트를 분석합니다 (코드 품질, 아키텍처, 의존성).
8
+ 프로젝트 또는 특정 기능/모듈을 분석합니다.
9
9
 
10
10
  ## Usage
11
11
 
12
12
  ```
13
- /vibe.analyze
14
- /vibe.analyze --code
15
- /vibe.analyze --deps
16
- /vibe.analyze --arch
13
+ /vibe.analyze # 프로젝트 전체 품질 분석
14
+ /vibe.analyze "로그인" # 로그인 관련 코드 탐색 + 컨텍스트 수집
15
+ /vibe.analyze --code # 코드 품질 분석만
16
+ /vibe.analyze --deps # 의존성 분석만
17
+ /vibe.analyze --arch # 아키텍처 분석만
17
18
  ```
18
19
 
19
- ## Process
20
+ ## ⚠️ 컨텍스트 리셋
20
21
 
21
- ### 1. 분석 범위 확인
22
+ **이 명령어가 실행되면 이전 대화 내용은 무시합니다.**
23
+ - 새 세션처럼 처음부터 코드를 탐색하고 분석
24
+ - 오직 이 분석에서 새로 수집한 정보만 기반으로 대화
22
25
 
23
- 사용자가 지정한 옵션에 따라 분석 범위를 결정합니다:
26
+ ---
27
+
28
+ ## Mode 1: 기능/모듈 분석 (`/vibe.analyze "기능명"`)
29
+
30
+ ### 목표
31
+
32
+ 사용자가 요청한 기능/모듈과 관련된 **모든 소스코드를 탐색**하고 **플로우를 분석**하여:
33
+ 1. 현재 구현 상태 파악
34
+ 2. 코드 구조와 의존성 이해
35
+ 3. 이후 개발/수정 요청에 즉시 대응 가능한 컨텍스트 확보
36
+
37
+ ### Process
38
+
39
+ #### 1. 요청 분석
40
+
41
+ 사용자 요청에서 핵심 키워드 추출:
42
+ - 기능명 (예: 로그인, 피드, 결제)
43
+ - 동작 (예: 작성, 조회, 수정, 삭제)
44
+ - 범위 (예: 백엔드만, 프론트엔드만, 전체)
45
+
46
+ #### 2. 프로젝트 구조 파악
47
+
48
+ `CLAUDE.md`, `package.json`, `pyproject.toml` 등을 읽어 기술 스택 확인:
49
+
50
+ **백엔드:**
51
+ - FastAPI/Django: `app/api/`, `app/services/`, `app/models/`
52
+ - Express/NestJS: `src/controllers/`, `src/services/`, `src/models/`
53
+
54
+ **프론트엔드:**
55
+ - React/Next.js: `src/components/`, `src/pages/`, `src/hooks/`
56
+ - Flutter: `lib/screens/`, `lib/services/`, `lib/providers/`
57
+
58
+ #### 3. 관련 코드 탐색
59
+
60
+ **탐색 전략:**
61
+ 1. **Glob**으로 관련 파일 목록 수집
62
+ 2. **Grep**으로 키워드 기반 코드 위치 파악
63
+ 3. **Read**로 핵심 파일 상세 분석
64
+ 4. 필요시 **Task (Explore)** 에이전트로 병렬 탐색
65
+
66
+ #### 4. 플로우 분석
67
+
68
+ **API 플로우:**
69
+ - 엔드포인트 URL 및 HTTP 메서드
70
+ - 요청/응답 스키마
71
+ - 인증/권한 요구사항
72
+
73
+ **비즈니스 로직:**
74
+ - 핵심 메서드와 역할
75
+ - 유효성 검증 규칙
76
+ - 외부 서비스 연동
77
+
78
+ **데이터 플로우:**
79
+ - 관련 테이블/모델
80
+ - 관계 (1:N, N:M)
81
+ - 주요 쿼리 패턴
82
+
83
+ #### 5. 분석 결과 출력
84
+
85
+ ```markdown
86
+ ## 📊 [기능명] 분석 결과
87
+
88
+ ### 개요
89
+ - **기능 설명**: [한 줄 요약]
90
+ - **구현 상태**: [완료/진행중/미구현]
91
+ - **관련 파일 수**: N개
92
+
93
+ ### 구조
94
+
95
+ #### API 엔드포인트
96
+ | 메서드 | 경로 | 설명 | 인증 |
97
+ |--------|------|------|------|
98
+ | POST | /api/v1/auth/login | 로그인 | - |
99
+
100
+ #### 핵심 서비스
101
+ - `auth_service.py`: 인증 로직
102
+ - `login()`: 로그인 처리
103
+ - `verify_token()`: 토큰 검증
104
+
105
+ #### 데이터 모델
106
+ - `User`: 사용자 테이블
107
+ - 주요 필드: id, email, password_hash
108
+ - 관계: Session (1:N)
109
+
110
+ ### 플로우 다이어그램
111
+ [텍스트 기반 플로우 설명]
112
+
113
+ ### 참고 파일 목록
114
+ - src/api/auth/router.py:L10-50
115
+ - src/services/auth_service.py:L1-100
116
+ ```
117
+
118
+ #### 6. 개발 규칙 확인
119
+
120
+ `.agent/rules/`에서 관련 규칙 로드:
121
+ - `core/quick-start.md` - 5가지 핵심 원칙
122
+ - `standards/complexity-metrics.md` - 복잡도 기준
123
+ - `quality/checklist.md` - 품질 체크리스트
124
+
125
+ 규칙 위반 사항이 있으면 함께 출력.
126
+
127
+ #### 7. 완료
128
+
129
+ 분석 완료 후:
130
+ 1. 분석 결과 요약 출력
131
+ 2. "이제 어떤 작업을 도와드릴까요?" 질문
132
+ 3. 이후 개발/수정 요청에 수집된 컨텍스트 활용
133
+
134
+ ---
135
+
136
+ ## Mode 2: 프로젝트 품질 분석 (옵션 없음 또는 --code/--deps/--arch)
137
+
138
+ ### 분석 범위
24
139
 
25
140
  - **기본** (`/vibe.analyze`): 전체 분석 (코드 + 의존성 + 아키텍처)
26
141
  - **--code**: 코드 품질 분석만
27
142
  - **--deps**: 의존성 분석만
28
143
  - **--arch**: 아키텍처 분석만
29
144
 
30
- ### 2. MCP 도구 사용
145
+ ### MCP 도구 사용
31
146
 
32
- 다음 MCP 도구를 사용합니다 (`@su-record/hi-ai` 기반):
147
+ `@su-record/hi-ai` 기반:
33
148
 
34
149
  #### 코드 품질 분석 (--code)
35
- - `mcp__su-record-hi-ai__analyze_complexity`: 복잡도 분석
36
- - `mcp__su-record-hi-ai__validate_code_quality`: 코드 품질 검증
37
- - `mcp__su-record-hi-ai__check_coupling_cohesion`: 결합도/응집도 체크
150
+ - `analyze_complexity`: 복잡도 분석
151
+ - `validate_code_quality`: 코드 품질 검증
152
+ - `check_coupling_cohesion`: 결합도/응집도 체크
38
153
 
39
154
  #### 의존성 분석 (--deps)
40
155
  - `package.json` / `pyproject.toml` / `pubspec.yaml` 읽기
41
156
  - 버전 충돌, 보안 취약점, 업데이트 필요 패키지 분석
42
157
 
43
158
  #### 아키텍처 분석 (--arch)
44
- - `mcp__su-record-hi-ai__find_symbol`: 핵심 모듈 찾기
45
- - `mcp__su-record-hi-ai__find_references`: 모듈 간 의존성 파악
159
+ - `find_symbol`: 핵심 모듈 찾기
160
+ - `find_references`: 모듈 간 의존성 파악
46
161
  - 순환 의존성, 레이어 위반 검출
47
162
 
48
- ### 3. 분석 리포트 생성
163
+ ### 분석 리포트
49
164
 
50
- `.vibe/reports/analysis-{date}.md` 파일에 분석 결과 저장:
165
+ `.vibe/reports/analysis-{date}.md`:
51
166
 
52
167
  ```markdown
53
168
  # 프로젝트 분석 리포트
54
169
 
55
170
  ## 개요
56
- - 분석 일시: 2025-11-17 15:30
57
- - 분석 범위: 전체 (코드 + 의존성 + 아키텍처)
171
+ - 분석 일시: 2025-01-06 12:00
172
+ - 분석 범위: 전체
58
173
 
59
174
  ## 코드 품질 (85/100)
60
175
  - 평균 복잡도: 8.2 (양호)
61
176
  - 높은 복잡도 파일: 3개
62
- - src/service.py (CC: 15)
63
- - src/utils.py (CC: 12)
64
177
 
65
178
  ## 의존성 (92/100)
66
179
  - 총 패키지: 42개
67
180
  - 업데이트 필요: 3개
68
- - express: 4.17.1 → 4.18.2
69
- - lodash: 4.17.20 → 4.17.21 (보안)
70
181
 
71
182
  ## 아키텍처 (78/100)
72
183
  - 순환 의존성: 2개 발견
73
- - A → B → C → A
74
184
  - 레이어 위반: 1개
75
- - Controller가 직접 DB 접근
76
185
 
77
186
  ## 개선 제안
78
- 1. service.py 리팩토링 (복잡도 15 → 10 이하)
187
+ 1. service.py 리팩토링
79
188
  2. lodash 보안 패치 적용
80
- 3. 순환 의존성 제거
81
189
  ```
82
190
 
83
- ### 4. 개선 제안
84
-
85
- 분석 결과를 바탕으로 구체적인 개선 방안 제시:
86
- - 리팩토링이 필요한 파일 목록
87
- - 의존성 업데이트 명령어
88
- - 아키텍처 개선 방향
191
+ ---
89
192
 
90
193
  ## Example
91
194
 
195
+ ### 기능 분석
92
196
  ```
93
- User: /vibe.analyze --code
197
+ User: /vibe.analyze "로그인"
94
198
 
95
- Claude: 코드 품질 분석을 시작합니다...
199
+ Claude: 로그인 관련 코드를 분석합니다...
96
200
 
97
- [MCP 도구 사용]
98
- - analyze_complexity 실행 중...
99
- - validate_code_quality 실행 중...
100
- - check_coupling_cohesion 실행 중...
201
+ [Glob, Grep, Read 도구로 코드 탐색]
101
202
 
102
- 분석 완료!
203
+ 📊 로그인 분석 결과
204
+
205
+ ### 개요
206
+ - 기능 설명: JWT 기반 사용자 인증
207
+ - 구현 상태: 완료
208
+ - 관련 파일: 8개
209
+
210
+ ### API 엔드포인트
211
+ | POST | /api/v1/auth/login | 로그인 | - |
212
+ | POST | /api/v1/auth/refresh | 토큰 갱신 | Required |
213
+
214
+ [분석 계속...]
215
+
216
+ 이제 어떤 작업을 도와드릴까요?
217
+ - 리팩토링
218
+ - 신규 기능 추가
219
+ - 버그 수정
220
+ ```
221
+
222
+ ### 품질 분석
223
+ ```
224
+ User: /vibe.analyze --code
225
+
226
+ Claude: 코드 품질 분석을 시작합니다...
103
227
 
104
228
  📊 코드 품질 점수: 85/100 (B+)
105
229
 
106
230
  **주요 발견사항:**
107
231
  - 높은 복잡도: src/service.py (CC: 15)
108
- - 낮은 응집도: src/utils.py (응집도: 0.3)
109
- - 강한 결합: Controller ↔ Service (결합도: 0.8)
110
232
 
111
233
  **개선 제안:**
112
234
  1. src/service.py를 3개 모듈로 분리
113
- 2. src/utils.py의 관련 없는 함수 분리
114
- 3. Dependency Injection 패턴 도입
115
-
116
- 상세 리포트: .vibe/reports/analysis-2025-11-17.md
117
235
  ```
118
-
119
- ## Notes
120
-
121
- - MCP 서버(`@su-record/hi-ai`)가 설치되어 있어야 합니다
122
- - 대규모 프로젝트는 분석에 시간이 걸릴 수 있습니다 (1-5분)
123
- - 분석 결과는 `.vibe/reports/` 폴더에 저장됩니다
@@ -37,7 +37,10 @@
37
37
  "Bash(node:*)",
38
38
  "Bash(xargs basename:*)",
39
39
  "Bash(git restore:*)",
40
- "Bash(npm version:*)"
40
+ "Bash(npm version:*)",
41
+ "Bash(npx @su-record/vibe@latest update)",
42
+ "Bash(gh release:*)",
43
+ "Bash(npx @su-record/vibe@latest init:*)"
41
44
  ],
42
45
  "deny": [],
43
46
  "ask": []
package/bin/vibe CHANGED
@@ -208,6 +208,7 @@ function showHelp() {
208
208
 
209
209
  Commands:
210
210
  vibe init [project] Initialize vibe in current/new project
211
+ vibe update Update vibe settings (commands, rules, hooks)
211
212
  vibe help Show this message
212
213
  vibe version Show version
213
214
 
@@ -231,6 +232,82 @@ Workflow:
231
232
  `);
232
233
  }
233
234
 
235
+ // 프로젝트 업데이트
236
+ async function update() {
237
+ try {
238
+ const projectRoot = process.cwd();
239
+ const vibeDir = path.join(projectRoot, '.vibe');
240
+ const claudeDir = path.join(projectRoot, '.claude');
241
+
242
+ if (!fs.existsSync(vibeDir)) {
243
+ console.log('❌ vibe 프로젝트가 아닙니다. 먼저 vibe init을 실행하세요.');
244
+ return;
245
+ }
246
+
247
+ console.log('🔄 vibe 업데이트 중...\n');
248
+
249
+ // .claude/commands 업데이트
250
+ const commandsDir = path.join(claudeDir, 'commands');
251
+ ensureDir(commandsDir);
252
+ const sourceDir = path.join(__dirname, '../.claude/commands');
253
+ copyDirContents(sourceDir, commandsDir);
254
+ console.log(' ✅ 슬래시 커맨드 업데이트 완료 (7개)\n');
255
+
256
+ // .agent/rules/ 업데이트
257
+ const rulesSource = path.join(__dirname, '../.agent/rules');
258
+ const rulesTarget = path.join(projectRoot, '.agent/rules');
259
+ copyDirRecursive(rulesSource, rulesTarget);
260
+ console.log(' ✅ 코딩 규칙 업데이트 완료 (.agent/rules/)\n');
261
+
262
+ // .claude/agents/ 업데이트
263
+ const agentsDir = path.join(claudeDir, 'agents');
264
+ ensureDir(agentsDir);
265
+ const agentsSourceDir = path.join(__dirname, '../.claude/agents');
266
+ copyDirContents(agentsSourceDir, agentsDir);
267
+ console.log(' ✅ 서브에이전트 업데이트 완료 (.claude/agents/)\n');
268
+
269
+ // settings.local.json에 hooks 병합
270
+ const settingsPath = path.join(claudeDir, 'settings.local.json');
271
+ const hooksTemplate = path.join(__dirname, '../templates/hooks-template.json');
272
+
273
+ if (fs.existsSync(hooksTemplate)) {
274
+ const vibeHooks = JSON.parse(fs.readFileSync(hooksTemplate, 'utf-8'));
275
+
276
+ if (fs.existsSync(settingsPath)) {
277
+ // 기존 설정에 hooks 병합
278
+ const existingSettings = JSON.parse(fs.readFileSync(settingsPath, 'utf-8'));
279
+
280
+ if (!existingSettings.hooks) {
281
+ existingSettings.hooks = vibeHooks.hooks;
282
+ fs.writeFileSync(settingsPath, JSON.stringify(existingSettings, null, 2));
283
+ console.log(' ✅ Hooks 설정 추가 완료\n');
284
+ } else {
285
+ console.log(' ℹ️ Hooks 설정 이미 존재\n');
286
+ }
287
+ } else {
288
+ // 새로 생성
289
+ fs.copyFileSync(hooksTemplate, settingsPath);
290
+ console.log(' ✅ Hooks 설정 생성 완료\n');
291
+ }
292
+ }
293
+
294
+ const packageJson = require('../package.json');
295
+ console.log(`
296
+ ✅ vibe 업데이트 완료! (v${packageJson.version})
297
+
298
+ 업데이트된 항목:
299
+ - 슬래시 커맨드 (7개)
300
+ - 코딩 규칙 (.agent/rules/)
301
+ - 서브에이전트 (.claude/agents/)
302
+ - Hooks 설정
303
+ `);
304
+
305
+ } catch (error) {
306
+ console.error('❌ 업데이트 실패:', error.message);
307
+ process.exit(1);
308
+ }
309
+ }
310
+
234
311
  // 버전 정보
235
312
  function showVersion() {
236
313
  const packageJson = require('../package.json');
@@ -243,6 +320,10 @@ switch (command) {
243
320
  init(args[1]);
244
321
  break;
245
322
 
323
+ case 'update':
324
+ update();
325
+ break;
326
+
246
327
  case 'version':
247
328
  case '-v':
248
329
  case '--version':
@@ -262,6 +343,7 @@ switch (command) {
262
343
 
263
344
  사용 가능한 명령어:
264
345
  vibe init 프로젝트 초기화
346
+ vibe update 설정 업데이트
265
347
  vibe help 도움말
266
348
  vibe version 버전 정보
267
349
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@su-record/vibe",
3
- "version": "0.4.2",
3
+ "version": "0.4.4",
4
4
  "description": "Vibe - Claude Code exclusive SPEC-driven AI coding framework",
5
5
  "bin": {
6
6
  "vibe": "./bin/vibe"