# Preview Prose Audit

> 프리뷰 캡션(public/preview/*/preview.html — 라이트·다크 한 파일)이 services/*.md 나 상류 원본이 뒷받침하지 않는 주장을 하는지 대조·판정할 때 쓴다. 판정 근거의 등급, 상류(Claude Design 번들 vs 브랜드 발행물) 확인 절차, 슬러그별 상류 판정표, 되돌리기 대장 위치를 담는다. 캡션을 고치거나 "md에 없다"를 근거로 프리뷰를 정정하려 할 때 반드시 먼저 읽을 것.

- Skill: `caesiumy/preview-prose-audit` (Agent Skill)
- Install (CLI): `npx skillmds@latest add caesiumy/preview-prose-audit`
- Raw SKILL.md: https://api.skillmd.com/api/skills/caesiumy/preview-prose-audit/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Web & Frontend
- Author: caesiumy (https://skillmd.com/u/caesiumy)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/caesiumy/preview-prose-audit

---


# 프리뷰 산문 감사 — 판정 근거의 등급

프리뷰 캡션이 `services/*.md`가 뒷받침하지 않는 주장을 하는지 사람이 대조하는
작업이 이어져 왔다(`docs/superpowers/specs/*-preview-prose-audit-*`). **그 판정에는
근거 등급이 있고, 낮은 등급을 근거로 쓰면 프리뷰를 망가뜨린다.**

- ❌ **"md에 없음"은 결함의 근거가 아니다.** md와 프리뷰는 **둘 다 같은 Claude
  Design 핸드오프 번들에서 갈라졌고**, md는 컴포넌트 상태·수치·변형명을 상당 부분
  옮기지 않은 **손실 전사**다. md의 침묵은 "프리뷰가 지어냈다"가 아니라 "md가 안
  적었다"인 경우가 많다.
- ✅ **"md 또는 상류 원본이 반증함"만 결함이다.** 값이 다르거나, 다른 컴포넌트의
  값을 귀속했거나, 원본에 그 이름이 없을 때.

**상류를 확인하는 법**: `DesignSync` MCP(`list_projects` → `list_files` →
`get_file`)로 슬러그별 Claude Design 프로젝트를 읽는다. 거의 모든 카탈로그 항목에
대응 프로젝트가 있다.

**다만 번들이 상류인 것은 md가 번들에서 나왔을 때뿐이다.** md가 브랜드 공개 문서·
오픈소스 저장소·npm 패키지에서 직접 만들어졌다면 **그것들이 상류이고 번들은 형제**다 —
같은 출처에서 갈라진 또 하나의 재구성물이라 md를 뒤엎을 권위가 없다. **md의 sources를
먼저 보라**: 번들을 가리키지 않고 공개 URL만 열거하면 이 경우다.

| 슬러그 | 상태 |
| --- | --- |
| `seed-design` | 번들 **없음** — 공개 문서와 npm 패키지에서 직접 만들었다 |
| `class101` | 번들 **있으나 상류 아님** — 번들 README가 스스로를 *"a faithful recreation of CLASS101's open-source Vibrant Design System"* 이라 적고, 출처로 크롤 코퍼스 58쪽 · `vibrant-design.com` · `github.com/pedaling/opensource`(MIT)를 든다. md도 같은 공개 출처 48개를 인용 190개로 쓴다 — **둘이 형제다.** 판정은 공개 문서·오픈소스 코드로 한다 |
| `vapor-ui` | 번들에서 **만들었으나 전량 뒤집혔다** — md 머리말이 번들을 1차 출처로 밝혔지만 sources 5개는 전부 공개(`vapor-ui.goorm.io` · goorm 블로그 · Figma Community · npm · 공개 저장소 `goorm-dev/vapor-ui`). 번들값이 공개 발행값과 크게 어긋나 **토큰 절과 컴포넌트 절을 차례로 교체했다** — `## Colors` 110개(2026-07-29), 그리고 `## Typography` · `## Spacing` · `## Rounded` · `## Elevation & Depth` · `## Components`(2026-08-17, 이슈 292번). 판정은 npm `@vapor-ui/core` 1.3.0 배포본과 **문서 사이트가 서빙하는 CSS 청크** 둘로 하며, 이 둘이 서로를 확인해 준다. 문서 사이트의 props 표는 지연 로드라 수치 출처로 쓸 수 없다 |

**이 표는 발견되는 대로 늘어난다** — 새 슬러그를 감사하기 전에 md의 sources를 먼저
확인하고, 번들이 상류가 아니면 여기에 적을 것.

**`DesignSync`를 못 쓰면 판정하지 말 것.** 이 규칙은 상류 확인을 요구하는데 그 MCP는
모두에게 열려 있지 않다. 대안 경로는 두 가지다 — 슬러그의 크롤 캐시
(`.claude/cache/design-md/<slug>/`, gitignore됨)와 브랜드가 실제로 발행한 공개 문서.
**셋 다 없으면 결함으로 올리지 말고 "상류 미확인"으로 남긴다.** 확인할 수 없는 것을
"md에 없으니 결함"으로 처리하는 것이 바로 이 절이 막으려는 오류다.

상류가 프리뷰를 뒷받침하는데 md가 비어 있으면 **고칠 것은 프리뷰가 아니라 md다.**

**다만 상류가 늘 이기는 건 아니다.** 이 규칙이 상류를 앞세우는 이유는 md가 번들의
**손실 전사**이기 때문이다 — **그 관계가 성립하지 않으면 적용되지 않는다.** 번들도
재구성물이라 브랜드 발행물과 어긋날 수 있다. 상류를 확인했는데 md와 다르면 **어느
쪽이 브랜드 발행물에 더 가까운가**로 가른다.

**단, 그 판단은 브랜드 발행물을 직접 열어서 한다.** md가 "공개 문서와 대조했다"고
적어 둔 것만으로는 부족하다 — 그건 md의 **자기 서술**이고, 루트 문서(`CLAUDE.md`)의
「인용은 존재가 아니라 내용 일치」 원칙이 바로 그것을 검사 대상으로 삼는다.
**md의 주장을 근거로 md를 신뢰하면 순환이다.** 인용된 URL을 열어 값을 세어 보고,
확인하지 못하면 어느 쪽도 정본으로 삼지 말고 유보한다.

> **사례 (wanted 타입 스타일 수).** 번들 README는 `18`, md는 `19`로 적는다.
> **`[src:5]`(몽타주 공식 타이포그래피 문서)를 직접 열어 세었더니 19개**였고 md의
> 표와 이름까지 일치했다. 즉 **번들 README가 브랜드 발행물과 어긋난 경우**이고,
> "상류 우선"만 기계적으로 적용하면 브랜드 공식값을 버리고 번들값으로 되돌리게 된다.
> 스타일 이름 전수와 확인 경위는 대장의 wanted 절이 갖는다 — **여기에 복제하지 말 것.**

> **이 규칙은 사고 후에 생겼다.** 2026-08-06 전수 조사에서 착지한 산문 정정
> **84건 중 33건만 정당**했다. 나머지 50건을 반증 검증에 걸어 30건이 오탐으로
> 확증, 19건 기각, 1건 미판정이 나왔다. **되돌리기를 집행하며 기각도 재검토하고
> 있어 확증 수는 움직인다** — 슬러그별 최신 판정과 근거는 건별 대장
> `docs/superpowers/specs/2026-08-07-preview-prose-audit-false-positive-ledger.md`
> 를 볼 것.
> 대표 사례: kyobobook의 `State — hover`를 "md에 hover가 0건"이라며 `pressed`로
> 바꿨는데 원본에 `<span>Hover</span>`와 `.primary.hover{background:blue-800}`이
> 그대로 있었다. greeting은 `Drawer` 카드를 `Side panel`로 **개명**했는데 원본에
> `Drawer.jsx`·`drawer.card.html`·`Drawer.prompt.md`가 있다.
>
> **봇 리뷰 3~4라운드가 이 오류를 전부 통과시켰다** — 리뷰어도 md만 근거로 삼아
> 같은 전제를 공유했기 때문이다. 같은 전제를 공유한 검증은 그 전제를 검사하지
> 못한다. 값을 고치는 것보다 **이름을 바꾸는 정정이 더 위험하다** — 값은 틀리면
> 눈에 띄지만 이름은 굳어져 다음 감사가 그걸 정본으로 삼는다.

**미해소 부채**: 확증된 오탐을 되돌리는 중이다. **어디까지 됐는지는 위 대장이
슬러그별로 기록한다** — 이 문서에 PR 번호와 착지 여부를 적으면 금세 낡는다. 이 계열을
이어받는다면 **새 감사보다 되돌리기가 먼저다.** 어느 슬러그가 되돌리기 대상이고
어느 것이 미감사인지도 대장이 갖는다 — **여기에 슬러그를 나열하지 말 것.** PR 번호와
같은 이유로 낡는다(이 절을 쓰는 동안 `gmarket`·`vapor-ui` 가 "미감사" 에서
"되돌리기 대상" 으로 옮겨 갔다).

