@kood/claude-code 0.3.3 → 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
CHANGED
|
@@ -409,7 +409,7 @@ var init = async (options) => {
|
|
|
409
409
|
|
|
410
410
|
// src/index.ts
|
|
411
411
|
var program = new Command();
|
|
412
|
-
program.name("claude-code").description("Claude Code documentation installer for projects").version("0.3.
|
|
412
|
+
program.name("claude-code").description("Claude Code documentation installer for projects").version("0.3.4");
|
|
413
413
|
program.option(
|
|
414
414
|
"-t, --template <names>",
|
|
415
415
|
"template names (comma-separated: tanstack-start,hono)"
|
package/package.json
CHANGED
|
@@ -0,0 +1,406 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: 버그 원인 분석 및 수정. sequential thinking 3-5 + Task (Explore) 필수.
|
|
3
|
+
allowed-tools: Read, Grep, Glob, Task, Edit, Bash(npm:*, yarn:*), mcp__sequential-thinking__sequentialthinking
|
|
4
|
+
argument-hint: <버그 설명 또는 에러 메시지>
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Bug Fix 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
|
+
- 예상 동작 vs 실제 동작
|
|
27
|
+
- 재현 방법
|
|
28
|
+
- 관련 파일 경로"
|
|
29
|
+
|
|
30
|
+
$ARGUMENTS 있음 → 다음 단계 진행
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
</argument_validation>
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
<workflow>
|
|
38
|
+
|
|
39
|
+
## 실행 흐름
|
|
40
|
+
|
|
41
|
+
| 단계 | 작업 | 도구 |
|
|
42
|
+
|------|------|------|
|
|
43
|
+
| 1. 입력 확인 | ARGUMENT 검증, 없으면 질문 | - |
|
|
44
|
+
| 2. 복잡도 판단 | Sequential Thinking으로 분석 범위 결정 | sequentialthinking (1단계) |
|
|
45
|
+
| 3. 버그 재현 | 에러 재현, 관련 파일 파악 | Read/Grep/Glob |
|
|
46
|
+
| 4. 원인 분석 | Task (Explore)로 관련 코드 탐색 | Task (Explore) |
|
|
47
|
+
| 5. 옵션 도출 | 수정 방법 2-3개 도출 | sequentialthinking (2-4단계) |
|
|
48
|
+
| 6. 옵션 제시 | 장단점, 영향 범위 제시 | - |
|
|
49
|
+
| 7. 사용자 선택 | 수정 방법 선택 대기 | - |
|
|
50
|
+
| 8. 구현 | 선택된 방법으로 코드 수정 | Edit |
|
|
51
|
+
| 9. 검증 | 테스트 실행, 빌드 확인 | Bash |
|
|
52
|
+
|
|
53
|
+
</workflow>
|
|
54
|
+
|
|
55
|
+
---
|
|
56
|
+
|
|
57
|
+
<thinking_strategy>
|
|
58
|
+
|
|
59
|
+
## Sequential Thinking 가이드
|
|
60
|
+
|
|
61
|
+
### 복잡도 판단 (thought 1)
|
|
62
|
+
|
|
63
|
+
```
|
|
64
|
+
thought 1: 복잡도 판단
|
|
65
|
+
- 에러 유형: syntax/runtime/logic/type
|
|
66
|
+
- 영향 범위: 단일 파일 vs 다중 파일
|
|
67
|
+
- 의존성: 외부 라이브러리, API 연동
|
|
68
|
+
- 재현 가능성: 항상 발생 vs 간헐적
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
### 복잡도별 전략
|
|
72
|
+
|
|
73
|
+
| 복잡도 | 사고 횟수 | 판단 기준 | 사고 패턴 |
|
|
74
|
+
|--------|----------|----------|------------|
|
|
75
|
+
| **간단** | 3 | 명확한 에러, 1-2 파일 | 복잡도 판단 → 원인 분석 → 수정 방법 |
|
|
76
|
+
| **보통** | 5 | 논리 오류, 3-5 파일 | 복잡도 판단 → 재현 → 원인 분석 → 옵션 비교 → 추천안 |
|
|
77
|
+
| **복잡** | 7+ | 간헐적 오류, 다중 모듈 | 복잡도 판단 → 재현 시도 → 심층 분석 → 옵션 탐색 → 비교 → 추천안 |
|
|
78
|
+
|
|
79
|
+
### 보통 복잡도 패턴 (5단계)
|
|
80
|
+
|
|
81
|
+
```
|
|
82
|
+
thought 1: 복잡도 판단 및 분석 범위
|
|
83
|
+
thought 2: 버그 재현 및 에러 메시지 분석
|
|
84
|
+
thought 3: 관련 코드 탐색 및 원인 파악
|
|
85
|
+
thought 4: 수정 방법 2-3개 비교 분석
|
|
86
|
+
thought 5: 최종 추천안 및 근거
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### 핵심 원칙
|
|
90
|
+
|
|
91
|
+
```text
|
|
92
|
+
✅ 사고 과정을 출력해야 실제로 생각이 일어남
|
|
93
|
+
✅ 복잡도가 불확실하면 높게 책정 (3→5로 확장 가능)
|
|
94
|
+
✅ 각 thought에서 구체적 분석 필요 (추상적 설명 금지)
|
|
95
|
+
✅ 필요 시 isRevision으로 이전 사고 수정
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
</thinking_strategy>
|
|
99
|
+
|
|
100
|
+
---
|
|
101
|
+
|
|
102
|
+
<exploration>
|
|
103
|
+
|
|
104
|
+
## Task (Explore) 활용
|
|
105
|
+
|
|
106
|
+
### 탐색 전략
|
|
107
|
+
|
|
108
|
+
| 버그 유형 | 탐색 대상 | prompt 예시 |
|
|
109
|
+
|----------|----------|-------------|
|
|
110
|
+
| **타입 에러** | 타입 정의, 사용처 | "타입 X 정의 위치 및 사용 파일 탐색" |
|
|
111
|
+
| **런타임 에러** | 함수 호출 체인 | "함수 Y 호출 경로 및 관련 파일" |
|
|
112
|
+
| **논리 오류** | 상태 관리, 데이터 흐름 | "상태 Z 변경 위치 및 영향 범위" |
|
|
113
|
+
| **API 에러** | 엔드포인트, 요청/응답 | "API /path 관련 코드 구조" |
|
|
114
|
+
|
|
115
|
+
### Task 호출 패턴
|
|
116
|
+
|
|
117
|
+
**단일 탐색:**
|
|
118
|
+
|
|
119
|
+
```typescript
|
|
120
|
+
Task({
|
|
121
|
+
subagent_type: 'Explore',
|
|
122
|
+
description: '에러 관련 코드 탐색',
|
|
123
|
+
prompt: `
|
|
124
|
+
에러 발생 관련 코드 구조 파악:
|
|
125
|
+
- 에러가 발생하는 정확한 위치
|
|
126
|
+
- 관련 함수/컴포넌트
|
|
127
|
+
- 의존하는 모듈/라이브러리
|
|
128
|
+
- 최근 수정 이력 (git blame)
|
|
129
|
+
`
|
|
130
|
+
})
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
**병렬 탐색 (복잡한 경우):**
|
|
134
|
+
|
|
135
|
+
```typescript
|
|
136
|
+
// 단일 메시지에 다중 Task 호출
|
|
137
|
+
Task({
|
|
138
|
+
subagent_type: 'Explore',
|
|
139
|
+
prompt: '프론트엔드 에러 발생 컴포넌트 분석'
|
|
140
|
+
})
|
|
141
|
+
|
|
142
|
+
Task({
|
|
143
|
+
subagent_type: 'Explore',
|
|
144
|
+
prompt: '백엔드 API 엔드포인트 분석'
|
|
145
|
+
})
|
|
146
|
+
|
|
147
|
+
Task({
|
|
148
|
+
subagent_type: 'Explore',
|
|
149
|
+
prompt: '타입 정의 및 인터페이스 분석'
|
|
150
|
+
})
|
|
151
|
+
|
|
152
|
+
// → 결과 취합 후 원인 파악
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
### 탐색 체크리스트
|
|
156
|
+
|
|
157
|
+
```text
|
|
158
|
+
✅ 에러 발생 정확한 위치
|
|
159
|
+
✅ 관련 함수/클래스/컴포넌트
|
|
160
|
+
✅ 데이터 흐름 및 상태 변경
|
|
161
|
+
✅ 외부 의존성 (라이브러리, API)
|
|
162
|
+
✅ 최근 변경 사항 (git log/blame)
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
</exploration>
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
<option_presentation>
|
|
170
|
+
|
|
171
|
+
## 옵션 제시 형식
|
|
172
|
+
|
|
173
|
+
### 옵션 2-3개 제시
|
|
174
|
+
|
|
175
|
+
```markdown
|
|
176
|
+
## 버그 분석 결과
|
|
177
|
+
|
|
178
|
+
**원인:** [원인 설명]
|
|
179
|
+
|
|
180
|
+
**영향 범위:** [파일 및 모듈 목록]
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
### 옵션 1: [수정 방법] (추천)
|
|
185
|
+
|
|
186
|
+
**수정 내용:**
|
|
187
|
+
- 변경 사항 1
|
|
188
|
+
- 변경 사항 2
|
|
189
|
+
|
|
190
|
+
| 장점 | 단점 |
|
|
191
|
+
|------|------|
|
|
192
|
+
| 장점 1 | 단점 1 |
|
|
193
|
+
| 장점 2 | 단점 2 |
|
|
194
|
+
|
|
195
|
+
**수정 파일:**
|
|
196
|
+
- `src/file1.ts:line`
|
|
197
|
+
- `src/file2.ts:line`
|
|
198
|
+
|
|
199
|
+
**리스크:** 낮음
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
203
|
+
### 옵션 2: [수정 방법]
|
|
204
|
+
|
|
205
|
+
**수정 내용:**
|
|
206
|
+
...
|
|
207
|
+
|
|
208
|
+
| 장점 | 단점 |
|
|
209
|
+
|------|------|
|
|
210
|
+
| ... | ... |
|
|
211
|
+
|
|
212
|
+
**수정 파일:**
|
|
213
|
+
...
|
|
214
|
+
|
|
215
|
+
**리스크:** 중간
|
|
216
|
+
|
|
217
|
+
---
|
|
218
|
+
|
|
219
|
+
### 옵션 3: [수정 방법] (임시 해결)
|
|
220
|
+
|
|
221
|
+
**수정 내용:**
|
|
222
|
+
...
|
|
223
|
+
|
|
224
|
+
**리스크:** 높음 (근본 해결 아님)
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
## 추천 및 근거
|
|
229
|
+
|
|
230
|
+
옵션 1을 추천합니다.
|
|
231
|
+
- 근거 1
|
|
232
|
+
- 근거 2
|
|
233
|
+
|
|
234
|
+
어떤 옵션으로 수정하시겠습니까? (1/2/3)
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
</option_presentation>
|
|
238
|
+
|
|
239
|
+
---
|
|
240
|
+
|
|
241
|
+
<implementation>
|
|
242
|
+
|
|
243
|
+
## 구현 가이드
|
|
244
|
+
|
|
245
|
+
### 수정 단계
|
|
246
|
+
|
|
247
|
+
```
|
|
248
|
+
1. 사용자 옵션 선택 대기
|
|
249
|
+
2. Edit 도구로 코드 수정
|
|
250
|
+
3. 수정 내용 설명
|
|
251
|
+
4. 테스트/빌드 실행 (선택)
|
|
252
|
+
5. 결과 확인
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
### 수정 후 검증
|
|
256
|
+
|
|
257
|
+
```bash
|
|
258
|
+
# 타입 체크
|
|
259
|
+
npm run typecheck
|
|
260
|
+
# 또는
|
|
261
|
+
tsc --noEmit
|
|
262
|
+
|
|
263
|
+
# 테스트 실행
|
|
264
|
+
npm test
|
|
265
|
+
# 또는
|
|
266
|
+
npm test -- <관련 테스트 파일>
|
|
267
|
+
|
|
268
|
+
# 빌드 확인
|
|
269
|
+
npm run build
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
### 검증 체크리스트
|
|
273
|
+
|
|
274
|
+
```text
|
|
275
|
+
✅ 에러 해결 확인
|
|
276
|
+
✅ 기존 기능 영향 없음
|
|
277
|
+
✅ 타입 에러 없음
|
|
278
|
+
✅ 테스트 통과
|
|
279
|
+
✅ 빌드 성공
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
</implementation>
|
|
283
|
+
|
|
284
|
+
---
|
|
285
|
+
|
|
286
|
+
<validation>
|
|
287
|
+
|
|
288
|
+
## 검증 체크리스트
|
|
289
|
+
|
|
290
|
+
실행 전 확인:
|
|
291
|
+
|
|
292
|
+
```text
|
|
293
|
+
✅ ARGUMENT 확인 (없으면 질문)
|
|
294
|
+
✅ Sequential Thinking 최소 3단계
|
|
295
|
+
✅ Task (Explore)로 코드 탐색
|
|
296
|
+
✅ 원인 분석 명확히
|
|
297
|
+
✅ 옵션 최소 2개, 권장 3개
|
|
298
|
+
✅ 각 옵션에 장단점 명시
|
|
299
|
+
✅ 수정 파일 위치 명시 (line 포함)
|
|
300
|
+
```
|
|
301
|
+
|
|
302
|
+
절대 금지:
|
|
303
|
+
|
|
304
|
+
```text
|
|
305
|
+
❌ ARGUMENT 없이 분석 시작
|
|
306
|
+
❌ Sequential Thinking 3단계 미만
|
|
307
|
+
❌ 코드 탐색 없이 추측으로 수정
|
|
308
|
+
❌ 옵션 1개만 제시
|
|
309
|
+
❌ 사용자 선택 없이 수정 시작
|
|
310
|
+
❌ 수정 후 검증 생략
|
|
311
|
+
❌ 장단점 없이 수정 방법만 나열
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
</validation>
|
|
315
|
+
|
|
316
|
+
---
|
|
317
|
+
|
|
318
|
+
<examples>
|
|
319
|
+
|
|
320
|
+
## 실전 예시
|
|
321
|
+
|
|
322
|
+
### 예시 1: 타입 에러
|
|
323
|
+
|
|
324
|
+
```bash
|
|
325
|
+
사용자: /bug-fix Property 'name' does not exist on type 'User'
|
|
326
|
+
|
|
327
|
+
1. Sequential Thinking (3단계):
|
|
328
|
+
thought 1: "타입 에러 - 간단, User 타입 정의 확인"
|
|
329
|
+
thought 2: "User 타입 및 사용처 탐색 필요"
|
|
330
|
+
thought 3: "옵션 2개: 타입 정의 수정 vs 사용처 수정"
|
|
331
|
+
|
|
332
|
+
2. Task 탐색:
|
|
333
|
+
Task (Explore): "User 타입 정의 위치 및 사용 파일 탐색"
|
|
334
|
+
→ src/types/user.ts, src/components/UserProfile.tsx 파악
|
|
335
|
+
|
|
336
|
+
3. 원인 분석:
|
|
337
|
+
User 타입에 name 속성 누락
|
|
338
|
+
|
|
339
|
+
4. 옵션 제시:
|
|
340
|
+
옵션 1: User 타입에 name 속성 추가 (추천)
|
|
341
|
+
- 장점: 근본 해결
|
|
342
|
+
- 단점: 없음
|
|
343
|
+
|
|
344
|
+
옵션 2: 사용처에서 name 제거
|
|
345
|
+
- 장점: 빠른 수정
|
|
346
|
+
- 단점: 기능 손실
|
|
347
|
+
|
|
348
|
+
5. 사용자 선택: 1
|
|
349
|
+
|
|
350
|
+
6. Edit:
|
|
351
|
+
src/types/user.ts:3
|
|
352
|
+
+ name: string;
|
|
353
|
+
|
|
354
|
+
7. 검증:
|
|
355
|
+
npm run typecheck → 성공
|
|
356
|
+
```
|
|
357
|
+
|
|
358
|
+
### 예시 2: 런타임 에러
|
|
359
|
+
|
|
360
|
+
```bash
|
|
361
|
+
사용자: /bug-fix Cannot read property 'data' of undefined
|
|
362
|
+
|
|
363
|
+
1. Sequential Thinking (5단계):
|
|
364
|
+
thought 1: "런타임 에러 - 보통 복잡도, null/undefined 체크 누락"
|
|
365
|
+
thought 2: "에러 발생 위치 파악 필요, 스택 트레이스 확인"
|
|
366
|
+
thought 3: "관련 코드 탐색: API 호출, 데이터 접근 패턴"
|
|
367
|
+
thought 4: "수정 방법: optional chaining, null 체크, 초기화"
|
|
368
|
+
thought 5: "optional chaining 추천 - 간결하고 안전"
|
|
369
|
+
|
|
370
|
+
2. Task 탐색:
|
|
371
|
+
Task (Explore): "undefined 에러 발생 코드 및 데이터 흐름 분석"
|
|
372
|
+
→ src/hooks/useUserData.ts:15, API 응답 체크 누락
|
|
373
|
+
|
|
374
|
+
3. 원인 분석:
|
|
375
|
+
API 응답 실패 시 response가 undefined
|
|
376
|
+
|
|
377
|
+
4. 옵션:
|
|
378
|
+
옵션 1: optional chaining 사용 (추천)
|
|
379
|
+
옵션 2: if 문으로 null 체크
|
|
380
|
+
옵션 3: try-catch로 감싸기
|
|
381
|
+
|
|
382
|
+
5. 선택 후 구현 → 검증
|
|
383
|
+
```
|
|
384
|
+
|
|
385
|
+
### 예시 3: 논리 오류
|
|
386
|
+
|
|
387
|
+
```bash
|
|
388
|
+
사용자: /bug-fix 사용자 목록이 중복으로 표시됨
|
|
389
|
+
|
|
390
|
+
1. Sequential Thinking (5단계):
|
|
391
|
+
thought 1: "논리 오류 - 보통 복잡도, 상태 관리 이슈"
|
|
392
|
+
thought 2: "리렌더링 또는 데이터 fetch 중복 추측"
|
|
393
|
+
thought 3: "관련 컴포넌트 및 상태 관리 코드 탐색"
|
|
394
|
+
thought 4: "옵션: useEffect 의존성 수정, 중복 제거 로직 추가"
|
|
395
|
+
thought 5: "useEffect 의존성 수정 추천"
|
|
396
|
+
|
|
397
|
+
2. Task 탐색:
|
|
398
|
+
Task (Explore): "사용자 목록 렌더링 컴포넌트 및 상태 관리"
|
|
399
|
+
→ UserList.tsx, useEffect 의존성 배열 문제 발견
|
|
400
|
+
|
|
401
|
+
3. 원인: useEffect 의존성 배열 누락으로 매번 fetch
|
|
402
|
+
|
|
403
|
+
4. 옵션 제시 → 선택 → 구현 → 검증
|
|
404
|
+
```
|
|
405
|
+
|
|
406
|
+
</examples>
|