description: "사이트 콘텐츠 검증. 예: /rpd-check, /rpd-check week 5, /rpd-check all, /rpd-check showme, /rpd-check --fix. DO NOT use for: 코드 품질 검증(/quality 사용), 배포 확인(/deploy 사용)" allowed-tools: Read, Glob, Grep, Bash(ls:), Bash(wc:), Bash(stat:), Bash(npx serve:), Bash(git diff:*), Agent, Write, Edit
Context
- 워크트리 위치: !
git worktree list 2>/dev/null | head -3 - 전체 주차 수: !
python3 -c "import json; d=json.load(open('course-site/data/curriculum.json')); print(len(d))" 2>/dev/null || echo "?" - 이미지 파일 수: !
find course-site/assets/images -type f ! -name '.gitkeep' 2>/dev/null | wc -l | tr -d ' ' - ShowMe 카드 수: !
ls course-site/assets/showme/*.html 2>/dev/null | grep -v _template | wc -l | tr -d ' ' - Registry 항목 수: !
grep -c "\"label\"" course-site/assets/showme/_registry.js 2>/dev/null || echo 0 - Supplement 항목 수: !
python3 -c "import json; d=json.load(open('course-site/assets/showme/_supplements.json')); print(len(d))" 2>/dev/null || echo "?"
Task
인자: $ARGUMENTS
모드 분기
| 인자 | 동작 |
|------|------|
| (없음) | Phase 1 전체 데이터 검증 (Smart Scoping 적용) |
| week {N} | Phase 1 + Phase 2 해당 주차 |
| all | Phase 1 + Phase 2 전체 (15주) |
| showme | ShowMe 카드 시스템만 집중 검증 |
| --fix | 검증 + 자동 수정 가능 항목 수정 (다른 인자와 조합 가능) |
Smart Scoping (인자 없을 때)
인자 없이 /rpd-check 실행 시, 최근 변경 파일 기반으로 관련 검증을 우선 실행:
git diff --name-only HEAD~3
| 변경 패턴 | 우선 검증 |
|----------|----------|
| course-site/assets/showme/ | 1.3 ShowMe 카드 체인 |
| course-site/assets/images/ | 1.1 이미지 검증 |
| course-site/data/curriculum* 또는 overrides.json | 1.4 데이터 구조 + 1.8 동기화 |
| 변경 없음 | Phase 1 전체 |
우선 검증 결과를 먼저 출력한 뒤, 나머지 Phase 1 항목도 실행.
Phase 1: Data Audit
curriculum.json을 읽고 아래 7개 카테고리를 검증한다.
결과를 내부 리스트에 수집하며, 각 이슈에 severity를 부여한다: critical / warning / info.
1.1 이미지 검증 (critical)
curriculum.json읽기- 각 week → 각 step에서
image(string) 또는images(array) 필드 추출 - 각 경로에 대해
course-site/기준으로 Glob 또는 Read로 파일 존재 확인 - 파일 없으면 →
[CRITICAL] 이미지 누락: {path} ← week {N} step "{title}" - 파일 크기 0이면 →
[CRITICAL] 빈 이미지: {path}
1.2 텍스트 완전성 (warning)
- 각 step:
title과copy필드가 존재하고 빈 문자열이 아닌지 - 각 task:
label필드가 존재하고 빈 문자열이 아닌지 - 깨진 문자 패턴 감지:
□,\ufffd,???포함 여부 - 문제 시 →
[WARNING] 빈 텍스트: week {N} step "{title}" → {field}
1.3 ShowMe 카드 체인 (critical/warning)
전체 체인 검증 — 4단계:
- curriculum.json에서 모든 showme ID 수집 (step.showme + step.widgets[].id)
- 각 ID에 대해:
_registry.js의 SHOWME_REGISTRY에 키 존재? → 없으면[CRITICAL]course-site/assets/showme/{id}.html파일 존재? → 없으면[CRITICAL]_supplements.json에 키 존재? → 없으면[WARNING]- supplement에 필수 필드 (analogy, before_after, confusion, takeaway) 모두 존재? → 없으면
[WARNING]
_catalog.json의 categoryMap에서 모든 registry ID가 최소 1개 카테고리에 포함되어 있는지 → 없으면[INFO]
1.4 데이터 구조 (critical)
- 각 week 객체:
week,title,steps필드 존재 - 각 step 객체:
title,copy필드 존재 (tasks는 없을 수 있음) - task가 있으면:
id,label필드 존재 - task ID 형식:
/^w\d+-t\d+$/패턴 매칭 - 전체 task ID 유니크 확인 (중복 시
[CRITICAL]) - week 번호 1~15 연속 확인 (빠진 주차 시
[WARNING])
1.5 링크/URL (warning)
docs[].url,videos[].url→https://시작하는지 형식 확인task.url필드 존재 시 형식 확인downloads필드의 파일 경로 → 파일 존재 확인- 주의: 외부 URL에 실제 HTTP 요청은 보내지 않는다 (속도 문제). 형식만 검증.
1.6 클립/비디오 (warning)
clips필드 → 파일 경로 존재 확인video필드 → URL 형식 유효 확인
1.7 Orphan 감지 (info)
course-site/assets/images/week*/내 모든 파일 목록 수집 (.gitkeep제외)- curriculum.json에서 참조되는 이미지 경로 목록과 비교
- 참조 안 되는 파일 →
[INFO] Orphan 이미지: {path} course-site/assets/showme/*.html중_template.html제외, registry에 없는 ID →[INFO]_supplements.json키 중 registry에 없는 ID →[INFO]
1.8 동기화 상태 검증 (warning/critical)
-
curriculum-notion.json파일의 마지막 git commit 시간 확인:git log -1 --format="%ci" -- course-site/data/curriculum-notion.json- 30분 이상 경과 시 →
[INFO] Notion snapshot이 오래됨 — /curriculum sync 권장 - 24시간 이상 경과 시 →
[WARNING] Notion snapshot이 매우 오래됨
- 30분 이상 경과 시 →
-
overrides.json의 week/step 인덱스가 curriculum-notion.json 구조와 매칭되는지:
- curriculum-notion.json 읽기 → 각 week의 steps 배열 길이 확인
- overrides.json 읽기 → 각 week의 steps 키(인덱스) 확인
- step 인덱스가 curriculum-notion.json의 steps 범위를 초과하면
→
[CRITICAL] overrides step 인덱스 불일치: week {N} step {idx} — Notion에서 step이 추가/삭제됨
-
curriculum-notion.json + overrides.json을 수동 merge한 결과와 현재 curriculum.json 비교:
- 두 파일을 읽고 merge 로직 적용 (overrides 필드가 notion 필드를 덮어씀)
- 현재 curriculum.json과 비교
- 불일치 시 →
[WARNING] curriculum.json이 stale — /curriculum sync 필요
Phase 2: Browser Verify
상세 내용: references/browser-verify.md
실행 조건: week {N}, all 인자가 있을 때만 실행.
Phase 3: Report + Fix
리포트 출력
모든 이슈를 severity별로 정렬하여 터미널에 출력:
=== RPD Check Report ===
스캔: 전체 15주 / 2026-03-31
[CRITICAL] 이미지 누락 (3건)
week 5 step "AI 메쉬 정리" → assets/images/week05/mesh-cleanup.png
week 5 step "Sculpt 브러시 심화" → assets/images/week05/sculpt-brushes.png
week 5 step "Remesh와 마무리" → assets/images/week05/remesh.png
[WARNING] ShowMe supplement 누락 (N건)
sculpt-brushes: _supplements.json에 없음
[INFO] Orphan 파일 (N건)
assets/images/week03/unused-image.png
──────────────────────────
Summary: X critical / Y warning / Z info
최종 판정
PASS: critical 0건 → "✅ PASS (0 critical / N warning / N info)"
WARN: critical 0 + warning ≤5 → "⚠️ WARN (0 critical / N warning / N info)"
FAIL: critical ≥1 → "❌ FAIL (N critical / N warning / N info)"
판정 결과를 리포트 맨 마지막 줄에 출력.
JSON 리포트 저장
claudedocs/rpd-check-report.json에 구조화된 결과 저장:
{
"timestamp": "2026-03-31T...",
"mode": "full | week:5 | showme",
"issues": [...],
"summary": { "critical": 3, "warning": 2, "info": 1 }
}
--fix 자동 수정
--fix 플래그가 있을 때만 실행. 상세: references/fix-rules.md
실행 로그
echo "[$(date '+%Y-%m-%d %H:%M')] mode=$MODE result=$RESULT quality=$QUALITY critical=$CRITICAL warning=$WARNING info=$INFO" >> .claude/skill-logs/rpd-check.log
result:success/partial/failquality:pass/warn/fail
Gotchas ⚠️ (자동 축적)
스킬 실행 중 예상치 못한 실패/우회가 발생하면:
-
이 섹션 하단에 한 줄 추가
-
형식:
N. [날짜] 증상 → 원인 → 해결 -
같은 실수 반복 시 해당 항목에 빈도 카운터 추가
-
curriculum.json은 ~3800줄이므로 전체를 한 번에 읽는다 (분할 불필요)
-
_registry.js는 JS 파일이므로 JSON 파싱 불가 — Grep으로 키 추출 -
Phase 2 브라우저 검증 시 서버가 이미 떠 있으면 재기동하지 않는다
-
외부 URL에 HTTP 요청을 보내지 않는다 (속도/안정성)
-
showme 모달 클릭 시 iframe 로드 시간이 필요하므로 짧은 대기 필요
-
이미지 테마 검증 시 iframe cross-origin 제한 — 배경색만 확인
금지 사항
- 테스트 결과를 조작하거나 이슈를 무시하지 말 것
- Phase 1에서 발견된 critical 이슈가 있으면 반드시 리포트에 포함
--fix로 이미지를 플레이스홀더로 생성하지 말 것 (품질 저하)- curriculum.json 구조를 임의로 변경하지 말 것
TDD Red-Green-Refactor
Testing
Skill qui guide Claude a travers le cycle TDD complet.
Audit d'Accessibilité Web
Testing
Réalise un audit d'accessibilité web complet selon les normes WCAG.
Générateur de Tests UAT
Testing
Génère des cas de test d'acceptation utilisateur structurés et complets.