@kood/claude-code 0.1.2 → 0.1.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.
Files changed (63) hide show
  1. package/dist/index.js +129 -5
  2. package/package.json +2 -2
  3. package/templates/hono/CLAUDE.md +20 -2
  4. package/templates/hono/docs/architecture/architecture.md +909 -0
  5. package/templates/hono/docs/commands/git.md +275 -0
  6. package/templates/hono/docs/deployment/cloudflare.md +527 -190
  7. package/templates/hono/docs/deployment/docker.md +514 -0
  8. package/templates/hono/docs/deployment/index.md +179 -214
  9. package/templates/hono/docs/deployment/railway.md +416 -0
  10. package/templates/hono/docs/deployment/vercel.md +567 -0
  11. package/templates/hono/docs/library/ai-sdk/index.md +427 -0
  12. package/templates/hono/docs/library/ai-sdk/openrouter.md +479 -0
  13. package/templates/hono/docs/library/ai-sdk/providers.md +468 -0
  14. package/templates/hono/docs/library/ai-sdk/streaming.md +447 -0
  15. package/templates/hono/docs/library/ai-sdk/structured-output.md +493 -0
  16. package/templates/hono/docs/library/ai-sdk/tools.md +513 -0
  17. package/templates/hono/docs/library/hono/env-setup.md +458 -0
  18. package/templates/hono/docs/library/hono/index.md +1 -3
  19. package/templates/hono/docs/library/pino/index.md +437 -0
  20. package/templates/hono/docs/library/prisma/cloudflare-d1.md +503 -0
  21. package/templates/hono/docs/library/prisma/config.md +362 -0
  22. package/templates/hono/docs/library/prisma/index.md +86 -13
  23. package/templates/hono/docs/skills/gemini-review/SKILL.md +116 -116
  24. package/templates/hono/docs/skills/gemini-review/references/checklists.md +125 -125
  25. package/templates/hono/docs/skills/gemini-review/references/prompt-templates.md +191 -191
  26. package/templates/npx/CLAUDE.md +309 -0
  27. package/templates/npx/docs/commands/git.md +275 -0
  28. package/templates/npx/docs/library/commander/index.md +164 -0
  29. package/templates/npx/docs/library/fs-extra/index.md +171 -0
  30. package/templates/npx/docs/library/prompts/index.md +253 -0
  31. package/templates/npx/docs/mcp/index.md +60 -0
  32. package/templates/npx/docs/skills/gemini-review/SKILL.md +220 -0
  33. package/templates/npx/docs/skills/gemini-review/references/checklists.md +134 -0
  34. package/templates/npx/docs/skills/gemini-review/references/prompt-templates.md +301 -0
  35. package/templates/tanstack-start/CLAUDE.md +43 -5
  36. package/templates/tanstack-start/docs/architecture/architecture.md +134 -4
  37. package/templates/tanstack-start/docs/commands/git.md +275 -0
  38. package/templates/tanstack-start/docs/deployment/cloudflare.md +223 -50
  39. package/templates/tanstack-start/docs/deployment/index.md +320 -30
  40. package/templates/tanstack-start/docs/deployment/nitro.md +195 -14
  41. package/templates/tanstack-start/docs/deployment/railway.md +302 -150
  42. package/templates/tanstack-start/docs/deployment/vercel.md +345 -75
  43. package/templates/tanstack-start/docs/guides/best-practices.md +203 -1
  44. package/templates/tanstack-start/docs/guides/env-setup.md +450 -0
  45. package/templates/tanstack-start/docs/library/ai-sdk/hooks.md +472 -0
  46. package/templates/tanstack-start/docs/library/ai-sdk/index.md +264 -0
  47. package/templates/tanstack-start/docs/library/ai-sdk/openrouter.md +371 -0
  48. package/templates/tanstack-start/docs/library/ai-sdk/providers.md +403 -0
  49. package/templates/tanstack-start/docs/library/ai-sdk/streaming.md +320 -0
  50. package/templates/tanstack-start/docs/library/ai-sdk/structured-output.md +454 -0
  51. package/templates/tanstack-start/docs/library/ai-sdk/tools.md +473 -0
  52. package/templates/tanstack-start/docs/library/pino/index.md +320 -0
  53. package/templates/tanstack-start/docs/library/prisma/cloudflare-d1.md +404 -0
  54. package/templates/tanstack-start/docs/library/prisma/config.md +377 -0
  55. package/templates/tanstack-start/docs/library/prisma/index.md +3 -5
  56. package/templates/tanstack-start/docs/library/prisma/schema.md +123 -25
  57. package/templates/tanstack-start/docs/library/prisma/setup.md +0 -7
  58. package/templates/tanstack-start/docs/library/tanstack-start/server-functions.md +80 -2
  59. package/templates/tanstack-start/docs/skills/gemini-review/SKILL.md +116 -116
  60. package/templates/tanstack-start/docs/skills/gemini-review/references/checklists.md +138 -144
  61. package/templates/tanstack-start/docs/skills/gemini-review/references/prompt-templates.md +186 -187
  62. package/templates/hono/docs/git/index.md +0 -180
  63. package/templates/tanstack-start/docs/git/index.md +0 -203
