# task-930.2 완료 보고서: 스킬 자기학습 시스템 데이터/인프라 파일

## SCQA

**S**: 스킬 품질 평가 + 자기학습 시스템(v1.2)의 설계가 확정되어, 83개 스킬에 대한 평가 축/레지스트리/학습 축적 인프라 구현이 필요하다.

**C**: 설계서에서 요구하는 5개 산출물(eval-axes.json, skill-registry.json, learnings.jsonl 스키마, TTL 아카이브, 디렉토리 초기화)이 모두 미구현 상태이며, 83개 스킬 각각의 SKILL.md를 실제로 읽고 판단해야 한다.

**Q**: 83개 스킬의 평가 축/레지스트리를 자동 생성하고, learnings 인프라(TTL 아카이브 + 스킬 격리 + source tagging)를 구현하여 자기학습 시스템의 데이터 레이어를 완성할 수 있는가?

**A**: 83개 스킬 전체의 eval-axes.json(평가 축 3~5개/스킬)과 skill-registry.json(메타데이터)을 생성하고, learnings-archiver.py(TTL 아카이브 + 스킬 격리 필터 + source tagging)를 구현했다. pytest 17/17 통과, pyright 0 에러. 통합 검증에서 3건의 이슈를 발견하여 모두 수정 완료.

---

## 생성/수정 파일 목록

**신규 생성:**
- `/home/jay/.claude/skills/shared/eval-axes.json` (16KB) — 83개 스킬별 평가 축 3~5개 + type 분류
- `/home/jay/.claude/skills/shared/skill-registry.json` (20KB) — 83개 스킬 메타데이터 레지스트리
- `/home/jay/workspace/scripts/learnings_archiver.py` (10KB) — TTL 아카이브 + 스킬 격리 필터 + source tagging CLI
- `/home/jay/workspace/scripts/tests/test_learnings_archiver.py` (19KB) — 17개 테스트 케이스
- `/home/jay/workspace/memory/skill-learning/` — 디렉토리 + 빈 JSONL 파일들
- `/home/jay/workspace/memory/skill-learning/learnings.jsonl` — 빈 파일 (초기 상태)
- `/home/jay/workspace/memory/skill-learning/learnings-archive.jsonl` — 빈 파일
- `/home/jay/workspace/memory/skill-learning/champions/` — 디렉토리
- `/home/jay/workspace/memory/skill-learning/champions-archive/` — 디렉토리
- `/home/jay/workspace/memory/skill-feedback/` — 디렉토리

---

## 주요 구현 내용

### 1. eval-axes.json (83개 스킬)
- 각 스킬의 SKILL.md를 실제로 읽고 평가 축 도출 (3개 배치 × Sonnet 병렬 처리)
- Business 50개, System 33개 분류
- 축 개수: 3~5개 범위 충족

### 2. skill-registry.json (83개 스킬)
- type + description + benchmark_method + has_champion 구조
- benchmark_method 정합성: business=online_expert, system=cross_model (불일치 0건)

### 3. learnings-archiver.py
- `archive_expired()`: 만료 항목 → archive 이동, append-only 보장
- `get_learnings(skill_name)`: 스킬별 격리 필터 (크로스 오염 방지)
- `add_learning()`: 6종 source 유효성 검증, jay-feedback은 expires_at=null
- WORKSPACE_ROOT: 환경변수 우선, 없으면 스크립트 위치 기준 추론 (절대경로 하드코딩 없음)
- CLI: `archive`, `get --skill`, `add --skill --source --learning`

### 4. Source Tagging 6종
self-review, cross-model, jay-feedback(immutable), online-expert, github-learn, champion-battle

---

## 테스트 결과

- **pytest**: 17/17 passed (0.11s)
- **pyright**: 0 errors, 0 warnings, 0 informations
- **eval-axes.json 검증**: 83개 스킬, 모든 axes 3~5개, type 존재
- **skill-registry.json 검증**: 83개 스킬, type/benchmark 정합성 0 불일치, 두 파일 간 스킬 목록 100% 일치
- **CLI 검증**: add/get/archive 3개 명령 모두 정상 동작

---

## 발견 이슈 및 해결

### 자체 해결 (3건)

1. **satori-cardnews 분류 오류** — 설계서 Section 2에 "ThreadAuto 카드뉴스"가 business로 명시되어 있으나 system으로 분류됨. business + online_expert로 수정.
   - 원인: SKILL.md의 기술적 구현(HTML/CSS→SVG) 기술에 착목하여 system으로 분류한 오판
   - 수정: eval-axes.json + skill-registry.json 양쪽 모두 type=business, benchmark=online_expert로 수정

2. **hybrid-image 분류 오류** — 광고 이미지 생성 목적(디자인/콘텐츠)임에도 system으로 분류됨. business + online_expert로 수정.
   - 원인: 파이프라인 기술 특성에 착목한 오판
   - 수정: 위와 동일

3. **jay-feedback immutable 규칙 미준수** — `_is_expired()` 함수가 expires_at=None만 확인하고 source=="jay-feedback" 체크 누락. 수동으로 expires_at이 설정된 jay-feedback 항목이 아카이브될 수 있는 보안 취약점.
   - 원인: jay-feedback의 TTL 무관 영구 유지 규칙이 코드에 불완전 반영
   - 수정: `_is_expired()`에 `if entry.get("source") == "jay-feedback": return False` 추가
   - 테스트도 동시 수정: `test_jay_feedback_with_expired_date_NOT_archived` (assert count == 0)

---

## 스킬 분류 요약 (83개)

- **Business (50개)**: ab-test-setup, ad-creative, ai-seo, analytics-tracking, blog-dominance, book-writer, canvas-design, churn-prevention, cold-email, competitor-alternatives, competitor-analyst, content-strategy, conversion-copywriter, copy-editing, copywriting, copywriting-prompt, email-sequence, form-cro, free-tool-strategy, gemini-image, geo-optimizer, human-writer, hybrid-image, insight-extractor, launch-strategy, lead-magnets, marketing-ideas, marketing-psychology, marketing-strategist, naver-seo, onboarding-cro, page-cro, paid-ads, paywall-upgrade-cro, popup-cro, pricing-strategy, product-marketing-context, programmatic-seo, referral-program, research-prompt, revops, sales-enablement, satori-cardnews, schema-markup, seo-audit, signup-flow-cro, site-architecture, social-content, strategy-prompt, thread-architect
- **System (33개)**: 3docs-create, advanced-crawling, adversarial-review, agent-meeting, claude-api, cross-verified-research, deep-dive-analyzer, docx, find-skills, frontend-design, fullstack-builder, git-worktree-isolation, image-gen-guide, mcp-builder, nuclear-approval, pdf, pdp-agent, playwright-generate-test, project-kickoff, retro, ship, skill-creator, subagent-driven-development, supabase-postgres-best-practices, swing-clarify, swing-mortem, swing-options, swing-trace, systematic-debugging, tdd-enforcement, vercel-react-best-practices, verification-before-completion, webapp-testing

---

## 비고

- 스킬 수 83개 (task에서 84개로 기술했으나 shared 제외 실측 83개)
- conversion-copywriter는 DEPRECATED (SKILL.md에 명시) — 레지스트리에 포함하되 description에 [DEPRECATED] 표기
- learnings.jsonl의 TTL: 초기 3개월은 60일 (설계서 권장 준수)
