← ClaudeAtlas

using-git-worktreeslisted

격리된 워크스페이스를 확보한다. 네이티브 도구를 우선하고 없을 때만 git worktree로 폴백한다. Use when 기능 작업 착수, 플랜 실행 직전, 현재 워크스페이스와 분리가 필요할 때.
HarryJhin/groundwork · ★ 0 · Code & Development · score 70
Install: claude install-skill HarryJhin/groundwork
# using-git-worktrees 작업이 격리된 워크스페이스에서 일어나게 한다. 에이전트 실행 환경(이 스킬을 돌리는 코딩 에이전트 제품)이 워크트리 도구를 제공하면 그것을 우선한다. 없을 때만 수동 git worktree로 폴백한다. **핵심 원칙**: 기존 격리를 먼저 탐지한다. 그다음 실행 환경의 도구. 그다음 git 폴백. 실행 환경과 싸우지 않는다. ## 입력·출력 **입력**은 새로 만들 브랜치 이름과 기능명이다. 호출자가 넘기면 그것을 쓰고, 넘기지 않으면 지금 착수하는 작업에서 짓되 사용자에게 한 번 확인받는다. 워크트리 디렉터리 선호는 아래 「디렉터리 선택」이 정한 순서로 찾는다. **출력**은 준비된 워크스페이스의 경로와 브랜치 이름, 베이스라인 테스트 결과다. 3단계 보고 문안이 그 형식이고, 워크트리를 만들지 않은 경로에서는 그 사실을 대신 보고한다. 이 스킬은 다음 단계로 자동으로 넘기지 않고 호출자에게 돌아간다. **경로 기준**: 이 문서의 상대 경로는 두 시점으로 갈린다. 0단계와 1단계의 경로는 시작 시점 repo 루트 기준이고, 2단계 이후의 경로는 새로 만든 워크스페이스 루트 기준이다. 각 셸 블록은 그 기준 디렉터리에서 돈다. ## 0단계. 기존 격리 탐지 **무엇을 만들기 전에 이미 격리된 워크스페이스에 있는지 확인한다.** ```bash GIT_DIR=$(cd "$(git rev-parse --git-dir)" 2>/dev/null && pwd -P) GIT_COMMON=$(cd "$(git rev-parse --git-common-dir)" 2>/dev/null && pwd -P) CURRENT_BRANCH=$(git branch --show-current) ``` **아래 셸 블록은 모두 같은 셸에서 돈다.** 여기서 잡은 값을 뒤 블록이 참조하므로, 셸이 끊기면 이 블록부터 다시 돌린다. `CURRENT_BRANCH`는 지금 있는 브랜치이고, 1b에서 새로 만들 브랜치는 `NEW_BRANCH`로 따로 잡는다. **서브모듈 가드**: `GIT_DIR != GIT_COMMON`은 git 서브모듈 안에서도 참이다. "이미 워크트리다"라고 결론짓기 전에 서브모듈이 아닌지 확인한다. ```bash # 경로가 나오면 워크트리가 아니라 서브모듈이다. 일반 repo로 취급한다 git rev-parse --show-superproject-working-tree 2>/dev/null ``` **`GIT_DIR != GIT_COMMON`이고 서브모듈이 아니면**: 이미 연결된 워크트리에 있다. 2단계(프로젝트 셋업)로 건너뛴다. 워크트리를 또 만들지 않는다. 브랜치 상태와 함께 보고한다. - 브랜치 위: "이미 격리된 워크스페이스 `<경로>`, 브랜치 `<이름>`." - detached HEAD: "이미 격리된 워��스페이스 `<경로>`(detached HEAD, 외부 관리). 종료 시점에 브랜치 생성이 필요하다." **`GIT_DIR == GIT_COMMON`이거나 서브모듈이면*