@su-record/vibe 2.0.0 β†’ 2.0.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 (65) hide show
  1. package/.claude/agents/explorer.md +48 -48
  2. package/.claude/agents/implementer.md +53 -53
  3. package/.claude/agents/searcher.md +54 -54
  4. package/.claude/agents/simplifier.md +119 -119
  5. package/.claude/agents/tester.md +49 -49
  6. package/.claude/commands/vibe.analyze.md +239 -239
  7. package/.claude/commands/vibe.continue.md +88 -88
  8. package/.claude/commands/vibe.diagram.md +178 -178
  9. package/.claude/commands/vibe.reason.md +306 -306
  10. package/.claude/commands/vibe.run.md +760 -760
  11. package/.claude/commands/vibe.spec.md +339 -339
  12. package/.claude/commands/vibe.tool.md +153 -153
  13. package/.claude/commands/vibe.ui.md +137 -137
  14. package/.claude/commands/vibe.verify.md +238 -238
  15. package/.claude/settings.json +152 -152
  16. package/.claude/settings.local.json +4 -57
  17. package/.vibe/config.json +9 -0
  18. package/.vibe/constitution.md +184 -184
  19. package/.vibe/rules/core/communication-guide.md +104 -104
  20. package/.vibe/rules/core/development-philosophy.md +52 -52
  21. package/.vibe/rules/core/quick-start.md +120 -120
  22. package/.vibe/rules/quality/bdd-contract-testing.md +388 -388
  23. package/.vibe/rules/quality/checklist.md +276 -276
  24. package/.vibe/rules/quality/testing-strategy.md +437 -437
  25. package/.vibe/rules/standards/anti-patterns.md +369 -369
  26. package/.vibe/rules/standards/code-structure.md +291 -291
  27. package/.vibe/rules/standards/complexity-metrics.md +312 -312
  28. package/.vibe/rules/standards/naming-conventions.md +198 -198
  29. package/.vibe/rules/tools/mcp-hi-ai-guide.md +665 -665
  30. package/.vibe/rules/tools/mcp-workflow.md +51 -51
  31. package/.vibe/setup.sh +31 -31
  32. package/CLAUDE.md +122 -122
  33. package/LICENSE +21 -21
  34. package/README.md +568 -568
  35. package/dist/cli/index.d.ts.map +1 -1
  36. package/dist/cli/index.js +391 -406
  37. package/dist/cli/index.js.map +1 -1
  38. package/dist/lib/MemoryManager.js +92 -92
  39. package/dist/lib/PythonParser.js +108 -108
  40. package/dist/lib/gemini-mcp.js +15 -15
  41. package/dist/lib/gemini-oauth.js +35 -35
  42. package/dist/lib/gpt-mcp.js +17 -17
  43. package/dist/lib/gpt-oauth.js +44 -44
  44. package/dist/tools/analytics/getUsageAnalytics.js +12 -12
  45. package/dist/tools/memory/createMemoryTimeline.js +10 -10
  46. package/dist/tools/memory/getMemoryGraph.js +12 -12
  47. package/dist/tools/memory/getSessionContext.js +9 -9
  48. package/dist/tools/memory/linkMemories.js +14 -14
  49. package/dist/tools/memory/listMemories.js +4 -4
  50. package/dist/tools/memory/recallMemory.js +4 -4
  51. package/dist/tools/memory/saveMemory.js +4 -4
  52. package/dist/tools/memory/searchMemoriesAdvanced.js +22 -22
  53. package/dist/tools/planning/generatePrd.js +46 -46
  54. package/dist/tools/prompt/enhancePromptGemini.js +160 -160
  55. package/dist/tools/reasoning/applyReasoningFramework.js +56 -56
  56. package/dist/tools/semantic/analyzeDependencyGraph.js +12 -12
  57. package/package.json +67 -67
  58. package/templates/constitution-template.md +184 -184
  59. package/templates/contract-backend-template.md +517 -517
  60. package/templates/contract-frontend-template.md +594 -594
  61. package/templates/feature-template.md +96 -96
  62. package/templates/hooks-template.json +103 -103
  63. package/templates/spec-template.md +199 -199
  64. package/dist/lib/vibe-mcp.d.ts.map +0 -1
  65. package/dist/lib/vibe-mcp.js.map +0 -1
