@yeongjaeyou/claude-code-config 0.2.1 → 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.
- package/.claude/commands/ask-codex.md +429 -0
- package/.claude/commands/ask-gemini.md +438 -0
- package/.claude/commands/gh/post-merge.md +7 -2
- package/.claude/commands/tm/post-merge.md +12 -5
- package/.claude/commands/tm/resolve-issue.md +40 -0
- package/.claude/commands/tm/review-prd-with-codex.md +449 -0
- package/.claude/commands/tm/sync-to-github.md +87 -39
- package/README.md +10 -0
- package/package.json +5 -2
|
@@ -0,0 +1,438 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: 현재 대화 맥락을 Gemini에게 전달하여 검토받기
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Gemini 검토 요청 (ask-gemini)
|
|
6
|
+
|
|
7
|
+
현재 대화에서 진행 중인 작업(코드 변경, 설계, 구현 등)을 Gemini CLI에게 전달하여 검토받고, Claude가 cross-check하여 합의된 결론을 전달합니다.
|
|
8
|
+
|
|
9
|
+
**핵심 원칙:**
|
|
10
|
+
- Gemini CLI 호출 (API 비용 없음, Pro 구독 활용)
|
|
11
|
+
- Gemini는 context/도구가 제한적이므로 Claude가 반드시 검증
|
|
12
|
+
- 불일치 시 Gemini에 재질문 (컨텍스트 재전달 방식)
|
|
13
|
+
- 최대 3회 핑퐁 후 합의 도출
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## 아규먼트
|
|
18
|
+
|
|
19
|
+
`$ARGUMENTS`로 검토 방향 또는 파일 경로를 받습니다.
|
|
20
|
+
|
|
21
|
+
### 호출 방식 3가지
|
|
22
|
+
|
|
23
|
+
1. **아규먼트 없이**: `/ask-gemini`
|
|
24
|
+
- Claude가 현재 대화 맥락에서 관련 파일/변경사항을 자동 수집
|
|
25
|
+
- 범용 검토 (구현 방향성, 코드 품질, 설계 등)
|
|
26
|
+
|
|
27
|
+
2. **간단한 설명**: `/ask-gemini '프론트엔드 컴포넌트 설계 검토해줘'`
|
|
28
|
+
- 사용자가 지정한 방향으로 검토
|
|
29
|
+
- Claude가 해당 방향에 맞는 컨텍스트 수집
|
|
30
|
+
|
|
31
|
+
3. **파일 경로**: `/ask-gemini src/components/foo.tsx`
|
|
32
|
+
- 특정 파일을 중심으로 검토
|
|
33
|
+
- 해당 파일 + 관련 의존성 파일 포함
|
|
34
|
+
|
|
35
|
+
### 아규먼트 파싱 규칙
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
판단 기준 (우선순위 순):
|
|
39
|
+
1. 아규먼트가 실제 존재하는 파일/디렉토리 -> 파일 모드
|
|
40
|
+
2. 그 외 모든 경우 -> 텍스트 모드 (검토 방향 지시)
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
---
|
|
44
|
+
|
|
45
|
+
## Gemini 컨텍스트 구성 원칙
|
|
46
|
+
|
|
47
|
+
### 1. 이번 워크플로우의 Gemini 사용 범위
|
|
48
|
+
- **Gemini CLI** 사용 (Bash 도구로 호출)
|
|
49
|
+
- 네트워크/웹서치는 사용하지 않음 (재현성과 안전을 위해)
|
|
50
|
+
- 재현성을 위해 컨텍스트를 프롬프트에 직접 포함
|
|
51
|
+
|
|
52
|
+
### 2. 컨텍스트 자동 수집 항목
|
|
53
|
+
Claude가 다음 정보를 자동으로 수집:
|
|
54
|
+
|
|
55
|
+
| 항목 | 수집 방법 | 우선순위 |
|
|
56
|
+
|------|----------|---------|
|
|
57
|
+
| 현재 대화에서 다룬 파일들 | 대화 히스토리에서 Read/Edit/Write 사용 이력 | 필수 |
|
|
58
|
+
| git 변경사항 | `git diff`, `git status` | 필수 |
|
|
59
|
+
| CLAUDE.md | 프로젝트 루트 | 필수 |
|
|
60
|
+
| 관련 디렉토리 구조 | `tree` 또는 `ls` | 권장 |
|
|
61
|
+
| 최근 커밋 히스토리 | `git log --oneline -10` | 선택 |
|
|
62
|
+
| 관련 파일 심볼 개요 | `get_symbols_overview` 또는 파일 읽기 | 선택 |
|
|
63
|
+
|
|
64
|
+
### 3. 포함하지 말아야 할 정보 (Gemini 프롬프트에서 제외)
|
|
65
|
+
- Claude 전용 도구 언급 (AskUserQuestion, TodoWrite 등)
|
|
66
|
+
- 내부 워크플로우 세부사항
|
|
67
|
+
|
|
68
|
+
### 4. 민감정보 필터링 (필수)
|
|
69
|
+
|
|
70
|
+
Gemini에게 전달하는 프롬프트에서 반드시 제외:
|
|
71
|
+
|
|
72
|
+
```
|
|
73
|
+
제외 파일 패턴:
|
|
74
|
+
- .env*, secrets*, *credentials*, *token*
|
|
75
|
+
- *.pem, *.key, *.p12, *.pfx
|
|
76
|
+
|
|
77
|
+
제외 콘텐츠 패턴 (정규식):
|
|
78
|
+
- API 키: sk-[a-zA-Z0-9]+, AKIA[A-Z0-9]+, ghp_[a-zA-Z0-9]+
|
|
79
|
+
- 토큰: Bearer [a-zA-Z0-9._-]+
|
|
80
|
+
- 비밀번호: password\s*[:=]\s*['"][^'"]+
|
|
81
|
+
|
|
82
|
+
기타 제외:
|
|
83
|
+
- 바이너리/미디어 파일 (*.mp4, *.png, *.jpg 등)
|
|
84
|
+
- node_modules/, __pycache__/, .git/
|
|
85
|
+
- 로그 파일 (*.log)
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
### 5. 프롬프트 크기 관리 (토큰 초과 방지)
|
|
89
|
+
|
|
90
|
+
```
|
|
91
|
+
축약 정책 (우선순위 순):
|
|
92
|
+
1. git diff 우선 - 전체 파일 대신 변경분만 포함
|
|
93
|
+
2. 대용량 파일 - 500줄 초과 시 변경 주변 50줄만 발췌
|
|
94
|
+
3. 심볼 개요 - 매우 큰 파일은 함수/클래스 목록만
|
|
95
|
+
4. 최대 파일 수 - 한 번에 5개 파일까지만 (나머지는 요약)
|
|
96
|
+
|
|
97
|
+
타임아웃 발생 시:
|
|
98
|
+
- CLAUDE.md 핵심 섹션만 포함 (전체 대신)
|
|
99
|
+
- 디렉토리 구조 깊이 축소 (tree -L 1)
|
|
100
|
+
- 파일 본문 생략하고 diff만 전달
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### 6. 출력 형식 강제
|
|
104
|
+
- 구조화된 형식 명시 (테이블, 리스트)
|
|
105
|
+
- 라인 번호/파일 위치 참조 요구 (`nl -ba <file>` 형식 사용)
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## 작업 순서
|
|
110
|
+
|
|
111
|
+
### Step 1: 아규먼트 파싱
|
|
112
|
+
|
|
113
|
+
```
|
|
114
|
+
$ARGUMENTS 분석:
|
|
115
|
+
- 없음 -> 범용 검토 모드
|
|
116
|
+
- 텍스트 (따옴표 포함) -> 해당 방향 검토 모드
|
|
117
|
+
- 파일 경로 -> 해당 파일 중심 검토 모드
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
아규먼트가 없으면 사용자에게 AskUserQuestion으로 검토 방향 확인:
|
|
121
|
+
- 구현 방향성 검토
|
|
122
|
+
- 코드 품질 검토
|
|
123
|
+
- 설계/아키텍처 검토
|
|
124
|
+
- 기타 (직접 입력)
|
|
125
|
+
|
|
126
|
+
### Step 2: 컨텍스트 자동 수집
|
|
127
|
+
|
|
128
|
+
#### 2.1 현재 대화에서 다룬 파일 목록 정리
|
|
129
|
+
- 이 대화에서 Read/Edit/Write 도구로 접근한 파일들
|
|
130
|
+
- 수정된 코드 내용 요약
|
|
131
|
+
|
|
132
|
+
#### 2.2 git 변경사항 수집
|
|
133
|
+
```bash
|
|
134
|
+
git status
|
|
135
|
+
git diff --stat
|
|
136
|
+
git diff [특정 파일] # 변경된 파일의 diff
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
#### 2.3 CLAUDE.md 읽기
|
|
140
|
+
- 프로젝트 지침 전체 포함
|
|
141
|
+
|
|
142
|
+
#### 2.4 관련 디렉토리 구조
|
|
143
|
+
```bash
|
|
144
|
+
tree -L 2 --dirsfirst -I 'node_modules|__pycache__|.git|dist|build|.next' [관련 디렉토리]
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
#### 2.5 (선택) 관련 파일 심볼 개요
|
|
148
|
+
- 주요 변경 파일의 클래스/함수 구조 파악
|
|
149
|
+
|
|
150
|
+
### Step 3: Gemini 프롬프트 구성
|
|
151
|
+
|
|
152
|
+
다음 템플릿을 사용하여 프롬프트 작성:
|
|
153
|
+
|
|
154
|
+
```
|
|
155
|
+
## 역할
|
|
156
|
+
당신은 코드 검토 전문가입니다. 현재 진행 중인 작업에 대해 검토해주세요.
|
|
157
|
+
|
|
158
|
+
## 검토 유형
|
|
159
|
+
[아규먼트 또는 사용자 선택에 따라]
|
|
160
|
+
- 구현 방향성 검토: 현재 접근 방식이 올바른지, 더 나은 방법이 있는지
|
|
161
|
+
- 코드 품질 검토: 코드 스타일, 버그 가능성, 리팩토링 제안
|
|
162
|
+
- 설계/아키텍처 검토: 전체적인 설계 패턴, 의존성 구조
|
|
163
|
+
|
|
164
|
+
## 프로젝트 컨텍스트
|
|
165
|
+
|
|
166
|
+
### 프로젝트 지침 (CLAUDE.md)
|
|
167
|
+
[CLAUDE.md 전문]
|
|
168
|
+
|
|
169
|
+
### 디렉토리 구조
|
|
170
|
+
[관련 디렉토리 tree 출력]
|
|
171
|
+
|
|
172
|
+
## 검토 대상
|
|
173
|
+
|
|
174
|
+
### 현재 작업 요약
|
|
175
|
+
[대화에서 진행 중인 작업 설명]
|
|
176
|
+
|
|
177
|
+
### 변경된 파일들
|
|
178
|
+
[git diff 또는 변경 파일 목록]
|
|
179
|
+
|
|
180
|
+
### 파일 내용
|
|
181
|
+
[주요 변경 파일 내용 - 라인 번호 포함]
|
|
182
|
+
|
|
183
|
+
## 검토 기준
|
|
184
|
+
1. 구현 방향성: 요구사항에 맞는 접근인지, 대안이 있는지
|
|
185
|
+
2. 코드 품질: 버그 가능성, 예외 처리, 코드 스타일
|
|
186
|
+
3. 설계: 모듈 구조, 의존성, 확장성
|
|
187
|
+
4. 프로젝트 지침 준수: CLAUDE.md 컨벤션 준수 여부
|
|
188
|
+
|
|
189
|
+
## 출력 형식 (반드시 이 형식으로)
|
|
190
|
+
|
|
191
|
+
### 잘한 점 (Strengths)
|
|
192
|
+
- [항목]: [설명] (파일:라인)
|
|
193
|
+
|
|
194
|
+
### 개선 제안 (Suggestions)
|
|
195
|
+
| 항목 | 위치(파일:라인) | 현재 문제 | 개선 방안 |
|
|
196
|
+
|------|---------------|----------|----------|
|
|
197
|
+
|
|
198
|
+
### 위험 요소 (Risks)
|
|
199
|
+
- [심각도]: [설명] (파일:라인)
|
|
200
|
+
|
|
201
|
+
### 질문 사항 (Questions)
|
|
202
|
+
- [질문 1]
|
|
203
|
+
- [질문 2]
|
|
204
|
+
|
|
205
|
+
### 종합 평가
|
|
206
|
+
[1-2문장 요약]
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
### Step 4: Gemini CLI 호출
|
|
210
|
+
|
|
211
|
+
**히어독 방식으로 Bash 도구 호출** (따옴표/개행 이스케이프 문제 방지):
|
|
212
|
+
|
|
213
|
+
```bash
|
|
214
|
+
cat <<'EOF' | gemini -p -
|
|
215
|
+
[Step 3에서 구성한 전체 프롬프트]
|
|
216
|
+
EOF
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
**Bash 도구 파라미터:**
|
|
220
|
+
- `timeout`: 300000 (5분)
|
|
221
|
+
- `description`: "Gemini 코드 검토 요청"
|
|
222
|
+
|
|
223
|
+
**에러 처리:**
|
|
224
|
+
- CLI 실패 시 stderr 캡처하여 사용자에게 보고
|
|
225
|
+
- 타임아웃 시 프롬프트 길이 축소 후 1회 재시도
|
|
226
|
+
|
|
227
|
+
### Step 5: Gemini 피드백 수신 및 파싱
|
|
228
|
+
|
|
229
|
+
Gemini 응답을 다음 구조로 정리:
|
|
230
|
+
- Strengths: 잘한 점 목록
|
|
231
|
+
- Suggestions: 개선 제안 테이블
|
|
232
|
+
- Risks: 위험 요소 목록
|
|
233
|
+
- Questions: 질문 사항
|
|
234
|
+
- Summary: 종합 평가
|
|
235
|
+
|
|
236
|
+
### Step 6: Claude Cross-check
|
|
237
|
+
|
|
238
|
+
**Gemini가 놓칠 수 있는 항목 검증:**
|
|
239
|
+
|
|
240
|
+
1. **프로젝트 컨텍스트 검증**
|
|
241
|
+
- Gemini가 프로젝트 특성을 제대로 이해했는지
|
|
242
|
+
- CLAUDE.md 지침 준수 여부 재확인
|
|
243
|
+
|
|
244
|
+
2. **기술적 정확성 검증**
|
|
245
|
+
- 제안된 개선 방안이 실제로 적용 가능한지
|
|
246
|
+
- 프로젝트 기술 스택과 호환되는지
|
|
247
|
+
|
|
248
|
+
3. **기존 코드베이스 검증**
|
|
249
|
+
- 제안이 기존 패턴과 일관성 있는지
|
|
250
|
+
- 이미 해결된 문제를 지적하지 않았는지
|
|
251
|
+
|
|
252
|
+
4. **Gemini 틀린 부분 식별**
|
|
253
|
+
- 검증 결과 틀린 내용 목록화
|
|
254
|
+
- 근거 준비 (실제 코드, 문서 등)
|
|
255
|
+
|
|
256
|
+
### Step 7: 불일치 확인 및 재검토 (최대 3회)
|
|
257
|
+
|
|
258
|
+
**불일치 항목이 있으면:**
|
|
259
|
+
|
|
260
|
+
새 Gemini CLI 호출하되, 이전 맥락을 프롬프트에 포함:
|
|
261
|
+
|
|
262
|
+
```
|
|
263
|
+
## 역할
|
|
264
|
+
당신은 코드 검토 전문가입니다.
|
|
265
|
+
|
|
266
|
+
## 이전 검토 맥락
|
|
267
|
+
|
|
268
|
+
### 1차 검토 결과 요약
|
|
269
|
+
[Gemini 1차 응답 핵심 내용]
|
|
270
|
+
|
|
271
|
+
### Claude Cross-check 결과
|
|
272
|
+
[불일치 항목 및 근거]
|
|
273
|
+
|
|
274
|
+
## 재검토 요청
|
|
275
|
+
위 Cross-check 결과를 반영하여 다음 항목만 재검토해주세요:
|
|
276
|
+
1. [불일치 항목 1]
|
|
277
|
+
2. [불일치 항목 2]
|
|
278
|
+
|
|
279
|
+
기존 평가 중 변경이 필요한 부분만 수정된 형식으로 답변해주세요.
|
|
280
|
+
|
|
281
|
+
## 참고 정보
|
|
282
|
+
[필요시 추가 컨텍스트]
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
**핑퐁 종료 조건:**
|
|
286
|
+
- 합의 도달 (불일치 항목 없음)
|
|
287
|
+
- 최대 3회 도달
|
|
288
|
+
- Gemini가 Claude의 근거를 수용
|
|
289
|
+
|
|
290
|
+
### Step 8: 합의 결과 전달
|
|
291
|
+
|
|
292
|
+
**출력 형식:**
|
|
293
|
+
|
|
294
|
+
```markdown
|
|
295
|
+
## Gemini 검토 결과 (Gemini + Claude 합의)
|
|
296
|
+
|
|
297
|
+
### 검토 과정
|
|
298
|
+
- 검토 유형: [구현 방향성 / 코드 품질 / 설계 / 복합]
|
|
299
|
+
- 핑퐁 횟수: [N]회
|
|
300
|
+
- 합의 상태: [완전 합의 / 부분 합의 / Claude 판단]
|
|
301
|
+
|
|
302
|
+
### [VALID] 유효한 피드백
|
|
303
|
+
| 항목 | 설명 | 위치 | 출처 |
|
|
304
|
+
|------|------|------|------|
|
|
305
|
+
|
|
306
|
+
### [SUGGESTION] 개선 제안
|
|
307
|
+
| 항목 | 현재 문제 | 개선 방안 | 출처 |
|
|
308
|
+
|------|----------|----------|------|
|
|
309
|
+
|
|
310
|
+
### [RISK] 주의 필요 사항
|
|
311
|
+
| 심각도 | 설명 | 위치 |
|
|
312
|
+
|--------|------|------|
|
|
313
|
+
|
|
314
|
+
### [CORRECTION] Gemini 오류 교정
|
|
315
|
+
| Gemini 주장 | 실제 상황 | 근거 |
|
|
316
|
+
|-------------|----------|------|
|
|
317
|
+
|
|
318
|
+
### [ACTION] 권장 조치
|
|
319
|
+
(선택지가 있으면 AskUserQuestion으로 질문)
|
|
320
|
+
|
|
321
|
+
### [SUMMARY] 종합 결론
|
|
322
|
+
[최종 요약]
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
---
|
|
326
|
+
|
|
327
|
+
## 작업 지침
|
|
328
|
+
|
|
329
|
+
- 한글로 답변
|
|
330
|
+
- 코드나 문서 작성 시 이모지 사용 금지
|
|
331
|
+
- **불명확한 사항은 추측하지 말고 AskUserQuestion으로 질문**
|
|
332
|
+
- 코드 수정 제안은 사용자 확인 후 진행
|
|
333
|
+
- Gemini와 Claude 의견 불일치 시 근거를 명확히 제시
|
|
334
|
+
- `@CLAUDE.md`의 프로젝트 지침을 준수할 것
|
|
335
|
+
|
|
336
|
+
---
|
|
337
|
+
|
|
338
|
+
## 오류 처리
|
|
339
|
+
|
|
340
|
+
- **컨텍스트 부족**: "현재 대화에서 검토할 내용을 찾지 못했습니다. 검토 방향을 지정해주세요."
|
|
341
|
+
- **Gemini CLI 미설치**: "Gemini CLI가 설치되어 있지 않습니다. `npm install -g @google/gemini-cli` 후 `gemini auth`로 인증해주세요."
|
|
342
|
+
- **Gemini CLI 호출 실패**: "Gemini CLI 호출에 실패했습니다. `gemini auth` 상태를 확인해주세요."
|
|
343
|
+
- **타임아웃**: "Gemini 응답 시간 초과. 프롬프트 길이를 줄이거나 다시 시도해주세요."
|
|
344
|
+
- **재검토 필요**: "이전 맥락을 포함하여 새 세션으로 재검토를 진행합니다."
|
|
345
|
+
|
|
346
|
+
---
|
|
347
|
+
|
|
348
|
+
## 워크플로우 다이어그램
|
|
349
|
+
|
|
350
|
+
```
|
|
351
|
+
[Step 1: 아규먼트 파싱]
|
|
352
|
+
|
|
|
353
|
+
+-- 없음 -> AskUserQuestion으로 검토 유형 확인
|
|
354
|
+
+-- 텍스트 -> 해당 방향 검토
|
|
355
|
+
+-- 파일 경로 -> 해당 파일 중심 검토
|
|
356
|
+
|
|
|
357
|
+
v
|
|
358
|
+
[Step 2: 컨텍스트 자동 수집]
|
|
359
|
+
- 대화 히스토리에서 파일 목록
|
|
360
|
+
- git diff / status
|
|
361
|
+
- CLAUDE.md
|
|
362
|
+
- 디렉토리 구조
|
|
363
|
+
|
|
|
364
|
+
v
|
|
365
|
+
[Step 3: Gemini 프롬프트 구성]
|
|
366
|
+
|
|
|
367
|
+
v
|
|
368
|
+
[Step 4: Gemini CLI 호출] --------------------------------+
|
|
369
|
+
| cat <<'EOF' | gemini -p - |
|
|
370
|
+
v |
|
|
371
|
+
[Step 5: 피드백 파싱] |
|
|
372
|
+
| |
|
|
373
|
+
v |
|
|
374
|
+
[Step 6: Claude Cross-check] |
|
|
375
|
+
| |
|
|
376
|
+
v |
|
|
377
|
+
[Step 7: 불일치 있음?] |
|
|
378
|
+
| |
|
|
379
|
+
+-- YES & 반복 < 3 --> [새 CLI 호출 + 컨텍스트 재전달]-+
|
|
380
|
+
|
|
|
381
|
+
+-- NO 또는 반복 >= 3 --> [Step 8: 합의 결과 전달]
|
|
382
|
+
```
|
|
383
|
+
|
|
384
|
+
---
|
|
385
|
+
|
|
386
|
+
## 사용 예시
|
|
387
|
+
|
|
388
|
+
```bash
|
|
389
|
+
# 범용 검토 (현재 대화 맥락 자동 수집)
|
|
390
|
+
/ask-gemini
|
|
391
|
+
|
|
392
|
+
# 방향 지정 검토
|
|
393
|
+
/ask-gemini '프론트엔드 컴포넌트 설계 검토해줘'
|
|
394
|
+
/ask-gemini '이 구현 방향이 맞는지 확인해줘'
|
|
395
|
+
/ask-gemini '코드 품질 이슈 찾아줘'
|
|
396
|
+
|
|
397
|
+
# 특정 파일 검토
|
|
398
|
+
/ask-gemini src/components/video/video-player.tsx
|
|
399
|
+
/ask-gemini services/child_safety_processor.py
|
|
400
|
+
```
|
|
401
|
+
|
|
402
|
+
---
|
|
403
|
+
|
|
404
|
+
## 예상 결과물 예시
|
|
405
|
+
|
|
406
|
+
```markdown
|
|
407
|
+
## Gemini 검토 결과 (Gemini + Claude 합의)
|
|
408
|
+
|
|
409
|
+
### 검토 과정
|
|
410
|
+
- 검토 유형: 코드 품질 + 설계
|
|
411
|
+
- 핑퐁 횟수: 2회
|
|
412
|
+
- 합의 상태: 완전 합의
|
|
413
|
+
|
|
414
|
+
### [VALID] 유효한 피드백
|
|
415
|
+
| 항목 | 설명 | 위치 | 출처 |
|
|
416
|
+
|------|------|------|------|
|
|
417
|
+
| 에러 처리 양호 | try-catch로 API 오류 처리 | hooks/use-video-analysis.ts:45 | Gemini |
|
|
418
|
+
| 타입 안전성 | TypeScript 타입 명확히 정의 | components/vlm/types.ts | Gemini + Claude |
|
|
419
|
+
|
|
420
|
+
### [SUGGESTION] 개선 제안
|
|
421
|
+
| 항목 | 현재 문제 | 개선 방안 | 출처 |
|
|
422
|
+
|------|----------|----------|------|
|
|
423
|
+
| 메모이제이션 | 매 렌더링마다 객체 재생성 | useMemo로 최적화 | Gemini |
|
|
424
|
+
| 로딩 상태 | 로딩 중 UI 피드백 없음 | Skeleton 컴포넌트 추가 | Claude |
|
|
425
|
+
|
|
426
|
+
### [RISK] 주의 필요 사항
|
|
427
|
+
| 심각도 | 설명 | 위치 |
|
|
428
|
+
|--------|------|------|
|
|
429
|
+
| Medium | 대용량 파일 처리 시 메모리 이슈 가능성 | video-processor.py:120 |
|
|
430
|
+
|
|
431
|
+
### [CORRECTION] Gemini 오류 교정
|
|
432
|
+
| Gemini 주장 | 실제 상황 | 근거 |
|
|
433
|
+
|-------------|----------|------|
|
|
434
|
+
| useState 초기값 누락 | 이미 기본값 설정됨 | hooks/use-video-analysis.ts:12 확인 |
|
|
435
|
+
|
|
436
|
+
### [SUMMARY] 종합 결론
|
|
437
|
+
전반적으로 코드 품질 양호. 메모이제이션과 로딩 UI 개선 권장.
|
|
438
|
+
```
|
|
@@ -21,10 +21,15 @@ PR이 머지된 후 브랜치 정리와 CLAUDE.md 업데이트를 수행합니
|
|
|
21
21
|
|
|
22
22
|
2. **로컬 변경사항 확인**
|
|
23
23
|
- `git status --porcelain`으로 uncommitted 변경사항 확인
|
|
24
|
-
-
|
|
25
|
-
|
|
24
|
+
- **Untracked 파일 (`??`)**: 브랜치 이동에 영향 없으므로 무시하고 진행
|
|
25
|
+
- **Modified/Staged 파일 (`M`, `A`, `D` 등)**: AskUserQuestion으로 처리 방법 질문:
|
|
26
|
+
- **stash 후 진행**: `git stash push -m "post-merge: 임시 저장"`
|
|
26
27
|
- **변경사항 버리기**: `git checkout -- . && git clean -fd`
|
|
27
28
|
- **작업 중단**: 사용자가 직접 처리하도록 중단
|
|
29
|
+
- **stash 선택 시**: 작업 완료 후 AskUserQuestion으로 stash 복원 여부 질문:
|
|
30
|
+
- **pop**: `git stash pop` (stash 제거하면서 복원)
|
|
31
|
+
- **apply**: `git stash apply` (stash 유지하면서 복원)
|
|
32
|
+
- **나중에**: 사용자가 직접 처리
|
|
28
33
|
|
|
29
34
|
3. **베이스 브랜치로 이동**
|
|
30
35
|
- `git fetch origin`
|
|
@@ -81,10 +81,15 @@ task-master set-status --id=<TASK_ID> --status=done
|
|
|
81
81
|
git status --porcelain
|
|
82
82
|
```
|
|
83
83
|
|
|
84
|
-
|
|
85
|
-
- **
|
|
86
|
-
-
|
|
87
|
-
-
|
|
84
|
+
- **Untracked 파일 (`??`)**: 브랜치 이동에 영향 없으므로 무시하고 진행
|
|
85
|
+
- **Modified/Staged 파일 (`M`, `A`, `D` 등)**: AskUserQuestion으로 처리 방법 질문:
|
|
86
|
+
- **stash 후 진행**: `git stash push -m "post-merge: 임시 저장"`
|
|
87
|
+
- **변경사항 버리기**: `git checkout -- . && git clean -fd`
|
|
88
|
+
- **작업 중단**: 사용자가 직접 처리
|
|
89
|
+
- **stash 선택 시**: 작업 완료 후 AskUserQuestion으로 stash 복원 여부 질문:
|
|
90
|
+
- **pop**: `git stash pop` (stash 제거하면서 복원)
|
|
91
|
+
- **apply**: `git stash apply` (stash 유지하면서 복원)
|
|
92
|
+
- **나중에**: 사용자가 직접 처리
|
|
88
93
|
|
|
89
94
|
### 5. 베이스 브랜치로 이동
|
|
90
95
|
|
|
@@ -170,7 +175,9 @@ TaskMaster 상태:
|
|
|
170
175
|
- 한글로 답변
|
|
171
176
|
- 코드나 문서 작성 시 이모지 사용 금지
|
|
172
177
|
- 불명확한 사항은 추측하지 말고 AskUserQuestion으로 질문
|
|
173
|
-
-
|
|
178
|
+
- CLAUDE.md 변경은 반드시 사용자 확인 후 진행
|
|
179
|
+
- TaskMaster 상태 변경, 브랜치 삭제 등 되돌리기 어려운 작업은 항상 사용자 확인 필요
|
|
180
|
+
- 커밋, PR, 이슈에 'Generated with Claude', 'Co-Authored-By: Claude' 등 Claude attribution 금지
|
|
174
181
|
|
|
175
182
|
---
|
|
176
183
|
|
|
@@ -57,6 +57,17 @@ task-master show $TASK_ID
|
|
|
57
57
|
gh issue list --search "in:body \"Task Master 참조: task $TASK_ID\"" --json number,title
|
|
58
58
|
```
|
|
59
59
|
|
|
60
|
+
**GitHub Issue를 찾지 못한 경우 (중요):**
|
|
61
|
+
```
|
|
62
|
+
→ sync-to-github가 실행되지 않은 상태일 수 있음
|
|
63
|
+
→ 절대로 임의로 GitHub Issue를 새로 생성하지 말 것
|
|
64
|
+
→ AskUserQuestion으로 사용자에게 확인:
|
|
65
|
+
1. "sync-to-github를 먼저 실행할까요?" (Issue 동기화 후 진행)
|
|
66
|
+
2. "Issue 없이 브랜치만 생성하고 진행할까요?" (task-N 브랜치 사용)
|
|
67
|
+
3. "작업을 중단할까요?"
|
|
68
|
+
→ 사용자 선택에 따라 진행
|
|
69
|
+
```
|
|
70
|
+
|
|
60
71
|
### 2. 태스크 정보 확인
|
|
61
72
|
|
|
62
73
|
```bash
|
|
@@ -225,6 +236,35 @@ $(task-master show $TASK_ID | grep -A 100 'Subtasks:')"
|
|
|
225
236
|
|
|
226
237
|
---
|
|
227
238
|
|
|
239
|
+
## 작업 지침
|
|
240
|
+
|
|
241
|
+
- 불명확한 요구사항이나 구현 방향이 여러 가지일 경우 AskUserQuestion 도구로 사용자에게 확인
|
|
242
|
+
- 한글로 답할 것, 주석 및 마크다운도 한글로 작성할 것
|
|
243
|
+
- 코드나 문서 작성 시 이모지 사용 금지
|
|
244
|
+
- PR 설명은 한글로 작성
|
|
245
|
+
- 컴포넌트가 데모 페이지에 추가되는 경우, Playwright MCP를 사용해 해당 컴포넌트를 E2E 테스트로 검증
|
|
246
|
+
- 일회성 테스트 스크립트나 임시 헬퍼 파일은 작업 완료 후 반드시 삭제
|
|
247
|
+
- 커밋, PR, 이슈에 'Generated with Claude', 'Co-Authored-By: Claude' 등 Claude attribution 금지
|
|
248
|
+
|
|
249
|
+
---
|
|
250
|
+
|
|
251
|
+
## 검증 및 완료 기준
|
|
252
|
+
|
|
253
|
+
**중요**: 체크박스를 완료로 표시하기 전에 반드시 실제 동작을 확인해야 합니다.
|
|
254
|
+
|
|
255
|
+
### 검증 원칙
|
|
256
|
+
1. **실제 실행 필수**: 코드/설정이 실제로 동작하는지 직접 실행하여 확인
|
|
257
|
+
2. **증거 제시**: 완료를 증명할 수 있는 실제 출력이나 결과를 보여줄 것
|
|
258
|
+
3. **추측 금지**: 확인하지 않은 것은 "미확인" 또는 "추정됨"으로 명시
|
|
259
|
+
4. **부분 완료 구분**: 코드는 작성했지만 테스트하지 않은 경우 명확히 구분
|
|
260
|
+
|
|
261
|
+
### 금지 사항
|
|
262
|
+
- 실행하지 않고 "동작할 것으로 예상됩니다"라고 보고
|
|
263
|
+
- 로그를 보지 않고 "로그에 나타날 것입니다"라고 단언
|
|
264
|
+
- 추측을 사실처럼 보고
|
|
265
|
+
|
|
266
|
+
---
|
|
267
|
+
|
|
228
268
|
## 주의사항
|
|
229
269
|
|
|
230
270
|
1. **ID 혼동 주의**
|