/crawler
Playwright로 웹사이트를 직접 탐색하여 크롤링 흐름 설계. API/네트워크 분석, 문서화, 크롤러 코드 생성.
$ npx -y skills add ggombee/code-forge --skill crawler --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/crawler
Context preview
The summary Claude sees to decide when to auto-load this skill.
Playwright로 웹사이트를 직접 탐색하여 크롤링 흐름 설계. API/네트워크 분석, 문서화, 크롤러 코드 생성.
SKILL.md
crawler.SKILL.mdname: crawler
description: Playwright로 웹사이트를 직접 탐색하여 크롤링 흐름 설계. API/네트워크 분석, 문서화, 크롤러 코드 생성.
category: utility
user-invocable: false
Crawler Skill
> Playwright exploration → API/Network analysis → Documentation → Code generation
**Templates:** [document-templates.md](rules/document-templates.md) · [code-templates.md](rules/code-templates.md) **Checklists:** [pre-crawl-checklist.md](rules/pre-crawl-checklist.md) · [anti-bot-checklist.md](rules/anti-bot-checklist.md) **References:** [playwriter-commands.md](rules/playwriter-commands.md) · [crawling-patterns.md](rules/crawling-patterns.md) · [selector-strategies.md](rules/selector-strategies.md) · [network-crawling.md](rules/network-crawling.md)
---
<trigger_conditions>
| 트리거 | 액션 | |--------|------| | Crawling, scraping, crawl, scrape | 즉시 실행 | | 웹사이트 데이터 추출 | 즉시 실행 | | API 리버스 엔지니어링 | API 인터셉션 시작 | | Anti-bot 우회 요청 | Anti-Detect 가이드 확인 |
</trigger_conditions>
---
워크플로우
| Phase | 작업 | 명령/방법 | |-------|------|----------| | **1. Session** | 세션 생성 + 페이지 열기 | `playwriter session new` | | **2. Explore** | 구조 파악 | `accessibilitySnapshot`, `screenshotWithAccessibilityLabels` | | **3. Analyze** | API 인터셉트, 셀렉터 추출 | `page.on('response')`, `getLocatorStringForElement` | | **4. Document** | `.forge/crawler/[site]/`에 저장 | Write | | **5. Code** | 크롤러 코드 생성 | [code-templates.md](rules/code-templates.md) |
---
Quick Commands
# 세션 생성 + 페이지 열기
playwriter session new
playwriter -s 1 -e "state.page = await context.newPage(); await state.page.goto('https://target.com')"
# 구조 파악
playwriter -s 1 -e "console.log(await accessibilitySnapshot({ page: state.page }))"
# API 응답 인터셉트
playwriter -s 1 -e $'
state.responses = [];
state.page.on("response", async res => {
if (res.url().includes("/api/")) {
try { state.responses.push({ url: res.url(), body: await res.json() }); } catch {}
}
});
'
# 인증 자료 추출
playwriter -s 1 -e "console.log(JSON.stringify(await context.cookies(), null, 2))"
playwriter -s 1 -e "console.log(await state.page.evaluate(() => localStorage.getItem('token')))"
# 셀렉터 변환
playwriter -s 1 -e "console.log(await getLocatorStringForElement(state.page.locator('aria-ref=e14')))"---
방법 선택
| 조건 | 방법 | 비고 | |------|------|------| | API 발견 + 단순 인증 | **fetch** | 가장 빠름 | | API + 쿠키/토큰 필요 | **fetch + Cookie** | 만료 처리 필요 | | 강한 봇 탐지 | **Nstbrowser** | Anti-Detect | | API 없음 (SSR) | **Playwright DOM** | 직접 파싱 |
---
출력 구조
.forge/crawler/[site-name]/
├── ANALYSIS.md # 사이트 구조
├── SELECTORS.md # DOM 셀렉터
├── API.md # API 엔드포인트
├── NETWORK.md # 인증/네트워크 세부사항
└── CRAWLER.ts # 생성된 크롤러 코드
---
검증
✅ Playwright 세션 생성
✅ accessibilitySnapshot으로 구조 분석
✅ API 인터셉션 시도
✅ 셀렉터 추출 검증
✅ .forge/crawler/에 문서화
✅ 크롤러 코드 생성
---
금지 사항
| 카테고리 | 금지 | |----------|------| | 분석 | 구조 분석 없이 셀렉터 추측 | | 접근 | API 확인 없이 DOM 전용 | | 문서화 | 분석 결과 문서화 생략 | | 네트워크 | Rate limiting 무시 |
Read more
name: crawler description: Playwright로 웹사이트를 직접 탐색하여 크롤링 흐름 설계. API/네트워크 분석, 문서화, 크롤러 코드 생성. category: utility user-invocable: false
Crawler Skill
> Playwright exploration → API/Network analysis → Documentation → Code generation
**Templates:** [document-templates.md](rules/document-templates.md) · [code-templates.md](rules/code-templates.md) **Checklists:** [pre-crawl-checklist.md](rules/pre-crawl-checklist.md) · [anti-bot-checklist.md](rules/anti-bot-checklist.md) **References:** [playwriter-commands.md](rules/playwriter-commands.md) · [crawling-patterns.md](rules/crawling-patterns.md) · [selector-strategies.md](rules/selector-strategies.md) · [network-crawling.md](rules/network-crawling.md)
---
<trigger_conditions>
| 트리거 | 액션 | |--------|------| | Crawling, scraping, crawl, scrape | 즉시 실행 | | 웹사이트 데이터 추출 | 즉시 실행 | | API 리버스 엔지니어링 | API 인터셉션 시작 | | Anti-bot 우회 요청 | Anti-Detect 가이드 확인 |
</trigger_conditions>
---
워크플로우
| Phase | 작업 | 명령/방법 | |-------|------|----------| | **1. Session** | 세션 생성 + 페이지 열기 | `playwriter session new` | | **2. Explore** | 구조 파악 | `accessibilitySnapshot`, `screenshotWithAccessibilityLabels` | | **3. Analyze** | API 인터셉트, 셀렉터 추출 | `page.on('response')`, `getLocatorStringForElement` | | **4. Document** | `.forge/crawler/[site]/`에 저장 | Write | | **5. Code** | 크롤러 코드 생성 | [code-templates.md](rules/code-templates.md) |
---
Quick Commands
# 세션 생성 + 페이지 열기
playwriter session new
playwriter -s 1 -e "state.page = await context.newPage(); await state.page.goto('https://target.com')"
# 구조 파악
playwriter -s 1 -e "console.log(await accessibilitySnapshot({ page: state.page }))"
# API 응답 인터셉트
playwriter -s 1 -e $'
state.responses = [];
state.page.on("response", async res => {
if (res.url().includes("/api/")) {
try { state.responses.push({ url: res.url(), body: await res.json() }); } catch {}
}
});
'
# 인증 자료 추출
playwriter -s 1 -e "console.log(JSON.stringify(await context.cookies(), null, 2))"
playwriter -s 1 -e "console.log(await state.page.evaluate(() => localStorage.getItem('token')))"
# 셀렉터 변환
playwriter -s 1 -e "console.log(await getLocatorStringForElement(state.page.locator('aria-ref=e14')))"---
방법 선택
| 조건 | 방법 | 비고 | |------|------|------| | API 발견 + 단순 인증 | **fetch** | 가장 빠름 | | API + 쿠키/토큰 필요 | **fetch + Cookie** | 만료 처리 필요 | | 강한 봇 탐지 | **Nstbrowser** | Anti-Detect | | API 없음 (SSR) | **Playwright DOM** | 직접 파싱 |
---
출력 구조
.forge/crawler/[site-name]/ ├── ANALYSIS.md # 사이트 구조 ├── SELECTORS.md # DOM 셀렉터 ├── API.md # API 엔드포인트 ├── NETWORK.md # 인증/네트워크 세부사항 └── CRAWLER.ts # 생성된 크롤러 코드
---
검증
✅ Playwright 세션 생성 ✅ accessibilitySnapshot으로 구조 분석 ✅ API 인터셉션 시도 ✅ 셀렉터 추출 검증 ✅ .forge/crawler/에 문서화 ✅ 크롤러 코드 생성
---
금지 사항
| 카테고리 | 금지 | |----------|------| | 분석 | 구조 분석 없이 셀렉터 추측 | | 접근 | API 확인 없이 DOM 전용 | | 문서화 | 분석 결과 문서화 생략 | | 네트워크 | Rate limiting 무시 |
설치하면 Claude Code가 더 잘 동작합니다. 전문 에이전트, 슬래시 스킬, 스택 모듈을 제공하는 Claude Code 플러그인. 검증된 사고모델(GROUND→APPLY→VERIFY→ADAPT)이 모든 작업의 품질을 일관되게 유지합니다. (에이전트/스킬 개수는 디스크가 진실 — ls agents/.md | wc -l, ls skills//SKILL.md | wc -l) 현재 상태: 개인 GitHub 운영 중 (마켓플레이스 배포 4.10.0).
Repo: ggombee/code-forge
Other skills on code-forge.
debate
교차 모델 토론. Agent Teams / Codex CLI / self-debate 모드 선택. 설계 결정, 아키텍처 선택 시 활용. "어느 쪽이 나을까", "설계 비교해줘", "토론시켜줘", "교차 검증해줘" 등의 요청에 사용.
e2e
화면 단위 E2E 테스트 자동화. Figma/코드 기반 테스트 케이스 도출 → Playwright 코드 생성 → Forge Loop(에스컬레이션 기반 자율 실행). "E2E 돌려줘", "화면 테스트 만들어줘", "이 페이지 자동 테스트" 등의 요청에 사용.

