@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,302 +0,0 @@
1
- # Typography 2026 Guide
2
-
3
- ## 핵심 원칙
4
-
5
- 1. **Variable Fonts 사용** - 단일 파일로 다양한 웨이트
6
- 2. **명확한 위계** - Display, Body, Mono 구분
7
- 3. **독창적 선택** - 일반적인 폰트 회피
8
- 4. **성능 최적화** - font-display: swap
9
-
10
- ## Variable Fonts
11
-
12
- ### 설정
13
-
14
- ```css
15
- @font-face {
16
- font-family: 'Display';
17
- src: url('/fonts/display-variable.woff2') format('woff2');
18
- font-weight: 100 900; /* 가변 범위 */
19
- font-style: normal;
20
- font-display: swap; /* 필수 */
21
- }
22
-
23
- @font-face {
24
- font-family: 'Body';
25
- src: url('/fonts/body-variable.woff2') format('woff2');
26
- font-weight: 300 700;
27
- font-style: normal;
28
- font-display: swap;
29
- }
30
- ```
31
-
32
- ### 사용
33
-
34
- ```css
35
- :root {
36
- --font-display: 'Display', serif;
37
- --font-body: 'Body', sans-serif;
38
- --font-mono: 'JetBrains Mono', monospace;
39
- }
40
-
41
- h1 {
42
- font-family: var(--font-display);
43
- font-weight: 800; /* 가변 웨이트 */
44
- font-variation-settings: 'wght' 800; /* 세밀 조절 */
45
- }
46
- ```
47
-
48
- ## 타입 스케일
49
-
50
- ### Fluid Typography
51
-
52
- ```css
53
- :root {
54
- /* Fluid scale - clamp(min, preferred, max) */
55
- --text-xs: clamp(0.75rem, 0.7rem + 0.25vw, 0.875rem);
56
- --text-sm: clamp(0.875rem, 0.8rem + 0.35vw, 1rem);
57
- --text-base: clamp(1rem, 0.9rem + 0.5vw, 1.125rem);
58
- --text-lg: clamp(1.125rem, 1rem + 0.6vw, 1.25rem);
59
- --text-xl: clamp(1.25rem, 1.1rem + 0.75vw, 1.5rem);
60
- --text-2xl: clamp(1.5rem, 1.2rem + 1.5vw, 2rem);
61
- --text-3xl: clamp(2rem, 1.5rem + 2.5vw, 3rem);
62
- --text-4xl: clamp(2.5rem, 1.8rem + 3.5vw, 4rem);
63
- --text-5xl: clamp(3rem, 2rem + 5vw, 6rem);
64
- }
65
- ```
66
-
67
- ### Line Height
68
-
69
- ```css
70
- :root {
71
- --leading-tight: 1.1; /* 대형 헤드라인 */
72
- --leading-snug: 1.25; /* 소형 헤드라인 */
73
- --leading-normal: 1.5; /* 본문 */
74
- --leading-relaxed: 1.75; /* 긴 텍스트 */
75
- }
76
- ```
77
-
78
- ### Letter Spacing
79
-
80
- ```css
81
- :root {
82
- --tracking-tight: -0.02em; /* 대형 타이틀 */
83
- --tracking-normal: 0; /* 기본 */
84
- --tracking-wide: 0.05em; /* 캡션, 라벨 */
85
- --tracking-wider: 0.1em; /* 올캡스 */
86
- }
87
- ```
88
-
89
- ## 폰트 페어링
90
-
91
- ### 클래식 에디토리얼
92
-
93
- | 용도 | 폰트 | 웨이트 |
94
- |------|------|--------|
95
- | Display | Playfair Display | 400-800 |
96
- | Body | Source Sans 3 | 300-600 |
97
- | Mono | IBM Plex Mono | 400 |
98
-
99
- ```css
100
- /* CDN */
101
- @import url('https://fonts.googleapis.com/css2?family=Playfair+Display:wght@400..800&family=Source+Sans+3:wght@300..600&display=swap');
102
- ```
103
-
104
- ### 모던 볼드
105
-
106
- | 용도 | 폰트 | 웨이트 |
107
- |------|------|--------|
108
- | Display | Clash Display | 500-700 |
109
- | Body | Satoshi | 400-700 |
110
- | Mono | Fira Code | 400-500 |
111
-
112
- ```css
113
- /* Fontshare */
114
- @import url('https://api.fontshare.com/v2/css?f[]=clash-display@500,600,700&f[]=satoshi@400,500,700&display=swap');
115
- ```
116
-
117
- ### 따뜻한 친근함
118
-
119
- | 용도 | 폰트 | 웨이트 |
120
- |------|------|--------|
121
- | Display | Fraunces | 400-700 |
122
- | Body | Work Sans | 300-600 |
123
- | Mono | JetBrains Mono | 400 |
124
-
125
- ### 테크 미니멀
126
-
127
- | 용도 | 폰트 | 웨이트 |
128
- |------|------|--------|
129
- | Display | Space Mono | 400-700 |
130
- | Body | DM Sans | 400-600 |
131
- | Mono | Space Mono | 400 |
132
-
133
- ### 럭셔리 정제
134
-
135
- | 용도 | 폰트 | 웨이트 |
136
- |------|------|--------|
137
- | Display | Cormorant Garamond | 300-600 |
138
- | Body | Lora | 400-600 |
139
- | Mono | Victor Mono | 400 |
140
-
141
- ### 크리에이티브
142
-
143
- | 용도 | 폰트 | 웨이트 |
144
- |------|------|--------|
145
- | Display | Syne | 400-800 |
146
- | Body | General Sans | 400-600 |
147
- | Mono | Monaspace | 400 |
148
-
149
- ## 금지 폰트
150
-
151
- | 폰트 | 이유 |
152
- |------|------|
153
- | Inter | AI 슬롭의 대명사 |
154
- | Roboto | 무개성, 과다 사용 |
155
- | Arial | 시스템 기본, 무특징 |
156
- | Helvetica | 지루함 |
157
- | Space Grotesk | AI 생성물 단골 |
158
- | Montserrat | 과다 사용 |
159
- | Poppins | 과다 사용 |
160
- | Open Sans | 무개성 |
161
-
162
- **예외**: Inter는 독창적인 Display 폰트와 함께 Body로 사용 시 허용
163
-
164
- ## 실전 패턴
165
-
166
- ### 기본 설정
167
-
168
- ```css
169
- html {
170
- font-family: var(--font-body);
171
- font-size: var(--text-base);
172
- line-height: var(--leading-normal);
173
- -webkit-font-smoothing: antialiased;
174
- -moz-osx-font-smoothing: grayscale;
175
- text-rendering: optimizeLegibility;
176
- }
177
-
178
- h1, h2, h3, h4, h5, h6 {
179
- font-family: var(--font-display);
180
- line-height: var(--leading-tight);
181
- letter-spacing: var(--tracking-tight);
182
- text-wrap: balance; /* 2026 표준 */
183
- }
184
-
185
- p {
186
- text-wrap: pretty; /* 고아 방지 */
187
- max-width: 65ch; /* 가독성 */
188
- }
189
-
190
- code, pre {
191
- font-family: var(--font-mono);
192
- font-size: 0.9em;
193
- }
194
- ```
195
-
196
- ### 대형 헤드라인
197
-
198
- ```css
199
- .hero-title {
200
- font-family: var(--font-display);
201
- font-size: var(--text-5xl);
202
- font-weight: 800;
203
- line-height: var(--leading-tight);
204
- letter-spacing: var(--tracking-tight);
205
-
206
- /* 실험적 효과 */
207
- font-variation-settings: 'wght' 800, 'wdth' 110;
208
- }
209
- ```
210
-
211
- ### 캡션/라벨
212
-
213
- ```css
214
- .label {
215
- font-family: var(--font-body);
216
- font-size: var(--text-xs);
217
- font-weight: 500;
218
- letter-spacing: var(--tracking-wide);
219
- text-transform: uppercase;
220
- }
221
- ```
222
-
223
- ### 인용문
224
-
225
- ```css
226
- blockquote {
227
- font-family: var(--font-display);
228
- font-size: var(--text-xl);
229
- font-style: italic;
230
- font-weight: 400;
231
- line-height: var(--leading-snug);
232
- }
233
- ```
234
-
235
- ## 성능 최적화
236
-
237
- ### 서브셋팅
238
-
239
- ```css
240
- /* 한글 서브셋 */
241
- @font-face {
242
- font-family: 'Korean';
243
- src: url('/fonts/korean-subset.woff2') format('woff2');
244
- unicode-range: U+AC00-D7AF; /* 한글 음절 */
245
- font-display: swap;
246
- }
247
- ```
248
-
249
- ### 프리로드
250
-
251
- ```html
252
- <link rel="preload" href="/fonts/display.woff2" as="font" type="font/woff2" crossorigin>
253
- ```
254
-
255
- ### Font Loading API
256
-
257
- ```js
258
- // 폰트 로드 후 클래스 추가
259
- document.fonts.ready.then(() => {
260
- document.documentElement.classList.add('fonts-loaded');
261
- });
262
- ```
263
-
264
- ```css
265
- /* FOUT 방지 */
266
- html:not(.fonts-loaded) body {
267
- opacity: 0;
268
- }
269
- html.fonts-loaded body {
270
- opacity: 1;
271
- transition: opacity 0.3s;
272
- }
273
- ```
274
-
275
- ## 무료 폰트 소스
276
-
277
- | 소스 | URL | 특징 |
278
- |------|-----|------|
279
- | Google Fonts | fonts.google.com | 최대 규모, Variable 지원 |
280
- | Fontshare | fontshare.com | 고품질 무료 |
281
- | Font Squirrel | fontsquirrel.com | 웹폰트 생성기 |
282
- | Bunny Fonts | fonts.bunny.net | GDPR 준수 |
283
-
284
- ## 한글 폰트
285
-
286
- | 폰트 | 스타일 | 용도 |
287
- |------|--------|------|
288
- | Pretendard | 고딕 | 본문, UI |
289
- | SUIT | 고딕 | 모던 UI |
290
- | Noto Sans KR | 고딕 | 범용 |
291
- | Nanum Myeongjo | 명조 | 에디토리얼 |
292
- | KoPub 바탕 | 명조 | 본문 |
293
- | 마루 부리 | 명조 | 독특한 디스플레이 |
294
-
295
- ```css
296
- /* Pretendard Variable */
297
- @import url('https://cdn.jsdelivr.net/gh/orioncactus/pretendard/dist/web/variable/pretendardvariable.css');
298
-
299
- :root {
300
- --font-korean: 'Pretendard Variable', 'Pretendard', sans-serif;
301
- }
302
- ```
@@ -1,118 +0,0 @@
1
- ---
2
- name: gemini-review
3
- description: "Google Gemini CLI를 활용한 코드 리뷰 및 계획 검증 스킬. 구현 계획 검토, 코드 리뷰, 아키텍처 논의 시 Gemini를 세컨드 오피니언으로 활용. gemini-2.5-pro 모델 사용 (무료: 60req/min, 1000req/day)."
4
- license: Complete terms in LICENSE.txt
5
- ---
6
-
7
- # Gemini 리뷰 스킬
8
-
9
- Claude가 컨텍스트를 준비하고 Gemini가 독립적인 검증을 제공하는 듀얼 AI 리뷰 워크플로우.
10
-
11
- **모델**: `gemini-2.5-pro` (고정) | **비용**: 무료 (60 req/min, 1000 req/day)
12
-
13
- ## 사용 시점
14
-
15
- - 코딩 전 구현 계획 검증
16
- - 완성된 코드의 버그, 보안, 베스트 프랙티스 리뷰
17
- - 아키텍처 결정에 대한 세컨드 AI 의견
18
-
19
- ## 워크플로우 타입
20
-
21
- | 타입 | 목적 | 사용 시점 |
22
- |------|------|-----------|
23
- | **plan** | 구현 계획 검증 | 개발 시작 전 |
24
- | **code** | 완성 코드 리뷰 | 기능 구현 후 |
25
- | **architecture** | 시스템 설계 논의 | 설계 단계 또는 리팩토링 시 |
26
-
27
- ## 실행 프로세스
28
-
29
- ### Step 1: 사용자 컨텍스트 수집
30
-
31
- 1. **리뷰 타입**: `plan`, `code`, `architecture`
32
- 2. **리뷰 대상**: 실제 계획, 코드, 아키텍처 설명
33
- 3. **기술 스택** (선택): 프로젝트의 기술 스택 (자유 입력)
34
-
35
- ### Step 2: 체크리스트 로드
36
-
37
- `references/checklists.md`에서 리뷰 대상에 맞는 체크리스트 로드 (범용, 프론트엔드, 백엔드).
38
-
39
- ### Step 3: Gemini 실행
40
-
41
- `references/prompt-templates.md`에서 적절한 템플릿 선택 후 실행.
42
-
43
- **기본 패턴:**
44
- ```bash
45
- gemini -m gemini-2.5-pro -p "{prompt}" --output-format json
46
- ```
47
-
48
- **파일 리뷰:**
49
- ```bash
50
- cat {file_path} | gemini -m gemini-2.5-pro -p "{instructions}" --output-format json
51
- ```
52
-
53
- **응답 파싱:**
54
- ```bash
55
- result=$(gemini -m gemini-2.5-pro -p "..." --output-format json)
56
- echo "$result" | jq -r '.response'
57
- ```
58
-
59
- ### Step 4: 결과를 두 섹션으로 제시
60
-
61
- **항상 두 개의 명확히 구분된 섹션으로 결과 제시:**
62
-
63
- #### A. Gemini 응답 (원본)
64
- Gemini의 완전한 응답을 수정 없이 제시.
65
-
66
- #### B. Claude 분석 및 액션 플랜
67
-
68
- 1. **요약** (2-3문장): 핵심 발견 사항, 전체 평가
69
-
70
- 2. **액션 아이템** (우선순위 목록)
71
- - 🔴 심각: 진행 전 반드시 수정
72
- - 🟡 중요: 조속히 해결 필요
73
- - 🟢 경미: 개선하면 좋음
74
-
75
- 3. **바로 적용 가능한 코드** (해당 시)
76
-
77
- **출력 형식:**
78
- ```markdown
79
- ## 📋 Gemini 리뷰 결과
80
-
81
- ### A. Gemini 응답 (원본)
82
- {gemini_response_verbatim}
83
-
84
- ---
85
-
86
- ### B. Claude 분석
87
-
88
- #### 요약
89
- {2-3문장 개요}
90
-
91
- #### 액션 아이템
92
- 🔴 **심각**: {이슈} → {수정}
93
- 🟡 **중요**: {이슈} → {수정}
94
- 🟢 **경미**: {이슈} → {수정}
95
-
96
- #### 바로 적용 가능한 코드
97
- {fixed_code}
98
- ```
99
-
100
- ## 에러 처리
101
-
102
- Gemini 에러 발생 시:
103
- 1. 사용자에게 에러 메시지 표시
104
- 2. 일반적인 문제 확인: 할당량 초과, 네트워크 연결, 프롬프트 형식
105
- 3. 재시도 또는 대안 제안
106
-
107
- ## 할당량 관리
108
-
109
- 무료 티어 한도: 분당 60 요청, 일당 1000 요청
110
-
111
- 절약 팁:
112
- - 관련 리뷰를 단일 프롬프트로 결합
113
- - 구체적이고 집중된 리뷰 요청 사용
114
-
115
- ## 참조
116
-
117
- - [체크리스트](references/checklists.md): 범용/프론트엔드/백엔드 리뷰 체크리스트
118
- - [프롬프트 템플릿](references/prompt-templates.md): 리뷰 타입별 프롬프트 템플릿
@@ -1,129 +0,0 @@
1
- # 리뷰 체크리스트
2
-
3
- ## 범용 체크리스트
4
-
5
- ### 코드 품질
6
- - [ ] 단일 책임 원칙 준수
7
- - [ ] DRY - 불필요한 중복 없음
8
- - [ ] 함수/메서드가 집중적이고 작음
9
- - [ ] 명확한 명명 규칙
10
- - [ ] 주석은 "why"를 설명, "what"이 아님
11
-
12
- ### 로직 및 정확성
13
- - [ ] 엣지 케이스 처리 (빈 값, null, 경계값)
14
- - [ ] 포괄적인 에러 처리
15
- - [ ] 레이스 컨디션 고려
16
- - [ ] 입력 유효성 검사
17
- - [ ] 반환값 확인
18
-
19
- ### 보안
20
- - [ ] 하드코딩된 시크릿 없음
21
- - [ ] 사용자 입력 살균
22
- - [ ] SQL 인젝션 방지 (파라미터화된 쿼리)
23
- - [ ] XSS 방지 조치
24
- - [ ] 적절한 인증/인가
25
-
26
- ### 성능
27
- - [ ] 스케일에 적합한 시간 복잡도
28
- - [ ] 적절한 공간 복잡도
29
- - [ ] 불필요한 반복 없음
30
- - [ ] 데이터베이스 쿼리 최적화
31
- - [ ] 적절한 캐싱 고려
32
-
33
- ### 유지보수성
34
- - [ ] 테스트 가능한 코드
35
- - [ ] 최소한의 정당화된 의존성
36
- - [ ] 설정 외부화
37
- - [ ] 디버깅을 위한 로깅
38
- - [ ] 도움이 되는 에러 메시지
39
-
40
- ### 문서화
41
- - [ ] 공개 API 문서화
42
- - [ ] 복잡한 로직 설명
43
- - [ ] 명확한 설정 가이드
44
- - [ ] 환경 변수 문서화
45
-
46
- ---
47
-
48
- ## 프론트엔드 체크리스트
49
-
50
- ### 라우팅 및 네비게이션
51
- - [ ] 라우트 구조가 논리적으로 구성됨
52
- - [ ] 동적 라우트 파라미터 처리
53
- - [ ] 레이아웃 중첩 올바르게 구성
54
- - [ ] 404 및 에러 경계 적절히 처리
55
- - [ ] 네비게이션 상태 관리
56
-
57
- ### 상태 관리
58
- - [ ] 서버 상태와 클라이언트 상태 분리
59
- - [ ] 불필요한 전역 상태 최소화
60
- - [ ] 상태 업데이트 로직 명확
61
- - [ ] 파생 상태 적절히 활용
62
-
63
- ### 데이터 페칭
64
- - [ ] 효율적인 데이터 페칭 전략
65
- - [ ] 로딩/에러 상태 처리 완비
66
- - [ ] 적절한 캐싱 전략
67
- - [ ] 불필요한 재요청 방지
68
- - [ ] 옵티미스틱 업데이트 고려
69
-
70
- ### 렌더링
71
- - [ ] SSR/CSR 적절한 선택
72
- - [ ] 하이드레이션 미스매치 방지
73
- - [ ] SEO 필수 페이지에 SSR 적용
74
- - [ ] 클라이언트 전용 코드 올바르게 분리
75
-
76
- ### 성능 최적화
77
- - [ ] 코드 스플리팅 적용
78
- - [ ] 이미지 최적화
79
- - [ ] 번들 사이즈 모니터링
80
- - [ ] 불필요한 리렌더링 방지
81
- - [ ] 메모이제이션 적절히 사용
82
-
83
- ### 타입 안전성
84
- - [ ] Props 타입 정의
85
- - [ ] API 응답 타입 정의
86
- - [ ] `any` 타입 사용 최소화
87
- - [ ] 제네릭 적절히 활용
88
-
89
- ---
90
-
91
- ## 백엔드 체크리스트
92
-
93
- ### API 설계
94
- - [ ] RESTful/GraphQL 규칙 준수
95
- - [ ] 일관된 URL/엔드포인트 명명
96
- - [ ] 적절한 HTTP 메서드/상태 코드
97
- - [ ] API 버저닝 전략 (해당 시)
98
- - [ ] 일관된 응답 형식
99
-
100
- ### 데이터 검증
101
- - [ ] 입력 유효성 검사
102
- - [ ] 적절한 제약조건 (min, max, regex)
103
- - [ ] Optional vs required 필드 정의
104
- - [ ] 커스텀 밸리데이터 (필요 시)
105
-
106
- ### 비동기 패턴
107
- - [ ] async/await 일관되게 사용
108
- - [ ] 블로킹 I/O 방지
109
- - [ ] 동시 작업 적절히 처리
110
- - [ ] 장시간 작업에 백그라운드 처리
111
- - [ ] 데이터베이스 연결 풀링
112
-
113
- ### 인증/인가
114
- - [ ] 인증 구현 (OAuth2, JWT, API 키 등)
115
- - [ ] 보호된 엔드포인트에 인가 검사
116
- - [ ] 적절한 CORS 설정
117
- - [ ] 레이트 리미팅 고려
118
-
119
- ### 에러 처리
120
- - [ ] 일관된 에러 응답 형식
121
- - [ ] 적절한 HTTP 상태 코드
122
- - [ ] 에러에 민감 정보 노출 없음
123
- - [ ] 예외 핸들러 정의
124
-
125
- ### 테스팅
126
- - [ ] 테스트 클라이언트 설정
127
- - [ ] 모킹/스터빙 적절히 사용
128
- - [ ] 정상 경로 및 엣지 케이스 커버리지
129
- - [ ] 통합 테스트 포함