@kood/claude-code 0.2.5 → 0.3.1

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 (130) hide show
  1. package/dist/index.js +13 -8
  2. package/package.json +1 -1
  3. package/templates/.claude/agents/code-reviewer.md +371 -19
  4. package/templates/.claude/agents/dependency-manager.md +197 -0
  5. package/templates/.claude/agents/deployment-validator.md +136 -0
  6. package/templates/.claude/agents/git-operator.md +147 -0
  7. package/templates/.claude/agents/implementation-executor.md +202 -0
  8. package/templates/.claude/agents/lint-fixer.md +155 -0
  9. package/templates/.claude/agents/refactor-advisor.md +339 -29
  10. package/templates/.claude/commands/agent-creator.md +355 -0
  11. package/templates/.claude/commands/docs-creator.md +404 -163
  12. package/templates/.claude/commands/docs-refactor.md +400 -113
  13. package/templates/.claude/commands/execute.md +357 -185
  14. package/templates/.claude/commands/git-all.md +65 -71
  15. package/templates/.claude/commands/git-session.md +80 -64
  16. package/templates/.claude/commands/git.md +68 -72
  17. package/templates/.claude/commands/lint-fix.md +224 -109
  18. package/templates/.claude/commands/lint-init.md +142 -168
  19. package/templates/.claude/commands/plan.md +300 -84
  20. package/templates/.claude/commands/prd.md +497 -214
  21. package/templates/.claude/commands/pre-deploy.md +242 -0
  22. package/templates/.claude/commands/subagent-creator.md +118 -0
  23. package/templates/.claude/commands/version-update.md +45 -57
  24. package/templates/hono/CLAUDE.md +99 -54
  25. package/templates/hono/docs/guides/conventions.md +352 -0
  26. package/templates/hono/docs/guides/env-setup.md +347 -0
  27. package/templates/hono/docs/guides/getting-started.md +239 -0
  28. package/templates/hono/docs/library/hono/error-handling.md +20 -29
  29. package/templates/hono/docs/library/hono/index.md +25 -52
  30. package/templates/hono/docs/library/hono/middleware.md +16 -75
  31. package/templates/hono/docs/library/hono/rpc.md +7 -35
  32. package/templates/hono/docs/library/hono/validation.md +25 -45
  33. package/templates/hono/docs/library/t3-env/index.md +374 -0
  34. package/templates/npx/CLAUDE.md +165 -65
  35. package/templates/npx/docs/library/commander/index.md +10 -73
  36. package/templates/npx/docs/library/fs-extra/index.md +21 -113
  37. package/templates/npx/docs/library/prompts/index.md +30 -176
  38. package/templates/npx/docs/references/patterns.md +75 -48
  39. package/templates/tanstack-start/CLAUDE.md +101 -77
  40. package/templates/tanstack-start/docs/architecture.md +427 -0
  41. package/templates/tanstack-start/docs/design.md +558 -0
  42. package/templates/tanstack-start/docs/guides/conventions.md +132 -32
  43. package/templates/tanstack-start/docs/guides/env-setup.md +127 -62
  44. package/templates/tanstack-start/docs/guides/getting-started.md +81 -20
  45. package/templates/tanstack-start/docs/guides/hooks.md +241 -36
  46. package/templates/tanstack-start/docs/guides/routes.md +213 -61
  47. package/templates/tanstack-start/docs/guides/services.md +260 -24
  48. package/templates/tanstack-start/docs/library/better-auth/index.md +469 -16
  49. package/templates/tanstack-start/docs/library/t3-env/index.md +307 -0
  50. package/templates/tanstack-start/docs/library/tanstack-query/index.md +12 -21
  51. package/templates/tanstack-start/docs/library/tanstack-query/invalidation.md +22 -35
  52. package/templates/tanstack-start/docs/library/tanstack-query/optimistic-updates.md +7 -24
  53. package/templates/tanstack-start/docs/library/tanstack-query/use-mutation.md +26 -39
  54. package/templates/tanstack-start/docs/library/tanstack-query/use-query.md +23 -26
  55. package/templates/tanstack-start/docs/library/tanstack-router/error-handling.md +32 -147
  56. package/templates/tanstack-start/docs/library/tanstack-router/hooks.md +25 -167
  57. package/templates/tanstack-start/docs/library/tanstack-router/index.md +39 -74
  58. package/templates/tanstack-start/docs/library/tanstack-router/navigation.md +46 -116
  59. package/templates/tanstack-start/docs/library/tanstack-router/route-context.md +35 -154
  60. package/templates/tanstack-start/docs/library/tanstack-router/search-params.md +32 -171
  61. package/templates/tanstack-start/docs/library/tanstack-start/auth-patterns.md +7 -15
  62. package/templates/tanstack-start/docs/library/tanstack-start/routing.md +16 -23
  63. package/templates/tanstack-start/docs/library/zod/complex-types.md +12 -31
  64. package/templates/tanstack-start/docs/library/zod/index.md +18 -35
  65. package/templates/tanstack-start/docs/library/zod/transforms.md +11 -25
  66. package/templates/tanstack-start/docs/library/zod/validation.md +12 -34
  67. package/templates/.claude/agents/debug-detective.md +0 -37
  68. package/templates/.claude/agents/test-writer.md +0 -41
  69. package/templates/.claude/commands/feedback.md +0 -199
  70. package/templates/.claude/commands/ts-fix.md +0 -176
  71. package/templates/.claude/skills/command-creator/LICENSE.txt +0 -202
  72. package/templates/.claude/skills/command-creator/SKILL.md +0 -245
  73. package/templates/.claude/skills/command-creator/scripts/init_command.py +0 -244
  74. package/templates/.claude/skills/command-creator/scripts/package_command.py +0 -125
  75. package/templates/.claude/skills/command-creator/scripts/quick_validate.py +0 -143
  76. package/templates/.claude/skills/frontend-design/SKILL.md +0 -310
  77. package/templates/.claude/skills/frontend-design/references/animation-patterns.md +0 -446
  78. package/templates/.claude/skills/frontend-design/references/colors-2026.md +0 -244
  79. package/templates/.claude/skills/frontend-design/references/typography-2026.md +0 -302
  80. package/templates/.claude/skills/gemini-review/SKILL.md +0 -118
  81. package/templates/.claude/skills/gemini-review/references/checklists.md +0 -129
  82. package/templates/.claude/skills/gemini-review/references/prompt-templates.md +0 -274
  83. package/templates/.claude/skills/skill-creator/LICENSE.txt +0 -202
  84. package/templates/.claude/skills/skill-creator/SKILL.md +0 -184
  85. package/templates/.claude/skills/skill-creator/scripts/init_skill.py +0 -303
  86. package/templates/.claude/skills/skill-creator/scripts/package_skill.py +0 -110
  87. package/templates/.claude/skills/skill-creator/scripts/quick_validate.py +0 -65
  88. package/templates/hono/docs/library/ai-sdk/index.md +0 -190
  89. package/templates/hono/docs/library/ai-sdk/openrouter.md +0 -111
  90. package/templates/hono/docs/library/ai-sdk/providers.md +0 -102
  91. package/templates/hono/docs/library/ai-sdk/streaming.md +0 -146
  92. package/templates/hono/docs/library/ai-sdk/structured-output.md +0 -161
  93. package/templates/hono/docs/library/ai-sdk/tools.md +0 -144
  94. package/templates/hono/docs/library/drizzle/cloudflare-d1.md +0 -247
  95. package/templates/hono/docs/library/drizzle/config.md +0 -167
  96. package/templates/hono/docs/library/drizzle/index.md +0 -259
  97. package/templates/hono/docs/library/hono/env-setup.md +0 -169
  98. package/templates/hono/docs/library/pino/index.md +0 -146
  99. package/templates/tanstack-start/docs/architecture/architecture.md +0 -243
  100. package/templates/tanstack-start/docs/deployment/cloudflare.md +0 -132
  101. package/templates/tanstack-start/docs/deployment/index.md +0 -163
  102. package/templates/tanstack-start/docs/deployment/nitro.md +0 -110
  103. package/templates/tanstack-start/docs/deployment/railway.md +0 -147
  104. package/templates/tanstack-start/docs/deployment/vercel.md +0 -135
  105. package/templates/tanstack-start/docs/design/components.md +0 -175
  106. package/templates/tanstack-start/docs/design/index.md +0 -151
  107. package/templates/tanstack-start/docs/design/safe-area.md +0 -118
  108. package/templates/tanstack-start/docs/design/tailwind-setup.md +0 -156
  109. package/templates/tanstack-start/docs/library/ai-sdk/hooks.md +0 -472
  110. package/templates/tanstack-start/docs/library/ai-sdk/index.md +0 -264
  111. package/templates/tanstack-start/docs/library/ai-sdk/openrouter.md +0 -371
  112. package/templates/tanstack-start/docs/library/ai-sdk/providers.md +0 -403
  113. package/templates/tanstack-start/docs/library/ai-sdk/streaming.md +0 -320
  114. package/templates/tanstack-start/docs/library/ai-sdk/structured-output.md +0 -454
  115. package/templates/tanstack-start/docs/library/ai-sdk/tools.md +0 -473
  116. package/templates/tanstack-start/docs/library/better-auth/2fa.md +0 -48
  117. package/templates/tanstack-start/docs/library/better-auth/advanced.md +0 -55
  118. package/templates/tanstack-start/docs/library/better-auth/plugins.md +0 -34
  119. package/templates/tanstack-start/docs/library/better-auth/session.md +0 -47
  120. package/templates/tanstack-start/docs/library/better-auth/setup.md +0 -41
  121. package/templates/tanstack-start/docs/library/drizzle/cloudflare-d1.md +0 -147
  122. package/templates/tanstack-start/docs/library/drizzle/config.md +0 -118
  123. package/templates/tanstack-start/docs/library/drizzle/crud.md +0 -205
  124. package/templates/tanstack-start/docs/library/drizzle/index.md +0 -79
  125. package/templates/tanstack-start/docs/library/drizzle/relations.md +0 -202
  126. package/templates/tanstack-start/docs/library/drizzle/schema.md +0 -154
  127. package/templates/tanstack-start/docs/library/drizzle/setup.md +0 -96
  128. package/templates/tanstack-start/docs/library/drizzle/transactions.md +0 -127
  129. package/templates/tanstack-start/docs/library/pino/index.md +0 -320
  130. /package/templates/hono/docs/{architecture/architecture.md → architecture.md} +0 -0
