@kood/claude-code 0.1.2 → 0.1.3

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 (61) hide show
  1. package/dist/index.js +12 -3
  2. package/package.json +2 -2
  3. package/templates/hono/CLAUDE.md +20 -2
  4. package/templates/hono/docs/architecture/architecture.md +909 -0
  5. package/templates/hono/docs/deployment/cloudflare.md +537 -190
  6. package/templates/hono/docs/deployment/docker.md +517 -0
  7. package/templates/hono/docs/deployment/index.md +181 -213
  8. package/templates/hono/docs/deployment/railway.md +416 -0
  9. package/templates/hono/docs/deployment/vercel.md +572 -0
  10. package/templates/hono/docs/git/git.md +285 -0
  11. package/templates/hono/docs/library/ai-sdk/index.md +427 -0
  12. package/templates/hono/docs/library/ai-sdk/openrouter.md +479 -0
  13. package/templates/hono/docs/library/ai-sdk/providers.md +468 -0
  14. package/templates/hono/docs/library/ai-sdk/streaming.md +447 -0
  15. package/templates/hono/docs/library/ai-sdk/structured-output.md +493 -0
  16. package/templates/hono/docs/library/ai-sdk/tools.md +513 -0
  17. package/templates/hono/docs/library/hono/env-setup.md +458 -0
  18. package/templates/hono/docs/library/hono/index.md +1 -0
  19. package/templates/hono/docs/library/pino/index.md +437 -0
  20. package/templates/hono/docs/library/prisma/cloudflare-d1.md +503 -0
  21. package/templates/hono/docs/library/prisma/config.md +362 -0
  22. package/templates/hono/docs/library/prisma/index.md +86 -13
  23. package/templates/hono/docs/skills/gemini-review/SKILL.md +116 -116
  24. package/templates/hono/docs/skills/gemini-review/references/checklists.md +125 -125
  25. package/templates/hono/docs/skills/gemini-review/references/prompt-templates.md +191 -191
  26. package/templates/npx/CLAUDE.md +309 -0
  27. package/templates/npx/docs/git/git.md +307 -0
  28. package/templates/npx/docs/library/commander/index.md +164 -0
  29. package/templates/npx/docs/library/fs-extra/index.md +171 -0
  30. package/templates/npx/docs/library/prompts/index.md +253 -0
  31. package/templates/npx/docs/mcp/index.md +60 -0
  32. package/templates/npx/docs/skills/gemini-review/SKILL.md +220 -0
  33. package/templates/npx/docs/skills/gemini-review/references/checklists.md +134 -0
  34. package/templates/npx/docs/skills/gemini-review/references/prompt-templates.md +301 -0
  35. package/templates/tanstack-start/CLAUDE.md +43 -5
  36. package/templates/tanstack-start/docs/architecture/architecture.md +134 -4
  37. package/templates/tanstack-start/docs/deployment/cloudflare.md +234 -51
  38. package/templates/tanstack-start/docs/deployment/index.md +322 -32
  39. package/templates/tanstack-start/docs/deployment/nitro.md +201 -20
  40. package/templates/tanstack-start/docs/deployment/railway.md +305 -153
  41. package/templates/tanstack-start/docs/deployment/vercel.md +353 -78
  42. package/templates/tanstack-start/docs/git/{index.md → git.md} +81 -7
  43. package/templates/tanstack-start/docs/guides/best-practices.md +203 -1
  44. package/templates/tanstack-start/docs/guides/env-setup.md +450 -0
  45. package/templates/tanstack-start/docs/library/ai-sdk/hooks.md +472 -0
  46. package/templates/tanstack-start/docs/library/ai-sdk/index.md +264 -0
  47. package/templates/tanstack-start/docs/library/ai-sdk/openrouter.md +371 -0
  48. package/templates/tanstack-start/docs/library/ai-sdk/providers.md +403 -0
  49. package/templates/tanstack-start/docs/library/ai-sdk/streaming.md +320 -0
  50. package/templates/tanstack-start/docs/library/ai-sdk/structured-output.md +454 -0
  51. package/templates/tanstack-start/docs/library/ai-sdk/tools.md +473 -0
  52. package/templates/tanstack-start/docs/library/pino/index.md +320 -0
  53. package/templates/tanstack-start/docs/library/prisma/cloudflare-d1.md +404 -0
  54. package/templates/tanstack-start/docs/library/prisma/config.md +377 -0
  55. package/templates/tanstack-start/docs/library/prisma/index.md +3 -1
  56. package/templates/tanstack-start/docs/library/prisma/schema.md +123 -25
  57. package/templates/tanstack-start/docs/library/tanstack-start/server-functions.md +80 -2
  58. package/templates/tanstack-start/docs/skills/gemini-review/SKILL.md +116 -116
  59. package/templates/tanstack-start/docs/skills/gemini-review/references/checklists.md +138 -144
  60. package/templates/tanstack-start/docs/skills/gemini-review/references/prompt-templates.md +186 -187
  61. package/templates/hono/docs/git/index.md +0 -180
