@su-record/vibe 2.0.0 β 2.0.2
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/explorer.md +48 -48
- package/.claude/agents/implementer.md +53 -53
- package/.claude/agents/searcher.md +54 -54
- package/.claude/agents/simplifier.md +119 -119
- package/.claude/agents/tester.md +49 -49
- package/.claude/commands/vibe.analyze.md +239 -239
- package/.claude/commands/vibe.continue.md +88 -88
- package/.claude/commands/vibe.diagram.md +178 -178
- package/.claude/commands/vibe.reason.md +306 -306
- package/.claude/commands/vibe.run.md +760 -760
- package/.claude/commands/vibe.spec.md +339 -339
- package/.claude/commands/vibe.tool.md +153 -153
- package/.claude/commands/vibe.ui.md +137 -137
- package/.claude/commands/vibe.verify.md +238 -238
- package/.claude/settings.json +152 -152
- package/.claude/settings.local.json +4 -57
- package/.vibe/config.json +9 -0
- package/.vibe/constitution.md +184 -184
- package/.vibe/rules/core/communication-guide.md +104 -104
- package/.vibe/rules/core/development-philosophy.md +52 -52
- package/.vibe/rules/core/quick-start.md +120 -120
- package/.vibe/rules/quality/bdd-contract-testing.md +388 -388
- package/.vibe/rules/quality/checklist.md +276 -276
- package/.vibe/rules/quality/testing-strategy.md +437 -437
- package/.vibe/rules/standards/anti-patterns.md +369 -369
- package/.vibe/rules/standards/code-structure.md +291 -291
- package/.vibe/rules/standards/complexity-metrics.md +312 -312
- package/.vibe/rules/standards/naming-conventions.md +198 -198
- package/.vibe/rules/tools/mcp-hi-ai-guide.md +665 -665
- package/.vibe/rules/tools/mcp-workflow.md +51 -51
- package/.vibe/setup.sh +31 -31
- package/CLAUDE.md +122 -122
- package/LICENSE +21 -21
- package/README.md +568 -568
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +391 -406
- package/dist/cli/index.js.map +1 -1
- package/dist/lib/MemoryManager.js +92 -92
- package/dist/lib/PythonParser.js +108 -108
- package/dist/lib/gemini-mcp.js +15 -15
- package/dist/lib/gemini-oauth.d.ts.map +1 -1
- package/dist/lib/gemini-oauth.js +41 -38
- package/dist/lib/gemini-oauth.js.map +1 -1
- package/dist/lib/gpt-mcp.js +17 -17
- package/dist/lib/gpt-oauth.d.ts.map +1 -1
- package/dist/lib/gpt-oauth.js +50 -45
- package/dist/lib/gpt-oauth.js.map +1 -1
- package/dist/tools/analytics/getUsageAnalytics.js +12 -12
- package/dist/tools/memory/createMemoryTimeline.js +10 -10
- package/dist/tools/memory/getMemoryGraph.js +12 -12
- package/dist/tools/memory/getSessionContext.js +9 -9
- package/dist/tools/memory/linkMemories.js +14 -14
- package/dist/tools/memory/listMemories.js +4 -4
- package/dist/tools/memory/recallMemory.js +4 -4
- package/dist/tools/memory/saveMemory.js +4 -4
- package/dist/tools/memory/searchMemoriesAdvanced.js +22 -22
- package/dist/tools/planning/generatePrd.js +46 -46
- package/dist/tools/prompt/enhancePromptGemini.js +160 -160
- package/dist/tools/reasoning/applyReasoningFramework.js +56 -56
- package/dist/tools/semantic/analyzeDependencyGraph.js +12 -12
- package/package.json +67 -67
- package/templates/constitution-template.md +184 -184
- package/templates/contract-backend-template.md +517 -517
- package/templates/contract-frontend-template.md +594 -594
- package/templates/feature-template.md +96 -96
- package/templates/hooks-template.json +103 -103
- package/templates/spec-template.md +199 -199
- package/dist/lib/vibe-mcp.d.ts.map +0 -1
- 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
|
+
```
|