@@ -1,25 +1,35 @@
1
1
  # NPX CLI Patterns
2
2
 
3
- > 복사용 코드 패턴 모음
3
+ > CLI 구현 통합 패턴
4
4
 
5
- ## CLI Entry Point
5
+ <patterns>
6
+
7
+ ## CLI 진입점
6
8
 
7
9
  ```typescript
8
10
  #!/usr/bin/env node
9
11
  import { Command } from 'commander';
12
+ import { logger } from './utils/logger.js';
13
+ import { initCommand } from './commands/init.js';
10
14
 
11
15
  const program = new Command();
12
16
 
13
17
  program
14
18
  .name('my-cli')
15
- .description('CLI description')
19
+ .description('CLI tool description')
16
20
  .version('1.0.0');
17
21
 
18
22
  program
19
23
  .option('-t, --template <name>', 'template name')
20
24
  .option('-f, --force', 'overwrite existing files')
21
25
  .action(async (options) => {
22
- // 명령어 실행
26
+ try {
27
+ await initCommand(options);
28
+ logger.success('Done!');
29
+ } catch (error) {
30
+ logger.error(`Failed: ${error.message}`);
31
+ process.exit(1);
32
+ }
23
33
  });
24
34
 
25
35
  program.parse();
@@ -36,49 +46,74 @@ export const logger = {
36
46
  warn: (msg: string): void => console.log(pc.yellow('⚠'), msg),
37
47
  error: (msg: string): void => console.log(pc.red('✖'), msg),
38
48
  step: (msg: string): void => console.log(pc.gray(' →'), msg),
39
- blank: (): void => console.log(),
40
49
  };
41
50
  ```
