@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.
- package/dist/index.d.ts +2 -0
- package/dist/index.js +297 -0
- package/package.json +47 -0
- package/templates/hono/CLAUDE.md +376 -0
- package/templates/hono/docs/deployment/cloudflare.md +328 -0
- package/templates/hono/docs/deployment/index.md +291 -0
- package/templates/hono/docs/git/index.md +180 -0
- package/templates/hono/docs/library/hono/error-handling.md +400 -0
- package/templates/hono/docs/library/hono/index.md +241 -0
- package/templates/hono/docs/library/hono/middleware.md +334 -0
- package/templates/hono/docs/library/hono/rpc.md +454 -0
- package/templates/hono/docs/library/hono/validation.md +328 -0
- package/templates/hono/docs/library/prisma/index.md +427 -0
- package/templates/hono/docs/library/zod/index.md +413 -0
- package/templates/hono/docs/mcp/context7.md +106 -0
- package/templates/hono/docs/mcp/index.md +94 -0
- package/templates/hono/docs/mcp/sequential-thinking.md +101 -0
- package/templates/hono/docs/mcp/sgrep.md +105 -0
- package/templates/hono/docs/skills/gemini-review/SKILL.md +220 -0
- package/templates/hono/docs/skills/gemini-review/references/checklists.md +136 -0
- package/templates/hono/docs/skills/gemini-review/references/prompt-templates.md +303 -0
- package/templates/tanstack-start/CLAUDE.md +279 -0
- package/templates/tanstack-start/docs/architecture/architecture.md +547 -0
- package/templates/tanstack-start/docs/deployment/cloudflare.md +346 -0
- package/templates/tanstack-start/docs/deployment/index.md +102 -0
- package/templates/tanstack-start/docs/deployment/nitro.md +211 -0
- package/templates/tanstack-start/docs/deployment/railway.md +364 -0
- package/templates/tanstack-start/docs/deployment/vercel.md +287 -0
- package/templates/tanstack-start/docs/design/accessibility.md +433 -0
- package/templates/tanstack-start/docs/design/color.md +235 -0
- package/templates/tanstack-start/docs/design/components.md +409 -0
- package/templates/tanstack-start/docs/design/index.md +107 -0
- package/templates/tanstack-start/docs/design/safe-area.md +317 -0
- package/templates/tanstack-start/docs/design/spacing.md +341 -0
- package/templates/tanstack-start/docs/design/tailwind-setup.md +470 -0
- package/templates/tanstack-start/docs/design/typography.md +324 -0
- package/templates/tanstack-start/docs/git/index.md +203 -0
- package/templates/tanstack-start/docs/guides/best-practices.md +753 -0
- package/templates/tanstack-start/docs/guides/getting-started.md +304 -0
- package/templates/tanstack-start/docs/guides/husky-lint-staged.md +303 -0
- package/templates/tanstack-start/docs/guides/prettier.md +189 -0
- package/templates/tanstack-start/docs/guides/project-templates.md +710 -0
- package/templates/tanstack-start/docs/library/better-auth/2fa.md +136 -0
- package/templates/tanstack-start/docs/library/better-auth/advanced.md +138 -0
- package/templates/tanstack-start/docs/library/better-auth/index.md +83 -0
- package/templates/tanstack-start/docs/library/better-auth/plugins.md +111 -0
- package/templates/tanstack-start/docs/library/better-auth/session.md +127 -0
- package/templates/tanstack-start/docs/library/better-auth/setup.md +123 -0
- package/templates/tanstack-start/docs/library/prisma/crud.md +218 -0
- package/templates/tanstack-start/docs/library/prisma/index.md +165 -0
- package/templates/tanstack-start/docs/library/prisma/relations.md +191 -0
- package/templates/tanstack-start/docs/library/prisma/schema.md +177 -0
- package/templates/tanstack-start/docs/library/prisma/setup.md +156 -0
- package/templates/tanstack-start/docs/library/prisma/transactions.md +140 -0
- package/templates/tanstack-start/docs/library/tanstack-query/index.md +146 -0
- package/templates/tanstack-start/docs/library/tanstack-query/invalidation.md +146 -0
- package/templates/tanstack-start/docs/library/tanstack-query/optimistic-updates.md +196 -0
- package/templates/tanstack-start/docs/library/tanstack-query/setup.md +110 -0
- package/templates/tanstack-start/docs/library/tanstack-query/use-mutation.md +170 -0
- package/templates/tanstack-start/docs/library/tanstack-query/use-query.md +173 -0
- package/templates/tanstack-start/docs/library/tanstack-start/auth-patterns.md +171 -0
- package/templates/tanstack-start/docs/library/tanstack-start/index.md +114 -0
- package/templates/tanstack-start/docs/library/tanstack-start/middleware.md +142 -0
- package/templates/tanstack-start/docs/library/tanstack-start/routing.md +163 -0
- package/templates/tanstack-start/docs/library/tanstack-start/server-functions.md +128 -0
- package/templates/tanstack-start/docs/library/tanstack-start/setup.md +85 -0
- package/templates/tanstack-start/docs/library/zod/basic-types.md +186 -0
- package/templates/tanstack-start/docs/library/zod/complex-types.md +204 -0
- package/templates/tanstack-start/docs/library/zod/index.md +186 -0
- package/templates/tanstack-start/docs/library/zod/transforms.md +174 -0
- package/templates/tanstack-start/docs/library/zod/validation.md +208 -0
- package/templates/tanstack-start/docs/mcp/context7.md +204 -0
- package/templates/tanstack-start/docs/mcp/index.md +116 -0
- package/templates/tanstack-start/docs/mcp/sequential-thinking.md +180 -0
- package/templates/tanstack-start/docs/mcp/sgrep.md +174 -0
- package/templates/tanstack-start/docs/skills/gemini-review/SKILL.md +220 -0
- package/templates/tanstack-start/docs/skills/gemini-review/references/checklists.md +150 -0
- package/templates/tanstack-start/docs/skills/gemini-review/references/prompt-templates.md +293 -0
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
# Prompt Templates for Gemini Review
|
|
2
|
+
|
|
3
|
+
## Command Patterns
|
|
4
|
+
|
|
5
|
+
All commands use the fixed model `gemini-3-pro-preview` with JSON output for parsing.
|
|
6
|
+
|
|
7
|
+
### Basic Pattern
|
|
8
|
+
```bash
|
|
9
|
+
gemini -m gemini-3-pro-preview -p "{prompt}" --output-format json
|
|
10
|
+
```
|
|
11
|
+
|
|
12
|
+
### File Piping Pattern
|
|
13
|
+
```bash
|
|
14
|
+
cat {file_path} | gemini -m gemini-3-pro-preview -p "{instructions}" --output-format json
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
### Multi-line Heredoc Pattern
|
|
18
|
+
```bash
|
|
19
|
+
gemini -m gemini-3-pro-preview --output-format json -p "$(cat << 'EOF'
|
|
20
|
+
{multi_line_prompt}
|
|
21
|
+
EOF
|
|
22
|
+
)"
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
### Response Parsing
|
|
26
|
+
```bash
|
|
27
|
+
result=$(gemini -m gemini-3-pro-preview -p "..." --output-format json)
|
|
28
|
+
review_content=$(echo "$result" | jq -r '.response')
|
|
29
|
+
echo "$review_content"
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Plan Review Template
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
gemini -m gemini-3-pro-preview --output-format json -p "$(cat << 'EOF'
|
|
38
|
+
[PLAN REVIEW REQUEST]
|
|
39
|
+
|
|
40
|
+
## Context
|
|
41
|
+
Project: {project_name}
|
|
42
|
+
Tech Stack: {tech_stack}
|
|
43
|
+
Current State: {current_state_description}
|
|
44
|
+
|
|
45
|
+
## Implementation Plan
|
|
46
|
+
{plan_content}
|
|
47
|
+
|
|
48
|
+
## Review Checklist
|
|
49
|
+
{checklist_items}
|
|
50
|
+
|
|
51
|
+
## Review Instructions
|
|
52
|
+
Analyze this implementation plan and provide feedback on:
|
|
53
|
+
|
|
54
|
+
1. **Completeness**
|
|
55
|
+
- Are all requirements addressed?
|
|
56
|
+
- Any missing steps or considerations?
|
|
57
|
+
|
|
58
|
+
2. **Logic & Feasibility**
|
|
59
|
+
- Will this approach work as intended?
|
|
60
|
+
- Any logical flaws or contradictions?
|
|
61
|
+
|
|
62
|
+
3. **Edge Cases**
|
|
63
|
+
- What edge cases might be missed?
|
|
64
|
+
- How should they be handled?
|
|
65
|
+
|
|
66
|
+
4. **Risks & Issues**
|
|
67
|
+
- Potential problems during implementation?
|
|
68
|
+
- Dependencies or blockers?
|
|
69
|
+
|
|
70
|
+
5. **Alternatives**
|
|
71
|
+
- Better approaches available?
|
|
72
|
+
- Trade-offs to consider?
|
|
73
|
+
|
|
74
|
+
Respond with:
|
|
75
|
+
- β
Strengths of the plan
|
|
76
|
+
- β οΈ Concerns or issues found
|
|
77
|
+
- π‘ Suggestions for improvement
|
|
78
|
+
- π Alternative approaches (if any)
|
|
79
|
+
EOF
|
|
80
|
+
)"
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
---
|
|
84
|
+
|
|
85
|
+
## Code Review Template
|
|
86
|
+
|
|
87
|
+
### Option A: Inline Code
|
|
88
|
+
```bash
|
|
89
|
+
gemini -m gemini-3-pro-preview --output-format json -p "$(cat << 'EOF'
|
|
90
|
+
[CODE REVIEW REQUEST]
|
|
91
|
+
|
|
92
|
+
## Context
|
|
93
|
+
File: {file_path}
|
|
94
|
+
Language: {language}
|
|
95
|
+
Tech Stack: {tech_stack}
|
|
96
|
+
Purpose: {purpose_description}
|
|
97
|
+
|
|
98
|
+
## Code to Review
|
|
99
|
+
```{language}
|
|
100
|
+
{code_content}
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## Review Checklist
|
|
104
|
+
{checklist_items}
|
|
105
|
+
|
|
106
|
+
## Review Instructions
|
|
107
|
+
Perform a thorough code review focusing on:
|
|
108
|
+
|
|
109
|
+
1. **Bugs & Logic Errors**
|
|
110
|
+
- Incorrect logic or algorithms
|
|
111
|
+
- Off-by-one errors
|
|
112
|
+
- Null/undefined handling
|
|
113
|
+
- Type mismatches
|
|
114
|
+
|
|
115
|
+
2. **Security Vulnerabilities**
|
|
116
|
+
- Injection risks (SQL, XSS, etc.)
|
|
117
|
+
- Authentication/authorization gaps
|
|
118
|
+
- Data exposure risks
|
|
119
|
+
- Input validation issues
|
|
120
|
+
|
|
121
|
+
3. **Performance Issues**
|
|
122
|
+
- Inefficient algorithms (specify Big-O if problematic)
|
|
123
|
+
- N+1 queries
|
|
124
|
+
- Memory leaks
|
|
125
|
+
- Unnecessary operations
|
|
126
|
+
|
|
127
|
+
4. **Best Practices**
|
|
128
|
+
- Code organization
|
|
129
|
+
- Naming conventions
|
|
130
|
+
- Error handling patterns
|
|
131
|
+
- Testing considerations
|
|
132
|
+
|
|
133
|
+
5. **Maintainability**
|
|
134
|
+
- Code clarity
|
|
135
|
+
- Documentation needs
|
|
136
|
+
- Coupling and cohesion
|
|
137
|
+
- Future extensibility
|
|
138
|
+
|
|
139
|
+
For each issue found, provide:
|
|
140
|
+
- π΄ CRITICAL / π‘ IMPORTANT / π’ MINOR
|
|
141
|
+
- Location (line number or function name)
|
|
142
|
+
- Description of the issue
|
|
143
|
+
- Suggested fix with code example
|
|
144
|
+
EOF
|
|
145
|
+
)"
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### Option B: Piping File Content
|
|
149
|
+
```bash
|
|
150
|
+
cat {file_path} | gemini -m gemini-3-pro-preview --output-format json -p "Review this {language} code ({tech_stack} project) for:
|
|
151
|
+
1. Bugs and logic errors
|
|
152
|
+
2. Security vulnerabilities
|
|
153
|
+
3. Performance issues
|
|
154
|
+
4. Best practices violations
|
|
155
|
+
5. Maintainability concerns
|
|
156
|
+
|
|
157
|
+
For each issue: specify severity (π΄ CRITICAL/π‘ IMPORTANT/π’ MINOR), location, description, and suggested fix with code."
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
---
|
|
161
|
+
|
|
162
|
+
## Architecture Review Template
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
gemini -m gemini-3-pro-preview --output-format json -p "$(cat << 'EOF'
|
|
166
|
+
[ARCHITECTURE REVIEW REQUEST]
|
|
167
|
+
|
|
168
|
+
## System Overview
|
|
169
|
+
Name: {system_name}
|
|
170
|
+
Purpose: {system_purpose}
|
|
171
|
+
Tech Stack: {tech_stack}
|
|
172
|
+
Scale: {expected_scale}
|
|
173
|
+
|
|
174
|
+
## Current/Proposed Architecture
|
|
175
|
+
{architecture_description}
|
|
176
|
+
|
|
177
|
+
## Components
|
|
178
|
+
{components_list}
|
|
179
|
+
|
|
180
|
+
## Data Flow
|
|
181
|
+
{data_flow_description}
|
|
182
|
+
|
|
183
|
+
## Specific Questions
|
|
184
|
+
{specific_questions}
|
|
185
|
+
|
|
186
|
+
## Review Instructions
|
|
187
|
+
Evaluate this architecture considering:
|
|
188
|
+
|
|
189
|
+
1. **Scalability**
|
|
190
|
+
- Can it handle expected load?
|
|
191
|
+
- Horizontal vs vertical scaling options?
|
|
192
|
+
- Bottlenecks identified?
|
|
193
|
+
|
|
194
|
+
2. **Reliability**
|
|
195
|
+
- Single points of failure?
|
|
196
|
+
- Fault tolerance mechanisms?
|
|
197
|
+
- Recovery strategies?
|
|
198
|
+
|
|
199
|
+
3. **Maintainability**
|
|
200
|
+
- Component coupling?
|
|
201
|
+
- Deployment complexity?
|
|
202
|
+
- Operational overhead?
|
|
203
|
+
|
|
204
|
+
4. **Security**
|
|
205
|
+
- Attack surface?
|
|
206
|
+
- Data protection?
|
|
207
|
+
- Access control boundaries?
|
|
208
|
+
|
|
209
|
+
5. **Cost Efficiency**
|
|
210
|
+
- Resource utilization?
|
|
211
|
+
- Scaling costs?
|
|
212
|
+
- Operational costs?
|
|
213
|
+
|
|
214
|
+
6. **Trade-offs**
|
|
215
|
+
- What are we sacrificing?
|
|
216
|
+
- Alternative architectures?
|
|
217
|
+
- Migration path considerations?
|
|
218
|
+
|
|
219
|
+
Respond with:
|
|
220
|
+
- π Overall assessment
|
|
221
|
+
- β
Architectural strengths
|
|
222
|
+
- β οΈ Concerns and risks
|
|
223
|
+
- π‘ Recommendations
|
|
224
|
+
- π Alternative approaches worth considering
|
|
225
|
+
EOF
|
|
226
|
+
)"
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
---
|
|
230
|
+
|
|
231
|
+
## Hono-Specific Additions
|
|
232
|
+
|
|
233
|
+
When tech_stack is `hono`, append to the relevant template:
|
|
234
|
+
|
|
235
|
+
```
|
|
236
|
+
## Hono-Specific Review Points
|
|
237
|
+
- Middleware chain correctness and order
|
|
238
|
+
- zValidator usage and Zod schema design
|
|
239
|
+
- HTTPException usage for error handling
|
|
240
|
+
- Context (c) usage patterns
|
|
241
|
+
- Type-safe bindings and variables
|
|
242
|
+
- RPC client type exports
|
|
243
|
+
- Built-in middleware configuration
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
---
|
|
247
|
+
|
|
248
|
+
## Cloudflare Workers-Specific Additions
|
|
249
|
+
|
|
250
|
+
When tech_stack is `cloudflare`, append to the relevant template:
|
|
251
|
+
|
|
252
|
+
```
|
|
253
|
+
## Cloudflare Workers-Specific Review Points
|
|
254
|
+
- Edge runtime compatibility (no Node.js APIs)
|
|
255
|
+
- KV, D1, R2 binding usage
|
|
256
|
+
- wrangler.toml configuration
|
|
257
|
+
- Environment variable handling via c.env
|
|
258
|
+
- Request/response size limits
|
|
259
|
+
- CPU and memory constraints
|
|
260
|
+
- Subrequest limits (<50)
|
|
261
|
+
- Durable Objects if applicable
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
---
|
|
265
|
+
|
|
266
|
+
## Quick Review Templates
|
|
267
|
+
|
|
268
|
+
### Security Quick Check
|
|
269
|
+
```bash
|
|
270
|
+
cat {file_path} | gemini -m gemini-3-pro-preview -p "Security audit this Hono code. Find: injection vulnerabilities, auth issues, data exposure risks, input validation gaps. List each with severity and fix." --output-format json
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
### Performance Quick Check
|
|
274
|
+
```bash
|
|
275
|
+
cat {file_path} | gemini -m gemini-3-pro-preview -p "Performance review this Hono code. Find: inefficient algorithms (note Big-O), N+1 queries, memory issues, unnecessary operations. Suggest optimizations." --output-format json
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
### Bug Hunt
|
|
279
|
+
```bash
|
|
280
|
+
cat {file_path} | gemini -m gemini-3-pro-preview -p "Find bugs in this code: logic errors, edge cases, null handling, race conditions, type issues. For each bug, show the fix." --output-format json
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
### Middleware Review
|
|
284
|
+
```bash
|
|
285
|
+
cat {file_path} | gemini -m gemini-3-pro-preview -p "Review this Hono middleware for: proper next() handling, error propagation, type safety, reusability, and side effects. Suggest improvements." --output-format json
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
### Validation Review
|
|
289
|
+
```bash
|
|
290
|
+
cat {file_path} | gemini -m gemini-3-pro-preview -p "Review Zod schemas and zValidator usage: schema completeness, error messages, type inference, reusability. Use Zod v4 syntax." --output-format json
|
|
291
|
+
```
|
|
292
|
+
|
|
293
|
+
---
|
|
294
|
+
|
|
295
|
+
## Template Usage Instructions
|
|
296
|
+
|
|
297
|
+
1. Select the appropriate base template (plan/code/architecture)
|
|
298
|
+
2. Fill in all `{placeholder}` fields with actual content
|
|
299
|
+
3. Load the relevant checklist from `checklists.md` based on tech stack
|
|
300
|
+
4. Append tech-stack-specific additions if applicable
|
|
301
|
+
5. Execute via Gemini CLI
|
|
302
|
+
6. Parse JSON response to extract `.response` field
|
|
303
|
+
7. Present both raw Gemini response and Claude's analysis
|
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
# CLAUDE.md - Claude Code Instructions
|
|
2
|
+
|
|
3
|
+
> TanStack Start + React νλ‘μ νΈ μμ
μ§μΉ¨
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## π¨ STOP - μμ
μ νμ νμΈ
|
|
8
|
+
|
|
9
|
+
```
|
|
10
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
11
|
+
β μ΄ νλ‘μ νΈμμ μμ
νκΈ° μ μ μ΄ λ¬Έμλ₯Ό λκΉμ§ μ½μΌμΈμ. β
|
|
12
|
+
β νΉν β NEVER DO μΉμ
μ κ·μΉμ μ λ μλ°νμ§ λ§μΈμ. β
|
|
13
|
+
β β
|
|
14
|
+
β π μμ
μ νλ³ μμΈ λ¬Έμ: docs/ ν΄λ μ°Έμ‘° β
|
|
15
|
+
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
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
|
+
```
|
|
39
|
+
|
|
40
|
+
### API ꡬν κΈμ§ μ¬ν
|
|
41
|
+
```
|
|
42
|
+
β /api λΌμ°ν°μ ν¨μ μμ± κΈμ§ (μ¬μ©μ λͺ
μ μμ² μ μΈ)
|
|
43
|
+
β Server Functionμ inputValidator λλ½ κΈμ§ (POST/PUT/PATCH)
|
|
44
|
+
β Server Functionμ middleware λλ½ κΈμ§ (μΈμ¦ νμ μ)
|
|
45
|
+
β handler λ΄λΆμμ μλ κ²μ¦ κΈμ§ (inputValidator μ¬μ©)
|
|
46
|
+
β handler λ΄λΆμμ μλ μΈμ¦ μ²΄ν¬ κΈμ§ (middleware μ¬μ©)
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
### μ½λ κ²μ κΈμ§ μ¬ν
|
|
50
|
+
```
|
|
51
|
+
β grep, rg λ± κΈ°λ³Έ κ²μ λꡬ μ¬μ© κΈμ§
|
|
52
|
+
β find λͺ
λ Ήμ΄λ‘ μ½λ κ²μ κΈμ§
|
|
53
|
+
β
μ½λλ² μ΄μ€ κ²μ μ sgrep μ¬μ© νμ
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## β
ALWAYS DO (νμ μ€ν)
|
|
59
|
+
|
|
60
|
+
### 1. μμ
μ : κ΄λ ¨ λ¬Έμ μ½κΈ°
|
|
61
|
+
```
|
|
62
|
+
UI μμ
β docs/design/ μ½κΈ°
|
|
63
|
+
API μμ
β docs/library/tanstack-start/ μ½κΈ°
|
|
64
|
+
DB μμ
β docs/library/prisma/ μ½κΈ°
|
|
65
|
+
μΈμ¦ μμ
β docs/library/better-auth/ μ½κΈ°
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### 2. MCP λꡬ μ κ·Ή νμ©
|
|
69
|
+
```
|
|
70
|
+
μ½λλ² μ΄μ€ κ²μ β sgrep μ¬μ© (grep/rg κΈμ§)
|
|
71
|
+
볡μ‘ν λΆμ/λλ²κΉ
β Sequential Thinking μ¬μ©
|
|
72
|
+
λΌμ΄λΈλ¬λ¦¬ λ¬Έμ β Context7 μ¬μ©
|
|
73
|
+
```
|
|
74
|
+
**μμΈ**: `docs/mcp/` μ°Έκ³
|
|
75
|
+
|
|
76
|
+
### 3. 볡μ‘ν μμ
μ: Gemini Review μ€ν
|
|
77
|
+
```
|
|
78
|
+
μν€ν
μ² μ€κ³/λ³κ²½ β gemini-review (architecture)
|
|
79
|
+
ꡬν κ³ν κ²μ¦ β gemini-review (plan)
|
|
80
|
+
볡μ‘ν μ½λ 리뷰 β gemini-review (code)
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
**μ€ν 쑰건**:
|
|
84
|
+
- 3κ° μ΄μ νμΌ μμ νλ κΈ°λ₯ ꡬν
|
|
85
|
+
- μλ‘μ΄ μν€ν
μ² ν¨ν΄ λμ
|
|
86
|
+
- 보μ κ΄λ ¨ μ½λ (μΈμ¦, κΆν, μνΈν)
|
|
87
|
+
- μ±λ₯ ν¬λ¦¬ν°μ»¬ μ½λ
|
|
88
|
+
|
|
89
|
+
**μμΈ**: `docs/skills/gemini-review/SKILL.md` μ°Έκ³
|
|
90
|
+
|
|
91
|
+
### 4. μμ
μλ£ ν: Git 컀λ°
|
|
92
|
+
```bash
|
|
93
|
+
git add .
|
|
94
|
+
git commit -m "<prefix>: <μ€λͺ
>"
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
**μ»€λ° νμ**: `<prefix>: <μ€λͺ
>` (ν μ€, λ³Έλ¬Έ μμ)
|
|
98
|
+
|
|
99
|
+
**Prefix**: `feat` | `fix` | `refactor` | `style` | `docs` | `test` | `chore` | `perf` | `ci`
|
|
100
|
+
|
|
101
|
+
**μμ**:
|
|
102
|
+
```bash
|
|
103
|
+
feat: μ¬μ©μ λ‘κ·ΈμΈ κΈ°λ₯ μΆκ°
|
|
104
|
+
fix: μΈμ
λ§λ£ μ€λ₯ μμ
|
|
105
|
+
docs: API λ¬Έμ μ
λ°μ΄νΈ
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
---
|
|
109
|
+
|
|
110
|
+
## π λ¬Έμ μ°Έμ‘° ν
μ΄λΈ
|
|
111
|
+
|
|
112
|
+
| μμ
| λ¬Έμ κ²½λ‘ | νλ
μ¬λΆ |
|
|
113
|
+
|------|----------|----------|
|
|
114
|
+
| **μ 체 κ°μ΄λ** | `docs/README.md` | π΄ νμ |
|
|
115
|
+
| **Git κ·μΉ** | `docs/git/index.md` | π΄ νμ |
|
|
116
|
+
| **MCP λꡬ** | `docs/mcp/` | π΄ νμ |
|
|
117
|
+
| **Gemini Review** | `docs/skills/gemini-review/` | π‘ 볡μ‘ν μμ
μ |
|
|
118
|
+
| **UI κ°λ°** | `docs/design/` | π‘ ν΄λΉ μ |
|
|
119
|
+
| **API κ°λ°** | `docs/library/tanstack-start/` | π‘ ν΄λΉ μ |
|
|
120
|
+
| **μΈμ¦** | `docs/library/better-auth/` | π‘ ν΄λΉ μ |
|
|
121
|
+
| **DB** | `docs/library/prisma/` | π‘ ν΄λΉ μ |
|
|
122
|
+
| **λ°μ΄ν° νμΉ** | `docs/library/tanstack-query/` | π‘ ν΄λΉ μ |
|
|
123
|
+
| **κ²μ¦** | `docs/library/zod/` | π‘ ν΄λΉ μ |
|
|
124
|
+
| **λ°°ν¬** | `docs/deployment/` | π‘ ν΄λΉ μ |
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## π Tech Stack (λ²μ μ£Όμ)
|
|
129
|
+
|
|
130
|
+
| κΈ°μ | λ²μ | μ£Όμμ¬ν |
|
|
131
|
+
|------|------|----------|
|
|
132
|
+
| TanStack Start | μ΅μ | Framework |
|
|
133
|
+
| TypeScript | 5.x | strict mode |
|
|
134
|
+
| Tailwind CSS | 4.x | `@theme` μ¬μ© |
|
|
135
|
+
| Prisma | **7.x** | `prisma-client` (js μλ), output νμ |
|
|
136
|
+
| Zod | **4.x** | `z.email()`, `z.url()` (string().email() μλ) |
|
|
137
|
+
| Better Auth | μ΅μ | μΈμ¦ |
|
|
138
|
+
| TanStack Query | 5.x | λ°μ΄ν° νμΉ |
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
## π Directory Structure
|
|
143
|
+
|
|
144
|
+
```
|
|
145
|
+
src/
|
|
146
|
+
βββ routes/ # File-based routes
|
|
147
|
+
β βββ __root.tsx # Root layout
|
|
148
|
+
β βββ index.tsx # / (Home)
|
|
149
|
+
β βββ $slug.tsx # Dynamic route
|
|
150
|
+
β βββ users/
|
|
151
|
+
β βββ index.tsx # /users
|
|
152
|
+
β βββ -components/ # νμ΄μ§ μ μ© μ»΄ν¬λνΈ
|
|
153
|
+
β βββ -hooks/ # νμ΄μ§ μ μ© ν
|
|
154
|
+
β βββ -functions/ # νμ΄μ§ μ μ© Server Functions β
|
|
155
|
+
βββ functions/ # κ³΅ν΅ Server Functions β
|
|
156
|
+
β βββ auth.ts # μΈμ¦ κ΄λ ¨
|
|
157
|
+
β βββ user.ts # μ¬μ©μ κ΄λ ¨
|
|
158
|
+
βββ components/ui/ # κ³΅ν΅ UI μ»΄ν¬λνΈ
|
|
159
|
+
βββ middleware/ # κ³΅ν΅ λ―Έλ€μ¨μ΄
|
|
160
|
+
β βββ auth.ts # Better Auth λ―Έλ€μ¨μ΄
|
|
161
|
+
βββ database/prisma.ts # Prisma Client
|
|
162
|
+
βββ lib/ # μ νΈλ¦¬ν°
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
### Server Functions μμΉ κ·μΉ β
|
|
166
|
+
```
|
|
167
|
+
κ³΅ν΅ ν¨μ (μ¬λ¬ λΌμ°νΈμμ μ¬μ©) β @/functions/
|
|
168
|
+
λΌμ°νΈ μ μ© ν¨μ (ν΄λΉ λΌμ°νΈλ§) β routes/[κ²½λ‘]/-functions/
|
|
169
|
+
```
|
|
170
|
+
|
|
171
|
+
**`-` prefix**: λΌμ°νΈμμ μ μΈλλ ν΄λ
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
## π§ Code Conventions
|
|
176
|
+
|
|
177
|
+
### File Naming
|
|
178
|
+
- **kebab-case**: `user-profile.tsx`, `auth-service.ts`
|
|
179
|
+
- **Routes**: `__root.tsx`, `$param.tsx`
|
|
180
|
+
|
|
181
|
+
### TypeScript
|
|
182
|
+
- `const` μ μΈ μ¬μ© (function λμ )
|
|
183
|
+
- λͺ
μμ return type
|
|
184
|
+
- `interface` (κ°μ²΄) / `type` (μ λμ¨)
|
|
185
|
+
- `any` κΈμ§ β `unknown` μ¬μ©
|
|
186
|
+
|
|
187
|
+
### Import
|
|
188
|
+
```typescript
|
|
189
|
+
// @/* β ./src/*
|
|
190
|
+
import { prisma } from '@/database/prisma'
|
|
191
|
+
import { getUsers } from '@/services/user'
|
|
192
|
+
```
|
|
193
|
+
|
|
194
|
+
**μμ**: μΈλΆ β λ΄λΆ(@/) β μλκ²½λ‘ β type imports
|
|
195
|
+
|
|
196
|
+
---
|
|
197
|
+
|
|
198
|
+
## π Quick Patterns (볡μ¬μ©)
|
|
199
|
+
|
|
200
|
+
### Server Function (GET + μΈμ¦)
|
|
201
|
+
```typescript
|
|
202
|
+
// β
μ¬λ°λ₯Έ ν¨ν΄: middleware μ¬μ©
|
|
203
|
+
export const getUsers = createServerFn({ method: 'GET' })
|
|
204
|
+
.middleware([authMiddleware]) // β μΈμ¦ λ―Έλ€μ¨μ΄ νμ
|
|
205
|
+
.handler(async () => prisma.user.findMany())
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
### Server Function (POST + Validation + μΈμ¦)
|
|
209
|
+
```typescript
|
|
210
|
+
// β
μ¬λ°λ₯Έ ν¨ν΄: inputValidator + middleware λͺ¨λ μ¬μ©
|
|
211
|
+
export const createUser = createServerFn({ method: 'POST' })
|
|
212
|
+
.middleware([authMiddleware]) // β μΈμ¦ λ―Έλ€μ¨μ΄ νμ
|
|
213
|
+
.inputValidator(createUserSchema) // β Zod μ€ν€λ§ νμ
|
|
214
|
+
.handler(async ({ data }) => prisma.user.create({ data }))
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
### β μλͺ»λ ν¨ν΄ (κΈμ§)
|
|
218
|
+
```typescript
|
|
219
|
+
// β handler λ΄λΆμμ μλ κ²μ¦ κΈμ§
|
|
220
|
+
export const createUser = createServerFn({ method: 'POST' })
|
|
221
|
+
.handler(async ({ data }) => {
|
|
222
|
+
// β μ΄λ κ² νμ§ λ§μΈμ!
|
|
223
|
+
if (!data.email) throw new Error('Email required')
|
|
224
|
+
const session = await getSession() // β μλ μΈμ¦ μ²΄ν¬ κΈμ§
|
|
225
|
+
// ...
|
|
226
|
+
})
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
### Zod Schema (v4 λ¬Έλ²!)
|
|
230
|
+
```typescript
|
|
231
|
+
const schema = z.object({
|
|
232
|
+
email: z.email(), // β
v4
|
|
233
|
+
name: z.string().min(1).trim(),
|
|
234
|
+
website: z.url().optional(), // β
v4
|
|
235
|
+
})
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
### Route with Loader
|
|
239
|
+
```tsx
|
|
240
|
+
export const Route = createFileRoute('/users')({
|
|
241
|
+
component: UsersPage,
|
|
242
|
+
loader: async () => ({ users: await getUsers() }),
|
|
243
|
+
})
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
### TanStack Query
|
|
247
|
+
```tsx
|
|
248
|
+
const { data } = useQuery({
|
|
249
|
+
queryKey: ['users'],
|
|
250
|
+
queryFn: () => getUsers(),
|
|
251
|
+
})
|
|
252
|
+
|
|
253
|
+
const mutation = useMutation({
|
|
254
|
+
mutationFn: createUser,
|
|
255
|
+
onSuccess: () => queryClient.invalidateQueries({ queryKey: ['users'] }),
|
|
256
|
+
})
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
---
|
|
260
|
+
|
|
261
|
+
## π¨ UI/UX Rules
|
|
262
|
+
|
|
263
|
+
- **μμ**: 60-30-10 κ·μΉ (λ°°κ²½-보쑰-κ°μ‘°)
|
|
264
|
+
- **κ°κ²©**: 8px 그리λ (8μ λ°°μ)
|
|
265
|
+
- **μ κ·Όμ±**: WCAG AA (λλΉ 4.5:1+)
|
|
266
|
+
- **ν°νΈ**: μ΅λ 2-3κ°
|
|
267
|
+
- **Safe Area**: `tailwindcss-safe-area` μ¬μ©
|
|
268
|
+
|
|
269
|
+
**μμΈ**: `docs/design/` μ°Έκ³
|
|
270
|
+
|
|
271
|
+
---
|
|
272
|
+
|
|
273
|
+
## π Quick Links
|
|
274
|
+
|
|
275
|
+
- [λ¬Έμ κ°μ΄λ](./docs/README.md)
|
|
276
|
+
- [Git κ·μΉ](./docs/git/index.md)
|
|
277
|
+
- [MCP κ°μ΄λ](./docs/mcp/index.md)
|
|
278
|
+
- [λμμΈ κ°μ΄λ](./docs/design/index.md)
|
|
279
|
+
- [μν€ν
μ²](./docs/architecture/architecture.md)
|