@su-record/vibe 2.4.71 → 2.4.74

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 (120) hide show
  1. package/CLAUDE.md +216 -215
  2. package/README.md +4 -4
  3. package/agents/research/best-practices-agent.md +13 -13
  4. package/agents/research/codebase-patterns-agent.md +33 -33
  5. package/agents/research/framework-docs-agent.md +23 -23
  6. package/agents/research/security-advisory-agent.md +29 -29
  7. package/agents/review/architecture-reviewer.md +31 -31
  8. package/agents/review/complexity-reviewer.md +21 -21
  9. package/agents/review/data-integrity-reviewer.md +29 -29
  10. package/agents/review/git-history-reviewer.md +24 -24
  11. package/agents/review/performance-reviewer.md +29 -29
  12. package/agents/review/python-reviewer.md +53 -53
  13. package/agents/review/rails-reviewer.md +40 -40
  14. package/agents/review/react-reviewer.md +40 -40
  15. package/agents/review/security-reviewer.md +29 -29
  16. package/agents/review/simplicity-reviewer.md +24 -24
  17. package/agents/review/test-coverage-reviewer.md +31 -31
  18. package/agents/review/typescript-reviewer.md +41 -41
  19. package/commands/vibe.analyze.md +103 -7
  20. package/commands/vibe.reason.md +106 -0
  21. package/commands/vibe.review.md +123 -38
  22. package/commands/vibe.run.md +286 -221
  23. package/commands/vibe.spec.md +293 -173
  24. package/commands/vibe.utils.md +104 -3
  25. package/commands/vibe.verify.md +179 -86
  26. package/dist/cli/detect.js +40 -40
  27. package/dist/cli/detect.js.map +1 -1
  28. package/dist/cli/index.d.ts +1 -1
  29. package/dist/cli/index.js +1 -1
  30. package/dist/cli/llm.js +5 -5
  31. package/dist/cli/llm.js.map +1 -1
  32. package/dist/cli/setup.js +3 -3
  33. package/dist/cli/setup.js.map +1 -1
  34. package/dist/lib/ContextCompressor.js +1 -1
  35. package/dist/lib/ContextCompressor.js.map +1 -1
  36. package/dist/lib/gemini-api.js +12 -12
  37. package/dist/lib/gemini-api.js.map +1 -1
  38. package/dist/lib/gemini-oauth.js +22 -22
  39. package/dist/lib/gemini-oauth.js.map +1 -1
  40. package/dist/lib/gemini-storage.js +3 -3
  41. package/dist/lib/gemini-storage.js.map +1 -1
  42. package/dist/lib/gpt-api.js +11 -11
  43. package/dist/lib/gpt-api.js.map +1 -1
  44. package/dist/lib/gpt-oauth.js +28 -28
  45. package/dist/lib/gpt-oauth.js.map +1 -1
  46. package/dist/lib/gpt-storage.js +3 -3
  47. package/dist/lib/gpt-storage.js.map +1 -1
  48. package/dist/orchestrator/orchestrator.d.ts.map +1 -1
  49. package/dist/orchestrator/orchestrator.js +4 -6
  50. package/dist/orchestrator/orchestrator.js.map +1 -1
  51. package/dist/tools/convention/analyzeComplexity.js +3 -3
  52. package/dist/tools/convention/analyzeComplexity.js.map +1 -1
  53. package/dist/tools/convention/applyQualityRules.js +1 -1
  54. package/dist/tools/convention/applyQualityRules.js.map +1 -1
  55. package/dist/tools/convention/checkCouplingCohesion.js +2 -2
  56. package/dist/tools/convention/checkCouplingCohesion.js.map +1 -1
  57. package/dist/tools/convention/suggestImprovements.js +1 -1
  58. package/dist/tools/convention/suggestImprovements.js.map +1 -1
  59. package/dist/tools/convention/validateCodeQuality.js +1 -1
  60. package/dist/tools/convention/validateCodeQuality.js.map +1 -1
  61. package/dist/tools/memory/autoSaveContext.js +1 -1
  62. package/dist/tools/memory/autoSaveContext.js.map +1 -1
  63. package/dist/tools/memory/createMemoryTimeline.js +27 -27
  64. package/dist/tools/memory/createMemoryTimeline.js.map +1 -1
  65. package/dist/tools/memory/deleteMemory.js +1 -1
  66. package/dist/tools/memory/deleteMemory.js.map +1 -1
  67. package/dist/tools/memory/getMemoryGraph.js +24 -24
  68. package/dist/tools/memory/getMemoryGraph.js.map +1 -1
  69. package/dist/tools/memory/getSessionContext.js +36 -36
  70. package/dist/tools/memory/getSessionContext.js.map +1 -1
  71. package/dist/tools/memory/linkMemories.js +21 -21
  72. package/dist/tools/memory/linkMemories.js.map +1 -1
  73. package/dist/tools/memory/prioritizeMemory.js +1 -1
  74. package/dist/tools/memory/prioritizeMemory.js.map +1 -1
  75. package/dist/tools/memory/restoreSessionContext.js +1 -1
  76. package/dist/tools/memory/restoreSessionContext.js.map +1 -1
  77. package/dist/tools/memory/searchMemories.js +1 -1
  78. package/dist/tools/memory/searchMemories.js.map +1 -1
  79. package/dist/tools/memory/searchMemoriesAdvanced.js +42 -42
  80. package/dist/tools/memory/searchMemoriesAdvanced.js.map +1 -1
  81. package/dist/tools/memory/startSession.js +2 -2
  82. package/dist/tools/memory/startSession.js.map +1 -1
  83. package/dist/tools/memory/updateMemory.js +1 -1
  84. package/dist/tools/memory/updateMemory.js.map +1 -1
  85. package/dist/tools/semantic/analyzeDependencyGraph.js +38 -38
  86. package/dist/tools/semantic/analyzeDependencyGraph.js.map +1 -1
  87. package/dist/tools/semantic/findReferences.js +1 -1
  88. package/dist/tools/semantic/findReferences.js.map +1 -1
  89. package/dist/tools/semantic/findSymbol.js +1 -1
  90. package/dist/tools/semantic/findSymbol.js.map +1 -1
  91. package/dist/tools/time/getCurrentTime.js +1 -1
  92. package/dist/tools/time/getCurrentTime.js.map +1 -1
  93. package/dist/tools/ui/previewUiAscii.js +2 -2
  94. package/dist/tools/ui/previewUiAscii.js.map +1 -1
  95. package/hooks/hooks.json +11 -2
  96. package/hooks/scripts/llm-orchestrate.js +1 -1
  97. package/hooks/scripts/utils.js +31 -6
  98. package/languages/csharp-unity.md +82 -83
  99. package/languages/dart-flutter.md +89 -88
  100. package/languages/go.md +76 -75
  101. package/languages/java-spring.md +85 -84
  102. package/languages/kotlin-android.md +64 -63
  103. package/languages/python-django.md +83 -82
  104. package/languages/python-fastapi.md +82 -81
  105. package/languages/rust.md +75 -74
  106. package/languages/swift-ios.md +73 -72
  107. package/languages/typescript-electron.md +70 -71
  108. package/languages/typescript-nextjs.md +93 -92
  109. package/languages/typescript-node.md +64 -63
  110. package/languages/typescript-nuxt.md +113 -112
  111. package/languages/typescript-react-native.md +82 -81
  112. package/languages/typescript-react.md +76 -75
  113. package/languages/typescript-tauri.md +74 -75
  114. package/languages/typescript-vue.md +73 -72
  115. package/package.json +1 -1
  116. package/skills/git-worktree.md +25 -25
  117. package/skills/multi-llm-orchestration.md +4 -6
  118. package/skills/priority-todos.md +39 -39
  119. package/skills/vibe-capabilities.md +2 -2
  120. package/vibe/config.json +2 -2
