@kood/claude-code 0.1.6 → 0.1.7

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 (75) hide show
  1. package/dist/index.js +21 -243
  2. package/package.json +1 -1
  3. package/templates/hono/CLAUDE.md +10 -6
  4. package/templates/hono/docs/deployment/index.md +5 -0
  5. package/templates/hono/docs/library/hono/index.md +6 -0
  6. package/templates/hono/docs/library/prisma/index.md +3 -0
  7. package/templates/npx/CLAUDE.md +8 -2
  8. package/templates/tanstack-start/CLAUDE.md +103 -255
  9. package/templates/tanstack-start/docs/deployment/cloudflare.md +37 -424
  10. package/templates/tanstack-start/docs/deployment/index.md +57 -286
  11. package/templates/tanstack-start/docs/deployment/nitro.md +36 -318
  12. package/templates/tanstack-start/docs/deployment/railway.md +40 -409
  13. package/templates/tanstack-start/docs/deployment/vercel.md +43 -465
  14. package/templates/tanstack-start/docs/design/accessibility.md +56 -326
  15. package/templates/tanstack-start/docs/design/color.md +37 -179
  16. package/templates/tanstack-start/docs/design/components.md +77 -311
  17. package/templates/tanstack-start/docs/design/index.md +24 -87
  18. package/templates/tanstack-start/docs/design/safe-area.md +51 -250
  19. package/templates/tanstack-start/docs/design/spacing.md +57 -276
  20. package/templates/tanstack-start/docs/design/tailwind-setup.md +45 -359
  21. package/templates/tanstack-start/docs/design/typography.md +40 -284
  22. package/templates/tanstack-start/docs/library/better-auth/2fa.md +27 -115
  23. package/templates/tanstack-start/docs/library/better-auth/advanced.md +22 -105
  24. package/templates/tanstack-start/docs/library/better-auth/index.md +17 -66
  25. package/templates/tanstack-start/docs/library/better-auth/plugins.md +11 -88
  26. package/templates/tanstack-start/docs/library/better-auth/session.md +12 -92
  27. package/templates/tanstack-start/docs/library/better-auth/setup.md +9 -91
  28. package/templates/tanstack-start/docs/library/prisma/cloudflare-d1.md +30 -358
  29. package/templates/tanstack-start/docs/library/prisma/config.md +27 -327
  30. package/templates/tanstack-start/docs/library/prisma/crud.md +46 -174
  31. package/templates/tanstack-start/docs/library/prisma/index.md +23 -113
  32. package/templates/tanstack-start/docs/library/prisma/relations.md +31 -153
  33. package/templates/tanstack-start/docs/library/prisma/schema.md +40 -217
  34. package/templates/tanstack-start/docs/library/prisma/setup.md +12 -112
  35. package/templates/tanstack-start/docs/library/prisma/transactions.md +20 -110
  36. package/templates/tanstack-start/docs/library/tanstack-query/index.md +12 -99
  37. package/templates/tanstack-start/docs/library/tanstack-query/invalidation.md +28 -107
  38. package/templates/tanstack-start/docs/library/tanstack-query/optimistic-updates.md +44 -146
  39. package/templates/tanstack-start/docs/library/tanstack-query/setup.md +11 -70
  40. package/templates/tanstack-start/docs/library/tanstack-query/use-mutation.md +33 -127
  41. package/templates/tanstack-start/docs/library/tanstack-query/use-query.md +49 -149
  42. package/templates/tanstack-start/docs/library/tanstack-start/auth-patterns.md +19 -112
  43. package/templates/tanstack-start/docs/library/tanstack-start/index.md +33 -80
  44. package/templates/tanstack-start/docs/library/tanstack-start/middleware.md +28 -106
  45. package/templates/tanstack-start/docs/library/tanstack-start/routing.md +21 -118
  46. package/templates/tanstack-start/docs/library/tanstack-start/server-functions.md +34 -246
  47. package/templates/tanstack-start/docs/library/tanstack-start/setup.md +6 -39
  48. package/templates/tanstack-start/docs/library/zod/basic-types.md +33 -145
  49. package/templates/tanstack-start/docs/library/zod/complex-types.md +32 -156
  50. package/templates/tanstack-start/docs/library/zod/index.md +22 -150
  51. package/templates/tanstack-start/docs/library/zod/transforms.md +20 -129
  52. package/templates/tanstack-start/docs/library/zod/validation.md +39 -155
  53. package/templates/hono/docs/commands/git.md +0 -145
  54. package/templates/hono/docs/mcp/context7.md +0 -106
  55. package/templates/hono/docs/mcp/index.md +0 -176
  56. package/templates/hono/docs/mcp/sequential-thinking.md +0 -101
  57. package/templates/hono/docs/mcp/serena.md +0 -269
  58. package/templates/hono/docs/mcp/sgrep.md +0 -105
  59. package/templates/hono/docs/skills/gemini-review/SKILL.md +0 -220
  60. package/templates/hono/docs/skills/gemini-review/references/checklists.md +0 -136
  61. package/templates/hono/docs/skills/gemini-review/references/prompt-templates.md +0 -303
  62. package/templates/npx/docs/commands/git.md +0 -145
  63. package/templates/npx/docs/mcp/index.md +0 -60
  64. package/templates/npx/docs/skills/gemini-review/SKILL.md +0 -220
  65. package/templates/npx/docs/skills/gemini-review/references/checklists.md +0 -134
  66. package/templates/npx/docs/skills/gemini-review/references/prompt-templates.md +0 -301
  67. package/templates/tanstack-start/docs/commands/git.md +0 -145
  68. package/templates/tanstack-start/docs/mcp/context7.md +0 -204
  69. package/templates/tanstack-start/docs/mcp/index.md +0 -177
  70. package/templates/tanstack-start/docs/mcp/sequential-thinking.md +0 -180
  71. package/templates/tanstack-start/docs/mcp/serena.md +0 -269
  72. package/templates/tanstack-start/docs/mcp/sgrep.md +0 -174
  73. package/templates/tanstack-start/docs/skills/gemini-review/SKILL.md +0 -220
  74. package/templates/tanstack-start/docs/skills/gemini-review/references/checklists.md +0 -144
  75. package/templates/tanstack-start/docs/skills/gemini-review/references/prompt-templates.md +0 -292
