@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
|
@@ -0,0 +1,367 @@
|
|
|
1
|
+
# Scope Completeness (범위 완전성)
|
|
2
|
+
|
|
3
|
+
**목적**: 벌크 변경 작업 시 scope 누락 방지, 보수적 스코핑 금지
|
|
4
|
+
|
|
5
|
+
## 문제 분석
|
|
6
|
+
|
|
7
|
+
**Usage Report 반복 패턴:**
|
|
8
|
+
- "Incomplete Scope on First Pass" (다수 발생)
|
|
9
|
+
- "Claude initially only changed the layout-level background and scoped changes conservatively"
|
|
10
|
+
- "PRD and other skills were missed in the initial refactoring pass"
|
|
11
|
+
- "Requests sometimes leave scope implicit, leading to conservative first passes"
|
|
12
|
+
|
|
13
|
+
**핵심 원인**: 보수적 스코핑 → 레이아웃만 수정 → 컴포넌트/스킬 누락 → 재작업
|
|
14
|
+
|
|
15
|
+
## 1. Comprehensive Scan 원칙
|
|
16
|
+
|
|
17
|
+
### 금지: 보수적 스코핑
|
|
18
|
+
|
|
19
|
+
```typescript
|
|
20
|
+
// ❌ 금지: 레이아웃만 변경
|
|
21
|
+
Edit({ file_path: "app/routes/__root.tsx", ... }) // 레이아웃만
|
|
22
|
+
// → 컴포넌트, 페이지, 모달 누락!
|
|
23
|
+
|
|
24
|
+
// ❌ 금지: 일부 스킬만 수정
|
|
25
|
+
Edit({ file_path: ".claude/skills/plan/SKILL.md", ... })
|
|
26
|
+
Edit({ file_path: ".claude/skills/ralph/SKILL.md", ... })
|
|
27
|
+
// → 나머지 15개 스킬 누락!
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
### 필수: 전체 범위 탐색
|
|
31
|
+
|
|
32
|
+
```typescript
|
|
33
|
+
// ✅ 필수: 전체 관련 파일 스캔
|
|
34
|
+
Glob({ pattern: "**/*.tsx" }) // 레이아웃 + 페이지 + 컴포넌트
|
|
35
|
+
Glob({ pattern: "**/SKILL.md" }) // 모든 스킬
|
|
36
|
+
Glob({ pattern: "**/*.css" }) // 스타일 파일
|
|
37
|
+
|
|
38
|
+
// ✅ 필수: 중첩 파일 포함
|
|
39
|
+
Glob({ pattern: "app/components/**/*.tsx" }) // 중첩 컴포넌트
|
|
40
|
+
Glob({ pattern: "app/routes/**/*.tsx" }) // 중첩 라우트
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## 2. 타겟 디렉토리 명시적 확인
|
|
44
|
+
|
|
45
|
+
### 작업 전 영향 범위 확인
|
|
46
|
+
|
|
47
|
+
**"모든 X 변경" 요청 시 반드시 목록 작성 후 사용자 확인**
|
|
48
|
+
|
|
49
|
+
```markdown
|
|
50
|
+
✅ 올바른 흐름:
|
|
51
|
+
|
|
52
|
+
1. Glob/Grep으로 전체 대상 확인
|
|
53
|
+
→ 결과: 레이아웃 1개, 페이지 5개, 컴포넌트 12개, 모달 3개
|
|
54
|
+
|
|
55
|
+
2. 사용자에게 범위 확인 요청:
|
|
56
|
+
"다음 파일들을 수정합니다:
|
|
57
|
+
- app/routes/__root.tsx (레이아웃)
|
|
58
|
+
- app/routes/*.tsx (5개 페이지)
|
|
59
|
+
- app/components/*.tsx (12개 컴포넌트)
|
|
60
|
+
- app/components/modals/*.tsx (3개 모달)
|
|
61
|
+
진행할까요?"
|
|
62
|
+
|
|
63
|
+
3. 승인 후 전체 작업 진행
|
|
64
|
+
|
|
65
|
+
❌ 금지:
|
|
66
|
+
1. Glob 없이 추측으로 범위 결정
|
|
67
|
+
2. 레이아웃만 수정하고 "완료" 선언
|
|
68
|
+
3. 암묵적 범위 가정 ("이 정도면 충분할 것")
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### 추가 디렉토리 발견 시 즉시 포함
|
|
72
|
+
|
|
73
|
+
```typescript
|
|
74
|
+
// ✅ 필수: 예상 외 파일 발견 시 즉시 추가
|
|
75
|
+
Glob({ pattern: "**/*.tsx" })
|
|
76
|
+
// → 예상: 10개, 실제: 15개 (모달 5개 추가 발견)
|
|
77
|
+
// → 즉시 15개 모두 작업 범위에 포함
|
|
78
|
+
|
|
79
|
+
// ❌ 금지: 예상 범위만 처리하고 추가 파일 무시
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## 3. 벌크 변경 체크리스트
|
|
83
|
+
|
|
84
|
+
작업 시작 전:
|
|
85
|
+
|
|
86
|
+
- [ ] 모든 관련 디렉토리 Glob/Grep 확인?
|
|
87
|
+
- [ ] 레이아웃 파일뿐 아니라 페이지 파일도 포함?
|
|
88
|
+
- [ ] 컴포넌트 파일도 포함?
|
|
89
|
+
- [ ] 중첩된 하위 컴포넌트 확인?
|
|
90
|
+
- [ ] 공유 컴포넌트/유틸리티 확인?
|
|
91
|
+
- [ ] 스타일 관련 변경 시 테마/변수 파일도 확인?
|
|
92
|
+
- [ ] 전체 대상 목록 사용자에게 확인?
|
|
93
|
+
|
|
94
|
+
작업 중:
|
|
95
|
+
|
|
96
|
+
- [ ] 발견된 모든 파일 TaskCreate 등록?
|
|
97
|
+
- [ ] 각 파일 수정 후 TaskUpdate 체크?
|
|
98
|
+
- [ ] 새 파일 발견 시 즉시 범위 추가?
|
|
99
|
+
|
|
100
|
+
작업 후:
|
|
101
|
+
|
|
102
|
+
- [ ] 재스캔으로 누락 항목 0개 확인?
|
|
103
|
+
- [ ] Grep으로 이전 패턴 잔존 여부 확인?
|
|
104
|
+
|
|
105
|
+
## 4. 금지 패턴
|
|
106
|
+
|
|
107
|
+
### 금지 1: 추측 기반 범위 결정
|
|
108
|
+
|
|
109
|
+
```markdown
|
|
110
|
+
❌ "이 정도면 충분할 것"
|
|
111
|
+
❌ "레이아웃만 수정하면 되겠지"
|
|
112
|
+
❌ "나머지는 영향 없을 것 같아"
|
|
113
|
+
|
|
114
|
+
✅ Glob/Grep으로 전체 목록 확인 후 결정
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
### 금지 2: 레이아웃만 변경
|
|
118
|
+
|
|
119
|
+
```typescript
|
|
120
|
+
// ❌ 금지: 레이아웃만 수정
|
|
121
|
+
Edit({ file_path: "app/routes/__root.tsx", ... })
|
|
122
|
+
<promise>DONE</promise>
|
|
123
|
+
|
|
124
|
+
// ✅ 올바름: 레이아웃 + 페이지 + 컴포넌트
|
|
125
|
+
Glob({ pattern: "app/**/*.tsx" })
|
|
126
|
+
// → 20개 파일 발견
|
|
127
|
+
TaskCreate({ subject: "파일 1/20 수정", ... })
|
|
128
|
+
TaskCreate({ subject: "파일 2/20 수정", ... })
|
|
129
|
+
// ... 20개 모두 작업
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
### 금지 3: 일부 스킬만 수정
|
|
133
|
+
|
|
134
|
+
```typescript
|
|
135
|
+
// ❌ 금지: 일부 스킬만
|
|
136
|
+
Edit({ file_path: ".claude/skills/plan/SKILL.md", ... })
|
|
137
|
+
Edit({ file_path: ".claude/skills/ralph/SKILL.md", ... })
|
|
138
|
+
// → 나머지 스킬 누락!
|
|
139
|
+
|
|
140
|
+
// ✅ 올바름: 모든 스킬
|
|
141
|
+
Glob({ pattern: "**/*SKILL.md" })
|
|
142
|
+
// → 19개 파일 발견
|
|
143
|
+
TaskCreate({ subject: "19개 SKILL.md 수정", ... })
|
|
144
|
+
// → 19개 모두 처리
|
|
145
|
+
Grep({ pattern: "이전패턴", glob: "**/SKILL.md" }) // 재스캔 확인
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
### 금지 4: 요청보다 좁은 범위 적용
|
|
149
|
+
|
|
150
|
+
```markdown
|
|
151
|
+
사용자: "모든 배경을 dark로 변경"
|
|
152
|
+
|
|
153
|
+
❌ 금지:
|
|
154
|
+
- 레이아웃만 변경
|
|
155
|
+
- 페이지 일부만 변경
|
|
156
|
+
- 컴포넌트 무시
|
|
157
|
+
|
|
158
|
+
✅ 올바름:
|
|
159
|
+
1. Glob: 레이아웃 + 페이지 + 컴포넌트 + 모달
|
|
160
|
+
2. 사용자 확인: "25개 파일 수정 예정"
|
|
161
|
+
3. 전체 작업
|
|
162
|
+
4. 재스캔: 누락 0개 확인
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
## 5. 권장 패턴
|
|
166
|
+
|
|
167
|
+
### 패턴 1: Glob 먼저 실행
|
|
168
|
+
|
|
169
|
+
```typescript
|
|
170
|
+
// ✅ 필수: 작업 전 전체 목록 확인
|
|
171
|
+
Glob({ pattern: "**/*.tsx" })
|
|
172
|
+
Glob({ pattern: "**/*.css" })
|
|
173
|
+
Glob({ pattern: "**/theme*.ts" })
|
|
174
|
+
|
|
175
|
+
// → 전체 범위 파악 후 작업 시작
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
### 패턴 2: 범위 목록 작성 후 사용자 확인
|
|
179
|
+
|
|
180
|
+
```markdown
|
|
181
|
+
✅ 올바른 흐름:
|
|
182
|
+
|
|
183
|
+
1. Glob 실행
|
|
184
|
+
→ 레이아웃: 1개
|
|
185
|
+
→ 페이지: 7개
|
|
186
|
+
→ 컴포넌트: 15개
|
|
187
|
+
→ 모달: 4개
|
|
188
|
+
|
|
189
|
+
2. 사용자 확인:
|
|
190
|
+
"총 27개 파일을 수정합니다. 진행할까요?"
|
|
191
|
+
|
|
192
|
+
3. 승인 후 작업
|
|
193
|
+
|
|
194
|
+
❌ 금지:
|
|
195
|
+
- Glob 없이 즉시 작업 시작
|
|
196
|
+
- 범위 확인 없이 일부만 수정
|
|
197
|
+
```
|
|
198
|
+
|
|
199
|
+
### 패턴 3: "포함하지 않을 이유가 있나요?" 자문
|
|
200
|
+
|
|
201
|
+
```markdown
|
|
202
|
+
발견된 파일: app/components/dropdown.tsx
|
|
203
|
+
|
|
204
|
+
자문: "이 파일을 포함하지 않을 이유가 있나요?"
|
|
205
|
+
|
|
206
|
+
✅ 이유 없음 → 포함
|
|
207
|
+
❌ "아마 영향 없을 것" → 추측 금지, 포함
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
### 패턴 4: Over-include > Under-include
|
|
211
|
+
|
|
212
|
+
```markdown
|
|
213
|
+
원칙: 의심되면 포함
|
|
214
|
+
|
|
215
|
+
✅ 관련 가능성 50% → 포함
|
|
216
|
+
✅ 영향 불확실 → 포함 후 사용자 확인
|
|
217
|
+
❌ "아마 괜찮을 것" → 제외 금지
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
## 6. 스킬/문서 작업 시 추가 규칙
|
|
221
|
+
|
|
222
|
+
### 규칙 1: 유사 스킬 모두 확인
|
|
223
|
+
|
|
224
|
+
```typescript
|
|
225
|
+
// 사용자: "plan 스킬에서 TodoWrite를 TaskCreate로 변경"
|
|
226
|
+
|
|
227
|
+
// ❌ 금지: plan만 수정
|
|
228
|
+
Edit({ file_path: ".claude/skills/plan/SKILL.md", ... })
|
|
229
|
+
|
|
230
|
+
// ✅ 올바름: 모든 스킬 확인
|
|
231
|
+
Grep({ pattern: "TodoWrite", glob: "**/SKILL.md" })
|
|
232
|
+
// → 19개 파일에서 발견
|
|
233
|
+
TaskCreate({ subject: "19개 파일 수정", ... })
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
### 규칙 2: 공통 규칙 참조하는 모든 파일 확인
|
|
237
|
+
|
|
238
|
+
```typescript
|
|
239
|
+
// 사용자: "forbidden-patterns.md에서 규칙 수정"
|
|
240
|
+
|
|
241
|
+
// ✅ 필수: 참조하는 파일 모두 확인
|
|
242
|
+
Grep({ pattern: "@.*forbidden-patterns.md", output_mode: "files_with_matches" })
|
|
243
|
+
// → SKILL.md, CLAUDE.md 등 발견
|
|
244
|
+
// → 영향 받는 파일 모두 검토
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
### 규칙 3: 한 스킬 수정 시 관련 스킬 영향도 검토
|
|
248
|
+
|
|
249
|
+
```markdown
|
|
250
|
+
수정 대상: ralph/SKILL.md
|
|
251
|
+
|
|
252
|
+
관련 스킬:
|
|
253
|
+
- plan/SKILL.md (작업 계획)
|
|
254
|
+
- execute/SKILL.md (작업 실행)
|
|
255
|
+
- bug-fix/SKILL.md (버그 수정)
|
|
256
|
+
|
|
257
|
+
✅ 모두 검토 후 일관성 확인
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
## 7. 색상/스타일 변경 시 특별 규칙
|
|
261
|
+
|
|
262
|
+
### 탐색 계층
|
|
263
|
+
|
|
264
|
+
```markdown
|
|
265
|
+
레벨 1: 레이아웃
|
|
266
|
+
- app/routes/__root.tsx
|
|
267
|
+
|
|
268
|
+
레벨 2: 페이지
|
|
269
|
+
- app/routes/index.tsx
|
|
270
|
+
- app/routes/about.tsx
|
|
271
|
+
- ...
|
|
272
|
+
|
|
273
|
+
레벨 3: 컴포넌트
|
|
274
|
+
- app/components/header.tsx
|
|
275
|
+
- app/components/footer.tsx
|
|
276
|
+
- ...
|
|
277
|
+
|
|
278
|
+
레벨 4: 모달
|
|
279
|
+
- app/components/modals/*.tsx
|
|
280
|
+
|
|
281
|
+
레벨 5: 드롭다운/팝업
|
|
282
|
+
- app/components/dropdown.tsx
|
|
283
|
+
- app/components/popup.tsx
|
|
284
|
+
|
|
285
|
+
레벨 6: 공유 컴포넌트
|
|
286
|
+
- shared/components/*.tsx
|
|
287
|
+
|
|
288
|
+
레벨 7: 스타일 시스템
|
|
289
|
+
- theme.ts
|
|
290
|
+
- tailwind.config.ts
|
|
291
|
+
- globals.css
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
### 필수 확인 항목
|
|
295
|
+
|
|
296
|
+
```typescript
|
|
297
|
+
// ✅ 필수: 모든 레벨 확인
|
|
298
|
+
Glob({ pattern: "app/routes/__root.tsx" }) // 레벨 1
|
|
299
|
+
Glob({ pattern: "app/routes/*.tsx" }) // 레벨 2
|
|
300
|
+
Glob({ pattern: "app/components/*.tsx" }) // 레벨 3
|
|
301
|
+
Glob({ pattern: "app/components/modals/*.tsx" }) // 레벨 4
|
|
302
|
+
Glob({ pattern: "app/components/dropdown.tsx" }) // 레벨 5
|
|
303
|
+
Glob({ pattern: "shared/components/*.tsx" }) // 레벨 6
|
|
304
|
+
Glob({ pattern: "**/theme.ts" }) // 레벨 7
|
|
305
|
+
Glob({ pattern: "**/tailwind.config.*" }) // 레벨 7
|
|
306
|
+
Glob({ pattern: "**/*.css" }) // 레벨 7
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
### 스타일 변경 체크리스트
|
|
310
|
+
|
|
311
|
+
- [ ] 레이아웃 파일?
|
|
312
|
+
- [ ] 페이지 파일?
|
|
313
|
+
- [ ] 컴포넌트 파일?
|
|
314
|
+
- [ ] 모달 파일?
|
|
315
|
+
- [ ] 드롭다운/팝업 파일?
|
|
316
|
+
- [ ] 공유 컴포넌트?
|
|
317
|
+
- [ ] 테마 파일?
|
|
318
|
+
- [ ] Tailwind config?
|
|
319
|
+
- [ ] CSS 변수 파일?
|
|
320
|
+
- [ ] globals.css?
|
|
321
|
+
|
|
322
|
+
## 8. 범위 완전성 검증
|
|
323
|
+
|
|
324
|
+
### 작업 완료 후 필수 검증
|
|
325
|
+
|
|
326
|
+
```typescript
|
|
327
|
+
// ✅ 필수: 재스캔으로 누락 확인
|
|
328
|
+
// 1. 전체 파일 재스캔
|
|
329
|
+
Glob({ pattern: "**/*.tsx" })
|
|
330
|
+
// → 초기: 27개, 현재: 27개 (일치 확인)
|
|
331
|
+
|
|
332
|
+
// 2. 이전 패턴 잔존 확인
|
|
333
|
+
Grep({ pattern: "이전패턴", output_mode: "count" })
|
|
334
|
+
// → 결과: 0개 (완전 제거 확인)
|
|
335
|
+
|
|
336
|
+
// 3. 새 패턴 적용 확인
|
|
337
|
+
Grep({ pattern: "새패턴", output_mode: "count" })
|
|
338
|
+
// → 결과: 27개 (모두 적용 확인)
|
|
339
|
+
```
|
|
340
|
+
|
|
341
|
+
### 검증 실패 시 처리
|
|
342
|
+
|
|
343
|
+
```markdown
|
|
344
|
+
재스캔 결과: 누락 3개 발견
|
|
345
|
+
|
|
346
|
+
✅ 올바른 처리:
|
|
347
|
+
1. 누락 파일 즉시 목록화
|
|
348
|
+
2. TaskCreate로 등록
|
|
349
|
+
3. 수정 완료 후 재검증
|
|
350
|
+
4. 누락 0개 확인 후 완료
|
|
351
|
+
|
|
352
|
+
❌ 금지:
|
|
353
|
+
- "대부분 완료" 선언
|
|
354
|
+
- "나머지는 중요하지 않음" 추측
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
## 종합 원칙
|
|
358
|
+
|
|
359
|
+
| 원칙 | 적용 |
|
|
360
|
+
|------|------|
|
|
361
|
+
| **Comprehensive Scan** | 레이아웃 + 페이지 + 컴포넌트 + 모달 모두 |
|
|
362
|
+
| **Explicit Confirmation** | 범위 목록 작성 후 사용자 확인 |
|
|
363
|
+
| **Over-include** | 의심되면 포함 (Under-include 금지) |
|
|
364
|
+
| **No Guessing** | 추측 기반 범위 결정 금지 |
|
|
365
|
+
| **Full Verification** | 재스캔으로 누락 0개 확인 |
|
|
366
|
+
|
|
367
|
+
**보수적 스코핑 금지 → 완전한 범위 적용 → 재작업 제거**
|