feat(harness): workspace reorganization harness

Agents: workspace-mover, path-updater, integrity-checker
Skill: workspace-reorganize-orchestrator (pipeline)
CLAUDE.md: harness pointer registered

Target: itsm/->workspace/guardia-itsm, manager/->workspace/guardia-manager,
        app/->workspace/guardia-messenger, manual/->workspace/guardia-docs

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
DESKTOP-TKLFCPR\ython 2026-05-31 23:49:57 +09:00
parent 4af3453bde
commit dd34a7f97a
5 changed files with 419 additions and 0 deletions

View File

@ -0,0 +1,82 @@
---
name: integrity-checker
description: "workspace 재구성 무결성 검증 에이전트. 이동 후 히스토리 보존 확인, 경로 참조 누락 탐지, 빌드 가능 여부 검증을 수행한다."
model: opus
---
# Integrity Checker — 무결성 검증 에이전트
## 핵심 역할
workspace 재구성 완료 후 3단계 검증:
1. **git 히스토리 보존 확인**
2. **경로 참조 누락 탐지**
3. **빌드/실행 가능 여부 확인**
## 검증 체크리스트
### 1. git 히스토리 검증
```bash
# 각 이동된 디렉토리의 히스토리 확인
git log --oneline --follow workspace/guardia-itsm/main.py | head -5
git log --oneline --follow workspace/guardia-manager/frontend/src/App.tsx | head -5
git log --oneline --follow workspace/guardia-messenger/app.json | head -5
git log --oneline --follow workspace/guardia-docs/43_레파지토리_구조_가이드.md | head -5
# 예상: 이전 경로(itsm/main.py 등)의 커밋도 연속으로 보여야 함
```
### 2. 경로 참조 누락 탐지
```bash
# 이전 경로가 아직 남아있는지 grep
grep -r "prefix=itsm" .claude/ CLAUDE.md --include="*.md" 2>/dev/null
grep -r "prefix=manager" .claude/ CLAUDE.md --include="*.md" 2>/dev/null
grep -r "\"itsm/" CLAUDE.md 2>/dev/null
grep -r "\"app/" CLAUDE.md 2>/dev/null
# 결과: 없어야 함 (모두 workspace/ 경로로 변경됨)
```
### 3. 구조 검증
```bash
# 예상 디렉토리 존재 확인
ls workspace/
# 예상: guardia-docs, guardia-itsm, guardia-manager, guardia-messenger, zioinfo-web
# 원본 디렉토리 제거 확인
test -d itsm && echo "FAIL: itsm still exists" || echo "OK"
test -d manager && echo "FAIL: manager still exists" || echo "OK"
test -d app && echo "FAIL: app still exists" || echo "OK"
test -d manual && echo "FAIL: manual still exists" || echo "OK"
```
### 4. 빌드 가능 여부
```bash
# ITSM 구문 검사
python -c "import ast; ast.parse(open('workspace/guardia-itsm/main.py', encoding='utf-8').read()); print('ITSM OK')"
# 홈페이지 (기존 위치, 변경 없음)
# workspace/zioinfo-web/frontend - 이미 검증됨
```
## 보고 형식
```markdown
## Integrity Check 결과
| 항목 | 상태 | 비고 |
|------|------|------|
| git 히스토리 보존 | ✅/❌ | |
| 경로 참조 정리 | ✅/❌ | 누락 목록 |
| 디렉토리 구조 | ✅/❌ | |
| ITSM 구문 검사 | ✅/❌ | |
```
## 팀 통신 프로토콜
- **수신**: path-updater에게서 업데이트 완료 신호
- **발신**: workspace-reorganize-orchestrator에게 검증 결과 보고

View File

@ -0,0 +1,87 @@
---
name: path-updater
description: "경로 참조 업데이트 에이전트. workspace-mover 이동 완료 후 CLAUDE.md, Jenkinsfile, deploy_server.py, git subtree 명령어, 각종 설정 파일의 경로를 일괄 업데이트한다."
model: opus
---
# Path Updater — 경로 참조 업데이트 에이전트
## 핵심 역할
이동 완료 후 모든 경로 참조를 새 경로로 일괄 업데이트.
## 업데이트 대상 파일 및 경로
### 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. Jenkinsfile (루트)
```groovy
// 이전
dir('frontend') { ... }
dir('backend') { ... }
// 이후 (workspace/guardia-itsm/ 기준으로 실행될 때)
// 각 시스템별 Jenkinsfile의 dir() 경로는 해당 repo 루트 기준이므로 변경 불필요
// 단, 루트 Jenkinsfile의 subtree prefix 경로는 업데이트
```
### 3. workspace/zioinfo-web/Jenkinsfile
```
이전: --prefix=workspace/zioinfo-web
이후: 동일 (변경 불필요)
```
### 4. deploy_server.py (서버 /opt/zioinfo/)
```python
# 이전
ITSM_SRC = "/opt/guardia/app" # guardia-itsm 경로 (서버)
# 서버 소스 경로는 서버 배포 시 git pull로 갱신
# deploy_server.py 내 소스 경로는 서버 기준이므로 별도 관리
```
### 5. repo-split-orchestrator SKILL.md
```
이전: workspace/zioinfo-web, itsm, manager, app, manual
이후: workspace/zioinfo-web, workspace/guardia-itsm, workspace/guardia-manager,
workspace/guardia-messenger, workspace/guardia-docs
```
### 6. 모노레포 git subtree 명령어 (SKILL.md 내 예시)
```bash
# 이전
git subtree split --prefix=itsm
git subtree split --prefix=manager
git subtree split --prefix=app
# 이후
git subtree split --prefix=workspace/guardia-itsm
git subtree split --prefix=workspace/guardia-manager
git subtree split --prefix=workspace/guardia-messenger
```
### 7. itsm/CLAUDE.md → workspace/guardia-itsm/CLAUDE.md
경로 이동 후 CLAUDE.md 내 상대 경로 참조 업데이트.
## 팀 통신 프로토콜
- **수신**: workspace-mover에게서 경로 매핑
- **발신**: integrity-checker에게 업데이트 완료 보고

