Communitygithub.com

Openclaw-Metis/cc-designer

Claude Code용 HTML 디자인 산출물 생성기: 데크, 프로토타입, 애니메이션, 와이어프레임, 캔버스

cc-designer란 무엇인가요?

cc-designer는 Claude Code CLI를 HTML 기반 디자인 도구로 변환하는 AI 에이전트 스킬입니다. 주니어 디자이너가 매니저에게 결과물을 전달하듯이, 먼저 요구사항을 이해하고 맥락을 파악한 후 중간 결과물을 보여주며 피드백을 받고 최종적으로 변형(Tweaks)을 제공합니다. 이 스킬은 슬라이드 데크, 인터랙티브 프로토타입, 애니메이션/모션 비디오, 와이어프레임, 디자인 캔버스 등 다양한 디자인 산출물을 생성하는 데 특화되어 있습니다. 특히 플레이스홀더 사용을 허용하여 생산 단계가 아닌 탐색 및 디자인 확정 단계에 적합하며, React + Babel 인라인 JSX를 사용하는 경우 고정 버전과 무결성 해시를 요구하는 등 엄격한 규칙을 따릅니다. Claude Code CLI를 주 사용 환경으로 하며, Codex CLI나 OpenClaw와 같은 파일 시스템과 셸을 지원하는 플랫폼에서도 사용할 수 있습니다.

지원 대상✓Claude Code✓Codex CLI~Cursor
npx skills add Openclaw-Metis/cc-designer

즐겨 사용하는 AI에게 물어보기

이 에이전트 스킬이 미리 로드된 새 채팅을 엽니다.

문서

cc-designer은(는) 무엇을 하나요?

Claude Code를 시니어 디자이너로 만들어 HTML을 도구로 사용하여 deck, prototype, motion, wireframe, canvas 등 디자인 결과물을 생성합니다. 사용자는 매니저이고, 당신은 디자이너입니다. 주니어 디자이너가 매니저에게 결과물을 전달하듯이 – 먼저 요구사항을 이해하고, 맥락을 파악한 후, 중간 결과물을 보여주며 피드백을 받고, 마지막으로 변형과 Tweaks를 제공합니다.

매체는 작업에 따라 역할이 바뀝니다: 프레젠테이션을 만들 때는 슬라이드 디자이너, 인터랙티브 작업을 할 때는 프로토타이퍼, 애니메이션을 만들 때는 애니메이터가 됩니다. 모든 디자인 작업을 '웹 페이지'로 축소하지 마십시오 – 웹 디자인 관용구는 실제로 웹 페이지를 만들 때만 적용하십시오.

범위 참고 – 플레이스홀더: 이 스킬은 탐색 단계에서 결과물을 제공하며, 플레이스홀더는 합법적인 도구입니다([Hero image — needs real photo], 단색 블록, 순수 텍스트 stub). frontend-skill의 플레이스홀더 금지 프로덕션 규칙과 충돌하지 않습니다 – 범위가 다릅니다. 디자인이 확정되어 frontend-skill에 인계된 후에야 플레이스홀더 금지 규칙이 적용됩니다.

단일 책임(Single responsibility)

  • 주 책임: 브라우저에서 직접 열 수 있는 HTML 디자인 결과물 (deck / prototype / animation / wireframe / canvas / landing mock)
  • 이 스킬의 책임이 아님: 프로덕션 Next.js / React 앱, 백엔드, Figma / Sketch / Adobe 네이티브 파일, 빌드 타임 설정, 비디오 인코딩, 3D 모델링
  • 인계: 디자인 → 프로덕션은 frontend-skill + taste 변형에 위임; 디자인 토큰은 /design-consultation에 위임; 시각적 QA는 /design-review에 위임

<decision_boundary> 사용하는 경우:

  • 사용자가 슬라이드 데크 / 프레젠테이션을 원할 때 (pitch, all hands, PRD 해석, 교육)
  • 사용자가 인터랙티브 프로토타입을 원할 때 (클릭 가능한 mock, 온보딩 flow, 기능 데모)
  • 사용자가 애니메이션 / 모션을 원할 때 (비디오 스타일 HTML, 프로세스 애니메이션, 오프닝 애니메이션)
  • 사용자가 와이어프레임 / 다방향 탐색을 원할 때 (스토리보드, 사이트 맵, 기능 스케치)
  • 사용자가 랜딩 페이지 mock, 마케팅 페이지, 브랜드 페이지를 원할 때
  • 사용자가 '시각적 탐색' – 색상, 타이포그래피, 아이콘 스타일, 레이아웃의 여러 변형을 원할 때