@@ -1,198 +1,198 @@
1
- # πŸ“– μžλ™ 넀이밍 κ·œμΉ™
2
-
3
- ## κΈ°λ³Έ κ·œμΉ™
4
-
5
- ```
6
- λ³€μˆ˜: λͺ…사 (userList, userData)
7
- ν•¨μˆ˜: 동사+λͺ…사 (fetchData, updateUser)
8
- 이벀트: handle 접두사 (handleClick, handleSubmit)
9
- Boolean: is/has/can 접두사 (isLoading, hasError, canEdit)
10
- μƒμˆ˜: UPPER_SNAKE_CASE (MAX_RETRY_COUNT, API_TIMEOUT)
11
- μ»΄ν¬λ„ŒνŠΈ: PascalCase (UserProfile, HeaderSection)
12
- ν›…: use 접두사 (useUserData, useAuth)
13
- ```
14
-
15
- ## λ³€μˆ˜ 넀이밍
16
-
17
- ### βœ… 쒋은 예
18
-
19
- ```typescript
20
- const userList = [...];
21
- const totalAmount = 0;
22
- const currentPage = 1;
23
- ```
24
-
25
- ### ❌ λ‚˜μœ 예
26
-
27
- ```typescript
28
- const list = [...]; // λ¬΄μ—‡μ˜ 리슀트?
29
- const total = 0; // λ¬΄μ—‡μ˜ 총합?
30
- const page = 1; // λͺ…ν™•ν•˜μ§€ μ•ŠμŒ
31
- ```
32
-
33
- ## ν•¨μˆ˜ 넀이밍
34
-
35
- ### βœ… 쒋은 예
36
-
37
- ```typescript
38
- function fetchUserData() { }
39
- function updateProfile() { }
40
- function validateEmail() { }
41
- function calculateTotal() { }
42
- ```
43
-
44
- ### ❌ λ‚˜μœ 예
45
-
46
- ```typescript
47
- function user() { } // 동사 μ—†μŒ
48
- function data() { } // 뢈λͺ…ν™•
49
- function process() { } // 무엇을 처리?
50
- ```
51
-
52
- ## 이벀트 ν•Έλ“€λŸ¬
53
-
54
- ### βœ… 쒋은 예
55
-
56
- ```typescript
57
- function handleClick() { }
58
- function handleSubmit() { }
59
- function handleInputChange() { }
60
- ```
61
-
62
- ### ❌ λ‚˜μœ 예
63
-
64
- ```typescript
65
- function onClick() { } // handle 접두사 ꢌμž₯
66
- function submit() { } // μ΄λ²€νŠΈμž„μ΄ 뢈λͺ…ν™•
67
- function change() { } // λ¬΄μ—‡μ˜ λ³€κ²½?
68
- ```
69
-
70
- ## Boolean λ³€μˆ˜
71
-
72
- ### βœ… 쒋은 예
73
-
74
- ```typescript
75
- const isLoading = false;
76
- const hasError = false;
77
- const canEdit = true;
78
- const shouldUpdate = false;
79
- ```
80
-
81
- ### ❌ λ‚˜μœ 예
82
-
83
- ```typescript
84
- const loading = false; // is 접두사 ꢌμž₯
85
- const error = false; // has ꢌμž₯
86
- const editable = true; // can ꢌμž₯
87
- ```
88
-
89
- ## μƒμˆ˜
90
-
91
- ### βœ… 쒋은 예
92
-
93
- ```typescript
94
- const MAX_RETRY_COUNT = 3;
95
- const API_TIMEOUT_MS = 5000;
96
- const DEFAULT_PAGE_SIZE = 20;
97
- ```
98
-
99
- ### ❌ λ‚˜μœ 예
100
-
101
- ```typescript
102
- const maxRetry = 3; // UPPER_SNAKE_CASE μ‚¬μš©
103
- const timeout = 5000; // λ‹¨μœ„ λͺ…μ‹œ λΆ€μ‘±
104
- ```
105
-
106
- ## μ»΄ν¬λ„ŒνŠΈ & 클래슀
107
-
108
- ### βœ… 쒋은 예
109
-
110
- ```typescript
111
- class UserProfile { }
112
- class DataRepository { }
113
- function ProfileCard() { }
114
- function NavigationBar() { }
115
- ```
116
-
117
- ### ❌ λ‚˜μœ 예
118
-
119
- ```typescript
120
- class userProfile { } // PascalCase μ‚¬μš©
121
- class data { } // 뢈λͺ…ν™•
122
- function profile() { } // PascalCase ꢌμž₯
123
- ```
124
-
125
- ## μ»€μŠ€ν…€ ν›… (React)
126
-
127
- ### βœ… 쒋은 예
128
-
129
- ```typescript
130
- function useUserData() { }
131
- function useAuth() { }
132
- function useLocalStorage() { }
133
- ```
134
-
135
- ### ❌ λ‚˜μœ 예
136
-
137
- ```typescript
138
- function getUserData() { } // use 접두사 ν•„μˆ˜
139
- function auth() { } // use 접두사 ν•„μˆ˜
140
- ```
141
-
142
- ## νƒ€μž… & μΈν„°νŽ˜μ΄μŠ€ (TypeScript)
143
-
144
- ### βœ… 쒋은 예
145
-
146
- ```typescript
147
- interface User { }
148
- type UserRole = 'admin' | 'user';
149
- interface ApiResponse<T> { }
150
- ```
151
-
152
- ### ❌ λ‚˜μœ 예
153
-
154
- ```typescript
155
- interface IUser { } // I 접두사 λΆˆν•„μš” (TypeScript)
156
- type user = { }; // PascalCase μ‚¬μš©
157
- ```
158
-
159
- ## 파일 넀이밍
160
-
161
- ### βœ… 쒋은 예
162
-
163
- ```
164
- user-profile.component.tsx
165
- user.service.ts
166
- auth.utils.ts
167
- constants.ts
168
- ```
169
-
170
- ### ❌ λ‚˜μœ 예
171
-
172
- ```
173
- UserProfile.tsx // kebab-case ꢌμž₯
174
- user_service.ts // kebab-case ꢌμž₯
175
- utils.ts // 뢈λͺ…ν™•
176
- ```
177
-
178
- ## μ•½μ–΄ μ‚¬μš© 원칙
179
-
180
- - 일반적인 μ•½μ–΄λ§Œ μ‚¬μš© (URL, API, ID, HTML, CSS)
181
- - ν”„λ‘œμ νŠΈ νŠΉμ • μ•½μ–΄λŠ” λ¬Έμ„œν™” ν•„μˆ˜
182
- - μ˜λ―Έκ°€ λͺ…ν™•ν•˜μ§€ μ•ŠμœΌλ©΄ 전체 단어 μ‚¬μš©
183
-
184
- ### βœ… 쒋은 예
185
-
186
- ```typescript
187
- const userId = '123';
188
- const apiEndpoint = '/users';
189
- const htmlContent = '<div>';
190
- ```
191
-
192
- ### ❌ λ‚˜μœ 예
193
-
194
- ```typescript
195
- const usrId = '123'; // 뢈λͺ…ν™•ν•œ μ•½μ–΄
196
- const endpt = '/users'; // κ³Όλ„ν•œ μΆ•μ•½
197
- const cnt = '<div>'; // content둜 λͺ…ν™•νžˆ
198
- ```
1
+ # πŸ“– μžλ™ 넀이밍 κ·œμΉ™
2
+
3
+ ## κΈ°λ³Έ κ·œμΉ™
4
+
5
+ ```
6
+ λ³€μˆ˜: λͺ…사 (userList, userData)
7
+ ν•¨μˆ˜: 동사+λͺ…사 (fetchData, updateUser)
8
+ 이벀트: handle 접두사 (handleClick, handleSubmit)
9
+ Boolean: is/has/can 접두사 (isLoading, hasError, canEdit)
10
+ μƒμˆ˜: UPPER_SNAKE_CASE (MAX_RETRY_COUNT, API_TIMEOUT)
11
+ μ»΄ν¬λ„ŒνŠΈ: PascalCase (UserProfile, HeaderSection)
12
+ ν›…: use 접두사 (useUserData, useAuth)
13
+ ```
14
+
15
+ ## λ³€μˆ˜ 넀이밍
16
+
17
+ ### βœ… 쒋은 예
18
+
19
+ ```typescript
20
+ const userList = [...];
21
+ const totalAmount = 0;
22
+ const currentPage = 1;
23
+ ```
24
+
25
+ ### ❌ λ‚˜μœ 예
26
+
27
+ ```typescript
28
+ const list = [...]; // λ¬΄μ—‡μ˜ 리슀트?
29
+ const total = 0; // λ¬΄μ—‡μ˜ 총합?
30
+ const page = 1; // λͺ…ν™•ν•˜μ§€ μ•ŠμŒ
31
+ ```
32
+
33
+ ## ν•¨μˆ˜ 넀이밍
34
+
35
+ ### βœ… 쒋은 예
36
+
37
+ ```typescript
38
+ function fetchUserData() { }
39
+ function updateProfile() { }
40
+ function validateEmail() { }
41
+ function calculateTotal() { }
42
+ ```
43
+
44
+ ### ❌ λ‚˜μœ 예
45
+
46
+ ```typescript
47
+ function user() { } // 동사 μ—†μŒ
48
+ function data() { } // 뢈λͺ…ν™•
49
+ function process() { } // 무엇을 처리?
50
+ ```
51
+
52
+ ## 이벀트 ν•Έλ“€λŸ¬
53
+
54
+ ### βœ… 쒋은 예
55
+
56
+ ```typescript
57
+ function handleClick() { }
58
+ function handleSubmit() { }
59
+ function handleInputChange() { }
60
+ ```
61
+
62
+ ### ❌ λ‚˜μœ 예
63
+
64
+ ```typescript
65
+ function onClick() { } // handle 접두사 ꢌμž₯
66
+ function submit() { } // μ΄λ²€νŠΈμž„μ΄ 뢈λͺ…ν™•
67
+ function change() { } // λ¬΄μ—‡μ˜ λ³€κ²½?
68
+ ```
69
+
70
+ ## Boolean λ³€μˆ˜
71
+
72
+ ### βœ… 쒋은 예
73
+
74
+ ```typescript
75
+ const isLoading = false;
76
+ const hasError = false;
77
+ const canEdit = true;
78
+ const shouldUpdate = false;
79
+ ```
80
+
81
+ ### ❌ λ‚˜μœ 예
82
+
83
+ ```typescript
84
+ const loading = false; // is 접두사 ꢌμž₯
85
+ const error = false; // has ꢌμž₯
86
+ const editable = true; // can ꢌμž₯
87
+ ```
88
+
89
+ ## μƒμˆ˜
90
+
91
+ ### βœ… 쒋은 예
92
+
93
+ ```typescript
94
+ const MAX_RETRY_COUNT = 3;
95
+ const API_TIMEOUT_MS = 5000;
96
+ const DEFAULT_PAGE_SIZE = 20;
97
+ ```
98
+
99
+ ### ❌ λ‚˜μœ 예
100
+
101
+ ```typescript
102
+ const maxRetry = 3; // UPPER_SNAKE_CASE μ‚¬μš©
103
+ const timeout = 5000; // λ‹¨μœ„ λͺ…μ‹œ λΆ€μ‘±
104
+ ```
105
+
106
+ ## μ»΄ν¬λ„ŒνŠΈ & 클래슀
107
+
108
+ ### βœ… 쒋은 예
109
+
110
+ ```typescript
111
+ class UserProfile { }
112
+ class DataRepository { }
113
+ function ProfileCard() { }
114
+ function NavigationBar() { }
115
+ ```
116
+
117
+ ### ❌ λ‚˜μœ 예
118
+
119
+ ```typescript
120
+ class userProfile { } // PascalCase μ‚¬μš©
121
+ class data { } // 뢈λͺ…ν™•
122
+ function profile() { } // PascalCase ꢌμž₯
123
+ ```
124
+
125
+ ## μ»€μŠ€ν…€ ν›… (React)
126
+
127
+ ### βœ… 쒋은 예
128
+
129
+ ```typescript
130
+ function useUserData() { }
131
+ function useAuth() { }
132
+ function useLocalStorage() { }
133
+ ```
134
+
135
+ ### ❌ λ‚˜μœ 예
136
+
137
+ ```typescript
138
+ function getUserData() { } // use 접두사 ν•„μˆ˜
139
+ function auth() { } // use 접두사 ν•„μˆ˜
140
+ ```
141
+
142
+ ## νƒ€μž… & μΈν„°νŽ˜μ΄μŠ€ (TypeScript)
143
+
144
+ ### βœ… 쒋은 예
145
+
146
+ ```typescript
147
+ interface User { }
148
+ type UserRole = 'admin' | 'user';
149
+ interface ApiResponse<T> { }
150
+ ```
151
+
152
+ ### ❌ λ‚˜μœ 예
153
+
154
+ ```typescript
155
+ interface IUser { } // I 접두사 λΆˆν•„μš” (TypeScript)
156
+ type user = { }; // PascalCase μ‚¬μš©
157
+ ```
158
+
159
+ ## 파일 넀이밍
160
+
161
+ ### βœ… 쒋은 예
162
+
163
+ ```
164
+ user-profile.component.tsx
165
+ user.service.ts
166
+ auth.utils.ts
167
+ constants.ts
168
+ ```
169
+
170
+ ### ❌ λ‚˜μœ 예
171
+
172
+ ```
173
+ UserProfile.tsx // kebab-case ꢌμž₯
174
+ user_service.ts // kebab-case ꢌμž₯
175
+ utils.ts // 뢈λͺ…ν™•
176
+ ```
177
+
178
+ ## μ•½μ–΄ μ‚¬μš© 원칙
179
+
180
+ - 일반적인 μ•½μ–΄λ§Œ μ‚¬μš© (URL, API, ID, HTML, CSS)
181
+ - ν”„λ‘œμ νŠΈ νŠΉμ • μ•½μ–΄λŠ” λ¬Έμ„œν™” ν•„μˆ˜
182
+ - μ˜λ―Έκ°€ λͺ…ν™•ν•˜μ§€ μ•ŠμœΌλ©΄ 전체 단어 μ‚¬μš©
183
+
184
+ ### βœ… 쒋은 예
185
+
186
+ ```typescript
187
+ const userId = '123';
188
+ const apiEndpoint = '/users';
189
+ const htmlContent = '<div>';
190
+ ```
191
+
192
+ ### ❌ λ‚˜μœ 예
193
+
194
+ ```typescript
195
+ const usrId = '123'; // 뢈λͺ…ν™•ν•œ μ•½μ–΄
196
+ const endpt = '/users'; // κ³Όλ„ν•œ μΆ•μ•½
197
+ const cnt = '<div>'; // content둜 λͺ…ν™•νžˆ
198
+ ```