@kood/claude-code 0.1.6 โ 0.1.9
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/dist/index.js +109 -216
- package/package.json +8 -2
- package/templates/hono/CLAUDE.md +59 -328
- package/templates/hono/docs/architecture/architecture.md +93 -747
- package/templates/hono/docs/deployment/cloudflare.md +59 -513
- package/templates/hono/docs/deployment/docker.md +41 -356
- package/templates/hono/docs/deployment/index.md +54 -190
- package/templates/hono/docs/deployment/railway.md +36 -306
- package/templates/hono/docs/deployment/vercel.md +49 -434
- package/templates/hono/docs/library/ai-sdk/index.md +53 -290
- package/templates/hono/docs/library/ai-sdk/openrouter.md +19 -387
- package/templates/hono/docs/library/ai-sdk/providers.md +28 -394
- package/templates/hono/docs/library/ai-sdk/streaming.md +52 -353
- package/templates/hono/docs/library/ai-sdk/structured-output.md +63 -395
- package/templates/hono/docs/library/ai-sdk/tools.md +62 -431
- package/templates/hono/docs/library/hono/env-setup.md +24 -313
- package/templates/hono/docs/library/hono/error-handling.md +34 -295
- package/templates/hono/docs/library/hono/index.md +29 -121
- package/templates/hono/docs/library/hono/middleware.md +21 -188
- package/templates/hono/docs/library/hono/rpc.md +40 -341
- package/templates/hono/docs/library/hono/validation.md +35 -195
- package/templates/hono/docs/library/pino/index.md +42 -333
- package/templates/hono/docs/library/prisma/cloudflare-d1.md +64 -367
- package/templates/hono/docs/library/prisma/config.md +19 -260
- package/templates/hono/docs/library/prisma/index.md +67 -320
- package/templates/hono/docs/library/zod/index.md +53 -257
- package/templates/npx/CLAUDE.md +62 -274
- package/templates/npx/docs/references/patterns.md +160 -0
- package/templates/tanstack-start/CLAUDE.md +100 -256
- package/templates/tanstack-start/docs/architecture/architecture.md +44 -589
- package/templates/tanstack-start/docs/deployment/cloudflare.md +37 -424
- package/templates/tanstack-start/docs/deployment/index.md +57 -286
- package/templates/tanstack-start/docs/deployment/nitro.md +36 -318
- package/templates/tanstack-start/docs/deployment/railway.md +40 -409
- package/templates/tanstack-start/docs/deployment/vercel.md +43 -465
- package/templates/tanstack-start/docs/design/components.md +77 -311
- package/templates/tanstack-start/docs/design/index.md +113 -69
- package/templates/tanstack-start/docs/design/safe-area.md +51 -250
- package/templates/tanstack-start/docs/design/tailwind-setup.md +45 -359
- package/templates/tanstack-start/docs/guides/conventions.md +103 -0
- package/templates/tanstack-start/docs/guides/env-setup.md +34 -340
- package/templates/tanstack-start/docs/guides/getting-started.md +22 -209
- package/templates/tanstack-start/docs/guides/hooks.md +166 -0
- package/templates/tanstack-start/docs/guides/routes.md +166 -0
- package/templates/tanstack-start/docs/guides/services.md +143 -0
- package/templates/tanstack-start/docs/library/better-auth/2fa.md +27 -115
- package/templates/tanstack-start/docs/library/better-auth/advanced.md +22 -105
- package/templates/tanstack-start/docs/library/better-auth/index.md +17 -66
- package/templates/tanstack-start/docs/library/better-auth/plugins.md +11 -88
- package/templates/tanstack-start/docs/library/better-auth/session.md +12 -92
- package/templates/tanstack-start/docs/library/better-auth/setup.md +9 -91
- package/templates/tanstack-start/docs/library/prisma/cloudflare-d1.md +30 -358
- package/templates/tanstack-start/docs/library/prisma/config.md +27 -327
- package/templates/tanstack-start/docs/library/prisma/crud.md +46 -174
- package/templates/tanstack-start/docs/library/prisma/index.md +23 -113
- package/templates/tanstack-start/docs/library/prisma/relations.md +31 -153
- package/templates/tanstack-start/docs/library/prisma/schema.md +40 -217
- package/templates/tanstack-start/docs/library/prisma/setup.md +12 -112
- package/templates/tanstack-start/docs/library/prisma/transactions.md +20 -110
- package/templates/tanstack-start/docs/library/tanstack-query/index.md +26 -97
- package/templates/tanstack-start/docs/library/tanstack-query/invalidation.md +28 -107
- package/templates/tanstack-start/docs/library/tanstack-query/optimistic-updates.md +44 -146
- package/templates/tanstack-start/docs/library/tanstack-query/use-mutation.md +33 -127
- package/templates/tanstack-start/docs/library/tanstack-query/use-query.md +49 -149
- package/templates/tanstack-start/docs/library/tanstack-start/auth-patterns.md +19 -112
- package/templates/tanstack-start/docs/library/tanstack-start/index.md +33 -80
- package/templates/tanstack-start/docs/library/tanstack-start/middleware.md +28 -106
- package/templates/tanstack-start/docs/library/tanstack-start/routing.md +21 -118
- package/templates/tanstack-start/docs/library/tanstack-start/server-functions.md +34 -246
- package/templates/tanstack-start/docs/library/tanstack-start/setup.md +6 -39
- package/templates/tanstack-start/docs/library/zod/complex-types.md +32 -156
- package/templates/tanstack-start/docs/library/zod/index.md +31 -144
- package/templates/tanstack-start/docs/library/zod/transforms.md +20 -129
- package/templates/tanstack-start/docs/library/zod/validation.md +39 -155
- package/templates/hono/docs/commands/git.md +0 -145
- package/templates/hono/docs/mcp/context7.md +0 -106
- package/templates/hono/docs/mcp/index.md +0 -176
- package/templates/hono/docs/mcp/sequential-thinking.md +0 -101
- package/templates/hono/docs/mcp/serena.md +0 -269
- package/templates/hono/docs/mcp/sgrep.md +0 -105
- package/templates/hono/docs/skills/gemini-review/SKILL.md +0 -220
- package/templates/hono/docs/skills/gemini-review/references/checklists.md +0 -136
- package/templates/hono/docs/skills/gemini-review/references/prompt-templates.md +0 -303
- package/templates/npx/docs/commands/git.md +0 -145
- package/templates/npx/docs/mcp/index.md +0 -60
- package/templates/npx/docs/skills/gemini-review/SKILL.md +0 -220
- package/templates/npx/docs/skills/gemini-review/references/checklists.md +0 -134
- package/templates/npx/docs/skills/gemini-review/references/prompt-templates.md +0 -301
- package/templates/tanstack-start/docs/commands/git.md +0 -145
- package/templates/tanstack-start/docs/design/accessibility.md +0 -433
- package/templates/tanstack-start/docs/design/color.md +0 -235
- package/templates/tanstack-start/docs/design/spacing.md +0 -341
- package/templates/tanstack-start/docs/design/typography.md +0 -324
- package/templates/tanstack-start/docs/guides/best-practices.md +0 -950
- package/templates/tanstack-start/docs/guides/husky-lint-staged.md +0 -303
- package/templates/tanstack-start/docs/guides/prettier.md +0 -189
- package/templates/tanstack-start/docs/guides/project-templates.md +0 -710
- package/templates/tanstack-start/docs/library/tanstack-query/setup.md +0 -107
- package/templates/tanstack-start/docs/library/zod/basic-types.md +0 -186
- package/templates/tanstack-start/docs/mcp/context7.md +0 -204
- package/templates/tanstack-start/docs/mcp/index.md +0 -177
- package/templates/tanstack-start/docs/mcp/sequential-thinking.md +0 -180
- package/templates/tanstack-start/docs/mcp/serena.md +0 -269
- package/templates/tanstack-start/docs/mcp/sgrep.md +0 -174
- package/templates/tanstack-start/docs/skills/gemini-review/SKILL.md +0 -220
- package/templates/tanstack-start/docs/skills/gemini-review/references/checklists.md +0 -144
- package/templates/tanstack-start/docs/skills/gemini-review/references/prompt-templates.md +0 -292
|
@@ -1,107 +0,0 @@
|
|
|
1
|
-
# TanStack Query - ์ค์น ๋ฐ ์ค์
|
|
2
|
-
|
|
3
|
-
> **์์ ๋ฌธ์**: [TanStack Query](./index.md)
|
|
4
|
-
|
|
5
|
-
## ์ค์น
|
|
6
|
-
|
|
7
|
-
```bash
|
|
8
|
-
yarn add @tanstack/react-query
|
|
9
|
-
```
|
|
10
|
-
|
|
11
|
-
## QueryClient ์ค์
|
|
12
|
-
|
|
13
|
-
```tsx
|
|
14
|
-
import {
|
|
15
|
-
QueryClient,
|
|
16
|
-
QueryClientProvider,
|
|
17
|
-
} from '@tanstack/react-query'
|
|
18
|
-
|
|
19
|
-
// QueryClient ์์ฑ
|
|
20
|
-
const queryClient = new QueryClient()
|
|
21
|
-
|
|
22
|
-
function App() {
|
|
23
|
-
return (
|
|
24
|
-
<QueryClientProvider client={queryClient}>
|
|
25
|
-
<YourApp />
|
|
26
|
-
</QueryClientProvider>
|
|
27
|
-
)
|
|
28
|
-
}
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
## QueryClient ์ต์
|
|
32
|
-
|
|
33
|
-
```tsx
|
|
34
|
-
const queryClient = new QueryClient({
|
|
35
|
-
defaultOptions: {
|
|
36
|
-
queries: {
|
|
37
|
-
staleTime: 1000 * 60 * 5, // 5๋ถ
|
|
38
|
-
gcTime: 1000 * 60 * 30, // 30๋ถ (์ด์ ์ cacheTime)
|
|
39
|
-
retry: 3,
|
|
40
|
-
retryDelay: (attemptIndex) => Math.min(1000 * 2 ** attemptIndex, 30000),
|
|
41
|
-
refetchOnWindowFocus: true,
|
|
42
|
-
refetchOnReconnect: true,
|
|
43
|
-
},
|
|
44
|
-
mutations: {
|
|
45
|
-
retry: 1,
|
|
46
|
-
},
|
|
47
|
-
},
|
|
48
|
-
})
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
## TanStack Start์ ํจ๊ป ์ฌ์ฉ
|
|
52
|
-
|
|
53
|
-
```tsx
|
|
54
|
-
import { useQuery } from '@tanstack/react-query'
|
|
55
|
-
import { getServerPosts } from '@/lib/server-functions'
|
|
56
|
-
|
|
57
|
-
function PostList() {
|
|
58
|
-
const { data, isLoading, error } = useQuery({
|
|
59
|
-
queryKey: ['posts'],
|
|
60
|
-
queryFn: () => getServerPosts(),
|
|
61
|
-
})
|
|
62
|
-
|
|
63
|
-
if (isLoading) return <div>Loading...</div>
|
|
64
|
-
if (error) return <div>Error: {error.message}</div>
|
|
65
|
-
|
|
66
|
-
return (
|
|
67
|
-
<ul>
|
|
68
|
-
{data?.map((post) => (
|
|
69
|
-
<li key={post.id}>{post.title}</li>
|
|
70
|
-
))}
|
|
71
|
-
</ul>
|
|
72
|
-
)
|
|
73
|
-
}
|
|
74
|
-
```
|
|
75
|
-
|
|
76
|
-
## Query Keys ํจํด
|
|
77
|
-
|
|
78
|
-
```typescript
|
|
79
|
-
// ๊ฐ๋จํ ํค
|
|
80
|
-
['todos']
|
|
81
|
-
|
|
82
|
-
// ํ๋ผ๋ฏธํฐ๊ฐ ์๋ ํค
|
|
83
|
-
['todo', { id: 5 }]
|
|
84
|
-
|
|
85
|
-
// ๊ณ์ธต์ ํค
|
|
86
|
-
['todos', 'list', { filters: 'all' }]
|
|
87
|
-
['todos', 'detail', todoId]
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
## DevTools (๊ฐ๋ฐ์ฉ)
|
|
91
|
-
|
|
92
|
-
```bash
|
|
93
|
-
yarn add @tanstack/react-query-devtools
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
```tsx
|
|
97
|
-
import { ReactQueryDevtools } from '@tanstack/react-query-devtools'
|
|
98
|
-
|
|
99
|
-
function App() {
|
|
100
|
-
return (
|
|
101
|
-
<QueryClientProvider client={queryClient}>
|
|
102
|
-
<YourApp />
|
|
103
|
-
<ReactQueryDevtools initialIsOpen={false} />
|
|
104
|
-
</QueryClientProvider>
|
|
105
|
-
)
|
|
106
|
-
}
|
|
107
|
-
```
|
|
@@ -1,186 +0,0 @@
|
|
|
1
|
-
# Zod - ๊ธฐ๋ณธ ํ์
|
|
2
|
-
|
|
3
|
-
> **์์ ๋ฌธ์**: [Zod](./index.md)
|
|
4
|
-
|
|
5
|
-
## ๋ฌธ์์ด
|
|
6
|
-
|
|
7
|
-
```typescript
|
|
8
|
-
z.string()
|
|
9
|
-
z.string().min(1) // ์ต์ ๊ธธ์ด
|
|
10
|
-
z.string().max(100) // ์ต๋ ๊ธธ์ด
|
|
11
|
-
z.string().length(5) // ์ ํํ ๊ธธ์ด
|
|
12
|
-
z.string().regex(/^\d+$/) // ์ ๊ท์
|
|
13
|
-
z.string().trim() // ๊ณต๋ฐฑ ์ ๊ฑฐ
|
|
14
|
-
z.string().toLowerCase() // ์๋ฌธ์ ๋ณํ
|
|
15
|
-
z.string().toUpperCase() // ๋๋ฌธ์ ๋ณํ
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
### v4 ์๋ก์ด ์ต์์ ๋ฌธ์์ด ํฌ๋งท API
|
|
19
|
-
|
|
20
|
-
```typescript
|
|
21
|
-
// ๋ ๋์ tree-shaking์ ์ํด ์ต์์ API ์ฌ์ฉ ๊ถ์ฅ
|
|
22
|
-
z.email() // ์ด๋ฉ์ผ ํ์
|
|
23
|
-
z.url() // URL ํ์
|
|
24
|
-
z.uuid() // UUID ํ์
|
|
25
|
-
z.base64() // Base64 ํ์
|
|
26
|
-
z.base64url() // Base64 URL ํ์
|
|
27
|
-
z.nanoid() // NanoID ํ์
|
|
28
|
-
z.cuid() // CUID ํ์
|
|
29
|
-
z.cuid2() // CUID2 ํ์
|
|
30
|
-
z.ulid() // ULID ํ์
|
|
31
|
-
z.emoji() // ์ด๋ชจ์ง (๋จ์ผ ๋ฌธ์)
|
|
32
|
-
z.ipv4() // IPv4 ์ฃผ์
|
|
33
|
-
z.ipv6() // IPv6 ์ฃผ์
|
|
34
|
-
z.cidrv4() // IPv4 ๋ฒ์
|
|
35
|
-
z.cidrv6() // IPv6 ๋ฒ์
|
|
36
|
-
|
|
37
|
-
// ISO ๋ ์ง/์๊ฐ ํ์
|
|
38
|
-
z.iso.date() // ISO ๋ ์ง (2024-01-15)
|
|
39
|
-
z.iso.time() // ISO ์๊ฐ (14:30:00)
|
|
40
|
-
z.iso.datetime() // ISO ๋ ์ง์๊ฐ
|
|
41
|
-
z.iso.duration() // ISO ๊ธฐ๊ฐ (P1D, PT1H)
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
### ํ
ํ๋ฆฟ ๋ฆฌํฐ๋ด ํ์
(v4 ์ ๊ท)
|
|
45
|
-
|
|
46
|
-
```typescript
|
|
47
|
-
const hello = z.templateLiteral(["hello, ", z.string()])
|
|
48
|
-
// `hello, ${string}`
|
|
49
|
-
|
|
50
|
-
const cssUnits = z.enum(["px", "em", "rem", "%"])
|
|
51
|
-
const css = z.templateLiteral([z.number(), cssUnits])
|
|
52
|
-
// `${number}px` | `${number}em` | `${number}rem` | `${number}%`
|
|
53
|
-
|
|
54
|
-
const email = z.templateLiteral([
|
|
55
|
-
z.string().min(1),
|
|
56
|
-
"@",
|
|
57
|
-
z.string().max(64),
|
|
58
|
-
])
|
|
59
|
-
// `${string}@${string}` (min/max refinements๋ ์ ์ฉ๋จ!)
|
|
60
|
-
```
|
|
61
|
-
|
|
62
|
-
## ์ซ์
|
|
63
|
-
|
|
64
|
-
```typescript
|
|
65
|
-
z.number()
|
|
66
|
-
z.number().min(0) // ์ต์๊ฐ
|
|
67
|
-
z.number().max(100) // ์ต๋๊ฐ
|
|
68
|
-
z.number().int() // ์ ์๋ง
|
|
69
|
-
z.number().positive() // ์์๋ง
|
|
70
|
-
z.number().negative() // ์์๋ง
|
|
71
|
-
z.number().nonnegative() // 0 ์ด์
|
|
72
|
-
z.number().nonpositive() // 0 ์ดํ
|
|
73
|
-
z.number().finite() // ์ ํ ์ซ์
|
|
74
|
-
z.number().safe() // ์์ ํ ์ ์ ๋ฒ์
|
|
75
|
-
```
|
|
76
|
-
|
|
77
|
-
## ๋ถ๋ฆฌ์ธ
|
|
78
|
-
|
|
79
|
-
```typescript
|
|
80
|
-
z.boolean()
|
|
81
|
-
```
|
|
82
|
-
|
|
83
|
-
### ๋ฌธ์์ด ๋ถ๋ฆฌ์ธ (v4 ์ ๊ท)
|
|
84
|
-
|
|
85
|
-
ํ๊ฒฝ๋ณ์ ์คํ์ผ ๋ถ๋ฆฌ์ธ ๋ณํ:
|
|
86
|
-
|
|
87
|
-
```typescript
|
|
88
|
-
const strbool = z.stringbool()
|
|
89
|
-
|
|
90
|
-
strbool.parse("true") // => true
|
|
91
|
-
strbool.parse("1") // => true
|
|
92
|
-
strbool.parse("yes") // => true
|
|
93
|
-
strbool.parse("on") // => true
|
|
94
|
-
strbool.parse("enabled") // => true
|
|
95
|
-
|
|
96
|
-
strbool.parse("false") // => false
|
|
97
|
-
strbool.parse("0") // => false
|
|
98
|
-
strbool.parse("no") // => false
|
|
99
|
-
strbool.parse("off") // => false
|
|
100
|
-
strbool.parse("disabled") // => false
|
|
101
|
-
|
|
102
|
-
// ์ปค์คํ
truthy/falsy ๊ฐ
|
|
103
|
-
z.stringbool({
|
|
104
|
-
truthy: ["yes", "true"],
|
|
105
|
-
falsy: ["no", "false"]
|
|
106
|
-
})
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
## ๋ ์ง
|
|
110
|
-
|
|
111
|
-
```typescript
|
|
112
|
-
z.date()
|
|
113
|
-
z.date().min(new Date('2020-01-01'))
|
|
114
|
-
z.date().max(new Date('2030-12-31'))
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
## BigInt
|
|
118
|
-
|
|
119
|
-
```typescript
|
|
120
|
-
z.bigint()
|
|
121
|
-
z.bigint().positive()
|
|
122
|
-
z.bigint().negative()
|
|
123
|
-
```
|
|
124
|
-
|
|
125
|
-
## ๋ฆฌํฐ๋ด
|
|
126
|
-
|
|
127
|
-
```typescript
|
|
128
|
-
z.literal('hello') // ์ ํํ 'hello'๋ง
|
|
129
|
-
z.literal(42) // ์ ํํ 42๋ง
|
|
130
|
-
z.literal(true) // ์ ํํ true๋ง
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
## Null, Undefined, Void
|
|
134
|
-
|
|
135
|
-
```typescript
|
|
136
|
-
z.null() // null๋ง ํ์ฉ
|
|
137
|
-
z.undefined() // undefined๋ง ํ์ฉ
|
|
138
|
-
z.void() // undefined ํ์ฉ (๋ฐํ ํ์
์ฉ)
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
## Any, Unknown, Never
|
|
142
|
-
|
|
143
|
-
```typescript
|
|
144
|
-
z.any() // ๋ชจ๋ ํ์
ํ์ฉ
|
|
145
|
-
z.unknown() // unknown ํ์
|
|
146
|
-
z.never() // ๊ฐ ์์ (์ ๋์จ์์ ์ฌ์ฉ)
|
|
147
|
-
```
|
|
148
|
-
|
|
149
|
-
> **v4 ๋ณ๊ฒฝ**: `z.any()`์ `z.unknown()`์ ๋ ์ด์ ๊ฐ์ฒด์์ ์ ํ์ ํค๋ก ์ถ๋ก ๋์ง ์์ต๋๋ค.
|
|
150
|
-
> ```typescript
|
|
151
|
-
> const mySchema = z.object({ a: z.any(), b: z.unknown() })
|
|
152
|
-
> // v3: { a?: any; b?: unknown }
|
|
153
|
-
> // v4: { a: any; b: unknown }
|
|
154
|
-
> ```
|
|
155
|
-
|
|
156
|
-
## Optional & Nullable
|
|
157
|
-
|
|
158
|
-
```typescript
|
|
159
|
-
z.string().optional() // string | undefined
|
|
160
|
-
z.string().nullable() // string | null
|
|
161
|
-
z.string().nullish() // string | null | undefined
|
|
162
|
-
```
|
|
163
|
-
|
|
164
|
-
## Default ๊ฐ
|
|
165
|
-
|
|
166
|
-
```typescript
|
|
167
|
-
const Schema = z.object({
|
|
168
|
-
name: z.string().default('Anonymous'),
|
|
169
|
-
role: z.enum(['admin', 'user']).default('user'),
|
|
170
|
-
})
|
|
171
|
-
|
|
172
|
-
Schema.parse({}) // { name: 'Anonymous', role: 'user' }
|
|
173
|
-
```
|
|
174
|
-
|
|
175
|
-
## ํ์
์ถ๋ก
|
|
176
|
-
|
|
177
|
-
```typescript
|
|
178
|
-
const stringSchema = z.string()
|
|
179
|
-
type StringType = z.infer<typeof stringSchema> // string
|
|
180
|
-
|
|
181
|
-
const numberSchema = z.number().optional()
|
|
182
|
-
type NumberType = z.infer<typeof numberSchema> // number | undefined
|
|
183
|
-
|
|
184
|
-
const dateSchema = z.date().nullable()
|
|
185
|
-
type DateType = z.infer<typeof dateSchema> // Date | null
|
|
186
|
-
```
|
|
@@ -1,204 +0,0 @@
|
|
|
1
|
-
# Context7 MCP
|
|
2
|
-
|
|
3
|
-
> ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ณต์ ๋ฌธ์๋ฅผ ์ค์๊ฐ์ผ๋ก ์กฐํํ๋ ๋๊ตฌ
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## ๐ Quick Reference
|
|
8
|
-
|
|
9
|
-
```
|
|
10
|
-
โ
์ฌ์ฉ ํ์ ์ํฉ:
|
|
11
|
-
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ API ์ฌ์ฉ๋ฒ ํ์ธ
|
|
12
|
-
- ์ต์ ๋ฒ์ ๋ฌธ๋ฒ ํ์ธ
|
|
13
|
-
- ๊ณต์ ๋ฌธ์ ๊ธฐ๋ฐ ๊ตฌํ
|
|
14
|
-
- ๋ฒ์ ๋ง์ด๊ทธ๋ ์ด์
|
|
15
|
-
|
|
16
|
-
โ ๋ถํ์ํ ์ํฉ:
|
|
17
|
-
- ์ด๋ฏธ ์๊ณ ์๋ ๊ธฐ๋ณธ ๋ฌธ๋ฒ
|
|
18
|
-
- ํ๋ก์ ํธ ๋ด๋ถ ์ฝ๋ ๋ถ์
|
|
19
|
-
- ๋น์ฆ๋์ค ๋ก์ง ๊ตฌํ
|
|
20
|
-
```
|
|
21
|
-
|
|
22
|
-
---
|
|
23
|
-
|
|
24
|
-
## ์ฌ์ฉ ๋ฐฉ๋ฒ
|
|
25
|
-
|
|
26
|
-
### Step 1: ๋ผ์ด๋ธ๋ฌ๋ฆฌ ID ์กฐํ
|
|
27
|
-
|
|
28
|
-
```
|
|
29
|
-
resolve-library-id ์ฌ์ฉ
|
|
30
|
-
โ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ด๋ฆ์ผ๋ก Context7 ID ํ๋
|
|
31
|
-
```
|
|
32
|
-
|
|
33
|
-
### Step 2: ๋ฌธ์ ์กฐํ
|
|
34
|
-
|
|
35
|
-
```
|
|
36
|
-
get-library-docs ์ฌ์ฉ
|
|
37
|
-
โ ํน์ ํ ํฝ์ ๋ฌธ์ ๊ฐ์ ธ์ค๊ธฐ
|
|
38
|
-
|
|
39
|
-
ํ๋ผ๋ฏธํฐ:
|
|
40
|
-
- context7CompatibleLibraryID: ๋ผ์ด๋ธ๋ฌ๋ฆฌ ID
|
|
41
|
-
- topic: ์กฐํํ ์ฃผ์ (์: "hooks", "routing")
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
---
|
|
45
|
-
|
|
46
|
-
## ํ๋ก์ ํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ณ ์ฌ์ฉ ์์
|
|
47
|
-
|
|
48
|
-
### TanStack Start
|
|
49
|
-
|
|
50
|
-
```
|
|
51
|
-
ํ ํฝ ์์:
|
|
52
|
-
- "server functions" - createServerFn ์ฌ์ฉ๋ฒ
|
|
53
|
-
- "routing" - ํ์ผ ๊ธฐ๋ฐ ๋ผ์ฐํ
|
|
54
|
-
- "loader" - ๋ฐ์ดํฐ ๋ก๋ฉ
|
|
55
|
-
- "middleware" - ๋ฏธ๋ค์จ์ด ์ค์
|
|
56
|
-
```
|
|
57
|
-
|
|
58
|
-
### TanStack Query
|
|
59
|
-
|
|
60
|
-
```
|
|
61
|
-
ํ ํฝ ์์:
|
|
62
|
-
- "useQuery" - ์ฟผ๋ฆฌ ํ
|
|
63
|
-
- "useMutation" - ๋ฎคํ
์ด์
ํ
|
|
64
|
-
- "invalidation" - ์บ์ ๋ฌดํจํ
|
|
65
|
-
- "optimistic updates" - ๋๊ด์ ์
๋ฐ์ดํธ
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
### Prisma
|
|
69
|
-
|
|
70
|
-
```
|
|
71
|
-
ํ ํฝ ์์:
|
|
72
|
-
- "findMany" - ๋ค์ค ์กฐํ
|
|
73
|
-
- "create" - ์์ฑ
|
|
74
|
-
- "relations" - ๊ด๊ณ ์ฟผ๋ฆฌ
|
|
75
|
-
- "transactions" - ํธ๋์ญ์
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
### Zod
|
|
79
|
-
|
|
80
|
-
```
|
|
81
|
-
ํ ํฝ ์์:
|
|
82
|
-
- "object" - ๊ฐ์ฒด ์คํค๋ง
|
|
83
|
-
- "email" - ์ด๋ฉ์ผ ๊ฒ์ฆ (v4)
|
|
84
|
-
- "transform" - ๋ณํ
|
|
85
|
-
- "refinement" - ์ปค์คํ
๊ฒ์ฆ
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
### Tailwind CSS
|
|
89
|
-
|
|
90
|
-
```
|
|
91
|
-
ํ ํฝ ์์:
|
|
92
|
-
- "configuration" - ์ค์
|
|
93
|
-
- "theme" - ํ
๋ง ์ปค์คํฐ๋ง์ด์ง
|
|
94
|
-
- "responsive" - ๋ฐ์ํ
|
|
95
|
-
- "dark mode" - ๋คํฌ ๋ชจ๋
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
### Better Auth
|
|
99
|
-
|
|
100
|
-
```
|
|
101
|
-
ํ ํฝ ์์:
|
|
102
|
-
- "setup" - ์ด๊ธฐ ์ค์
|
|
103
|
-
- "session" - ์ธ์
๊ด๋ฆฌ
|
|
104
|
-
- "providers" - OAuth ์ค์
|
|
105
|
-
- "2fa" - ์ด์ค ์ธ์ฆ
|
|
106
|
-
```
|
|
107
|
-
|
|
108
|
-
---
|
|
109
|
-
|
|
110
|
-
## ์ฌ์ฉ ์์
|
|
111
|
-
|
|
112
|
-
### โ
๋ฐ๋์ ์ฌ์ฉ
|
|
113
|
-
|
|
114
|
-
| ์ํฉ | ์ด์ |
|
|
115
|
-
|------|------|
|
|
116
|
-
| ์ API ์ฌ์ฉ | ์ ํํ ์๊ทธ๋์ฒ ํ์ธ |
|
|
117
|
-
| ๋ฒ์ ์
๊ทธ๋ ์ด๋ | ๋ณ๊ฒฝ์ฌํญ ํ์ธ |
|
|
118
|
-
| ์๋ฌ ํด๊ฒฐ | ์ฌ๋ฐ๋ฅธ ์ฌ์ฉ๋ฒ ํ์ธ |
|
|
119
|
-
| ๊ณ ๊ธ ๊ธฐ๋ฅ | ์ต์
/์ค์ ํ์ธ |
|
|
120
|
-
|
|
121
|
-
### โ ์ฌ์ฉ ๋ถํ์
|
|
122
|
-
|
|
123
|
-
| ์ํฉ | ์ด์ |
|
|
124
|
-
|------|------|
|
|
125
|
-
| ๊ธฐ๋ณธ ๋ฌธ๋ฒ | ์ด๋ฏธ ๋ฌธ์ํ๋จ |
|
|
126
|
-
| ๋ด๋ถ ์ฝ๋ | Context7 ๋ฒ์ ์ธ |
|
|
127
|
-
| ๋น์ฆ๋์ค ๋ก์ง | ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฌด๊ด |
|
|
128
|
-
|
|
129
|
-
---
|
|
130
|
-
|
|
131
|
-
## ์ค์ ์์
|
|
132
|
-
|
|
133
|
-
### ์์ 1: TanStack Query ์บ์ ๋ฌดํจํ
|
|
134
|
-
|
|
135
|
-
```
|
|
136
|
-
์ํฉ: mutation ํ ๋ชฉ๋ก ๊ฐฑ์ ์ด ์๋จ
|
|
137
|
-
|
|
138
|
-
1. Context7๋ก "invalidation" ํ ํฝ ์กฐํ
|
|
139
|
-
2. queryClient.invalidateQueries ์ฌ์ฉ๋ฒ ํ์ธ
|
|
140
|
-
3. ์ฌ๋ฐ๋ฅธ queryKey ํจํด ์ ์ฉ
|
|
141
|
-
|
|
142
|
-
๊ฒฐ๊ณผ:
|
|
143
|
-
queryClient.invalidateQueries({ queryKey: ['users'] })
|
|
144
|
-
```
|
|
145
|
-
|
|
146
|
-
### ์์ 2: Prisma ๊ด๊ณ ์ฟผ๋ฆฌ
|
|
147
|
-
|
|
148
|
-
```
|
|
149
|
-
์ํฉ: User์ Post๋ฅผ ํจ๊ป ์กฐํํ๊ณ ์ถ์
|
|
150
|
-
|
|
151
|
-
1. Context7๋ก "relations" ํ ํฝ ์กฐํ
|
|
152
|
-
2. include ์ต์
์ฌ์ฉ๋ฒ ํ์ธ
|
|
153
|
-
|
|
154
|
-
๊ฒฐ๊ณผ:
|
|
155
|
-
prisma.user.findUnique({
|
|
156
|
-
where: { id },
|
|
157
|
-
include: { posts: true }
|
|
158
|
-
})
|
|
159
|
-
```
|
|
160
|
-
|
|
161
|
-
### ์์ 3: Zod v4 ๋ง์ด๊ทธ๋ ์ด์
|
|
162
|
-
|
|
163
|
-
```
|
|
164
|
-
์ํฉ: Zod v3 โ v4 ์
๊ทธ๋ ์ด๋
|
|
165
|
-
|
|
166
|
-
1. Context7๋ก "migration" ๋๋ "email" ํ ํฝ ์กฐํ
|
|
167
|
-
2. v4 ์ API ํ์ธ
|
|
168
|
-
|
|
169
|
-
๊ฒฐ๊ณผ:
|
|
170
|
-
// v3: z.string().email()
|
|
171
|
-
// v4: z.email()
|
|
172
|
-
```
|
|
173
|
-
|
|
174
|
-
---
|
|
175
|
-
|
|
176
|
-
## Sequential Thinking๊ณผ ํจ๊ป ์ฌ์ฉ
|
|
177
|
-
|
|
178
|
-
```
|
|
179
|
-
๋ณต์กํ ๊ตฌํ ์:
|
|
180
|
-
|
|
181
|
-
1. Sequential Thinking์ผ๋ก ๊ตฌํ ๊ณํ
|
|
182
|
-
โ
|
|
183
|
-
2. ํ์ํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๊ธฐ๋ฅ ํ์
|
|
184
|
-
โ
|
|
185
|
-
3. Context7๋ก ๊ฐ ๊ธฐ๋ฅ ๋ฌธ์ ์กฐํ
|
|
186
|
-
โ
|
|
187
|
-
4. ๋ฌธ์ ๊ธฐ๋ฐ ๊ตฌํ
|
|
188
|
-
```
|
|
189
|
-
|
|
190
|
-
---
|
|
191
|
-
|
|
192
|
-
## ์ฃผ์์ฌํญ
|
|
193
|
-
|
|
194
|
-
- **์ต์ ๋ฌธ์**: Context7์ ์ต์ ๊ณต์ ๋ฌธ์ ์ ๊ณต
|
|
195
|
-
- **๋ฒ์ ํ์ธ**: ํ๋ก์ ํธ ๋ฒ์ ๊ณผ ๋ฌธ์ ๋ฒ์ ์ผ์น ํ์ธ
|
|
196
|
-
- **ํ ํฝ ์ ํ**: ๊ตฌ์ฒด์ ์ธ ํ ํฝ์ผ๋ก ์กฐํ ์ ๋ ์ ํํ ๊ฒฐ๊ณผ
|
|
197
|
-
|
|
198
|
-
---
|
|
199
|
-
|
|
200
|
-
## ์ฐธ๊ณ
|
|
201
|
-
|
|
202
|
-
- ๋ฌธ์๊ฐ ์ถฉ๋ถํ์ง ์์ผ๋ฉด ๋ค๋ฅธ ํ ํฝ์ผ๋ก ์ฌ์กฐํ
|
|
203
|
-
- ์ฌ๋ฌ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฌธ์๋ฅผ ์ฐ์์ผ๋ก ์กฐํ ๊ฐ๋ฅ
|
|
204
|
-
- Sequential Thinking๊ณผ ์กฐํฉํ์ฌ ์ฒด๊ณ์ ๊ตฌํ
|
|
@@ -1,177 +0,0 @@
|
|
|
1
|
-
# MCP (Model Context Protocol)
|
|
2
|
-
|
|
3
|
-
> Claude Code ์์
ํจ์จ์ฑ์ ๋์ด๋ MCP ์๋ฒ ํ์ฉ ๊ฐ์ด๋
|
|
4
|
-
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
## โ ํ๋ก์ ํธ ์์ ์ ํ์ ํ์ธ
|
|
8
|
-
|
|
9
|
-
**์์
์์ ์ ๋ฐ๋์ ์๋ 3๊ฐ์ง MCP๊ฐ ํ์ฑํ๋์ด ์๋์ง ํ์ธํ์ธ์:**
|
|
10
|
-
|
|
11
|
-
```
|
|
12
|
-
1. Serena - ํ๋ก์ ํธ ํ์ฑํ ํ์ธ
|
|
13
|
-
โ mcp__serena__get_current_config ํธ์ถ
|
|
14
|
-
โ ํ๋ก์ ํธ ๋ฏธํ์ฑํ ์: mcp__serena__activate_project
|
|
15
|
-
|
|
16
|
-
2. Sequential Thinking - ๋ณต์กํ ๋ฌธ์ ๋ถ์์ฉ
|
|
17
|
-
โ ์ฌ์ฉ ๊ฐ๋ฅ ์ฌ๋ถ ํ์ธ
|
|
18
|
-
|
|
19
|
-
3. sgrep - ์ฝ๋๋ฒ ์ด์ค ๊ฒ์์ฉ
|
|
20
|
-
โ grep/rg ๋์ ๋ฐ๋์ sgrep ์ฌ์ฉ
|
|
21
|
-
```
|
|
22
|
-
|
|
23
|
-
---
|
|
24
|
-
|
|
25
|
-
## ๐จ ํ์ ์ฌ์ฉ ๊ท์น
|
|
26
|
-
|
|
27
|
-
```
|
|
28
|
-
โ
ํ๋ก์ ํธ ์์ ์ โ Serena ํ์ฑํ ํ์ธ (ํ์!)
|
|
29
|
-
โ
์ฝ๋๋ฒ ์ด์ค ๊ฒ์ โ sgrep ์ฌ์ฉ (grep/rg ๊ธ์ง)
|
|
30
|
-
โ
๋ณต์กํ ๋ถ์/๋๋ฒ๊น
โ Sequential Thinking ์ฌ์ฉ
|
|
31
|
-
โ
๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฌธ์ ์กฐํ โ Context7 ์ฌ์ฉ
|
|
32
|
-
โ
์ธ์
์ปจํ
์คํธ ์ ์ง โ Serena ๋ฉ๋ชจ๋ฆฌ ํ์ฉ
|
|
33
|
-
โ
๋๊ตฌ ์กฐํฉ: sgrep๋ก ์์น ํ์
โ Sequential๋ก ๋ถ์ โ Context7๋ก ๋ฌธ์ ํ์ธ
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
---
|
|
37
|
-
|
|
38
|
-
## ๐ Quick Reference
|
|
39
|
-
|
|
40
|
-
### Serena - ํ๋ก์ ํธ ์ปจํ
์คํธ ๊ด๋ฆฌ (ํ์)
|
|
41
|
-
|
|
42
|
-
```
|
|
43
|
-
ํ๋ก์ ํธ ์์ ์ (ํ์):
|
|
44
|
-
1. get_current_config โ ํ์ฌ ์ํ ํ์ธ
|
|
45
|
-
2. activate_project โ ํ๋ก์ ํธ ํ์ฑํ
|
|
46
|
-
3. check_onboarding_performed โ ์จ๋ณด๋ฉ ํ์ธ
|
|
47
|
-
|
|
48
|
-
์ฌ์ฉ ์์ :
|
|
49
|
-
- ํ๋ก์ ํธ ์์/์ฌ๊ฐ ์ (ํ์)
|
|
50
|
-
- ์ฌ๋ณผ ํ์/์์
|
|
51
|
-
- ์ธ์
๊ฐ ์ปจํ
์คํธ ์ ์ง (๋ฉ๋ชจ๋ฆฌ)
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
### Sequential Thinking - ๋ณต์กํ ๋ฌธ์ ํด๊ฒฐ
|
|
55
|
-
|
|
56
|
-
```
|
|
57
|
-
์ฌ์ฉ ์์ :
|
|
58
|
-
- ๋ฒ๊ทธ ๋ถ์ ๋ฐ ๋๋ฒ๊น
|
|
59
|
-
- ์ํคํ
์ฒ ์ค๊ณ
|
|
60
|
-
- ๋ณต์กํ ๋ก์ง ๊ตฌํ
|
|
61
|
-
- ์ฝ๋ ๋ฆฌํฉํ ๋ง ๊ณํ
|
|
62
|
-
- ์ฑ๋ฅ ์ต์ ํ ๋ถ์
|
|
63
|
-
|
|
64
|
-
์ฌ์ฉ๋ฒ: ๋ฌธ์ ๋ฅผ ๋จ๊ณ๋ณ๋ก ๋ถํดํ์ฌ ์ฒด๊ณ์ ์ผ๋ก ํด๊ฒฐ
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
### sgrep - ์ฝ๋๋ฒ ์ด์ค ๊ฒ์ (ํ์)
|
|
68
|
-
|
|
69
|
-
```
|
|
70
|
-
์ฌ์ฉ ์์ :
|
|
71
|
-
- ์ฝ๋ ์์น ํ์
|
|
72
|
-
- ์์ฐ์ด ๊ฒ์
|
|
73
|
-
- ์ฌ๋ณผ ์ฐธ์กฐ ์ฐพ๊ธฐ
|
|
74
|
-
|
|
75
|
-
์ฃผ์: grep/rg ๋์ ๋ฐ๋์ sgrep ์ฌ์ฉ!
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
### Context7 - ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฌธ์ ์กฐํ
|
|
79
|
-
|
|
80
|
-
```
|
|
81
|
-
์ฌ์ฉ ์์ :
|
|
82
|
-
- API ์ฌ์ฉ๋ฒ ํ์ธ
|
|
83
|
-
- ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ต์ ๋ฌธ๋ฒ ํ์ธ
|
|
84
|
-
- ๊ณต์ ๋ฌธ์ ๊ธฐ๋ฐ ๊ตฌํ
|
|
85
|
-
- ๋ฒ์ ๋ณ ๋ณ๊ฒฝ์ฌํญ ํ์ธ
|
|
86
|
-
|
|
87
|
-
์ฌ์ฉ๋ฒ:
|
|
88
|
-
1. resolve-library-id๋ก ๋ผ์ด๋ธ๋ฌ๋ฆฌ ID ์กฐํ
|
|
89
|
-
2. get-library-docs๋ก ๋ฌธ์ ๊ฐ์ ธ์ค๊ธฐ
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
---
|
|
93
|
-
|
|
94
|
-
## ๐ ๋ฌธ์ ๊ตฌ์กฐ
|
|
95
|
-
|
|
96
|
-
```
|
|
97
|
-
docs/mcp/
|
|
98
|
-
โโโ index.md # ์ด ๋ฌธ์ (๊ฐ์)
|
|
99
|
-
โโโ serena.md # Serena ํ๋ก์ ํธ ๊ด๋ฆฌ (ํ์)
|
|
100
|
-
โโโ sgrep.md # ์ฝ๋๋ฒ ์ด์ค ๊ฒ์ (ํ์)
|
|
101
|
-
โโโ sequential-thinking.md # Sequential Thinking ์์ธ (ํ์)
|
|
102
|
-
โโโ context7.md # Context7 ์์ธ
|
|
103
|
-
```
|
|
104
|
-
|
|
105
|
-
---
|
|
106
|
-
|
|
107
|
-
## ๐ ๋๊ตฌ ๋ชฉ๋ก
|
|
108
|
-
|
|
109
|
-
| ๋๊ตฌ | ์ฉ๋ | ํ์ ์ฌ๋ถ |
|
|
110
|
-
|-----|------|----------|
|
|
111
|
-
| [Serena](./serena.md) | ํ๋ก์ ํธ ์ปจํ
์คํธ ๊ด๋ฆฌ | โญ ํ์ |
|
|
112
|
-
| [sgrep](./sgrep.md) | ์ฝ๋๋ฒ ์ด์ค ๊ฒ์ | โญ ํ์ |
|
|
113
|
-
| [Sequential Thinking](./sequential-thinking.md) | ์ฒด๊ณ์ ๋ฌธ์ ํด๊ฒฐ | โญ ํ์ |
|
|
114
|
-
| [Context7](./context7.md) | ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฌธ์ | ๊ถ์ฅ |
|
|
115
|
-
|
|
116
|
-
---
|
|
117
|
-
|
|
118
|
-
## โก ์์
๋ณ MCP ์ ํ ๊ฐ์ด๋
|
|
119
|
-
|
|
120
|
-
### ํ๋ก์ ํธ ์์ (ํ์)
|
|
121
|
-
```
|
|
122
|
-
1. Serena: get_current_config๋ก ์ํ ํ์ธ
|
|
123
|
-
2. Serena: activate_project๋ก ํ๋ก์ ํธ ํ์ฑํ
|
|
124
|
-
3. Serena: list_memories๋ก ์ด์ ์ปจํ
์คํธ ํ์ธ
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
### ๋ฒ๊ทธ ์์
|
|
128
|
-
```
|
|
129
|
-
1. sgrep๋ก ๊ด๋ จ ์ฝ๋ ์์น ํ์
|
|
130
|
-
2. Sequential Thinking์ผ๋ก ๋ฌธ์ ๋ถ์
|
|
131
|
-
3. ์์ธ ํ์
ํ Context7๋ก ๊ด๋ จ API ํ์ธ
|
|
132
|
-
4. ์์ ๊ตฌํ
|
|
133
|
-
```
|
|
134
|
-
|
|
135
|
-
### ์ ๊ธฐ๋ฅ ๊ตฌํ
|
|
136
|
-
```
|
|
137
|
-
1. sgrep๋ก ๊ธฐ์กด ํจํด ๊ฒ์
|
|
138
|
-
2. Sequential Thinking์ผ๋ก ๊ตฌํ ๊ณํ ์๋ฆฝ
|
|
139
|
-
3. Context7๋ก ์ฌ์ฉํ ๋ผ์ด๋ธ๋ฌ๋ฆฌ ๋ฌธ์ ํ์ธ
|
|
140
|
-
4. ๋จ๊ณ๋ณ ๊ตฌํ
|
|
141
|
-
5. Serena: write_memory๋ก ์ฃผ์ ๊ฒฐ์ ์ ์ฅ
|
|
142
|
-
```
|
|
143
|
-
|
|
144
|
-
### ๋ผ์ด๋ธ๋ฌ๋ฆฌ ์ฌ์ฉ
|
|
145
|
-
```
|
|
146
|
-
1. Context7๋ก ๊ณต์ ๋ฌธ์ ์กฐํ
|
|
147
|
-
2. ํ์์ Sequential Thinking์ผ๋ก ๋ณต์กํ ํตํฉ ๋ถ์
|
|
148
|
-
```
|
|
149
|
-
|
|
150
|
-
### ์ฑ๋ฅ ์ต์ ํ
|
|
151
|
-
```
|
|
152
|
-
1. sgrep๋ก ๋ณ๋ชฉ ์์ฌ ์ฝ๋ ๊ฒ์
|
|
153
|
-
2. Sequential Thinking์ผ๋ก ๋ณ๋ชฉ ๋ถ์
|
|
154
|
-
3. Context7๋ก ์ต์ ํ ๊ด๋ จ API ํ์ธ
|
|
155
|
-
4. ๊ฐ์ ๊ตฌํ
|
|
156
|
-
```
|
|
157
|
-
|
|
158
|
-
### ์ฝ๋๋ฒ ์ด์ค ํ์
|
|
159
|
-
```
|
|
160
|
-
1. sgrep๋ก ์์ฐ์ด ์ฟผ๋ฆฌ ๊ฒ์
|
|
161
|
-
2. ๊ด๋ จ ์ฝ๋ ์์น ํ์
|
|
162
|
-
3. ํ์์ Sequential Thinking์ผ๋ก ํ๋ฆ ๋ถ์
|
|
163
|
-
```
|
|
164
|
-
|
|
165
|
-
### ์ธ์
์ข
๋ฃ
|
|
166
|
-
```
|
|
167
|
-
1. Serena: write_memory๋ก ์งํ ์ํฉ ์ ์ฅ
|
|
168
|
-
2. ๋ค์ ์ธ์
์์ read_memory๋ก ๋ณต๊ตฌ
|
|
169
|
-
```
|
|
170
|
-
|
|
171
|
-
---
|
|
172
|
-
|
|
173
|
-
## ๐ ๊ด๋ จ ๋ฌธ์
|
|
174
|
-
|
|
175
|
-
- [TanStack Start](../library/tanstack-start/index.md) - Server Functions
|
|
176
|
-
- [Prisma](../library/prisma/index.md) - ORM
|
|
177
|
-
- [Zod](../library/zod/index.md) - Validation
|