← ClaudeAtlas

worktree-scaffoldlisted

레포의 환경·특이사항을 분석해 그 레포 전용 git worktree 부트스트랩 스크립트(`scripts/worktree-create.sh`)를 일관된 골격으로 생성하는 스킬. `git worktree add`가 자동으로 안 딸려오는 것 — 추적 제외된 머신·환경 설정 (`.env`·`local.properties`·keystore 등), 체크아웃마다 새로 만들어야 하는 산출물(node_modules·네이티브 생성물·git hooks), 동시 실행 시 충돌하는 자원(dev 서버 포트·임시 디렉터리) — 을 자동 감지해, 복사(A)·재생성(B)·격리(C) 3단계와 실패 롤백을 갖춘 스크립트를 만든다. 스킬 자신이 매번 세팅하는 게 아니라, 레포에 남아 재사용되는 스크립트를 짜주는 생성기다. 다음 표현이 나오면 반드시 이 스킬을 사���한다: "worktree 셋업 스크립트 만들어줘", "worktree 생성 스크립트 짜줘", "worktree bootstrap 스크립트", "새 worktree에서 바로 개발되게 해줘", "worktree 만들면 .env/설정 자동 복사되게", "병렬 작업용 worktree 스크립트", "worktree-create.sh 만들어줘". worktree를 새로 만들면 빌드가 깨지거나 설정 파일이 없어 매번 손으로 채운다고 호소할 때도, 사용자가 명시적으로 "스크립트"라 부르지 않아도 이 스킬로 해결한다.
gagip/gagip-dev · ★ 0 · Code & Development · score 63
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로