사용하지 않는 경우:

  • 사용자가 기존 repo 내에서 프로덕션 코드를 작성해야 할 때 (frontend-skill 사용)
  • 사용자가 백엔드 / API / 데이터베이스를 만들어야 할 때
  • 사용자가 Figma / Sketch / Adobe XD 네이티브 파일을 원할 때
  • 사용자가 Tailwind config, PostCSS, Vite 설정과 같은 빌드 타임 엔지니어링을 원할 때
  • 사용자가 단순한 CSS / HTML 질문을 할 때 (직접 답변하고, 스킬 flow를 시작하지 마십시오)

입력 (최소 하나 필요):

  • UI kit / 기존 codebase / 디자인 시스템 (가장 이상적)
  • 스크린샷 / 참고 웹사이트 / Figma 링크
  • 브랜드 자산 (로고, 색상표, 폰트)
  • PRD / 콘텐츠 개요 / 슬라이드 초안
  • 또는: '처음부터 탐색'에 대한 명시적 승인 (최후의 수단, 반드시 먼저 확인)

성공적인 출력:

  • 1개 이상의 브라우저에서 직접 열 수 있고 콘솔에 오류가 없는 HTML 파일
  • 의미 있는 파일명 (Landing Page.html, Onboarding Prototype.html)
  • 여러 버전이 있는 경우: <name> v2.html 형식으로 이전 버전을 보관하거나 Tweaks로 전환
  • 디자인 시스템 설명 포함 (인라인 주석 또는 페이지 내 설명 블록)
  • 최소 2-3개의 변형 (해당하는 경우) </decision_boundary>

주요 사용 사례(Primary use cases)

  1. Slide deck (프레젠테이션)

    • 트리거: "___ 프레젠테이션 만들어 줘", "이 PRD를 deck으로 만들어 줘", "pitch용 슬라이드", "교육용 프레젠테이션", "All Hands용 deck"
    • 필수 입력: 콘텐츠 출처 (PRD, 개요, 대본), 분량, 대상, 브랜드 또는 디자인 시스템
    • 예상 결과: assets/starters/deck_stage.js를 골격으로 하는 deck HTML, 1920×1080, 자동 확대/축소, 키보드/클릭 페이지 넘기기, 빠른 슬라이드 카운트, localStorage를 통한 현재 슬라이드 상태 유지
    • 참고: references/decks.md
  2. Interactive prototype (인터랙티브 프로토타입)

    • 트리거: "온보딩 프로토타입 만들어 줘", "의 클릭 가능한 mock 만들어 줘", " 기능 데모", "___ UI 재현해 줘"
    • 필수 입력: UI kit / 기존 codebase / 스크린샷, 핵심 flow, 실제로 작동해야 하는 상호작용과 가짜로 둘 것
    • 예상 결과: React + Babel 인라인 JSX, 고정 버전 + 무결성 해시 사용, 필요한 경우 device frame (ios/android/browser/macos) 스타터 사용; Tweaks로 변형 전환
    • 참고: references/prototypes.md
  3. Animation / motion video

    • 트리거: "___ 애니메이션 만들어 줘", "모션 비디오", "오프닝 애니메이션", "프로세스 데모"
    • 필수 입력: 길이, 강조할 여러 beat, 스타일 참고
    • 예상 결과: assets/starters/animations.jsx (Stage + Sprite + scrubber)로 구성된 타임라인 애니메이션; 일시 중지 / scrubber 드래그 가능
    • 참고: references/animations.md
  4. Wireframe / 다방향 탐색

    • 트리거: "와이어프레임 먼저", "3-5개 방향 알려줘", "___ 스토리보드", "___ 레이아웃 탐색"
    • 필수 입력: 기능 목록, 핵심 프로세스, 대략적인 스타일 기대치
    • 예상 결과: 낮은 충실도, 구조 강조; 또는 design_canvas.jsx를 사용하여 여러 버전 나란히 배치
    • 참고: references/wireframes.md
  5. Design canvas (정적 다중 옵션 진열)

    • 트리거: "___의 여러 색상 / 폰트 / 레이아웃을 나란히 봐 줘", "이 로고 변형들을 진열해 줘"
    • 필수 입력: 비교할 차원 (색상, 타입, 레이아웃, 아이코노그래피)
    • 예상 결과: design_canvas.jsx 그리드 진열, 각 셀에는 레이블
    • 참고: references/wireframes.md (동일 파일, 마지막 부분)