@@ -0,0 +1,362 @@
1
+ # Prisma - Config 파일 (prisma.config.ts)
2
+
3
+ > **상위 문서**: [Prisma](./index.md)
4
+
5
+ Prisma v7에서 도입된 `prisma.config.ts` 설정 파일입니다.
6
+
7
+ ---
8
+
9
+ ## ⚠️ 필수: Multi-File 스키마 설정
10
+
11
+ Multi-File 스키마를 사용하려면 **반드시** `prisma.config.ts`에서 스키마 폴더를 지정해야 합니다.
12
+
13
+ ```typescript
14
+ // prisma.config.ts
15
+ import path from 'node:path'
16
+ import { defineConfig, env } from 'prisma/config'
17
+
18
+ export default defineConfig({
19
+ // Multi-File 스키마 폴더 지정
20
+ schema: path.join('prisma', 'schema'),
21
+ datasource: {
22
+ url: env('DATABASE_URL'),
23
+ },
24
+ })
25
+ ```
26
+
27
+ ---
28
+
29
+ ## 파일 위치 및 이름
30
+
31
+ ### 지원되는 파일명
32
+
33
+ ```
34
+ prisma.config.ts # 권장 (소규모 프로젝트)
35
+ prisma.config.js
36
+ prisma.config.mjs
37
+ prisma.config.cjs
38
+ prisma.config.mts
39
+ prisma.config.cts
40
+
41
+ .config/prisma.ts # 권장 (대규모 프로젝트)
42
+ .config/prisma.js
43
+ ```
44
+
45
+ ### 권장 위치
46
+
47
+ ```
48
+ 프로젝트/
49
+ ├── prisma.config.ts # 프로젝트 루트
50
+ ├── prisma/
51
+ │ ├── schema/ # Multi-File 스키마 폴더
52
+ │ │ ├── +base.prisma
53
+ │ │ ├── +enum.prisma
54
+ │ │ └── user.prisma
55
+ │ └── migrations/ # 마이그레이션 폴더
56
+ ├── src/
57
+ │ └── index.ts # Hono 앱 진입점
58
+ └── package.json
59
+ ```
60
+
61
+ ---
62
+
63
+ ## 설정 옵션
64
+
65
+ ### 전체 옵션 목록
66
+
67
+ | 옵션 | 타입 | 필수 | 설명 |
68
+ |------|------|------|------|
69
+ | `schema` | string | ❌ | 스키마 파일 또는 폴더 경로 |
70
+ | `datasource.url` | string | ✅ | 데이터베이스 연결 URL |
71
+ | `datasource.shadowDatabaseUrl` | string | ❌ | Shadow DB URL |
72
+ | `migrations.path` | string | ❌ | 마이그레이션 폴더 경로 |
73
+ | `migrations.seed` | string | ❌ | 시드 스크립트 명령어 |
74
+ | `migrations.initShadowDb` | string | ❌ | Shadow DB 초기화 SQL |
75
+ | `views.path` | string | ❌ | SQL 뷰 정의 폴더 |
76
+ | `typedSql.path` | string | ❌ | TypedSQL 파일 폴더 |
77
+ | `experimental` | object | ❌ | 실험적 기능 활성화 |
78
+
79
+ ---
80
+
81
+ ## 기본 설정 예시
82
+
83
+ ### defineConfig 사용 (권장)
84
+
85
+ ```typescript
86
+ // prisma.config.ts
87
+ import 'dotenv/config'
88
+ import { defineConfig, env } from 'prisma/config'
89
+
90
+ export default defineConfig({
91
+ // Multi-File 스키마 설정
92
+ schema: 'prisma/schema',
93
+
94
+ // 마이그레이션 설정
95
+ migrations: {
96
+ path: 'prisma/migrations',
97
+ seed: 'tsx prisma/seed.ts',
98
+ },
99
+
100
+ // 데이터베이스 연결
101
+ datasource: {
102
+ url: env('DATABASE_URL'),
103
+ },
104
+ })
105
+ ```
106
+
107
+ ### satisfies 사용
108
+
109
+ ```typescript
110
+ // prisma.config.ts
111
+ import 'dotenv/config'
112
+ import type { PrismaConfig } from 'prisma'
113
+ import { env } from 'prisma/config'
114
+
115
+ export default {
116
+ schema: 'prisma/schema',
117
+ migrations: {
118
+ path: 'prisma/migrations',
119
+ seed: 'tsx prisma/seed.ts',
120
+ },
121
+ datasource: {
122
+ url: env('DATABASE_URL'),
123
+ },
124
+ } satisfies PrismaConfig
125
+ ```
126
+
127
+ ---
128
+
129
+ ## Multi-File 스키마 설정
130
+
131
+ ### 필수 설정
132
+
133
+ ```typescript
134
+ // prisma.config.ts
135
+ import path from 'node:path'
136
+ import { defineConfig, env } from 'prisma/config'
137
+
138
+ export default defineConfig({
139
+ // ⚠️ 폴더 경로 지정 (파일이 아님!)
140
+ schema: path.join('prisma', 'schema'),
141
+ datasource: {
142
+ url: env('DATABASE_URL'),
143
+ },
144
+ })
145
+ ```
146
+
147
+ ### 폴더 구조
148
+
149
+ ```
150
+ prisma/
151
+ ├── schema/ # Multi-File 스키마 폴더
152
+ │ ├── +base.prisma # datasource, generator 설정
153
+ │ ├── +enum.prisma # 모든 enum 정의
154
+ │ ├── user.prisma # User 모델
155
+ │ ├── post.prisma # Post 모델
156
+ │ └── ...
157
+ └── migrations/ # ⚠️ datasource와 같은 레벨에 위치
158
+ ```
159
+
160
+ ### +base.prisma 예시
161
+
162
+ ```prisma
163
+ // prisma/schema/+base.prisma
164
+ // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
165
+ // Prisma 기본 설정 파일
166
+ // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
167
+
168
+ // 데이터베이스 연결 설정
169
+ datasource db {
170
+ provider = "postgresql"
171
+ url = env("DATABASE_URL")
172
+ }
173
+
174
+ // Prisma Client 생성 설정
175
+ generator client {
176
+ provider = "prisma-client" // Prisma v7 필수
177
+ output = "../../generated/prisma"
178
+ }
179
+ ```
180
+
181
+ ---
182
+
183
+ ## 환경 변수 설정
184
+
185
+ ### dotenv 설치
186
+
187
+ ```bash
188
+ npm install dotenv
189
+ ```
190
+
191
+ ### 환경 변수 사용
192
+
193
+ ```typescript
194
+ // prisma.config.ts
195
+ import 'dotenv/config' // ⚠️ 반드시 최상단에 import
196
+ import { defineConfig, env } from 'prisma/config'
197
+
198
+ export default defineConfig({
199
+ schema: 'prisma/schema',
200
+ datasource: {
201
+ url: env('DATABASE_URL'), // 타입 안전한 환경 변수 접근
202
+ },
203
+ })
204
+ ```
205
+
206
+ ### .env 파일
207
+
208
+ ```env
209
+ DATABASE_URL="postgresql://user:password@localhost:5432/mydb"
210
+ ```
211
+
212
+ ---
213
+
214
+ ## 마이그레이션 설정
215
+
216
+ ### 시드 스크립트
217
+
218
+ ```typescript
219
+ // prisma.config.ts
220
+ import { defineConfig, env } from 'prisma/config'
221
+
222
+ export default defineConfig({
223
+ schema: 'prisma/schema',
224
+ migrations: {
225
+ path: 'prisma/migrations',
226
+ seed: 'tsx prisma/seed.ts', // 시드 명령어
227
+ },
228
+ datasource: {
229
+ url: env('DATABASE_URL'),
230
+ },
231
+ })
232
+ ```
233
+
234
+ ### 시드 파일 예시
235
+
236
+ ```typescript
237
+ // prisma/seed.ts
238
+ import { PrismaClient } from '../generated/prisma'
239
+
240
+ const prisma = new PrismaClient()
241
+
242
+ async function main() {
243
+ // 초기 데이터 생성
244
+ await prisma.user.create({
245
+ data: {
246
+ email: 'admin@example.com',
247
+ name: '관리자',
248
+ },
249
+ })
250
+ }
251
+
252
+ main()
253
+ .catch(console.error)
254
+ .finally(() => prisma.$disconnect())
255
+ ```
256
+
257
+ ---
258
+
259
+ ## Cloudflare Workers 설정
260
+
261
+ Cloudflare Workers/D1 환경에서는 추가 설정이 필요합니다.
262
+
263
+ ```typescript
264
+ // prisma.config.ts
265
+ import { defineConfig, env } from 'prisma/config'
266
+
267
+ export default defineConfig({
268
+ schema: 'prisma/schema',
269
+ datasource: {
270
+ url: env('DATABASE_URL'),
271
+ },
272
+ })
273
+ ```
274
+
275
+ ```prisma
276
+ // prisma/schema/+base.prisma
277
+ generator client {
278
+ provider = "prisma-client"
279
+ output = "../../generated/prisma"
280
+ runtime = "workerd" // Cloudflare Workers 런타임
281
+ }
282
+
283
+ datasource db {
284
+ provider = "sqlite" // D1은 SQLite 기반
285
+ url = env("DATABASE_URL")
286
+ }
287
+ ```
288
+
289
+ ---
290
+
291
+ ## 경로 해석 규칙
292
+
293
+ ### 중요 사항
294
+
295
+ - 모든 경로는 **config 파일 위치 기준**으로 해석됩니다
296
+ - CLI 명령어 실행 위치가 아닙니다!
297
+
298
+ ### 예시
299
+
300
+ ```
301
+ 프로젝트/
302
+ ├── prisma.config.ts # 여기가 기준!
303
+ ├── prisma/
304
+ │ └── schema/
305
+ └── src/
306
+ ```
307
+
308
+ ```typescript
309
+ // prisma.config.ts
310
+ export default defineConfig({
311
+ // ✅ prisma.config.ts 기준 상대 경로
312
+ schema: 'prisma/schema',
313
+
314
+ // ❌ 이렇게 하지 마세요
315
+ schema: './prisma/schema', // ./ 불필요
316
+ })
317
+ ```
318
+
319
+ ### 커스텀 경로 지정
320
+
321
+ ```bash
322
+ # --config 플래그로 config 파일 위치 지정
323
+ npx prisma validate --config ./path/to/myconfig.ts
324
+ ```
325
+
326
+ ---
327
+
328
+ ## 전체 설정 예시
329
+
330
+ ```typescript
331
+ // prisma.config.ts
332
+ // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
333
+ // Prisma v7 설정 파일
334
+ // Multi-File 스키마 및 마이그레이션 설정
335
+ // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
336
+ import 'dotenv/config'
337
+ import path from 'node:path'
338
+ import { defineConfig, env } from 'prisma/config'
339
+
340
+ export default defineConfig({
341
+ // Multi-File 스키마 폴더
342
+ schema: path.join('prisma', 'schema'),
343
+
344
+ // 마이그레이션 설정
345
+ migrations: {
346
+ path: 'prisma/migrations',
347
+ seed: 'tsx prisma/seed.ts',
348
+ },
349
+
350
+ // 데이터베이스 연결
351
+ datasource: {
352
+ url: env('DATABASE_URL'),
353
+ },
354
+ })
355
+ ```
356
+
357
+ ---
358
+
359
+ ## 관련 문서
360
+
361
+ - [Prisma v7 개요](./index.md)
362
+ - [Cloudflare D1](./cloudflare-d1.md)
@@ -39,35 +39,106 @@ npm install -D prisma
39
39
 
