@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.
- package/dist/index.js +12 -3
- package/package.json +2 -2
- package/templates/hono/CLAUDE.md +20 -2
- package/templates/hono/docs/architecture/architecture.md +909 -0
- package/templates/hono/docs/deployment/cloudflare.md +537 -190
- package/templates/hono/docs/deployment/docker.md +517 -0
- package/templates/hono/docs/deployment/index.md +181 -213
- package/templates/hono/docs/deployment/railway.md +416 -0
- package/templates/hono/docs/deployment/vercel.md +572 -0
- package/templates/hono/docs/git/git.md +285 -0
- package/templates/hono/docs/library/ai-sdk/index.md +427 -0
- package/templates/hono/docs/library/ai-sdk/openrouter.md +479 -0
- package/templates/hono/docs/library/ai-sdk/providers.md +468 -0
- package/templates/hono/docs/library/ai-sdk/streaming.md +447 -0
- package/templates/hono/docs/library/ai-sdk/structured-output.md +493 -0
- package/templates/hono/docs/library/ai-sdk/tools.md +513 -0
- package/templates/hono/docs/library/hono/env-setup.md +458 -0
- package/templates/hono/docs/library/hono/index.md +1 -0
- package/templates/hono/docs/library/pino/index.md +437 -0
- package/templates/hono/docs/library/prisma/cloudflare-d1.md +503 -0
- package/templates/hono/docs/library/prisma/config.md +362 -0
- package/templates/hono/docs/library/prisma/index.md +86 -13
- package/templates/hono/docs/skills/gemini-review/SKILL.md +116 -116
- package/templates/hono/docs/skills/gemini-review/references/checklists.md +125 -125
- package/templates/hono/docs/skills/gemini-review/references/prompt-templates.md +191 -191
- package/templates/npx/CLAUDE.md +309 -0
- package/templates/npx/docs/git/git.md +307 -0
- package/templates/npx/docs/library/commander/index.md +164 -0
- package/templates/npx/docs/library/fs-extra/index.md +171 -0
- package/templates/npx/docs/library/prompts/index.md +253 -0
- package/templates/npx/docs/mcp/index.md +60 -0
- package/templates/npx/docs/skills/gemini-review/SKILL.md +220 -0
- package/templates/npx/docs/skills/gemini-review/references/checklists.md +134 -0
- package/templates/npx/docs/skills/gemini-review/references/prompt-templates.md +301 -0
- package/templates/tanstack-start/CLAUDE.md +43 -5
- package/templates/tanstack-start/docs/architecture/architecture.md +134 -4
- package/templates/tanstack-start/docs/deployment/cloudflare.md +234 -51
- package/templates/tanstack-start/docs/deployment/index.md +322 -32
- package/templates/tanstack-start/docs/deployment/nitro.md +201 -20
- package/templates/tanstack-start/docs/deployment/railway.md +305 -153
- package/templates/tanstack-start/docs/deployment/vercel.md +353 -78
- package/templates/tanstack-start/docs/git/{index.md → git.md} +81 -7
- package/templates/tanstack-start/docs/guides/best-practices.md +203 -1
- package/templates/tanstack-start/docs/guides/env-setup.md +450 -0
- package/templates/tanstack-start/docs/library/ai-sdk/hooks.md +472 -0
- package/templates/tanstack-start/docs/library/ai-sdk/index.md +264 -0
- package/templates/tanstack-start/docs/library/ai-sdk/openrouter.md +371 -0
- package/templates/tanstack-start/docs/library/ai-sdk/providers.md +403 -0
- package/templates/tanstack-start/docs/library/ai-sdk/streaming.md +320 -0
- package/templates/tanstack-start/docs/library/ai-sdk/structured-output.md +454 -0
- package/templates/tanstack-start/docs/library/ai-sdk/tools.md +473 -0
- package/templates/tanstack-start/docs/library/pino/index.md +320 -0
- package/templates/tanstack-start/docs/library/prisma/cloudflare-d1.md +404 -0
- package/templates/tanstack-start/docs/library/prisma/config.md +377 -0
- package/templates/tanstack-start/docs/library/prisma/index.md +3 -1
- package/templates/tanstack-start/docs/library/prisma/schema.md +123 -25
- package/templates/tanstack-start/docs/library/tanstack-start/server-functions.md +80 -2
- package/templates/tanstack-start/docs/skills/gemini-review/SKILL.md +116 -116
- package/templates/tanstack-start/docs/skills/gemini-review/references/checklists.md +138 -144
- package/templates/tanstack-start/docs/skills/gemini-review/references/prompt-templates.md +186 -187
- package/templates/hono/docs/git/index.md +0 -180
|
@@ -1,76 +1,76 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: gemini-review
|
|
3
|
-
description:
|
|
3
|
+
description: Google Gemini CLI를 활용한 코드 리뷰 및 계획 검증 스킬. 구현 계획 검토, 코드 리뷰, 아키텍처 논의 시 Gemini를 세컨드 오피니언으로 활용. TanStack Start, FastAPI 등 특화 체크리스트 지원. gemini-2.5-pro 모델 사용 (무료: 60req/min, 1000req/day).
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
# Gemini
|
|
6
|
+
# Gemini 리뷰 스킬
|
|
7
7
|
|
|
8
|
-
##
|
|
8
|
+
## 개요
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
Claude가 컨텍스트를 준비하고 Gemini가 독립적인 검증을 제공하는 듀얼 AI 리뷰 워크플로우. 결과는 항상 Gemini 원본 응답과 Claude의 종합 액션 플랜 두 섹션으로 제공.
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
12
|
+
**모델**: `gemini-2.5-pro` (고정)
|
|
13
|
+
**비용**: 무료 티어 (60 req/min, 1000 req/day)
|
|
14
14
|
|
|
15
|
-
##
|
|
15
|
+
## 사용 시점
|
|
16
16
|
|
|
17
|
-
-
|
|
18
|
-
-
|
|
19
|
-
-
|
|
20
|
-
-
|
|
17
|
+
- 코딩 전 구현 계획 검증
|
|
18
|
+
- 완성된 코드의 버그, 보안, 베스트 프랙티스 리뷰
|
|
19
|
+
- 아키텍처 결정에 대한 세컨드 AI 의견
|
|
20
|
+
- TanStack Start, FastAPI 프로젝트 특화 피드백
|
|
21
21
|
|
|
22
|
-
##
|
|
22
|
+
## 워크플로우 타입
|
|
23
23
|
|
|
24
|
-
|
|
|
25
|
-
|
|
26
|
-
| **plan** |
|
|
27
|
-
| **code** |
|
|
28
|
-
| **architecture** |
|
|
24
|
+
| 타입 | 목적 | 사용 시점 |
|
|
25
|
+
|------|------|-----------|
|
|
26
|
+
| **plan** | 구현 계획 검증 | 개발 시작 전 |
|
|
27
|
+
| **code** | 완성 코드 리뷰 | 기능 구현 후 |
|
|
28
|
+
| **architecture** | 시스템 설계 논의 | 설계 단계 또는 리팩토링 시 |
|
|
29
29
|
|
|
30
|
-
##
|
|
30
|
+
## 실행 프로세스
|
|
31
31
|
|
|
32
|
-
### Step 1:
|
|
32
|
+
### Step 1: 사용자 컨텍스트 수집
|
|
33
33
|
|
|
34
|
-
|
|
35
|
-
1.
|
|
36
|
-
2.
|
|
37
|
-
3.
|
|
34
|
+
실행 전 수집할 정보:
|
|
35
|
+
1. **리뷰 타입**: `plan`, `code`, `architecture`
|
|
36
|
+
2. **기술 스택** (선택): `tanstack-start`, `fastapi`, `general`
|
|
37
|
+
3. **리뷰 대상**: 실제 계획, 코드, 아키텍처 설명
|
|
38
38
|
|
|
39
|
-
### Step 2:
|
|
39
|
+
### Step 2: 체크리스트 로드
|
|
40
40
|
|
|
41
|
-
|
|
42
|
-
-
|
|
43
|
-
-
|
|
44
|
-
- General
|
|
41
|
+
기술 스택에 따라 `references/checklists.md`에서 해당 체크리스트 로드:
|
|
42
|
+
- **TanStack Start**: 라우팅, 서버 함수, 데이터 페칭, SSR/CSR
|
|
43
|
+
- **FastAPI**: API 설계, Pydantic 모델, 비동기 패턴, 보안
|
|
44
|
+
- **General**: 범용 베스트 프랙티스
|
|
45
45
|
|
|
46
|
-
### Step 3:
|
|
46
|
+
### Step 3: Gemini 명령어 구성 및 실행
|
|
47
47
|
|
|
48
|
-
|
|
48
|
+
`references/prompt-templates.md`에서 적절한 프롬프트 템플릿 로드 후 실행:
|
|
49
49
|
|
|
50
|
-
|
|
50
|
+
**인라인 프롬프트:**
|
|
51
51
|
```bash
|
|
52
|
-
gemini -m gemini-
|
|
52
|
+
gemini -m gemini-2.5-pro -p "{constructed_prompt}" --output-format json
|
|
53
53
|
```
|
|
54
54
|
|
|
55
|
-
|
|
55
|
+
**파일 내용 리뷰:**
|
|
56
56
|
```bash
|
|
57
|
-
cat {file_path} | gemini -m gemini-
|
|
57
|
+
cat {file_path} | gemini -m gemini-2.5-pro -p "{review_instructions}" --output-format json
|
|
58
58
|
```
|
|
59
59
|
|
|
60
|
-
|
|
60
|
+
**멀티라인 프롬프트 (heredoc):**
|
|
61
61
|
```bash
|
|
62
|
-
gemini -m gemini-
|
|
62
|
+
gemini -m gemini-2.5-pro --output-format json -p "$(cat << 'EOF'
|
|
63
63
|
{constructed_prompt}
|
|
64
64
|
EOF
|
|
65
65
|
)"
|
|
66
66
|
```
|
|
67
67
|
|
|
68
|
-
### Step 4:
|
|
68
|
+
### Step 4: JSON 응답 파싱
|
|
69
69
|
|
|
70
|
-
Gemini
|
|
70
|
+
Gemini 응답 구조:
|
|
71
71
|
```json
|
|
72
72
|
{
|
|
73
|
-
"response": "
|
|
73
|
+
"response": "실제 리뷰 내용",
|
|
74
74
|
"stats": {
|
|
75
75
|
"models": { ... },
|
|
76
76
|
"tools": { ... }
|
|
@@ -78,69 +78,69 @@ Gemini returns JSON with this structure:
|
|
|
78
78
|
}
|
|
79
79
|
```
|
|
80
80
|
|
|
81
|
-
|
|
81
|
+
`response` 필드에서 리뷰 내용 추출. `jq` 사용:
|
|
82
82
|
```bash
|
|
83
|
-
result=$(gemini -m gemini-
|
|
83
|
+
result=$(gemini -m gemini-2.5-pro -p "..." --output-format json)
|
|
84
84
|
echo "$result" | jq -r '.response'
|
|
85
85
|
```
|
|
86
86
|
|
|
87
|
-
### Step 5:
|
|
87
|
+
### Step 5: 결과를 두 섹션으로 제시
|
|
88
88
|
|
|
89
|
-
|
|
89
|
+
**중요**: 항상 두 개의 명확히 구분된 섹션으로 결과 제시:
|
|
90
90
|
|
|
91
|
-
####
|
|
92
|
-
|
|
91
|
+
#### 섹션 A: Gemini 원본 응답
|
|
92
|
+
Gemini의 완전한 응답을 수정 없이 제시. 사용자에게 Gemini가 발견한 내용을 그대로 보여줌.
|
|
93
93
|
|
|
94
|
-
####
|
|
95
|
-
|
|
94
|
+
#### 섹션 B: Claude 분석 및 액션 플랜
|
|
95
|
+
Gemini 피드백을 기반으로 Claude가 제공:
|
|
96
96
|
|
|
97
|
-
1.
|
|
98
|
-
-
|
|
99
|
-
-
|
|
97
|
+
1. **요약** (2-3문장)
|
|
98
|
+
- 핵심 발견 사항
|
|
99
|
+
- 전체 평가
|
|
100
100
|
|
|
101
|
-
2.
|
|
102
|
-
- 🔴
|
|
103
|
-
- 🟡
|
|
104
|
-
- 🟢
|
|
101
|
+
2. **액션 아이템** (우선순위 목록)
|
|
102
|
+
- 🔴 심각: 진행 전 반드시 수정
|
|
103
|
+
- 🟡 중요: 조속히 해결 필요
|
|
104
|
+
- 🟢 경미: 개선하면 좋음
|
|
105
105
|
|
|
106
|
-
3.
|
|
107
|
-
-
|
|
108
|
-
-
|
|
106
|
+
3. **바로 적용 가능한 코드** (해당 시)
|
|
107
|
+
- 각 이슈에 대한 실제 코드 수정안
|
|
108
|
+
- 필요 시 before/after 비교 포함
|
|
109
109
|
|
|
110
|
-
##
|
|
110
|
+
## 출력 형식 템플릿
|
|
111
111
|
|
|
112
112
|
```markdown
|
|
113
113
|
---
|
|
114
|
-
## 📋 Gemini
|
|
114
|
+
## 📋 Gemini 리뷰 결과
|
|
115
115
|
|
|
116
|
-
### A. Gemini
|
|
116
|
+
### A. Gemini 응답 (원본)
|
|
117
117
|
|
|
118
118
|
{gemini_response_verbatim}
|
|
119
119
|
|
|
120
120
|
---
|
|
121
121
|
|
|
122
|
-
### B. Claude
|
|
122
|
+
### B. Claude 분석
|
|
123
123
|
|
|
124
|
-
####
|
|
125
|
-
{2-3
|
|
124
|
+
#### 요약
|
|
125
|
+
{2-3문장 개요}
|
|
126
126
|
|
|
127
|
-
####
|
|
127
|
+
#### 액션 아이템
|
|
128
128
|
|
|
129
|
-
🔴
|
|
130
|
-
-
|
|
131
|
-
-
|
|
129
|
+
🔴 **심각**
|
|
130
|
+
- 이슈: {설명}
|
|
131
|
+
- 수정: {해결책}
|
|
132
132
|
|
|
133
|
-
🟡
|
|
134
|
-
-
|
|
135
|
-
-
|
|
133
|
+
🟡 **중요**
|
|
134
|
+
- 이슈: {설명}
|
|
135
|
+
- 수정: {해결책}
|
|
136
136
|
|
|
137
|
-
🟢
|
|
138
|
-
-
|
|
139
|
-
-
|
|
137
|
+
🟢 **경미**
|
|
138
|
+
- 이슈: {설명}
|
|
139
|
+
- 수정: {해결책}
|
|
140
140
|
|
|
141
|
-
####
|
|
141
|
+
#### 바로 적용 가능한 코드
|
|
142
142
|
|
|
143
|
-
**{
|
|
143
|
+
**{이슈명}**
|
|
144
144
|
```{language}
|
|
145
145
|
{fixed_code}
|
|
146
146
|
```
|
|
@@ -148,73 +148,73 @@ Based on Gemini's feedback, Claude provides:
|
|
|
148
148
|
---
|
|
149
149
|
```
|
|
150
150
|
|
|
151
|
-
##
|
|
151
|
+
## 명령어 예시
|
|
152
152
|
|
|
153
|
-
###
|
|
153
|
+
### 계획 리뷰
|
|
154
154
|
```bash
|
|
155
|
-
gemini -m gemini-
|
|
156
|
-
[
|
|
157
|
-
|
|
155
|
+
gemini -m gemini-2.5-pro --output-format json -p "$(cat << 'EOF'
|
|
156
|
+
[계획 리뷰 요청]
|
|
157
|
+
이 구현 계획의 완전성과 잠재적 문제를 검토해주세요:
|
|
158
158
|
|
|
159
159
|
{plan_content}
|
|
160
160
|
|
|
161
|
-
|
|
162
|
-
|
|
161
|
+
확인 사항: 로직 오류, 누락된 엣지 케이스, 아키텍처 결함, 보안 우려.
|
|
162
|
+
구체적이고 실행 가능한 피드백을 제공해주세요.
|
|
163
163
|
EOF
|
|
164
164
|
)"
|
|
165
165
|
```
|
|
166
166
|
|
|
167
|
-
###
|
|
167
|
+
### 코드 리뷰 (파일 파이핑)
|
|
168
168
|
```bash
|
|
169
|
-
cat src/api/auth.
|
|
169
|
+
cat src/routes/api/auth.ts | gemini -m gemini-2.5-pro -p "이 TanStack Start 인증 코드를 보안 이슈, 버그, 베스트 프랙티스 관점에서 리뷰해주세요. 구체적인 라인별 피드백을 제공해주세요." --output-format json
|
|
170
170
|
```
|
|
171
171
|
|
|
172
|
-
###
|
|
172
|
+
### 아키텍처 리뷰
|
|
173
173
|
```bash
|
|
174
|
-
gemini -m gemini-
|
|
175
|
-
[
|
|
176
|
-
|
|
177
|
-
|
|
174
|
+
gemini -m gemini-2.5-pro --output-format json -p "$(cat << 'EOF'
|
|
175
|
+
[아키텍처 리뷰]
|
|
176
|
+
시스템: {system_name}
|
|
177
|
+
기술 스택: TanStack Start + FastAPI + AWS
|
|
178
178
|
|
|
179
179
|
{architecture_description}
|
|
180
180
|
|
|
181
|
-
|
|
182
|
-
|
|
181
|
+
평가 항목: 확장성, 신뢰성, 유지보수성, 보안, 비용 효율성.
|
|
182
|
+
트레이드오프 분석과 함께 개선안을 제시해주세요.
|
|
183
183
|
EOF
|
|
184
184
|
)"
|
|
185
185
|
```
|
|
186
186
|
|
|
187
|
-
##
|
|
187
|
+
## 환경 호환성
|
|
188
188
|
|
|
189
|
-
|
|
|
190
|
-
|
|
191
|
-
| Claude Code |
|
|
192
|
-
| Claude (Web/Desktop) |
|
|
189
|
+
| 환경 | 실행 방법 |
|
|
190
|
+
|------|-----------|
|
|
191
|
+
| Claude Code | 직접 bash 실행 |
|
|
192
|
+
| Claude (Web/Desktop) | `bash_tool` 사용 |
|
|
193
193
|
|
|
194
|
-
|
|
194
|
+
명령어 문법은 모든 환경에서 동일.
|
|
195
195
|
|
|
196
|
-
##
|
|
196
|
+
## 에러 처리
|
|
197
197
|
|
|
198
|
-
|
|
199
|
-
1.
|
|
200
|
-
2.
|
|
201
|
-
-
|
|
202
|
-
-
|
|
203
|
-
-
|
|
204
|
-
3.
|
|
198
|
+
Gemini 에러 발생 시:
|
|
199
|
+
1. 사용자에게 에러 메시지 표시
|
|
200
|
+
2. 일반적인 문제 확인:
|
|
201
|
+
- 할당량 초과 (60/min 또는 1000/day 한도)
|
|
202
|
+
- 네트워크 연결
|
|
203
|
+
- 잘못된 프롬프트 형식
|
|
204
|
+
3. 재시도 또는 대안 제안
|
|
205
205
|
|
|
206
|
-
##
|
|
206
|
+
## 할당량 관리
|
|
207
207
|
|
|
208
|
-
|
|
209
|
-
- 60
|
|
210
|
-
- 1000
|
|
208
|
+
무료 티어 한도:
|
|
209
|
+
- 분당 60 요청
|
|
210
|
+
- 일당 1000 요청
|
|
211
211
|
|
|
212
|
-
|
|
213
|
-
-
|
|
214
|
-
-
|
|
215
|
-
-
|
|
212
|
+
할당량 절약:
|
|
213
|
+
- 관련 리뷰를 단일 프롬프트로 결합
|
|
214
|
+
- 구체적이고 집중된 리뷰 요청 사용
|
|
215
|
+
- 중복 리뷰 회피
|
|
216
216
|
|
|
217
|
-
##
|
|
217
|
+
## 참조 파일
|
|
218
218
|
|
|
219
|
-
- `references/checklists.md`:
|
|
220
|
-
- `references/prompt-templates.md`:
|
|
219
|
+
- `references/checklists.md`: 기술 스택별 리뷰 체크리스트
|
|
220
|
+
- `references/prompt-templates.md`: 리뷰 타입별 프롬프트 템플릿
|
|
@@ -1,150 +1,144 @@
|
|
|
1
|
-
#
|
|
2
|
-
|
|
3
|
-
##
|
|
4
|
-
|
|
5
|
-
###
|
|
6
|
-
- [ ]
|
|
7
|
-
- [ ]
|
|
8
|
-
- [ ]
|
|
9
|
-
- [ ]
|
|
10
|
-
- [ ]
|
|
11
|
-
|
|
12
|
-
###
|
|
13
|
-
- [ ]
|
|
14
|
-
- [ ]
|
|
15
|
-
- [ ]
|
|
16
|
-
- [ ]
|
|
17
|
-
- [ ]
|
|
18
|
-
|
|
19
|
-
###
|
|
20
|
-
- [ ]
|
|
21
|
-
- [ ]
|
|
22
|
-
- [ ]
|
|
23
|
-
- [ ]
|
|
24
|
-
- [ ]
|
|
25
|
-
|
|
26
|
-
###
|
|
27
|
-
- [ ]
|
|
28
|
-
- [ ]
|
|
29
|
-
- [ ]
|
|
30
|
-
- [ ]
|
|
31
|
-
- [ ]
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
- [ ]
|
|
36
|
-
- [ ]
|
|
37
|
-
- [ ]
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
- [ ]
|
|
42
|
-
- [ ]
|
|
43
|
-
- [ ]
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
- [ ]
|
|
48
|
-
- [ ]
|
|
49
|
-
- [ ]
|
|
1
|
+
# 기술 스택별 리뷰 체크리스트
|
|
2
|
+
|
|
3
|
+
## TanStack Start 체크리스트
|
|
4
|
+
|
|
5
|
+
### 라우팅
|
|
6
|
+
- [ ] 파일 기반 라우팅 구조가 논리적으로 구성됨
|
|
7
|
+
- [ ] 동적 라우트가 적절히 파라미터화됨 (`$param`)
|
|
8
|
+
- [ ] 레이아웃 라우트가 올바르게 중첩됨
|
|
9
|
+
- [ ] 404 및 에러 경계가 적절히 처리됨
|
|
10
|
+
- [ ] 라우트 그룹이 효과적으로 활용됨
|
|
11
|
+
|
|
12
|
+
### 서버 함수
|
|
13
|
+
- [ ] `createServerFn`이 올바르게 사용됨
|
|
14
|
+
- [ ] 서버 함수에서 적절한 유효성 검사 수행
|
|
15
|
+
- [ ] 에러 처리가 일관되게 구현됨
|
|
16
|
+
- [ ] 민감한 데이터가 클라이언트에 노출되지 않음
|
|
17
|
+
- [ ] 적절한 HTTP 메서드 사용 (GET vs POST)
|
|
18
|
+
|
|
19
|
+
### 데이터 페칭
|
|
20
|
+
- [ ] TanStack Query가 올바르게 통합됨
|
|
21
|
+
- [ ] `queryOptions`가 적절히 정의됨
|
|
22
|
+
- [ ] 로더에서 효율적인 데이터 페칭
|
|
23
|
+
- [ ] 적절한 캐싱 전략 사용
|
|
24
|
+
- [ ] 로딩/에러 상태 처리 완비
|
|
25
|
+
|
|
26
|
+
### SSR/CSR
|
|
27
|
+
- [ ] SSR이 필요한 곳에 적절히 사용됨
|
|
28
|
+
- [ ] 클라이언트 전용 코드가 올바르게 분리됨
|
|
29
|
+
- [ ] 하이드레이션 미스매치 방지
|
|
30
|
+
- [ ] SEO 필수 페이지에 SSR 적용
|
|
31
|
+
- [ ] 사용자별 데이터는 클라이언트에서 페칭
|
|
32
|
+
|
|
33
|
+
### 상태 관리
|
|
34
|
+
- [ ] 서버 상태와 클라이언트 상태가 분리됨
|
|
35
|
+
- [ ] TanStack Query로 서버 상태 관리
|
|
36
|
+
- [ ] 불필요한 전역 상태 최소화
|
|
37
|
+
- [ ] 컨텍스트가 적절히 사용됨
|
|
38
|
+
|
|
39
|
+
### 성능
|
|
40
|
+
- [ ] 코드 스플리팅 적용
|
|
41
|
+
- [ ] 이미지 최적화
|
|
42
|
+
- [ ] 번들 사이즈 모니터링
|
|
43
|
+
- [ ] 불필요한 리렌더링 방지
|
|
44
|
+
|
|
45
|
+
### 타입스크립트
|
|
46
|
+
- [ ] Strict 모드 활성화
|
|
47
|
+
- [ ] Props 인터페이스 정의
|
|
48
|
+
- [ ] API 응답 타입 정의
|
|
49
|
+
- [ ] `any` 타입 사용 최소화
|
|
50
50
|
|
|
51
51
|
---
|
|
52
52
|
|
|
53
|
-
##
|
|
54
|
-
|
|
55
|
-
###
|
|
56
|
-
- [ ]
|
|
57
|
-
- [ ]
|
|
58
|
-
- [ ]
|
|
59
|
-
- [ ]
|
|
60
|
-
- [ ]
|
|
61
|
-
|
|
62
|
-
###
|
|
63
|
-
- [ ]
|
|
64
|
-
- [ ]
|
|
65
|
-
- [ ]
|
|
66
|
-
- [ ]
|
|
67
|
-
- [ ]
|
|
68
|
-
|
|
69
|
-
###
|
|
70
|
-
- [ ]
|
|
71
|
-
- [ ]
|
|
72
|
-
- [ ]
|
|
73
|
-
- [ ]
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
- [ ]
|
|
78
|
-
- [ ]
|
|
79
|
-
- [ ]
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
- [ ]
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
- [ ]
|
|
86
|
-
- [ ]
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
- [ ]
|
|
92
|
-
- [ ]
|
|
93
|
-
- [ ]
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
- [ ]
|
|
98
|
-
- [ ]
|
|
99
|
-
- [ ]
|
|
100
|
-
|
|
101
|
-
### TypeScript
|
|
102
|
-
- [ ] Strict mode enabled
|
|
103
|
-
- [ ] Props interfaces defined
|
|
104
|
-
- [ ] API response types defined
|
|
105
|
-
- [ ] No `any` types without justification
|
|
53
|
+
## FastAPI 체크리스트
|
|
54
|
+
|
|
55
|
+
### API 설계
|
|
56
|
+
- [ ] RESTful 규칙 준수 (적절한 HTTP 메서드, 상태 코드)
|
|
57
|
+
- [ ] 일관된 URL 명명 (kebab-case, 복수형 명사)
|
|
58
|
+
- [ ] path vs query 파라미터 적절한 사용
|
|
59
|
+
- [ ] API 버저닝 전략 (해당 시)
|
|
60
|
+
- [ ] 엔드포인트 간 응답 모델 일관성
|
|
61
|
+
|
|
62
|
+
### Pydantic 모델
|
|
63
|
+
- [ ] 적절한 제약조건으로 필드 유효성 검사 (min, max, regex)
|
|
64
|
+
- [ ] Optional vs required 필드 올바르게 정의
|
|
65
|
+
- [ ] `Field()`로 메타데이터와 예시 적절히 사용
|
|
66
|
+
- [ ] Config 클래스 설정 (orm_mode, validate_assignment)
|
|
67
|
+
- [ ] 필요 시 커스텀 밸리데이터
|
|
68
|
+
|
|
69
|
+
### 비동기 패턴
|
|
70
|
+
- [ ] async/await 일관되게 사용
|
|
71
|
+
- [ ] async 함수 내 블로킹 I/O 없음
|
|
72
|
+
- [ ] 동시 작업에 `asyncio.gather()` 적절히 사용
|
|
73
|
+
- [ ] 장시간 작업에 백그라운드 태스크 사용
|
|
74
|
+
- [ ] 데이터베이스 연결 풀링
|
|
75
|
+
|
|
76
|
+
### 보안
|
|
77
|
+
- [ ] 인증 구현 (OAuth2, JWT, API 키)
|
|
78
|
+
- [ ] 보호된 엔드포인트에 인가 검사
|
|
79
|
+
- [ ] 입력 검증 및 살균
|
|
80
|
+
- [ ] 적절한 CORS 설정
|
|
81
|
+
- [ ] 레이트 리미팅 고려
|
|
82
|
+
- [ ] 하드코딩된 시크릿 없음
|
|
83
|
+
|
|
84
|
+
### 에러 처리
|
|
85
|
+
- [ ] 커스텀 예외 핸들러 정의
|
|
86
|
+
- [ ] 일관된 에러 응답 형식
|
|
87
|
+
- [ ] 에러에 적절한 HTTP 상태 코드
|
|
88
|
+
- [ ] 에러에 민감 정보 노출 없음
|
|
89
|
+
|
|
90
|
+
### 성능
|
|
91
|
+
- [ ] 데이터베이스 쿼리 최적화 (N+1 문제 방지)
|
|
92
|
+
- [ ] 목록 엔드포인트에 페이지네이션
|
|
93
|
+
- [ ] 적절한 캐싱 전략
|
|
94
|
+
- [ ] 응답 모델에서 불필요한 필드 제외
|
|
95
|
+
|
|
96
|
+
### 테스팅
|
|
97
|
+
- [ ] TestClient로 테스트 클라이언트 설정
|
|
98
|
+
- [ ] 모킹을 위한 의존성 오버라이드
|
|
99
|
+
- [ ] 정상 경로 및 엣지 케이스 커버리지
|
|
106
100
|
|
|
107
101
|
---
|
|
108
102
|
|
|
109
|
-
##
|
|
110
|
-
|
|
111
|
-
###
|
|
112
|
-
- [ ]
|
|
113
|
-
- [ ] DRY -
|
|
114
|
-
- [ ]
|
|
115
|
-
- [ ]
|
|
116
|
-
- [ ]
|
|
117
|
-
|
|
118
|
-
###
|
|
119
|
-
- [ ]
|
|
120
|
-
- [ ]
|
|
121
|
-
- [ ]
|
|
122
|
-
- [ ]
|
|
123
|
-
- [ ]
|
|
124
|
-
|
|
125
|
-
###
|
|
126
|
-
- [ ]
|
|
127
|
-
- [ ]
|
|
128
|
-
- [ ] SQL
|
|
129
|
-
- [ ] XSS
|
|
130
|
-
- [ ]
|
|
131
|
-
|
|
132
|
-
###
|
|
133
|
-
- [ ]
|
|
134
|
-
- [ ]
|
|
135
|
-
- [ ]
|
|
136
|
-
- [ ]
|
|
137
|
-
- [ ]
|
|
138
|
-
|
|
139
|
-
###
|
|
140
|
-
- [ ]
|
|
141
|
-
- [ ]
|
|
142
|
-
- [ ]
|
|
143
|
-
- [ ]
|
|
144
|
-
- [ ]
|
|
145
|
-
|
|
146
|
-
###
|
|
147
|
-
- [ ]
|
|
148
|
-
- [ ]
|
|
149
|
-
- [ ]
|
|
150
|
-
- [ ]
|
|
103
|
+
## 범용 체크리스트
|
|
104
|
+
|
|
105
|
+
### 코드 품질
|
|
106
|
+
- [ ] 단일 책임 원칙 준수
|
|
107
|
+
- [ ] DRY - 불필요한 중복 없음
|
|
108
|
+
- [ ] 함수/메서드가 집중적이고 작음
|
|
109
|
+
- [ ] 명확한 명명 규칙
|
|
110
|
+
- [ ] 주석은 "why"를 설명, "what"이 아님
|
|
111
|
+
|
|
112
|
+
### 로직 및 정확성
|
|
113
|
+
- [ ] 엣지 케이스 처리 (빈 값, null, 경계값)
|
|
114
|
+
- [ ] 포괄적인 에러 처리
|
|
115
|
+
- [ ] 레이스 컨디션 고려
|
|
116
|
+
- [ ] 입력 유효성 검사
|
|
117
|
+
- [ ] 반환값 확인
|
|
118
|
+
|
|
119
|
+
### 보안
|
|
120
|
+
- [ ] 하드코딩된 시크릿 없음
|
|
121
|
+
- [ ] 사용자 입력 살균
|
|
122
|
+
- [ ] SQL 인젝션 방지 (파라미터화된 쿼리)
|
|
123
|
+
- [ ] XSS 방지 조치
|
|
124
|
+
- [ ] 적절한 인증/인가
|
|
125
|
+
|
|
126
|
+
### 성능
|
|
127
|
+
- [ ] 스케일에 적합한 시간 복잡도
|
|
128
|
+
- [ ] 적절한 공간 복잡도
|
|
129
|
+
- [ ] 불필요한 반복 없음
|
|
130
|
+
- [ ] 데이터베이스 쿼리 최적화
|
|
131
|
+
- [ ] 적절한 캐싱 고려
|
|
132
|
+
|
|
133
|
+
### 유지보수성
|
|
134
|
+
- [ ] 테스트 가능한 코드
|
|
135
|
+
- [ ] 최소한의 정당화된 의존성
|
|
136
|
+
- [ ] 설정 외부화
|
|
137
|
+
- [ ] 디버깅을 위한 로깅
|
|
138
|
+
- [ ] 도움이 되는 에러 메시지
|
|
139
|
+
|
|
140
|
+
### 문서화
|
|
141
|
+
- [ ] 공개 API 문서화
|
|
142
|
+
- [ ] 복잡한 로직 설명
|
|
143
|
+
- [ ] 명확한 설정 가이드
|
|
144
|
+
- [ ] 환경 변수 문서화
|