42
51
 
43
- ## Interactive Prompts
52
+ ## 대화형 템플릿 선택
44
53
 
45
54
  ```typescript
46
55
  import prompts from 'prompts';
56
+ import fs from 'fs-extra';
57
+ import path from 'path';
58
+ import { logger } from './utils/logger.js';
59
+
60
+ export const selectAndCopyTemplate = async (
61
+ templatesDir: string,
62
+ targetDir: string,
63
+ ): Promise<void> => {
64
+ // 1. 템플릿 선택
65
+ const { template } = await prompts({
66
+ type: 'select',
67
+ name: 'template',
68
+ message: 'Select a template:',
69
+ choices: [
70
+ { title: 'React', value: 'react' },
71
+ { title: 'Vue', value: 'vue' },
72
+ ],
73
+ });
47
74
 
48
- // Select (단일 선택)
49
- const { template } = await prompts({
50
- type: 'select',
51
- name: 'template',
52
- message: 'Select a template:',
53
- choices: [
54
- { title: 'Template A', value: 'a' },
55
- { title: 'Template B', value: 'b' },
56
- ],
57
- });
75
+ if (!template) {
76
+ logger.warn('Cancelled.');
77
+ process.exit(0);
78
+ }
58
79
 
59
- // Multiselect (다중 선택)
60
- const { templates } = await prompts({
61
- type: 'multiselect',
62
- name: 'templates',
63
- message: 'Select templates:',
64
- choices: [
65
- { title: 'Template A', value: 'a' },
66
- { title: 'Template B', value: 'b' },
67
- ],
68
- min: 1,
69
- hint: '- Space to select. Return to submit',
70
- });
80
+ // 2. 덮어쓰기 확인
81
+ const targetExists = await fs.pathExists(targetDir);
82
+ if (targetExists) {
83
+ const { overwrite } = await prompts({
84
+ type: 'confirm',
85
+ name: 'overwrite',
86
+ message: 'Target exists. Overwrite?',
87
+ initial: false,
88
+ });
89
+
90
+ if (!overwrite) {
91
+ logger.warn('Cancelled.');
92
+ process.exit(0);
93
+ }
94
+ }
71
95
 
72
- // Confirm
73
- const { confirmed } = await prompts({
74
- type: 'confirm',
75
- name: 'confirmed',
76
- message: 'Overwrite existing files?',
77
- initial: false,
78
- });
96
+ // 3. 복사
97
+ const src = path.join(templatesDir, template);
98
+ await fs.copy(src, targetDir, { overwrite: true });
99
+ logger.success(`Template copied to ${targetDir}`);
100
+ };
101
+ ```
102
+
103
+ ## ESM __dirname 처리
104
+
105
+ ```typescript
106
+ import { fileURLToPath } from 'url';
107
+ import path from 'path';
108
+
109
+ const __filename = fileURLToPath(import.meta.url);
110
+ const __dirname = path.dirname(__filename);
111
+
112
+ // 템플릿 디렉토리 경로
113
+ const templatesDir = path.resolve(__dirname, '../templates');
79
114
  ```