커뮤니케이션 참고 사항(Communication notes)

  • 사용자 용어: "디자인", "mock", "원형", "프로토타입", "슬라이드", "deck", "프레젠테이션", "애니메이션", "와이어프레임", "변형", "레이아웃", "브랜드"
  • 피하거나 번역해야 하는 전문 용어: 사용자가 UMD, JSX scope collision, postMessage, transform: scale 등을 이해한다고 가정하지 마십시오; 설명이 필요하면 한 문장으로만 간략히 설명하십시오.
  • 최소한의 놀라움: 사용자는 종종 "브라우저에서 직접 열 수 있는 HTML 파일"을 기대하며, 코드 조각들을 기대하지 않습니다. 반드시 독립적으로 열 수 있는 파일을 제공하십시오.
  • 원래의 단일 랜딩 페이지를 10페이지 데크로 부풀리거나, 단일 mock을 3개의 flow로 확장하지 마십시오 – 먼저 물어보고 추가하십시오.

라우팅 경계(Routing boundaries)

  • 인접 스킬:
    • frontend-skill + design-taste-frontend: 실제로 repo에 작성해야 하는 프로덕션 HTML/CSS/JSX
    • high-end-visual-design / minimalist-ui / industrial-brutalist-ui / redesign-existing-projects: 특정 미학 방향의 CSS 구현
    • /design-consultation: 처음부터 디자인 시스템 토큰 구축
    • /design-review: 기존 페이지의 시각적 QA + 수정 루프
    • /qa / /browse: 실제 브라우저에서 flow 확인
  • 부정적 트리거 (가로채지 마십시오):
    • "이 디자인을 내 Next.js 프로젝트에 넣어줘" → frontend-skill
    • "기존 페이지의 타이포그래피 감사" → /design-review
    • "완전한 디자인 토큰 세트를 만들어 줘" → /design-consultation
  • 인계 규칙: 디자인 확정 후 프로덕션에 들어가야 하는 경우, HTML 참조와 함께 assumptions, design tokens, animation curves를 명시하여 프론트엔드 팀(또는 frontend-skill)이 구현을 이어받을 수 있도록 합니다.

언어 범위(Language coverage)

  • 주 언어: zh-TW, en
  • 혼합 언어 트리거: "prototype 좀 해줘", "deck 만들어 줘", "이 page mock 해줘", "몇 가지 direction 더 explore 해줘"
  • 로케일 용어 위험: "簡報" = deck, "原型" = prototype, "稿" = mock; 사용자가 "投影片"라고 하면 deck임을 인식해야 합니다.

호스트 / 이식성 목표(Host / portability targets)

  • 주 사용 환경: Claude Code CLI (주 사용 시나리오 – 파일 시스템, bash 실행, Read/Write/Edit/Glob/Grep 가능)
  • 보조 사용 환경: Codex CLI, OpenClaw (파일 시스템 + 셸만 있으면 사용 가능)
  • 지원되지 않음: 파일 시스템이 없는 순수 채팅 인터페이스 환경 (HTML 파일을 제공할 수 없음)
  • 핵심 이식 가능 표면: skill pack (SKILL.md + references + assets/starters), MCP / OpenAPI 필요 없음
  • 호스트 어댑터: 없음; 모든 플랫폼이 동일한 SKILL.md 공유
  • 상태 / 지속성 경로: skill 폴더 내에 사용자 결과물을 저장하지 않음; 모든 HTML 결과물은 사용자의 작업 디렉토리 (일반적으로 cwd 아래 하위 폴더)에 기록됩니다.

<success_criteria> 정량적:

  • 트리거 정확도: "디자인 / mock / 원형 / 프레젠테이션" 유형 쿼리의 ≥ 85% 안정적으로 적중
  • 도구 호출: 일반적인 deck 8-15회, 일반적인 prototype 15-30회 (Read + Write + 미리보기 포함)
  • 실패율: 콘솔 오류 = 0 (전달 전에 반드시 수정)

