--- name: workspace-reorganize-orchestrator description: "C:\\GUARDiA 모노레포의 소스를 workspace/ 하위로 통합 재구성하는 오케스트레이터. itsm/→workspace/guardia-itsm/, manager/→workspace/guardia-manager/, app/→workspace/guardia-messenger/, manual/→workspace/guardia-docs/ 이동. git mv로 히스토리 보존, 모든 경로 참조 일괄 업데이트. 다음 상황에서 반드시 사용: (1) 'workspace로 이동', '소스 workspace 통합', '프로젝트별 workspace 정리'; (2) 'git mv 히스토리 보존 이동'; (3) 이동 후 경로 참조 업데이트; (4) 다시 실행, 업데이트, 수정, 보완." --- # workspace 통합 재구성 오케스트레이터 **실행 모드:** 파이프라인 (순차 서브 에이전트) `workspace-mover` → `path-updater` → `integrity-checker` --- ## 목표 구조 ``` 현재 이동 후 C:\GUARDiA\ C:\GUARDiA\ ├── workspace/ └── workspace/ │ └── zioinfo-web/ ├── zioinfo-web/ (유지) ├── itsm/ → ├── guardia-itsm/ (itsm/) ├── manager/ → ├── guardia-manager/ (manager/) ├── app/ → ├── guardia-messenger/ (app/) └── manual/ → └── guardia-docs/ (manual/) ``` --- ## Phase 0: 사전 확인 ```bash cd C:\GUARDiA # 미커밋 변경사항 확인 (없어야 함) git status --short | grep -v "^??" | head -10 # 이동 대상 디렉토리 존재 확인 for d in itsm manager app manual; do [ -d "$d" ] && echo "OK: $d exists" || echo "SKIP: $d not found" done # workspace/ 디렉토리 존재 확인 [ -d "workspace" ] && echo "OK: workspace exists" ``` ⚠️ **사전 조건:** - 미커밋 변경사항 없을 것 (있으면 먼저 커밋 또는 stash) - `workspace/` 디렉토리 존재할 것 --- ## Phase 1: git mv 이동 (workspace-mover) ```bash cd C:\GUARDiA # 4개 디렉토리 이동 (한 번에 처리) git mv itsm workspace/guardia-itsm git mv manager workspace/guardia-manager git mv app workspace/guardia-messenger git mv manual workspace/guardia-docs # 상태 확인 git status --short | head -20 # 하나의 커밋으로 처리 git commit -m "refactor(structure): consolidate all projects under workspace/ - itsm/ → workspace/guardia-itsm/ - manager/ → workspace/guardia-manager/ - app/ → workspace/guardia-messenger/ - manual/ → workspace/guardia-docs/ workspace/zioinfo-web/ unchanged. git mv preserves full commit history." ``` --- ## Phase 2: 경로 참조 업데이트 (path-updater) ### 2-1. CLAUDE.md (루트) 업데이트 경로 매핑: ``` itsm/ → workspace/guardia-itsm/ manager/ → workspace/guardia-manager/ app/ → workspace/guardia-messenger/ manual/ → workspace/guardia-docs/ --prefix=itsm → --prefix=workspace/guardia-itsm --prefix=manager → --prefix=workspace/guardia-manager --prefix=app → --prefix=workspace/guardia-messenger --prefix=manual → --prefix=workspace/guardia-docs ``` ### 2-2. .claude/agents/repo-splitter.md 업데이트 ```markdown # 이전 git subtree split --prefix=itsm -b split/guardia-itsm git subtree split --prefix=manager -b split/guardia-manager git subtree split --prefix=app -b split/guardia-messenger git subtree split --prefix=manual -b split/guardia-docs # 이후 git subtree split --prefix=workspace/guardia-itsm -b split/guardia-itsm git subtree split --prefix=workspace/guardia-manager -b split/guardia-manager git subtree split --prefix=workspace/guardia-messenger -b split/guardia-messenger git subtree split --prefix=workspace/guardia-docs -b split/guardia-docs ``` ### 2-3. .claude/skills/repo-split-orchestrator/SKILL.md 업데이트 subtree split prefix 경로 모두 업데이트. ### 2-4. 수동 변경 후 커밋 ```bash git add .claude/ CLAUDE.md git commit -m "refactor(paths): update all path references after workspace reorganization" ``` --- ## Phase 3: 무결성 검증 (integrity-checker) ```bash # 히스토리 보존 확인 git log --oneline --follow workspace/guardia-itsm/main.py | head -3 # 구조 확인 ls workspace/ # 예상: guardia-docs guardia-itsm guardia-manager guardia-messenger zioinfo-web # 원본 경로 없음 확인 test ! -d itsm && test ! -d manager && test ! -d app && test ! -d manual echo "원본 디렉토리 제거 완료" # 경로 참조 잔재 확인 grep -r "\"itsm" CLAUDE.md 2>/dev/null | grep -v "guardia-itsm" && echo "WARN" || echo "OK" grep -r "prefix=app" .claude/ 2>/dev/null | grep -v "guardia-messenger" && echo "WARN" || echo "OK" ``` --- ## 완료 후 변경 필요 항목 (manual 작업) 서버의 `deploy_server.py`는 서버 소스 경로(독립 repo)를 참조하므로 **변경 불필요**. 독립 repos(`C:\GUARDiA\repos\`)는 이미 분리됐으므로 **변경 불필요**. --- ## 에러 핸들링 | 오류 | 원인 | 해결 | |------|------|------| | `git mv` 실패 | 미커밋 변경사항 | `git stash` 후 재실행 | | 타겟 경로 존재 | 이미 이동됨 | `git status` 확인 | | 히스토리 단절 | 일반 mv 사용 | `git log --follow`로 확인 | | 경로 참조 누락 | grep으로 탐지 | 수동 수정 | --- ## 테스트 시나리오 **정상:** git mv 4개 → 히스토리 확인 → 경로 업데이트 → grep 잔재 없음 **에러:** itsm/ 없음 → "SKIP: itsm not found" 경고 후 나머지 진행