80
115
 
81
- ## File Copy 유틸
116
+ ## 재귀 복사 with Counter
82
117
 
83
118
  ```typescript
84
119
  import fs from 'fs-extra';
@@ -112,17 +147,7 @@ export const copyRecursive = async (
112
147
  };
113
148
  ```
114
149
 
115
- ## ESM __dirname
116
-
117
- ```typescript
118
- import { fileURLToPath } from 'url';
119
- import path from 'path';
120
-
121
- const __filename = fileURLToPath(import.meta.url);
122
- const __dirname = path.dirname(__filename);
123
- ```
124
-
125
- ## Package.json
150
+ ## package.json 설정
126
151
 
127
152
  ```json
128
153
  {
@@ -142,7 +167,7 @@ const __dirname = path.dirname(__filename);
142
167
  }
143
168
  ```
144
169
 
145
- ## tsup.config.ts
170
+ ## tsup 설정
146
171
 
147
172
  ```typescript
148
173
  import { defineConfig } from 'tsup';
@@ -158,3 +183,5 @@ export default defineConfig({
158
183
  },
159
184
  });
160
185
  ```
186
+
187
+ </patterns>
@@ -1,78 +1,73 @@
1
- # CLAUDE.md - TanStack Start + React 작업 지침
1
+ # CLAUDE.md - TanStack Start
2
2
 
3
- ## Instructions
3
+ > Full-stack React Framework
4
+
5
+ <context>
6
+
7
+ **Purpose:** TanStack Start 프레임워크 개발을 위한 작업 지침
8
+
9
+ **Scope:** Full-stack React 애플리케이션 구현
10
+
11
+ **Key Features:**
12
+ - File-based routing (TanStack Router)
13
+ - Server Functions (타입 안전 API)
14
+ - SSR + Streaming
15
+ - TanStack Query 통합
16
+ - Middleware 체계
17
+ - Deployment 유연성 (Vercel, Cloudflare, Nitro)
18
+
19
+ </context>
20
+
21
+ ---
22
+
23
+ <instructions>
4
24
  @../../commands/git.md
5
25
  @docs/library/tanstack-start/index.md
26
+ @docs/library/tanstack-router/index.md
27
+ @docs/library/tanstack-query/index.md
6
28
  @docs/library/prisma/index.md