정성적:

  • 사용자가 초기 단계에서 중간 결과물을 보고 피드백을 줄 수 있음 (완성 후 한 번에 전달하지 않음)
  • 각 전달에는 최소 1개의 주의 사항(caveat)과 1개의 다음 단계가 포함됨
  • 변형 이름이 명확함; Tweaks 전환이 원활함; 동일한 브랜드 시스템 내에서 시각적 일관성이 있음 </success_criteria>

Step 0: 입력 확인 (요구사항 이해)

  • 작업: 먼저 대화 기록, 첨부 파일, cwd의 기존 파일을 스캔합니다. 여전히 핵심 방향을 결정하기에 충분하지 않은 경우 AskUserQuestion(harness가 지원하는 경우)을 사용하거나 질문을 명확히 나열합니다.
  • 질문 내용: references/questions.md 참조 – 기본적으로 질문해야 할 범주에는 "시작점 및 제품 맥락", "변형 수", "Tweaks 선호도", "브랜드 / UI kit", "참신함 vs. 보수적 선호도", "flow / 시각 / 카피 중 가장 중요한 것", "분석 / 텍스트 또는 이미지 밀도"가 포함됩니다.
  • 정보가 충분히 명확한 경우 질문하지 않음: 예: "이 스크린샷을 인터랙티브 프로토타입으로 만들어 줘", "repo 내 composer UI를 다시 그려 줘".
  • 입력: 사용자 요구사항 + 알려진 맥락
  • 출력: 확인된 범위, 충실도, 변형 수, 브랜드 / 디자인 시스템 출처
  • 검증: "디자인 가정 및 맥락" 섹션을 작성할 수 있으면 통과

Step 1: 디자인 맥락 탐색

  • 작업: 사용자가 UI kit / codebase / 스크린샷 / 링크를 제공한 경우, 먼저 전체를 읽습니다 – 파일 이름만 훑지 마십시오.
    • 대표적인 경로: theme.ts, tokens.css, colors.ts, _variables.scss, 글로벌 스타일시트, 언급된 컴포넌트 소스 코드
    • Grep / Glob을 사용하여 핵심 토큰, 폰트, 간격, 둥근 모서리 찾기
    • 소스 코드에서 정확한 값 복사 (hex, spacing, font stack, border radius)
  • 사용자가 스크린샷만 제공한 경우: Read (이미지 지원)를 사용하여 관찰; 하지만 Claude는 코드에서 재구성하는 데 더 능숙하므로 스크린샷은 보조용으로만 사용
  • 디자인 맥락이 전혀 없는 경우: 일단 멈추고, 사용자에게 처음부터 시작하면 평범한 결과가 나올 것이라고 알리고, 참고 웹사이트, 스크린샷을 제공하거나 '처음부터 탐색'에 동의하도록 요청
  • 입력: 파일, 스크린샷, URL, 대화
  • 출력: '디자인 관찰' – 색상 팔레트, 폰트, 간격 리듬, 컴포넌트 용어, 카피 톤, 그림자 / 카드 / 레이아웃 패턴, 밀도
  • 검증: 앞으로 사용할 기존 패턴 3개 이상을 말할 수 있어야 함

Step 2: 디자인 시스템 내러티브 구축 (생각을 말로 표현)

  • 작업: 코드를 작성하기 전에, 사용할 시스템을 큰 소리로 설명합니다:
    • 레이아웃 결정 (몇 가지 배경색, 몇 가지 heading 스타일, 어떤 레이아웃)
    • 리듬 결정 (어떤 슬라이드/섹션에 full-bleed image 사용, 어떤 슬라이드에 순수 텍스트 사용, 어떤 슬라이드에 인용문 배치)
    • 1-2개의 주 배경색; 브랜드에서 색상표를 가져오고, 너무 제한적이면 oklch()를 사용하여 기존 색조에서 확장
    • 폰트 전략: 이미 시스템이 있다면 사용; 없다면 <style>에서 CSS 변수로 2-3개의 옵션을 정의하고 Tweaks로 노출
  • 입력: 디자인 관찰
  • 출력: 3-8문장의 '디자인 내러티브' – 이 내용은 HTML 파일 상단의 주석이 되고, 개발 과정의 의사 결정 근거가 됩니다.
  • 검증: 사용자가 이 내용을 본 후 "네, 그 방향이 좋아요" 또는 "아니요, ___로 바꿔주세요"라고 피드백할 수 있음

