@kood/claude-code 0.1.0

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 (78) hide show
  1. package/dist/index.d.ts +2 -0
  2. package/dist/index.js +297 -0
  3. package/package.json +47 -0
  4. package/templates/hono/CLAUDE.md +376 -0
  5. package/templates/hono/docs/deployment/cloudflare.md +328 -0
  6. package/templates/hono/docs/deployment/index.md +291 -0
  7. package/templates/hono/docs/git/index.md +180 -0
  8. package/templates/hono/docs/library/hono/error-handling.md +400 -0
  9. package/templates/hono/docs/library/hono/index.md +241 -0
  10. package/templates/hono/docs/library/hono/middleware.md +334 -0
  11. package/templates/hono/docs/library/hono/rpc.md +454 -0
  12. package/templates/hono/docs/library/hono/validation.md +328 -0
  13. package/templates/hono/docs/library/prisma/index.md +427 -0
  14. package/templates/hono/docs/library/zod/index.md +413 -0
  15. package/templates/hono/docs/mcp/context7.md +106 -0
  16. package/templates/hono/docs/mcp/index.md +94 -0
  17. package/templates/hono/docs/mcp/sequential-thinking.md +101 -0
  18. package/templates/hono/docs/mcp/sgrep.md +105 -0
  19. package/templates/hono/docs/skills/gemini-review/SKILL.md +220 -0
  20. package/templates/hono/docs/skills/gemini-review/references/checklists.md +136 -0
  21. package/templates/hono/docs/skills/gemini-review/references/prompt-templates.md +303 -0
  22. package/templates/tanstack-start/CLAUDE.md +279 -0
  23. package/templates/tanstack-start/docs/architecture/architecture.md +547 -0
  24. package/templates/tanstack-start/docs/deployment/cloudflare.md +346 -0
  25. package/templates/tanstack-start/docs/deployment/index.md +102 -0
  26. package/templates/tanstack-start/docs/deployment/nitro.md +211 -0
  27. package/templates/tanstack-start/docs/deployment/railway.md +364 -0
  28. package/templates/tanstack-start/docs/deployment/vercel.md +287 -0
  29. package/templates/tanstack-start/docs/design/accessibility.md +433 -0
  30. package/templates/tanstack-start/docs/design/color.md +235 -0
  31. package/templates/tanstack-start/docs/design/components.md +409 -0
  32. package/templates/tanstack-start/docs/design/index.md +107 -0
  33. package/templates/tanstack-start/docs/design/safe-area.md +317 -0
  34. package/templates/tanstack-start/docs/design/spacing.md +341 -0
  35. package/templates/tanstack-start/docs/design/tailwind-setup.md +470 -0
  36. package/templates/tanstack-start/docs/design/typography.md +324 -0
  37. package/templates/tanstack-start/docs/git/index.md +203 -0
  38. package/templates/tanstack-start/docs/guides/best-practices.md +753 -0
  39. package/templates/tanstack-start/docs/guides/getting-started.md +304 -0
  40. package/templates/tanstack-start/docs/guides/husky-lint-staged.md +303 -0
  41. package/templates/tanstack-start/docs/guides/prettier.md +189 -0
  42. package/templates/tanstack-start/docs/guides/project-templates.md +710 -0
  43. package/templates/tanstack-start/docs/library/better-auth/2fa.md +136 -0
  44. package/templates/tanstack-start/docs/library/better-auth/advanced.md +138 -0
  45. package/templates/tanstack-start/docs/library/better-auth/index.md +83 -0
  46. package/templates/tanstack-start/docs/library/better-auth/plugins.md +111 -0
  47. package/templates/tanstack-start/docs/library/better-auth/session.md +127 -0
  48. package/templates/tanstack-start/docs/library/better-auth/setup.md +123 -0
  49. package/templates/tanstack-start/docs/library/prisma/crud.md +218 -0
  50. package/templates/tanstack-start/docs/library/prisma/index.md +165 -0
  51. package/templates/tanstack-start/docs/library/prisma/relations.md +191 -0
  52. package/templates/tanstack-start/docs/library/prisma/schema.md +177 -0
  53. package/templates/tanstack-start/docs/library/prisma/setup.md +156 -0
  54. package/templates/tanstack-start/docs/library/prisma/transactions.md +140 -0
  55. package/templates/tanstack-start/docs/library/tanstack-query/index.md +146 -0
  56. package/templates/tanstack-start/docs/library/tanstack-query/invalidation.md +146 -0
  57. package/templates/tanstack-start/docs/library/tanstack-query/optimistic-updates.md +196 -0
  58. package/templates/tanstack-start/docs/library/tanstack-query/setup.md +110 -0
  59. package/templates/tanstack-start/docs/library/tanstack-query/use-mutation.md +170 -0
  60. package/templates/tanstack-start/docs/library/tanstack-query/use-query.md +173 -0
  61. package/templates/tanstack-start/docs/library/tanstack-start/auth-patterns.md +171 -0
  62. package/templates/tanstack-start/docs/library/tanstack-start/index.md +114 -0
  63. package/templates/tanstack-start/docs/library/tanstack-start/middleware.md +142 -0
  64. package/templates/tanstack-start/docs/library/tanstack-start/routing.md +163 -0
  65. package/templates/tanstack-start/docs/library/tanstack-start/server-functions.md +128 -0
  66. package/templates/tanstack-start/docs/library/tanstack-start/setup.md +85 -0
  67. package/templates/tanstack-start/docs/library/zod/basic-types.md +186 -0
  68. package/templates/tanstack-start/docs/library/zod/complex-types.md +204 -0
  69. package/templates/tanstack-start/docs/library/zod/index.md +186 -0
  70. package/templates/tanstack-start/docs/library/zod/transforms.md +174 -0
  71. package/templates/tanstack-start/docs/library/zod/validation.md +208 -0
  72. package/templates/tanstack-start/docs/mcp/context7.md +204 -0
  73. package/templates/tanstack-start/docs/mcp/index.md +116 -0
  74. package/templates/tanstack-start/docs/mcp/sequential-thinking.md +180 -0
  75. package/templates/tanstack-start/docs/mcp/sgrep.md +174 -0
  76. package/templates/tanstack-start/docs/skills/gemini-review/SKILL.md +220 -0
  77. package/templates/tanstack-start/docs/skills/gemini-review/references/checklists.md +150 -0
  78. package/templates/tanstack-start/docs/skills/gemini-review/references/prompt-templates.md +293 -0