7
29
  @docs/library/better-auth/index.md
8
- @docs/library/tanstack-query/index.md
30
+ @docs/library/t3-env/index.md
9
31
  @docs/library/zod/index.md
10
- @docs/design/index.md
32
+ @docs/design.md
33
+ </instructions>
11
34
 
12
35
  ---
13
36
 
14
- ## ⛔ NEVER DO
37
+ <forbidden>
15
38
 
16
- ### Git 커밋
17
- - AI 표시 금지: "Generated with Claude Code", "🤖", "Co-Authored-By:" 포함 불가
18
- - 커밋 메시지: 줄만, 이모지 금지
39
+ | 분류 | 금지 행동 |
40
+ |------|----------|
41
+ | **Git 커밋** | AI 표시 (`Generated with Claude Code`, `🤖`, `Co-Authored-By:`), 여러 메시지, 이모지 |
42
+ | **Prisma** | `db push/migrate/generate` 자동 실행, `schema.prisma` 무단 수정 |
43
+ | **API 라우터** | `/api` 경로에 라우터 생성 (Server Functions 사용) |
44
+ | **Server Fn** | handler 내부에서 수동 검증/인증, `.validator()` 사용 (`.inputValidator()` 사용) |
45
+ | **클라이언트** | Server Function 직접 호출 (TanStack Query 사용) |
46
+ | **코드 검색** | Bash의 grep/rg/find 명령어 (ast-grep 또는 전용 도구 사용) |
19
47
 
20
- ### Prisma
21
- - 자동 실행 금지: `prisma db push/migrate/generate`
22
- - `schema.prisma` 임의 변경 금지
23
-
24
- ### API 구현
25
- - `/api` 라우터 생성 금지 (명시 요청 제외)
26
- - Server Function: POST/PUT/PATCH → `inputValidator` 필수, 인증 필요 시 → `middleware` 필수
27
- - handler 내부에서 수동 검증/인증 체크 금지
28
- - 클라이언트에서 Server Function 직접 호출 금지 → TanStack Query 필수
29
-
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
37
-
38
- ### 코드 작성
39
- - UTF-8 인코딩, 코드 묶음 단위 한글 주석
40
- - Prisma Multi-File: 모든 요소에 한글 주석 필수
41
-
42
- ### Prisma Multi-File 구조
43
- ```
44
- prisma/schema/
45
- ├── +base.prisma # datasource, generator
46
- ├── +enum.prisma # 모든 enum
47
- └── [model].prisma # 모델별 파일
48
- ```
48
+ </forbidden>
49
49
 
50
50
  ---
51
51
 
52
- ## ✅ ALWAYS DO
53
-
54
- ### 작업 전 문서 읽기
55
- | 작업 | 문서 |
56
- |------|------|
57
- | UI | docs/design/ |
58
- | API | docs/library/tanstack-start/ |
59
- | DB | docs/library/prisma/ |
60
- | 인증 | docs/library/better-auth/ |
52
+ <required>
61
53
 
62
- ### MCP 도구
63
- - 분석/디버깅: Sequential Thinking
64
- - 라이브러리 문서: Context7
54
+ | 작업 | 필수 행동 |
55
+ |------|----------|
56
+ | **작업 시작 전** | 관련 docs 읽기 (UI → design, API → tanstack-start, DB prisma, 인증 → better-auth) |
57
+ | **코드 검색** | ast-grep 사용 (함수/컴포넌트/패턴 검색) |
58
+ | **복잡한 작업** | Sequential Thinking MCP (5+ 단계 작업) |
59
+ | **대규모 수정** | gemini-review (3+ 파일 변경, 아키텍처 결정) |
60
+ | **Server Function** | POST/PUT/PATCH → `.inputValidator()` 필수, 인증 필요 시 → `.middleware()` 필수 |
61
+ | **클라이언트 API** | TanStack Query (`useQuery`/`useMutation`)로 Server Function 호출 |
62
+ | **Custom Hook 순서** | State → Global Hooks (useParams, useNavigate) → React Query → Handlers → Memo → Effect |
63
+ | **코드 작성** | UTF-8 인코딩, 코드 묶음별 한글 주석, const 함수 선언 |
64
+ | **Prisma** | Multi-File 구조 (`prisma/schema/`), 모든 요소 한글 주석 필수 |
65
65
 