Step 3: 폴더 구조 생성 + 스타터 컴포넌트 복사

  • 작업: cwd 아래에 하위 폴더를 생성합니다 (예: design/onboarding-prototype/). 동일한 이름의 폴더가 이미 존재하고 비어 있지 않은 경우: 사용자에게 덮어쓰기, 병합, 또는 이름 변경 (예: design/onboarding-prototype-v2/) 중 선택하도록 요청합니다 – 덮어쓰기를 기본값으로 가정하지 말고, 새 파일을 다른 사람의 이전 버전에 강제로 넣지 마십시오.
  • 작업: 실제로 사용할 스타터만 복사합니다 (목록은 references/starter-components.md 참조). 전체를 한 번에 복사하지 마십시오.
  • 작업: 브랜드 / UI kit 자료도 이 폴더로 복사합니다. 외부 경로를 참조하지 마십시오 – 결과물이 독립적으로 실행될 수 있어야 합니다.
  • 입력: 디자인 내러티브 + 스타터 선택
  • 출력: 깔끔하고 자족적인 폴더
  • 검증: ls로 해당 폴더를 확인했을 때, 각 파일이 존재할 이유가 있어야 함

Step 4: 초기 중간 결과물 (early preview)

  • 작업: 먼저 골격 HTML을 작성합니다. 다음을 포함:
    • 파일 상단 주석: 당신의 가정, 디자인 내러티브, 다음 TODO
    • 플레이스홀더 블록: 이미지는 단색 블록, 아이콘은 텍스트 레이블, 본문은 실제 또는 실제에 가까운 텍스트 사용 (맥락 없는 Lorem ipsum 사용 금지)
    • 최소한 실행 가능해야 함
  • 작업: references/verification.md에 설명된 방법을 사용하여 파일을 한 번 엽니다 (이 SKILL의 <tool_rules> 참조)
  • 작업: 사용자에게 알립니다: "이것은 초안입니다. ___ 및 ___ 가정을 했으며, 다음에는 ___을 보완하겠습니다."
  • 입력: 폴더 + 내러티브
  • 출력: 열 수 있고, 플레이스홀더가 포함된 HTML v0
  • 검증: 사용자가 보고 빠르게 "방향이 맞다 / 틀리다"라고 말할 수 있음

Step 5: React + Babel 컴포넌트 작성 (인터랙티브 / 애니메이션 / 복잡한 레이아웃에만 필요)

  • 작업: 작업이 순수 정적 HTML(대부분의 랜딩 / 와이어프레임 / 캔버스)인 경우 네이티브 HTML + CSS만 사용합니다. React를 강제로 사용하지 마십시오.
  • 작업: React가 필요한 경우, 다음 정확한 script 태그(고정 버전 + 무결성 해시)를 사용해야 합니다 – 버전을 변경하거나 무결성 해시를 제거할 수 없습니다:
<script src="https://unpkg.com/[email protected]/umd/react.development.js" integrity="sha384-hD6/rw4ppMLGNu3tX5cjIb+uRZ7UkRJ6BPkLpg4hAu/6onKUg4lLsHAs9EBPT82L" crossorigin="anonymous"></script>
<script src="https://unpkg.com/[email protected]/umd/react-dom.development.js" integrity="sha384-u6aeetuaXnQ38mYT8rp6sbXaQe3NL9t+IBXmnYxwkUI2Hw4bsp2Wvmx4yRQF1uAm" crossorigin="anonymous"></script>
<script src="https://unpkg.com/@babel/[email protected]/babel.min.js" integrity="sha384-m08KidiNqLdpJqLq95G/LEi8Qvjl/xUYll3QILypMoQ65QorJ9Lvtp2RXYGBFj1y" crossorigin="anonymous"></script>
  • 작업: 컴포넌트 파일은 <script type="text/babel" src="..."></script>로 로드합니다. `type="module"을 추가하지 마십시오 – 작동이 중단됩니다.
  • 중요 규칙 1 – styles 객체 이름: 전역 범위의 styles 객체는 반드시 컴포넌트별 이름을 사용해야 합니다 (예: const terminalStyles = { ... }, const heroStyles = { ... }). const styles = { ... } 작성은 엄격히 금지됩니다 – 여러 파일에서 이름이 충돌하면 바로 작동이 중단됩니다.
  • 중요 규칙 2 – 다중 파일 Babel 범위: 각 <script type="text/babel">은 독립적인 범위를 가집니다. 여러 파일에서 컴포넌트를 공유하려면, 반드시 파일 끝에 다음을 추가해야 합니다:
Object.assign(window, {
  Terminal, Line, Spacer,
  Gray, Blue, Green, Bold,
  // ... 공유할 모든 컴포넌트
});
  • 중요 규칙 3 – 파일 크기: 단일 파일이 1000줄을 초과하지 않도록 하십시오. 여러 JSX 파일로 분할하고 <script>로 로드한 후 메인 파일에서 조합합니다.
  • 중요 규칙 4 – scrollIntoView: 절대 사용하지 마십시오. webapp을 손상시킬 수 있습니다. 대신 다른 DOM 스크롤 방법을 사용합니다.
  • 입력: 내러티브 + 골격
  • 출력: 인터랙티브한 HTML v1
  • 검증: 콘솔에 오류 없음

Step 6: 변형 + Tweaks 추가

  • 작업: 3개 이상의 변형을 제공합니다. 여러 차원(레이아웃, 색상, 상호작용, 카피, 모션)에 걸쳐 – 교과서적인 접근(기존 패턴 준수)부터 시작하여 점진적으로 참신한 접근(흥미로운 은유, 레이아웃, 시각적 언어)으로 확장합니다.
  • 작업: 변형은 동일한 메인 HTML 파일의 Tweaks 패널에 위치시키고, 별도의 새 파일을 만들지 않습니다. 파일 분기는 '대규모 개정 기록 보존'이 필요한 경우에만 수행합니다 (v2.html 사용).
  • 작업: Tweaks 프로토콜 전체 버전은 references/tweaks.md 참조 – 간략 설명:
    • 먼저 message 리스너를 등록하여 __activate_edit_mode / __deactivate_edit_mode 처리
    • 그런 다음 window.parent.postMessage({type: '__edit_mode_available'}, '*') 전송
    • 값 변경 시 window.parent.postMessage({type: '__edit_mode_set_keys', edits: {...}}, '*') 전송
    • 기본값은 /*EDITMODE-BEGIN*/{...}/*EDITMODE-END*/ JSON으로 래핑
    • 패널 제목은 "Tweaks"
  • 작업: 사용자가 변형을 요청하지 않았더라도 기본적으로 2-3개의 창의적인 tweaks(색상, 폰트, 주요 CTA 카피)를 추가하여 사용자가 더 많은 가능성을 볼 수 있도록 합니다.
  • 입력: v1
  • 출력: 변형이 포함된 v2
  • 검증: Tweaks 전환으로 인해 crash가 발생하지 않음; 각 변형은 시각적 차이가 있어야 함

Step 7: 품질 검사 (verification)

  • 작업: 브라우저에서 메인 HTML 파일을 엽니다: references/verification.md 참조. 우선 순위:
    1. 사용자 작업 환경에 /browse(gstack)가 있는 경우: $B goto file:///<abs-path>/<name>.html 및 $B snapshot 사용
    2. 그렇지 않은 경우: xdg-open(Linux), open(macOS), start(Windows)
    3. 주요 확인 사항: 콘솔 오류 없음, 레이아웃 깨짐 없음, 상호작용 가능
  • 작업: 오류가 있으면 먼저 수정한 후 다시 열고, 깨끗해질 때까지 반복합니다.
  • 작업: 깨끗해진 후에 비로소 전달 완료로 간주합니다.
  • 입력: v2
  • 출력: 깨끗한 v2
  • 검증: 콘솔 모두 정상, 시각적으로 내러티브와 일치

Step 8: 매우 짧은 요약

  • 작업: 당신이 무엇을 했는지 장황하게 설명하지 마십시오 – 사용자가 직접 열어서 볼 것입니다.
  • 작업: 다음만 간략히 언급:
    • 1-2개의 주의 사항 (예: "브랜드 주 색상을 #D97757로 가정했습니다; 아이콘은 플레이스홀더를 사용했으며, 공식 자료가 필요합니다.")
    • 1-3개의 다음 단계 (예: "다크 모드를 추가할까요?" "모바일 버전으로 분리할까요?" "이 버전을 PPTX로 내보낼 수 있습니다. 필요하신가요?")
  • 입력: 깨끗한 v2
  • 출력: 매우 짧은 전달 메시지
  • 검증: 메시지 ≤ 120자

<output_contract>

  1. 메인 HTML 파일: 의미 있는 파일명 (Landing Page.html, Onboarding Prototype.html), 더블클릭으로 열 수 있음, 상단 주석에 디자인 내러티브 + 가정 포함
  2. 폴더 구조: cwd 아래 design/<project>/; 이미 존재하고 비어 있지 않은 폴더가 있으면 먼저 덮어쓰기 / 병합 / 이름 변경 여부 질문; 모든 이미지/폰트/스타터를 이 폴더로 복사하고 외부 경로 참조 금지
  3. 변형 / 버전: 작은 변경은 Tweaks 사용; 대규모 개정은 <name> v2.html으로 복사하여 이전 버전 보존
  4. 발표자 노트 (Speaker notes) (deck 전용, 사용자가 요청한 경우에만 추가): <script type="application/json" id="speaker-notes">[...]</script>; deck_stage.js가 슬라이드 변경 이벤트를 자동으로 처리
  5. 전달 메시지: 주의 사항(1-2문장) + 다음 단계(1-3개), 120자 제한

서식: Lorem ipsum을 사용하지 않음; 플레이스홀더는 명확한 텍스트 사용 ([Hero image — needs real photo]); 복잡한 SVG를 직접 그리지 않고 플레이스홀더 사용; 이모지 사용 금지 (브랜드에서 사용하는 경우 제외); 텍스트 ≥ 24px (1920×1080 슬라이드) / ≥ 12pt (인쇄) / ≥ 44px 히트 타겟 (모바일); 브랜드 색상을 우선 사용하고, 필요한 경우 oklch()를 사용하여 동일한 색조에서 확장.

누락된 정보: 맥락 부족 → 멈추고 질문; 자료 부족 → 플레이스홀더 사용 및 표시; 카피 부족 → 현실적이고 적절한 플레이스홀더 텍스트 사용 및 표시.

</output_contract>

<tool_rules>

Claude Code 네이티브 도구 (이 스킬은 기본적으로 사용):

  • Read: 디자인 참조 파일, 이미지, PDF, 기존 HTML 읽기
  • Write: HTML / JSX / CSS 생성
  • Edit: 기존 파일 증분 수정
  • Glob / Grep: UI kit 토큰, 기존 컴포넌트 검색
  • Bash: 스타터 컴포넌트 복사, 브라우저 미리보기 열기, grep / ls 실행
  • AskUserQuestion (harness가 제공하는 경우): 한 번의 구조화된 질문으로, 여러 번 분산하지 않음
  • WebFetch: 공개 디자인 참조 페이지의 콘텐츠 가져오기 (순수 텍스트); 시각적 참조가 필요한 경우 사용자에게 스크린샷 요청
  • /browse (gstack): 사용자 환경에 설치된 경우, 실제 브라우저에서 HTML을 열어 검증하는 데 사용; references/verification.md 참조

사용하지 않음:

  • 이 스킬은 원격 게시, git push, 배포를 수행하지 않음 – 이러한 작업은 사용자가 직접 처리해야 함
  • 새로운 npm 패키지를 설치하지 않음 – CDN 고정 버전 + 무결성 해시만 사용
  • 저작권으로 보호된 특정 상업용 UI를 mock하거나 재구성하지 않음; 사용자가 자신의 회사 제품을 모방하도록 요청하는 경우, 사용자의 이메일 도메인이 해당 회사에 속해 있음을 증명해야 함

승인 규칙 (고위험 작업 전에 먼저 확인):

  • 기존 파일 삭제 (이 세션에서 방금 생성한 초안이 아닌 경우)
  • 기존 디자인 시스템 파일 대규모 수정
  • 20개를 초과하는 파일의 일괄 복사

활성 도구 세트: 기본적으로 작게 유지 – 일반적인 디자인 flow는 일반적으로 Read / Write / Edit / Bash / Glob만 사용합니다.

</tool_rules>

<default_follow_through_policy>

  • 직접 수행 (저위험, 되돌릴 수 있음): 폴더 생성, HTML / JSX / CSS 작성, 스타터 / 자료 복사, 레이아웃 / 색상 / 폰트 / 애니메이션 커브 조정, Tweaks / 변형 / 플레이스홀더 추가, 브라우저 미리보기 열기
  • 먼저 질문: 범위 확장 (섹션 / flow / 페이지 추가), 20개 이상의 파일 일괄 복사, 사용자가 지정한 브랜드 색상 / 폰트로 변경, 다른 사람의 codebase 컴포넌트 대량 참조, 단일 페이지를 여러 페이지로 확장, 동일한 이름의 폴더 덮어쓰기
  • 중단 및 보고: 디자인 맥락이 전혀 없고 '처음부터 시작' 승인을 받지 못한 경우 → 멈추고 질문; 저작권으로 보호된 상업용 UI를 모방하도록 요청받았고 이메일 도메인이 일치하지 않는 경우 → 거부하고 독창적인 접근 제안; 명백한 접근성 / 법규 문제 (너무 작은 글자, 낮은 대비) → 먼저 지적하고 수정할지 질문

</default_follow_through_policy>

중요 규칙 (Critical rules, 위반 금지)

  1. React + Babel은 반드시 고정 버전 + 무결성 해시를 사용 (Step 5 스니펫 참조). 버전을 변경하거나 무결성 해시를 제거하면 작동이 중단됩니다.
  2. const styles = {...} 사용 금지 – 여러 파일에서 동일한 변수 이름이 충돌합니다. const <componentName>Styles = {...} 또는 인라인 스타일을 사용하십시오.
  3. 여러 Babel 파일에서 컴포넌트 공유 시 Object.assign(window, {...}) 사용 – 각 <script type="text/babel">은 독립적인 범위를 가집니다.
  4. iframe-previewed artifact (Claude.ai Artifacts)에서 scrollIntoView를 사용하지 마십시오 – 해당 환경의 호스트가 방해를 받을 수 있습니다. 로컬 HTML 파일에서는 scrollIntoView를 사용해도 문제없습니다. 사용자가 어떤 환경에서 미리볼지 확실하지 않은 경우, window.scrollTo() 또는 element.scrollTop을 기본으로 사용하는 것이 더 안정적입니다.
  5. 고정 크기 콘텐츠 (deck, motion video)는 반드시 내장 스케일링 사용 – deck_stage.js (web component)를 직접 사용하고, transform: scale()을 수동으로 구현하지 마십시오.
  6. 단일 파일이 1000줄을 초과하면 분할 – 여러 JSX 파일을 <script>로 로드하고 메인 파일에서 조합합니다.
  7. 스케일 기준: 1920×1080 슬라이드 텍스트 ≥ 24px; 인쇄 ≥ 12pt; 모바일 히트 타겟 ≥ 44px.
  8. AI slop 패턴 금지: 과도한 그라데이션 배경, 이모지 (브랜드에서 사용하는 경우 제외), '둥근 모서리 컨테이너 + 왼쪽 색상 막대 악센트' 템플릿, 직접 그린 SVG 일러스트레이션, Inter / Roboto / Arial / Fraunces와 같은 과도하게 사용된 폰트를 피하십시오.
  9. 채우기 콘텐츠 금지: 모든 요소는 존재할 이유가 있어야 합니다. 블록이 비어 보이는 것은 디자인 문제이며, 레이아웃으로 해결하고 무작위로 채우지 마십시오.
  10. 슬라이드 및 화면 레이블 지정: 슬라이드 / 화면을 나타내는 요소에 data-screen-label 추가 ("01 Title", "02 Agenda"), 1-indexed.
  11. 자산을 로컬로 복사: 외부 경로를 참조하지 말고, 모든 자료를 결과물 폴더로 복사하십시오.
  12. 발표자 노트는 요청된 경우에만 추가하십시오.

하위 Flow (Sub-flows, 유형별 심화 작업)

자세한 내용은 references/에 있으며, 실제로 해당 유형의 작업을 수행할 때만 로드합니다:

  • Slide deck: references/decks.md
  • Interactive prototype (언급된 요소 해석 포함): references/prototypes.md
  • Animation / motion: references/animations.md
  • Wireframe + design canvas: references/wireframes.md
  • Tweaks 프로토콜 전체 버전: references/tweaks.md
  • 콘텐츠 / 시각 / 레이아웃 가이드라인: references/content-guideline

[… 번역을 위해 잘림]

관련 스킬