@@ -1,12 +1,13 @@
1
1
  # Vercel 배포
2
2
 
3
3
  > **상위 문서**: [배포](./index.md)
4
+ > **Version**: Nitro 3.x
4
5
 
5
- Vercel은 TanStack Start 앱을 위한 최적화된 배포 플랫폼입니다.
6
+ Vercel은 TanStack Start 앱을 위한 최적화된 서버리스 배포 플랫폼입니다.
6
7
 
7
- ## 빠른 시작
8
+ ---
8
9
 
9
- ### 1. Nitro 설정
10
+ ## 🚀 Quick Reference (복사용)
10
11
 
11
12
  ```typescript
12
13
  // nitro.config.ts
@@ -14,47 +15,210 @@ import { defineNitroConfig } from 'nitro/config'
14
15
 
15
16
  export default defineNitroConfig({
16
17
  preset: 'vercel',
18
+ compatibilityDate: '2024-09-19',
17
19
  })
18
20
  ```
19
21
 
20
- ### 2. 빌드 및 배포
22
+ ```json
23
+ // vercel.json
24
+ {
25
+ "buildCommand": "pnpm build",
26
+ "outputDirectory": ".vercel/output"
27
+ }
28
+ ```
21
29
 
22
30
  ```bash
23
- # 빌드
24
- yarn build
25
-
26
- # Vercel CLI로 배포
31
+ # Vercel CLI 배포
32
+ vercel login
27
33
  vercel
28
34
  ```
29
35
 
30
- ## Vercel 설정
36
+ ---
31
37
 
32
- ### vercel.json
38
+ ## Nitro 설정
39
+
40
+ ### 기본 설정
41
+
42
+ ```typescript
43
+ // nitro.config.ts
44
+ import { defineNitroConfig } from 'nitro/config'
45
+
46
+ export default defineNitroConfig({
47
+ // Vercel 서버리스 preset
48
+ preset: 'vercel',
49
+
50
+ // 호환성 날짜 (Nitro v3 필수)
51
+ compatibilityDate: '2024-09-19',
52
+ })
53
+ ```
54
+
55
+ ### Edge Functions 설정
56
+
57
+ ```typescript
58
+ // nitro.config.ts
59
+ import { defineNitroConfig } from 'nitro/config'
60
+
61
+ export default defineNitroConfig({
62
+ // Vercel Edge Functions preset
63
+ preset: 'vercel-edge',
64
+
65
+ // 호환성 날짜
66
+ compatibilityDate: '2024-09-19',
67
+ })
68
+ ```
69
+
70
+ ### Bun 런타임 설정
71
+
72
+ ```typescript
73
+ // nitro.config.ts
74
+ import { defineNitroConfig } from 'nitro/config'
75
+
76
+ export default defineNitroConfig({
77
+ preset: 'vercel',
78
+ compatibilityDate: '2024-09-19',
79
+
80
+ // Bun 런타임 사용
81
+ vercel: {
82
+ functions: {
83
+ runtime: 'bun@1',
84
+ },
85
+ },
86
+ })
87
+ ```
88
+
89
+ ---
90
+
91
+ ## Vite 설정
92
+
93
+ ```typescript
94
+ // vite.config.ts
95
+ import { defineConfig } from 'vite'
96
+ import { tanstackStart } from '@tanstack/react-start/plugin/vite'
97
+ import { nitro } from 'nitro/vite'
98
+ import viteReact from '@vitejs/plugin-react'
99
+
100
+ export default defineConfig({
101
+ plugins: [
102
+ tanstackStart(),
103
+ nitro(),
104
+ viteReact(),
105
+ ],
106
+ })
107
+ ```
108
+
109
+ ---
110
+
111
+ ## vercel.json 설정
112
+
113
+ ### 기본 설정
114
+
115
+ ```json
116
+ {
117
+ "$schema": "https://openapi.vercel.sh/vercel.json",
118
+ "buildCommand": "pnpm build",
119
+ "outputDirectory": ".vercel/output",
120
+ "framework": null,
121
+ "installCommand": "pnpm install"
122
+ }
123
+ ```
124
+
125
+ ### 고급 설정
33
126
 