66
- ### Gemini Review (3개+ 파일 수정, 아키텍처 변경, 보안/성능 코드)
67
- - architecture/plan/code 타입 선택
68
-
69
- ### Git 커밋
70
- `<prefix>: <설명>` (한 줄)
71
- - prefix: feat|fix|refactor|style|docs|test|chore|perf|ci
66
+ </required>
72
67
 
73
68
  ---
74
69
 
75
- ## Tech Stack
70
+ <tech_stack>
76
71
 
77
72
  | 기술 | 버전 | 주의 |
78
73
  |------|------|------|
@@ -84,37 +79,48 @@ prisma/schema/
84
79
  | Better Auth | 최신 | - |
85
80
  | TanStack Query | 5.x | - |
86
81
 
82
+ </tech_stack>
83
+
87
84
  ---
88
85
 
89
- ## Directory Structure
86
+ <structure>
90
87
  ```
91
88
  src/
92
- ├── routes/ # File-based routes
93
- │ ├── __root.tsx
94
- │ ├── index.tsx
95
- │ ├── $slug.tsx
89
+ ├── routes/ # __root.tsx, index.tsx, $slug.tsx
96
90
  │ └── [path]/
97
- │ ├── -components/ # 페이지 전용
98
- ├── -hooks/
99
- │ └── -functions/ # 페이지 전용 Server Functions
100
- ├── functions/ # 공통 Server Functions
91
+ │ ├── -components/ # 페이지 전용
92
+ └── -functions/ # 페이지 전용 Server Functions
93
+ ├── functions/ # 공통 Server Functions
101
94
  ├── components/ui/
102
95
  ├── middleware/
103
96
  ├── database/prisma.ts
104
97
  └── lib/
105
98
  ```
106
- - 공통 함수 → `@/functions/`, 라우트 전용 → `routes/[경로]/-functions/`
99
+
100
+ 공통 → `@/functions/`, 라우트 전용 → `routes/[경로]/-functions/`
101
+ </structure>
107
102
 
108
103
  ---
109
104
 
110
- ## Code Conventions
111
- - 파일명: kebab-case, Routes: `__root.tsx`, `$param.tsx`
112
- - TypeScript: const 선언, 명시적 return type, interface(객체)/type(유니온), any 금지→unknown
113
- - Import 순서: 외부 @/ 상대경로 type
105
+ <conventions>
106
+
107
+ 파일명: kebab-case, Routes: `__root.tsx`, `$param.tsx`
108
+ TypeScript: const 선언, 명시적 return type, interface(객체)/type(유니온), anyunknown
109
+ Import 순서: 외부 → @/ → 상대경로 → type
110
+
111
+ Prisma Multi-File:
112
+ ```
113
+ prisma/schema/
114
+ ├── +base.prisma # datasource, generator
115
+ ├── +enum.prisma # enum
116
+ └── [model].prisma # 모델별 (한글 주석!)
117
+ ```
118
+
119
+ </conventions>
114
120
 
115
121
  ---
116
122
 
117
- ## Quick Patterns
123
+ <quick_patterns>
118
124
 
119
125
  ```typescript
120
126
  // Server Function (GET + 인증)
@@ -149,11 +155,29 @@ const mutation = useMutation({
149
155
  })
150
156
  ```
151
157
 
158
+ </quick_patterns>
159
+
152
160
  ---
153
161
 
154
- ## UI/UX
155
- - 색상: 60-30-10 (배경-보조-강조)
156
- - 간격: 8px 그리드
157
- - 접근성: WCAG AA (대비 4.5:1+)
158
- - 폰트: 2-3개
159
- - Safe Area: tailwindcss-safe-area
162
+ <ui_ux>
163
+
164
+ | 원칙 | 값 |
165
+ |------|------|
166
+ | 색상 | 60-30-10 (배경-보조-강조) |
167
+ | 간격 | 8px 그리드 |
168
+ | 접근성 | WCAG AA (대비 4.5:1+) |
169
+ | 폰트 | 2-3개 |
170
+ | Safe Area | tailwindcss-safe-area |
171
+
172
+ </ui_ux>
173
+
174
+ ---
175
+
176
+ <docs_structure>
177
+ ```
178
+ docs/
179
+ ├── guides/ # 시작하기, 규칙, 패턴
180
+ ├── library/ # tanstack-start/router/query, prisma, better-auth, t3-env, zod
181
+ └── design.md # UI/UX 가이드
182
+ ```
183
+ </docs_structure>