@@ -1,315 +1,163 @@
1
- # CLAUDE.md - Claude Code Instructions
1
+ # CLAUDE.md - TanStack Start + React 작업 지침
2
2
 
3
- > TanStack Start + React 프로젝트 작업 지침
3
+ ## Instructions
4
+ @../../commands/git.md
5
+ @docs/library/tanstack-start/index.md
6
+ @docs/library/prisma/index.md
7
+ @docs/library/better-auth/index.md
8
+ @docs/library/tanstack-query/index.md
9
+ @docs/library/zod/index.md
10
+ @docs/design/index.md
4
11
 
5
12
  ---
6
13
 
7
- ## 🚨 STOP - 작업 전 필수 확인
14
+ ## NEVER DO
8
15
 
9
- ```
10
- ┌─────────────────────────────────────────────────────────────┐
11
- │ 이 프로젝트에서 작업하기 전에 문서를 끝까지 읽으세요. │
12
- │ 특히 ⛔ NEVER DO 섹션의 규칙은 절대 위반하지 마세요. │
13
- │ │
14
- │ 📖 작업 유형별 상세 문서: docs/ 폴더 참조 │
15
- └─────────────────────────────────────────────────────────────┘
16
- ```
16
+ ### Git 커밋
17
+ - AI 표시 금지: "Generated with Claude Code", "🤖", "Co-Authored-By:" 포함 불가
18
+ - 커밋 메시지: 줄만, 이모지 금지
17
19
 
18
- ---
20
+ ### Prisma
21
+ - 자동 실행 금지: `prisma db push/migrate/generate`
22
+ - `schema.prisma` 임의 변경 금지
19
23
 
20
- ## NEVER DO (절대 금지 - 예외 없음)
24
+ ### API 구현
25
+ - `/api` 라우터 생성 금지 (명시 요청 제외)
26
+ - Server Function: POST/PUT/PATCH → `inputValidator` 필수, 인증 필요 시 → `middleware` 필수
27
+ - handler 내부에서 수동 검증/인증 체크 금지
28
+ - 클라이언트에서 Server Function 직접 호출 금지 → TanStack Query 필수
21
29
 
