# Superpowers 도입 (2) Git Worktree 격리 워크플로우

## 작업 유형
스킬/워크플로우 문서 + 유틸리티 스크립트 코딩

## 목표
Superpowers의 Git Worktree 격리 패턴을 아누 멀티봇 시스템에 맞게 도입한다.

---

## 참조
- Superpowers 비교분석: `/home/jay/workspace/memory/research/superpowers-vs-anu-comparison.md` (섹션 7.2, 8.3 TOP 2)
- 현재 워크플로우: `/home/jay/workspace/prompts/DIRECT-WORKFLOW.md`
- 기존 스킬 디렉토리: `/home/jay/.claude/skills/` (기존 스킬 구조 참고)
- 프로젝트 경로 규칙: 프로젝트는 `/home/jay/projects/<프로젝트명>/` 에 위치

## 배경
- 현재 아누 시스템은 프로젝트별 독립 git repo로 격리하지만, **기능 브랜치 수준 격리**는 없음
- 멀티봇(1팀/2팀/3팀)이 동시에 같은 프로젝트에서 작업할 때 파일 충돌 위험 존재
- Git worktree를 활용하면 동일 repo에서 격리된 작업 디렉토리 생성 가능

---

## 구현 항목

### 1. Git Worktree 관리 스크립트
- 경로: `/home/jay/workspace/scripts/worktree_manager.py`
- 기능:
  - `create(project_path, task_id, team_id)`: worktree 생성
    - 브랜치명: `task/<task_id>-<team_id>` (예: `task/329.1-dev1`)
    - worktree 경로: `<project_path>/.worktrees/<task_id>-<team_id>/`
    - 기존 worktree 있으면 재사용
  - `finish(project_path, task_id, team_id, action)`: worktree 정리
    - action="merge": 메인 브랜치로 머지 후 worktree 삭제
    - action="discard": 변경 버리고 worktree 삭제
    - action="keep": worktree 유지 (리뷰 대기)
  - `list(project_path)`: 현재 활성 worktree 목록
  - `status(project_path, task_id)`: 특정 worktree 상태 (변경파일 수, 커밋 수 등)
- CLI 인터페이스: `python3 worktree_manager.py create/finish/list/status ...`

### 2. Git Worktree 스킬 파일
- 경로: `/home/jay/.claude/skills/git-worktree-isolation/SKILL.md`
- 내용:
  - worktree 사용 시점: Lv.2+ 작업이고, 프로젝트에 git repo가 있을 때
  - 워크플로우: worktree 생성 → 작업 → 커밋 → 리뷰 → merge/discard
  - 멀티봇 충돌 방지 규칙:
    - 각 팀은 자신의 worktree에서만 작업
    - 메인 브랜치 직접 수정 금지 (worktree 통해서만)
    - merge 시 충돌 발생하면 아누에게 보고 후 수동 해결
  - worktree_manager.py 사용 예시

### 3. DIRECT-WORKFLOW.md 업데이트
- Step 1 (환경 확인) 에 worktree 생성 단계 추가:
  - "프로젝트 git repo 존재 + Lv.2+ 작업이면 worktree 생성"
  - `python3 /home/jay/workspace/scripts/worktree_manager.py create <project> <task_id> <team_id>`
  - 이후 모든 코딩은 worktree 경로에서 수행
- Step 7 (완료 정리) 에 worktree 정리 단계 추가:
  - 메인 브랜치로 merge 또는 아누에게 merge 판단 위임

### 4. dispatch.py 연동 검토
- dispatch.py에서 프로젝트 경로 전달 시 worktree 경로도 함께 전달할 수 있도록
- `--project` 옵션이 있을 때 worktree 자동 생성은 팀장 워크플로우에 위임 (dispatch.py는 건드리지 않음)

---

## 멀티봇 충돌 방지 규칙 (중요)

1. **1프로젝트 1팀 원칙 유지**: 같은 프로젝트에 2팀 이상 동시 투입 시에만 worktree 필수
2. **worktree 네이밍**: `task/<task_id>-<team_id>`로 팀별 고유
3. **merge 권한**: 팀장은 자기 worktree만 merge 가능. 다른 팀 worktree는 건드리지 않음
4. **충돌 시 에스컬레이션**: merge conflict 발생 → 아누에게 보고 → 아누가 판단

---

## 검증
1. worktree_manager.py 단독 테스트 (임시 git repo에서 create/finish/list/status)
2. pyright 에러 0건
3. 스킬 파일 구조 확인 (기존 스킬과 포맷 일관성)
4. DIRECT-WORKFLOW.md 논리적 일관성 확인

## 완료 조건
1. `worktree_manager.py` 4개 명령어 동작 확인
2. `/home/jay/.claude/skills/git-worktree-isolation/SKILL.md` 작성 완료
3. DIRECT-WORKFLOW.md worktree 단계 추가
4. 단독 테스트 PASS