40
40
  ## Schema 설정
41
41
 
42
- ### schema.prisma (v7)
42
+ ### ⚠️ 필수: Multi-File 구조 사용
43
+
44
+ Prisma 스키마는 **반드시 Multi-File 구조**로 작성합니다.
45
+
46
+ ```
47
+ prisma/
48
+ ├── schema/
49
+ │ ├── +base.prisma # datasource, generator 설정
50
+ │ ├── +enum.prisma # 모든 enum 정의
51
+ │ ├── user.prisma # User 모델
52
+ │ ├── post.prisma # Post 모델
53
+ │ └── ... # 기타 모델별 파일
54
+ ```
55
+
56
+ ### ⚠️ 필수: 한글 주석 작성
57
+
58
+ **Prisma Multi-File의 모든 요소에 한글 주석을 작성해야 합니다.**
59
+
60
+ ```
61
+ ✅ 파일별 목적 주석
62
+ ✅ 모델별 설명 주석
63
+ ✅ 필드별 설명 주석 (용도가 명확하지 않은 경우)
64
+ ✅ 관계 설명 주석
65
+ ✅ enum 값 설명 주석
66
+ ```
67
+
68
+ ### Multi-File 스키마 예시
69
+
70
+ #### +base.prisma (기본 설정)
43
71
 