@@ -1,23 +1,24 @@
1
- # 🟢 TypeScript + Node.js Backend 품질 규칙
1
+ # TypeScript + Node.js Backend Quality Rules
2
2
 
3
- ## 핵심 원칙 (core에서 상속)
3
+ ## Core Principles (inherited from core)
4
4
 
5
5
  ```markdown
6
- 단일 책임 (SRP)
7
- 중복 제거 (DRY)
8
- 재사용성
9
- ✅ 낮은 복잡도
10
- 함수 ≤ 30줄
11
- 중첩 3단계
12
- Cyclomatic complexity ≤ 10
6
+ # Core Principles (inherited from core)
7
+ Single Responsibility (SRP)
8
+ No Duplication (DRY)
9
+ Reusability
10
+ Low Complexity
11
+ Function <= 30 lines
12
+ Nesting <= 3 levels
13
+ Cyclomatic complexity <= 10
13
14
  ```
14
15
 
15
- ## Express.js 규칙
16
+ ## Express.js Rules
16
17
 
17
- ### 1. 라우터 구조화
18
+ ### 1. Structured Routers
18
19
 
19
20
  ```typescript
20
- // routes/user.routes.ts
21
+ // Good: routes/user.routes.ts
21
22
  import { Router } from 'express';
22
23
  import { UserController } from '@/controllers/user.controller';
23
24
  import { authMiddleware } from '@/middleware/auth';
@@ -36,10 +37,10 @@ router.delete('/:id', authMiddleware, controller.delete);
36
37
  export default router;
37
38
  ```
