@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.
Files changed (107) hide show
  1. package/dist/index.js +109 -216
  2. package/package.json +8 -2
  3. package/templates/hono/CLAUDE.md +59 -328
  4. package/templates/hono/docs/architecture/architecture.md +93 -747
  5. package/templates/hono/docs/deployment/cloudflare.md +59 -513
  6. package/templates/hono/docs/deployment/docker.md +41 -356
  7. package/templates/hono/docs/deployment/index.md +54 -190
  8. package/templates/hono/docs/deployment/railway.md +36 -306
  9. package/templates/hono/docs/deployment/vercel.md +49 -434
  10. package/templates/hono/docs/library/ai-sdk/index.md +53 -290
  11. package/templates/hono/docs/library/ai-sdk/openrouter.md +19 -387
  12. package/templates/hono/docs/library/ai-sdk/providers.md +28 -394
  13. package/templates/hono/docs/library/ai-sdk/streaming.md +52 -353
  14. package/templates/hono/docs/library/ai-sdk/structured-output.md +63 -395
  15. package/templates/hono/docs/library/ai-sdk/tools.md +62 -431
  16. package/templates/hono/docs/library/hono/env-setup.md +24 -313
  17. package/templates/hono/docs/library/hono/error-handling.md +34 -295
  18. package/templates/hono/docs/library/hono/index.md +29 -121
  19. package/templates/hono/docs/library/hono/middleware.md +21 -188
  20. package/templates/hono/docs/library/hono/rpc.md +40 -341
  21. package/templates/hono/docs/library/hono/validation.md +35 -195
  22. package/templates/hono/docs/library/pino/index.md +42 -333
  23. package/templates/hono/docs/library/prisma/cloudflare-d1.md +64 -367
  24. package/templates/hono/docs/library/prisma/config.md +19 -260
  25. package/templates/hono/docs/library/prisma/index.md +67 -320
  26. package/templates/hono/docs/library/zod/index.md +53 -257
  27. package/templates/npx/CLAUDE.md +62 -274
  28. package/templates/npx/docs/references/patterns.md +160 -0
  29. package/templates/tanstack-start/CLAUDE.md +100 -256
  30. package/templates/tanstack-start/docs/architecture/architecture.md +44 -589
  31. package/templates/tanstack-start/docs/deployment/cloudflare.md +37 -424
  32. package/templates/tanstack-start/docs/deployment/index.md +57 -286
  33. package/templates/tanstack-start/docs/deployment/nitro.md +36 -318
  34. package/templates/tanstack-start/docs/deployment/railway.md +40 -409
  35. package/templates/tanstack-start/docs/deployment/vercel.md +43 -465
  36. package/templates/tanstack-start/docs/design/components.md +77 -311
  37. package/templates/tanstack-start/docs/design/index.md +113 -69
  38. package/templates/tanstack-start/docs/design/safe-area.md +51 -250
  39. package/templates/tanstack-start/docs/design/tailwind-setup.md +45 -359
  40. package/templates/tanstack-start/docs/guides/conventions.md +103 -0
  41. package/templates/tanstack-start/docs/guides/env-setup.md +34 -340
  42. package/templates/tanstack-start/docs/guides/getting-started.md +22 -209
  43. package/templates/tanstack-start/docs/guides/hooks.md +166 -0
  44. package/templates/tanstack-start/docs/guides/routes.md +166 -0
  45. package/templates/tanstack-start/docs/guides/services.md +143 -0
  46. package/templates/tanstack-start/docs/library/better-auth/2fa.md +27 -115
  47. package/templates/tanstack-start/docs/library/better-auth/advanced.md +22 -105
  48. package/templates/tanstack-start/docs/library/better-auth/index.md +17 -66
  49. package/templates/tanstack-start/docs/library/better-auth/plugins.md +11 -88
  50. package/templates/tanstack-start/docs/library/better-auth/session.md +12 -92
  51. package/templates/tanstack-start/docs/library/better-auth/setup.md +9 -91
  52. package/templates/tanstack-start/docs/library/prisma/cloudflare-d1.md +30 -358
  53. package/templates/tanstack-start/docs/library/prisma/config.md +27 -327
  54. package/templates/tanstack-start/docs/library/prisma/crud.md +46 -174
  55. package/templates/tanstack-start/docs/library/prisma/index.md +23 -113
  56. package/templates/tanstack-start/docs/library/prisma/relations.md +31 -153
  57. package/templates/tanstack-start/docs/library/prisma/schema.md +40 -217
  58. package/templates/tanstack-start/docs/library/prisma/setup.md +12 -112
  59. package/templates/tanstack-start/docs/library/prisma/transactions.md +20 -110
  60. package/templates/tanstack-start/docs/library/tanstack-query/index.md +26 -97
  61. package/templates/tanstack-start/docs/library/tanstack-query/invalidation.md +28 -107
  62. package/templates/tanstack-start/docs/library/tanstack-query/optimistic-updates.md +44 -146
  63. package/templates/tanstack-start/docs/library/tanstack-query/use-mutation.md +33 -127
  64. package/templates/tanstack-start/docs/library/tanstack-query/use-query.md +49 -149
  65. package/templates/tanstack-start/docs/library/tanstack-start/auth-patterns.md +19 -112
  66. package/templates/tanstack-start/docs/library/tanstack-start/index.md +33 -80
  67. package/templates/tanstack-start/docs/library/tanstack-start/middleware.md +28 -106
  68. package/templates/tanstack-start/docs/library/tanstack-start/routing.md +21 -118
  69. package/templates/tanstack-start/docs/library/tanstack-start/server-functions.md +34 -246
  70. package/templates/tanstack-start/docs/library/tanstack-start/setup.md +6 -39
  71. package/templates/tanstack-start/docs/library/zod/complex-types.md +32 -156
  72. package/templates/tanstack-start/docs/library/zod/index.md +31 -144
  73. package/templates/tanstack-start/docs/library/zod/transforms.md +20 -129
  74. package/templates/tanstack-start/docs/library/zod/validation.md +39 -155
  75. package/templates/hono/docs/commands/git.md +0 -145
  76. package/templates/hono/docs/mcp/context7.md +0 -106
  77. package/templates/hono/docs/mcp/index.md +0 -176
  78. package/templates/hono/docs/mcp/sequential-thinking.md +0 -101
  79. package/templates/hono/docs/mcp/serena.md +0 -269
  80. package/templates/hono/docs/mcp/sgrep.md +0 -105
  81. package/templates/hono/docs/skills/gemini-review/SKILL.md +0 -220
  82. package/templates/hono/docs/skills/gemini-review/references/checklists.md +0 -136
  83. package/templates/hono/docs/skills/gemini-review/references/prompt-templates.md +0 -303
  84. package/templates/npx/docs/commands/git.md +0 -145
  85. package/templates/npx/docs/mcp/index.md +0 -60
  86. package/templates/npx/docs/skills/gemini-review/SKILL.md +0 -220
  87. package/templates/npx/docs/skills/gemini-review/references/checklists.md +0 -134
  88. package/templates/npx/docs/skills/gemini-review/references/prompt-templates.md +0 -301
  89. package/templates/tanstack-start/docs/commands/git.md +0 -145
  90. package/templates/tanstack-start/docs/design/accessibility.md +0 -433
  91. package/templates/tanstack-start/docs/design/color.md +0 -235
  92. package/templates/tanstack-start/docs/design/spacing.md +0 -341
  93. package/templates/tanstack-start/docs/design/typography.md +0 -324
  94. package/templates/tanstack-start/docs/guides/best-practices.md +0 -950
  95. package/templates/tanstack-start/docs/guides/husky-lint-staged.md +0 -303
  96. package/templates/tanstack-start/docs/guides/prettier.md +0 -189
  97. package/templates/tanstack-start/docs/guides/project-templates.md +0 -710
  98. package/templates/tanstack-start/docs/library/tanstack-query/setup.md +0 -107
  99. package/templates/tanstack-start/docs/library/zod/basic-types.md +0 -186
  100. package/templates/tanstack-start/docs/mcp/context7.md +0 -204
  101. package/templates/tanstack-start/docs/mcp/index.md +0 -177
  102. package/templates/tanstack-start/docs/mcp/sequential-thinking.md +0 -180
  103. package/templates/tanstack-start/docs/mcp/serena.md +0 -269
  104. package/templates/tanstack-start/docs/mcp/sgrep.md +0 -174
  105. package/templates/tanstack-start/docs/skills/gemini-review/SKILL.md +0 -220
  106. package/templates/tanstack-start/docs/skills/gemini-review/references/checklists.md +0 -144
  107. package/templates/tanstack-start/docs/skills/gemini-review/references/prompt-templates.md +0 -292