34
127
  ```json
35
128
  {
36
129
  "$schema": "https://openapi.vercel.sh/vercel.json",
37
- "buildCommand": "yarn build",
38
- "outputDirectory": ".output",
39
- "framework": null
130
+ "buildCommand": "pnpm build",
131
+ "outputDirectory": ".vercel/output",
132
+
133
+ "functions": {
134
+ "api/**/*.ts": {
135
+ "memory": 1024,
136
+ "maxDuration": 30
137
+ }
138
+ },
139
+
140
+ "headers": [
141
+ {
142
+ "source": "/api/(.*)",
143
+ "headers": [
144
+ { "key": "Access-Control-Allow-Origin", "value": "*" },
145
+ { "key": "Access-Control-Allow-Methods", "value": "GET, POST, PUT, DELETE, OPTIONS" }
146
+ ]
147
+ }
148
+ ],
149
+
150
+ "rewrites": [
151
+ { "source": "/(.*)", "destination": "/api" }
152
+ ]
40
153
  }
41
154
  ```
42
155
 
43
- ### 환경변수
156
+ ---
157
+
158
+ ## 배포 방법
159
+
160
+ ### 방법 1: GitHub 연동 (권장)
44
161
 
45
- Vercel 대시보드에서 설정하거나 CLI 사용:
162
+ 1. **Vercel 프로젝트 생성**
163
+ - [Vercel 대시보드](https://vercel.com) 접속
164
+ - "Add New" → "Project" → GitHub 저장소 선택
165
+
166
+ 2. **빌드 설정**
167
+ - Framework Preset: "Other"
168
+ - Build Command: `pnpm build`
169
+ - Output Directory: `.vercel/output`
170
+ - Install Command: `pnpm install`
171
+
172
+ 3. **환경 변수 설정**
173
+ - Vercel 대시보드에서 Settings → Environment Variables
174
+
175
+ ### 방법 2: Vercel CLI
46
176
 
47
177
  ```bash
48
- # 환경변수 추가
49
- vercel env add DATABASE_URL
178
+ # Vercel CLI 설치
179
+ npm install -g vercel
50
180
 
51
- # 환경변수 확인
52
- vercel env ls
181
+ # 로그인
182
+ vercel login
183
+
184
+ # 프로젝트 연결 및 배포
185
+ vercel
186
+
187
+ # 프로덕션 배포
188
+ vercel --prod
189
+
190
+ # 환경 변수 설정
191
+ vercel env add DATABASE_URL
192
+ vercel env add API_SECRET
53
193
  ```
54
194
 
195
+ ---
196
+
55
197
  ## ISR (Incremental Static Regeneration)
56
198
 
57
- ### 기본 ISR 설정
199
+ ### ISR 설정
200
+
201
+ ```typescript
202
+ // nitro.config.ts
203
+ import { defineNitroConfig } from 'nitro/config'
204
+
205
+ export default defineNitroConfig({
206
+ preset: 'vercel',
207
+ compatibilityDate: '2024-09-19',
208
+
209
+ // ISR 설정
210
+ vercel: {
211
+ config: {
212
+ // 정적 페이지 재생성 간격 (초)
213
+ isr: {
214
+ bypassToken: process.env.ISR_BYPASS_TOKEN,
215
+ },
216
+ },
217
+ },
218
+ })
219
+ ```
220
+
221
+ ### 라우트별 ISR
58
222
 
59
223
  ```typescript
60
224
  // nitro.config.ts
@@ -62,6 +226,8 @@ import { defineNitroConfig } from 'nitro/config'
62
226
 
63
227
  export default defineNitroConfig({
64
228
  preset: 'vercel',
229
+ compatibilityDate: '2024-09-19',
230
+
65
231
  routeRules: {
66
232
  // 60초마다 재검증
67
233
  '/products/**': {
@@ -69,6 +235,11 @@ export default defineNitroConfig({
69
235
  expiration: 60,
70
236
  },
71
237
  },
238
+
239
+ // 캐시하지 않음
240
+ '/api/user/**': {
241
+ isr: false,
242
+ },
72
243
  },
73
244
  })
74
245
  ```
@@ -81,6 +252,8 @@ import { defineNitroConfig } from 'nitro/config'
81
252
 
82
253
  export default defineNitroConfig({
83
254
  preset: 'vercel',
255
+ compatibilityDate: '2024-09-19',
256
+
84
257
  vercel: {
85
258
  config: {
86
259
  bypassToken: process.env.VERCEL_BYPASS_TOKEN,
@@ -120,52 +293,36 @@ export default defineHandler(async (event) => {
120
293
  })
121
294
  ```
122
295
 
123
- ## Bun 런타임
296
+ ---
124
297
 
125
- ### nitro.config.ts 설정
298
+ ## 환경변수
126
299
 
127
- ```typescript
128
- import { defineNitroConfig } from 'nitro/config'
300
+ ### Vercel 대시보드에서 설정
129
301
 
130
- export default defineNitroConfig({
131
- preset: 'vercel',
132
- vercel: {
133
- functions: {
134
- runtime: 'bun1.x',
135
- },
136
- },
137
- })
138
302
  ```
139
-
140
- ### vercel.json 설정
141
-
142
- ```json
143
- {
144
- "$schema": "https://openapi.vercel.sh/vercel.json",
145
- "bunVersion": "1.x"
146
- }
303
+ DATABASE_URL=postgresql://user:pass@host:5432/db
304
+ API_SECRET=your-secret-key
305
+ NODE_ENV=production
147
306
  ```
148
307
 
149
- ## Edge Functions
308
+ ### 환경별 설정
150
309
 
151
- ### Edge 런타임 설정
310
+ Vercel은 환경별로 다른 설정 가능:
311
+ - **Production**: 프로덕션 환경
312
+ - **Preview**: PR 프리뷰 환경
313
+ - **Development**: 로컬 개발 환경
152
314
 
153
- ```typescript
154
- // nitro.config.ts
155
- import { defineNitroConfig } from 'nitro/config'
315
+ ### Vercel 자동 제공 변수
156
316
 
157
- export default defineNitroConfig({
158
- preset: 'vercel',
159
- routeRules: {
160
- '/api/edge/**': {
161
- // Edge 런타임에서 실행
162
- headers: {
163
- 'x-vercel-edge': '1',
164
- },
165
- },
166
- },
167
- })
168
- ```
317
+ | 변수 | 설명 |
318
+ |------|------|
319
+ | `VERCEL` | Vercel 환경인지 여부 ("1") |
320
+ | `VERCEL_ENV` | 환경 (production, preview, development) |
321
+ | `VERCEL_URL` | 배포 URL |
322
+ | `VERCEL_REGION` | 실행 리전 |
323
+ | `VERCEL_GIT_COMMIT_SHA` | Git 커밋 SHA |
324
+
325
+ ---
169
326
 
170
327
  ## 환경별 설정
171
328
 
@@ -179,6 +336,8 @@ const isProduction = process.env.VERCEL_ENV === 'production'
179
336
 
180
337
  export default defineNitroConfig({
181
338
  preset: 'vercel',
339
+ compatibilityDate: '2024-09-19',
340
+
182
341
  routeRules: {
183
342
  '/api/**': {
184
343
  cors: !isProduction, // 개발 환경에서만 CORS 허용
@@ -187,6 +346,8 @@ export default defineNitroConfig({
187
346
  })
188
347
  ```
189
348
 
349
+ ---
350
+
190
351
  ## 모노레포 설정
191
352
 
192
353
  ### vercel.json
@@ -194,12 +355,14 @@ export default defineNitroConfig({
194
355
  ```json
195
356
  {
196
357
  "$schema": "https://openapi.vercel.sh/vercel.json",
197
- "installCommand": "yarn install",
198
- "buildCommand": "yarn workspace web build",
199
- "outputDirectory": "apps/web/.output"
358
+ "installCommand": "pnpm install",
359
+ "buildCommand": "pnpm --filter web build",
360
+ "outputDirectory": "apps/web/.vercel/output"
200
361
  }
201
362
  ```
202
363
 
364
+ ---
365
+
203
366
  ## GitHub 통합
204
367
 
205
368
  ### 자동 배포 설정
@@ -224,46 +387,140 @@ export default defineNitroConfig({
224
387
  }
225
388
  ```
226
389
 
227
- ## 도메인 설정
390
+ ---
228
391
 
229
- ```bash
230
- # 커스텀 도메인 추가
231
- vercel domains add example.com
392
+ ## CI/CD 설정
232
393
 
233
- # DNS 설정 확인
234
- vercel domains inspect example.com
394
+ ### GitHub Actions
395
+
396
+ ```yaml
397
+ # .github/workflows/vercel.yml
398
+ name: Deploy to Vercel
399
+
400
+ on:
401
+ push:
402
+ branches: [main]
403
+ pull_request:
404
+ branches: [main]
405
+
406
+ jobs:
407
+ deploy:
408
+ runs-on: ubuntu-latest
409
+
410
+ steps:
411
+ - uses: actions/checkout@v4
412
+
413
+ - name: Setup pnpm
414
+ uses: pnpm/action-setup@v2
415
+ with:
416
+ version: 8
417
+
418
+ - name: Setup Node.js
419
+ uses: actions/setup-node@v4
420
+ with:
421
+ node-version: '20'
422
+ cache: 'pnpm'
423
+
424
+ - name: Install dependencies
425
+ run: pnpm install
426
+
427
+ - name: Build
428
+ run: pnpm build
429
+
430
+ - name: Deploy to Vercel
431
+ uses: amondnet/vercel-action@v25
432
+ with:
433
+ vercel-token: ${{ secrets.VERCEL_TOKEN }}
434
+ vercel-org-id: ${{ secrets.VERCEL_ORG_ID }}
435
+ vercel-project-id: ${{ secrets.VERCEL_PROJECT_ID }}
436
+ vercel-args: ${{ github.ref == 'refs/heads/main' && '--prod' || '' }}
235
437
  ```
236
438
 
237
- ## 트러블슈팅
439
+ ---
238
440
 
239
- ### 빌드 실패
441
+ ## 최적화
240
442
 
241
- ```bash
242
- # 로컬에서 Vercel 빌드 시뮬레이션
243
- vercel build
443
+ ### Cold Start 최소화
444
+
445
+ ```typescript
446
+ // nitro.config.ts
447
+ import { defineNitroConfig } from 'nitro/config'
448
+
449
+ export default defineNitroConfig({
450
+ preset: 'vercel',
451
+ compatibilityDate: '2024-09-19',
452
+
453
+ // 번들 최적화
454
+ minify: true,
244
455
 
245
- # 상세 로그 확인
246
- vercel logs [deployment-url]
456
+ // 트리 쉐이킹
457
+ experimental: {
458
+ wasm: true,
459
+ },
460
+ })
247
461
  ```
248
462
 
249
- ### Function 크기 초과
463
+ ### Function 크기 최소화
250
464
 
251
465
  ```typescript
252
466
  // nitro.config.ts
467
+ import { defineNitroConfig } from 'nitro/config'
468
+
253
469
  export default defineNitroConfig({
254
470
  preset: 'vercel',
255
- // 외부 패키지로 분리
256
- externals: ['@prisma/client', 'sharp'],
471
+ compatibilityDate: '2024-09-19',
472
+
473
+ // 외부 패키지 제외 (번들 크기 감소)
474
+ externals: ['sharp', 'prisma', '@prisma/client'],
257
475
  })
258
476
  ```
259
477
 
260
- ### 환경변수 누락
478
+ ---
479
+
480
+ ## 도메인 설정
261
481
 
262
482
  ```bash
263
- # 환경변수 다운
483
+ # 커스텀 도메인 추가
484
+ vercel domains add example.com
485
+
486
+ # DNS 설정 확인
487
+ vercel domains inspect example.com
488
+ ```
489
+
490
+ ---
491
+
492
+ ## 트러블슈팅
493
+
494
+ ### 일반적인 문제
495
+
496
+ | 문제 | 원인 | 해결 |
497
+ |------|------|------|
498
+ | Function Timeout | 실행 시간 초과 | `maxDuration` 증가 또는 최적화 |
499
+ | Edge 호환성 오류 | Node.js API 사용 | Edge 호환 API로 변경 |
500
+ | 환경 변수 누락 | 설정 안됨 | Vercel 대시보드에서 설정 |
501
+ | 빌드 실패 | 의존성 문제 | `pnpm-lock.yaml` 확인 |
502
+
503
+ ### 디버깅
504
+
505
+ ```bash
506
+ # 로컬에서 Vercel 환경 시뮬레이션
507
+ vercel dev
508
+
509
+ # 로그 확인
510
+ vercel logs
511
+
512
+ # 환경 변수 확인
513
+ vercel env ls
514
+
515
+ # 환경 변수 풀 다운
264
516
  vercel env pull .env.local
517
+
518
+ # 함수 상태 확인
519
+ vercel inspect
265
520
  ```
266
521
 
522
+ ---
523
+
267
524
  ## 유용한 명령어
268
525
 
269
526
  ```bash
@@ -280,8 +537,26 @@ vercel ls
280
537
  vercel rollback [deployment-url]
281
538
  ```
282
539
 
540
+ ---
541
+
542
+ ## package.json 스크립트
543
+
544
+ ```json
545
+ {
546
+ "scripts": {
547
+ "dev": "vite dev",
548
+ "build": "vite build && tsc --noEmit",
549
+ "start": "node .output/server/index.mjs",
550
+ "preview": "vite preview"
551
+ }
552
+ }
553
+ ```
554
+
555
+ ---
556
+
283
557
  ## 참고 자료
284
558
 
559
+ - [TanStack Start Hosting](https://tanstack.com/start/latest/docs/framework/react/hosting)
285
560
  - [Vercel 공식 문서](https://vercel.com/docs)
286
561
  - [Vercel CLI](https://vercel.com/docs/cli)
287
562
  - [Nitro Vercel Preset](https://nitro.build/deploy/providers/vercel)
@@ -14,6 +14,7 @@
14
14
  ❌ 커밋 메시지 여러 줄 작성
15
15
  ❌ 커밋 메시지에 이모지 사용
16
16
  ❌ 커밋 메시지에 마침표(.) 사용
17
+ ❌ 여러 작업을 하나의 커밋으로 퉁치기
17
18
  ```
18
19
 
19
20
  ---
@@ -23,10 +24,30 @@
23
24
  ### 작업 완료 후 반드시 실행
24
25
 
25
26
  ```bash
26
- git add .
27
+ git add <관련 파일들>
27
28
  git commit -m "<prefix>: <설명>"
28
29
  ```
29
30
 
31
+ ### ⭐ 커밋 분리 원칙
32
+
33
+ **하나의 커밋 = 하나의 논리적 변경 단위**
34
+
35
+ ```bash
36
+ # ❌ 잘못된 방식: 모든 작업을 하나로 퉁침
37
+ git add .
38
+ git commit -m "feat: 여러 기능 추가"
39
+
40
+ # ✅ 올바른 방식: 논리적 단위로 분리
41
+ git add src/routes/auth.tsx src/functions/auth.ts
42
+ git commit -m "feat: 사용자 로그인 기능 추가"
43
+
44
+ git add src/routes/profile.tsx src/functions/user.ts
45
+ git commit -m "feat: 프로필 조회 기능 추가"
46
+
47
+ git add docs/
48
+ git commit -m "docs: API 문서 업데이트"
49
+ ```
50
+
30
51
  ---
31
52
 
32
53
  ## 📝 커밋 형식
@@ -97,6 +118,9 @@ feat: 로그인 기능 추가
97
118
 
98
119
  - 이메일 인증 추가
99
120
  - 세션 관리 구현
121
+
122
+ # 여러 작업을 하나로 퉁침 (금지)
123
+ feat: 로그인, 회원가입, 프로필 기능 추가
100
124
  ```
101
125
 
102
126
  ---
@@ -107,19 +131,63 @@ feat: 로그인 기능 추가
107
131
  # 1. 작업 전 최신 코드 동기화
108
132
  git pull origin main
109
133
 
110
- # 2. 코드 작업 진행
111
- # ...
134
+ # 2. 기능 A 작업 완료 → 커밋
135
+ git add src/routes/feature-a.tsx src/functions/feature-a.ts
136
+ git commit -m "feat: 기능 A 구현"
112
137
 
113
- # 3. 변경사항 커밋
114
- git add .
115
- git commit -m "feat: 기능 설명"
138
+ # 3. 기능 B 작업 완료 → 커밋
139
+ git add src/routes/feature-b.tsx src/functions/feature-b.ts
140
+ git commit -m "feat: 기능 B 구현"
141
+
142
+ # 4. 문서 작업 완료 → 커밋
143
+ git add docs/
144
+ git commit -m "docs: 기능 A, B 문서 추가"
116
145
 
117
- # 4. 푸시
146
+ # 5. 푸시
118
147
  git push origin main
119
148
  ```
120
149
 
121
150
  ---
122
151
 
152
+ ## 📦 커밋 분리 가이드
153
+
154
+ ### 언제 커밋을 분리해야 하나요?
155
+
156
+ | 상황 | 커밋 분리 |
157
+ |------|----------|
158
+ | 서로 다른 기능 구현 | ✅ 분리 |
159
+ | 버그 수정 + 새 기능 | ✅ 분리 |
160
+ | 코드 변경 + 문서 변경 | ✅ 분리 |
161
+ | 리팩토링 + 기능 추가 | ✅ 분리 |
162
+ | 동일 기능의 라우트 + 함수 | 🔄 묶어도 됨 |
163
+ | 동일 기능의 스키마 + 서비스 | 🔄 묶어도 됨 |
164
+
165
+ ### 예시: 사용자 관리 기능 개발
166
+
167
+ ```bash
168
+ # 1. 인증 기능 커밋
169
+ git add src/routes/auth/ src/functions/auth.ts src/middleware/auth.ts
170
+ git commit -m "feat: 사용자 인증 기능 추가"
171
+
172
+ # 2. 프로필 기능 커밋
173
+ git add src/routes/profile/ src/functions/user.ts
174
+ git commit -m "feat: 프로필 조회 및 수정 기능 추가"
175
+
176
+ # 3. 유효성 검사 커밋
177
+ git add src/validators/
178
+ git commit -m "feat: 사용자 입력 유효성 검사 추가"
179
+
180
+ # 4. 테스트 커밋
181
+ git add tests/
182
+ git commit -m "test: 사용자 관리 기능 테스트 추가"
183
+
184
+ # 5. 문서 커밋
185
+ git add docs/
186
+ git commit -m "docs: 사용자 API 문서 추가"
187
+ ```
188
+
189
+ ---
190
+
123
191
  ## 🌿 브랜치 전략
124
192
 
125
193
  ### 간단한 프로젝트
@@ -166,6 +234,12 @@ git restore --staged .
166
234
  # 변경사항 임시 저장
167
235
  git stash
168
236
  git stash pop
237
+
238
+ # 특정 파일만 스테이징
239
+ git add <파일경로>
240
+
241
+ # 대화형 스테이징 (부분 커밋용)
242
+ git add -p
169
243
  ```
170
244
 
171
245
  ---