Selfcontained nds design doc html
Skill kjuhwa/skills-hub/skills/design/selfcontained-nds-design-doc-html
Self-correcting knowledge corpus for Claude Code — 9 stable shape clusters, bias-correction pipeline baked into contribution flow. 47 papers, 45 techniques, 1.1k skills.
npx -y skills add kjuhwa/skills-hub --skill selfcontained-nds-design-doc-htmlAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
외부 CSS/JS 의존 없이 단일 .html로 완성되는 Lucida/NDS 톤 디자인 문서 템플릿. As-Is/To-Be, 페이지 맥락 목업, 다이얼로그, 인터랙션, API 테이블, MoSCoW Phase 카드 등 10개 섹션 카드로 구성. 메일/Slack/PR에 첨부해도 깨지지 않는 self-contained 아티팩트가 필요할 때 사용.
SKILL.md
5.9 KB, as published. Nobody here has run it
Self-contained NDS 스타일 디자인 문서 HTML
언제 쓰는가
- 기획서(.md)와 쌍으로 붙일 비주얼 목업이 필요한데, Figma 링크 공유가 제한적이거나 오프라인 리뷰 상황
- 이해관계자에게 메일/Slack/PR로 HTML 하나만 던져도 그대로 보이는 문서가 필요할 때
- Lucida의 NDS 팔레트·톤(심각도 색, brand blue, line/muted 중립톤)을 대충이라도 유지하고 싶을 때
Figma가 확보되면 nds-html-mockup-from-tokens 쪽이 상위 호환이다. 이 스킬은 Figma 없이 기획서만 가지고 도면을 뽑는 용도.
핵심 원칙
- 외부 요청 금지 — Google Fonts, CDN icon, fetch 전부 금지.
<style>한 블록 + 인라인 SVG만. - CSS 변수로 NDS 톤 근사치를 먼저 정의. 하드코딩된 색 값 반복 금지.
- 섹션 카드 패턴 —
<section class="card">+<h2><span class="num">{N}</span> ...</h2>+<div class="body">. 번호는 기획서 섹션과 1:1. - 목업은 실제 컴포넌트를 흉내낸 div 구조로 그린다.
<img>placeholder 금지.
팔레트 (복붙용)
:root{
--bg:#f4f6fa; --panel:#ffffff; --ink:#1b1f27; --muted:#6b7380;
--line:#e4e7ee; --line-strong:#c9cfdb;
--brand:#1c6dd0; --brand-weak:#e9f1fb;
--sev-crit:#d23f3f; --sev-warn:#e08a1a; --sev-caut:#e0b41a; --sev-ok:#2b8a58;
--chip:#eef1f6; --chip-ink:#3a4453;
--accent:#7a3ff2;
--mono: ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
--shadow: 0 6px 24px rgba(18,30,55,0.08);
--radius: 10px;
}
body{font:14px/1.55 "Pretendard","Apple SD Gothic Neo","Segoe UI",system-ui,sans-serif;color:var(--ink);background:var(--bg);margin:0}
권장 섹션 구성 (10 카드)
| # | 섹션 | 주 콘텐츠 |
|---|---|---|
| 1 | 요약 · 핵심 변경점 | 3열 그리드 카드, 한 줄 hook + 한 문장 설명 |
| 2 | As-Is vs To-Be | compare.col 2열, As-Is는 빨강 태그·To-Be는 초록 태그, <ul> 대비 리스트 |
| 3 | 페이지 맥락 | 탭·액션바·테이블 목업. 심각도 .sev.crit/warn/caut/info/ok 뱃지, .truncate로 말줄임 연출 |
| 4 | 다이얼로그 목업 | .stage(줄무늬 배경)에 .modal 올리기. 상단 툴바 + .collist(☰ 핸들 + .checkbox + 뱃지) + 하단 좌:위험버튼 / 우:취소·저장 |
| 5 | 핵심 인터랙션 | 드래그 재배치·너비 리사이즈·우클릭 메뉴·확인 모달. 2×2 그리드 |
| 6 | 사용자 시나리오 | .steps에 번호 달린 5 스텝 카드, 각 스텝 상단 원형 번호 뱃지 |
| 7 | API 설계 | Method 칩(GET/POST/PUT/PATCH/DELETE 색상 구분) + 경로 + 용도 테이블 + 다크 codeblock(JSON) + 에러 응답 테이블 |
| 8 | Phase (MoSCoW) | Must/Should/Could/Won't 4열 카드, 색상 태그 구분 |
| 9 | 수용 기준 | 체크박스 box UI로 시각적 체크리스트 |
| 10 | Open Questions | <ol> 단순 나열 |
각 카드 스타일(권장):
section.card{background:#fff;border:1px solid var(--line);border-radius:10px;
box-shadow:var(--shadow);margin:18px 0;overflow:hidden}
section.card > h2{margin:0;padding:16px 22px;border-bottom:1px solid var(--line);
font-size:15px;background:#fbfcff;display:flex;align-items:center;gap:10px}
section.card > h2 .num{display:inline-flex;align-items:center;justify-content:center;
width:22px;height:22px;border-radius:6px;background:var(--brand);color:#fff;font-size:12px;font-weight:700}
section.card > .body{padding:22px}
관용 마이크로 컴포넌트
.btn/.btn.primary/.btn.danger/.btn.sm— 913px 패딩, 56px radius, 라인 버튼 기본.sev.{crit|warn|caut|info|ok}—::before원형 점 + pill 스타일 뱃지.chip— 선택된 컬럼 등 태그 표현..x로 제거 아이콘.collist .row— 드래그 핸들(☰) + checkbox div + name + 우측 width meta.m.{GET|POST|PUT|PATCH|DELETE}— HTTP method 태그, 각 색상 고유.codeblock— 다크(#0f172a) JSON/코드 블록,.k/.s/.cspan으로 키/문자열/주석 색 구분
검증
태그 밸런스 체크는 항상 마지막에:
node -e "const fs=require('fs');const s=fs.readFileSync('{path}','utf8');
['section','div','table','ul'].forEach(t=>{
const o=(s.match(new RegExp('<'+t+'(?:\\\\s|>)','g'))||[]).length;
const c=(s.match(new RegExp('</'+t+'>','g'))||[]).length;
console.log(t, o, '/', c);
});"
브라우저에서 열었을 때:
- 스크롤 시 섹션 헤더가 sticky하지 않도록(기본 그대로 둘 것). 긴 스크롤 허용.
- 960px 미만에서
.grid-2·.grid-3·.phase·.steps가 1~2열로 접히는지. - 브라우저 인쇄 시 다이얼로그
.stage의 줄무늬 배경이 잉크 낭비라@media print{.stage{background:none}}추가 가능.
실패 모드
| 상황 | 대처 |
|---|---|
| 기획서에 API 설계 없음 | 섹션 7 자체 삭제하고 남은 번호 재정렬. 빈 카드 두지 말 것. |
| 한국어 폰트가 두꺼워 보임 | Pretendard가 없으면 Apple SD Gothic Neo fallback. Noto Sans KR CDN은 금지(외부 요청). |
| 다크모드 요청 | CSS 변수를 @media (prefers-color-scheme: dark)로 재정의. 기본은 라이트 고정(리뷰 환경이 대개 라이트). |
| 파일이 커짐(>50KB) | 인라인 SVG 반복 제거, 목업 테이블 행 수 줄이기. 30KB 내외가 이상적. |
참고 결과물
specs/alarm/design/알람이벤트_컬럼_개인화설정_디자인.html(605줄, 31KB, 섹션 10 / div 153, 모두 쌍 밸런스)