Automated summary
Validates the integrity of a course-site's content: images, text copy, ShowMe cards, data structure and links, producing a severity-ranked report.
Strengths
- Full 4-step validation chain for ShowMe cards (registry entry, HTML file, supplements entry, required fields)
- Severity levels (critical/warning/info) that clearly rank what needs fixing first
- Smart Scoping automatically prioritizes checks based on recently changed files via git diff
- A --fix mode that auto-corrects repairable issues and can be combined with other arguments
Limitations
- Highly project-specific: relies on hardcoded paths, files and schemas (curriculum.json, _registry.js)
- External URLs are not actually fetched, only their format is checked
- The Notion sync section (1.8) is truncated in the supplied file, so its full behavior is unclear
Run it after adding or editing weeks, images or ShowMe cards in the course site to catch broken references before publishing.
Don't use it to assess source-code quality or deployment status, which are handled by dedicated commands instead.
Security analysis
CautionThe skill is a content/data validator for a Korean course site. Its commands are read-only inspection (ls, wc, stat, git diff, find, python json.load) and the execution surface is scoped to the project. No destructive commands, no secret/token handling, no outbound network calls, no obfuscated payloads. It warrants 'caution' rather than 'safe' because it executes shell/interpreter snippets automatically at load, can launch a local `npx serve` HTTP server, and its `--fix` path can rewrite data and asset files via Write/Edit and a sub-agent without an explicit confirmation gate.
- •Context block runs shell/interpreter commands at load time without confirmation: `git worktree list`, `find ... | wc -l`, `ls | grep -v`, `grep -c`, and two `python3 -c "json.load(open(...))"` invocations. All are read-only, but they execute the local Python interpreter and traverse the repo before the user reviews anything.
- •`Bash(npx serve:*)` is permitted, which spins up a local HTTP server and can expose course-site content on the network (0.0.0.0 binding / LAN access) during validation.
- •`--fix` mode grants Write/Edit plus an Agent to modify curriculum.json, overrides.json, supplements and asset files with no dry-run, diff preview, or human-approval step specified in SKILL.md (deferred to an out-of-scope references/fix-rules.md).
- •Skill writes report/log artifacts to `claudedocs/` and `.claude/skill-logs/` (append via echo) — benign but mutates project state.
- •Minor: the `Bash(npx serve:*)` wildcard is broad; no command allow-list prevents npx from fetching a package if it is not already cached locally.
Examples
/rpd-check/rpd-check week 5/rpd-check showme --fixdescription: "사이트 콘텐츠 검증. 예: /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 구조를 임의로 변경하지 말 것
From the file to a first result
The download contains exactly the content displayed on this page. This copy may differ from the latest version in the source repository.
View the source and supporting filesThis download contains SKILL.md only. Any scripts, references, templates and dependencies are not included. Get the required files from the source, preserving their directory structure, before continuing.
1. Download the file
Download SKILL.mdFrom the root of a test project, save the file as .skill-downloads/site-content-verification-mrwakey2/SKILL.md, or use the command below. This folder is for inspecting the skill before installation.
Command for macOS/Linux or WSL: requires a POSIX shell and curl. On Windows without WSL, use the download button and create the folder manually.
mkdir -p '.skill-downloads/site-content-verification-mrwakey2' && curl --fail --show-error --location 'https://skills-guides.com/api/skills/site-content-verification-mrwakey2/download' --output '.skill-downloads/site-content-verification-mrwakey2/SKILL.md.part' && mv '.skill-downloads/site-content-verification-mrwakey2/SKILL.md.part' '.skill-downloads/site-content-verification-mrwakey2/SKILL.md'2. Check prerequisites
Read SKILL.md before using it. If it references scripts or external services, inspect them and prepare the required access in your test environment.
Tools declared by the author (check availability in your agent): Read, Glob, Grep, Bash(ls:*), Bash(wc:*), Bash(stat:*), Bash(npx serve:*), Bash(git diff:*), Agent, Write, Edit
No recognized prerequisites section in this file. This does not mean it is self-contained: libraries, tools and access requirements may be mentioned elsewhere in the content or source repository.
The platforms on this page are catalog indications. The paths below follow tool documentation; they do not prove this skill has been run in those tools. No minimum tool version is confirmed for this listing.
3. Load the skill
This file does not provide a usable name/description header for this native procedure. It remains available to download and inspect; use the manual method below.
Manual method or another tool: attach SKILL.md to a conversation, or open it in an agent that can read files. Include any required supporting resources. No universal folder is recognized by every tool.
4. Try a first task
Use a short, synthetic input: an API endpoint, a small document or an interface brief. In a new conversation, attach the file or give the agent its path, then adapt this request:
Read .skill-downloads/site-content-verification-mrwakey2/SKILL.md and apply its instructions to this example: [describe a test input]. Identify any missing files, dependencies or access. Produce the result requested by the skill without inventing data or running unreviewed scripts.Expected result: output matching the skill instructions, or a precise list of missing prerequisites. A read confirmation alone does not validate a first use. If an external resource is unavailable, that path remains untested.
Writing Fragments
Content
Mine raw writing fragments through a relentless interview, without imposing structure. Capture ideas, quotes, and leading words for later use.
UI Copywriting & Auditing
Content
Write or audit user-facing UI copy including buttons, errors, empty states, and tooltips across the monorepo, following the design system source of truth.
Music MIDI Extraction
Content
Extracts the MIDI or score from an existing music production via the CogMusic MCP tool and confirms availability.