44
72
  ```prisma
45
- generator client {
46
- provider = "prisma-client" // ✅ v7
47
- output = "./generated/client" // output 필수
48
- }
73
+ // prisma/schema/+base.prisma
74
+ // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
75
+ // Prisma 기본 설정 파일
76
+ // datasource 및 generator 설정
77
+ // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
49
78
 
79
+ // 데이터베이스 연결 설정
50
80
  datasource db {
51
81
  provider = "postgresql"
52
82
  url = env("DATABASE_URL")
53
83
  }
54
84
 
85
+ // Prisma Client 생성 설정
86
+ generator client {
87
+ provider = "prisma-client" // Prisma v7 필수
88
+ output = "./generated/client"
89
+ }
90
+ ```
91
+
92
+ #### +enum.prisma (열거형 정의)
93
+
94
+ ```prisma
95
+ // prisma/schema/+enum.prisma
96
+ // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
97
+ // 모든 열거형(enum) 정의 파일
98
+ // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
99
+
100
+ // 사용자 권한 열거형
101
+ enum Role {
102
+ USER // 일반 사용자
103
+ ADMIN // 관리자
104
+ }
105
+ ```
106
+
107
+ #### user.prisma (User 모델)
108
+
109
+ ```prisma
110
+ // prisma/schema/user.prisma
111
+ // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
112
+ // 사용자 모델
113
+ // 시스템의 모든 사용자 정보를 저장
114
+ // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
115
+
55
116
  model User {
56
117
  id String @id @default(cuid())
57
- email String @unique
58
- name String?
59
- posts Post[]
118
+ email String @unique // 로그인 이메일 (중복 불가)
119
+ name String? // 표시 이름 (선택)
120
+ posts Post[] // 작성한 게시글 목록
60
121
  createdAt DateTime @default(now())
61
122
  updatedAt DateTime @updatedAt
62
123
  }
124
+ ```
125
+
126
+ #### post.prisma (Post 모델)
127
+
128
+ ```prisma
129
+ // prisma/schema/post.prisma
130
+ // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
131
+ // 게시글 모델
132
+ // 사용자가 작성한 게시글 정보
133
+ // ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
63
134
 
64
135
  model Post {
65
136
  id String @id @default(cuid())
66
- title String
67
- content String?
68
- published Boolean @default(false)
69
- author User @relation(fields: [authorId], references: [id])
70
- authorId String
137
+ title String // 게시글 제목
138
+ content String? // 게시글 본문 (선택)
139
+ published Boolean @default(false) // 공개 여부
140
+ author User @relation(fields: [authorId], references: [id]) // 작성자 관계
141
+ authorId String // 작성자 ID (외래키)
71
142
  createdAt DateTime @default(now())
72
143
  updatedAt DateTime @updatedAt
73
144
  }
@@ -422,6 +493,8 @@ export default app
422
493
 
423
494
  ## 관련 문서
424
495
 
496
+ - [Config 파일](./config.md) - prisma.config.ts 설정 ⭐
425
497
  - [Schema 정의](./schema.md)
426
498
  - [Relations](./relations.md)
427
499
  - [Transactions](./transactions.md)
500
+ - [Cloudflare D1](./cloudflare-d1.md) - D1 서버리스 데이터베이스 연동