worktree-scaffoldlisted
Install: claude install-skill gagip/gagip-dev
# worktree-scaffold 스킬
대상 레포를 분석해 그 레포 전용 **`scripts/worktree-create.sh`** 한 개를 생성한다. 이후 사용자는 새 worktree가 필요할 때마다
이 스크립트를 실행하면 "즉시 개발 가능한" 상태의 worktree를 얻는다.
## 이 스킬이 푸는 문제 — `git worktree add`의 빈틈
`git worktree add`는 **git이 추적하는 파일만** 새 작업 트리에 실체화한다. 그래서 다음 세 부류는 새 worktree에 빠져 있고,
개발자가 매번 손으로 메꾸다 잊어 "worktree 만들었는데 빌드가 안 돼"가 반복된다:
- **A. 추적 제외된 머신·환경 설정** — `.env`, `local.properties`, 서명 keystore 같은 파일. gitignore돼 있어 안 딸려오지만
값은 그대로 유효하므로 **복사**하면 된다.
- **B. 체크아웃마다 새로 만들어야 하는 산출물** — `node_modules`, 네이티브 코드 생성물, 설치형 git hooks. 복사가 아니라
명령을 **재실행**해 만든다(버전·경로 종속이라 복사하면 깨진다).
- **C. 동시 실행 시 충돌하는 자원** — dev 서버 포트, 임시 디렉터리. worktree마다 **달라야** 하므로 빈 값을 새로 할당한다.
이 스킬의 정신모델은 이 **A(복사)·B(재생성)·C(격리) 3분류**다. 생성하는 스크립트는 항상 이 세 축으로 구조화된다.
## 정체성 — "세팅기"가 아니라 "스크립트 생성기"
worktree를 그 자리에서 직접 세팅해주는 런타임 도우미가 아니다. 이 스킬의 **산출물은 레포에 커밋되어 남는 스크립트**이고,
반복 실행은 사람(또는 CI)이 그 스크립트로 한다. 그래서:
- 스킬은 **한 번** 돌아 레포를 분석하고 스크립트를 쓴다. 이후 워크플로에서 스킬은 빠지고 스크립트만 남는다.
- 팀원·다른 세션이 같은 스크립트를 공유해 **결정적·재현적**으로 worktree를 만든다. AI가 매번 개입해 재감지하지 않는다.
- 레포마다 특이사항이 다르므로 스크립트 내용은 다르지만, **골격(섹션 구조)은 모든 레포에서 동일**하게 유지한다 — 이게
"일관된 형식"의 실체다.
## 워크플로우
### 1단계 — 레포 분석 (특이사항 감지)
대상 레포 루트에서 A·B·C 후보와 관례를 감지한다. **상세 휴리스틱은 [references/detection.md](references/detection.md)를 읽고 따른다.**
핵심만:
- **A 후보**: `.gitignore`(+`.git/info/exclude`)에서 *머신·환경 설정* 패턴을 추리고, 그중 **메인 체크아웃에 실제로 존재하는
파일만** 복사 목록에 넣는다. gitignore됐지만 재생성 대상(`node_modules`·`build/`·`dist/`·`.gradle/`)은 A가 아니라 B다 —
둘을 반드시 구분한다.
- **B 후보**: 패키지 매니저(lockfile로