@@ -1,315 +1,159 @@
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 (절대 금지 - 예외 없음)
21
-
22
- ### Git 커밋 금지 사항
23
- ```
24
- "Generated with Claude Code" 포함 금지
25
- ❌ "🤖" 또는 AI 관련 이모지 포함 금지
26
- ❌ "Co-Authored-By:" 헤더 포함 금지
27
- ❌ AI/봇이 작성했다는 어떤 표시도 금지
28
- ❌ 커밋 메시지 여러 줄 작성 금지
29
- ❌ 커밋 메시지에 이모지 사용 금지
30
- ```
31
-
32
- ### Prisma 금지 사항
33
- ```
34
- ❌ prisma db push 자동 실행 금지
35
- ❌ prisma migrate 자동 실행 금지
36
- ❌ prisma generate 자동 실행 금지
37
- ❌ schema.prisma 임의 변경 금지 (요청된 것만)
38
- ```
24
+ ### API 구현
25
+ - `/api` 라우터 생성 금지 (명시 요청 제외)
26
+ - Server Function: POST/PUT/PATCH → `inputValidator` 필수, 인증 필요 시 → `middleware` 필수
27
+ - handler 내부에서 수동 검증/인증 체크 금지
28
+ - 클라이언트에서 Server Function 직접 호출 금지 → TanStack Query 필수
39
29
 
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
- ```
49
-
50
- ### 코드 검색 금지 사항
51
- ```
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
- ```
30
+ ### Custom Hook 순서
31
+ 1. State (useState, zustand)
32
+ 2. Global Hooks (useParams, useNavigate, useQueryClient)
33
+ 3. React Query (useQuery useMutation)
34
+ 4. Event Handlers
35
+ 5. useMemo
36
+ 6. useEffect
68
37
 
69
- ### 코드 작성 규칙
70
- ```
71
- 모든 한글 텍스트는 UTF-8 인코딩 유지
72
- ✅ 코드 묶음 단위로 한글 주석 작성 (너무 세세하게 X)
73
- ✅ Prisma Multi-File 모든 요소에 한글 주석 필수
74
- ```
38
+ ### 코드 작성
39
+ - UTF-8 인코딩, 코드 묶음 단위 한글 주석
40
+ - Prisma Multi-File: 모든 요소에 한글 주석 필수
75
41
 
76
- ### Prisma Multi-File 구조 (필수)
42
+ ### Prisma Multi-File 구조
77
43
  ```