22
- ### Git 커밋 금지 사항
23
- ```
24
- ❌ "Generated with Claude Code" 포함 금지
25
- ❌ "🤖" 또는 AI 관련 이모지 포함 금지
26
- ❌ "Co-Authored-By:" 헤더 포함 금지
27
- ❌ AI/봇이 작성했다는 어떤 표시도 금지
28
- ❌ 커밋 메시지 여러 줄 작성 금지
29
- ❌ 커밋 메시지에 이모지 사용 금지
30
- ```
30
+ ### 코드 검색
31
+ - `grep`/`rg`/`find` 금지 → `sgrep` 사용
31
32
 
32
- ### Prisma 금지 사항
33
- ```
34
- prisma db push 자동 실행 금지
35
- prisma migrate 자동 실행 금지
36
- prisma generate 자동 실행 금지
37
- ❌ schema.prisma 임의 변경 금지 (요청된 것만)
38
- ```
33
+ ### Custom Hook 순서
34
+ 1. State (useState, zustand)
35
+ 2. Global Hooks (useParams, useNavigate, useQueryClient)
36
+ 3. React Query (useQuery useMutation)
37
+ 4. Event Handlers
38
+ 5. useMemo
39
+ 6. useEffect
39
40
 
40
- ### API 구현 금지 사항
41
- ```
42
- /api 라우터에 함수 생성 금지 (사용자 명시 요청 제외)
43
- ❌ Server Function에 inputValidator 누락 금지 (POST/PUT/PATCH)
44
- ❌ Server Function에 middleware 누락 금지 (인증 필요 시)
45
- ❌ handler 내부에서 수동 검증 금지 (inputValidator 사용)
46
- ❌ handler 내부에서 수동 인증 체크 금지 (middleware 사용)
47
- ❌ 클라이언트에서 Server Function 직접 호출 금지 → TanStack Query 필수
48
- ```
41
+ ### 코드 작성
42
+ - UTF-8 인코딩, 코드 묶음 단위 한글 주석
43
+ - Prisma Multi-File: 모든 요소에 한글 주석 필수
49
44
 
50
- ### 코드 검색 금지 사항
45
+ ### Prisma Multi-File 구조
51
46
  ```
52
- ❌ grep, rg 등 기본 검색 도구 사용 금지
53
- find 명령어로 코드 검색 금지
54
- 코드베이스 검색 시 sgrep 사용 필수
55
- ```
56
-
57
- ### Custom Hook 순서 금지 사항
58
- ```
59
- ❌ Custom Hook 내부 순서 무시 금지
60
- ✅ 반드시 아래 순서 준수:
61
- 1. State (useState, zustand store)
62
- 2. Global Hooks (useParams, useNavigate, useQueryClient 등)
63
- 3. React Query (useQuery → useMutation 순서)
64
- 4. Event Handlers & Functions
65
- 5. useMemo
66
- 6. useEffect
67
- ```
68
-
69
- ### 코드 작성 규칙
70
- ```
71
- ✅ 모든 한글 텍스트는 UTF-8 인코딩 유지
72
- ✅ 코드 묶음 단위로 한글 주석 작성 (너무 세세하게 X)
73
- ✅ Prisma Multi-File 모든 요소에 한글 주석 필수
74
- ```
75
-
76
- ### Prisma Multi-File 구조 (필수)
77
- ```
78
- prisma/
79
- ├── schema/
80
- │ ├── +base.prisma # datasource, generator 설정
81
- │ ├── +enum.prisma # 모든 enum 정의
82
- │ ├── user.prisma # User 모델
83
- │ ├── post.prisma # Post 모델
84
- │ └── ... # 기타 모델별 파일
47
+ prisma/schema/
48
+ ├── +base.prisma # datasource, generator
49
+ ├── +enum.prisma # 모든 enum
50
+ └── [model].prisma # 모델별 파일
85
51
  ```
86
52
 
87
53
  ---
88
54
 
