@kood/claude-code 0.5.0 → 0.5.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 +179 -33
- package/package.json +1 -1
- package/templates/.claude/agents/analyst.md +6 -14
- package/templates/.claude/agents/architect.md +6 -14
- package/templates/.claude/agents/code-reviewer.md +8 -14
- package/templates/.claude/agents/dependency-manager.md +8 -14
- package/templates/.claude/agents/deployment-validator.md +8 -14
- package/templates/.claude/agents/designer.md +8 -0
- package/templates/.claude/agents/document-writer.md +6 -14
- package/templates/.claude/agents/explore.md +8 -3
- package/templates/.claude/agents/git-operator.md +63 -17
- package/templates/.claude/agents/implementation-executor.md +14 -37
- package/templates/.claude/agents/ko-to-en-translator.md +8 -13
- package/templates/.claude/agents/lint-fixer.md +8 -172
- package/templates/.claude/agents/planner.md +6 -14
- package/templates/.claude/agents/refactor-advisor.md +8 -14
- package/templates/.claude/commands/git-all.md +3 -167
- package/templates/.claude/commands/git-session.md +3 -71
- package/templates/.claude/commands/lint-fix.md +119 -82
- package/templates/.claude/commands/lint-init.md +2 -54
- package/templates/.claude/commands/pre-deploy.md +143 -82
- package/templates/.claude/commands/version-update.md +171 -66
- package/templates/.claude/instructions/agent-patterns/agent-coordination.md +208 -0
- package/templates/.claude/instructions/agent-patterns/index.md +264 -0
- package/templates/.claude/instructions/agent-patterns/model-routing.md +167 -0
- package/templates/.claude/instructions/agent-patterns/parallel-execution.md +91 -0
- package/templates/.claude/instructions/agent-patterns/read-parallelization.md +106 -0
- package/templates/.claude/instructions/index.md +350 -0
- package/templates/.claude/instructions/multi-agent/agent-roster.md +811 -0
- package/templates/.claude/{PARALLEL_AGENTS.md → instructions/multi-agent/coordination-guide.md} +27 -336
- package/templates/.claude/instructions/{parallel-agent-execution.md → multi-agent/execution-patterns.md} +127 -438
- package/templates/.claude/instructions/multi-agent/index.md +282 -0
- package/templates/.claude/instructions/multi-agent/performance-optimization.md +456 -0
- package/templates/.claude/instructions/tech-stack/design-standards.md +282 -0
- package/templates/.claude/instructions/tech-stack/index.md +70 -0
- package/templates/.claude/instructions/tech-stack/prisma-patterns.md +352 -0
- package/templates/.claude/instructions/tech-stack/tanstack-patterns.md +275 -0
- package/templates/.claude/instructions/validation/forbidden-patterns.md +281 -0
- package/templates/.claude/instructions/validation/index.md +32 -0
- package/templates/.claude/instructions/validation/required-behaviors.md +331 -0
- package/templates/.claude/instructions/validation/verification-checklist.md +318 -0
- package/templates/.claude/instructions/workflow-patterns/index.md +18 -0
- package/templates/.claude/instructions/workflow-patterns/phase-based-workflow.md +250 -0
- package/templates/.claude/instructions/workflow-patterns/sequential-thinking.md +217 -0
- package/templates/.claude/instructions/workflow-patterns/todowrite-pattern.md +215 -0
- package/templates/.claude/skills/bug-fix/SKILL.md +972 -0
- package/templates/.claude/skills/docs-creator/AGENTS.md +4 -1
- package/templates/.claude/skills/docs-creator/SKILL.md +258 -0
- package/templates/.claude/skills/docs-refactor/AGENTS.md +4 -1
- package/templates/.claude/skills/docs-refactor/SKILL.md +145 -0
- package/templates/.claude/skills/execute/SKILL.md +15 -242
- package/templates/.claude/skills/figma-to-code/AGENTS.md +4 -1
- package/templates/.claude/skills/figma-to-code/SKILL.md +306 -0
- package/templates/.claude/skills/global-uiux-design/AGENTS.md +4 -1
- package/templates/.claude/skills/global-uiux-design/SKILL.md +455 -125
- package/templates/.claude/skills/korea-uiux-design/AGENTS.md +4 -1
- package/templates/.claude/skills/korea-uiux-design/SKILL.md +461 -116
- package/templates/.claude/skills/nextjs-react-best-practices/SKILL.md +177 -0
- package/templates/.claude/skills/plan/SKILL.md +1102 -98
- package/templates/.claude/skills/prd/SKILL.md +367 -66
- package/templates/.claude/skills/ralph/AGENTS.md +4 -1
- package/templates/.claude/skills/ralph/SKILL.md +83 -0
- package/templates/.claude/skills/refactor/SKILL.md +1214 -0
- package/templates/.claude/skills/tanstack-start-react-best-practices/SKILL.md +149 -0
- package/templates/.claude/commands/bug-fix.md +0 -510
- package/templates/.claude/commands/refactor.md +0 -788
|
@@ -0,0 +1,1214 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: refactor
|
|
3
|
+
description: 코드 품질 개선을 위한 리팩토링 계획 수립 및 실행 전략 제시
|
|
4
|
+
user-invocable: true
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
@../../instructions/workflow-patterns/sequential-thinking.md
|
|
8
|
+
@../../instructions/agent-patterns/parallel-execution.md
|
|
9
|
+
@../../instructions/agent-patterns/model-routing.md
|
|
10
|
+
@../../instructions/validation/forbidden-patterns.md
|
|
11
|
+
@../../instructions/validation/required-behaviors.md
|
|
12
|
+
|
|
13
|
+
# Refactor Skill
|
|
14
|
+
|
|
15
|
+
> 코드 품질 개선을 위한 리팩토링 계획 수립 및 실행 전략 제시
|
|
16
|
+
|
|
17
|
+
---
|
|
18
|
+
|
|
19
|
+
<when_to_use>
|
|
20
|
+
|
|
21
|
+
## 사용 시점
|
|
22
|
+
|
|
23
|
+
| 상황 | 예시 |
|
|
24
|
+
|------|------|
|
|
25
|
+
| **코드 품질 개선** | 복잡도 감소, 중복 코드 제거, 명명 개선 |
|
|
26
|
+
| **구조 개선** | 파일/모듈 구조 정리, 관심사 분리 |
|
|
27
|
+
| **점진적 개선** | 단계적 리팩토링 계획 필요 |
|
|
28
|
+
| **성능 최적화** | 코드 효율성 개선 (기능 유지) |
|
|
29
|
+
| **타입 안정성** | any 제거, 명시적 타입 정의 |
|
|
30
|
+
|
|
31
|
+
## 호출 방법
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
# 직접 처리 (명확한 범위)
|
|
35
|
+
/refactor src/utils/auth.ts - 너무 복잡함
|
|
36
|
+
|
|
37
|
+
# @refactor-advisor 위임 (코드 품질 개선)
|
|
38
|
+
Task({
|
|
39
|
+
subagent_type: 'refactor-advisor',
|
|
40
|
+
model: 'sonnet',
|
|
41
|
+
description: '인증 모듈 리팩토링',
|
|
42
|
+
prompt: '복잡도 감소, 중복 제거, 타입 안정성 향상'
|
|
43
|
+
})
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
## 결과물
|
|
47
|
+
|
|
48
|
+
- 2-3개 리팩토링 옵션 제시 (장단점, 영향 범위)
|
|
49
|
+
- 추천안 및 근거
|
|
50
|
+
- 선택 후 `.claude/plans/refactor-[이름].md` 자동 생성
|
|
51
|
+
|
|
52
|
+
</when_to_use>
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
<argument_validation>
|
|
57
|
+
|
|
58
|
+
## ARGUMENT 필수 확인
|
|
59
|
+
|
|
60
|
+
```
|
|
61
|
+
$ARGUMENTS 없음 → 즉시 질문:
|
|
62
|
+
|
|
63
|
+
"무엇을 리팩토링해야 하나요? 구체적으로 알려주세요.
|
|
64
|
+
|
|
65
|
+
예시:
|
|
66
|
+
- 특정 파일/모듈 개선
|
|
67
|
+
- 복잡도 감소
|
|
68
|
+
- 중복 코드 제거
|
|
69
|
+
- 구조 개선
|
|
70
|
+
- 성능 최적화"
|
|
71
|
+
|
|
72
|
+
$ARGUMENTS 있음 → 다음 단계 진행
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
</argument_validation>
|
|
76
|
+
|
|
77
|
+
---
|
|
78
|
+
|
|
79
|
+
<workflow>
|
|
80
|
+
|
|
81
|
+
## 실행 흐름
|
|
82
|
+
|
|
83
|
+
| 단계 | 작업 | 도구 |
|
|
84
|
+
|------|------|------|
|
|
85
|
+
| 1. 입력 확인 | ARGUMENT 검증, 없으면 질문 | - |
|
|
86
|
+
| 2. Agent 판단 | @refactor-advisor 사용 여부 결정 | - |
|
|
87
|
+
| 3. 복잡도 판단 | Sequential Thinking으로 분석 범위 결정 | sequentialthinking (1단계) |
|
|
88
|
+
| 4. 코드 분석 | 현재 코드 구조, 문제점 파악 | Task (Explore) + Read/Grep |
|
|
89
|
+
| 5. 개선 옵션 도출 | 가능한 접근 4-5개 → 주요 2-3개 선정 | sequentialthinking (2-6단계) |
|
|
90
|
+
| 6. 옵션 제시 | 장단점, 영향 범위, 추천안 제시 | - |
|
|
91
|
+
| 7. 계획 문서 작성 | 선택 시 리팩토링 계획 생성 | Write |
|
|
92
|
+
|
|
93
|
+
</workflow>
|
|
94
|
+
|
|
95
|
+
---
|
|
96
|
+
|
|
97
|
+
<agent_priority>
|
|
98
|
+
|
|
99
|
+
## @refactor-advisor Agent 우선 사용
|
|
100
|
+
|
|
101
|
+
**기본 원칙:**
|
|
102
|
+
```
|
|
103
|
+
리팩토링 요청 → @refactor-advisor 먼저 고려
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
### 사용 조건
|
|
107
|
+
|
|
108
|
+
| 조건 | 설명 |
|
|
109
|
+
|------|------|
|
|
110
|
+
| **코드 품질 개선** | 복잡도, 중복, 명명, 구조 개선 |
|
|
111
|
+
| **기능 변경 없음** | 동작은 유지하며 코드만 개선 |
|
|
112
|
+
| **점진적 개선** | 단계적 리팩토링 계획 필요 |
|
|
113
|
+
|
|
114
|
+
### Agent 활용 흐름
|
|
115
|
+
|
|
116
|
+
```
|
|
117
|
+
1. @refactor-advisor 호출
|
|
118
|
+
→ 코드 분석, 우선순위별 개선점 도출
|
|
119
|
+
|
|
120
|
+
2. 분석 결과 기반 옵션 정리
|
|
121
|
+
→ 사용자에게 2-3개 옵션 제시
|
|
122
|
+
|
|
123
|
+
3. 선택 후 계획 문서 작성
|
|
124
|
+
→ .claude/plans/refactor-[이름].md
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
### Agent 미사용 케이스
|
|
128
|
+
|
|
129
|
+
```
|
|
130
|
+
✅ @refactor-advisor 사용:
|
|
131
|
+
- 기존 코드 개선
|
|
132
|
+
- 복잡도/중복 감소
|
|
133
|
+
- 구조 개선
|
|
134
|
+
|
|
135
|
+
❌ 직접 처리:
|
|
136
|
+
- 아키텍처 변경
|
|
137
|
+
- 새 기능 추가와 함께 리팩토링
|
|
138
|
+
- 프레임워크 마이그레이션
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
</agent_priority>
|
|
142
|
+
|
|
143
|
+
---
|
|
144
|
+
|
|
145
|
+
<parallel_agent_execution>
|
|
146
|
+
|
|
147
|
+
## 병렬 Agent 실행
|
|
148
|
+
|
|
149
|
+
**복잡한 리팩토링은 여러 Agent를 병렬로 실행하여 효율 향상.**
|
|
150
|
+
|
|
151
|
+
### 권장 Agent
|
|
152
|
+
|
|
153
|
+
| Agent | Model | 역할 |
|
|
154
|
+
|-------|-------|------|
|
|
155
|
+
| **@refactor-advisor** | sonnet | 리팩토링 계획 수립, 우선순위 분석 |
|
|
156
|
+
| **@architect** | opus | 아키텍처 분석, 구조 개선 방향 제시 (READ-ONLY) |
|
|
157
|
+
| **@implementation-executor** | sonnet | 리팩토링 구현 실행 |
|
|
158
|
+
| **@code-reviewer** | opus | 리팩토링 후 품질 검증 |
|
|
159
|
+
| **@analyst** | sonnet | 코드 메트릭 분석, 엣지 케이스 검증 |
|
|
160
|
+
| **@explore** | haiku | 코드베이스 탐색, 의존성 파악 |
|
|
161
|
+
| **@document-writer** | haiku/sonnet | 리팩토링 계획 및 결과 문서화 |
|
|
162
|
+
|
|
163
|
+
### 병렬 실행 패턴
|
|
164
|
+
|
|
165
|
+
### Read 도구 병렬화
|
|
166
|
+
|
|
167
|
+
**프로젝트 분석 시 파일 병렬 읽기:**
|
|
168
|
+
|
|
169
|
+
```typescript
|
|
170
|
+
// ❌ 순차 읽기 (느림)
|
|
171
|
+
Read({ file_path: "src/file1.ts" })
|
|
172
|
+
// 대기...
|
|
173
|
+
Read({ file_path: "src/file2.ts" })
|
|
174
|
+
|
|
175
|
+
// ✅ 병렬 읽기 (빠름)
|
|
176
|
+
Read({ file_path: "src/file1.ts" })
|
|
177
|
+
Read({ file_path: "src/file2.ts" })
|
|
178
|
+
Read({ file_path: "src/file3.ts" })
|
|
179
|
+
Read({ file_path: "docs/api.md" })
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
**복잡한 탐색은 explore 에이전트 활용:**
|
|
183
|
+
|
|
184
|
+
```typescript
|
|
185
|
+
// 여러 영역 동시 탐색
|
|
186
|
+
Task(subagent_type="explore", model="haiku",
|
|
187
|
+
prompt="영역 1 파일 구조 및 패턴 분석")
|
|
188
|
+
Task(subagent_type="explore", model="haiku",
|
|
189
|
+
prompt="영역 2 의존성 및 관계 분석")
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
#### 1. 독립적 모듈 병렬 리팩토링
|
|
195
|
+
|
|
196
|
+
```typescript
|
|
197
|
+
// ✅ 여러 모듈을 동시에 리팩토링
|
|
198
|
+
Task({
|
|
199
|
+
subagent_type: "implementation-executor",
|
|
200
|
+
model: "sonnet",
|
|
201
|
+
prompt: "User 모듈 리팩토링: 복잡도 감소, 중복 제거"
|
|
202
|
+
})
|
|
203
|
+
|
|
204
|
+
Task({
|
|
205
|
+
subagent_type: "implementation-executor",
|
|
206
|
+
model: "sonnet",
|
|
207
|
+
prompt: "Product 모듈 리팩토링: 타입 안정성 개선"
|
|
208
|
+
})
|
|
209
|
+
|
|
210
|
+
Task({
|
|
211
|
+
subagent_type: "implementation-executor",
|
|
212
|
+
model: "sonnet",
|
|
213
|
+
prompt: "Order 모듈 리팩토링: 함수 분리"
|
|
214
|
+
})
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
#### 2. 분석 + 계획 병렬
|
|
218
|
+
|
|
219
|
+
```typescript
|
|
220
|
+
// ✅ 아키텍처 분석과 리팩토링 계획을 동시에
|
|
221
|
+
Task({
|
|
222
|
+
subagent_type: "architect",
|
|
223
|
+
model: "opus",
|
|
224
|
+
prompt: "현재 아키텍처 문제점 및 개선 방향 분석 (READ-ONLY)"
|
|
225
|
+
})
|
|
226
|
+
|
|
227
|
+
Task({
|
|
228
|
+
subagent_type: "refactor-advisor",
|
|
229
|
+
model: "sonnet",
|
|
230
|
+
prompt: "리팩토링 우선순위 계획 및 단계별 전략"
|
|
231
|
+
})
|
|
232
|
+
|
|
233
|
+
Task({
|
|
234
|
+
subagent_type: "analyst",
|
|
235
|
+
model: "sonnet",
|
|
236
|
+
prompt: "코드 복잡도, 중복률, 결합도 메트릭 분석"
|
|
237
|
+
})
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
#### 3. 의존성 분석 + 수정 병렬
|
|
241
|
+
|
|
242
|
+
```typescript
|
|
243
|
+
// ✅ 의존성 파악과 독립 모듈 리팩토링 동시 진행
|
|
244
|
+
Task({
|
|
245
|
+
subagent_type: "explore",
|
|
246
|
+
model: "haiku",
|
|
247
|
+
prompt: "모듈 간 의존성 그래프 분석 및 순환 의존성 탐지"
|
|
248
|
+
})
|
|
249
|
+
|
|
250
|
+
Task({
|
|
251
|
+
subagent_type: "implementation-executor",
|
|
252
|
+
model: "sonnet",
|
|
253
|
+
prompt: "독립 유틸리티 함수 리팩토링 (의존성 없음)"
|
|
254
|
+
})
|
|
255
|
+
|
|
256
|
+
Task({
|
|
257
|
+
subagent_type: "implementation-executor",
|
|
258
|
+
model: "sonnet",
|
|
259
|
+
prompt: "타입 정의 개선 (다른 모듈에 영향 없음)"
|
|
260
|
+
})
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
#### 4. 리팩토링 + 테스트 + 문서 병렬
|
|
264
|
+
|
|
265
|
+
```typescript
|
|
266
|
+
// ✅ 구현, 테스트, 문서를 동시에
|
|
267
|
+
Task({
|
|
268
|
+
subagent_type: "implementation-executor",
|
|
269
|
+
model: "sonnet",
|
|
270
|
+
prompt: "API 레이어 리팩토링 실행"
|
|
271
|
+
})
|
|
272
|
+
|
|
273
|
+
Task({
|
|
274
|
+
subagent_type: "implementation-executor",
|
|
275
|
+
model: "sonnet",
|
|
276
|
+
prompt: "리팩토링된 함수에 대한 단위 테스트 작성"
|
|
277
|
+
})
|
|
278
|
+
|
|
279
|
+
Task({
|
|
280
|
+
subagent_type: "document-writer",
|
|
281
|
+
model: "haiku",
|
|
282
|
+
prompt: "리팩토링 변경 사항 및 마이그레이션 가이드 문서화"
|
|
283
|
+
})
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
#### 5. 다중 관점 코드 리뷰 (병렬)
|
|
287
|
+
|
|
288
|
+
```typescript
|
|
289
|
+
// ✅ 리팩토링 후 여러 관점에서 동시 검증
|
|
290
|
+
Task({
|
|
291
|
+
subagent_type: "code-reviewer",
|
|
292
|
+
model: "opus",
|
|
293
|
+
prompt: "성능 검토: 불필요한 리렌더, N+1 쿼리, 메모이제이션"
|
|
294
|
+
})
|
|
295
|
+
|
|
296
|
+
Task({
|
|
297
|
+
subagent_type: "code-reviewer",
|
|
298
|
+
model: "opus",
|
|
299
|
+
prompt: "보안 검토: 타입 안정성, 입력 검증, 인증/인가 로직"
|
|
300
|
+
})
|
|
301
|
+
|
|
302
|
+
Task({
|
|
303
|
+
subagent_type: "code-reviewer",
|
|
304
|
+
model: "opus",
|
|
305
|
+
prompt: "가독성 검토: 명명 규칙, 함수 길이, 주석 품질"
|
|
306
|
+
})
|
|
307
|
+
|
|
308
|
+
Task({
|
|
309
|
+
subagent_type: "code-reviewer",
|
|
310
|
+
model: "opus",
|
|
311
|
+
prompt: "유지보수성 검토: 테스트 커버리지, 의존성 관리, 확장성"
|
|
312
|
+
})
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
#### 6. 점진적 마이그레이션 병렬화
|
|
316
|
+
|
|
317
|
+
```typescript
|
|
318
|
+
// ✅ 레거시 + 신규 시스템 공존 리팩토링
|
|
319
|
+
Task({
|
|
320
|
+
subagent_type: "implementation-executor",
|
|
321
|
+
model: "sonnet",
|
|
322
|
+
prompt: "새 인증 시스템 구현 (기존과 독립)"
|
|
323
|
+
})
|
|
324
|
+
|
|
325
|
+
Task({
|
|
326
|
+
subagent_type: "implementation-executor",
|
|
327
|
+
model: "sonnet",
|
|
328
|
+
prompt: "레거시 API 어댑터 구현 (호환성 유지)"
|
|
329
|
+
})
|
|
330
|
+
|
|
331
|
+
Task({
|
|
332
|
+
subagent_type: "implementation-executor",
|
|
333
|
+
model: "haiku",
|
|
334
|
+
prompt: "Feature flag 설정 및 점진적 전환 로직"
|
|
335
|
+
})
|
|
336
|
+
|
|
337
|
+
Task({
|
|
338
|
+
subagent_type: "document-writer",
|
|
339
|
+
model: "sonnet",
|
|
340
|
+
prompt: "마이그레이션 플랜 및 롤백 가이드 작성"
|
|
341
|
+
})
|
|
342
|
+
```
|
|
343
|
+
|
|
344
|
+
### Model Routing (복잡도별)
|
|
345
|
+
|
|
346
|
+
| 복잡도 | 리팩토링 유형 | Model | Agent | 예시 |
|
|
347
|
+
|--------|--------------|-------|-------|------|
|
|
348
|
+
| **LOW** | 단순 개선 | haiku | implementation-executor | 변수명 변경, 코드 포맷팅, 주석 정리 |
|
|
349
|
+
| **MEDIUM** | 일반 리팩토링 | sonnet | implementation-executor, refactor-advisor | 함수 분리, 중복 제거, 타입 개선 |
|
|
350
|
+
| **HIGH** | 복잡한 구조 변경 | opus | architect, code-reviewer | 아키텍처 재설계, 모듈 분리, 디자인 패턴 적용 |
|
|
351
|
+
|
|
352
|
+
**Agent별 모델 선택 원칙:**
|
|
353
|
+
|
|
354
|
+
| Agent | 권장 모델 | 이유 |
|
|
355
|
+
|-------|----------|------|
|
|
356
|
+
| **architect** | **opus** | 아키텍처 분석은 높은 사고력 필요 |
|
|
357
|
+
| **implementation-executor** | **sonnet** | 균형 잡힌 품질/속도 (haiku: 단순 작업) |
|
|
358
|
+
| **code-reviewer** | **opus** | 품질 검증은 세밀한 분석 필요 |
|
|
359
|
+
| **refactor-advisor** | **sonnet** | 계획 수립은 중간 복잡도 |
|
|
360
|
+
| **explore** | **haiku** | 단순 탐색은 빠른 응답 우선 |
|
|
361
|
+
| **analyst** | **sonnet** | 메트릭 분석은 중간 복잡도 |
|
|
362
|
+
| **document-writer** | **haiku/sonnet** | 간단한 문서는 haiku, 상세 문서는 sonnet |
|
|
363
|
+
|
|
364
|
+
### 병렬 실행 전략
|
|
365
|
+
|
|
366
|
+
#### 언제 병렬 실행하는가
|
|
367
|
+
|
|
368
|
+
| 조건 | 병렬 실행 | 순차 실행 |
|
|
369
|
+
|------|----------|----------|
|
|
370
|
+
| **독립성** | ✅ 서로 다른 파일/모듈 | ❌ 같은 파일 수정 |
|
|
371
|
+
| **의존성** | ✅ 의존성 없음 | ❌ 순차 의존성 있음 |
|
|
372
|
+
| **작업 유형** | ✅ 읽기 전용 (분석/탐색) | ❌ 결과가 다음 입력 |
|
|
373
|
+
| **컨텍스트** | ✅ 독립 컨텍스트 | ❌ 공유 컨텍스트 필요 |
|
|
374
|
+
|
|
375
|
+
#### 병렬 실행 체크리스트
|
|
376
|
+
|
|
377
|
+
실행 전 확인:
|
|
378
|
+
|
|
379
|
+
```text
|
|
380
|
+
- [ ] 이 작업들은 독립적인가? (서로 다른 파일/모듈)
|
|
381
|
+
- [ ] 순차 의존성이 없는가? (A 결과 → B 입력 아님)
|
|
382
|
+
- [ ] 같은 파일을 동시에 수정하지 않는가?
|
|
383
|
+
- [ ] 컨텍스트 분리가 가능한가? (각 에이전트가 독립적으로 작업)
|
|
384
|
+
- [ ] 적절한 모델을 선택했는가? (복잡도에 맞게)
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
**모든 항목 ✅ → 병렬 실행 / 하나라도 ❌ → 순차 실행**
|
|
388
|
+
|
|
389
|
+
### 실전 시나리오
|
|
390
|
+
|
|
391
|
+
#### 시나리오 1: 레거시 → 최신 프레임워크 전환
|
|
392
|
+
|
|
393
|
+
**배경:** 레거시 React 클래스 컴포넌트를 TanStack Start로 전환
|
|
394
|
+
|
|
395
|
+
```typescript
|
|
396
|
+
// 1단계: 분석 (병렬)
|
|
397
|
+
Task({
|
|
398
|
+
subagent_type: "architect",
|
|
399
|
+
model: "opus",
|
|
400
|
+
prompt: "레거시 아키텍처 분석 및 TanStack Start 전환 전략"
|
|
401
|
+
})
|
|
402
|
+
|
|
403
|
+
Task({
|
|
404
|
+
subagent_type: "explore",
|
|
405
|
+
model: "haiku",
|
|
406
|
+
prompt: "레거시 컴포넌트 목록 및 의존성 파악"
|
|
407
|
+
})
|
|
408
|
+
|
|
409
|
+
Task({
|
|
410
|
+
subagent_type: "analyst",
|
|
411
|
+
model: "sonnet",
|
|
412
|
+
prompt: "전환 리스크 분석: 상태 관리, 라우팅, 데이터 페칭 차이점"
|
|
413
|
+
})
|
|
414
|
+
|
|
415
|
+
// 2단계: 점진적 전환 (병렬 - 독립 컴포넌트)
|
|
416
|
+
Task({
|
|
417
|
+
subagent_type: "implementation-executor",
|
|
418
|
+
model: "sonnet",
|
|
419
|
+
prompt: "Profile 페이지 전환: createFileRoute + Server Functions"
|
|
420
|
+
})
|
|
421
|
+
|
|
422
|
+
Task({
|
|
423
|
+
subagent_type: "implementation-executor",
|
|
424
|
+
model: "sonnet",
|
|
425
|
+
prompt: "Settings 페이지 전환: createFileRoute + Server Functions"
|
|
426
|
+
})
|
|
427
|
+
|
|
428
|
+
Task({
|
|
429
|
+
subagent_type: "implementation-executor",
|
|
430
|
+
model: "sonnet",
|
|
431
|
+
prompt: "Dashboard 페이지 전환: createFileRoute + Server Functions"
|
|
432
|
+
})
|
|
433
|
+
|
|
434
|
+
// 3단계: 검증 + 문서 (병렬)
|
|
435
|
+
Task({
|
|
436
|
+
subagent_type: "code-reviewer",
|
|
437
|
+
model: "opus",
|
|
438
|
+
prompt: "전환된 코드 품질 검증: 라우팅, 상태, 데이터 페칭"
|
|
439
|
+
})
|
|
440
|
+
|
|
441
|
+
Task({
|
|
442
|
+
subagent_type: "document-writer",
|
|
443
|
+
model: "sonnet",
|
|
444
|
+
prompt: "마이그레이션 가이드 작성: 패턴 비교, 주의사항, 롤백 절차"
|
|
445
|
+
})
|
|
446
|
+
```
|
|
447
|
+
|
|
448
|
+
#### 시나리오 2: 아키텍처 개선 (모놀리식 → 레이어드)
|
|
449
|
+
|
|
450
|
+
**배경:** 모든 로직이 혼재된 파일을 레이어드 아키텍처로 분리
|
|
451
|
+
|
|
452
|
+
```typescript
|
|
453
|
+
// 1단계: 현재 상태 분석 (병렬)
|
|
454
|
+
Task({
|
|
455
|
+
subagent_type: "architect",
|
|
456
|
+
model: "opus",
|
|
457
|
+
prompt: "현재 아키텍처 문제점 분석: 순환 의존성, 결합도, 테스트 어려움"
|
|
458
|
+
})
|
|
459
|
+
|
|
460
|
+
Task({
|
|
461
|
+
subagent_type: "explore",
|
|
462
|
+
model: "haiku",
|
|
463
|
+
prompt: "모듈 간 의존성 그래프 생성 및 순환 의존성 식별"
|
|
464
|
+
})
|
|
465
|
+
|
|
466
|
+
Task({
|
|
467
|
+
subagent_type: "analyst",
|
|
468
|
+
model: "sonnet",
|
|
469
|
+
prompt: "복잡도 메트릭 분석: 파일 크기, 함수 길이, 중첩 깊이"
|
|
470
|
+
})
|
|
471
|
+
|
|
472
|
+
// 2단계: 레이어 분리 계획
|
|
473
|
+
Task({
|
|
474
|
+
subagent_type: "refactor-advisor",
|
|
475
|
+
model: "sonnet",
|
|
476
|
+
prompt: "레이어드 아키텍처 전환 계획: Presentation → Service → Domain → Data"
|
|
477
|
+
})
|
|
478
|
+
|
|
479
|
+
// 3단계: 레이어별 구현 (순차적 - 의존성 있음)
|
|
480
|
+
// 먼저 Domain Layer (의존성 없음)
|
|
481
|
+
Task({
|
|
482
|
+
subagent_type: "implementation-executor",
|
|
483
|
+
model: "sonnet",
|
|
484
|
+
prompt: "Domain Layer 분리: 엔티티, Value Object, 비즈니스 로직"
|
|
485
|
+
})
|
|
486
|
+
|
|
487
|
+
// 이후 상위 레이어 (병렬 가능)
|
|
488
|
+
Task({
|
|
489
|
+
subagent_type: "implementation-executor",
|
|
490
|
+
model: "sonnet",
|
|
491
|
+
prompt: "Data Layer 구현: Repository, Prisma 연동"
|
|
492
|
+
})
|
|
493
|
+
|
|
494
|
+
Task({
|
|
495
|
+
subagent_type: "implementation-executor",
|
|
496
|
+
model: "sonnet",
|
|
497
|
+
prompt: "Service Layer 구현: 비즈니스 로직 조율, 트랜잭션 관리"
|
|
498
|
+
})
|
|
499
|
+
|
|
500
|
+
Task({
|
|
501
|
+
subagent_type: "implementation-executor",
|
|
502
|
+
model: "sonnet",
|
|
503
|
+
prompt: "Presentation Layer 구현: Server Functions, 입력 검증"
|
|
504
|
+
})
|
|
505
|
+
|
|
506
|
+
// 4단계: 다중 관점 검증 (병렬)
|
|
507
|
+
Task({
|
|
508
|
+
subagent_type: "code-reviewer",
|
|
509
|
+
model: "opus",
|
|
510
|
+
prompt: "아키텍처 검증: 레이어 분리 원칙 준수, 의존성 방향"
|
|
511
|
+
})
|
|
512
|
+
|
|
513
|
+
Task({
|
|
514
|
+
subagent_type: "code-reviewer",
|
|
515
|
+
model: "opus",
|
|
516
|
+
prompt: "테스트 용이성 검증: 단위 테스트 가능성, Mock 필요성"
|
|
517
|
+
})
|
|
518
|
+
```
|
|
519
|
+
|
|
520
|
+
#### 시나리오 3: 성능 최적화 리팩토링
|
|
521
|
+
|
|
522
|
+
**배경:** 느린 렌더링, N+1 쿼리 문제 해결
|
|
523
|
+
|
|
524
|
+
```typescript
|
|
525
|
+
// 1단계: 성능 문제 분석 (병렬)
|
|
526
|
+
Task({
|
|
527
|
+
subagent_type: "analyst",
|
|
528
|
+
model: "sonnet",
|
|
529
|
+
prompt: "성능 병목 지점 분석: React Profiler 데이터, DB 쿼리 로그"
|
|
530
|
+
})
|
|
531
|
+
|
|
532
|
+
Task({
|
|
533
|
+
subagent_type: "explore",
|
|
534
|
+
model: "haiku",
|
|
535
|
+
prompt: "불필요한 리렌더 발생 컴포넌트 탐색"
|
|
536
|
+
})
|
|
537
|
+
|
|
538
|
+
Task({
|
|
539
|
+
subagent_type: "explore",
|
|
540
|
+
model: "haiku",
|
|
541
|
+
prompt: "N+1 쿼리 발생 지점 탐색 (Prisma 쿼리 분석)"
|
|
542
|
+
})
|
|
543
|
+
|
|
544
|
+
// 2단계: 최적화 실행 (병렬 - 독립 영역)
|
|
545
|
+
Task({
|
|
546
|
+
subagent_type: "implementation-executor",
|
|
547
|
+
model: "sonnet",
|
|
548
|
+
prompt: "React 최적화: useMemo, useCallback, React.memo 적용"
|
|
549
|
+
})
|
|
550
|
+
|
|
551
|
+
Task({
|
|
552
|
+
subagent_type: "implementation-executor",
|
|
553
|
+
model: "sonnet",
|
|
554
|
+
prompt: "Prisma 쿼리 최적화: include 정리, select 최소화, 배치 쿼리"
|
|
555
|
+
})
|
|
556
|
+
|
|
557
|
+
Task({
|
|
558
|
+
subagent_type: "implementation-executor",
|
|
559
|
+
model: "sonnet",
|
|
560
|
+
prompt: "TanStack Query 최적화: 캐싱 전략, staleTime/cacheTime 조정"
|
|
561
|
+
})
|
|
562
|
+
|
|
563
|
+
// 3단계: 성능 검증 (병렬)
|
|
564
|
+
Task({
|
|
565
|
+
subagent_type: "code-reviewer",
|
|
566
|
+
model: "opus",
|
|
567
|
+
prompt: "성능 개선 검증: 렌더 횟수, 쿼리 실행 시간, 번들 크기"
|
|
568
|
+
})
|
|
569
|
+
|
|
570
|
+
Task({
|
|
571
|
+
subagent_type: "analyst",
|
|
572
|
+
model: "sonnet",
|
|
573
|
+
prompt: "Before/After 메트릭 비교: 응답 시간, 메모리 사용량"
|
|
574
|
+
})
|
|
575
|
+
|
|
576
|
+
Task({
|
|
577
|
+
subagent_type: "document-writer",
|
|
578
|
+
model: "haiku",
|
|
579
|
+
prompt: "성능 최적화 가이드 작성: 적용 패턴, 측정 방법"
|
|
580
|
+
})
|
|
581
|
+
```
|
|
582
|
+
|
|
583
|
+
#### 시나리오 4: 타입 안정성 개선 (any 제거)
|
|
584
|
+
|
|
585
|
+
**배경:** 프로젝트 전반에 any 타입 남용, 런타임 에러 빈발
|
|
586
|
+
|
|
587
|
+
```typescript
|
|
588
|
+
// 1단계: any 사용 분석 (병렬)
|
|
589
|
+
Task({
|
|
590
|
+
subagent_type: "explore",
|
|
591
|
+
model: "haiku",
|
|
592
|
+
prompt: "any 타입 사용 지점 전수 조사 (ast-grep 활용)"
|
|
593
|
+
})
|
|
594
|
+
|
|
595
|
+
Task({
|
|
596
|
+
subagent_type: "analyst",
|
|
597
|
+
model: "sonnet",
|
|
598
|
+
prompt: "any 사용 우선순위 분석: 영향 범위, 수정 난이도"
|
|
599
|
+
})
|
|
600
|
+
|
|
601
|
+
Task({
|
|
602
|
+
subagent_type: "architect",
|
|
603
|
+
model: "opus",
|
|
604
|
+
prompt: "타입 설계 개선 방향: Generic, Utility Types, Type Guards"
|
|
605
|
+
})
|
|
606
|
+
|
|
607
|
+
// 2단계: 타입 정의 개선 (병렬 - 독립 모듈)
|
|
608
|
+
Task({
|
|
609
|
+
subagent_type: "implementation-executor",
|
|
610
|
+
model: "sonnet",
|
|
611
|
+
prompt: "API 응답 타입 정의: Zod 스키마 → TypeScript 타입"
|
|
612
|
+
})
|
|
613
|
+
|
|
614
|
+
Task({
|
|
615
|
+
subagent_type: "implementation-executor",
|
|
616
|
+
model: "sonnet",
|
|
617
|
+
prompt: "이벤트 핸들러 타입 정의: React.MouseEvent, React.ChangeEvent"
|
|
618
|
+
})
|
|
619
|
+
|
|
620
|
+
Task({
|
|
621
|
+
subagent_type: "implementation-executor",
|
|
622
|
+
model: "sonnet",
|
|
623
|
+
prompt: "유틸리티 함수 타입 정의: Generic, Overload"
|
|
624
|
+
})
|
|
625
|
+
|
|
626
|
+
// 3단계: 타입 안정성 검증 (병렬)
|
|
627
|
+
Task({
|
|
628
|
+
subagent_type: "code-reviewer",
|
|
629
|
+
model: "opus",
|
|
630
|
+
prompt: "타입 안정성 검토: unknown vs any, Type Guards 필요성"
|
|
631
|
+
})
|
|
632
|
+
|
|
633
|
+
Task({
|
|
634
|
+
subagent_type: "code-reviewer",
|
|
635
|
+
model: "opus",
|
|
636
|
+
prompt: "타입 에러 검증: tsc --noEmit, 런타임 에러 가능성"
|
|
637
|
+
})
|
|
638
|
+
```
|
|
639
|
+
|
|
640
|
+
#### 시나리오 5: 코드 중복 제거 (DRY 원칙)
|
|
641
|
+
|
|
642
|
+
**배경:** 여러 파일에 유사한 로직 반복, 유지보수 어려움
|
|
643
|
+
|
|
644
|
+
```typescript
|
|
645
|
+
// 1단계: 중복 패턴 분석 (병렬)
|
|
646
|
+
Task({
|
|
647
|
+
subagent_type: "explore",
|
|
648
|
+
model: "haiku",
|
|
649
|
+
prompt: "중복 코드 패턴 탐색: 유사 함수, 중복 로직 (jscpd 등 활용)"
|
|
650
|
+
})
|
|
651
|
+
|
|
652
|
+
Task({
|
|
653
|
+
subagent_type: "analyst",
|
|
654
|
+
model: "sonnet",
|
|
655
|
+
prompt: "중복률 분석 및 우선순위: 중복 라인 수, 파일 개수, 수정 빈도"
|
|
656
|
+
})
|
|
657
|
+
|
|
658
|
+
// 2단계: 공통 모듈 추출 계획
|
|
659
|
+
Task({
|
|
660
|
+
subagent_type: "refactor-advisor",
|
|
661
|
+
model: "sonnet",
|
|
662
|
+
prompt: "공통 모듈 추출 전략: 유틸리티 vs 훅 vs 컴포넌트"
|
|
663
|
+
})
|
|
664
|
+
|
|
665
|
+
// 3단계: 모듈 추출 및 교체 (병렬 - 독립 영역)
|
|
666
|
+
Task({
|
|
667
|
+
subagent_type: "implementation-executor",
|
|
668
|
+
model: "sonnet",
|
|
669
|
+
prompt: "공통 유틸리티 함수 추출: src/lib/utils/ 구성"
|
|
670
|
+
})
|
|
671
|
+
|
|
672
|
+
Task({
|
|
673
|
+
subagent_type: "implementation-executor",
|
|
674
|
+
model: "sonnet",
|
|
675
|
+
prompt: "커스텀 훅 추출: src/hooks/ 구성"
|
|
676
|
+
})
|
|
677
|
+
|
|
678
|
+
Task({
|
|
679
|
+
subagent_type: "implementation-executor",
|
|
680
|
+
model: "sonnet",
|
|
681
|
+
prompt: "공통 UI 컴포넌트 추출: src/components/ui/ 구성"
|
|
682
|
+
})
|
|
683
|
+
|
|
684
|
+
// 4단계: 기존 코드 교체 (병렬 - 독립 파일)
|
|
685
|
+
Task({
|
|
686
|
+
subagent_type: "implementation-executor",
|
|
687
|
+
model: "haiku",
|
|
688
|
+
prompt: "components/ 내 중복 코드 → 공통 모듈 참조로 교체"
|
|
689
|
+
})
|
|
690
|
+
|
|
691
|
+
Task({
|
|
692
|
+
subagent_type: "implementation-executor",
|
|
693
|
+
model: "haiku",
|
|
694
|
+
prompt: "routes/ 내 중복 코드 → 공통 모듈 참조로 교체"
|
|
695
|
+
})
|
|
696
|
+
|
|
697
|
+
Task({
|
|
698
|
+
subagent_type: "implementation-executor",
|
|
699
|
+
model: "haiku",
|
|
700
|
+
prompt: "functions/ 내 중복 코드 → 공통 모듈 참조로 교체"
|
|
701
|
+
})
|
|
702
|
+
|
|
703
|
+
// 5단계: 검증 (병렬)
|
|
704
|
+
Task({
|
|
705
|
+
subagent_type: "code-reviewer",
|
|
706
|
+
model: "opus",
|
|
707
|
+
prompt: "중복 제거 검증: 기존 기능 유지, 새로운 중복 발생 여부"
|
|
708
|
+
})
|
|
709
|
+
|
|
710
|
+
Task({
|
|
711
|
+
subagent_type: "analyst",
|
|
712
|
+
model: "sonnet",
|
|
713
|
+
prompt: "Before/After 중복률 측정: 개선 효과 정량화"
|
|
714
|
+
})
|
|
715
|
+
```
|
|
716
|
+
|
|
717
|
+
### 병렬 실행 시 주의사항
|
|
718
|
+
|
|
719
|
+
```text
|
|
720
|
+
✅ 권장:
|
|
721
|
+
- 독립적인 모듈/파일 → 병렬 실행
|
|
722
|
+
- 분석 작업 (읽기 전용) → 병렬 실행
|
|
723
|
+
- 다중 관점 검증 → 병렬 실행
|
|
724
|
+
- 테스트 + 문서 작성 → 병렬 실행
|
|
725
|
+
- 레거시 + 신규 시스템 공존 → 병렬 실행
|
|
726
|
+
|
|
727
|
+
❌ 금지:
|
|
728
|
+
- 같은 파일 동시 수정 (충돌 발생)
|
|
729
|
+
- 순차 의존성 있는 작업 병렬화 (A → B → C)
|
|
730
|
+
- 공유 상태/컨텍스트 필요한 작업
|
|
731
|
+
- 결과가 다음 작업의 입력인 경우
|
|
732
|
+
```
|
|
733
|
+
|
|
734
|
+
### Model 선택 가이드
|
|
735
|
+
|
|
736
|
+
```typescript
|
|
737
|
+
// ✅ 적절한 모델 선택
|
|
738
|
+
Task({
|
|
739
|
+
subagent_type: "implementation-executor",
|
|
740
|
+
model: "haiku", // 단순 작업: 변수명 변경, 주석 정리
|
|
741
|
+
prompt: "변수명을 camelCase로 통일"
|
|
742
|
+
})
|
|
743
|
+
|
|
744
|
+
Task({
|
|
745
|
+
subagent_type: "refactor-advisor",
|
|
746
|
+
model: "sonnet", // 일반 작업: 함수 분리 계획, 중복 제거
|
|
747
|
+
prompt: "함수 복잡도 감소 계획 수립"
|
|
748
|
+
})
|
|
749
|
+
|
|
750
|
+
Task({
|
|
751
|
+
subagent_type: "architect",
|
|
752
|
+
model: "opus", // 복잡한 작업: 아키텍처 재설계
|
|
753
|
+
prompt: "레이어드 아키텍처 전환 전략 분석"
|
|
754
|
+
})
|
|
755
|
+
|
|
756
|
+
Task({
|
|
757
|
+
subagent_type: "code-reviewer",
|
|
758
|
+
model: "opus", // 품질 검증: 세밀한 검토 필요
|
|
759
|
+
prompt: "리팩토링 후 보안/성능/가독성 종합 검토"
|
|
760
|
+
})
|
|
761
|
+
|
|
762
|
+
// ❌ 잘못된 모델 선택
|
|
763
|
+
Task({
|
|
764
|
+
subagent_type: "architect",
|
|
765
|
+
model: "haiku", // 복잡한 작업에 haiku 사용 금지
|
|
766
|
+
prompt: "아키텍처 재설계..."
|
|
767
|
+
})
|
|
768
|
+
|
|
769
|
+
Task({
|
|
770
|
+
subagent_type: "implementation-executor",
|
|
771
|
+
model: "opus", // 단순 작업에 opus 낭비
|
|
772
|
+
prompt: "변수명 변경..."
|
|
773
|
+
})
|
|
774
|
+
```
|
|
775
|
+
|
|
776
|
+
### 병렬 실행 최적화 팁
|
|
777
|
+
|
|
778
|
+
| 팁 | 설명 | 예시 |
|
|
779
|
+
|----|------|------|
|
|
780
|
+
| **독립성 우선** | 의존성 없는 작업부터 병렬 실행 | 여러 모듈 동시 리팩토링 |
|
|
781
|
+
| **읽기 병렬화** | 분석/탐색 작업은 항상 병렬 | architect + explore + analyst |
|
|
782
|
+
| **쓰기 격리** | 파일 수정은 충돌 없도록 분리 | 각 모듈별로 다른 executor |
|
|
783
|
+
| **검증 병렬화** | 다중 관점 코드 리뷰 동시 실행 | 성능/보안/가독성/유지보수성 |
|
|
784
|
+
| **문서 병렬화** | 리팩토링과 문서 작성 동시 진행 | implementation + document-writer |
|
|
785
|
+
| **모델 적정화** | 복잡도에 맞는 모델 선택 | haiku(단순) / sonnet(일반) / opus(복잡) |
|
|
786
|
+
|
|
787
|
+
</parallel_agent_execution>
|
|
788
|
+
|
|
789
|
+
---
|
|
790
|
+
|
|
791
|
+
<thinking_strategy>
|
|
792
|
+
|
|
793
|
+
## Sequential Thinking 가이드
|
|
794
|
+
|
|
795
|
+
### 복잡도 판단 (thought 1)
|
|
796
|
+
|
|
797
|
+
```
|
|
798
|
+
thought 1: 복잡도 판단
|
|
799
|
+
- 영향 범위: 파일 수, 함수 수
|
|
800
|
+
- 현재 문제: 복잡도, 중복, 명명, 구조
|
|
801
|
+
- 리스크: 기존 기능 영향, 테스트 커버리지
|
|
802
|
+
- 우선순위: High/Medium/Low
|
|
803
|
+
```
|
|
804
|
+
|
|
805
|
+
### 복잡도별 전략
|
|
806
|
+
|
|
807
|
+
| 복잡도 | 사고 횟수 | 판단 기준 | 사고 패턴 |
|
|
808
|
+
|--------|----------|----------|------------|
|
|
809
|
+
| **간단** | 3 | 1-2 파일, 명확한 개선점 | 복잡도 판단 → 현재 분석 → 개선 방안 |
|
|
810
|
+
| **보통** | 5 | 3-5 파일, 구조 변경 | 복잡도 판단 → 현재 분석 → 문제점 → 옵션 비교 → 추천안 |
|
|
811
|
+
| **복잡** | 7+ | 다중 모듈, 점진적 변경 필요 | 복잡도 판단 → 심층 분석 → 우선순위 → 접근 방식 → 비교 → 단계별 계획 → 추천안 |
|
|
812
|
+
|
|
813
|
+
### 보통 복잡도 패턴 (5단계)
|
|
814
|
+
|
|
815
|
+
```
|
|
816
|
+
thought 1: 복잡도 판단 및 분석 범위 결정
|
|
817
|
+
thought 2: 현재 코드 분석 (복잡도, 중복, 구조)
|
|
818
|
+
thought 3: 가능한 개선 방법 열거 (4-5개)
|
|
819
|
+
thought 4: 주요 옵션 3개 선정 및 장단점 분석
|
|
820
|
+
thought 5: 최종 옵션 정리 및 추천안 도출
|
|
821
|
+
```
|
|
822
|
+
|
|
823
|
+
### 복잡한 경우 패턴 (7단계)
|
|
824
|
+
|
|
825
|
+
```
|
|
826
|
+
thought 1: 복잡도 판단
|
|
827
|
+
thought 2: 현재 코드 심층 분석 (메트릭, 패턴)
|
|
828
|
+
thought 3: 개선 우선순위 정리 (High/Medium/Low)
|
|
829
|
+
thought 4: 가능한 접근 방식 탐색
|
|
830
|
+
thought 5: 각 접근 방식 비교 분석
|
|
831
|
+
thought 6: 옵션 3개 선정 및 상세 장단점
|
|
832
|
+
thought 7: 단계별 계획 및 추천안
|
|
833
|
+
```
|
|
834
|
+
|
|
835
|
+
### 핵심 원칙
|
|
836
|
+
|
|
837
|
+
```text
|
|
838
|
+
✅ 사고 과정을 출력해야 실제로 생각이 일어남
|
|
839
|
+
✅ 복잡도가 불확실하면 높게 책정 (5→7로 확장 가능)
|
|
840
|
+
✅ 각 thought에서 구체적 분석 필요 (추상적 설명 금지)
|
|
841
|
+
✅ 필요 시 isRevision으로 이전 사고 수정
|
|
842
|
+
```
|
|
843
|
+
|
|
844
|
+
</thinking_strategy>
|
|
845
|
+
|
|
846
|
+
---
|
|
847
|
+
|
|
848
|
+
<refactoring_areas>
|
|
849
|
+
|
|
850
|
+
## 리팩토링 영역
|
|
851
|
+
|
|
852
|
+
### 6가지 개선 영역
|
|
853
|
+
|
|
854
|
+
| 영역 | 문제 | 개선 방향 |
|
|
855
|
+
|------|------|----------|
|
|
856
|
+
| **복잡도** | 긴 함수, 깊은 중첩 | 함수 분리, Early Return |
|
|
857
|
+
| **중복** | 동일/유사 코드 반복 | 공통 함수/모듈 추출 |
|
|
858
|
+
| **명명** | 모호한 변수/함수명 | 의도 명확한 이름 |
|
|
859
|
+
| **구조** | 파일/모듈 구조 불명확 | 관심사 분리, 계층화 |
|
|
860
|
+
| **패턴** | 안티패턴 사용 | 디자인 패턴 적용 |
|
|
861
|
+
| **타입** | any 남용, 타입 불안정 | 명시적 타입 정의 |
|
|
862
|
+
|
|
863
|
+
### 체크리스트
|
|
864
|
+
|
|
865
|
+
```text
|
|
866
|
+
✅ 함수 길이: 20줄 이하 목표
|
|
867
|
+
✅ 중첩 깊이: 3단계 이하 목표
|
|
868
|
+
✅ 파일 길이: 200-300줄 권장
|
|
869
|
+
✅ 순환 의존성: 제거
|
|
870
|
+
✅ 매직 넘버: 상수화
|
|
871
|
+
✅ 주석: 코드로 설명 불가능한 것만
|
|
872
|
+
```
|
|
873
|
+
|
|
874
|
+
</refactoring_areas>
|
|
875
|
+
|
|
876
|
+
---
|
|
877
|
+
|
|
878
|
+
<option_presentation>
|
|
879
|
+
|
|
880
|
+
## 옵션 제시 형식
|
|
881
|
+
|
|
882
|
+
### 옵션 3개 제시 (표준)
|
|
883
|
+
|
|
884
|
+
```markdown
|
|
885
|
+
## 분석 결과
|
|
886
|
+
|
|
887
|
+
### 현재 상태
|
|
888
|
+
- 문제점 1
|
|
889
|
+
- 문제점 2
|
|
890
|
+
- 개선 필요 영역
|
|
891
|
+
|
|
892
|
+
---
|
|
893
|
+
|
|
894
|
+
### 옵션 1: [옵션 이름] (추천)
|
|
895
|
+
|
|
896
|
+
**개선 방법:**
|
|
897
|
+
- 설명 1
|
|
898
|
+
- 설명 2
|
|
899
|
+
|
|
900
|
+
| 장점 | 단점 |
|
|
901
|
+
|------|------|
|
|
902
|
+
| 장점 1 | 단점 1 |
|
|
903
|
+
| 장점 2 | 단점 2 |
|
|
904
|
+
|
|
905
|
+
**영향 범위:**
|
|
906
|
+
- 파일: `src/module/`
|
|
907
|
+
- 예상 작업량: 중간
|
|
908
|
+
- 리스크: 낮음
|
|
909
|
+
- 테스트 영향: 최소
|
|
910
|
+
|
|
911
|
+
---
|
|
912
|
+
|
|
913
|
+
### 옵션 2: [옵션 이름]
|
|
914
|
+
|
|
915
|
+
**개선 방법:**
|
|
916
|
+
...
|
|
917
|
+
|
|
918
|
+
| 장점 | 단점 |
|
|
919
|
+
|------|------|
|
|
920
|
+
| ... | ... |
|
|
921
|
+
|
|
922
|
+
**영향 범위:**
|
|
923
|
+
...
|
|
924
|
+
|
|
925
|
+
---
|
|
926
|
+
|
|
927
|
+
### 옵션 3: [옵션 이름]
|
|
928
|
+
|
|
929
|
+
**개선 방법:**
|
|
930
|
+
...
|
|
931
|
+
|
|
932
|
+
---
|
|
933
|
+
|
|
934
|
+
## 추천 및 근거
|
|
935
|
+
|
|
936
|
+
옵션 1을 추천합니다.
|
|
937
|
+
- 근거 1
|
|
938
|
+
- 근거 2
|
|
939
|
+
|
|
940
|
+
어떤 옵션을 선택하시겠습니까? (1/2/3)
|
|
941
|
+
```
|
|
942
|
+
|
|
943
|
+
### 옵션 2개 제시 (개선점이 명확한 경우)
|
|
944
|
+
|
|
945
|
+
```markdown
|
|
946
|
+
## 분석 결과
|
|
947
|
+
|
|
948
|
+
두 가지 접근 방식이 있습니다:
|
|
949
|
+
|
|
950
|
+
### 옵션 A: [옵션 이름]
|
|
951
|
+
...
|
|
952
|
+
|
|
953
|
+
### 옵션 B: [옵션 이름]
|
|
954
|
+
...
|
|
955
|
+
|
|
956
|
+
어떤 옵션을 선택하시겠습니까? (A/B)
|
|
957
|
+
```
|
|
958
|
+
|
|
959
|
+
</option_presentation>
|
|
960
|
+
|
|
961
|
+
---
|
|
962
|
+
|
|
963
|
+
<document_generation>
|
|
964
|
+
|
|
965
|
+
## 계획 문서 작성
|
|
966
|
+
|
|
967
|
+
### 문서 작성 질문
|
|
968
|
+
|
|
969
|
+
```
|
|
970
|
+
옵션 [N]을 선택하셨습니다.
|
|
971
|
+
|
|
972
|
+
리팩토링 계획 문서를 작성할까요?
|
|
973
|
+
- Y: .claude/plans/refactor-[이름].md 생성
|
|
974
|
+
- N: 바로 구현 시작
|
|
975
|
+
|
|
976
|
+
선택해주세요. (Y/N)
|
|
977
|
+
```
|
|
978
|
+
|
|
979
|
+
### 리팩토링 계획 문서 템플릿
|
|
980
|
+
|
|
981
|
+
**파일 위치:** `.claude/plans/refactor-[이름].md`
|
|
982
|
+
|
|
983
|
+
```markdown
|
|
984
|
+
# [모듈명] 리팩토링 계획
|
|
985
|
+
|
|
986
|
+
## 개요
|
|
987
|
+
|
|
988
|
+
**목표:** [무엇을 개선할 것인가]
|
|
989
|
+
**선택된 접근 방식:** [옵션 N]
|
|
990
|
+
**예상 영향 범위:** [파일/모듈 목록]
|
|
991
|
+
|
|
992
|
+
## 현재 상태
|
|
993
|
+
|
|
994
|
+
### 문제점
|
|
995
|
+
|
|
996
|
+
| 문제 | 영향 | 우선순위 |
|
|
997
|
+
|------|------|---------|
|
|
998
|
+
| 문제 1 | 설명 | High |
|
|
999
|
+
| 문제 2 | 설명 | Medium |
|
|
1000
|
+
|
|
1001
|
+
### 메트릭
|
|
1002
|
+
|
|
1003
|
+
- 복잡도: [현재 값]
|
|
1004
|
+
- 중복률: [현재 값]
|
|
1005
|
+
- 테스트 커버리지: [현재 값]
|
|
1006
|
+
|
|
1007
|
+
## 개선 단계
|
|
1008
|
+
|
|
1009
|
+
### 1단계: [단계 이름]
|
|
1010
|
+
|
|
1011
|
+
**목표:** [이 단계에서 달성할 것]
|
|
1012
|
+
|
|
1013
|
+
**작업:**
|
|
1014
|
+
- [ ] 작업 1
|
|
1015
|
+
- [ ] 작업 2
|
|
1016
|
+
|
|
1017
|
+
**변경 파일:**
|
|
1018
|
+
- `src/file1.ts`
|
|
1019
|
+
- `src/file2.ts`
|
|
1020
|
+
|
|
1021
|
+
**검증:**
|
|
1022
|
+
- 테스트 통과
|
|
1023
|
+
- 빌드 성공
|
|
1024
|
+
|
|
1025
|
+
### 2단계: [단계 이름]
|
|
1026
|
+
|
|
1027
|
+
**목표:** [이 단계에서 달성할 것]
|
|
1028
|
+
|
|
1029
|
+
**작업:**
|
|
1030
|
+
- [ ] 작업 3
|
|
1031
|
+
|
|
1032
|
+
**변경 파일:**
|
|
1033
|
+
- `src/file3.ts`
|
|
1034
|
+
|
|
1035
|
+
### 3단계: [단계 이름]
|
|
1036
|
+
...
|
|
1037
|
+
|
|
1038
|
+
## 개선 후 기대 효과
|
|
1039
|
+
|
|
1040
|
+
| 메트릭 | Before | After | 개선율 |
|
|
1041
|
+
|--------|--------|-------|--------|
|
|
1042
|
+
| 복잡도 | X | Y | -Z% |
|
|
1043
|
+
| 중복률 | X | Y | -Z% |
|
|
1044
|
+
| 코드 라인 | X | Y | -Z% |
|
|
1045
|
+
|
|
1046
|
+
## 리스크 관리
|
|
1047
|
+
|
|
1048
|
+
### 리스크
|
|
1049
|
+
|
|
1050
|
+
| 리스크 | 영향도 | 완화 방안 |
|
|
1051
|
+
|--------|--------|----------|
|
|
1052
|
+
| 리스크 1 | High | 방안 1 |
|
|
1053
|
+
| 리스크 2 | Medium | 방안 2 |
|
|
1054
|
+
|
|
1055
|
+
### 롤백 계획
|
|
1056
|
+
|
|
1057
|
+
문제 발생 시:
|
|
1058
|
+
1. 단계별 커밋 활용
|
|
1059
|
+
2. 이전 단계로 되돌리기
|
|
1060
|
+
3. 테스트 재실행
|
|
1061
|
+
|
|
1062
|
+
## 검증 방법
|
|
1063
|
+
|
|
1064
|
+
### 기능 검증
|
|
1065
|
+
- [ ] 기존 기능 동작 확인
|
|
1066
|
+
- [ ] 회귀 테스트 통과
|
|
1067
|
+
- [ ] 통합 테스트 통과
|
|
1068
|
+
|
|
1069
|
+
### 품질 검증
|
|
1070
|
+
- [ ] 복잡도 감소 확인
|
|
1071
|
+
- [ ] 중복 제거 확인
|
|
1072
|
+
- [ ] 타입 안정성 확인
|
|
1073
|
+
|
|
1074
|
+
## 참조
|
|
1075
|
+
|
|
1076
|
+
- 관련 문서 링크
|
|
1077
|
+
- 참고 패턴
|
|
1078
|
+
```
|
|
1079
|
+
|
|
1080
|
+
</document_generation>
|
|
1081
|
+
|
|
1082
|
+
---
|
|
1083
|
+
|
|
1084
|
+
<validation>
|
|
1085
|
+
|
|
1086
|
+
## 검증 체크리스트
|
|
1087
|
+
|
|
1088
|
+
실행 전 확인:
|
|
1089
|
+
|
|
1090
|
+
```text
|
|
1091
|
+
✅ ARGUMENT 확인 (없으면 질문)
|
|
1092
|
+
✅ @refactor-advisor 사용 여부 판단
|
|
1093
|
+
✅ Sequential Thinking 최소 3단계
|
|
1094
|
+
✅ Task (Explore)로 코드 분석
|
|
1095
|
+
✅ 옵션 최소 2개, 권장 3개
|
|
1096
|
+
✅ 각 옵션에 장단점 명시
|
|
1097
|
+
✅ 영향 범위 및 예상 작업량 제시
|
|
1098
|
+
✅ 기능 유지 원칙 강조
|
|
1099
|
+
```
|
|
1100
|
+
|
|
1101
|
+
절대 금지:
|
|
1102
|
+
|
|
1103
|
+
```text
|
|
1104
|
+
❌ ARGUMENT 없이 분석 시작
|
|
1105
|
+
❌ Edit 도구 사용 (코드 수정 금지)
|
|
1106
|
+
❌ Sequential Thinking 3단계 미만
|
|
1107
|
+
❌ 옵션 1개만 제시
|
|
1108
|
+
❌ 코드 분석 없이 추측으로 옵션 제시
|
|
1109
|
+
❌ 사용자 선택 없이 구현 시작
|
|
1110
|
+
❌ 기능 변경 포함
|
|
1111
|
+
❌ 장단점 없이 옵션만 나열
|
|
1112
|
+
```
|
|
1113
|
+
|
|
1114
|
+
</validation>
|
|
1115
|
+
|
|
1116
|
+
---
|
|
1117
|
+
|
|
1118
|
+
<examples>
|
|
1119
|
+
|
|
1120
|
+
## 실전 예시
|
|
1121
|
+
|
|
1122
|
+
### 예시 1: 복잡한 함수 분리
|
|
1123
|
+
|
|
1124
|
+
```bash
|
|
1125
|
+
사용자: /refactor src/utils/auth.ts - 너무 복잡함
|
|
1126
|
+
|
|
1127
|
+
1. @refactor-advisor 고려:
|
|
1128
|
+
→ 단일 파일, 복잡도 감소 → Agent 활용 추천
|
|
1129
|
+
|
|
1130
|
+
2. Sequential Thinking (5단계):
|
|
1131
|
+
thought 1: "단일 파일, 함수 복잡도 - 보통 복잡도"
|
|
1132
|
+
thought 2: "auth.ts 분석: 200줄, 5단계 중첩, 여러 책임"
|
|
1133
|
+
thought 3: "접근 방식: 함수 분리, 책임 분리, 타입 개선"
|
|
1134
|
+
thought 4: "옵션 3개 선정 및 장단점"
|
|
1135
|
+
thought 5: "점진적 분리 추천 - 단계적 검증 가능"
|
|
1136
|
+
|
|
1137
|
+
3. 옵션 제시:
|
|
1138
|
+
옵션 1: 점진적 함수 분리 (추천)
|
|
1139
|
+
- 장점: 안전, 단계별 검증
|
|
1140
|
+
- 단점: 시간 소요
|
|
1141
|
+
|
|
1142
|
+
옵션 2: 모듈 분리
|
|
1143
|
+
- 장점: 명확한 구조
|
|
1144
|
+
- 단점: 큰 변경
|
|
1145
|
+
|
|
1146
|
+
옵션 3: 타입 개선 우선
|
|
1147
|
+
- 장점: 빠른 개선
|
|
1148
|
+
- 단점: 근본 해결 아님
|
|
1149
|
+
|
|
1150
|
+
4. 사용자 선택: 1
|
|
1151
|
+
|
|
1152
|
+
5. 문서 작성: Y
|
|
1153
|
+
|
|
1154
|
+
6. .claude/plans/refactor-auth.md 생성
|
|
1155
|
+
```
|
|
1156
|
+
|
|
1157
|
+
### 예시 2: 중복 코드 제거
|
|
1158
|
+
|
|
1159
|
+
```bash
|
|
1160
|
+
사용자: /refactor 여러 파일에 중복 코드가 많음
|
|
1161
|
+
|
|
1162
|
+
1. @refactor-advisor 활용:
|
|
1163
|
+
→ 다중 파일, 중복 분석 → Agent 활용 적합
|
|
1164
|
+
|
|
1165
|
+
2. Sequential Thinking (5단계):
|
|
1166
|
+
thought 1: "다중 파일 중복 - 보통 복잡도"
|
|
1167
|
+
thought 2: "중복 패턴 분석: 3가지 유형"
|
|
1168
|
+
thought 3: "접근: 공통 함수, 유틸리티, 훅 추출"
|
|
1169
|
+
thought 4: "옵션 비교: 점진적 vs 일괄"
|
|
1170
|
+
thought 5: "점진적 추출 추천"
|
|
1171
|
+
|
|
1172
|
+
3. Task 탐색:
|
|
1173
|
+
Task (Explore): "중복 코드 패턴 분석"
|
|
1174
|
+
→ src/components/, src/hooks/ 파악
|
|
1175
|
+
|
|
1176
|
+
4. 옵션:
|
|
1177
|
+
옵션 1: 점진적 공통 함수 추출 (추천)
|
|
1178
|
+
옵션 2: 새 유틸리티 모듈 생성
|
|
1179
|
+
옵션 3: 커스텀 훅 추출
|
|
1180
|
+
|
|
1181
|
+
5. 선택 후 계획 문서 생성
|
|
1182
|
+
```
|
|
1183
|
+
|
|
1184
|
+
### 예시 3: 구조 개선
|
|
1185
|
+
|
|
1186
|
+
```bash
|
|
1187
|
+
사용자: /refactor 프로젝트 구조를 더 명확하게
|
|
1188
|
+
|
|
1189
|
+
1. @refactor-advisor 판단:
|
|
1190
|
+
→ 구조 변경, 다중 모듈 → 직접 처리 (Agent 미사용)
|
|
1191
|
+
|
|
1192
|
+
2. Sequential Thinking (7단계):
|
|
1193
|
+
thought 1: "구조 개선 - 복잡도 높음, 다중 모듈"
|
|
1194
|
+
thought 2: "현재 구조 분석: src/ 내 혼재"
|
|
1195
|
+
thought 3: "요구사항: 관심사 분리, 계층 명확화"
|
|
1196
|
+
thought 4: "접근: 모듈화, 디렉토리 재구성, 경로 정리"
|
|
1197
|
+
thought 5: "각 접근 비교: 영향 범위, 리스크"
|
|
1198
|
+
thought 6: "옵션 3개 선정 및 상세 분석"
|
|
1199
|
+
thought 7: "점진적 재구성 추천 - 단계적 이동"
|
|
1200
|
+
|
|
1201
|
+
3. Task 탐색 (병렬):
|
|
1202
|
+
Task (Explore): "현재 디렉토리 구조 분석"
|
|
1203
|
+
Task (Explore): "모듈 간 의존성 파악"
|
|
1204
|
+
Task (Explore): "import 경로 패턴 분석"
|
|
1205
|
+
|
|
1206
|
+
4. 옵션:
|
|
1207
|
+
옵션 1: 점진적 모듈 분리 (추천)
|
|
1208
|
+
옵션 2: 레이어 기반 재구성
|
|
1209
|
+
옵션 3: 기능별 도메인 분리
|
|
1210
|
+
|
|
1211
|
+
5. 계획 문서 작성 (필수)
|
|
1212
|
+
```
|
|
1213
|
+
|
|
1214
|
+
</examples>
|