78
- prisma/
79
- ├── schema/
80
- ├── +base.prisma # datasource, generator 설정
81
- │ ├── +enum.prisma # 모든 enum 정의
82
- │ ├── user.prisma # User 모델
83
- │ ├── post.prisma # Post 모델
84
- │ └── ... # 기타 모델별 파일
44
+ prisma/schema/
45
+ ├── +base.prisma # datasource, generator
46
+ ├── +enum.prisma # 모든 enum
47
+ └── [model].prisma # 모델별 파일
85
48
  ```
86
49
 
87
50
  ---
88
51
 
89
- ## ✅ ALWAYS DO (필수 실행)
52
+ ## ✅ ALWAYS DO
90
53
 
91
- ### 1. 작업 전: 관련 문서 읽기
92
- ```
93
- UI 작업 → docs/design/ 읽기
94
- API 작업 → docs/library/tanstack-start/ 읽기
95
- DB 작업 → docs/library/prisma/ 읽기
96
- 인증 작업 → docs/library/better-auth/ 읽기
97
- ```
54
+ ### 작업 문서 읽기
55
+ | 작업 | 문서 |
56
+ |------|------|
57
+ | UI | docs/design/ |
58
+ | API | docs/library/tanstack-start/ |
59
+ | DB | docs/library/prisma/ |
60
+ | 인증 | docs/library/better-auth/ |
98
61
 
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
- ```
62
+ ### MCP 도구
63
+ - 분석/디버깅: Sequential Thinking
64
+ - 라이브러리 문서: Context7
113
65
 
114
- **실행 조건**:
115
- - 3개 이상 파일 수정하는 기능 구현
116
- - 새로운 아키텍처 패턴 도입
117
- - 보안 관련 코드 (인증, 권한, 암호화)
118
- - 성능 크리티컬 코드
66
+ ### Gemini Review (3개+ 파일 수정, 아키텍처 변경, 보안/성능 코드)
67
+ - architecture/plan/code 타입 선택
119
68
 
120
- **상세**: `docs/skills/gemini-review/SKILL.md` 참고
121
-
122
- ### 4. 작업 완료 후: Git 커밋
123
- ```bash
124
- git add .
125
- git commit -m "<prefix>: <설명>"
126
- ```
127
-
128
- **커밋 형식**: `<prefix>: <설명>` (한 줄, 본문 없음)
129
-
130
- **Prefix**: `feat` | `fix` | `refactor` | `style` | `docs` | `test` | `chore` | `perf` | `ci`
131
-
132
- **예시**:
133
- ```bash
134
- feat: 사용자 로그인 기능 추가
135
- fix: 세션 만료 오류 수정
136
- docs: API 문서 업데이트
137
- ```
69
+ ### Git 커밋
70
+ `<prefix>: <설명>` (한 줄)
71
+ - prefix: feat|fix|refactor|style|docs|test|chore|perf|ci
138
72
 
139
73
  ---
140
74
 