89
- ## ✅ ALWAYS DO (필수 실행)
90
-
91
- ### 1. 작업 전: 관련 문서 읽기
92
- ```
93
- UI 작업 → docs/design/ 읽기
94
- API 작업 → docs/library/tanstack-start/ 읽기
95
- DB 작업 → docs/library/prisma/ 읽기
96
- 인증 작업 → docs/library/better-auth/ 읽기
97
- ```
98
-
99
- ### 2. MCP 도구 적극 활용
100
- ```
101
- 코드베이스 검색 → sgrep 사용 (grep/rg 금지)
102
- 복잡한 분석/디버깅 → Sequential Thinking 사용
103
- 라이브러리 문서 → Context7 사용
104
- ```
105
- **상세**: `docs/mcp/` 참고
106
-
107
- ### 3. 복잡한 작업 시: Gemini Review 실행
108
- ```
109
- 아키텍처 설계/변경 → gemini-review (architecture)
110
- 구현 계획 검증 → gemini-review (plan)
111
- 복잡한 코드 리뷰 → gemini-review (code)
112
- ```
113
-
114
- **실행 조건**:
115
- - 3개 이상 파일 수정하는 기능 구현
116
- - 새로운 아키텍처 패턴 도입
117
- - 보안 관련 코드 (인증, 권한, 암호화)
118
- - 성능 크리티컬 코드
119
-
120
- **상세**: `docs/skills/gemini-review/SKILL.md` 참고
55
+ ## ✅ ALWAYS DO
121
56
 
122
- ### 4. 작업 완료 후: Git 커밋
123
- ```bash
124
- git add .
125
- git commit -m "<prefix>: <설명>"
126
- ```
57
+ ### 작업 문서 읽기
58
+ | 작업 | 문서 |
59
+ |------|------|
60
+ | UI | docs/design/ |
61
+ | API | docs/library/tanstack-start/ |
62
+ | DB | docs/library/prisma/ |
63
+ | 인증 | docs/library/better-auth/ |
127
64
 
128
- **커밋 형식**: `<prefix>: <설명>` (한 줄, 본문 없음)
65
+ ### MCP 도구
66
+ - 코드 검색: sgrep
67
+ - 분석/디버깅: Sequential Thinking
68
+ - 라이브러리 문서: Context7
129
69
 
130
- **Prefix**: `feat` | `fix` | `refactor` | `style` | `docs` | `test` | `chore` | `perf` | `ci`
70
+ ### Gemini Review (3개+ 파일 수정, 아키텍처 변경, 보안/성능 코드)
71
+ - architecture/plan/code 타입 선택
131
72
 
132
- **예시**:
133
- ```bash
134
- feat: 사용자 로그인 기능 추가
135
- fix: 세션 만료 오류 수정
136
- docs: API 문서 업데이트
137
- ```
73
+ ### Git 커밋
74
+ `<prefix>: <설명>` (한 줄)
75
+ - prefix: feat|fix|refactor|style|docs|test|chore|perf|ci
138
76
 
139
77
  ---
140
78
 
141
- ## 📚 문서 참조 테이블
142
-
143
- | 작업 | 문서 경로 | 필독 여부 |
144
- |------|----------|----------|
145
- | **전체 가이드** | `docs/README.md` | 🔴 필수 |
146
- | **Git 규칙** | `docs/git/git.md` | 🔴 필수 |
147
- | **MCP 도구** | `docs/mcp/` | 🔴 필수 |
148
- | **Gemini Review** | `docs/skills/gemini-review/` | 🟡 복잡한 작업 시 |
149
- | **UI 개발** | `docs/design/` | 🟡 해당 시 |
150
- | **API 개발** | `docs/library/tanstack-start/` | 🟡 해당 시 |
151
- | **인증** | `docs/library/better-auth/` | 🟡 해당 시 |
152
- | **DB** | `docs/library/prisma/` | 🟡 해당 시 |
153
- | **데이터 페칭** | `docs/library/tanstack-query/` | 🟡 해당 시 |
154
- | **검증** | `docs/library/zod/` | 🟡 해당 시 |
155
- | **배포** | `docs/deployment/` | 🟡 해당 시 |
156
-
157
- ---
79
+ ## Tech Stack
158
80
 
