@kood/claude-code 0.6.0 → 0.6.1
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/skills/brainstorm/SKILL.md +72 -9
- package/templates/.claude/skills/docs-fetch/CLAUDE.md +3 -0
- package/templates/.claude/skills/docs-fetch/SKILL.md +626 -0
- package/templates/.claude/skills/elon-musk/CLAUDE.md +3 -0
- package/templates/.claude/skills/elon-musk/SKILL.md +620 -0
- package/templates/.claude/skills/prd/SKILL.md +216 -589
- 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/research/SKILL.md +260 -0
- package/templates/.claude/skills/research/report-template.md +88 -0
|
@@ -0,0 +1,626 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: docs-fetch
|
|
3
|
+
description: 라이브러리 공식 문서를 수집하여 AI Agent 최적화 문서 자동 생성. llms.txt → GitHub → Firecrawl/SearXNG 순서로 소싱.
|
|
4
|
+
metadata:
|
|
5
|
+
author: kood
|
|
6
|
+
version: "1.0.0"
|
|
7
|
+
user-invocable: true
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
@../../instructions/workflow-patterns/sequential-thinking.md
|
|
11
|
+
@../../instructions/agent-patterns/parallel-execution.md
|
|
12
|
+
@../../instructions/agent-patterns/model-routing.md
|
|
13
|
+
@../../instructions/validation/forbidden-patterns.md
|
|
14
|
+
@../../instructions/validation/required-behaviors.md
|
|
15
|
+
|
|
16
|
+
# Docs Fetch Skill
|
|
17
|
+
|
|
18
|
+
> 라이브러리/프레임워크 공식 문서 수집 → AI Agent 최적화 문서 자동 생성
|
|
19
|
+
|
|
20
|
+
---
|
|
21
|
+
|
|
22
|
+
<purpose>
|
|
23
|
+
|
|
24
|
+
Context7 업데이트 지연, Tavily 비용 문제를 해결.
|
|
25
|
+
공식 문서를 직접 읽고, 기존 `docs-creator` 포맷으로 AI 최적화 문서 생성.
|
|
26
|
+
|
|
27
|
+
**입력:** 라이브러리명 또는 URL
|
|
28
|
+
**출력:** `docs/library/[name]/index.md` + 주제별 상세 파일
|
|
29
|
+
|
|
30
|
+
</purpose>
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
<trigger_conditions>
|
|
35
|
+
|
|
36
|
+
| 트리거 | 반응 |
|
|
37
|
+
|--------|------|
|
|
38
|
+
| `/docs-fetch prisma@7` | 라이브러리명+버전으로 문서 생성 |
|
|
39
|
+
| `/docs-fetch https://tanstack.com/start/latest/docs` | URL로 문서 생성 |
|
|
40
|
+
| "라이브러리 문서 만들어줘" | 라이브러리명 확인 후 실행 |
|
|
41
|
+
| "OO 최신 문서로 업데이트" | 기존 문서 재생성 |
|
|
42
|
+
|
|
43
|
+
</trigger_conditions>
|
|
44
|
+
|
|
45
|
+
---
|
|
46
|
+
|
|
47
|
+
<argument_validation>
|
|
48
|
+
|
|
49
|
+
```
|
|
50
|
+
ARGUMENT 없음 → 즉시 질문:
|
|
51
|
+
|
|
52
|
+
"어떤 라이브러리 문서를 생성할까요?
|
|
53
|
+
|
|
54
|
+
예시:
|
|
55
|
+
- /docs-fetch prisma@7
|
|
56
|
+
- /docs-fetch zod@4
|
|
57
|
+
- /docs-fetch https://tanstack.com/start/latest/docs"
|
|
58
|
+
|
|
59
|
+
ARGUMENT 있음 → 다음 단계 진행
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
</argument_validation>
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
<sourcing_strategy>
|
|
67
|
+
|
|
68
|
+
## 3-Tier Fallback
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
Tier 1 (MCP 도구 우선):
|
|
72
|
+
Firecrawl MCP + SearXNG MCP → /map 구조 파악 → /crawl 수집 + 보충 검색 병렬
|
|
73
|
+
Context7 MCP → 라이브러리 문서 직접 조회
|
|
74
|
+
|
|
75
|
+
Tier 2 (내장 도구):
|
|
76
|
+
llms.txt → WebFetch("{도메인}/llms.txt") 우선 확인
|
|
77
|
+
GitHub → gh API + GitHub MCP (README, docs/, CHANGELOG)
|
|
78
|
+
WebFetch → 공식 문서 핵심 페이지 직접 읽기
|
|
79
|
+
WebSearch → 보충 검색
|
|
80
|
+
|
|
81
|
+
Tier 3 (최후 수단):
|
|
82
|
+
Playwright → SPA 사이트, JS 렌더링 필요 시 crawler skill 연계
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### 소싱 우선순위 (항상 이 순서)
|
|
86
|
+
|
|
87
|
+
| 순서 | 소스 | 이유 |
|
|
88
|
+
|------|------|------|
|
|
89
|
+
| **1** | `llms.txt` / `llms-full.txt` | AI 최적화 완료, 토큰 효율 최고 |
|
|
90
|
+
| **2** | GitHub MCP + gh CLI | README, docs/, CHANGELOG 직접 접근 |
|
|
91
|
+
| **3** | Firecrawl `/map`→`/crawl` + SearXNG 검색 | 문서 일괄 수집 + breaking changes 보충 (동시 실행) |
|
|
92
|
+
| **4** | Context7 MCP | 라이브러리 문서 즉시 조회, 업데이트 지연 가능성 있음 |
|
|
93
|
+
| **5** | WebFetch | 개별 페이지 직접 읽기 |
|
|
94
|
+
| **6** | WebSearch | 최후 보충 검색 |
|
|
95
|
+
|
|
96
|
+
</sourcing_strategy>
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
<workflow>
|
|
101
|
+
|
|
102
|
+
## Phase 0: 환경 감지 + 입력 파싱
|
|
103
|
+
|
|
104
|
+
```
|
|
105
|
+
1. 입력 파싱
|
|
106
|
+
- "prisma@7" → name: prisma, version: 7
|
|
107
|
+
- "https://..." → URL에서 라이브러리명 추론
|
|
108
|
+
|
|
109
|
+
2. MCP 도구 감지
|
|
110
|
+
- Firecrawl MCP 사용 가능? → Tier 1 활성화
|
|
111
|
+
- SearXNG MCP 사용 가능? → Tier 1 검색 활성화 (Firecrawl과 병렬)
|
|
112
|
+
- Context7 MCP 사용 가능? → Tier 1 문서 조회 활성화
|
|
113
|
+
- GitHub MCP 사용 가능? → GitHub MCP 우선 사용
|
|
114
|
+
- 모두 없으면 → Tier 2 (내장 도구만)
|
|
115
|
+
|
|
116
|
+
3. 기존 문서 확인
|
|
117
|
+
- docs/library/[name]/ 이미 존재? → 업데이트 모드
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
---
|
|
121
|
+
|
|
122
|
+
## Phase 1: 정보 수집 (병렬)
|
|
123
|
+
|
|
124
|
+
### Step 1-1: llms.txt 확인 (최우선)
|
|
125
|
+
|
|
126
|
+
```typescript
|
|
127
|
+
// 공식 사이트 llms.txt 확인
|
|
128
|
+
WebFetch("{공식사이트}/llms.txt", "문서 구조와 핵심 링크 목록 추출")
|
|
129
|
+
WebFetch("{공식사이트}/llms-full.txt", "전체 문서 내용 추출")
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
**llms.txt 있으면** → 핵심 링크 목록 획득, Phase 2에서 링크된 페이지만 읽기
|
|
133
|
+
**llms-full.txt 있으면** → 전체 내용 이미 확보, Phase 2 대부분 스킵 가능
|
|
134
|
+
|
|
135
|
+
### Step 1-2: 메타데이터 + GitHub + 코드 탐색 (병렬)
|
|
136
|
+
|
|
137
|
+
```typescript
|
|
138
|
+
// 병렬 실행 (researcher + explore 동시)
|
|
139
|
+
Task(subagent_type="researcher", model="haiku",
|
|
140
|
+
prompt="npm registry에서 {name} 패키지 메타데이터 조회:
|
|
141
|
+
- 최신 버전, GitHub repo URL, 공식 사이트 URL
|
|
142
|
+
- WebFetch('https://registry.npmjs.org/{name}/latest')")
|
|
143
|
+
|
|
144
|
+
Task(subagent_type="researcher", model="haiku",
|
|
145
|
+
prompt="GitHub에서 {name} 문서 수집:
|
|
146
|
+
- gh api repos/{owner}/{repo}/readme
|
|
147
|
+
- gh api repos/{owner}/{repo}/contents/docs
|
|
148
|
+
- CHANGELOG.md 또는 RELEASES
|
|
149
|
+
- GitHub MCP 사용 가능하면 get_file_contents 활용")
|
|
150
|
+
|
|
151
|
+
Task(subagent_type="explore", model="haiku",
|
|
152
|
+
prompt="{name} GitHub repo 코드 구조 탐색:
|
|
153
|
+
- 주요 export 패턴 (public API surface)
|
|
154
|
+
- 타입 정의 파일 (*.d.ts, types/)
|
|
155
|
+
- 설정 파일 패턴 (config, setup)
|
|
156
|
+
- 예제 코드 (examples/, __tests__/)")
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
### Step 1-3: Context7 조회 (병렬)
|
|
160
|
+
|
|
161
|
+
```typescript
|
|
162
|
+
// Context7 MCP 있으면 → 라이브러리 문서 즉시 조회
|
|
163
|
+
// Context7는 업데이트 지연 가능성 있으므로 다른 소스와 교차 확인
|
|
164
|
+
Task(subagent_type="researcher", model="haiku",
|
|
165
|
+
prompt="Context7 MCP로 {name} 라이브러리 문서 조회.
|
|
166
|
+
Context7 MCP 없으면 스킵.")
|
|
167
|
+
```
|
|
168
|
+
|
|
169
|
+
### Step 1-4: 보충 검색 (병렬)
|
|
170
|
+
|
|
171
|
+
```typescript
|
|
172
|
+
// SearXNG MCP 있으면 사용, 없으면 WebSearch
|
|
173
|
+
Task(subagent_type="researcher", model="haiku",
|
|
174
|
+
prompt="{name} v{version} breaking changes, migration guide 검색.
|
|
175
|
+
SearXNG MCP 있으면 사용, 없으면 WebSearch.")
|
|
176
|
+
|
|
177
|
+
Task(subagent_type="researcher", model="haiku",
|
|
178
|
+
prompt="{name} v{version} best practices, common mistakes 검색.
|
|
179
|
+
SearXNG MCP 있으면 사용, 없으면 WebSearch.")
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
## Phase 2: 핵심 페이지 읽기
|
|
185
|
+
|
|
186
|
+
### Tier 1 경로 (Firecrawl + SearXNG MCP 있을 때)
|
|
187
|
+
|
|
188
|
+
```typescript
|
|
189
|
+
// Firecrawl + SearXNG 병렬 실행
|
|
190
|
+
// 1. 문서 사이트 URL 구조 파악 + 보충 검색 동시
|
|
191
|
+
firecrawl_map({ url: "{docs_url}" })
|
|
192
|
+
searxng_search("{name} v{version} breaking changes migration")
|
|
193
|
+
|
|
194
|
+
// 2. 핵심 페이지 일괄 크롤링 (최대 50페이지)
|
|
195
|
+
firecrawl_crawl({
|
|
196
|
+
url: "{docs_url}",
|
|
197
|
+
limit: 50,
|
|
198
|
+
scrapeOptions: { formats: ["markdown"] }
|
|
199
|
+
})
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
### Tier 2 경로 (내장 도구만)
|
|
203
|
+
|
|
204
|
+
```typescript
|
|
205
|
+
// llms.txt 링크가 있으면 → 링크된 페이지만 WebFetch
|
|
206
|
+
// 없으면 → GitHub docs/ + 공식 문서 상위 10-15페이지
|
|
207
|
+
|
|
208
|
+
// 병렬 WebFetch (최대 5개씩)
|
|
209
|
+
Task(subagent_type="researcher", model="haiku",
|
|
210
|
+
prompt="다음 URL들을 WebFetch로 읽기: {url_list_1}")
|
|
211
|
+
Task(subagent_type="researcher", model="haiku",
|
|
212
|
+
prompt="다음 URL들을 WebFetch로 읽기: {url_list_2}")
|
|
213
|
+
Task(subagent_type="researcher", model="haiku",
|
|
214
|
+
prompt="다음 URL들을 WebFetch로 읽기: {url_list_3}")
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
### 공통: Breaking Changes 추출
|
|
218
|
+
|
|
219
|
+
```
|
|
220
|
+
CHANGELOG.md에서 추출할 정보:
|
|
221
|
+
- 더 이상 사용 불가한 API → <forbidden>
|
|
222
|
+
- 새로 필수가 된 설정 → <required>
|
|
223
|
+
- 패키지명 변경 → <forbidden> + <required>
|
|
224
|
+
- 기본값 변경 → <required>
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
---
|
|
228
|
+
|
|
229
|
+
## Phase 2.5: 수집 정보 분석 (analyst + architect 병렬)
|
|
230
|
+
|
|
231
|
+
```typescript
|
|
232
|
+
// 수집된 정보 기반 분석 (Phase 3 전에 실행)
|
|
233
|
+
Task(subagent_type="analyst", model="sonnet",
|
|
234
|
+
prompt=`수집된 {name} v{version} 정보를 분석:
|
|
235
|
+
- 문서에 반드시 포함해야 할 핵심 주제 식별
|
|
236
|
+
- 누락된 정보 영역 (추가 수집 필요?)
|
|
237
|
+
- forbidden/required 후보 패턴 추출
|
|
238
|
+
- 버전별 breaking changes 정리`)
|
|
239
|
+
|
|
240
|
+
Task(subagent_type="architect", model="sonnet",
|
|
241
|
+
prompt=`{name} v{version} 라이브러리 아키텍처 분석:
|
|
242
|
+
- 핵심 API surface (public API 구조)
|
|
243
|
+
- 주요 사용 패턴 및 안티패턴
|
|
244
|
+
- 의존성 관계 및 설정 요구사항
|
|
245
|
+
- quick_reference에 포함할 코드 패턴 선별`)
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
**분석 결과** → Phase 3 document-writer에 전달하여 문서 품질 향상
|
|
249
|
+
|
|
250
|
+
---
|
|
251
|
+
|
|
252
|
+
## Phase 3: 문서 생성 (병렬 writer)
|
|
253
|
+
|
|
254
|
+
```typescript
|
|
255
|
+
// index.md 생성 (핵심 문서)
|
|
256
|
+
Task(subagent_type="document-writer", model="sonnet",
|
|
257
|
+
prompt=`다음 정보를 기반으로 AI Agent 최적화 문서 생성.
|
|
258
|
+
|
|
259
|
+
[수집된 정보 전달]
|
|
260
|
+
|
|
261
|
+
출력 형식: 아래 템플릿 참조.
|
|
262
|
+
파일 경로: docs/library/{name}/index.md
|
|
263
|
+
|
|
264
|
+
필수 섹션: <context>, <forbidden>, <required>, <quick_reference>, <version_info>
|
|
265
|
+
선택 섹션: <setup>, <configuration>, 주제별 섹션`)
|
|
266
|
+
|
|
267
|
+
// 주제별 상세 문서 (필요시 병렬)
|
|
268
|
+
Task(subagent_type="document-writer", model="haiku",
|
|
269
|
+
prompt="[주제1] 상세 문서 생성: docs/library/{name}/[topic1].md")
|
|
270
|
+
Task(subagent_type="document-writer", model="haiku",
|
|
271
|
+
prompt="[주제2] 상세 문서 생성: docs/library/{name}/[topic2].md")
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
---
|
|
275
|
+
|
|
276
|
+
## Phase 4: 저장 + 연결
|
|
277
|
+
|
|
278
|
+
```
|
|
279
|
+
1. docs/library/[name]/ 폴더 생성 (없으면)
|
|
280
|
+
2. 생성된 파일 저장
|
|
281
|
+
3. CLAUDE.md에 @참조 추가 제안
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
---
|
|
285
|
+
|
|
286
|
+
## Phase 5: 품질 검증 (critic)
|
|
287
|
+
|
|
288
|
+
```typescript
|
|
289
|
+
// 생성된 문서 품질 검증
|
|
290
|
+
Task(subagent_type="critic", model="sonnet",
|
|
291
|
+
prompt=`생성된 docs/library/{name}/index.md 문서 검증:
|
|
292
|
+
- <context>, <forbidden>, <required>, <quick_reference>, <version_info> 섹션 존재 여부
|
|
293
|
+
- 버전 정보 정확성
|
|
294
|
+
- 코드 예시 복사 가능 여부
|
|
295
|
+
- 기존 docs/ 포맷과 일관성
|
|
296
|
+
- 한글 주석, ✅/❌ 마커 사용 여부
|
|
297
|
+
OKAY/REJECT 판정.`)
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
**REJECT 시** → 피드백 기반으로 document-writer 재실행
|
|
301
|
+
**OKAY 시** → 결과 리포트 출력
|
|
302
|
+
|
|
303
|
+
```
|
|
304
|
+
결과 리포트:
|
|
305
|
+
- 생성된 파일 목록
|
|
306
|
+
- 소싱 경로 (어떤 Tier 사용했는지)
|
|
307
|
+
- 토큰 수 추정
|
|
308
|
+
- critic 검증 결과
|
|
309
|
+
```
|
|
310
|
+
|
|
311
|
+
</workflow>
|
|
312
|
+
|
|
313
|
+
---
|
|
314
|
+
|
|
315
|
+
<output_template>
|
|
316
|
+
|
|
317
|
+
## index.md 출력 형식
|
|
318
|
+
|
|
319
|
+
```markdown
|
|
320
|
+
# {라이브러리명}
|
|
321
|
+
|
|
322
|
+
> **Version {X.x}** | {한줄 설명}
|
|
323
|
+
|
|
324
|
+
---
|
|
325
|
+
|
|
326
|
+
<context>
|
|
327
|
+
**Purpose:** {목적}
|
|
328
|
+
**Generated:** {YYYY-MM-DD}
|
|
329
|
+
**Source:** {소스 URL 목록}
|
|
330
|
+
**Key Features:**
|
|
331
|
+
- {기능 1}
|
|
332
|
+
- {기능 2}
|
|
333
|
+
- {기능 3}
|
|
334
|
+
</context>
|
|
335
|
+
|
|
336
|
+
<forbidden>
|
|
337
|
+
| 분류 | 금지 | 이유 |
|
|
338
|
+
|------|------|------|
|
|
339
|
+
| {분류} | ❌ {금지 패턴} | {이유} |
|
|
340
|
+
</forbidden>
|
|
341
|
+
|
|
342
|
+
<required>
|
|
343
|
+
| 분류 | 필수 | 상세 |
|
|
344
|
+
|------|------|------|
|
|
345
|
+
| {분류} | ✅ {필수 패턴} | {상세} |
|
|
346
|
+
</required>
|
|
347
|
+
|
|
348
|
+
<setup>
|
|
349
|
+
## 설치
|
|
350
|
+
|
|
351
|
+
```bash
|
|
352
|
+
{설치 명령어}
|
|
353
|
+
```
|
|
354
|
+
|
|
355
|
+
## 초기 설정
|
|
356
|
+
|
|
357
|
+
```typescript
|
|
358
|
+
// {설정 코드}
|
|
359
|
+
```
|
|
360
|
+
</setup>
|
|
361
|
+
|
|
362
|
+
<quick_reference>
|
|
363
|
+
```typescript
|
|
364
|
+
// {자주 사용하는 패턴 - 복사 가능}
|
|
365
|
+
```
|
|
366
|
+
</quick_reference>
|
|
367
|
+
|
|
368
|
+
<version_info>
|
|
369
|
+
**Version:** {X.x}
|
|
370
|
+
**Package:** {패키지명}
|
|
371
|
+
**Breaking Changes:**
|
|
372
|
+
- {변경 1}
|
|
373
|
+
- {변경 2}
|
|
374
|
+
</version_info>
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
### 주제별 상세 파일
|
|
378
|
+
|
|
379
|
+
```
|
|
380
|
+
docs/library/{name}/
|
|
381
|
+
├── index.md # 개요 + forbidden + required + quick_reference
|
|
382
|
+
├── setup.md # 설치 + 초기 설정 (상세)
|
|
383
|
+
├── [topic].md # 주제별 상세 가이드
|
|
384
|
+
└── migration.md # 마이그레이션 가이드 (메이저 버전 변경 시)
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
</output_template>
|
|
388
|
+
|
|
389
|
+
---
|
|
390
|
+
|
|
391
|
+
<parallel_agent_execution>
|
|
392
|
+
|
|
393
|
+
## Agent 활용 패턴
|
|
394
|
+
|
|
395
|
+
| Phase | Agent | Model | 용도 |
|
|
396
|
+
|-------|-------|-------|------|
|
|
397
|
+
| **1** | researcher x3 | haiku | npm 메타데이터, llms.txt, GitHub 문서 수집 |
|
|
398
|
+
| **1** | explore | haiku | GitHub repo 코드 구조 탐색 (API surface, 타입, 예제) |
|
|
399
|
+
| **1** | researcher | haiku | Context7 MCP 문서 조회 |
|
|
400
|
+
| **1** | researcher x2 | haiku | Firecrawl+SearXNG / WebSearch 보충 검색 |
|
|
401
|
+
| **2** | researcher x3 | haiku | WebFetch 멀티페이지 (5개씩 병렬) |
|
|
402
|
+
| **2.5** | analyst | sonnet | 수집 정보 분석, 핵심 주제 식별, 누락 영역 발견 |
|
|
403
|
+
| **2.5** | architect | sonnet | 라이브러리 아키텍처 분석, API 패턴, 안티패턴 |
|
|
404
|
+
| **3** | document-writer | sonnet | index.md 핵심 문서 생성 |
|
|
405
|
+
| **3** | document-writer x N | haiku | 주제별 상세 문서 생성 |
|
|
406
|
+
| **5** | critic | sonnet | 생성된 문서 품질 검증 (OKAY/REJECT) |
|
|
407
|
+
|
|
408
|
+
### 병렬 실행 규칙
|
|
409
|
+
|
|
410
|
+
```
|
|
411
|
+
Phase 1: 7개 동시 실행 (researcher x5 + explore x1 + llms.txt WebFetch)
|
|
412
|
+
Phase 2: 3개 researcher 동시 실행 (WebFetch 5페이지씩)
|
|
413
|
+
Phase 2.5: 2개 동시 실행 (analyst + architect)
|
|
414
|
+
Phase 3: 1 sonnet + N haiku 동시 실행 (index.md + 주제별)
|
|
415
|
+
Phase 4: 순차 (저장 + 연결)
|
|
416
|
+
Phase 5: critic 검증 → REJECT 시 Phase 3 재실행
|
|
417
|
+
```
|
|
418
|
+
|
|
419
|
+
### Agent 협업 흐름
|
|
420
|
+
|
|
421
|
+
```
|
|
422
|
+
researcher(수집) ──┐
|
|
423
|
+
explore(탐색) ──┤
|
|
424
|
+
├→ analyst(분석) + architect(패턴) ──→ document-writer(생성) ──→ critic(검증)
|
|
425
|
+
researcher(검색) ──┘ │
|
|
426
|
+
REJECT → 재생성
|
|
427
|
+
```
|
|
428
|
+
|
|
429
|
+
</parallel_agent_execution>
|
|
430
|
+
|
|
431
|
+
---
|
|
432
|
+
|
|
433
|
+
<mcp_integration>
|
|
434
|
+
|
|
435
|
+
## MCP 도구 활용
|
|
436
|
+
|
|
437
|
+
### Firecrawl MCP (자체 호스팅)
|
|
438
|
+
|
|
439
|
+
```bash
|
|
440
|
+
# 셋업
|
|
441
|
+
claude mcp add firecrawl \
|
|
442
|
+
-e FIRECRAWL_API_URL=http://localhost:3002 \
|
|
443
|
+
-- npx -y firecrawl-mcp
|
|
444
|
+
```
|
|
445
|
+
|
|
446
|
+
| 도구 | 용도 |
|
|
447
|
+
|------|------|
|
|
448
|
+
| `firecrawl_map` | 문서 사이트 URL 구조 파악 |
|
|
449
|
+
| `firecrawl_crawl` | 핵심 페이지 일괄 수집 (MD 변환) |
|
|
450
|
+
| `firecrawl_scrape` | 단일 페이지 스크랩 |
|
|
451
|
+
|
|
452
|
+
### SearXNG MCP (자체 호스팅)
|
|
453
|
+
|
|
454
|
+
```bash
|
|
455
|
+
# 셋업
|
|
456
|
+
claude mcp add searxng \
|
|
457
|
+
-e SEARXNG_BASE_URL=http://localhost:8080 \
|
|
458
|
+
-- npx -y @sacode/searxng-simple-mcp
|
|
459
|
+
```
|
|
460
|
+
|
|
461
|
+
| 용도 | 검색 쿼리 예시 |
|
|
462
|
+
|------|---------------|
|
|
463
|
+
| Breaking Changes | `"{name} v{ver} breaking changes migration"` |
|
|
464
|
+
| Best Practices | `"{name} v{ver} best practices common mistakes"` |
|
|
465
|
+
| 비교 | `"{name} vs {alt} comparison 2026"` |
|
|
466
|
+
|
|
467
|
+
### Context7 MCP
|
|
468
|
+
|
|
469
|
+
| 도구 | 용도 |
|
|
470
|
+
|------|------|
|
|
471
|
+
| `resolve-library-id` | 라이브러리 식별자 확인 |
|
|
472
|
+
| `get-library-docs` | 라이브러리 문서 조회 (업데이트 지연 가능성 있음) |
|
|
473
|
+
|
|
474
|
+
### GitHub MCP
|
|
475
|
+
|
|
476
|
+
| 도구 | 용도 |
|
|
477
|
+
|------|------|
|
|
478
|
+
| `get_file_contents` | README.md, docs/ 폴더 내용 |
|
|
479
|
+
| `list_commits` | 최근 변경사항 확인 |
|
|
480
|
+
| `get_latest_release` | 최신 릴리스 + CHANGELOG |
|
|
481
|
+
|
|
482
|
+
### MCP 미설치 시 폴백
|
|
483
|
+
|
|
484
|
+
| MCP 없음 | 대체 도구 |
|
|
485
|
+
|----------|----------|
|
|
486
|
+
| Firecrawl + SearXNG | WebFetch (페이지별) + WebSearch (내장) |
|
|
487
|
+
| Context7 | WebFetch (개별 페이지 직접 읽기) |
|
|
488
|
+
| GitHub MCP | `gh api` (CLI) |
|
|
489
|
+
|
|
490
|
+
</mcp_integration>
|
|
491
|
+
|
|
492
|
+
---
|
|
493
|
+
|
|
494
|
+
<chaining>
|
|
495
|
+
|
|
496
|
+
## Skill 체이닝
|
|
497
|
+
|
|
498
|
+
```
|
|
499
|
+
/docs-fetch prisma@7
|
|
500
|
+
↓ 문서 생성 완료
|
|
501
|
+
/docs-refactor docs/library/prisma/index.md
|
|
502
|
+
↓ 토큰 50% 최적화
|
|
503
|
+
/docs-creator
|
|
504
|
+
↓ CLAUDE.md에 @참조 추가
|
|
505
|
+
```
|
|
506
|
+
|
|
507
|
+
| 순서 | Skill | 역할 |
|
|
508
|
+
|------|-------|------|
|
|
509
|
+
| 1 | **docs-fetch** | 외부 문서 수집 + AI 최적화 문서 생성 |
|
|
510
|
+
| 2 | **docs-refactor** | 생성된 문서 토큰 효율 개선 (선택) |
|
|
511
|
+
| 3 | **docs-creator** | CLAUDE.md 업데이트, @참조 추가 (선택) |
|
|
512
|
+
|
|
513
|
+
</chaining>
|
|
514
|
+
|
|
515
|
+
---
|
|
516
|
+
|
|
517
|
+
<examples>
|
|
518
|
+
|
|
519
|
+
## 예시 1: llms.txt 있는 라이브러리
|
|
520
|
+
|
|
521
|
+
```bash
|
|
522
|
+
사용자: /docs-fetch zod@4
|
|
523
|
+
|
|
524
|
+
Phase 0: 환경 감지
|
|
525
|
+
→ Firecrawl MCP: 없음, SearXNG MCP: 없음 → Tier 2
|
|
526
|
+
|
|
527
|
+
Phase 1: 정보 수집 (병렬)
|
|
528
|
+
researcher 1: WebFetch("https://zod.dev/llms.txt") → ✅ 있음!
|
|
529
|
+
researcher 2: npm registry → version 4.x, repo: colinhacks/zod
|
|
530
|
+
researcher 3: gh api repos/colinhacks/zod/readme
|
|
531
|
+
researcher 4: WebSearch "zod v4 breaking changes"
|
|
532
|
+
|
|
533
|
+
Phase 2: llms.txt 링크된 페이지만 WebFetch
|
|
534
|
+
→ 10페이지 병렬 읽기 (효율적)
|
|
535
|
+
|
|
536
|
+
Phase 3: 문서 생성
|
|
537
|
+
document-writer (sonnet): docs/library/zod/index.md
|
|
538
|
+
document-writer (haiku): docs/library/zod/validation.md
|
|
539
|
+
|
|
540
|
+
Phase 4: 저장
|
|
541
|
+
→ docs/library/zod/ 에 2개 파일 생성
|
|
542
|
+
→ "CLAUDE.md에 @docs/library/zod/index.md 추가 권장"
|
|
543
|
+
```
|
|
544
|
+
|
|
545
|
+
## 예시 2: Firecrawl + SearXNG MCP 있는 경우
|
|
546
|
+
|
|
547
|
+
```bash
|
|
548
|
+
사용자: /docs-fetch tanstack-query@5
|
|
549
|
+
|
|
550
|
+
Phase 0: 환경 감지
|
|
551
|
+
→ Firecrawl MCP: ✅ + SearXNG MCP: ✅ → Tier 1 활성화
|
|
552
|
+
|
|
553
|
+
Phase 1: 정보 수집 (병렬)
|
|
554
|
+
firecrawl_map: https://tanstack.com/query/latest/docs → URL 200개 발견
|
|
555
|
+
searxng: "tanstack query v5 breaking changes migration" → 보충 정보
|
|
556
|
+
researcher 1: npm registry → version 5.x
|
|
557
|
+
researcher 2: GitHub README + CHANGELOG
|
|
558
|
+
researcher 3: Context7 → 문서 조회
|
|
559
|
+
|
|
560
|
+
Phase 2: Firecrawl 일괄 수집
|
|
561
|
+
firecrawl_crawl: 핵심 50페이지 → 깨끗한 MD
|
|
562
|
+
|
|
563
|
+
Phase 3: 문서 생성 (병렬)
|
|
564
|
+
document-writer (sonnet): index.md
|
|
565
|
+
document-writer (haiku): use-query.md
|
|
566
|
+
document-writer (haiku): use-mutation.md
|
|
567
|
+
document-writer (haiku): invalidation.md
|
|
568
|
+
|
|
569
|
+
Phase 4: 저장
|
|
570
|
+
→ docs/library/tanstack-query/ 에 4개 파일 생성
|
|
571
|
+
```
|
|
572
|
+
|
|
573
|
+
## 예시 3: URL 직접 지정
|
|
574
|
+
|
|
575
|
+
```bash
|
|
576
|
+
사용자: /docs-fetch https://www.prisma.io/docs/orm
|
|
577
|
+
|
|
578
|
+
Phase 0: URL 파싱 → name: prisma, docs_url: prisma.io/docs/orm
|
|
579
|
+
|
|
580
|
+
Phase 1-2: WebFetch로 주요 페이지 수집
|
|
581
|
+
Phase 3: 문서 생성
|
|
582
|
+
Phase 4: docs/library/prisma/ 에 저장
|
|
583
|
+
```
|
|
584
|
+
|
|
585
|
+
</examples>
|
|
586
|
+
|
|
587
|
+
---
|
|
588
|
+
|
|
589
|
+
<validation>
|
|
590
|
+
|
|
591
|
+
## 검증 체크리스트
|
|
592
|
+
|
|
593
|
+
**실행 전:**
|
|
594
|
+
- [ ] ARGUMENT 확인 (라이브러리명 또는 URL)
|
|
595
|
+
- [ ] MCP 도구 감지 완료
|
|
596
|
+
- [ ] llms.txt 확인 완료
|
|
597
|
+
|
|
598
|
+
**수집 후:**
|
|
599
|
+
- [ ] 최소 README + 1개 이상 문서 페이지 수집
|
|
600
|
+
- [ ] 버전 정보 확인
|
|
601
|
+
- [ ] Breaking Changes 확인 시도
|
|
602
|
+
|
|
603
|
+
**생성 후:**
|
|
604
|
+
- [ ] `<context>` 섹션 포함
|
|
605
|
+
- [ ] `<forbidden>` 섹션 포함 (Breaking Changes 있으면)
|
|
606
|
+
- [ ] `<required>` 섹션 포함
|
|
607
|
+
- [ ] `<quick_reference>` 코드 예시 포함
|
|
608
|
+
- [ ] `<version_info>` 버전 명시
|
|
609
|
+
- [ ] 한글 주석 포함
|
|
610
|
+
- [ ] ✅/❌ 마커 사용
|
|
611
|
+
|
|
612
|
+
**저장 후:**
|
|
613
|
+
- [ ] docs/library/[name]/ 에 파일 저장됨
|
|
614
|
+
- [ ] 결과 리포트 출력 (파일 목록 + 소싱 경로)
|
|
615
|
+
- [ ] CLAUDE.md @참조 추가 제안
|
|
616
|
+
|
|
617
|
+
## 절대 금지
|
|
618
|
+
|
|
619
|
+
- ❌ llms.txt 확인 없이 바로 크롤링
|
|
620
|
+
- ❌ 단일 소스만으로 문서 생성 (최소 2개 소스 교차)
|
|
621
|
+
- ❌ 버전 정보 누락
|
|
622
|
+
- ❌ `<forbidden>` 섹션 없이 생성 (Breaking Changes 확인 필수)
|
|
623
|
+
- ❌ 기존 docs 포맷과 다른 형식 사용
|
|
624
|
+
- ❌ 결과 저장 없이 종료
|
|
625
|
+
|
|
626
|
+
</validation>
|