141
- ## 📚 문서 참조 테이블
75
+ ## Tech Stack
142
76
 
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/` | 🟡 해당 시 |
77
+ | 기술 | 버전 | 주의 |
78
+ |------|------|------|
79
+ | TanStack Start | 최신 | - |
80
+ | TypeScript | 5.x | strict |
81
+ | Tailwind CSS | 4.x | @theme |
82
+ | Prisma | **7.x** | `prisma-client`, output 필수 |
83
+ | Zod | **4.x** | `z.email()`, `z.url()` |
84
+ | Better Auth | 최신 | - |
85
+ | TanStack Query | 5.x | - |
156
86
 
157
87
  ---
158
88
 
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 | 데이터 페칭 |
170
-
171
- ---
172
-
173
- ## 📁 Directory Structure
174
-
89
+ ## Directory Structure
175
90
  ```
176
91
  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**: 라우트에서 제외되는 폴더
92
+ ├── routes/ # File-based routes
93
+ │ ├── __root.tsx
94
+ │ ├── index.tsx
95
+ │ ├── $slug.tsx
96
+ │ └── [path]/
97
+ │ ├── -components/ # 페이지 전용
98
+ │ ├── -hooks/
99
+ └── -functions/ # 페이지 전용 Server Functions
100
+ ├── functions/ # 공통 Server Functions
101
+ ├── components/ui/
102
+ ├── middleware/
103
+ ├── database/prisma.ts
104
+ └── lib/
105
+ ```
106
+ - 공통 함수 `@/functions/`, 라우트 전용 → `routes/[경로]/-functions/`
203
107
 
204
108
  ---
205
109
 
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
110
+ ## Code Conventions
111
+ - 파일명: kebab-case, Routes: `__root.tsx`, `$param.tsx`
112
+ - TypeScript: const 선언, 명시적 return type, interface(객체)/type(유니온), any 금지→unknown
113
+ - Import 순서: 외부 → @/ → 상대경로 → type
226
114
 
227
115
  ---
228
116
 
229
- ## 📝 Quick Patterns (복사용)
117
+ ## Quick Patterns
230
118
 
231
- ### Server Function (GET + 인증)
232
119
  ```typescript
233
- // 올바른 패턴: middleware 사용
120
+ // Server Function (GET + 인증)
234
121
  export const getUsers = createServerFn({ method: 'GET' })
235
- .middleware([authMiddleware]) // ⭐ 인증 미들웨어 필수
122
+ .middleware([authMiddleware])
236
123
  .handler(async () => prisma.user.findMany())
237
- ```
238
124
 
239
- ### Server Function (POST + Validation + 인증)
240
- ```typescript
241
- // ✅ 올바른 패턴: inputValidator + middleware 모두 사용
125
+ // Server Function (POST + Validation + 인증)
242
126
  export const createUser = createServerFn({ method: 'POST' })
243
- .middleware([authMiddleware]) // ⭐ 인증 미들웨어 필수
244
- .inputValidator(createUserSchema) // ⭐ Zod 스키마 필수
127
+ .middleware([authMiddleware])
128
+ .inputValidator(createUserSchema)
245
129
  .handler(async ({ data }) => prisma.user.create({ data }))
246
- ```
247
130
 
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
131
+ // Zod v4
262
132
  const schema = z.object({
263
- email: z.email(), // ✅ v4
133
+ email: z.email(),
264
134
  name: z.string().min(1).trim(),
265
- website: z.url().optional(), // ✅ v4
135
+ website: z.url().optional(),
266
136
  })
267
- ```
268
137
 
269
- ### Route with Loader
270
- ```tsx
138
+ // Route with Loader
271
139
  export const Route = createFileRoute('/users')({
272
140
  component: UsersPage,
273
141
  loader: async () => ({ users: await getUsers() }),
274
142
  })
275
- ```
276
-
277
- ### TanStack Query (서버 연동 시 필수)
278
- ```tsx
279
- // ✅ 데이터 조회: useQuery 필수
280
- const { data } = useQuery({
281
- queryKey: ['posts'],
282
- queryFn: () => getServerPosts(),
283
- })
284
143
 
285
- // 데이터 변경: useMutation 필수
144
+ // TanStack Query
145
+ const { data } = useQuery({ queryKey: ['posts'], queryFn: getServerPosts })
286
146
  const mutation = useMutation({
287
147
  mutationFn: createPost,
288
148
  onSuccess: () => queryClient.invalidateQueries({ queryKey: ['posts'] }),
289
149
  })
290
-
291
- // ❌ 금지: Server Function을 TanStack Query 없이 직접 호출
292
- // useEffect(() => { getServerPosts().then(setData) }, [])
293
150
  ```
294
151
 
295
152
  ---
296
153
 
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)
154
+ ## UI/UX
155
+ - 색상: 60-30-10 (배경-보조-강조)
156
+ - 간격: 8px 그리드
157
+ - 접근성: WCAG AA (대비 4.5:1+)
158
+ - 폰트: 2-3개
159
+ - Safe Area: tailwindcss-safe-area