@kood/claude-code 0.3.2 → 0.3.4
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 +1 -1
- package/package.json +1 -1
- package/templates/.claude/commands/bug-fix.md +406 -0
- package/templates/.claude/commands/command-creator.md +508 -0
- package/templates/.claude/commands/refactor.md +527 -0
- package/templates/tanstack-start/docs/architecture.md +6 -8
- package/templates/.claude/commands/subagent-creator.md +0 -118
|
@@ -0,0 +1,527 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: 코드 리팩토링 계획 수립. @refactor-advisor 우선 활용. Sequential Thinking 3-7 필수. 기능 유지하며 개선만.
|
|
3
|
+
allowed-tools: Read, Glob, Grep, Bash(git:*, ast-grep:*), Task, Write, mcp__sequential-thinking__sequentialthinking
|
|
4
|
+
argument-hint: <대상 파일/모듈 또는 개선 목표>
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Refactor Command
|
|
8
|
+
|
|
9
|
+
> 코드 품질 개선을 위한 리팩토링 계획 수립 및 실행 전략 제시.
|
|
10
|
+
|
|
11
|
+
**리팩토링 대상**: $ARGUMENTS
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
<argument_validation>
|
|
16
|
+
|
|
17
|
+
## ARGUMENT 필수 확인
|
|
18
|
+
|
|
19
|
+
```
|
|
20
|
+
$ARGUMENTS 없음 → 즉시 질문:
|
|
21
|
+
|
|
22
|
+
"무엇을 리팩토링해야 하나요? 구체적으로 알려주세요.
|
|
23
|
+
|
|
24
|
+
예시:
|
|
25
|
+
- 특정 파일/모듈 개선
|
|
26
|
+
- 복잡도 감소
|
|
27
|
+
- 중복 코드 제거
|
|
28
|
+
- 구조 개선
|
|
29
|
+
- 성능 최적화"
|
|
30
|
+
|
|
31
|
+
$ARGUMENTS 있음 → 다음 단계 진행
|
|
32
|
+
```
|
|
33
|
+
|
|
34
|
+
</argument_validation>
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
<workflow>
|
|
39
|
+
|
|
40
|
+
## 실행 흐름
|
|
41
|
+
|
|
42
|
+
| 단계 | 작업 | 도구 |
|
|
43
|
+
|------|------|------|
|
|
44
|
+
| 1. 입력 확인 | ARGUMENT 검증, 없으면 질문 | - |
|
|
45
|
+
| 2. Agent 판단 | @refactor-advisor 사용 여부 결정 | - |
|
|
46
|
+
| 3. 복잡도 판단 | Sequential Thinking으로 분석 범위 결정 | sequentialthinking (1단계) |
|
|
47
|
+
| 4. 코드 분석 | 현재 코드 구조, 문제점 파악 | Task (Explore) + Read/Grep |
|
|
48
|
+
| 5. 개선 옵션 도출 | 가능한 접근 4-5개 → 주요 2-3개 선정 | sequentialthinking (2-6단계) |
|
|
49
|
+
| 6. 옵션 제시 | 장단점, 영향 범위, 추천안 제시 | - |
|
|
50
|
+
| 7. 계획 문서 작성 | 선택 시 리팩토링 계획 생성 | Write |
|
|
51
|
+
|
|
52
|
+
</workflow>
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
<agent_priority>
|
|
57
|
+
|
|
58
|
+
## @refactor-advisor Agent 우선 사용
|
|
59
|
+
|
|
60
|
+
**기본 원칙:**
|
|
61
|
+
```
|
|
62
|
+
리팩토링 요청 → @refactor-advisor 먼저 고려
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
### 사용 조건
|
|
66
|
+
|
|
67
|
+
| 조건 | 설명 |
|
|
68
|
+
|------|------|
|
|
69
|
+
| **코드 품질 개선** | 복잡도, 중복, 명명, 구조 개선 |
|
|
70
|
+
| **기능 변경 없음** | 동작은 유지하며 코드만 개선 |
|
|
71
|
+
| **점진적 개선** | 단계적 리팩토링 계획 필요 |
|
|
72
|
+
|
|
73
|
+
### Agent 활용 흐름
|
|
74
|
+
|
|
75
|
+
```
|
|
76
|
+
1. @refactor-advisor 호출
|
|
77
|
+
→ 코드 분석, 우선순위별 개선점 도출
|
|
78
|
+
|
|
79
|
+
2. 분석 결과 기반 옵션 정리
|
|
80
|
+
→ 사용자에게 2-3개 옵션 제시
|
|
81
|
+
|
|
82
|
+
3. 선택 후 계획 문서 작성
|
|
83
|
+
→ .claude/plans/refactor-[이름].md
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
### Agent 미사용 케이스
|
|
87
|
+
|
|
88
|
+
```
|
|
89
|
+
✅ @refactor-advisor 사용:
|
|
90
|
+
- 기존 코드 개선
|
|
91
|
+
- 복잡도/중복 감소
|
|
92
|
+
- 구조 개선
|
|
93
|
+
|
|
94
|
+
❌ 직접 처리:
|
|
95
|
+
- 아키텍처 변경
|
|
96
|
+
- 새 기능 추가와 함께 리팩토링
|
|
97
|
+
- 프레임워크 마이그레이션
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
</agent_priority>
|
|
101
|
+
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
<thinking_strategy>
|
|
105
|
+
|
|
106
|
+
## Sequential Thinking 가이드
|
|
107
|
+
|
|
108
|
+
### 복잡도 판단 (thought 1)
|
|
109
|
+
|
|
110
|
+
```
|
|
111
|
+
thought 1: 복잡도 판단
|
|
112
|
+
- 영향 범위: 파일 수, 함수 수
|
|
113
|
+
- 현재 문제: 복잡도, 중복, 명명, 구조
|
|
114
|
+
- 리스크: 기존 기능 영향, 테스트 커버리지
|
|
115
|
+
- 우선순위: High/Medium/Low
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### 복잡도별 전략
|
|
119
|
+
|
|
120
|
+
| 복잡도 | 사고 횟수 | 판단 기준 | 사고 패턴 |
|
|
121
|
+
|--------|----------|----------|------------|
|
|
122
|
+
| **간단** | 3 | 1-2 파일, 명확한 개선점 | 복잡도 판단 → 현재 분석 → 개선 방안 |
|
|
123
|
+
| **보통** | 5 | 3-5 파일, 구조 변경 | 복잡도 판단 → 현재 분석 → 문제점 → 옵션 비교 → 추천안 |
|
|
124
|
+
| **복잡** | 7+ | 다중 모듈, 점진적 변경 필요 | 복잡도 판단 → 심층 분석 → 우선순위 → 접근 방식 → 비교 → 단계별 계획 → 추천안 |
|
|
125
|
+
|
|
126
|
+
### 보통 복잡도 패턴 (5단계)
|
|
127
|
+
|
|
128
|
+
```
|
|
129
|
+
thought 1: 복잡도 판단 및 분석 범위 결정
|
|
130
|
+
thought 2: 현재 코드 분석 (복잡도, 중복, 구조)
|
|
131
|
+
thought 3: 가능한 개선 방법 열거 (4-5개)
|
|
132
|
+
thought 4: 주요 옵션 3개 선정 및 장단점 분석
|
|
133
|
+
thought 5: 최종 옵션 정리 및 추천안 도출
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### 복잡한 경우 패턴 (7단계)
|
|
137
|
+
|
|
138
|
+
```
|
|
139
|
+
thought 1: 복잡도 판단
|
|
140
|
+
thought 2: 현재 코드 심층 분석 (메트릭, 패턴)
|
|
141
|
+
thought 3: 개선 우선순위 정리 (High/Medium/Low)
|
|
142
|
+
thought 4: 가능한 접근 방식 탐색
|
|
143
|
+
thought 5: 각 접근 방식 비교 분석
|
|
144
|
+
thought 6: 옵션 3개 선정 및 상세 장단점
|
|
145
|
+
thought 7: 단계별 계획 및 추천안
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### 핵심 원칙
|
|
149
|
+
|
|
150
|
+
```text
|
|
151
|
+
✅ 사고 과정을 출력해야 실제로 생각이 일어남
|
|
152
|
+
✅ 복잡도가 불확실하면 높게 책정 (5→7로 확장 가능)
|
|
153
|
+
✅ 각 thought에서 구체적 분석 필요 (추상적 설명 금지)
|
|
154
|
+
✅ 필요 시 isRevision으로 이전 사고 수정
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
</thinking_strategy>
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
<refactoring_areas>
|
|
162
|
+
|
|
163
|
+
## 리팩토링 영역
|
|
164
|
+
|
|
165
|
+
### 6가지 개선 영역
|
|
166
|
+
|
|
167
|
+
| 영역 | 문제 | 개선 방향 |
|
|
168
|
+
|------|------|----------|
|
|
169
|
+
| **복잡도** | 긴 함수, 깊은 중첩 | 함수 분리, Early Return |
|
|
170
|
+
| **중복** | 동일/유사 코드 반복 | 공통 함수/모듈 추출 |
|
|
171
|
+
| **명명** | 모호한 변수/함수명 | 의도 명확한 이름 |
|
|
172
|
+
| **구조** | 파일/모듈 구조 불명확 | 관심사 분리, 계층화 |
|
|
173
|
+
| **패턴** | 안티패턴 사용 | 디자인 패턴 적용 |
|
|
174
|
+
| **타입** | any 남용, 타입 불안정 | 명시적 타입 정의 |
|
|
175
|
+
|
|
176
|
+
### 체크리스트
|
|
177
|
+
|
|
178
|
+
```text
|
|
179
|
+
✅ 함수 길이: 20줄 이하 목표
|
|
180
|
+
✅ 중첩 깊이: 3단계 이하 목표
|
|
181
|
+
✅ 파일 길이: 200-300줄 권장
|
|
182
|
+
✅ 순환 의존성: 제거
|
|
183
|
+
✅ 매직 넘버: 상수화
|
|
184
|
+
✅ 주석: 코드로 설명 불가능한 것만
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
</refactoring_areas>
|
|
188
|
+
|
|
189
|
+
---
|
|
190
|
+
|
|
191
|
+
<option_presentation>
|
|
192
|
+
|
|
193
|
+
## 옵션 제시 형식
|
|
194
|
+
|
|
195
|
+
### 옵션 3개 제시 (표준)
|
|
196
|
+
|
|
197
|
+
```markdown
|
|
198
|
+
## 분석 결과
|
|
199
|
+
|
|
200
|
+
### 현재 상태
|
|
201
|
+
- 문제점 1
|
|
202
|
+
- 문제점 2
|
|
203
|
+
- 개선 필요 영역
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
### 옵션 1: [옵션 이름] (추천)
|
|
208
|
+
|
|
209
|
+
**개선 방법:**
|
|
210
|
+
- 설명 1
|
|
211
|
+
- 설명 2
|
|
212
|
+
|
|
213
|
+
| 장점 | 단점 |
|
|
214
|
+
|------|------|
|
|
215
|
+
| 장점 1 | 단점 1 |
|
|
216
|
+
| 장점 2 | 단점 2 |
|
|
217
|
+
|
|
218
|
+
**영향 범위:**
|
|
219
|
+
- 파일: `src/module/`
|
|
220
|
+
- 예상 작업량: 중간
|
|
221
|
+
- 리스크: 낮음
|
|
222
|
+
- 테스트 영향: 최소
|
|
223
|
+
|
|
224
|
+
---
|
|
225
|
+
|
|
226
|
+
### 옵션 2: [옵션 이름]
|
|
227
|
+
|
|
228
|
+
**개선 방법:**
|
|
229
|
+
...
|
|
230
|
+
|
|
231
|
+
| 장점 | 단점 |
|
|
232
|
+
|------|------|
|
|
233
|
+
| ... | ... |
|
|
234
|
+
|
|
235
|
+
**영향 범위:**
|
|
236
|
+
...
|
|
237
|
+
|
|
238
|
+
---
|
|
239
|
+
|
|
240
|
+
### 옵션 3: [옵션 이름]
|
|
241
|
+
|
|
242
|
+
**개선 방법:**
|
|
243
|
+
...
|
|
244
|
+
|
|
245
|
+
---
|
|
246
|
+
|
|
247
|
+
## 추천 및 근거
|
|
248
|
+
|
|
249
|
+
옵션 1을 추천합니다.
|
|
250
|
+
- 근거 1
|
|
251
|
+
- 근거 2
|
|
252
|
+
|
|
253
|
+
어떤 옵션을 선택하시겠습니까? (1/2/3)
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
### 옵션 2개 제시 (개선점이 명확한 경우)
|
|
257
|
+
|
|
258
|
+
```markdown
|
|
259
|
+
## 분석 결과
|
|
260
|
+
|
|
261
|
+
두 가지 접근 방식이 있습니다:
|
|
262
|
+
|
|
263
|
+
### 옵션 A: [옵션 이름]
|
|
264
|
+
...
|
|
265
|
+
|
|
266
|
+
### 옵션 B: [옵션 이름]
|
|
267
|
+
...
|
|
268
|
+
|
|
269
|
+
어떤 옵션을 선택하시겠습니까? (A/B)
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
</option_presentation>
|
|
273
|
+
|
|
274
|
+
---
|
|
275
|
+
|
|
276
|
+
<document_generation>
|
|
277
|
+
|
|
278
|
+
## 계획 문서 작성
|
|
279
|
+
|
|
280
|
+
### 문서 작성 질문
|
|
281
|
+
|
|
282
|
+
```
|
|
283
|
+
옵션 [N]을 선택하셨습니다.
|
|
284
|
+
|
|
285
|
+
리팩토링 계획 문서를 작성할까요?
|
|
286
|
+
- Y: .claude/plans/refactor-[이름].md 생성
|
|
287
|
+
- N: 바로 구현 시작
|
|
288
|
+
|
|
289
|
+
선택해주세요. (Y/N)
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
### 리팩토링 계획 문서 템플릿
|
|
293
|
+
|
|
294
|
+
**파일 위치:** `.claude/plans/refactor-[이름].md`
|
|
295
|
+
|
|
296
|
+
```markdown
|
|
297
|
+
# [모듈명] 리팩토링 계획
|
|
298
|
+
|
|
299
|
+
## 개요
|
|
300
|
+
|
|
301
|
+
**목표:** [무엇을 개선할 것인가]
|
|
302
|
+
**선택된 접근 방식:** [옵션 N]
|
|
303
|
+
**예상 영향 범위:** [파일/모듈 목록]
|
|
304
|
+
|
|
305
|
+
## 현재 상태
|
|
306
|
+
|
|
307
|
+
### 문제점
|
|
308
|
+
|
|
309
|
+
| 문제 | 영향 | 우선순위 |
|
|
310
|
+
|------|------|---------|
|
|
311
|
+
| 문제 1 | 설명 | High |
|
|
312
|
+
| 문제 2 | 설명 | Medium |
|
|
313
|
+
|
|
314
|
+
### 메트릭
|
|
315
|
+
|
|
316
|
+
- 복잡도: [현재 값]
|
|
317
|
+
- 중복률: [현재 값]
|
|
318
|
+
- 테스트 커버리지: [현재 값]
|
|
319
|
+
|
|
320
|
+
## 개선 단계
|
|
321
|
+
|
|
322
|
+
### 1단계: [단계 이름]
|
|
323
|
+
|
|
324
|
+
**목표:** [이 단계에서 달성할 것]
|
|
325
|
+
|
|
326
|
+
**작업:**
|
|
327
|
+
- [ ] 작업 1
|
|
328
|
+
- [ ] 작업 2
|
|
329
|
+
|
|
330
|
+
**변경 파일:**
|
|
331
|
+
- `src/file1.ts`
|
|
332
|
+
- `src/file2.ts`
|
|
333
|
+
|
|
334
|
+
**검증:**
|
|
335
|
+
- 테스트 통과
|
|
336
|
+
- 빌드 성공
|
|
337
|
+
|
|
338
|
+
### 2단계: [단계 이름]
|
|
339
|
+
|
|
340
|
+
**목표:** [이 단계에서 달성할 것]
|
|
341
|
+
|
|
342
|
+
**작업:**
|
|
343
|
+
- [ ] 작업 3
|
|
344
|
+
|
|
345
|
+
**변경 파일:**
|
|
346
|
+
- `src/file3.ts`
|
|
347
|
+
|
|
348
|
+
### 3단계: [단계 이름]
|
|
349
|
+
...
|
|
350
|
+
|
|
351
|
+
## 개선 후 기대 효과
|
|
352
|
+
|
|
353
|
+
| 메트릭 | Before | After | 개선율 |
|
|
354
|
+
|--------|--------|-------|--------|
|
|
355
|
+
| 복잡도 | X | Y | -Z% |
|
|
356
|
+
| 중복률 | X | Y | -Z% |
|
|
357
|
+
| 코드 라인 | X | Y | -Z% |
|
|
358
|
+
|
|
359
|
+
## 리스크 관리
|
|
360
|
+
|
|
361
|
+
### 리스크
|
|
362
|
+
|
|
363
|
+
| 리스크 | 영향도 | 완화 방안 |
|
|
364
|
+
|--------|--------|----------|
|
|
365
|
+
| 리스크 1 | High | 방안 1 |
|
|
366
|
+
| 리스크 2 | Medium | 방안 2 |
|
|
367
|
+
|
|
368
|
+
### 롤백 계획
|
|
369
|
+
|
|
370
|
+
문제 발생 시:
|
|
371
|
+
1. 단계별 커밋 활용
|
|
372
|
+
2. 이전 단계로 되돌리기
|
|
373
|
+
3. 테스트 재실행
|
|
374
|
+
|
|
375
|
+
## 검증 방법
|
|
376
|
+
|
|
377
|
+
### 기능 검증
|
|
378
|
+
- [ ] 기존 기능 동작 확인
|
|
379
|
+
- [ ] 회귀 테스트 통과
|
|
380
|
+
- [ ] 통합 테스트 통과
|
|
381
|
+
|
|
382
|
+
### 품질 검증
|
|
383
|
+
- [ ] 복잡도 감소 확인
|
|
384
|
+
- [ ] 중복 제거 확인
|
|
385
|
+
- [ ] 타입 안정성 확인
|
|
386
|
+
|
|
387
|
+
## 참조
|
|
388
|
+
|
|
389
|
+
- 관련 문서 링크
|
|
390
|
+
- 참고 패턴
|
|
391
|
+
```
|
|
392
|
+
|
|
393
|
+
</document_generation>
|
|
394
|
+
|
|
395
|
+
---
|
|
396
|
+
|
|
397
|
+
<validation>
|
|
398
|
+
|
|
399
|
+
## 검증 체크리스트
|
|
400
|
+
|
|
401
|
+
실행 전 확인:
|
|
402
|
+
|
|
403
|
+
```text
|
|
404
|
+
✅ ARGUMENT 확인 (없으면 질문)
|
|
405
|
+
✅ @refactor-advisor 사용 여부 판단
|
|
406
|
+
✅ Sequential Thinking 최소 3단계
|
|
407
|
+
✅ Task (Explore)로 코드 분석
|
|
408
|
+
✅ 옵션 최소 2개, 권장 3개
|
|
409
|
+
✅ 각 옵션에 장단점 명시
|
|
410
|
+
✅ 영향 범위 및 예상 작업량 제시
|
|
411
|
+
✅ 기능 유지 원칙 강조
|
|
412
|
+
```
|
|
413
|
+
|
|
414
|
+
절대 금지:
|
|
415
|
+
|
|
416
|
+
```text
|
|
417
|
+
❌ ARGUMENT 없이 분석 시작
|
|
418
|
+
❌ Edit 도구 사용 (코드 수정 금지)
|
|
419
|
+
❌ Sequential Thinking 3단계 미만
|
|
420
|
+
❌ 옵션 1개만 제시
|
|
421
|
+
❌ 코드 분석 없이 추측으로 옵션 제시
|
|
422
|
+
❌ 사용자 선택 없이 구현 시작
|
|
423
|
+
❌ 기능 변경 포함
|
|
424
|
+
❌ 장단점 없이 옵션만 나열
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
</validation>
|
|
428
|
+
|
|
429
|
+
---
|
|
430
|
+
|
|
431
|
+
<examples>
|
|
432
|
+
|
|
433
|
+
## 실전 예시
|
|
434
|
+
|
|
435
|
+
### 예시 1: 복잡한 함수 분리
|
|
436
|
+
|
|
437
|
+
```bash
|
|
438
|
+
사용자: /refactor src/utils/auth.ts - 너무 복잡함
|
|
439
|
+
|
|
440
|
+
1. @refactor-advisor 고려:
|
|
441
|
+
→ 단일 파일, 복잡도 감소 → Agent 활용 추천
|
|
442
|
+
|
|
443
|
+
2. Sequential Thinking (5단계):
|
|
444
|
+
thought 1: "단일 파일, 함수 복잡도 - 보통 복잡도"
|
|
445
|
+
thought 2: "auth.ts 분석: 200줄, 5단계 중첩, 여러 책임"
|
|
446
|
+
thought 3: "접근 방식: 함수 분리, 책임 분리, 타입 개선"
|
|
447
|
+
thought 4: "옵션 3개 선정 및 장단점"
|
|
448
|
+
thought 5: "점진적 분리 추천 - 단계적 검증 가능"
|
|
449
|
+
|
|
450
|
+
3. 옵션 제시:
|
|
451
|
+
옵션 1: 점진적 함수 분리 (추천)
|
|
452
|
+
- 장점: 안전, 단계별 검증
|
|
453
|
+
- 단점: 시간 소요
|
|
454
|
+
|
|
455
|
+
옵션 2: 모듈 분리
|
|
456
|
+
- 장점: 명확한 구조
|
|
457
|
+
- 단점: 큰 변경
|
|
458
|
+
|
|
459
|
+
옵션 3: 타입 개선 우선
|
|
460
|
+
- 장점: 빠른 개선
|
|
461
|
+
- 단점: 근본 해결 아님
|
|
462
|
+
|
|
463
|
+
4. 사용자 선택: 1
|
|
464
|
+
|
|
465
|
+
5. 문서 작성: Y
|
|
466
|
+
|
|
467
|
+
6. .claude/plans/refactor-auth.md 생성
|
|
468
|
+
```
|
|
469
|
+
|
|
470
|
+
### 예시 2: 중복 코드 제거
|
|
471
|
+
|
|
472
|
+
```bash
|
|
473
|
+
사용자: /refactor 여러 파일에 중복 코드가 많음
|
|
474
|
+
|
|
475
|
+
1. @refactor-advisor 활용:
|
|
476
|
+
→ 다중 파일, 중복 분석 → Agent 활용 적합
|
|
477
|
+
|
|
478
|
+
2. Sequential Thinking (5단계):
|
|
479
|
+
thought 1: "다중 파일 중복 - 보통 복잡도"
|
|
480
|
+
thought 2: "중복 패턴 분석: 3가지 유형"
|
|
481
|
+
thought 3: "접근: 공통 함수, 유틸리티, 훅 추출"
|
|
482
|
+
thought 4: "옵션 비교: 점진적 vs 일괄"
|
|
483
|
+
thought 5: "점진적 추출 추천"
|
|
484
|
+
|
|
485
|
+
3. Task 탐색:
|
|
486
|
+
Task (Explore): "중복 코드 패턴 분석"
|
|
487
|
+
→ src/components/, src/hooks/ 파악
|
|
488
|
+
|
|
489
|
+
4. 옵션:
|
|
490
|
+
옵션 1: 점진적 공통 함수 추출 (추천)
|
|
491
|
+
옵션 2: 새 유틸리티 모듈 생성
|
|
492
|
+
옵션 3: 커스텀 훅 추출
|
|
493
|
+
|
|
494
|
+
5. 선택 후 계획 문서 생성
|
|
495
|
+
```
|
|
496
|
+
|
|
497
|
+
### 예시 3: 구조 개선
|
|
498
|
+
|
|
499
|
+
```bash
|
|
500
|
+
사용자: /refactor 프로젝트 구조를 더 명확하게
|
|
501
|
+
|
|
502
|
+
1. @refactor-advisor 판단:
|
|
503
|
+
→ 구조 변경, 다중 모듈 → 직접 처리 (Agent 미사용)
|
|
504
|
+
|
|
505
|
+
2. Sequential Thinking (7단계):
|
|
506
|
+
thought 1: "구조 개선 - 복잡도 높음, 다중 모듈"
|
|
507
|
+
thought 2: "현재 구조 분석: src/ 내 혼재"
|
|
508
|
+
thought 3: "요구사항: 관심사 분리, 계층 명확화"
|
|
509
|
+
thought 4: "접근: 모듈화, 디렉토리 재구성, 경로 정리"
|
|
510
|
+
thought 5: "각 접근 비교: 영향 범위, 리스크"
|
|
511
|
+
thought 6: "옵션 3개 선정 및 상세 분석"
|
|
512
|
+
thought 7: "점진적 재구성 추천 - 단계적 이동"
|
|
513
|
+
|
|
514
|
+
3. Task 탐색 (병렬):
|
|
515
|
+
Task (Explore): "현재 디렉토리 구조 분석"
|
|
516
|
+
Task (Explore): "모듈 간 의존성 파악"
|
|
517
|
+
Task (Explore): "import 경로 패턴 분석"
|
|
518
|
+
|
|
519
|
+
4. 옵션:
|
|
520
|
+
옵션 1: 점진적 모듈 분리 (추천)
|
|
521
|
+
옵션 2: 레이어 기반 재구성
|
|
522
|
+
옵션 3: 기능별 도메인 분리
|
|
523
|
+
|
|
524
|
+
5. 계획 문서 작성 (필수)
|
|
525
|
+
```
|
|
526
|
+
|
|
527
|
+
</examples>
|
|
@@ -18,7 +18,6 @@
|
|
|
18
18
|
| **API** | `/api` 라우터 생성 (Server Functions 사용) |
|
|
19
19
|
| **레이어** | Service Layer 건너뛰기, Routes에서 직접 DB 접근 |
|
|
20
20
|
| **검증** | Handler 내부 수동 검증, 인증 로직 분산 |
|
|
21
|
-
| **Server Fn** | `createServerFn` 사용 (명시 요청 없으면 `createServerOnlyFn`) |
|
|
22
21
|
| **Barrel Export** | `functions/index.ts` 생성 (Tree Shaking 실패, 서버 라이브러리 Client 오염) |
|
|
23
22
|
|
|
24
23
|
</forbidden>
|
|
@@ -34,7 +33,7 @@
|
|
|
34
33
|
| **페이지 분리** | 100줄+ → `-components`, 200줄+ → `-sections` |
|
|
35
34
|
| **beforeLoad** | 인증 체크, Context 전달, 리다이렉트 |
|
|
36
35
|
| **loader** | 데이터 로딩 (beforeLoad 완료 후 병렬 실행) |
|
|
37
|
-
| **Server Fn** | `
|
|
36
|
+
| **Server Fn** | `createServerFn` 기본 사용 |
|
|
38
37
|
| **검증** | `inputValidator` (POST/PUT/PATCH), Zod 스키마 |
|
|
39
38
|
| **인증** | `middleware` (authMiddleware) |
|
|
40
39
|
| **에러 처리** | `errorComponent` (라우트), `notFoundComponent` (404) |
|
|
@@ -300,7 +299,7 @@ const { data } = useQuery({
|
|
|
300
299
|
})
|
|
301
300
|
|
|
302
301
|
// Server Function
|
|
303
|
-
export const getUsers =
|
|
302
|
+
export const getUsers = createServerFn()
|
|
304
303
|
.middleware([authMiddleware])
|
|
305
304
|
.handler(async () => prisma.user.findMany())
|
|
306
305
|
```
|
|
@@ -327,7 +326,7 @@ const mutation = useMutation({
|
|
|
327
326
|
})
|
|
328
327
|
|
|
329
328
|
// Server Function
|
|
330
|
-
export const createUser =
|
|
329
|
+
export const createUser = createServerFn({ method: 'POST' })
|
|
331
330
|
.middleware([authMiddleware])
|
|
332
331
|
.inputValidator(createUserSchema)
|
|
333
332
|
.handler(async ({ data }) => prisma.user.create({ data }))
|
|
@@ -345,12 +344,11 @@ export const createUser = createServerOnlyFn({ method: 'POST' })
|
|
|
345
344
|
|
|
346
345
|
| 타입 | 실행 위치 | 사용 시나리오 |
|
|
347
346
|
|------|----------|-------------|
|
|
348
|
-
| **
|
|
349
|
-
| createServerFn | 서버 (RPC) | 일반 서버 로직 |
|
|
347
|
+
| **createServerFn** | 서버 | DB 접근, 비밀키, 서버 로직 (기본) |
|
|
350
348
|
| createClientOnlyFn | 클라이언트 | localStorage, window |
|
|
351
349
|
| createIsomorphicFn | 양쪽 | 환경별 구현 |
|
|
352
350
|
|
|
353
|
-
**기본 규칙**: 별도 요청 없으면 `
|
|
351
|
+
**기본 규칙**: 별도 요청 없으면 `createServerFn` 사용
|
|
354
352
|
|
|
355
353
|
### Middleware 패턴
|
|
356
354
|
|
|
@@ -364,7 +362,7 @@ export const authMiddleware = createMiddleware()
|
|
|
364
362
|
})
|
|
365
363
|
|
|
366
364
|
// 2. 사용
|
|
367
|
-
export const createPost =
|
|
365
|
+
export const createPost = createServerFn({ method: 'POST' })
|
|
368
366
|
.middleware([authMiddleware])
|
|
369
367
|
.inputValidator(createPostSchema)
|
|
370
368
|
.handler(async ({ data, context }) => {
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Task 도구로 subagent 생성. 복잡한 작업 위임.
|
|
3
|
-
allowed-tools: Task, mcp__sequential-thinking__sequentialthinking
|
|
4
|
-
argument-hint: <생성할 subagent 작업 설명>
|
|
5
|
-
---
|
|
6
|
-
|
|
7
|
-
# Subagent Creator
|
|
8
|
-
|
|
9
|
-
> Task 도구를 사용하여 전문 subagent를 생성하고 복잡한 작업을 위임하는 커맨드.
|
|
10
|
-
|
|
11
|
-
---
|
|
12
|
-
|
|
13
|
-
<agent_types>
|
|
14
|
-
|
|
15
|
-
## 주요 Agent Types
|
|
16
|
-
|
|
17
|
-
| Type | 용도 | 예시 |
|
|
18
|
-
|------|------|------|
|
|
19
|
-
| **Explore** | 코드베이스 구조 탐색, 파일 검색 | "React 컴포넌트 구조 분석" |
|
|
20
|
-
| **Plan** | 구현 전략 수립, 설계 계획 | "마이그레이션 단계별 계획" |
|
|
21
|
-
| **Bash** | Git 작업, 터미널 명령 실행 | "브랜치 생성 및 커밋" |
|
|
22
|
-
| **general-purpose** | 복합 작업, 다단계 조사 | "여러 모듈 의존성 분석" |
|
|
23
|
-
|
|
24
|
-
</agent_types>
|
|
25
|
-
|
|
26
|
-
---
|
|
27
|
-
|
|
28
|
-
<usage_patterns>
|
|
29
|
-
|
|
30
|
-
## 사용 패턴
|
|
31
|
-
|
|
32
|
-
### 단일 Subagent
|
|
33
|
-
|
|
34
|
-
```typescript
|
|
35
|
-
Task({
|
|
36
|
-
subagent_type: 'Explore',
|
|
37
|
-
description: '인증 구조 분석',
|
|
38
|
-
prompt: `
|
|
39
|
-
현재 인증 관련 코드 분석:
|
|
40
|
-
- 사용 중인 라이브러리
|
|
41
|
-
- 세션 관리 방식
|
|
42
|
-
- 관련 파일 위치
|
|
43
|
-
`
|
|
44
|
-
})
|
|
45
|
-
```
|
|
46
|
-
|
|
47
|
-
### 병렬 Subagent (독립 작업)
|
|
48
|
-
|
|
49
|
-
```typescript
|
|
50
|
-
// 단일 메시지에 여러 Task 호출
|
|
51
|
-
Task({
|
|
52
|
-
subagent_type: 'Explore',
|
|
53
|
-
description: '프론트엔드 구조',
|
|
54
|
-
prompt: '프론트엔드 인증 흐름 분석'
|
|
55
|
-
})
|
|
56
|
-
|
|
57
|
-
Task({
|
|
58
|
-
subagent_type: 'Explore',
|
|
59
|
-
description: '백엔드 API',
|
|
60
|
-
prompt: '백엔드 인증 엔드포인트 분석'
|
|
61
|
-
})
|
|
62
|
-
|
|
63
|
-
Task({
|
|
64
|
-
subagent_type: 'Bash',
|
|
65
|
-
description: 'Git 이력 확인',
|
|
66
|
-
prompt: 'git log --grep="auth" 최근 커밋 조사'
|
|
67
|
-
})
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
### Model 선택 (선택적)
|
|
71
|
-
|
|
72
|
-
```typescript
|
|
73
|
-
Task({
|
|
74
|
-
subagent_type: 'Explore',
|
|
75
|
-
description: '간단한 파일 탐색',
|
|
76
|
-
prompt: 'config 파일 위치 찾기',
|
|
77
|
-
model: 'haiku' // 빠르고 저렴한 작업
|
|
78
|
-
})
|
|
79
|
-
```
|
|
80
|
-
|
|
81
|
-
</usage_patterns>
|
|
82
|
-
|
|
83
|
-
---
|
|
84
|
-
|
|
85
|
-
<quick_tips>
|
|
86
|
-
|
|
87
|
-
## Quick Tips
|
|
88
|
-
|
|
89
|
-
| 팁 | 설명 |
|
|
90
|
-
|----|------|
|
|
91
|
-
| **description** | 3-5단어로 작업 요약 (사용자에게 표시) |
|
|
92
|
-
| **prompt** | 구체적 작업 내용, 명확한 목표 |
|
|
93
|
-
| **병렬 실행** | 독립적 작업은 단일 메시지에 여러 Task 호출 |
|
|
94
|
-
| **model** | 간단한 작업 → `haiku`, 복잡한 작업 → 생략(sonnet) |
|
|
95
|
-
| **Sequential Thinking** | agent 생성 전 복잡도 판단 권장 (3-5단계) |
|
|
96
|
-
|
|
97
|
-
</quick_tips>
|
|
98
|
-
|
|
99
|
-
---
|
|
100
|
-
|
|
101
|
-
<validation>
|
|
102
|
-
|
|
103
|
-
## 체크리스트
|
|
104
|
-
|
|
105
|
-
```text
|
|
106
|
-
✅ 작업이 복잡하여 subagent 필요
|
|
107
|
-
✅ description 3-5단어 (사용자 표시용)
|
|
108
|
-
✅ prompt 명확하고 구체적
|
|
109
|
-
✅ 독립 작업 → 병렬 실행 (단일 메시지)
|
|
110
|
-
✅ 의존 작업 → 순차 실행 (결과 대기)
|
|
111
|
-
|
|
112
|
-
❌ 단순 파일 읽기에 Task 사용 (Read 직접)
|
|
113
|
-
❌ 특정 클래스 검색에 Task 사용 (Glob 직접)
|
|
114
|
-
❌ 의존 작업을 병렬로 실행
|
|
115
|
-
❌ placeholder 값 전달 (결과 대기 후 전달)
|
|
116
|
-
```
|
|
117
|
-
|
|
118
|
-
</validation>
|