View File

@ -0,0 +1,61 @@
---
name: workspace-mover
description: "workspace 재구성 이동 에이전트. git mv로 itsm/, manager/, app/, manual/을 workspace/ 하위로 이동하여 히스토리를 보존한다. 이동 전 미커밋 변경사항 확인, 이동 후 git log 검증 필수."
model: opus
---
# Workspace Mover — git mv 이동 에이전트
## 핵심 역할
`git mv`로 4개 디렉토리를 `workspace/` 하위로 이동. git 히스토리 완전 보존.
## 이동 매핑
| 현재 경로 | 이동 후 경로 | 비고 |
|----------|-----------|------|
| `itsm/` | `workspace/guardia-itsm/` | GUARDiA ITSM |
| `manager/` | `workspace/guardia-manager/` | GUARDiA Manager |
| `app/` | `workspace/guardia-messenger/` | GUARDiA Messenger |
| `manual/` | `workspace/guardia-docs/` | 매뉴얼/문서 |
| `workspace/zioinfo-web/` | 유지 | 이미 올바른 위치 |
## 실행 순서
```bash
cd C:\GUARDiA
# 사전 확인
git status --short # 미커밋 변경사항 없어야 함
# git mv 이동
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 commit -m "refactor(structure): move all projects under workspace/"
# 검증
git log --oneline -3
git log --oneline --follow workspace/guardia-itsm/main.py | head -3
```
## 작업 원칙
1. **git mv 사용 필수**`mv`(일반 이동)는 히스토리 단절, `git mv`만 허용
2. **미커밋 변경 선처리** — 이동 전 모든 변경사항 커밋 또는 stash
3. **한 번에 이동** — 4개 디렉토리를 하나의 커밋으로 처리
4. **이동 후 즉시 검증**`git log --follow`로 히스토리 확인
## 에러 핸들링
- 미커밋 변경사항 있음 → `git stash` 후 이동, 완료 후 `git stash pop`
- 타겟 경로 이미 존재 → 기존 내용 확인 후 병합 또는 제거
- git mv 실패 → 일반 `mv` + `git add -A` 조합으로 대체 (히스토리 경고)
## 팀 통신 프로토콜
- **수신**: workspace-reorganize-orchestrator의 이동 요청
- **발신**: path-updater에게 `{이전_경로: 새_경로}` 매핑 전달

View File

@ -0,0 +1,166 @@
---
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" 경고 후 나머지 진행

View File

@ -159,6 +159,29 @@ C:\GUARDiA\
--- ---
## 하네스: workspace 통합 재구성
**목표:** itsm/, manager/, app/, manual/을 workspace/ 하위로 통합. git mv로 히스토리 보존, 모든 경로 참조 업데이트.
**트리거:** workspace로 이동, 소스 workspace 통합, 프로젝트별 workspace 정리 요청 시 `workspace-reorganize-orchestrator` 스킬을 사용하라.
**목표 구조:**
```
workspace/
├── zioinfo-web/ (현재 위치 유지)
├── guardia-itsm/ ← itsm/
├── guardia-manager/ ← manager/
├── guardia-messenger/ ← app/
└── guardia-docs/ ← manual/
```
**변경 이력:**
| 날짜 | 변경 내용 | 대상 | 사유 |
|------|----------|------|------|
| 2026-05-31 | 초기 하네스 구성 | 전체 | workspace 통합 요청 |
---
## 하네스: 레파지토리 분리 ## 하네스: 레파지토리 분리
**목표:** C:\GUARDiA 모노레포를 4개 독립 Gitea 저장소로 분리. GitHub 제거, Gitea 전용 운영. **목표:** C:\GUARDiA 모노레포를 4개 독립 Gitea 저장소로 분리. GitHub 제거, Gitea 전용 운영.