@@ -0,0 +1,218 @@
1
+ # Prisma - CRUD 작업
2
+
3
+ > **상위 문서**: [Prisma](./index.md)
4
+
5
+ ## Create (생성)
6
+
7
+ ### 단일 레코드 생성
8
+
9
+ ```typescript
10
+ const user = await prisma.user.create({
11
+ data: {
12
+ email: 'alice@prisma.io',
13
+ name: 'Alice',
14
+ },
15
+ })
16
+ ```
17
+
18
+ ### 관계 포함 생성
19
+
20
+ ```typescript
21
+ const userWithPosts = await prisma.user.create({
22
+ data: {
23
+ email: 'bob@prisma.io',
24
+ name: 'Bob',
25
+ posts: {
26
+ create: [
27
+ { title: 'Hello World' },
28
+ { title: 'My Second Post' },
29
+ ],
30
+ },
31
+ },
32
+ include: {
33
+ posts: true,
34
+ },
35
+ })
36
+ ```
37
+
38
+ ### connectOrCreate로 깊은 중첩 생성
39
+
40
+ ```typescript
41
+ const user = await prisma.user.create({
42
+ include: {
43
+ posts: {
44
+ include: {
45
+ categories: true,
46
+ },
47
+ },
48
+ },
49
+ data: {
50
+ email: 'emma@prisma.io',
51
+ posts: {
52
+ create: [
53
+ {
54
+ title: 'My first post',
55
+ categories: {
56
+ connectOrCreate: [
57
+ {
58
+ create: { name: 'Introductions' },
59
+ where: { name: 'Introductions' },
60
+ },
61
+ {
62
+ create: { name: 'Social' },
63
+ where: { name: 'Social' },
64
+ },
65
+ ],
66
+ },
67
+ },
68
+ ],
69
+ },
70
+ },
71
+ })
72
+ ```
73
+
74
+ ## Read (조회)
75
+
76
+ ### 단일 레코드 조회
77
+
78
+ ```typescript
79
+ const user = await prisma.user.findUnique({
80
+ where: { email: 'alice@prisma.io' },
81
+ })
82
+ ```
83
+
84
+ ### 필터링된 다중 레코드 조회
85
+
86
+ ```typescript
87
+ const users = await prisma.user.findMany({
88
+ where: { name: 'Alice' },
89
+ })
90
+ ```
91
+
92
+ ### 관계 포함 조회
93
+
94
+ ```typescript
95
+ const users = await prisma.user.findMany({
96
+ where: { role: 'ADMIN' },
97
+ include: { posts: true },
98
+ })
99
+ ```
100
+
101
+ ### 특정 필드만 선택
102
+
103
+ ```typescript
104
+ const user = await prisma.user.findUnique({
105
+ where: { email: 'emma@prisma.io' },
106
+ select: {
107
+ email: true,
108
+ posts: {
109
+ select: { likes: true },
110
+ },
111
+ },
112
+ })
113
+ ```
114
+
115
+ ### 관계 필드로 필터링
116
+
117
+ ```typescript
118
+ const users = await prisma.user.findMany({
119
+ where: {
120
+ email: { endsWith: 'prisma.io' },
121
+ posts: {
122
+ some: { published: false },
123
+ },
124
+ },
125
+ })
126
+ ```
127
+
128
+ ## Update (수정)
129
+
130
+ ### 단일 레코드 수정
131
+
132
+ ```typescript
133
+ const user = await prisma.user.update({
134
+ where: { email: 'alice@prisma.io' },
135
+ data: { name: 'Alice Updated' },
136
+ })
137
+ ```
138
+
139
+ ### 다중 레코드 수정
140
+
141
+ ```typescript
142
+ const updatedUsers = await prisma.user.updateMany({
143
+ where: { role: 'USER' },
144
+ data: { role: 'ADMIN' },
145
+ })
146
+ ```
147
+
148
+ ### Upsert (있으면 수정, 없으면 생성)
149
+
150
+ ```typescript
151
+ const user = await prisma.user.upsert({
152
+ where: { email: 'alice@prisma.io' },
153
+ update: { name: 'Alice Updated' },
154
+ create: { email: 'alice@prisma.io', name: 'Alice' },
155
+ })
156
+ ```
157
+
158
+ ## Delete (삭제)
159
+
160
+ ### 단일 레코드 삭제
161
+
162
+ ```typescript
163
+ const deletedUser = await prisma.user.delete({
164
+ where: { email: 'alice@prisma.io' },
165
+ })
166
+ ```
167
+
168
+ ### 모든 레코드 삭제
169
+
170
+ ```typescript
171
+ const deleteUsers = await prisma.user.deleteMany({})
172
+ ```
173
+
174
+ ### 조건부 삭제
175
+
176
+ ```typescript
177
+ const deletedPosts = await prisma.post.deleteMany({
178
+ where: { published: false },
179
+ })
180
+ ```
181
+
182
+ ## 필터 연산자
183
+
184
+ ```typescript
185
+ // 문자열 필터
186
+ where: {
187
+ email: { contains: 'prisma' },
188
+ name: { startsWith: 'A' },
189
+ title: { endsWith: 'guide' },
190
+ }
191
+
192
+ // 숫자 필터
193
+ where: {
194
+ age: { gt: 18 }, // greater than
195
+ age: { gte: 18 }, // greater than or equal
196
+ age: { lt: 65 }, // less than
197
+ age: { lte: 65 }, // less than or equal
198
+ }
199
+
200
+ // 배열 필터
201
+ where: {
202
+ id: { in: [1, 2, 3] },
203
+ id: { notIn: [4, 5, 6] },
204
+ }
205
+
206
+ // 논리 연산자
207
+ where: {
208
+ OR: [
209
+ { email: { contains: 'prisma' } },
210
+ { name: { contains: 'Prisma' } },
211
+ ],
212
+ AND: [
213
+ { published: true },
214
+ { authorId: 1 },
215
+ ],
216
+ NOT: { email: { contains: 'test' } },
217
+ }
218
+ ```
@@ -0,0 +1,165 @@
1
+ # Prisma
2
+
3
+ > **Version**: 7.x | Node.js/TypeScript ORM
4
+
5
+ ---
6
+
7
+ ## 🚀 Quick Reference (복사용)
8
+
9
+ ```typescript
10
+ // Prisma Client 설정
11
+ import { PrismaClient } from './generated/prisma' // v7 경로!
12
+
13
+ export const prisma = new PrismaClient()
14
+
15
+ // CRUD
16
+ const users = await prisma.user.findMany()
17
+ const user = await prisma.user.create({ data: { email, name } })
18
+ const updated = await prisma.user.update({ where: { id }, data: { name } })
19
+ const deleted = await prisma.user.delete({ where: { id } })
20
+
21
+ // 관계 포함
22
+ const userWithPosts = await prisma.user.findUnique({
23
+ where: { id },
24
+ include: { posts: true },
25
+ })
26
+ ```
27
+
28
+ ### v7 schema.prisma (⚠️ 중요)
29
+
30
+ ```prisma
31
+ generator client {
32
+ provider = "prisma-client" // v7! (prisma-client-js 아님)
33
+ output = "../generated/prisma" // output 필수!
34
+ }
35
+ ```
36
+
37
+ ### ⛔ Claude Code 금지
38
+
39
+ ```
40
+ ❌ prisma db push 자동 실행 금지
41
+ ❌ prisma migrate 자동 실행 금지
42
+ ❌ prisma generate 자동 실행 금지
43
+ ❌ schema.prisma 임의 변경 금지
44
+ ```
45
+
46
+ ---
47
+
48
+ ## 문서 구조
49
+
50
+ - [설치 및 설정](./setup.md) - Prisma Client 설정
51
+ - [스키마 정의](./schema.md) - 모델, 관계, Enum 정의
52
+ - [CRUD 작업](./crud.md) - Create, Read, Update, Delete
53
+ - [관계 쿼리](./relations.md) - 중첩 생성, 관계 포함 조회
54
+ - [트랜잭션](./transactions.md) - 배열 기반 트랜잭션, 인터랙티브 트랜잭션
55
+
56
+ ## 빠른 시작
57
+
58
+ ```bash
59
+ # npm
60
+ npm install @prisma/client@7
61
+ npm install -D prisma@7
62
+
63
+ # yarn
64
+ yarn add @prisma/client@7
65
+ yarn add -D prisma@7
66
+
67
+ # pnpm
68
+ pnpm add @prisma/client@7
69
+ pnpm add -D prisma@7
70
+
71
+ # 초기화
72
+ npx prisma init
73
+ ```
74
+
75
+ ## v7 주요 변경사항
76
+
77
+ ### 새로운 Generator Provider
78
+
79
+ ```prisma
80
+ // schema.prisma
81
+ generator client {
82
+ provider = "prisma-client" // prisma-client-js → prisma-client
83
+ output = "../generated/prisma" // output 필드 필수
84
+ }
85
+ ```
86
+
87
+ ### 새로운 옵션들
88
+
89
+ ```prisma
90
+ generator client {
91
+ provider = "prisma-client"
92
+ output = "../generated/prisma"
93
+ runtime = "nodejs" // nodejs, deno, bun, workerd, vercel-edge, react-native
94
+ moduleFormat = "esm" // esm 또는 cjs
95
+ previewFeatures = ["queryCompiler", "driverAdapters"]
96
+ }
97
+ ```
98
+
99
+ ## 핵심 개념
100
+
101
+ ### Prisma Client 설정
102
+
103
+ ```typescript
104
+ // lib/prisma.ts
105
+ import { PrismaClient } from './generated/prisma'
106
+
107
+ const globalForPrisma = globalThis as unknown as {
108
+ prisma: PrismaClient | undefined
109
+ }
110
+
111
+ export const prisma =
112
+ globalForPrisma.prisma ??
113
+ new PrismaClient({
114
+ log: ['query'],
115
+ })
116
+
117
+ if (process.env.NODE_ENV !== 'production') globalForPrisma.prisma = prisma
118
+ ```
119
+
120
+ ### 기본 쿼리
121
+
122
+ ```typescript
123
+ // 조회
124
+ const users = await prisma.user.findMany()
125
+
126
+ // 생성
127
+ const user = await prisma.user.create({
128
+ data: { email: 'alice@prisma.io', name: 'Alice' },
129
+ })
130
+
131
+ // 수정
132
+ const updated = await prisma.user.update({
133
+ where: { id: 1 },
134
+ data: { name: 'Updated Name' },
135
+ })
136
+
137
+ // 삭제
138
+ const deleted = await prisma.user.delete({
139
+ where: { id: 1 },
140
+ })
141
+ ```
142
+
143
+ ## 마이그레이션 명령어
144
+
145
+ ```bash
146
+ # 개발 환경 마이그레이션
147
+ npx prisma migrate dev --name init
148
+
149
+ # 프로덕션 마이그레이션
150
+ npx prisma migrate deploy
151
+
152
+ # 스키마 동기화 (개발용)
153
+ npx prisma db push
154
+
155
+ # Prisma Client 생성
156
+ npx prisma generate
157
+
158
+ # Prisma Studio (GUI)
159
+ npx prisma studio
160
+ ```
161
+
162
+ ## 참고 자료
163
+
164
+ - [Prisma 공식 문서](https://www.prisma.io/docs)
165
+ - [Prisma GitHub](https://github.com/prisma/prisma)
@@ -0,0 +1,191 @@
1
+ # Prisma - 관계 쿼리
2
+
3
+ > **상위 문서**: [Prisma](./index.md)
4
+
5
+ ## 중첩 생성 (Nested Create)
6
+
7
+ ```typescript
8
+ const result = await prisma.user.create({
9
+ data: {
10
+ email: 'elsa@prisma.io',
11
+ name: 'Elsa Prisma',
12
+ posts: {
13
+ create: [
14
+ { title: 'How to make an omelette' },
15
+ { title: 'How to eat an omelette' },
16
+ ],
17
+ },
18
+ },
19
+ include: {
20
+ posts: true,
21
+ },
22
+ })
23
+ ```
24
+
25
+ ## 관계 연결
26
+
27
+ ### connect - 기존 레코드 연결
28
+
29
+ ```typescript
30
+ const post = await prisma.post.create({
31
+ data: {
32
+ title: 'New Post',
33
+ author: {
34
+ connect: { id: 1 },
35
+ },
36
+ },
37
+ })
38
+ ```
39
+
40
+ ### connectOrCreate - 있으면 연결, 없으면 생성
41
+
42
+ ```typescript
43
+ const post = await prisma.post.create({
44
+ data: {
45
+ title: 'New Post',
46
+ categories: {
47
+ connectOrCreate: {
48
+ where: { name: 'Technology' },
49
+ create: { name: 'Technology' },
50
+ },
51
+ },
52
+ },
53
+ })
54
+ ```
55
+
56
+ ### disconnect - 관계 해제
57
+
58
+ ```typescript
59
+ const post = await prisma.post.update({
60
+ where: { id: 1 },
61
+ data: {
62
+ author: {
63
+ disconnect: true,
64
+ },
65
+ },
66
+ })
67
+ ```
68
+
69
+ ## 관계 포함 조회
70
+
71
+ ### include 사용
72
+
73
+ ```typescript
74
+ const users = await prisma.user.findMany({
75
+ include: {
76
+ posts: true,
77
+ profile: true,
78
+ },
79
+ })
80
+ ```
81
+
82
+ ### 중첩 include
83
+
84
+ ```typescript
85
+ const users = await prisma.user.findMany({
86
+ include: {
87
+ posts: {
88
+ include: {
89
+ categories: true,
90
+ },
91
+ },
92
+ },
93
+ })
94
+ ```
95
+
96
+ ### 관계 필터링
97
+
98
+ ```typescript
99
+ const users = await prisma.user.findMany({
100
+ include: {
101
+ posts: {
102
+ where: { published: true },
103
+ orderBy: { createdAt: 'desc' },
104
+ take: 5,
105
+ },
106
+ },
107
+ })
108
+ ```
109
+
110
+ ## 관계로 필터링
111
+
112
+ ### some - 하나라도 조건 만족
113
+
114
+ ```typescript
115
+ const users = await prisma.user.findMany({
116
+ where: {
117
+ posts: {
118
+ some: { published: true },
119
+ },
120
+ },
121
+ })
122
+ ```
123
+
124
+ ### every - 모두 조건 만족
125
+
126
+ ```typescript
127
+ const users = await prisma.user.findMany({
128
+ where: {
129
+ posts: {
130
+ every: { published: true },
131
+ },
132
+ },
133
+ })
134
+ ```
135
+
136
+ ### none - 조건 만족 없음
137
+
138
+ ```typescript
139
+ const users = await prisma.user.findMany({
140
+ where: {
141
+ posts: {
142
+ none: { published: false },
143
+ },
144
+ },
145
+ })
146
+ ```
147
+
148
+ ## 관계 카운트
149
+
150
+ ```typescript
151
+ const users = await prisma.user.findMany({
152
+ include: {
153
+ _count: {
154
+ select: { posts: true },
155
+ },
156
+ },
157
+ })
158
+
159
+ // 결과: { id: 1, name: 'Alice', _count: { posts: 5 } }
160
+ ```
161
+
162
+ ## 중첩 업데이트
163
+
164
+ ```typescript
165
+ const user = await prisma.user.update({
166
+ where: { id: 1 },
167
+ data: {
168
+ posts: {
169
+ updateMany: {
170
+ where: { published: false },
171
+ data: { published: true },
172
+ },
173
+ },
174
+ },
175
+ })
176
+ ```
177
+
178
+ ## 중첩 삭제
179
+
180
+ ```typescript
181
+ const user = await prisma.user.update({
182
+ where: { id: 1 },
183
+ data: {
184
+ posts: {
185
+ deleteMany: {
186
+ where: { published: false },
187
+ },
188
+ },
189
+ },
190
+ })
191
+ ```