38
39
 
39
- ### 2. Controller 패턴
40
+ ### 2. Controller Pattern
40
41
 
41
42
  ```typescript
42
- // controllers/user.controller.ts
43
+ // Good: controllers/user.controller.ts
43
44
  import { Request, Response, NextFunction } from 'express';
44
45
  import { UserService } from '@/services/user.service';
45
46
  import { CreateUserDto, UpdateUserDto } from '@/dto/user.dto';
@@ -64,7 +65,7 @@ export class UserController {
64
65
  try {
65
66
  const user = await this.userService.findById(req.params.id);
66
67
  if (!user) {
67
- return res.status(404).json({ message: '사용자를 찾을 수 없습니다' });
68
+ return res.status(404).json({ message: 'User not found' });
68
69
  }
69
70
  res.json(user);
70
71
  } catch (error) {
@@ -84,10 +85,10 @@ export class UserController {
84
85
  }
85
86
  ```
86
87
 
87
- ### 3. Service 레이어
88
+ ### 3. Service Layer
88
89
 
89
90
  ```typescript
90
- // services/user.service.ts
91
+ // Good: services/user.service.ts
91
92
  import { prisma } from '@/lib/prisma';
92
93
  import { CreateUserDto, UpdateUserDto } from '@/dto/user.dto';
93
94
  import { hashPassword } from '@/utils/crypto';
@@ -124,7 +125,7 @@ export class UserService {
124
125
  });
125
126
 
126
127
  if (existing) {
127
- throw new AppError('이미 존재하는 이메일입니다', 409);
128
+ throw new AppError('Email already exists', 409);
128
129
  }
129
130
 
130
131
  const hashedPassword = await hashPassword(dto.password);
@@ -139,12 +140,12 @@ export class UserService {
139
140
  }
140
141
  ```
141
142
 
142
- ## NestJS 규칙
143
+ ## NestJS Rules
143
144
 
144
- ### 1. Module 구조
145
+ ### 1. Module Structure
145
146
 
146
147
  ```typescript
147
- // user/user.module.ts
148
+ // Good: user/user.module.ts
148
149
  import { Module } from '@nestjs/common';
149
150
  import { UserController } from './user.controller';
150
151
  import { UserService } from './user.service';
@@ -161,7 +162,7 @@ export class UserModule {}
161
162
  ### 2. Controller (NestJS)
162
163
 
163
164
  ```typescript
