# 마케팅 시스템 업그레이드 충돌 분석 매트릭스 (task-1054.1)

**작성일:** 2026-03-26
**목적:** 기존 파일 × 변경 사항 간 충돌 위험도를 분석하고 완화 전략을 정의한다.

**위험도 정의:**
- **없음**: 충돌 가능성 0. 기존 파일에 영향 없음.
- **낮음**: 이론적 충돌 가능성 있으나 주의사항만 지키면 안전.
- **중간**: 충돌 시 스킬 동작에 영향 가능. 사전 백업 및 검증 필수.
- **높음**: 충돌 시 시스템 전체 또는 다수 스킬에 영향. 별도 승인 필요.

---

## 매트릭스 1: evals.json 신규 생성 × 기존 파일

| 기존 파일 | 변경 사항 | 충돌 위험도 | 충돌 메커니즘 | 완화 전략 |
|-----------|-----------|-------------|----------------|-----------|
| dispatch.py | evals.json 신규 생성 | **없음** | dispatch.py는 evals.json을 읽지 않음 | 해당 없음 |
| team_prompts.py | evals.json 신규 생성 | **없음** | team_prompts.py는 evals.json을 읽지 않음 | 해당 없음 |
| skills/*/SKILL.md | evals.json 신규 생성 | **없음** | SKILL.md는 evals.json과 독립 실행 | 해당 없음 |
| skills/copywriting/evals/evals.json | 기존 파일 존재 (신규 생성 아님) | **없음** | 신규 생성 대상이 아님, 검증만 수행 | 기존 파일 변경 없이 읽기만 |
| skills/seo-audit/evals/evals.json | 기존 파일 존재 (신규 생성 아님) | **없음** | 신규 생성 대상이 아님, 검증만 수행 | 기존 파일 변경 없이 읽기만 |
| skills/content-strategy/evals/evals.json | 기존 파일 존재 (신규 생성 아님) | **없음** | 신규 생성 대상이 아님, 검증만 수행 | 기존 파일 변경 없이 읽기만 |
| org-details/*.json | evals.json 신규 생성 | **없음** | 완전히 별개 파일 | 해당 없음 |

**결론:** evals.json 신규 생성은 모든 기존 파일과 충돌 없음. 가장 안전한 변경.

---

## 매트릭스 2: Before Starting 섹션 추가 × 기존 파일

| 기존 파일 | 변경 사항 | 충돌 위험도 | 충돌 메커니즘 | 완화 전략 |
|-----------|-----------|-------------|----------------|-----------|
| dispatch.py | SKILL.md 본문 추가 | **없음** | dispatch.py는 description frontmatter만 파싱, 본문은 읽지 않음 | 해당 없음 |
| team_prompts.py | SKILL.md 본문 추가 | **없음** | 본문 변경은 team_prompts.py에 영향 없음 | 해당 없음 |
| skills/blog-dominance/SKILL.md (트리거 시스템) | Before Starting 섹션 추가 | **낮음** | 섹션 추가 위치가 잘못될 경우 트리거 시스템 섹션 앞 구조 변화 | Before Starting을 헤딩 바로 아래, 트리거 시스템 섹션 이전에 삽입. diff 검증 필수. |
| skills/geo-optimizer/SKILL.md | Before Starting 섹션 추가 | **낮음** | 동일 | 동일 |
| skills/thread-architect/SKILL.md (트리거 시스템) | Before Starting 섹션 추가 | **낮음** | 동일 | 동일 |
| skills/naver-seo/SKILL.md (트리거 시스템) | Before Starting 섹션 추가 | **낮음** | 동일 | 동일 |
| skills/ad-creative/SKILL.md ("시작 전 확인" 섹션) | Phase 2 미대상 (이미 참조 포함) | **없음** | 변경 대상 아님 | 해당 없음 |
| skills/paid-ads/SKILL.md ("시작 전 확인" 섹션) | Phase 2 미대상 (이미 참조 포함) | **없음** | 변경 대상 아님 | 해당 없음 |
| skills/analytics-tracking/SKILL.md ("시작 전 확인" 섹션) | Phase 2 미대상 (이미 참조 포함) | **없음** | 변경 대상 아님 | 해당 없음 |

**결론:** Before Starting 섹션 추가는 본문만 수정하며, 삽입 위치만 주의하면 낮은 위험도. 백업 후 diff 검증으로 완화 가능.

---

## 매트릭스 3: description 라우팅 보강 × 기존 파일

| 기존 파일 | 변경 사항 | 충돌 위험도 | 충돌 메커니즘 | 완화 전략 |
|-----------|-----------|-------------|----------------|-----------|
| dispatch.py | description 내용 변경 | **낮음** | dispatch.py가 description 필드로 스킬 선택 시, 내용 변경이 라우팅 동작에 영향. YAML 구조 유지하면 파싱은 정상. | YAML frontmatter 구조(따옴표, 들여쓰기) 절대 변경 금지. 내용(string 값)만 수정. python yaml.safe_load로 사전 검증. |
| team_prompts.py | description 내용 변경 | **낮음** | description 내용이 팀 프롬프트 어셈블리에 사용될 경우 변화 가능성 | description에 새 내용 추가 시 기존 트리거 키워드 반드시 보존 |
| skills/copywriting/SKILL.md (기존 "For email copy" 라우팅) | description 라우팅 보강 | **낮음** | 기존 라우팅 패턴이 이미 있는 경우 중복 추가 또는 충돌 가능성 | 기존 description 끝에 추가. 기존 라우팅 문구 삭제 금지. 중복 확인 후 미중복 항목만 추가. |
| skills/seo-audit/SKILL.md (기존 "For X, see Y" 라우팅) | description 라우팅 보강 | **낮음** | 동일 | 동일 |
| skills/blog-dominance/SKILL.md (기존 "NOT for:" 패턴) | description 라우팅 표준화 | **낮음** | 기존 NOT for 패턴이 있으나 형식이 다를 경우 | 기존 NOT for 문구를 삭제하지 않고 표준 형식으로 통합. 내용 손실 없이 형식만 정렬. |
| skills/geo-optimizer/SKILL.md (기존 "NOT for:" 패턴) | description 라우팅 표준화 | **낮음** | 동일 | 동일 |
| skills/naver-seo/SKILL.md (기존 "NOT for:" 패턴) | description 라우팅 표준화 | **낮음** | 동일 | 동일 |
| org-details/*.json | description 내용 변경 | **없음** | 완전히 별개 | 해당 없음 |

**결론:** description 라우팅 보강은 YAML frontmatter 구조 보존이 핵심 완화 전략. 기존 내용 삭제 금지, 추가만 허용.

---

## 매트릭스 4: Phase 간 상호 충돌

| Phase A | Phase B | 충돌 위험도 | 충돌 메커니즘 | 완화 전략 |
|---------|---------|-------------|----------------|-----------|
| Phase 1 (evals) | Phase 2 (context) | **없음** | 서로 다른 파일 타입(evals.json vs SKILL.md 본문) | 순차 실행, 독립성 보장됨 |
| Phase 1 (evals) | Phase 3 (routing) | **없음** | evals.json과 description frontmatter 독립 | 순차 실행, 독립성 보장됨 |
| Phase 2 (context) | Phase 3 (routing) | **중간** | 같은 SKILL.md 파일을 순차적으로 수정 (blog-dominance, geo-optimizer, naver-seo, thread-architect) | Phase 2 완료 및 검증 후 Phase 3 진행. Phase 2 수정 완료본을 Phase 3의 베이스라인으로 사용. 동시 수정 금지. |
| Phase 1~3 | Phase 4 (검증) | **없음** | Phase 4는 검증만 수행, 파일 수정 없음 | Phase 1~3 완전 완료 후 Phase 4 실행 |

**결론:** Phase 2와 Phase 3이 동일 파일(blog-dominance, geo-optimizer, naver-seo, thread-architect)을 수정하므로 순차 실행 필수. 중간 위험도.

---

## 매트릭스 5: 핵심 보호 파일 × 모든 변경 사항

| 보호 파일 | 변경 사항 전체 | 위험도 | 보호 방법 |
|-----------|---------------|--------|-----------|
| dispatch.py | Phase 1~4 전체 | **없음** | 변경 대상 목록에 포함 금지. 변경 전 목록 재확인. |
| team_prompts.py | Phase 1~4 전체 | **없음** | 동일 |
| org-details/*.json | Phase 1~4 전체 | **없음** | 동일 |
| skills/*/Core Principles 섹션 | Phase 2, 3 | **낮음** | 섹션 이름 확인 후 변경 범위 외 포함 여부 체크. V5 검증으로 감지. |
| skills/*/Output Format 섹션 | Phase 2, 3 | **낮음** | 동일 |

---

## 위험도 요약

| 변경 항목 | 최대 위험도 | 영향 파일 수 |
|-----------|-------------|-------------|
| evals.json 신규 생성 (5개) | **없음** | 0 (기존 파일 영향 없음) |
| evals.json 기존 검증 (3개) | **없음** | 0 |
| Before Starting 섹션 추가 (4개) | **낮음** | 4개 SKILL.md |
| description 라우팅 보강 (우선순위 1) | **낮음** | 6개 SKILL.md |
| description 라우팅 보강 (전체) | **낮음** | 최대 31개 SKILL.md |
| Phase 2-3 동일 파일 순차 수정 | **중간** | 4개 SKILL.md |
| 통합 검증 스크립트 | **없음** | 0 (신규 생성만) |

**전체 평가:** 이번 업그레이드의 최대 위험도는 "중간"이며, 이는 Phase 2와 3이 동일한 4개 스킬을 순차 수정하는 경우에만 해당. 순차 실행 원칙을 지키면 실질적 위험도는 "낮음"으로 관리 가능.

---

## 완화 전략 요약 (공통 원칙)

1. **수정 전 백업 필수**: SKILL.md 수정 전 `/home/jay/workspace/backups/marketing-upgrade-20260326/`에 원본 저장
2. **추가만, 삭제 금지**: description, Before Starting 섹션 변경 시 기존 내용 삭제 절대 금지
3. **YAML 구조 보존**: description frontmatter의 따옴표 형식, 들여쓰기 변경 금지
4. **diff 검증**: 각 파일 수정 후 백업본과 diff 비교하여 의도된 변경만 적용됨을 확인
5. **순차 실행**: Phase 2 완전 완료 후 Phase 3 진행 (특히 blog-dominance, geo-optimizer, naver-seo, thread-architect)
6. **존재 확인**: 라우팅에서 참조하는 스킬명은 실제 `skills/` 디렉토리에 존재하는지 확인 후 사용

---

*충돌 분석 매트릭스 버전: 1.0 | task-1054.1*