159
- ## 🛠 Tech Stack (버전 주의)
160
-
161
- | 기술 | 버전 | 주의사항 |
162
- |------|------|----------|
163
- | TanStack Start | 최신 | Framework |
164
- | TypeScript | 5.x | strict mode |
165
- | Tailwind CSS | 4.x | `@theme` 사용 |
166
- | Prisma | **7.x** | `prisma-client` (js 아님), output 필수 |
167
- | Zod | **4.x** | `z.email()`, `z.url()` (string().email() 아님) |
168
- | Better Auth | 최신 | 인증 |
169
- | TanStack Query | 5.x | 데이터 페칭 |
81
+ | 기술 | 버전 | 주의 |
82
+ |------|------|------|
83
+ | TanStack Start | 최신 | - |
84
+ | TypeScript | 5.x | strict |
85
+ | Tailwind CSS | 4.x | @theme |
86
+ | Prisma | **7.x** | `prisma-client`, output 필수 |
87
+ | Zod | **4.x** | `z.email()`, `z.url()` |
88
+ | Better Auth | 최신 | - |
89
+ | TanStack Query | 5.x | - |
170
90
 
171
91
  ---
172
92
 
173
- ## 📁 Directory Structure
174
-
93
+ ## Directory Structure
175
94
  ```
176
95
  src/
177
- ├── routes/ # File-based routes
178
- │ ├── __root.tsx # Root layout
179
- │ ├── index.tsx # / (Home)
180
- │ ├── $slug.tsx # Dynamic route
181
- │ └── users/
182
- │ ├── index.tsx # /users
183
- │ ├── -components/ # 페이지 전용 컴포넌트
184
- ├── -hooks/ # 페이지 전용
185
- │ └── -functions/ # 페이지 전용 Server Functions
186
- ├── functions/ # 공통 Server Functions ⭐
187
- ├── auth.ts # 인증 관련
188
- │ └── user.ts # 사용자 관련
189
- ├── components/ui/ # 공통 UI 컴포넌트
190
- ├── middleware/ # 공통 미들웨어
191
- │ └── auth.ts # Better Auth 미들웨어
192
- ├── database/prisma.ts # Prisma Client
193
- └── lib/ # 유틸리티
194
- ```
195
-
196
- ### Server Functions 위치 규칙 ⭐
197
- ```
198
- 공통 함수 (여러 라우트에서 사용) → @/functions/
199
- 라우트 전용 함수 (해당 라우트만) → routes/[경로]/-functions/
200
- ```
201
-
202
- **`-` prefix**: 라우트에서 제외되는 폴더
96
+ ├── routes/ # File-based routes
97
+ │ ├── __root.tsx
98
+ │ ├── index.tsx
99
+ │ ├── $slug.tsx
100
+ │ └── [path]/
101
+ │ ├── -components/ # 페이지 전용
102
+ │ ├── -hooks/
103
+ └── -functions/ # 페이지 전용 Server Functions
104
+ ├── functions/ # 공통 Server Functions
105
+ ├── components/ui/
106
+ ├── middleware/
107
+ ├── database/prisma.ts
108
+ └── lib/
109
+ ```
110
+ - 공통 함수 `@/functions/`, 라우트 전용 → `routes/[경로]/-functions/`
203
111
 
204
112
  ---
205
113
 
206
- ## 🔧 Code Conventions
207
-
208
- ### File Naming
209
- - **kebab-case**: `user-profile.tsx`, `auth-service.ts`
210
- - **Routes**: `__root.tsx`, `$param.tsx`
211
-
212
- ### TypeScript
213
- - `const` 선언 사용 (function 대신)
214
- - 명시적 return type
215
- - `interface` (객체) / `type` (유니온)
216
- - `any` 금지 → `unknown` 사용
217
-
218
- ### Import
219
- ```typescript
220
- // @/* → ./src/*
221
- import { prisma } from '@/database/prisma'
222
- import { getUsers } from '@/services/user'
223
- ```
224
-
225
- **순서**: 외부 → 내부(@/) → 상대경로 → type imports
114
+ ## Code Conventions
115
+ - 파일명: kebab-case, Routes: `__root.tsx`, `$param.tsx`
116
+ - TypeScript: const 선언, 명시적 return type, interface(객체)/type(유니온), any 금지→unknown
117
+ - Import 순서: 외부 → @/ → 상대경로 → type
226
118
 
227
119
  ---
228
120
 
229
- ## 📝 Quick Patterns (복사용)
121
+ ## Quick Patterns
230
122
 
231
- ### Server Function (GET + 인증)
232
123
  ```typescript