164
- // user/user.controller.ts
165
+ // Good: user/user.controller.ts
165
166
  import {
166
167
  Controller,
167
168
  Get,
@@ -186,19 +187,19 @@ export class UserController {
186
187
  constructor(private readonly userService: UserService) {}
187
188
 
188
189
  @Get()
189
- @ApiOperation({ summary: '사용자 목록 조회' })
190
+ @ApiOperation({ summary: 'Get user list' })
190
191
  async findAll(@Query() query: UserQueryDto) {
191
192
  return this.userService.findAll(query);
192
193
  }
193
194
 
194
195
  @Get(':id')
195
- @ApiOperation({ summary: '사용자 상세 조회' })
196
+ @ApiOperation({ summary: 'Get user detail' })
196
197
  async findOne(@Param('id', ParseIntPipe) id: number) {
197
198
  return this.userService.findById(id);
198
199
  }
199
200
 
200
201
  @Post()
201
- @ApiOperation({ summary: '사용자 생성' })
202
+ @ApiOperation({ summary: 'Create user' })
202
203
  async create(@Body() dto: CreateUserDto) {
203
204
  return this.userService.create(dto);
204
205
  }
@@ -206,7 +207,7 @@ export class UserController {
206
207
  @Put(':id')
207
208
  @UseGuards(JwtAuthGuard)
208
209
  @ApiBearerAuth()
209
- @ApiOperation({ summary: '사용자 수정' })
210
+ @ApiOperation({ summary: 'Update user' })
210
211
  async update(
211
212
  @Param('id', ParseIntPipe) id: number,
212
213
  @Body() dto: UpdateUserDto,
@@ -220,7 +221,7 @@ export class UserController {
220
221
  ### 3. Service (NestJS)
221
222
 
222
223
  ```typescript
223
- // user/user.service.ts
224
+ // Good: user/user.service.ts
224
225
  import { Injectable, NotFoundException, ConflictException } from '@nestjs/common';
225
226
  import { UserRepository } from './user.repository';
226
227
  import { CreateUserDto, UpdateUserDto } from './dto';
@@ -237,7 +238,7 @@ export class UserService {
237
238
  async findById(id: number) {
238
239
  const user = await this.userRepository.findById(id);
239
240
  if (!user) {
240
- throw new NotFoundException('사용자를 찾을 수 없습니다');
241
+ throw new NotFoundException('User not found');
241
242
  }
242
243
  return user;
243
244
  }
@@ -245,7 +246,7 @@ export class UserService {
245
246
  async create(dto: CreateUserDto) {
246
247
  const existing = await this.userRepository.findByEmail(dto.email);
247
248
  if (existing) {
248
- throw new ConflictException('이미 존재하는 이메일입니다');
249
+ throw new ConflictException('Email already exists');
249
250
  }
250
251
 
251
252
  const hashedPassword = await bcrypt.hash(dto.password, 10);
@@ -257,24 +258,24 @@ export class UserService {
257
258
  }
258
259
  ```
259
260
 
260
- ### 4. DTO Validation
261
+ ### 4. DTO and Validation
261
262
 
262
263
  ```typescript
263
- // user/dto/create-user.dto.ts
264
+ // Good: user/dto/create-user.dto.ts
264
265
  import { IsEmail, IsString, MinLength, IsOptional } from 'class-validator';
265
266
  import { ApiProperty, ApiPropertyOptional } from '@nestjs/swagger';
266
267
 
267
268
  export class CreateUserDto {
268
269
  @ApiProperty({ example: 'user@example.com' })
269
- @IsEmail({}, { message: '올바른 이메일 형식이 아닙니다' })
270
+ @IsEmail({}, { message: 'Invalid email format' })
270
271
  email: string;
271
272
 
272
273
  @ApiProperty({ example: 'password123' })
273
274
  @IsString()
274
- @MinLength(8, { message: '비밀번호는 8 이상이어야 합니다' })
275
+ @MinLength(8, { message: 'Password must be at least 8 characters' })
275
276
  password: string;
276
277
 
277
- @ApiProperty({ example: '홍길동' })
278
+ @ApiProperty({ example: 'John Doe' })
278
279
  @IsString()
279
280
  name: string;
280
281
 
@@ -285,12 +286,12 @@ export class CreateUserDto {
285
286
  }
286
287
  ```
287
288
 
288
- ## 공통 규칙
289
+ ## Common Rules
289
290
 
290
- ### 에러 처리
291
+ ### Error Handling
291
292
 
292
293
  ```typescript
293
- // utils/errors.ts
294
+ // Good: utils/errors.ts
294
295
  export class AppError extends Error {
295
296
  constructor(
296
297
  message: string,
@@ -302,7 +303,7 @@ export class AppError extends Error {
302
303
  }
303
304
  }
304
305
 
305
- // middleware/error.middleware.ts
306
+ // Good: middleware/error.middleware.ts
306
307
  import { Request, Response, NextFunction } from 'express';
307
308
  import { AppError } from '@/utils/errors';
308
309
 
@@ -324,7 +325,7 @@ export function errorHandler(
324
325
 
325
326
  res.status(500).json({
326
327
  success: false,
327
- message: '서버 오류가 발생했습니다',
328
+ message: 'Server error occurred',
328
329
  });
329
330
  }
330
331
  ```
@@ -332,14 +333,14 @@ export function errorHandler(
332
333
  ### Validation (Zod)
333
334
 
334
335
  ```typescript
335
- // schemas/user.schema.ts
336
+ // Good: schemas/user.schema.ts
336
337
  import { z } from 'zod';
337
338
 
338
339
  export const createUserSchema = z.object({
339
340
  body: z.object({
340
- email: z.string().email('올바른 이메일 형식이 아닙니다'),
341
- password: z.string().min(8, '비밀번호는 8 이상이어야 합니다'),
342
- name: z.string().min(1, '이름을 입력해주세요'),
341
+ email: z.string().email('Invalid email format'),
342
+ password: z.string().min(8, 'Password must be at least 8 characters'),
343
+ name: z.string().min(1, 'Name is required'),
343
344
  phone: z.string().optional(),
344
345
  }),
345
346
  });
@@ -347,29 +348,29 @@ export const createUserSchema = z.object({
347
348
  export type CreateUserInput = z.infer<typeof createUserSchema>['body'];
348
349
  ```
349
350
 
350
- ## 파일 구조
351
+ ## File Structure
351
352
 
352
- ```
353
+ ```text
353
354
  src/
354
- ├── controllers/ # 라우트 핸들러
355
- ├── services/ # 비즈니스 로직
356
- ├── repositories/ # 데이터 액세스
355
+ ├── controllers/ # Route handlers
356
+ ├── services/ # Business logic
357
+ ├── repositories/ # Data access
357
358
  ├── dto/ # Data Transfer Objects
358
- ├── schemas/ # Validation 스키마 (Zod)
359
- ├── middleware/ # Express 미들웨어
360
- ├── routes/ # 라우터 정의
361
- ├── utils/ # 유틸리티
362
- ├── types/ # TypeScript 타입
363
- ├── config/ # 설정
364
- └── lib/ # 외부 라이브러리 래퍼
359
+ ├── schemas/ # Validation schemas (Zod)
360
+ ├── middleware/ # Express middleware
361
+ ├── routes/ # Router definitions
362
+ ├── utils/ # Utilities
363
+ ├── types/ # TypeScript types
364
+ ├── config/ # Configuration
365
+ └── lib/ # External library wrappers
365
366
  ```
366
367
 
367
- ## 체크리스트
368
+ ## Checklist
368
369
 
369
- - [ ] Controller Service Repository 레이어 분리
370
- - [ ] DTO로 입출력 타입 정의
371
- - [ ] Zod/class-validator로 입력 검증
372
- - [ ] 커스텀 에러 클래스 사용
373
- - [ ] 에러 미들웨어로 중앙 처리
374
- - [ ] `any` 타입 사용 금지
375
- - [ ] async/await + try/catch 또는 에러 미들웨어
370
+ - [ ] Controller -> Service -> Repository layer separation
371
+ - [ ] Define input/output types with DTO
372
+ - [ ] Validate input with Zod/class-validator
373
+ - [ ] Use custom error class
374
+ - [ ] Centralize error handling with error middleware
375
+ - [ ] No `any` type usage
376
+ - [ ] async/await + try/catch or error middleware