@kood/claude-code 0.6.0 → 0.6.2
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/instructions/agent-patterns/delegation-patterns.md +389 -0
- package/templates/.claude/instructions/context-optimization/phase-based-execution.md +410 -0
- package/templates/.claude/instructions/context-optimization/redundant-exploration-prevention.md +646 -0
- package/templates/.claude/instructions/context-optimization/sub-agent-distribution.md +476 -0
- package/templates/.claude/instructions/glossary.md +48 -0
- package/templates/.claude/instructions/project-context-template.md +453 -0
- package/templates/.claude/instructions/skill-integration.md +90 -0
- package/templates/.claude/instructions/sourcing/reliable-search.md +411 -0
- package/templates/.claude/instructions/validation/forbidden-patterns.md +47 -0
- package/templates/.claude/instructions/validation/required-behaviors.md +120 -0
- package/templates/.claude/instructions/validation/scope-completeness.md +367 -0
- package/templates/.claude/instructions/workflow-patterns/todowrite-pattern.md +2 -0
- package/templates/.claude/skills/brainstorm/SKILL.md +110 -644
- package/templates/.claude/skills/bug-fix/SKILL.md +9 -137
- package/templates/.claude/skills/docs-fetch/CLAUDE.md +3 -0
- package/templates/.claude/skills/docs-fetch/SKILL.md +458 -0
- package/templates/.claude/skills/elon-musk/CLAUDE.md +3 -0
- package/templates/.claude/skills/elon-musk/SKILL.md +367 -0
- package/templates/.claude/skills/execute/SKILL.md +18 -397
- package/templates/.claude/skills/plan/SKILL.md +12 -986
- package/templates/.claude/skills/prd/SKILL.md +225 -586
- package/templates/.claude/skills/prd/references/ai-native-prd.md +116 -0
- package/templates/.claude/skills/prd/references/anti-patterns.md +82 -0
- package/templates/.claude/skills/prd/references/frameworks.md +216 -0
- package/templates/.claude/skills/prd/references/pm-leaders.md +106 -0
- package/templates/.claude/skills/prd/references/trends-2026.md +157 -0
- package/templates/.claude/skills/ralph/SKILL.md +15 -497
- package/templates/.claude/skills/refactor/SKILL.md +11 -655
- package/templates/.claude/skills/research/SKILL.md +257 -0
- package/templates/.claude/skills/research/report-template.md +88 -0
package/templates/.claude/instructions/context-optimization/redundant-exploration-prevention.md
ADDED
|
@@ -0,0 +1,646 @@
|
|
|
1
|
+
# Redundant Exploration Prevention (중복 탐색 방지)
|
|
2
|
+
|
|
3
|
+
**목적**: Claude Code 세션에서 중복 파일 탐색을 방지하여 컨텍스트 윈도우 절약 및 Rate Limiting 회피
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
<problem>
|
|
8
|
+
|
|
9
|
+
## 문제점 (Usage Report 분석 기반)
|
|
10
|
+
|
|
11
|
+
### 주요 이슈
|
|
12
|
+
|
|
13
|
+
**"Redundant codebase exploration is your biggest tax"**
|
|
14
|
+
|
|
15
|
+
- Claude가 이미 분석한 파일을 반복적으로 재탐색
|
|
16
|
+
- 컨텍스트 윈도우가 불필요하게 소모
|
|
17
|
+
- Rate Limiting 8건의 주요 원인
|
|
18
|
+
|
|
19
|
+
### 중복 탐색의 영향
|
|
20
|
+
|
|
21
|
+
| 영향 | 내용 | 손실 규모 |
|
|
22
|
+
|------|------|----------|
|
|
23
|
+
| **토큰 낭비** | 같은 파일 3-5회 읽기 | 컨텍스트 30-50% 소모 |
|
|
24
|
+
| **시간 낭비** | 탐색 루프에 빠짐 | 작업 시간 2-3배 증가 |
|
|
25
|
+
| **Rate Limiting** | 과도한 Tool 호출 | 세션 중단 위험 |
|
|
26
|
+
| **컨텍스트 압박** | 유용한 정보 밀려남 | Context compaction 조기 발생 |
|
|
27
|
+
|
|
28
|
+
### 패턴 예시
|
|
29
|
+
|
|
30
|
+
```typescript
|
|
31
|
+
// ❌ 중복 탐색 패턴
|
|
32
|
+
Read("src/auth.ts") // 1회
|
|
33
|
+
// ... 작업 ...
|
|
34
|
+
Read("src/auth.ts") // 2회 (변경 없음)
|
|
35
|
+
// ... 작업 ...
|
|
36
|
+
Read("src/auth.ts") // 3회 (변경 없음)
|
|
37
|
+
Glob("src/**/*.ts") // 이미 탐색한 디렉토리
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
</problem>
|
|
41
|
+
|
|
42
|
+
---
|
|
43
|
+
|
|
44
|
+
<core_rules>
|
|
45
|
+
|
|
46
|
+
## 핵심 규칙
|
|
47
|
+
|
|
48
|
+
### 1. 중복 읽기 금지
|
|
49
|
+
|
|
50
|
+
**같은 파일을 2회 이상 Read 금지 (변경 후 재확인 제외)**
|
|
51
|
+
|
|
52
|
+
```typescript
|
|
53
|
+
// ✅ 허용: 수정 후 재확인
|
|
54
|
+
Read("src/auth.ts") // 1회: 내용 파악
|
|
55
|
+
Edit(...) // 수정
|
|
56
|
+
Read("src/auth.ts") // 2회: 변경 확인 (허용)
|
|
57
|
+
|
|
58
|
+
// ❌ 금지: 변경 없이 재읽기
|
|
59
|
+
Read("src/auth.ts") // 1회
|
|
60
|
+
// ... 다른 작업 ...
|
|
61
|
+
Read("src/auth.ts") // 2회: 변경 없이 재읽기 (금지)
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
### 2. 중복 탐색 금지
|
|
65
|
+
|
|
66
|
+
**이미 실행한 Glob/Grep 패턴 재실행 금지**
|
|
67
|
+
|
|
68
|
+
```typescript
|
|
69
|
+
// ❌ 금지: 같은 패턴 반복
|
|
70
|
+
Glob({ pattern: "**/*.ts" }) // 1회
|
|
71
|
+
// ... 작업 ...
|
|
72
|
+
Glob({ pattern: "**/*.ts" }) // 2회 (금지)
|
|
73
|
+
|
|
74
|
+
// ✅ 허용: 다른 목적의 탐색
|
|
75
|
+
Glob({ pattern: "**/*.ts" }) // 전체 파일
|
|
76
|
+
Glob({ pattern: "**/auth/*.ts" }) // 특정 디렉토리 (허용)
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### 3. 탐색 전 체크리스트
|
|
80
|
+
|
|
81
|
+
**탐색 Tool 실행 전 반드시 확인**
|
|
82
|
+
|
|
83
|
+
- [ ] 이 파일을 이미 읽었는가?
|
|
84
|
+
- [ ] 이 디렉토리를 이미 탐색했는가?
|
|
85
|
+
- [ ] 파일이 수정되었는가? (Edit/Write 후)
|
|
86
|
+
- [ ] 정말 새로운 정보가 필요한가?
|
|
87
|
+
|
|
88
|
+
### 4. 탐색 루프 즉시 중단
|
|
89
|
+
|
|
90
|
+
**3회 이상 같은 파일 읽기 시도 시 즉시 중단**
|
|
91
|
+
|
|
92
|
+
```typescript
|
|
93
|
+
// 탐색 루프 감지 시:
|
|
94
|
+
1. 즉시 중단
|
|
95
|
+
2. 이미 읽은 내용 기반으로 다음 단계 진행
|
|
96
|
+
3. 추가 정보 필요 시 explore 에이전트에 위임
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
</core_rules>
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
<context_saving_patterns>
|
|
104
|
+
|
|
105
|
+
## 컨텍스트 절약 패턴
|
|
106
|
+
|
|
107
|
+
### 패턴 1: 탐색 결과 압축
|
|
108
|
+
|
|
109
|
+
**탐색 즉시 핵심 정보만 추출하여 요약**
|
|
110
|
+
|
|
111
|
+
```typescript
|
|
112
|
+
// ✅ 올바른 흐름
|
|
113
|
+
Task(subagent_type="explore", model="haiku",
|
|
114
|
+
prompt="[quick] src/auth 디렉토리 구조 확인")
|
|
115
|
+
// → 결과 즉시 요약
|
|
116
|
+
// "인증: middleware 1개(auth.ts), functions 2개(login.ts, logout.ts), 총 3개 파일"
|
|
117
|
+
|
|
118
|
+
// ❌ 금지: 요약 없이 추가 탐색
|
|
119
|
+
Task(subagent_type="explore", ...) // 탐색 1
|
|
120
|
+
Task(subagent_type="explore", ...) // 요약 없이 탐색 2
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
### 패턴 2: 관련 파일 그룹 탐색
|
|
124
|
+
|
|
125
|
+
**개별 탐색 대신 한 번에 그룹으로 탐색**
|
|
126
|
+
|
|
127
|
+
```typescript
|
|
128
|
+
// ✅ 올바름: 그룹 탐색
|
|
129
|
+
Read("src/auth/middleware.ts")
|
|
130
|
+
Read("src/auth/functions.ts")
|
|
131
|
+
Read("src/auth/types.ts")
|
|
132
|
+
// → 3개 파일을 병렬로 한 번에 읽기
|
|
133
|
+
|
|
134
|
+
// ❌ 금지: 개별 순차 탐색
|
|
135
|
+
Read("src/auth/middleware.ts")
|
|
136
|
+
// 분석...
|
|
137
|
+
Read("src/auth/functions.ts")
|
|
138
|
+
// 분석...
|
|
139
|
+
Read("src/auth/types.ts")
|
|
140
|
+
// 분석...
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### 패턴 3: 요약 기록 활용
|
|
144
|
+
|
|
145
|
+
**핵심 분석 결과를 NOTES.md 또는 문서에 기록**
|
|
146
|
+
|
|
147
|
+
```markdown
|
|
148
|
+
# NOTES.md
|
|
149
|
+
|
|
150
|
+
## 프로젝트 구조 요약 (2026-02-06 14:30)
|
|
151
|
+
|
|
152
|
+
### 인증 모듈
|
|
153
|
+
- 위치: `src/auth/`
|
|
154
|
+
- 파일: middleware.ts (인증 체크), login.ts (로그인), logout.ts (로그아웃)
|
|
155
|
+
- 의존성: Prisma User 모델, TanStack Session
|
|
156
|
+
|
|
157
|
+
### API 라우트
|
|
158
|
+
- 위치: `src/routes/api/`
|
|
159
|
+
- 파일: 15개 (users, posts, comments 등)
|
|
160
|
+
- 패턴: createServerFn + inputValidator + middleware
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
**요약 기록 후 재탐색 불필요 → 기록 참조**
|
|
164
|
+
|
|
165
|
+
### 패턴 4: 파일 인벤토리 사전 생성
|
|
166
|
+
|
|
167
|
+
**복잡한 작업 시작 전 TaskCreate로 대상 파일 목록 등록**
|
|
168
|
+
|
|
169
|
+
```typescript
|
|
170
|
+
// ✅ 올바름: 인벤토리 먼저 생성
|
|
171
|
+
Glob({ pattern: "src/**/*.ts" })
|
|
172
|
+
// → 결과: 50개 파일
|
|
173
|
+
TaskCreate({
|
|
174
|
+
subject: "프로젝트 파일 인벤토리",
|
|
175
|
+
description: `
|
|
176
|
+
- src/auth/: 3개
|
|
177
|
+
- src/routes/: 15개
|
|
178
|
+
- src/components/: 25개
|
|
179
|
+
- src/utils/: 7개
|
|
180
|
+
총 50개 파일
|
|
181
|
+
`
|
|
182
|
+
})
|
|
183
|
+
|
|
184
|
+
// → 이후 작업에서 인벤토리 참조 (재탐색 불필요)
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
</context_saving_patterns>
|
|
188
|
+
|
|
189
|
+
---
|
|
190
|
+
|
|
191
|
+
<forbidden_patterns>
|
|
192
|
+
|
|
193
|
+
## 금지 패턴
|
|
194
|
+
|
|
195
|
+
### ❌ 금지 1: 같은 파일 여러 번 Read
|
|
196
|
+
|
|
197
|
+
**동일 파일을 변경 없이 2회 이상 읽기**
|
|
198
|
+
|
|
199
|
+
```typescript
|
|
200
|
+
// ❌ 금지
|
|
201
|
+
Read("src/auth.ts") // 1회
|
|
202
|
+
// ... 작업 ...
|
|
203
|
+
Read("src/auth.ts") // 2회: 변경 없이 재읽기
|
|
204
|
+
|
|
205
|
+
// ✅ 올바름: 1회 읽기 → 기억 활용
|
|
206
|
+
Read("src/auth.ts") // 1회
|
|
207
|
+
// → 내용 기억 → 다음 단계 진행
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
### ❌ 금지 2: 결과 확인 없이 같은 Glob 재실행
|
|
211
|
+
|
|
212
|
+
**이미 실행한 Glob 패턴을 결과 확인 없이 재실행**
|
|
213
|
+
|
|
214
|
+
```typescript
|
|
215
|
+
// ❌ 금지
|
|
216
|
+
Glob({ pattern: "**/*.md" }) // 1회
|
|
217
|
+
// → 결과 무시...
|
|
218
|
+
Glob({ pattern: "**/*.md" }) // 2회: 같은 패턴 재실행
|
|
219
|
+
|
|
220
|
+
// ✅ 올바름: 결과 활용
|
|
221
|
+
Glob({ pattern: "**/*.md" }) // 1회
|
|
222
|
+
// → 결과: 20개 파일 확인 → 활용
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
### ❌ 금지 3: 이미 분석한 파일 재분석 요청
|
|
226
|
+
|
|
227
|
+
**explore 에이전트에 이미 분석한 파일 재분석 요청**
|
|
228
|
+
|
|
229
|
+
```typescript
|
|
230
|
+
// ❌ 금지
|
|
231
|
+
Task(subagent_type="explore", model="haiku",
|
|
232
|
+
prompt="src/auth/ 분석") // 1회
|
|
233
|
+
Task(subagent_type="explore", model="haiku",
|
|
234
|
+
prompt="src/auth/ 분석") // 2회: 같은 요청
|
|
235
|
+
|
|
236
|
+
// ✅ 올바름: 1회 분석 → 다음 단계
|
|
237
|
+
Task(subagent_type="explore", model="haiku",
|
|
238
|
+
prompt="src/auth/ 분석") // 1회
|
|
239
|
+
// → 결과 요약 → 구현 시작
|
|
240
|
+
```
|
|
241
|
+
|
|
242
|
+
### ❌ 금지 4: 탐색 루프
|
|
243
|
+
|
|
244
|
+
**같은 영역을 3회 이상 반복 탐색**
|
|
245
|
+
|
|
246
|
+
```typescript
|
|
247
|
+
// ❌ 금지: 탐색 루프
|
|
248
|
+
Grep({ pattern: "createServerFn", path: "src/" }) // 1회
|
|
249
|
+
// ... 작업 ...
|
|
250
|
+
Grep({ pattern: "createServerFn", path: "src/" }) // 2회
|
|
251
|
+
// ... 작업 ...
|
|
252
|
+
Grep({ pattern: "createServerFn", path: "src/" }) // 3회 → 루프!
|
|
253
|
+
|
|
254
|
+
// ✅ 올바름: 1회 탐색 → 결과 활용
|
|
255
|
+
Grep({ pattern: "createServerFn", path: "src/" }) // 1회
|
|
256
|
+
// → 결과: 15개 발견 → 작업 진행
|
|
257
|
+
```
|
|
258
|
+
|
|
259
|
+
### ❌ 금지 5: 광범위한 탐색 반복
|
|
260
|
+
|
|
261
|
+
**전체 코드베이스 스캔을 여러 번 반복**
|
|
262
|
+
|
|
263
|
+
```typescript
|
|
264
|
+
// ❌ 금지
|
|
265
|
+
Glob({ pattern: "**/*" }) // 전체 스캔 1회
|
|
266
|
+
// ... 작업 ...
|
|
267
|
+
Glob({ pattern: "**/*.ts" }) // 전체 스캔 2회 (중복)
|
|
268
|
+
// ... 작업 ...
|
|
269
|
+
Glob({ pattern: "src/**/*" }) // 전체 스캔 3회 (중복)
|
|
270
|
+
|
|
271
|
+
// ✅ 올바름: 1회 스캔 → 필터링
|
|
272
|
+
Glob({ pattern: "**/*.ts" }) // 1회: 전체 TypeScript 파일
|
|
273
|
+
// → 결과 필터링 활용 (재스캔 불필요)
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
</forbidden_patterns>
|
|
277
|
+
|
|
278
|
+
---
|
|
279
|
+
|
|
280
|
+
<allowed_patterns>
|
|
281
|
+
|
|
282
|
+
## 허용 패턴
|
|
283
|
+
|
|
284
|
+
### ✅ 허용 1: 파일 수정 후 변경 내용 확인
|
|
285
|
+
|
|
286
|
+
**Edit/Write 후 변경 사항 검증**
|
|
287
|
+
|
|
288
|
+
```typescript
|
|
289
|
+
// ✅ 허용: 수정 후 재확인
|
|
290
|
+
Read("src/auth.ts") // 1회: 내용 파악
|
|
291
|
+
Edit({
|
|
292
|
+
file_path: "src/auth.ts",
|
|
293
|
+
old_string: "...",
|
|
294
|
+
new_string: "..."
|
|
295
|
+
})
|
|
296
|
+
Read("src/auth.ts") // 2회: 변경 확인 (허용)
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
### ✅ 허용 2: 명시적으로 다른 정보 필요 시
|
|
300
|
+
|
|
301
|
+
**새로운 관점이나 다른 정보를 찾기 위한 탐색**
|
|
302
|
+
|
|
303
|
+
```typescript
|
|
304
|
+
// ✅ 허용: 다른 목적의 탐색
|
|
305
|
+
Grep({ pattern: "function", path: "src/auth.ts" }) // 함수 탐색
|
|
306
|
+
Grep({ pattern: "import", path: "src/auth.ts" }) // 의존성 탐색 (허용)
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
### ✅ 허용 3: Context compaction 후 복구 시
|
|
310
|
+
|
|
311
|
+
**컨텍스트 압축 후 필요한 파일 재로드**
|
|
312
|
+
|
|
313
|
+
```typescript
|
|
314
|
+
// ✅ 허용: Context compaction 후
|
|
315
|
+
// → Context compaction 발생
|
|
316
|
+
Read("TASKS.md") // 재로드 (허용)
|
|
317
|
+
Read("PROCESS.md") // 재로드 (허용)
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
### ✅ 허용 4: 전체 작업 완료 후 검증
|
|
321
|
+
|
|
322
|
+
**"모든 X" 작업 완료 후 누락 확인**
|
|
323
|
+
|
|
324
|
+
```typescript
|
|
325
|
+
// ✅ 허용: 완료 후 재스캔 (검증)
|
|
326
|
+
Glob({ pattern: "**/SKILL.md" }) // 1회: 전체 대상 확인
|
|
327
|
+
// ... 모든 파일 수정 ...
|
|
328
|
+
Glob({ pattern: "**/SKILL.md" }) // 2회: 검증 재스캔 (허용)
|
|
329
|
+
Grep({ pattern: "TodoWrite", glob: "**/SKILL.md" }) // 누락 확인 (허용)
|
|
330
|
+
```
|
|
331
|
+
|
|
332
|
+
### ✅ 허용 5: 에이전트 위임 후 결과 확인
|
|
333
|
+
|
|
334
|
+
**에이전트가 작업한 파일 확인**
|
|
335
|
+
|
|
336
|
+
```typescript
|
|
337
|
+
// ✅ 허용: 에이전트 작업 후 확인
|
|
338
|
+
Read("src/feature.ts") // 1회: 현재 상태
|
|
339
|
+
Task(subagent_type="implementation-executor", ...) // 에이전트 작업
|
|
340
|
+
Read("src/feature.ts") // 2회: 에이전트 작업 결과 확인 (허용)
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
</allowed_patterns>
|
|
344
|
+
|
|
345
|
+
---
|
|
346
|
+
|
|
347
|
+
<exploration_checklist>
|
|
348
|
+
|
|
349
|
+
## 탐색 전 체크리스트
|
|
350
|
+
|
|
351
|
+
### Read 실행 전
|
|
352
|
+
|
|
353
|
+
```text
|
|
354
|
+
✓ 이 파일을 이미 읽었는가?
|
|
355
|
+
→ YES: 기억 활용 (재읽기 금지)
|
|
356
|
+
→ NO: Read 실행
|
|
357
|
+
|
|
358
|
+
✓ 파일이 수정되었는가?
|
|
359
|
+
→ YES: 변경 확인 Read 허용
|
|
360
|
+
→ NO: 기억 활용
|
|
361
|
+
|
|
362
|
+
✓ 정말 새로운 정보가 필요한가?
|
|
363
|
+
→ YES: Read 실행
|
|
364
|
+
→ NO: 기억 활용
|
|
365
|
+
```
|
|
366
|
+
|
|
367
|
+
### Glob 실행 전
|
|
368
|
+
|
|
369
|
+
```text
|
|
370
|
+
✓ 이 패턴을 이미 실행했는가?
|
|
371
|
+
→ YES: 결과 재활용 (재실행 금지)
|
|
372
|
+
→ NO: Glob 실행
|
|
373
|
+
|
|
374
|
+
✓ 더 구체적인 패턴으로 필터링 가능한가?
|
|
375
|
+
→ YES: 메모리 결과 필터링
|
|
376
|
+
→ NO: Glob 실행
|
|
377
|
+
|
|
378
|
+
✓ explore 에이전트에 위임 가능한가?
|
|
379
|
+
→ YES: Task 위임
|
|
380
|
+
→ NO: Glob 실행
|
|
381
|
+
```
|
|
382
|
+
|
|
383
|
+
### Grep 실행 전
|
|
384
|
+
|
|
385
|
+
```text
|
|
386
|
+
✓ 같은 패턴을 이미 검색했는가?
|
|
387
|
+
→ YES: 결과 재활용 (재검색 금지)
|
|
388
|
+
→ NO: Grep 실행
|
|
389
|
+
|
|
390
|
+
✓ 이전 검색 결과를 다시 필터링 가능한가?
|
|
391
|
+
→ YES: 메모리 결과 활용
|
|
392
|
+
→ NO: Grep 실행
|
|
393
|
+
|
|
394
|
+
✓ 정말 다른 정보를 찾는가?
|
|
395
|
+
→ YES: Grep 실행
|
|
396
|
+
→ NO: 기억 활용
|
|
397
|
+
```
|
|
398
|
+
|
|
399
|
+
### Explore 에이전트 호출 전
|
|
400
|
+
|
|
401
|
+
```text
|
|
402
|
+
✓ 같은 영역을 이미 분석했는가?
|
|
403
|
+
→ YES: 이전 결과 활용 (재분석 금지)
|
|
404
|
+
→ NO: Task 실행
|
|
405
|
+
|
|
406
|
+
✓ 이전 분석 요약이 있는가?
|
|
407
|
+
→ YES: 요약 참조
|
|
408
|
+
→ NO: Task 실행 + 요약 생성
|
|
409
|
+
|
|
410
|
+
✓ thoroughness 레벨이 적절한가?
|
|
411
|
+
→ quick: 간단 확인
|
|
412
|
+
→ thorough: 상세 분석
|
|
413
|
+
→ very thorough: 완전 분석
|
|
414
|
+
```
|
|
415
|
+
|
|
416
|
+
</exploration_checklist>
|
|
417
|
+
|
|
418
|
+
---
|
|
419
|
+
|
|
420
|
+
<recovery_strategies>
|
|
421
|
+
|
|
422
|
+
## 탐색 루프 복구 전략
|
|
423
|
+
|
|
424
|
+
### 탐색 루프 감지 시
|
|
425
|
+
|
|
426
|
+
**같은 파일/패턴 3회 이상 접근 시 즉시 중단**
|
|
427
|
+
|
|
428
|
+
```typescript
|
|
429
|
+
// 감지: Read("src/auth.ts") 3회 호출
|
|
430
|
+
|
|
431
|
+
// 복구 단계:
|
|
432
|
+
1. 즉시 중단
|
|
433
|
+
2. 이미 읽은 내용 기억 활용
|
|
434
|
+
3. 추가 정보 필요 시 explore 에이전트 위임
|
|
435
|
+
4. 요약 생성 → NOTES.md 기록
|
|
436
|
+
```
|
|
437
|
+
|
|
438
|
+
### 복구 프로세스
|
|
439
|
+
|
|
440
|
+
```text
|
|
441
|
+
Phase 1: 중단
|
|
442
|
+
✓ 탐색 Tool 호출 중단
|
|
443
|
+
✓ 현재까지 수집한 정보 정리
|
|
444
|
+
|
|
445
|
+
Phase 2: 분석
|
|
446
|
+
✓ 왜 재탐색이 필요했는가?
|
|
447
|
+
✓ 정보가 부족한가? → 다른 접근 필요
|
|
448
|
+
✓ 정보는 충분한가? → 다음 단계 진행
|
|
449
|
+
|
|
450
|
+
Phase 3: 대안 선택
|
|
451
|
+
✓ 기억 활용: 이미 읽은 내용으로 진행
|
|
452
|
+
✓ 에이전트 위임: explore 에이전트에 맡김
|
|
453
|
+
✓ 요약 참조: NOTES.md 또는 문서 확인
|
|
454
|
+
|
|
455
|
+
Phase 4: 문서화
|
|
456
|
+
✓ 요약 생성: 핵심 정보 압축
|
|
457
|
+
✓ NOTES.md 기록: 향후 참조용
|
|
458
|
+
✓ TaskCreate: 파일 인벤토리 등록
|
|
459
|
+
```
|
|
460
|
+
|
|
461
|
+
### 복구 예시
|
|
462
|
+
|
|
463
|
+
```typescript
|
|
464
|
+
// ❌ 탐색 루프 발생
|
|
465
|
+
Read("src/auth.ts") // 1회
|
|
466
|
+
Read("src/auth.ts") // 2회
|
|
467
|
+
Read("src/auth.ts") // 3회 → 감지!
|
|
468
|
+
|
|
469
|
+
// ✅ 복구 프로세스
|
|
470
|
+
// 1. 즉시 중단
|
|
471
|
+
// 2. 기억 활용
|
|
472
|
+
// "src/auth.ts: authMiddleware 함수, checkAuth 함수, Session 타입"
|
|
473
|
+
// 3. 다음 단계 진행
|
|
474
|
+
// Edit({ file_path: "src/auth.ts", ... })
|
|
475
|
+
// 4. 요약 기록
|
|
476
|
+
Write(".claude/NOTES.md", `
|
|
477
|
+
## 인증 모듈 (src/auth.ts)
|
|
478
|
+
- authMiddleware: 세션 검증 미들웨어
|
|
479
|
+
- checkAuth: 인증 상태 확인 함수
|
|
480
|
+
- Session 타입: userId, role 포함
|
|
481
|
+
`)
|
|
482
|
+
```
|
|
483
|
+
|
|
484
|
+
</recovery_strategies>
|
|
485
|
+
|
|
486
|
+
---
|
|
487
|
+
|
|
488
|
+
<monitoring>
|
|
489
|
+
|
|
490
|
+
## 모니터링 및 추적
|
|
491
|
+
|
|
492
|
+
### 탐색 횟수 추적
|
|
493
|
+
|
|
494
|
+
**세션 내 Tool 호출 패턴 모니터링**
|
|
495
|
+
|
|
496
|
+
```markdown
|
|
497
|
+
# 탐색 통계 (세션 내)
|
|
498
|
+
|
|
499
|
+
## Read 호출
|
|
500
|
+
- src/auth.ts: 2회 (수정 후 재확인 1회 포함)
|
|
501
|
+
- src/routes/index.tsx: 1회
|
|
502
|
+
- TASKS.md: 3회 (Context compaction 후 재로드 2회)
|
|
503
|
+
|
|
504
|
+
## Glob 호출
|
|
505
|
+
- **/*.ts: 1회 (50개 발견)
|
|
506
|
+
- **/SKILL.md: 2회 (전체 작업 후 검증 1회 포함)
|
|
507
|
+
|
|
508
|
+
## Grep 호출
|
|
509
|
+
- "createServerFn": 1회 (15개 발견)
|
|
510
|
+
- "TodoWrite": 1회 (0개 발견 - 완료 확인)
|
|
511
|
+
|
|
512
|
+
## 경고
|
|
513
|
+
⚠️ 없음
|
|
514
|
+
```
|
|
515
|
+
|
|
516
|
+
### 탐색 효율성 지표
|
|
517
|
+
|
|
518
|
+
| 지표 | 목표 | 현재 | 상태 |
|
|
519
|
+
|------|------|------|------|
|
|
520
|
+
| **Read 중복률** | < 10% | 8% | ✅ 우수 |
|
|
521
|
+
| **Glob 재실행** | 0-1회 | 1회 | ✅ 정상 |
|
|
522
|
+
| **탐색 루프** | 0회 | 0회 | ✅ 정상 |
|
|
523
|
+
| **토큰 절약** | 30%+ | 42% | ✅ 목표 초과 |
|
|
524
|
+
|
|
525
|
+
</monitoring>
|
|
526
|
+
|
|
527
|
+
---
|
|
528
|
+
|
|
529
|
+
<best_practices>
|
|
530
|
+
|
|
531
|
+
## 모범 사례
|
|
532
|
+
|
|
533
|
+
### 1. 탐색 결과 즉시 요약
|
|
534
|
+
|
|
535
|
+
```typescript
|
|
536
|
+
// ✅ 모범 사례
|
|
537
|
+
Task(subagent_type="explore", model="haiku",
|
|
538
|
+
prompt="[quick] src/routes/ 디렉토리 구조 확인")
|
|
539
|
+
// → 즉시 요약
|
|
540
|
+
// "15개 라우트, 패턴 확인: createServerFn + inputValidator"
|
|
541
|
+
// → 재탐색 불필요
|
|
542
|
+
```
|
|
543
|
+
|
|
544
|
+
### 2. 파일 인벤토리 사전 생성
|
|
545
|
+
|
|
546
|
+
```typescript
|
|
547
|
+
// ✅ 모범 사례
|
|
548
|
+
Glob({ pattern: "src/**/*.ts" })
|
|
549
|
+
TaskCreate({
|
|
550
|
+
subject: "프로젝트 파일 목록",
|
|
551
|
+
description: "50개 TypeScript 파일 (auth 3, routes 15, components 25, utils 7)"
|
|
552
|
+
})
|
|
553
|
+
// → 이후 작업에서 인벤토리 참조
|
|
554
|
+
```
|
|
555
|
+
|
|
556
|
+
### 3. 요약 문서화
|
|
557
|
+
|
|
558
|
+
```markdown
|
|
559
|
+
# NOTES.md
|
|
560
|
+
|
|
561
|
+
## 프로젝트 구조 (2026-02-06)
|
|
562
|
+
- src/auth/: 인증 (3개 파일)
|
|
563
|
+
- src/routes/: API 라우트 (15개)
|
|
564
|
+
- src/components/: UI 컴포넌트 (25개)
|
|
565
|
+
|
|
566
|
+
## 패턴
|
|
567
|
+
- Server Function: createServerFn + inputValidator + middleware
|
|
568
|
+
- 클라이언트: TanStack Query (useQuery/useMutation)
|
|
569
|
+
```
|
|
570
|
+
|
|
571
|
+
### 4. 병렬 그룹 탐색
|
|
572
|
+
|
|
573
|
+
```typescript
|
|
574
|
+
// ✅ 모범 사례: 관련 파일 한 번에
|
|
575
|
+
Read("src/auth/middleware.ts")
|
|
576
|
+
Read("src/auth/functions.ts")
|
|
577
|
+
Read("src/auth/types.ts")
|
|
578
|
+
// → 3개 파일 병렬 읽기 (개별 순차 읽기 대신)
|
|
579
|
+
```
|
|
580
|
+
|
|
581
|
+
### 5. 에이전트 위임 활용
|
|
582
|
+
|
|
583
|
+
```typescript
|
|
584
|
+
// ✅ 모범 사례: 복잡한 탐색 위임
|
|
585
|
+
Task(subagent_type="explore", model="haiku",
|
|
586
|
+
prompt="[thorough] 인증 관련 모든 파일 및 의존성 완전 분석")
|
|
587
|
+
// → 에이전트가 탐색 + 요약 제공
|
|
588
|
+
// → 재탐색 불필요
|
|
589
|
+
```
|
|
590
|
+
|
|
591
|
+
</best_practices>
|
|
592
|
+
|
|
593
|
+
---
|
|
594
|
+
|
|
595
|
+
<summary>
|
|
596
|
+
|
|
597
|
+
## 핵심 요약
|
|
598
|
+
|
|
599
|
+
### 3가지 원칙
|
|
600
|
+
|
|
601
|
+
| 원칙 | 내용 | 효과 |
|
|
602
|
+
|------|------|------|
|
|
603
|
+
| **1회 탐색** | 같은 파일/패턴 1회만 탐색 | 토큰 30-50% 절약 |
|
|
604
|
+
| **즉시 요약** | 탐색 결과 즉시 압축 | 재탐색 불필요 |
|
|
605
|
+
| **루프 중단** | 3회 이상 접근 시 즉시 중단 | Rate Limiting 회피 |
|
|
606
|
+
|
|
607
|
+
### 허용/금지 요약
|
|
608
|
+
|
|
609
|
+
#### ✅ 허용
|
|
610
|
+
|
|
611
|
+
- 파일 수정 후 변경 내용 확인
|
|
612
|
+
- 명시적으로 다른 정보 필요 시
|
|
613
|
+
- Context compaction 후 복구
|
|
614
|
+
- 전체 작업 완료 후 검증
|
|
615
|
+
- 에이전트 작업 후 결과 확인
|
|
616
|
+
|
|
617
|
+
#### ❌ 금지
|
|
618
|
+
|
|
619
|
+
- 같은 파일 여러 번 Read (변경 없이)
|
|
620
|
+
- 결과 확인 없이 같은 Glob 재실행
|
|
621
|
+
- 이미 분석한 파일 재분석 요청
|
|
622
|
+
- 같은 영역 3회 이상 반복 탐색
|
|
623
|
+
- 광범위한 전체 스캔 반복
|
|
624
|
+
|
|
625
|
+
### 탐색 전 필수 체크
|
|
626
|
+
|
|
627
|
+
```text
|
|
628
|
+
1. 이미 읽었는가? → YES: 기억 활용 / NO: Read
|
|
629
|
+
2. 수정되었는가? → YES: 재확인 / NO: 기억 활용
|
|
630
|
+
3. 새 정보 필요? → YES: 탐색 / NO: 다음 단계
|
|
631
|
+
```
|
|
632
|
+
|
|
633
|
+
### 복구 전략
|
|
634
|
+
|
|
635
|
+
```text
|
|
636
|
+
탐색 루프 감지 → 즉시 중단 → 기억 활용 → 에이전트 위임 → 요약 기록
|
|
637
|
+
```
|
|
638
|
+
|
|
639
|
+
### 효과
|
|
640
|
+
|
|
641
|
+
- **토큰 절약:** 30-50%
|
|
642
|
+
- **시간 단축:** 2-3배 빠른 작업
|
|
643
|
+
- **Rate Limiting 회피:** 8건 → 0건
|
|
644
|
+
- **컨텍스트 효율:** Context compaction 지연
|
|
645
|
+
|
|
646
|
+
</summary>
|