233
- // 올바른 패턴: middleware 사용
124
+ // Server Function (GET + 인증)
234
125
  export const getUsers = createServerFn({ method: 'GET' })
235
- .middleware([authMiddleware]) // ⭐ 인증 미들웨어 필수
126
+ .middleware([authMiddleware])
236
127
  .handler(async () => prisma.user.findMany())
237
- ```
238
128
 
239
- ### Server Function (POST + Validation + 인증)
240
- ```typescript
241
- // ✅ 올바른 패턴: inputValidator + middleware 모두 사용
129
+ // Server Function (POST + Validation + 인증)
242
130
  export const createUser = createServerFn({ method: 'POST' })
243
- .middleware([authMiddleware]) // ⭐ 인증 미들웨어 필수
244
- .inputValidator(createUserSchema) // ⭐ Zod 스키마 필수
131
+ .middleware([authMiddleware])
132
+ .inputValidator(createUserSchema)
245
133
  .handler(async ({ data }) => prisma.user.create({ data }))
246
- ```
247
134
 
248
- ### 잘못된 패턴 (금지)
249
- ```typescript
250
- // ❌ handler 내부에서 수동 검증 금지
251
- export const createUser = createServerFn({ method: 'POST' })
252
- .handler(async ({ data }) => {
253
- // ❌ 이렇게 하지 마세요!
254
- if (!data.email) throw new Error('Email required')
255
- const session = await getSession() // ❌ 수동 인증 체크 금지
256
- // ...
257
- })
258
- ```
259
-
260
- ### Zod Schema (v4 문법!)
261
- ```typescript
135
+ // Zod v4
262
136
  const schema = z.object({
263
- email: z.email(), // ✅ v4
137
+ email: z.email(),
264
138
  name: z.string().min(1).trim(),
265
- website: z.url().optional(), // ✅ v4
139
+ website: z.url().optional(),
266
140
  })
267
- ```
268
141
 
269
- ### Route with Loader
270
- ```tsx
142
+ // Route with Loader
271
143
  export const Route = createFileRoute('/users')({
272
144
  component: UsersPage,
273
145
  loader: async () => ({ users: await getUsers() }),
274
146
  })
275
- ```
276
-
277
- ### TanStack Query (서버 연동 시 필수)
278
- ```tsx
279
- // ✅ 데이터 조회: useQuery 필수
280
- const { data } = useQuery({
281
- queryKey: ['posts'],
282
- queryFn: () => getServerPosts(),
283
- })
284
147
 
285
- // 데이터 변경: useMutation 필수
148
+ // TanStack Query
149
+ const { data } = useQuery({ queryKey: ['posts'], queryFn: getServerPosts })
286
150
  const mutation = useMutation({
287
151
  mutationFn: createPost,
288
152
  onSuccess: () => queryClient.invalidateQueries({ queryKey: ['posts'] }),
289
153
  })
290
-
291
- // ❌ 금지: Server Function을 TanStack Query 없이 직접 호출
292
- // useEffect(() => { getServerPosts().then(setData) }, [])
293
154
  ```
294
155
 
295
156
  ---
296
157
 
297
- ## 🎨 UI/UX Rules
298
-
299
- - **색상**: 60-30-10 규칙 (배경-보조-강조)
300
- - **간격**: 8px 그리드 (8의 배수)
301
- - **접근성**: WCAG AA (대비 4.5:1+)
302
- - **폰트**: 최대 2-3개
303
- - **Safe Area**: `tailwindcss-safe-area` 사용
304
-
305
- **상세**: `docs/design/` 참고
306
-
307
- ---
308
-
309
- ## 🔗 Quick Links
310
-
311
- - [문서 가이드](./docs/README.md)
312
- - [Git 규칙](./docs/git/git.md)
313
- - [MCP 가이드](./docs/mcp/index.md)
314
- - [디자인 가이드](./docs/design/index.md)
315
- - [아키텍처](./docs/architecture/architecture.md)
158
+ ## UI/UX
159
+ - 색상: 60-30-10 (배경-보조-강조)
160
+ - 간격: 8px 그리드
161
+ - 접근성: WCAG AA (대비 4.5:1+)
162
+ - 폰트: 2-3개
163
+ - Safe Area: tailwindcss-safe-area