oss-tourlisted
Install: claude install-skill basejb/skills
# OSS Tour — 오픈소스 레포 점진 학습법
목표: 거대 레포를 "전부 읽기"가 아니라 **지도 → 패턴 → 중심 → 흐름** 순서로 좁혀가며 학습한다.
각 단계 결과를 사용자에게 보여주고, 사용자가 궁금한 지점을 고르면 그쪽으로 파고든다 (한 번에 다 하지 않는다).
## 원칙
- 단계마다 출력은 **표 + 계층 트리** 로 압축. 파일 덤프 금지.
- **크기·커밋수·의존성 방향** 같은 측정값으로 우선순위를 정한다. 감으로 정하지 않는다.
- 패턴 하나 파악하면 반복 적용한다 (프랙탈 구조 활용) — 어댑터 하나 이해 = 어댑터 전부 이해.
- 각 단계 끝에 "다음 어디 팔까?" 선택지를 제시한다.
- 한국어로 답한다.
## 단계
### 1단계: 신원 + 규모 측정
무엇인지, 얼마나 큰지부터. README 첫 단락 + 아래 측정:
```bash
# 규모: 패키지 수 / 커밋 수 / 기여자 수
find . -name "package.json" -not -path "*/node_modules/*" -maxdepth 3 | wc -l # JS 모노레포
git log --oneline | wc -l
git log --format='%an' | sort -u | wc -l
# 생태계 감지: package.json / go.mod / Cargo.toml / pyproject.toml / pom.xml
ls package.json go.mod Cargo.toml pyproject.toml 2>/dev/null
# 모노레포 감지: pnpm-workspace.yaml / turbo.json / nx.json / lerna.json / Cargo workspace
```
출력: 한 줄 정체성 + 규모 숫자 3개. "겁먹을 규모인가 아닌가" 판정.
### 2단계: 최상위 지도
```bash
ls -d */
```
폴더들을 **기능군으로 묶어서** 지도화 (알파벳순 나열 금지):
- 두뇌/코어 — 핵심 로직
- 어댑터/플러그인 — 교체 가능 구현체 (개수 세기: `for d in ...; do ls -d $d/*/ | wc -l; done`)
- 제품/앱 — CLI, UI, 서버
- 개발 자료 — examples, docs, e2e, scripts
### 3단계: 아키텍처 패턴 판정
레포 전체를 관통하는 설계 원칙 하나를 찾는다. 흔한 패턴:
- **core 계약 + 어댑터 구현** (플러그블): core가 인터페이스, 폴더별 구현, 사용자는 골라 설치
- **레이어드**: api → service → domain → infra
- **플러그인 버스**: 작은 코어 + 훅/이벤트로 확장
- **단일 앱**: 그냥 하나의 응용
판정 근거 제시: 어댑터 패키지의 package.json 의존성 방향 확인 (`구현 → core` 단방향인가), 이름 규칙 (`@scope/thing-provider` 꼴), 공통 base 클래스 존재.
이 단계에서 "왜 패키지를 쪼갰나"도 설명 (의존성 격리 / 버전 독립 / 기여 경계 /