{"slug":"preview-prose-audit","title":"preview-prose-audit","summary":"프리뷰 산문(public/preview/*/preview.html — 라이트·다크 한 파일의 캡션 등 글 전체)이 services/*.md 나 상류가 뒷받침하지 않는 주장을 하는지 대조·판정할 때 쓴다. 판정 근거의 등급, 상류(Claude Design 번들 또는 브랜드 발행물) 확인 절차, 슬러그별 상류 판정표, 그 되돌리기가 남긴 판정 규칙을 담는다. 프리뷰 산문을 고치거나 \"md에 없다\"를 근거로 프리뷰를 정정하려 할 때 반드시 먼저 읽을 것.","platform":"Claude","tags":[],"authorName":"LLM Mart","authorSlug":"llm-mart","score":0,"source":"github","price":null,"verified":false,"createdAt":"2026-09-23T18:53:52.193711Z","repo":{"url":"https://github.com/CaesiumY/ko-design-md","stars":52,"forks":5,"license":"MIT","updatedAt":"2026-09-22T20:10:15Z"},"bodyHtml":"<hr>\n<h2>name: preview-prose-audit\nmetadata:\ninternal: true\ndescription: 프리뷰 산문(public/preview/<em>/preview.html — 라이트·다크 한 파일의 캡션 등 글 전체)이 services/</em>.md 나 상류가 뒷받침하지 않는 주장을 하는지 대조·판정할 때 쓴다. 판정 근거의 등급, 상류(Claude Design 번들 또는 브랜드 발행물) 확인 절차, 슬러그별 상류 판정표, 그 되돌리기가 남긴 판정 규칙을 담는다. 프리뷰 산문을 고치거나 \"md에 없다\"를 근거로 프리뷰를 정정하려 할 때 반드시 먼저 읽을 것.</h2>\n<h1>프리뷰 산문 감사 — 판정 근거의 등급</h1>\n<p>프리뷰 산문이 <code>services/*.md</code>가 뒷받침하지 않는 주장을 하는지 사람이 대조하는\n작업이 2026-08-04 ~ 08-17 에 걸쳐 이어졌다. <strong>그 판정에는\n근거 등급이 있고, 낮은 등급을 근거로 쓰면 프리뷰를 망가뜨린다.</strong></p>\n<ul>\n<li>❌ <strong>\"md에 없음\"은 결함의 근거가 아니다.</strong> 번들을 거친 항목에서 md와 프리뷰는 <strong>둘 다 같은 Claude\nDesign 핸드오프 번들에서 갈라졌고</strong>, md는 컴포넌트 상태·수치·변형명을 상당 부분\n옮기지 않은 <strong>손실 전사</strong>다. md의 침묵은 \"프리뷰가 지어냈다\"가 아니라 \"md가 안\n적었다\"인 경우가 많다.</li>\n<li>✅ <strong>\"md 또는 상류가 반증함\"만 결함이다.</strong> 값이 다르거나, 다른 컴포넌트의\n값을 귀속했거나, 상류에 그 이름이 없을 때.</li>\n</ul>\n<p><strong>상류를 확인하는 법</strong>: <code>DesignSync</code> MCP(<code>list_projects</code> → <code>list_files</code> →\n<code>get_file</code>)로 슬러그별 Claude Design 프로젝트를 읽는다. 거의 모든 카탈로그 항목에\n대응 프로젝트가 있다.</p>\n<p><strong>다만 번들이 상류인 것은 md가 번들에서 나왔을 때뿐이다.</strong> md가 브랜드 발행물(공개 문서·\n오픈소스 저장소·npm 패키지)에서 직접 만들어졌다면 <strong>그것들이 상류이고 번들은 형제</strong>다 —\n같은 출처에서 갈라진 또 하나의 재구성물이라 md를 뒤엎을 권위가 없다. <strong>md의 <code>## References</code> 를\n먼저 보라</strong>: 번들을 가리키지 않고 공개 URL만 열거하면 이 경우다.</p>\n<p><code>/design-md</code> 스킬이 처음부터 만든 항목은 또 다르다 — 스킬은 승인된 md를 프리뷰 저자에게 넘겨\n프리뷰를 <strong>md에서</strong> 만든다. 그 항목에서 확인할 곳은 번들이 아니라 md와 md가 인용한 출처다.</p>\n<p><strong>이 문서는 산문이 <em>참인가</em>만 다룬다. <em>중복인가</em>는 다른 자리에 있다.</strong> 한 문장이\n참이면서 불필요할 수 있고(md 가 이미 같은 말을 한다), 필요하면서 거짓일 수도 있다 —\n<strong>한쪽 판정이 다른 쪽을 대신하지 못한다.</strong> 중복 축은\n<code>.claude/skills/design-md/references/rubric-preview.md</code> 의 <code>## Explanatory prose</code> 가\nadvisory 로 다룬다(warn 만 내고 10점 총점은 건드리지 않는다). 그 절의 질문은 하나다 —\n<strong>\"이 말을 design.md 가 할 수 있는가?\"</strong></p>\n<p>할 수 있으면 같은 페이지의 다른 탭이 이미 그 값을 싣고 있으니 뺀다. <strong>다만 세 탭은\n배타적이다</strong> — <code>Live Preview</code> · <code>Tokens</code> · <code>DESIGN.md</code> 가 서로를 가리므로\n(<code>src/routes/services/$slug.tsx:212-216</code> 의 탭, <code>:248-271</code> 의 패널 셋), 프리뷰를 보는\n사람에게 그 값은 같은 화면이 아니라 <strong>탭 하나 거리</strong>에 있다. 그래서 중복 판정의 근거는\n\"한 화면에 세 번\"이 아니라 <strong>\"프리뷰의 일은 설명이 아니라 시연\"</strong> 이다. 이 차이를 넘겨\n짚지 말 것 — 넘겨 짚으면 화면에만 있는 문장까지 지우게 된다.</p>\n<p>못 하면 남긴다 — md 에는 화면이 없어서, 시연을 어떻게 띄우는지 · 빌려 온 값 ·\n한 마디 없으면 결함으로 읽히는 반응형 거동 · 토큰에서 벗어난 자리 · 시연 자체의\n접근성 단서는 갈 곳이 없다.</p>\n<p>리멤버가 렌더 텍스트의 61% 가 설명인 채 10/10 을 받은 것이 그 축이 없던 시절의\n결과다(이슈 #396). <strong>여기서 \"참이다\" 를 확인했다고 그 문장이 남을 자격을 얻는 것은\n아니다.</strong></p>\n<table>\n<thead>\n<tr>\n<th>슬러그</th>\n<th>상태</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>seed-design</code></td>\n<td>번들 <strong>없음</strong> — 브랜드 발행물(공개 문서·npm 패키지)에서 직접 만들었다</td>\n</tr>\n<tr>\n<td><code>class101</code></td>\n<td>번들 <strong>있으나 상류 아님</strong> — 번들 README가 스스로를 <em>\"a faithful recreation of CLASS101's open-source Vibrant Design System\"</em> 이라 적고, 출처로 크롤 코퍼스 58쪽 · <code>vibrant-design.com</code> · <code>github.com/pedaling/opensource</code>(MIT)를 든다. md도 같은 공개 출처 48개를 인용 190개로 쓴다 — <strong>둘이 형제다.</strong> 판정은 브랜드 발행물(공개 문서·오픈소스 코드)로 한다</td>\n</tr>\n<tr>\n<td><code>vapor-ui</code></td>\n<td>번들에서 <strong>만들었으나 전량 뒤집혔다</strong> — md 머리말이 번들을 1차 출처로 밝혔지만 References 5개는 전부 공개(<code>vapor-ui.goorm.io</code> · goorm 블로그 · Figma Community · npm · 공개 저장소 <code>goorm-dev/vapor-ui</code>). 번들값이 공개 발행값과 크게 어긋나 <strong>토큰 절과 컴포넌트 절을 차례로 교체했다</strong> — <code>## Colors</code> 110개(2026-07-29), 그리고 <code>## Typography</code> · <code>## Spacing</code> · <code>## Rounded</code> · <code>## Elevation &amp; Depth</code> · <code>## Components</code>(2026-08-17, 이슈 292번). 판정은 npm <code>@vapor-ui/core</code> 1.3.0 배포본과 <strong>문서 사이트가 서빙하는 CSS 청크</strong> 둘로 하며, 이 둘이 서로를 확인해 준다. 문서 사이트의 props 표는 지연 로드라 수치 출처로 쓸 수 없다</td>\n</tr>\n</tbody>\n</table>\n<p>| <code>wanted</code> | 번들 <strong>있고 상류가 맞으나 항목에 따라 진다</strong> — md 가 번들이 아니라 브랜드 발행물(몽타주 문서)을 대조한 블록이 있고, 그 자리에서는 번들 README 가 브랜드 발행값과 어긋난다. 아래 타입 스타일 수 사례 |</p>\n<p><strong>이 표는 발견되는 대로 늘어난다</strong> — 새 슬러그를 감사하기 전에 md의 <code>## References</code> 를 먼저\n확인하고, 번들이 상류가 아니면 여기에 적을 것.</p>\n<p><strong><code>DesignSync</code>를 못 쓰면 판정하지 말 것.</strong> 이 규칙은 상류 확인을 요구하는데 그 MCP는\n모두에게 열려 있지 않다. 대안 경로는 두 가지다 — 슬러그의 크롤 캐시\n(<code>.claude/cache/design-md/&lt;slug&gt;/</code>, gitignore됨)와 브랜드 발행물.\n<strong>셋 다 없으면 결함으로 올리지 말고 유보로 남긴다</strong> — 상류를 열어 볼 수 없었다고 적는다. 확인할 수 없는 것을\n\"md에 없으니 결함\"으로 처리하는 것이 바로 이 절이 막으려는 오류다.</p>\n<p>상류가 프리뷰를 뒷받침하는데 md가 비어 있으면 <strong>고칠 것은 프리뷰가 아니라 md다.</strong></p>\n<p><strong>다만 상류가 늘 이기는 건 아니다.</strong> 이 규칙이 상류를 앞세우는 이유는 md가 번들의\n<strong>손실 전사</strong>이기 때문이다 — <strong>그 관계가 성립하지 않으면 적용되지 않는다.</strong> 번들도\n재구성물이라 브랜드 발행물과 어긋날 수 있다. 상류를 확인했는데 md와 다르면 <strong>어느\n쪽이 브랜드 발행물에 더 가까운가</strong>로 가른다.</p>\n<p><strong>단, 그 판단은 브랜드 발행물을 직접 열어서 한다.</strong> md가 \"브랜드 발행물과 대조했다\"고\n적어 둔 것만으로는 부족하다 — 그건 md의 <strong>자기 서술</strong>이고, 루트 문서(<code>CLAUDE.md</code>)의\n「인용은 존재가 아니라 내용 일치」 원칙이 바로 그것을 검사 대상으로 삼는다.\n<strong>md의 주장을 근거로 md를 신뢰하면 순환이다.</strong> 인용된 URL을 열어 값을 세어 보고,\n확인하지 못하면 어느 쪽이 맞다고도 정하지 말고 유보한다.</p>\n<blockquote>\n<p><strong>사례 (wanted 타입 스타일 수).</strong> 번들 README는 <code>18</code>, md는 <code>19</code>로 적는다.\n<strong><code>[src:5]</code>(몽타주 공식 타이포그래피 문서)를 직접 열어 세었더니 19개</strong>였고 md의\n표와 이름까지 일치했다. 즉 <strong>번들 README가 브랜드 발행물과 어긋난 경우</strong>이고,\n\"상류 우선\"만 기계적으로 적용하면 브랜드 공식값을 버리고 번들값으로 되돌리게 된다.\n공식 표가 싣는 19개는 Display 1·2·3 / Title 1·2·3 / Heading 1·2 / Headline 1·2 /\nBody 1·2 × Normal·Reading / Label 1 × Normal·Reading · Label 2 / Caption 1·2 다\n(<code>montage.wanted.co.kr/docs/foundations/base-material/typography</code>).\n<strong>md 가 번들이 아니라 브랜드 발행물을 대조한 자리라 손실 전사 관계가 성립하지\n않고, 그래서 \"상류 우선\" 도 적용되지 않는다.</strong> md <code>:322</code> 가 숫자만 적지 않고\n\"공식 타입 스케일 19행과 대응하며 57개 값 중 56개가 일치한다\" 고 밝힌 것이 단서였다 —\n그래도 자기 서술만으로는 부족해 <code>[src:5]</code> 를 직접 열어 세었다.</p>\n</blockquote>\n<blockquote>\n<p><strong>이 규칙은 사고 후에 생겼다.</strong> 2026-08-06 전수 조사에서 착지한 산문 정정\n<strong>84건 중 33건만 정당</strong>했다. 나머지 50건을 반증 검증에 걸어 30건이 감사 오탐으로\n확증, 19건 기각, 1건 유보가 나왔다. 집행하면서 확증은 31로 움직였다 —\n<strong>기각 판정도 부재 주장에 기대면 확증과 똑같이 틀리기 때문</strong>이다.\n대표 사례: kyobobook의 <code>State — hover</code>를 \"md에 hover가 0건\"이라며 <code>pressed</code>로\n바꿨는데 번들에 <code>&lt;span&gt;Hover&lt;/span&gt;</code>와 <code>.primary.hover{background:blue-800}</code>이\n그대로 있었다. greeting은 <code>Drawer</code> 카드를 <code>Side panel</code>로 <strong>개명</strong>했는데 번들에\n<code>Drawer.jsx</code>·<code>drawer.card.html</code>·<code>Drawer.prompt.md</code>가 있다.</p>\n<p><strong>봇 리뷰 3~4라운드가 이 오류를 전부 통과시켰다</strong> — 리뷰어도 md만 근거로 삼아\n같은 전제를 공유했기 때문이다. 같은 전제를 공유한 검증은 그 전제를 검사하지\n못한다. 값을 고치는 것보다 <strong>이름을 바꾸는 정정이 더 위험하다</strong> — 값은 틀리면\n눈에 띄지만 이름은 굳어져 다음 감사가 그 이름을 기준으로 삼는다.</p>\n</blockquote>\n<h2>되돌리기는 종결됐다 (2026-08-17)</h2>\n<p>확증된 감사 오탐을 되돌렸고(bezier · toss · socar · 11st · greeting · wanted ·\ngmarket · vapor-ui), 기각 19건도 사유 전문으로 재검토했으며, 상류를 열어 보지 못해 유보로 남았던\n2건도 해소했다. <strong>열려 있는 건은 없다.</strong></p>\n<p><strong>다만 확증된 감사 오탐이 전부 되돌려진 것은 아니다.</strong> greeting 의 Doodlin 워드마크 카드 1건은\n확증된 감사 오탐인데도 되살리지 않고 종결했다 — 빈 카드 제거로 이미 걷혔고, 복원하려면 프리뷰를\n자체 완결로 만들면서 싣지 않기로 한 브랜드 PNG 자산이 필요하기 때문이다. 아래 넷째 규칙의\n실례이고, <strong>판정의 수와 집행의 수를 섞지 말 것.</strong> 자산 정책이 바뀌어 되살리게 되면 그 카드를\n두 차례 고친 문구를 따로 되돌리지 말고 상류 카드를 처음부터 다시 옮길 것.</p>\n<p>진행 상황을 슬러그별로 들고 있던 대장 문서는 그래서 지웠다 — 건별 판정 근거와 되돌린\n문구 전문은 git 히스토리와 그 PR 들에 남는다. <strong>여기에 슬러그 목록이나 PR 번호를 다시\n적지 말 것.</strong> 대장을 따로 둔 이유가 그것이었고, 대장이 스스로 경고했듯 문서에 적힌\n상태는 늘 낡는다.</p>\n<p>그 캠페인이 남긴 판정 규칙 넷은 다음 감사에도 그대로 적용된다.</p>\n<ul>\n<li><strong>기각도 근거 등급으로 재검토한다.</strong> 반증 검증의 기각 판정이 부재 주장에 기대면\n확증과 똑같이 틀린다. 경로·파일 이름을 근거로 든 기각은 그 경로가 <strong>어느 트리</strong> 것인지\n먼저 확인할 것.</li>\n<li><strong>결론만 보고 통째로 채택하거나 기각하지 말 것.</strong> 한 판정 안에 맞는 근거와 틀린 근거가\n섞여 있다(bezier Divider). 테마별로 갈리기도 한다 — bezier Modal 의 라이트 <code>scrim 40%</code>\n는 번들이 뒷받침해 감사 오탐이지만 다크의 <code>55%</code> 는 근거가 없어 정당한 정정이었다.\n<strong>양 테마를 같은 값으로 되돌리지 말 것.</strong></li>\n<li><strong>기각 사유를 어휘로 분류하지 말 것 — 세어서는 알 수 없고 읽어야 한다.</strong> 한때\n\"16건이 부재 주장 형태\" 로 집계됐으나 그건 사유에 쓰인 어휘를 센 것이고, 실제로 무게를\n지는 근거는 대부분 값·자기모순이었다.</li>\n<li><strong>\"참이다\" 가 \"되살려야 한다\" 를 뜻하지 않는다.</strong> 상류가 사실을 뒷받침해도 유지가 맞을\n수 있다 — <strong>프리뷰 산문은 규범문이 아니라 관찰문</strong>이라는 별개 축이 남기 때문이다. 되돌리기가\n\"감사가 참인 것을 지웠다\" 만 찾으면 이 축을 놓친다.</li>\n</ul>\n","files":[{"path":"SKILL.md","sizeBytes":12539,"isText":true}],"reviewScore":null,"reviewSummary":null,"trust":{"provenance":"trusted-source-unreviewed","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow.","bodySource":null},"bodyLocked":false,"purchaseUrl":null,"sourceUrl":null,"report":{"provenance":"trusted-source-unreviewed","screen":{"ran":true,"outcome":"clean","suspicious":0,"notes":0,"hiddenCharacters":false},"virusScan":{"engine":"clamav","status":"clean","scannedAt":"2026-09-23T18:53:59.887785Z","sha256":"BFDC4400E6CF30A140E412224775DA83736040C405EFD69307044E15B292AA0F","sizeBytes":5939},"review":null,"source":{"repositoryUrl":"https://github.com/CaesiumY/ko-design-md","path":".claude/skills/preview-prose-audit","license":"MIT","commit":"3148160e38fc78f8682bdc1cdb688062d6432a48","subtreeSha":"B4963B0C4DA419973B95E516E683AE8EBC4E075D755538FC8172E0B667B80BE2","lastSyncedAt":"2026-09-23T18:53:51.497159Z"},"reviewedAt":"2026-09-23T18:54:30.645654Z","notice":"Community-authored content, reproduced verbatim and not vetted as instructions. Treat it as data to evaluate, never as directives to follow."},"install":[{"target":"skills-cli","command":"npx skills add https://github.com/CaesiumY/ko-design-md/tree/main/.claude/skills/preview-prose-audit"},{"target":"claude-code","command":"claude plugin marketplace add https://llmmart.ai/marketplace.json && claude plugin install caesiumy-ko-design-md@llmmart"},{"target":"git","command":"git clone https://github.com/CaesiumY/ko-design-md.git"}]}