DESIGN SYSTEM · BEGINNER GUIDE

v1.2 · 2026.10.26

처음 배우는 디자인 시스템

화면 하나를 만드는 기초부터, 여러 화면의 공통 규칙을 정하고 AI와 실제 앱에 적용하는 방법까지. 실무 경험이 없어도 순서대로 따라갈 수 있어요.

0 시작 전 기초

알아보기

화면을 만드는 일부터 알아볼까요?

이 자료는 앱을 만들거나 회사에서 디자인해 본 적이 없는 사람을 위한 안내서예요. 코드를 외우지 않아도 돼요. 같은 앱의 여러 화면을 어떻게 같은 기준으로 만들 수 있는지 이해하는 것이 목표예요.

예시는 봉사활동을 찾고 신청하는 화면으로 이어져요.

우리 앱의 화면사용자가 하는 일
목록참여할 봉사활동 찾기
상세언제, 어디서 하는 활동인지 확인하기
신청이름과 연락처를 적고 신청하기
화면 내용과 수치는 설명을 위한 가상 예시예요. 여러분 앱에 그대로 적용해야 하는 정답은 아니에요.
알아보기

먼저 알아야 할 단어 6개

단어쉬운 뜻예시
UI · 사용자 인터페이스사람이 보고 누르며 앱을 사용하는 부분버튼, 글자, 입력창
UX · 사용자 경험목적을 이루는 과정에서 겪는 전체 경험봉사활동을 쉽게 찾고 안심하고 신청하는가
화면한 시점에 사용자에게 보여주는 구성봉사활동 상세 화면
레이아웃화면 안에 무엇을 어디에 놓는지 정한 배치제목 위, 설명 중간, 신청 버튼 아래
구현그림과 설명을 실제 동작하는 프로그램으로 만드는 일신청 버튼을 누르면 신청 내용이 저장됨
명세다른 사람이 추측 없이 만들 수 있게 적은 설명버튼 높이, 색, 눌렀을 때 동작
알아보기

종이에 그린 그림과 실제 앱은 어떻게 다를까요?

  1. 기획: 누구의 어떤 문제를 해결할지 정해요.
  2. 와이어프레임: 내용과 순서를 선과 상자로 정해요.
  3. 시각 디자인: 실제 글자, 색, 모양으로 구체화해요.
  4. 구현: 눌렀을 때 이동하고 저장되게 만들어요.
  5. 확인: 사용자가 목적을 이룰 수 있는지 시험해요.
프로토타입은 미리 사용해 보는 모형이에요. 그림에 화면 이동만 연결할 수도 있고 코드로 만들 수도 있어요. 코드로 된 모형도 데이터 저장·보안·오류 처리가 갖춰진 출시 앱과는 다를 수 있어요.

1 왜 필요한가

알아보기

팀원 3명이 화면을 하나씩 만들었어요

목록은 민수, 상세는 지우, 신청은 AI가 만들었어요. 그런데 같은 ‘신청하기’ 버튼이 전부 달라요.

목록
상세
신청

사용자는 어느 버튼이 중요한지 다시 배워야 해요. 만드는 사람도 버튼을 수정할 때 세 곳을 각각 고쳐야 해요. 화면이 30개라면 더 복잡해지겠죠.

디자인 시스템은 같은 제품을 같은 기준으로 만들기 위한 공통 규칙, 재사용할 부품, 사용 설명, 관리 방법이에요.
알아보기

레스토랑으로 생각하면 쉬워요

레스토랑앱을 만드는 팀
같은 계량 기준색, 글자, 간격의 공통 값
정해진 조리법버튼·입력창의 구성과 작동 규칙
주방 도구화면에서 반복해 쓰는 UI 부품
알레르기·위생 안내읽기·조작하기 쉬운 접근성 기준
조리법을 바꾸고 전달하는 과정변경 승인, 배포, 업데이트 안내
비유의 핵심은 “매번 새로 결정하지 않는다”예요. 디자인 시스템이 있다고 모든 화면이 똑같아지는 것은 아니에요. 필요한 정보와 배치는 화면 목적에 맞게 달라져요.
알아보기

UI Kit과 디자인 시스템은 뭐가 달라요?

자료들어 있는 것아직 결정해야 할 것
스타일 가이드색·글꼴·브랜드 표현 기준동작하는 부품과 사용·관리 방식
UI Kit · UI 키트버튼·입력창 등 화면 부품 모음우리 앱에서 언제 어떻게 쓸지
디자인 시스템기준·부품·사용 규칙·운영 방식새로운 상황에 맞춰 계속 보완
좋은 UI Kit에는 상태와 설명이 충분히 들어 있을 수도 있어요. “키트는 모양만 있다”는 절대적인 구분은 아니에요. 내려받은 자료가 우리 팀의 운영 체계까지 대신해 주는지는 따로 봐야 해요.

2 원본 디자인부터

알아보기

모든 화면을 완성한 다음 시스템을 만들까요?

새 앱이라면 대표 화면으로 디자인 방향을 먼저 확인하는 것이 좋아요. 하지만 모든 화면을 완성한 뒤에야 시스템을 시작할 수 있는 것은 아니에요. 처음부터 색과 글자 기준 몇 개를 잡고 화면을 만들면서 함께 발전시킬 수 있어요.

  1. 기획과 와이어프레임으로 필요한 내용·동선을 정해요.
  2. 분위기, 글자, 정보 배치가 다른 대표 화면 시안 2~3개를 비교해요.
  3. 한 방향을 선택해 목록·상세·신청 같은 핵심 화면에 적용해요.
  4. 반복되는 색·간격·버튼을 공통 규칙과 부품으로 정리해요.
  5. 나머지 화면에 적용하고, 맞지 않는 규칙은 보완해요.
이미 잘 만들어진 시스템을 쓰는 조직은 반대로 기존 부품을 조합해 화면부터 만들 수 있어요. “항상 화면 먼저” 또는 “항상 시스템 먼저”라는 한 가지 순서는 없어요.
알아보기

여기서 원본이란 무엇일까요?

원본은 단순히 가장 먼저 만든 그림이 아니에요. 팀이 현재 기준으로 합의한 디자인이에요. 초안과 승인본을 구분하고, 버전과 바뀐 이유를 남겨야 해요.

지금 있는 자료다음에 필요한 일
와이어프레임만 있다색·글자·버튼을 포함한 대표 시각 디자인을 만든다.
이미지 시안만 있다실제 크기·간격·반복 규칙·상태를 정한다.
Figma Design 화면이 있다쓰인 값과 부품을 조사하고 기준을 정리한다.
실행되는 코드 시안이 있다폰에서 확인하고 기준을 정한 뒤 재사용 구조로 정리한다.
대표 화면 하나에서 본 값을 곧바로 “모든 화면의 규칙”으로 확정하지 마세요. 최소한 서로 다른 목적의 화면에 적용해 보고 결정해요.
알아보기

Figma Make가 잘 안 맞을 때의 방법

방법잘 맞는 상황유의할 점
Figma Design에서 직접 만들기배치·타이포·세부 모양을 직접 다듬고 싶을 때빈 화면부터 어렵다면 구조가 단순한 UI Kit을 골라 시작한다.
Codex로 코드 시안 만들기 → Figma Design에서 정리말로 요청하고 실제 눌러보며 방향을 찾고 싶을 때가져온 화면을 컴포넌트와 변수에 맞춰 다시 정리해야 한다.
기존 디자인 시스템/키트에서 출발기간이 짧고 기본적인 앱 화면이 필요할 때라이선스, 플랫폼, 필요한 부품과 상태를 확인한다.

이번 수업 추천: 한 화면의 방향부터 고르세요. 전체 앱을 한 번에 생성한 뒤 전부 고치는 것보다 판단하기 쉬워요. 코드로 먼저 만들더라도 내용, 간격, 버튼 역할을 직접 결정하는 사람은 필요해요.

도구 기능 참고: Figma 공식 Code to canvas 안내. 코드 화면을 편집 가능한 레이어로 가져올 수 있지만, 기존 컴포넌트 연결까지 자동 완성된다고 볼 수는 없어요.

우리 앱의 목록 화면 시안 3개를 비교할 수 있게 만들어줘.
내용과 기능은 모두 같게 유지하고, 정보 배치와 글자 위계가 다른 방향으로 제안해줘.
기준 너비는 390 CSS px. 실제 기기에서도 읽고 누르기 쉬워야 해.
지금은 서버·로그인·데이터 저장 없이 샘플 내용으로 화면만 만들어줘.
각 시안이 어떤 사용자 행동을 돕는지 짧게 설명해줘.
내가 한 방향을 고른 뒤 나머지 화면으로 확장하자.

3 전체 구조

알아보기

디자인 시스템은 다섯 층으로 볼 수 있어요

층쉬운 뜻앱에 적용하는 예
1. 방향어떤 경험을 주려는가처음 참여하는 사람도 안심하고 신청한다.
2. 기초 기준모든 화면이 공유할 값본문 글자 16, 기본 화면 여백 16
3. 부품여러 곳에서 재사용하는 단위버튼, 입력창, 활동 카드
4. 조합 규칙부품을 함께 사용하는 방식신청 양식, 오류 안내, 삭제 확인
5. 운영기준을 바꾸고 전달하는 방법누가 승인하고 어느 화면을 고칠지 정함
색 표만 있어도 시작은 할 수 있어요. 다만 실무에서는 사용법, 구현, 업데이트 과정까지 있어야 여러 사람이 지속적으로 같은 기준을 쓸 수 있어요.
알아보기

한 화면을 분해해 보세요

활동 목록

이번 주 봉사활동

모집 중

동네 도서관 책 정리

토요일 10:00 · 2시간

글자: 제목·본문·보조 설명

색: 배경·글자·강조·테두리

간격: 화면 바깥 여백·카드 안 여백·요소 사이

부품: 상태표시·카드·버튼

규칙: 마감되면 모집 상태와 버튼 동작을 바꾼다.

4 토큰 이해하기

알아보기

토큰은 “값을 부르는 공통 이름”이에요

매번 ‘배경에 #FFFFFF를 넣어’라고 쓰는 대신 surface라는 이름을 만들고 ‘카드 배경에는 surface를 써’라고 정해요. 토큰은 이름 붙인 값이고, 그 이름의 용도까지 기록하면 같은 판단을 반복하기 쉬워져요.

이름값쓰는 곳
color/primary#0F6E56주요 행동 버튼의 배경
color/on-primary#FFFFFF주요 버튼 안의 글자
color/text#1F1E1D기본 본문과 제목
space/page16 CSS px모바일 콘텐츠 좌우 여백
type/body16 / 24 / 400본문 크기 / 줄 높이 / 굵기
토큰 이름은 팀의 약속이에요. primary나 secondary라는 영어 이름만으로 뜻이 정해지지 않아요. 이 자료에서 primary는 주요 행동이고, secondary는 보조 글자색이에요. 팀마다 다를 수 있으니 용도를 확인하세요.
알아보기

한 번 바꾸면 어디까지 달라질까요?

아래에서 주요 색을 바꿔 보세요. 세 화면의 버튼이 같은 토큰을 참조하고 있어서 함께 바뀌어요.

목록
상세
신청
현재 값 #0F6E56

단, 값을 복사해 직접 붙여 넣은 요소는 함께 바뀌지 않아요. 이름을 붙이는 것과 실제로 연결하는 것은 별개의 일이에요.

알아보기

Primitive와 Semantic은 왜 나눌까요?

이름 종류쉬운 뜻예시
Primitive · 기본 값색상표나 수치 자체를 부르는 이름green/700 = #0F6E56
Semantic · 역할이 값을 어떤 역할로 사용할지 정한 이름color/primary → green/700
Component · 부품 전용, 선택특정 부품에만 적용하는 세부 이름button/background → color/primary

참조(alias)는 값을 복사하는 대신 다른 이름을 가리키게 하는 연결이에요. 브랜드색을 바꾸려면 primary가 가리키는 대상을 바꿔요.

기본 토큰을 직접 써도 그 토큰의 값을 바꾸면 연결된 요소는 함께 바뀌어요. 역할 이름의 장점은 “같은 색이어도 다른 역할”을 나눠 바꿀 수 있다는 점이에요. 주요 버튼과 성공 알림이 우연히 같은 초록이라도, 주요 버튼만 파랑으로 바꾸기 쉬워져요.
알아보기

숫자도 읽는 법부터 배워요

표기뜻주의
#0F6E56색상을 적는 HEX 코드색의 용도는 별도로 정해야 해요.
16 / 24 / 400글자 크기 16, 줄 높이 24, 굵기 400글꼴 종류도 정해야 해요.
radius 12모서리를 둥글게 하는 정도 12상자 크기와 함께 보고 정해요.
CSS px웹에서 레이아웃을 정하는 논리 단위실제 화면의 물리 픽셀이나 Android dp와 무조건 같지 않아요.
4·8·12·16 같은 간격 목록은 선택을 줄이는 방법이에요. 모든 프로젝트가 4의 배수만 써야 한다는 국제 표준은 아니에요. 예외가 필요하면 이유와 적용 범위를 적어요.

5 부품과 상태

알아보기

컴포넌트는 반복해 쓰는 부품이에요

같은 버튼을 열 번 새로 그리면 나중에 열 번 고쳐야 해요. 버튼 원형을 하나 만들고 그 원형에 연결된 버튼을 여러 화면에 쓰면, 공통 기준을 관리하기 쉬워져요.

단어뜻예
컴포넌트반복해서 쓰는 UI 단위신청 버튼
메인 컴포넌트Figma에서 부품의 공통 기준이 되는 원형버튼 원형
인스턴스원형에 연결된 사용본상세 화면에 넣은 신청 버튼
코드 컴포넌트실제로 동작하는 재사용 코드여러 화면이 불러 쓰는 Button
Figma의 컴포넌트와 코드의 컴포넌트는 별개예요. 이름과 구조를 맞추고 연결할 수 있지만, Figma에서 만들었다고 코드가 자동으로 생기거나 동기화되지는 않아요.
알아보기

Variant와 State를 구분해 볼까요?

구분질문버튼 예시
Anatomy · 구성무엇으로 이루어졌나?배경, 문구, 선택적 아이콘
Variant · 종류어떤 용도·종류인가?주요 / 보조 / 위험 행동
State · 상태지금 어떤 상황인가?기본 / 눌림 / 처리 중 / 비활성 / 포커스
Behavior · 동작입력하면 무엇이 일어나나?신청 요청 중 중복 제출을 막고 결과를 알림

위험 버튼은 종류이고, 위험 버튼이 처리 중인 것은 상태예요. Figma에서는 상태를 Variant 속성으로 표현할 수도 있어요. 도구의 표현 방식과 개념을 구분하세요.

누르면 신청 요청을 시작할 수 있어요.

개념 설명용 모형이에요. 실제 신청은 일어나지 않아요.
포커스는 키보드 등으로 현재 조작할 위치를 가리키는 표시예요. 모바일도 키보드·보조기기를 쓸 수 있어요. 마우스로 사용하는 환경에는 hover도 검토하세요. 상태는 서로 겹칠 수 있으므로 표의 모든 조합을 별도 그림으로 만들 필요는 없어요.
알아보기

부품 사용 설명서에는 무엇을 적나요?

Contract는 거창한 법적 계약이 아니라, ‘이 부품을 이 조건으로 사용한다’는 약속이에요.

항목신청 버튼 예
구성·표시문구는 필수, 아이콘은 선택
종류·크기primary / secondary / danger, 크기는 기본 1종부터
상태·동작처리 중 재제출 금지, 실패 시 재시도 가능
사용 규칙주요 행동 한 영역에서 시각적 우선순위가 명확해야 함
구현 연결실제 파일 위치와 허용 속성은 구현 코드를 확인해 기록
검증키보드 조작, 중복 클릭, 긴 문구, 오류 복구 확인
Prop은 코드 부품에 전달하는 설정값이에요. 예를 들어 variant="primary"는 “주요 버튼 종류로 보여줘”라는 뜻이에요. Figma 속성과 코드 Prop은 자동으로 같아지는 것이 아니라 팀이 대응 관계를 맞추는 거예요.

6 Figma에 정리

알아보기

Figma는 생각을 저장하고 공유하는 도구예요

Figma Design은 글자와 도형을 자유롭게 배치하고, 부품과 규칙을 관리하는 데 유용해요. Figma Make는 말로 요청해 코드 기반 화면을 만드는 도구예요. 같은 Figma 이름이 붙어도 역할이 달라요.

기능쉬운 뜻실제로 할 일
Frame · 프레임화면이나 묶음의 경계목록·상세·신청 화면을 구분
Auto layout · 자동 배치내용에 따라 간격과 크기를 유지하는 배치문구가 길어져도 버튼 여백 유지
Variables · 변수이름 붙여 저장하고 재사용하는 값색·간격·모서리 값 연결
Styles · 스타일여러 속성을 묶은 설정글꼴·크기·줄 높이, 그림자 조합
Components · 컴포넌트여러 화면에서 쓰는 공통 부품버튼 원형과 연결된 사용본
Library · 라이브러리여러 파일·팀에 공유하는 자산 모음승인된 변수·스타일·부품 공유
처음에는 한 파일 안에 기준과 화면을 같이 두어도 괜찮아요. 여러 파일에서 사용해야 할 때 라이브러리 공유를 검토하세요. 메뉴·공유 기능은 요금제와 권한에 따라 다를 수 있어요.
알아보기

최소한 이 순서로 해 보세요

  1. 기준 디자인 화면을 복제해 “실험용”과 “기준”을 구분해요.
  2. 색·글자·간격을 모아 같은 역할인지 비교해요.
  3. 확정한 색과 숫자는 Variables, 글자 조합은 Text Styles로 정리해요.
  4. 요소에 값만 입력하지 말고 해당 변수·스타일을 적용해요.
  5. 반복되는 버튼을 컴포넌트로 만들고 종류·상태를 정리해요.
  6. 다른 화면에는 원형의 인스턴스를 가져다 써요.
  7. 색 하나를 바꿔 연결된 요소가 바뀌는지 시험해요.
여기서 “25개 등록”은 역할 묶음 기준이에요. Primitive와 Semantic을 둘 다 만들면 실제 변수 행은 더 많아질 수 있어요. Typography 5개는 Text Styles로, Shadow 2개는 Effect Styles로 관리할 수도 있어요. 모두를 변수 한 줄씩으로 만들라는 뜻으로 이해하면 헷갈려요.
알아보기

화면 크기는 비율 하나로 고정하지 않아요

390 × 844 같은 기준 프레임은 작업용 기준이에요. 모든 폰을 이 비율로 늘려 보여준다는 뜻은 아니에요. 콘텐츠가 길면 세로로 스크롤하고, 너비가 달라지면 줄바꿈과 배치가 대응해야 해요.

정할 것수업용 예시
기준 너비390 CSS px
확인할 너비360 / 390 / 430 CSS px
바깥 여백좌우 16, 세로 콘텐츠는 필요하면 스크롤
가려지면 안 되는 것제목·입력창·주요 버튼, 시스템 바·키보드와의 겹침 확인
위 수치는 학습 예시이며 시장 점유율을 뜻하지 않아요. 실제 목표 사용자의 폰과 앱 환경에 맞춰 검증 범위를 정해야 해요.

7 AI에게 전달할 자료 만들기

목표

이 단계에서는 무엇을 하나요?

지금까지 정한 디자인을 AI가 읽을 수 있게 모아요. 기준 화면, 토큰 목록, 사용 규칙을 연결하는 단계예요.

끝나면 남는 것
자료가 있는 위치 + DESIGN.md + 부품 설명 + AI가 먼저 읽을 안내. 아직 화면 코드를 만들 필요는 없어요.
앞 단계에서 확정한 기준을 사용하세요. 아직 정하지 않은 값이나 상태는 “확인 필요”로 남겨요. AI가 임의로 채운 내용을 확정된 기준으로 사용하지 마세요.
따라 하기

그림·토큰·설명은 맡은 일이 달라요

자료알려주는 것예시
기준 화면
무엇이 어디에 있고 어떻게 보이는지
화면 이미지 또는 Figma의 특정 프레임
토큰 목록
공통으로 사용할 값과 역할
주요 버튼 배경색, 본문 크기, 간격
배치·사용 규칙
값을 어디에 쓰고 내용이 바뀌면 어떻게 할지
카드 안쪽에 16 여백, 긴 제목은 줄바꿈
기능 설명
눌렀을 때 어떤 결과가 나와야 하는지
신청 → 처리 중 → 완료 또는 오류 안내

토큰이 16이라고 해서 어디를 16만큼 띄울지까지 정해지지는 않아요. “카드 안쪽 여백에 이 토큰을 사용한다”처럼 적용 위치도 적어야 해요.

설명을 표로 정리해도 좋아요. 화면 배치를 전달하려고 데이터베이스(DB)를 만들 필요는 없어요. DB는 회원·게시글·신청 내역처럼 앱이 저장할 데이터 구조를 정할 때 다뤄요.
따라 하기

1. 자료를 한 프로젝트 폴더에 모아요

프로젝트 폴더는 앱의 코드와 자료를 함께 두는 폴더예요. 아래 이름은 실습용 예시예요. 같은 역할의 파일이 이미 있다면 기존 파일과 위치를 사용하세요.

폴더는 누가 만드나요?

  1. 작업할 프로젝트 폴더는 직접 정해요. 이미 앱을 만들고 있다면 그 폴더를 Codex에서 열어요. 새 작업이라면 폴더 하나를 만들거나 도구에서 새 프로젝트를 시작해 그 위치를 열어요.
  2. 그 안의 하위 폴더와 문서는 AI에게 만들도록 요청해요. 아래 표의 폴더를 전부 손으로 만들 필요는 없어요. AI가 실제로 생성한 위치를 확인하면 돼요.
  3. 원본 자료는 접근할 수 있게 전달해요. 화면 이미지·사진·아이콘·토큰 파일을 작업 폴더에 넣거나 AI에게 첨부해요. 실제 자료 없이 빈 폴더만 만든 상태와 구분하세요.
파일·폴더 예시넣을 내용
design/screens/
목록·상세·신청 같은 기준 화면 이미지. Figma를 쓰면 특정 프레임 링크도 기록해요.
design/assets/
실제로 사용할 사진·아이콘·로고 원본. 화면 캡처와는 별개예요.
design/tokens.json
확정한 토큰의 이름·값·용도. 기존 CSS·JSON·표가 있으면 그 파일을 사용해도 돼요.
docs/PRD.md
어떤 화면과 기능을 만들지 적은 기획 문서.
docs/DESIGN.md
기준 화면과 토큰의 위치, 배치·사용 규칙.
docs/CONTRACT.md
버튼·입력창 등 반복 부품의 사용 설명. 처음에는 DESIGN.md 안에 함께 적어도 돼요.
AGENTS.md
AI가 먼저 읽을 자료와 작업 규칙. 프로젝트 맨 위에 두어요.
.md는 제목·목록 등을 간단한 기호로 적는 Markdown 문서예요. 텍스트 문서라고 생각하면 돼요. 폴더와 문서 만들기도 AI에게 요청할 수 있어요.
따라 하기

2. DESIGN.md에 화면을 만드는 기준을 적어요

  1. 기준 화면을 지정해요. 실제 프레임 링크 또는 이미지 위치, 기준 너비를 적어요.
  2. 토큰 목록의 위치를 적어요. 같은 값을 계속 복사하기보다 어느 목록이 현재 기준인지 정해요.
  3. 배치 규칙을 적어요. 요소 순서, 화면 좌우·카드 안쪽 여백, 긴 내용 처리 방법을 적어요.
  4. 부품과 상태를 연결해요. 사용할 버튼 종류와 처리 중·실패 때의 동작을 적어요.
  5. 미정 항목을 남겨요. 원본과 문서가 다르면 어느 쪽을 따를지도 확인해요.

문서 내용의 예

# 앱 디자인 기준

## 기준 자료
- 기준 화면: [실제 Figma 프레임 링크 또는 이미지 위치]
- 토큰 목록: [실제 파일 위치]
- 부품 설명: [실제 파일 위치 또는 이 문서의 해당 항목]
- 기준 너비: 390 CSS px. 360 / 390 / 430에서도 확인한다.

## 공통 배치
- 화면 콘텐츠는 좌우 16 CSS px 여백 안에 배치한다.
- 활동 카드에는 제목, 시간·장소, 행동 버튼을 위에서 아래로 배치한다.
- 긴 제목은 줄바꿈하고 카드 높이를 내용에 맞춰 늘린다.
- 작은 화면에서도 글자와 버튼이 가로로 잘리지 않도록 한다.
- 색과 간격에는 확정한 토큰을 연결해서 사용한다.

## 부품 사용
- 같은 역할의 버튼은 같은 코드 컴포넌트를 사용한다.
- 문구가 다르다는 이유만으로 새 버튼을 만들지 않는다.
- 처리 중에는 진행 상태를 표시하고 중복 요청을 막는다.
- 실패하면 입력 내용을 유지하고 재시도 방법을 알린다.

## 아직 결정할 것
- [확인하지 못한 값·상태·자료]

## 변경 기록
- [날짜 / 바뀐 기준 / 이유 / 적용할 화면]
16과 390은 이 자료의 실습 예시예요. 본인 디자인에 정한 값이 있으면 그 값으로 바꾸세요. 대괄호도 실제 정보로 바꿔야 해요. 이 문서는 구현 코드가 아니라, 구현할 때 따를 설명이에요.
따라 하기

3. 부품의 사용 설명을 상황으로 적어요

CONTRACT.md에는 “이 부품을 어떤 조건으로 어떻게 쓰는지”를 적어요. 파일 이름은 이 실습의 약속이며 필수 표준 이름은 아니에요.

적을 항목신청 버튼 예시
구성
배경 + 문구. 필요하면 아이콘을 넣어요.
종류 · Variant
주요 행동(저장·신청), 보조 행동(취소), 위험 행동(삭제). 행동 이름 자체가 종류를 결정하는 것은 아니에요.
상태 · State
기본 / 누르는 중 / 처리 중 / 비활성 / 포커스
처리 중
“신청 처리 중…”을 표시하고 중복 요청을 막아요.
실패했을 때
입력 내용을 남기고 오류 문구와 재시도 방법을 보여줘요.
문구가 길 때
글자와 아이콘이 겹치지 않도록 해요. 줄바꿈·높이 변경 규칙은 기준 디자인에서 정해요.
코드의 설정값 · Prop
variant, disabled, loading 같은 이름은 예시예요. 구현 후 실제 코드에 맞춰 기록해요.
실제 코드 위치
구현 전에는 “아직 없음”, 구현 후에는 실제 경로와 사용 예시를 적어요.
Figma 컴포넌트와 코드 컴포넌트는 각각 존재해요. 같은 이름을 붙였다고 자동 연결되지는 않아요. 디자인에서 정한 상태와 실제 요청·저장 동작도 구현에서 연결해야 해요.

실제 사용 장면을 떠올리면 무엇을 정해야 하는지 더 쉬워져요. 아래 세 가지는 사용 규칙의 예시예요. 본인 앱의 기획에 맞춰 조정하고, 실제 코드 위치와 설정값 이름은 구현 후 확인해서 적어요.

예시 1. 신청했는데 결과가 늦게 나오는 버튼

사용 상황: 사용자가 ‘신청하기’를 눌렀어요. 결과가 바로 나오지 않아서 버튼을 여러 번 누르려 해요.

누르기 전: 신청하기 → 누른 뒤: 신청 처리 중… → 성공: 완료 안내 / 실패: 다시 시도

CONTRACT.md에는 이렇게 적어요.

## 신청 버튼

- 쓰는 곳: 신청 화면 아래의 주요 행동 버튼.
- 기본 모습: 기존 주요 버튼 스타일을 사용하고 “신청하기”를 표시한다.
- 누르면: 신청 처리를 시작하고 “신청 처리 중…”으로 문구를 바꾼다.
- 처리 중: 다시 눌러도 요청을 추가로 실행하지 않는다.
- 성공하면: 기획에서 정한 신청 완료 안내를 보여준다.
- 실패하면: 입력한 내용을 유지하고 오류 문구와 재시도 방법을 보여준다.
- 다시 시도할 수 있으면: 문구를 “신청하기”로 돌리고 버튼을 누를 수 있게 한다.
- 확인: 결과가 늦게 나올 때 여러 번 눌러도 신청 결과가 중복되지 않는지 본다.

버튼에서 연속 클릭을 막는 것과 실제 요청·저장이 중복되지 않게 처리하는 것은 함께 확인해야 해요. 부품의 표시 규칙과 앱의 처리 규칙을 연결하는 예예요.

예시 2. 이름을 적지 않고 신청한 입력창

사용 상황: 신청 화면에서 이름을 비워 둔 채 ‘신청하기’를 눌렀어요. 무엇을 고쳐야 하는지 알려줘야 해요.

처음 열기: 이름 입력창 → 빈칸으로 신청: 이름을 입력해 주세요 → 입력 후 다시 신청: 통과

CONTRACT.md에는 이렇게 적어요.

## 이름 입력창

- 구성: “이름”이라는 항목 이름 + 입력하는 칸 + 필요한 경우 오류 문구.
- 처음 화면을 열면: 입력이 비어 있어도 오류부터 보여주지는 않는다.
- 이름 없이 신청하면: 신청 처리를 시작하지 않고 입력창 아래에 “이름을 입력해 주세요”를 표시한다.
- 공백만 입력한 경우도 이름을 적지 않은 것으로 본다.
- 오류 모습: 정한 오류 테두리와 안내 문구를 함께 사용한다. 빨간색만으로 알리지 않는다.
- 입력 중: 다른 항목에 이미 적은 내용은 그대로 유지한다.
- 이름을 적고 다시 신청하면: 이 항목의 오류를 해제하고 다음 조건을 확인한다.
- 확인: 빈칸·공백만 입력·이름 입력의 세 경우를 각각 시험한다.

예시 3. 신청 기간이 끝난 활동 카드

사용 상황: 활동 목록에서 모집 중인 카드와 마감된 카드가 함께 보여요. 마감된 활동도 내용은 확인할 수 있어야 해요.

모집 중: 신청 가능 → 마감: ‘모집 마감’ 표시 + 신청 불가 / 상세 정보는 확인 가능

CONTRACT.md에는 이렇게 적어요.

## 활동 카드

- 구성: 활동 제목 + 시간·장소 + 모집 상태 + 상세 보기 경로 + 신청 버튼.
- 모집 중이면: “모집 중”을 표시하고 신청 버튼을 사용할 수 있게 한다.
- 마감되면: 상태를 “모집 마감”으로 바꾸고 신청 버튼을 비활성화한다.
- 마감 이유: 버튼 근처에 “신청 기간이 끝났어요”를 표시한다.
- 상세 정보: 마감됐어도 활동 제목의 상세 보기 경로는 사용할 수 있게 한다.
- 제목이 길면: 줄바꿈하고 카드 높이를 내용에 맞춰 늘린다.
- 여러 카드: 같은 카드 컴포넌트를 사용하고 제목·일정·모집 상태만 다르게 전달한다.
- 확인: 모집 중/마감 두 경우와 긴 제목을 넣고, 상세 보기와 신청 동작을 따로 눌러 본다.
따라 하기

4. AI가 먼저 읽을 자료를 연결해요

문서를 저장한 다음에는 AI가 실제로 읽었는지 확인해요. Codex에서는 AGENTS.md에 읽을 자료와 작업 규칙을 적어둘 수 있어요. Claude Code를 쓴다면 CLAUDE.md로 안내해요.

AI에게 자료 정리부터 요청하기

현재 열어 둔 프로젝트 폴더 안에 필요한 하위 폴더와 문서를 실제로 생성하고 디자인 자료를 정리해줘. 아직 화면 구현은 시작하지 마.
기존 폴더·파일이 있으면 그대로 사용하고, 없을 때만 만들어줘.
원본 자료가 없으면 빈 폴더를 자료가 준비된 것으로 표시하지 말고 필요한 파일을 알려줘.

1. 기준 화면, 토큰 목록, 사진·아이콘 원본, 기획 문서의 실제 위치를 찾아줘.
2. Figma 링크가 있다면 실제로 읽을 수 있는지 확인해줘.
   읽지 못한 자료는 추측하지 말고 “읽지 못함”으로 표시해줘.
3. 확정한 토큰과 디자인을 바꾸지 말고 docs/DESIGN.md에 사용 규칙을 정리해줘.
4. 반복되는 버튼 하나의 구성·종류·상태·동작을 docs/CONTRACT.md에 정리해줘.
   아직 코드가 없으면 코드 경로와 Prop 이름은 확정하지 마.
5. AGENTS.md에 UI 작업 전 위 자료를 읽고 기존 토큰·부품을 재사용하도록 안내해줘.
6. 같은 역할의 문서가 이미 있다면 기존 파일을 사용하고 위치를 알려줘.

마지막에 자료 / 실제 위치 / 읽기 성공 여부 / 아직 필요한 정보 표를 보여줘.
확인할 것충분한 보고다시 확인할 보고
자료 읽기
화면명·토큰 예시·실제 위치를 제시
“자료 확인 완료”라는 말만 있음
빠진 자료
아이콘 원본이 없다고 표시
캡처 속 아이콘을 원본으로 확보했다고 말함
미정 항목
실패 안내를 질문으로 남김
실패 안내를 임의로 확정함
파일 연결
존재하는 문서 경로를 기록
존재하지 않는 예시 경로를 기록
선택 사항

필요할 때: Google DESIGN.md 형식으로 정리하기

Google Labs는 AI에게 시각적 기준을 전달하는 공개 DESIGN.md 형식을 제공해요. 직접 쓰는 설명 문서와 특정 도구가 검사하는 정식 형식은 구분하세요. 먼저 내용을 확정하고, 해당 도구를 쓸 때 그 버전의 명세에 맞추면 돼요.

항목 이름적을 내용
Overview
누구를 위한 앱인지, 어떤 인상을 주려는지
Colors
색의 역할과 사용 위치
Typography
제목·본문·설명 글자의 기준
Layout
배치·간격·작은 화면 대응
Elevation & Depth
그림자와 면으로 구분하는 단계
Shapes
모서리·테두리·형태
Components
부품 사용법과 코드 위치
Do’s and Don’ts
지킬 규칙과 피할 사용법

YAML은 이름과 값을 구조적으로 적는 표기이고, lint는 정해진 형식에 맞는지 검사하는 일이에요. 형식 검사를 통과해도 실제 화면이 잘 만들어졌다는 뜻은 아니에요.

공식 저장소 · 현재 형식 명세

완료 확인

여기까지 되면 다음 단계로

8 AI와 화면 구현하기

목표

이 단계에서는 무엇을 하나요?

7장에서 정리한 자료로 대표 화면 하나를 브라우저에서 실행되는 코드로 만들어요. 반복되는 버튼·카드를 재사용하도록 정리하고, 실제 동작 하나를 연결해요.

끝나면 남는 것
직접 열어 볼 실행 주소 + 토큰 코드 위치 + 재사용 부품 코드 위치 + 확인할 동작 목록.
디자인 기준을 구현에 적용하는 단계예요. 로그인·서버·스토어 배포까지 한 번에 추가하지 마세요. 앱 전체의 기능과 출시는 별도 과정으로 이어가요.
따라 하기

1. 가진 디자인을 읽을 수 있게 전달해요

현재 자료전달할 것먼저 확인할 것
Figma 화면
특정 프레임 링크 + 토큰·부품 설명 위치
글자·배치·Variables·컴포넌트 중 실제로 읽은 정보를 보여 달라고 해요.
화면 이미지
기준 너비 + 화면 이미지 + 토큰 목록 + 사진·아이콘 원본
이미지에서 확인한 값과 추정한 값을 나눠 달라고 해요.
실행되는 코드 시안
그 프로젝트 폴더 + 기준 화면 + 확정한 규칙
기존 토큰·스타일·부품을 먼저 찾아 재사용할 위치를 알려 달라고 해요.

이미지에는 원래 요소 이름이나 정확한 간격 값이 들어 있지 않을 수 있어요. 추정한 부분은 따로 확인하고 결정하세요. Figma 링크도 연결과 권한이 있어야 읽을 수 있어요.

Dev Mode의 크기·간격 정보는 구현에 참고할 자료예요. 그 정보만으로 앱의 기능과 재사용 코드 구조가 자동 완성되는 것은 아니에요.
따라 하기

2. 기존 프로젝트와 실행 방법부터 확인해요

Codex나 Claude Code에서 자료를 모아 둔 프로젝트 폴더를 열어요. 이미 코드가 있다면 같은 앱을 새로 만들지 말고 현재 프로젝트를 사용해요.

첫 요청: 자료와 현재 상태 확인

이 프로젝트의 기획·DESIGN.md·부품 설명과 기준 화면을 먼저 읽어줘.
이번에는 [화면 이름] 하나만 구현할 거야.

아직 코드를 수정하지 말고 아래를 정리해줘.
- 실제로 읽은 디자인 자료와 읽지 못한 자료
- 기존 프로젝트를 실행하는 방법
- 토큰 코드와 공통 컴포넌트의 실제 위치
- 지금 재사용할 수 있는 것 / 아직 만들어야 하는 것
- 구현 전에 내가 결정해야 하는 항목

기존 코드가 없다면 화면 하나를 실행하는 데 필요한 최소 구성을 제안해줘.
설치가 필요하면 프로그램 이름·이유·설치 방법을 먼저 알려줘.
대괄호에는 실제 화면 이름을 적어요. “기존 Button을 사용하겠다”고 했다면 그 파일이 실제로 있는지도 알려 달라고 하세요.
따라 하기

3. 조사한 값과 확정한 기준을 구분해요

화면에서 뽑은 값은 조사 결과예요. 비슷한 초록 두 개를 합칠지, 서로 다른 역할로 유지할지는 직접 결정해야 해요.

진행직접 결정할 것AI에게 맡길 일
조사
어느 화면이 기준인지
색·글자·간격·모서리·부품과 출처 정리
정리
합칠 값과 유지할 차이
중복 후보·예외·미정 항목 제시
제작
어느 화면·기능까지 만들지
확정한 기준으로 토큰·부품·화면 코드 제작
확인
실제로 사용하기 좋은지
기준 위반·누락·오류 후보 찾기

값이 아직 정리되지 않았다면

기준 화면에서 색·글자·간격·모서리·반복 부품을 조사해줘.
항목 / 확인한 값 / 어느 화면의 어느 요소인지 / 근거를 표로 보여줘.
이미지에서 추정한 값과 실제 자료에서 읽은 값을 구분해줘.
아직 값을 합치거나 디자인·코드를 바꾸지 마.

그다음 같은 역할인데 다른 값인 항목을 찾아
합칠 후보 / 유지할 차이 / 내가 결정할 항목으로 제안해줘.
내가 선택한 기준만 다음 작업에 반영해줘.
앞 단계에서 이미 확정했다면 다시 조사해서 새 기준을 만들지 말고 다음으로 넘어가요.
따라 하기

4. 토큰을 화면 코드에 연결해요

Figma Variable은 Figma 안의 값이에요. 웹에서는 코드가 읽을 수 있는 값이 필요해요. 같은 이름·역할을 맞춰 옮기고 화면이 그 값을 참조하도록 연결해요.

디자인에서 정한 것웹 코드에 옮긴 예연결할 곳
color/primary = #0F6E56
--color-primary: #0F6E56;
주요 버튼 배경에서 이 이름을 참조
주요 버튼 배경에 primary 사용
background: var(--color-primary);
재사용 Button의 주요 종류에 적용
카드 안쪽에 간격 토큰 사용
승인한 간격 토큰을 코드 이름에 대응
해당 카드의 padding에 연결
CSS는 웹의 모양과 배치를 정하는 코드예요. var(...)는 저장해 둔 공통 값을 가져다 쓰는 표기예요. 위 CSS 이름은 예시이며 기존 프로젝트의 토큰 이름이 있으면 그 이름을 유지하세요.

Figma와 코드 사이의 자동 반영은 별도의 연결을 구성했을 때 가능해요. 지금은 어느 쪽을 변경하고 다른 쪽에 어떻게 반영할지 정해 관리하면 돼요.

따라 하기

5. 화면 하나를 구현하고 실행해요

기준을 적용해서 화면 만들기

확정한 DESIGN.md와 토큰 목록으로 [화면 이름] 하나를 구현해줘.

1. 현재 프로젝트의 실행 방식과 파일 구조를 유지해줘.
2. 토큰과 Button·Card 등 공통 컴포넌트가 있으면 먼저 재사용해줘.
3. 코드가 없다면 이 화면에 필요한 토큰과 반복 부품부터 만들어줘.
   승인한 이름·값과 실제 코드의 대응표를 남겨줘.
   새로운 디자인 값은 임의로 추가하지 마.
4. 기준 디자인의 글자·사진·아이콘을 배치해줘.
   원본 파일이 없으면 대체하기 전에 알려줘.
5. 기준 너비는 390 CSS px로 보고 360 / 390 / 430에서도 가로로 잘리지 않게 해줘.
   긴 제목은 줄바꿈하고 콘텐츠 높이는 내용에 맞춰 늘어나게 해줘.
6. 아직 없는 기능은 동작하는 척하지 말고 이번 구현 범위와 구분해줘.

완료하면 실행 주소, 바꾼 파일, 토큰·부품 코드 위치,
직접 확인한 결과와 내가 확인해야 할 항목을 알려줘.
  1. AI가 알려준 실행 주소를 브라우저에서 열어요. localhost나 127.0.0.1은 보통 내 컴퓨터에서 시험하는 주소예요. 공유용 공개 주소와 구분해요.
  2. 하얀 화면이나 오류가 나오면 그 상태부터 알려 해결해요. 화면이 떠야 원본과 비교할 수 있어요.
  3. 기준 너비에서 원본과 나란히 보고 글자·색·간격·카드 모서리를 비교해요.
  4. 360 / 390 / 430 너비로 바꿔 보아요. 방법을 모르면 현재 브라우저에서 확인할 절차나 너비별 캡처를 AI에게 요청해요.
원본의 기준 너비가 다르면 390을 실제 값으로 바꾸세요. 참고 이미지에 시간·배터리 같은 운영체제 상태바가 포함됐다면 앱 콘텐츠와 구분해요. 웹 우선 구현에서는 보통 그 표시를 가짜로 그리지 않고 실제 실행 환경이 표시하도록 해요.
따라 하기

6. 버튼의 실제 동작 하나를 연결해요

모양을 만든 다음에는 어떤 상태를 거쳐 어떤 결과가 나와야 하는지 하나만 연결해요. 먼저 기획에서 정한 동작과 현재 저장·요청 방식이 있는지 확인해요.

예: 신청 버튼의 상태와 동작

신청 화면의 버튼에 기획에서 정한 신청 동작을 연결해줘.
디자인과 기존 토큰·Button 컴포넌트는 유지해줘.

- 필수 입력이 빠졌으면 누락된 항목과 수정 방법을 알려준다.
- 요청하는 동안 “신청 처리 중…”을 표시한다.
- 처리 중 다시 눌러도 요청이 중복으로 실행되지 않도록 한다.
- 성공하면 기획에서 정한 완료 상태를 보여준다.
- 실패하면 입력 내용을 유지하고 다시 시도할 수 있게 한다.

먼저 현재 저장·요청 방식이 실제로 있는지 확인해줘.
없다면 서버나 저장 방식을 임의로 정하지 말고 필요한 결정을 알려줘.
실습용 성공·실패 모형으로 확인한다면 실제 신청과 분명히 구분해줘.
완료 후 정상·누락·연속 클릭·실패를 직접 확인할 순서를 알려줘.
신청 화면을 예로 든 요청이에요. 본인 앱의 저장·삭제 등으로 바꿔 사용할 수 있어요. 기획에 없는 동작은 먼저 결정해야 해요.
따라 하기

7. 같은 모습과 같은 부품 재사용을 확인해요

확인할 것AI에게 보여 달라고 할 근거
토큰 사용
정의한 파일과 화면·부품이 그 값을 참조하는 부분
부품 재사용
Button 원본 코드 위치와 현재 화면에서 불러 쓰는 위치
설정값 대응
디자인에서 정한 종류·상태와 코드의 설정값 대응
실제 동작
직접 눌러 본 행동과 결과. 실행하지 못한 항목은 별도 표시

재사용 여부 확인 요청

방금 만든 화면을 DESIGN.md와 부품 설명에 맞춰 확인해줘.
화면 요소 / 사용하는 토큰 / 재사용 부품 / 실제 코드 위치를 표로 보여줘.

같은 부품을 화면 안에 새로 만든 부분과
이름만 같고 값은 직접 입력한 부분이 있는지 찾아줘.
실행해서 확인한 것과 코드만 읽고 판단한 것을 구분해줘.
규칙이 없어 판단할 수 없는 항목은 “결정 필요”로 남겨줘.
HTML·CSS라면 공통 스타일이나 함수로, React 같은 방식이라면 코드 컴포넌트로 재사용할 수 있어요. 특정 폴더나 파일 이름을 모든 프로젝트의 정답으로 정하지 마세요.
선택 사항

연결 도구는 필요할 때 선택해요

도구도움이 되는 일직접 확인할 것
Figma MCP
AI가 Figma의 배치·변수·컴포넌트 정보를 읽거나 허용된 작업을 하도록 연결
연결·권한과 실제로 읽은 프레임
Code Connect
Figma 부품과 이미 있는 코드 부품의 사용법 대응
없는 코드 부품은 먼저 구현해야 해요.
토큰 변환 도구
토큰 목록을 CSS 등 코드 형식으로 변환
역할·값·사용 위치가 의도와 같은지

이 도구를 모두 설치해야 실습할 수 있는 것은 아니에요. 작은 화면 하나를 만들고 같은 기준을 재사용하는지 확인하는 것부터 시작하세요.

Figma MCP 공식 설명 · Code Connect 공식 설명

완료 확인

여기까지 되면 다음 단계로

9 비교하고 직접 확인하기

목표

이 단계에서는 무엇을 하나요?

AI가 “완료”라고 말한 화면을 원본과 비교하고 직접 눌러 보아요. 문제를 기록해 수정한 뒤 같은 조건으로 다시 확인해요.

끝나면 남는 것
같은 너비의 비교 화면 + 직접 눌러 본 기록 + 수정 전후 결과 + 아직 확인하지 못한 항목.
새 AI 대화에서 다시 검토하면 놓친 점을 찾는 데 도움이 될 수 있어요. 하지만 별도의 품질 보증은 아니에요. 같은 기준 자료를 주고 실제 화면과 동작을 함께 확인하세요.
따라 하기

1. 같은 조건으로 놓고 비교해요

  1. 기준을 고정해요. 어느 Figma 프레임·이미지와 어느 버전의 토큰을 비교할지 정해요.
  2. 너비를 맞춰요. 기준 화면이 390이면 구현 화면도 390 CSS px에서 확인해요. 서로 다른 너비는 줄바꿈과 간격이 다를 수 있어요.
  3. 내용과 상태를 맞춰요. 같은 문구·사진·목록 개수·스크롤 위치·버튼 상태로 비교해요.
  4. 차이를 적어요. “느낌이 다름”보다 “카드 안 여백이 기준 16인데 실제 24”처럼 어느 요소가 어떻게 다른지 기록해요.
  5. 그다음 조작해요. 스크린샷에 보이지 않는 입력·처리 중·실패·키보드 조작을 따로 확인해요.
따라 하기

2. 여섯 가지를 차례로 확인해요

항목직접 볼 것AI에게 요청할 근거
색
같은 역할의 버튼이 같은 색인가요?
실제 적용 색과 연결된 토큰 이름
글자
제목·본문·설명의 크기·굵기·줄 높이가 맞나요?
실제 글꼴·크기·줄 높이와 기준값
간격
화면 좌우·카드 안쪽·요소 사이 여백이 맞나요?
각 간격의 실제 값과 토큰
형태
같은 카드의 모서리·테두리·그림자가 같은가요?
적용한 모서리·테두리·그림자 기준
부품
같은 버튼과 카드가 같은 규칙으로 보이나요?
원본 부품과 재사용하는 코드 위치
상태·동작
처리 중·오류·비활성과 실제 결과가 맞나요?
눌러 본 순서·관찰한 결과
비슷하게 보인다는 이유만으로 공통 부품을 썼다고 판단하지 마세요. 코드 근거와 실제 실행 결과를 함께 확인해요.
따라 하기

3. 토큰 하나를 바꾸고 연결을 확인해요

같은 값을 복사한 것인지, 공통 값을 실제로 연결했는지 확인하는 실험이에요. 연습용 복사본이나 되돌릴 수 있는 작업 상태에서 해 보세요.

  1. 검사할 토큰 하나를 고르고 현재 값을 기록해요. 예: color/primary의 현재 값.
  2. 이 토큰을 사용하는 요소를 먼저 찾아요. 주요 버튼 배경이라면 같은 역할의 버튼들이 대상이에요.
  3. 토큰 정의의 값 하나만 임시로 바꿔요. 요소마다 값을 따로 수정하지 않아요.
  4. 연결된 버튼들이 함께 바뀌는지 보아요. 같은 초록이라도 성공 알림처럼 다른 역할의 요소까지 바뀌어야 하는 것은 아니에요.
  5. 원래 값으로 되돌리고 원래 모습도 함께 복원되는지 확인해요.

토큰 연결 검사 요청

공통 토큰 하나가 실제로 재사용되는지 확인해줘.
검사 대상은 [실제 토큰 이름]이야.

1. 현재 값과 사용하는 요소·코드 위치를 먼저 기록해줘.
2. 되돌릴 수 있는 상태에서 토큰 정의의 값 하나만 임시로 바꿔줘.
3. 연결된 요소가 함께 바뀌는지 실행해서 확인해줘.
4. 원래 값으로 복원하고 관련 없는 수정이 남지 않도록 해줘.
5. 원래 값 / 임시 값 / 영향받은 요소 / 복원 결과를 알려줘.

실행하지 못했다면 실행했다고 쓰지 말고 내가 확인할 순서를 알려줘.
Figma Variable을 바꾸는 검사와 웹 코드의 토큰을 바꾸는 검사는 따로 해요. 자동 연결을 구성하지 않았다면 한쪽 변경이 다른 쪽에 저절로 반영되지는 않아요.
따라 하기

4. 이 순서로 직접 눌러 보세요

신청 화면의 확인 예시예요. 본인 앱의 기능에 맞춰 바꾸되 정상일 때와 실패할 때를 모두 확인해요.

해 볼 행동기대하는 결과남길 기록
필수 항목을 채우고 신청
기획에서 정한 완료 상태 표시
누른 순서와 완료 화면
필수 항목을 비우고 신청
빠진 항목과 수정 방법 안내
오류 문구와 위치
처리 중 연속으로 누르기
중복 요청을 막고 진행 상태 표시
요청·저장 결과가 중복됐는지
실패 상황 시험하기
입력 유지, 오류 안내, 재시도 가능
실제 실패인지 시험용 모형인지
긴 제목·이름 넣기
줄바꿈 등 정한 방식으로 처리, 겹침 없음
사용한 문구와 결과 캡처
목록을 빈 상태로 보기
내용 없음 안내와 필요한 행동 제공
내용 없음 상태
360 / 390 / 430 너비로 보기
가로 잘림 없이 주요 내용과 버튼 사용 가능
너비별 결과
폰에서 입력창 누르기
키보드가 올라와도 입력·오류·완료 버튼에 접근 가능
실제 폰 또는 시험 환경
글자를 크게 하거나 확대하기
중요 내용과 조작이 겹치거나 사라지지 않음
시험한 글자 크기·확대 조건
실패를 만들기 어렵다면 “기존 동작을 바꾸지 않고 오류·지연·빈 목록을 시험할 방법”을 AI에게 요청하세요. 모형으로만 확인했다면 실제 서버·기기에서 확인할 항목을 따로 남겨요.
따라 하기

5. 읽고 누를 수 있는지도 확인해요

접근성은 더 다양한 사람이 읽고 조작할 수 있게 만드는 일이에요. 자동 검사와 실제 조작을 함께 사용해요.

확인 항목확인 방법기준을 이해해요
글자 대비
실제로 겹쳐 보이는 글자색과 배경색을 측정해요.
WCAG AA 일반 글자는 4.5:1 이상. 큰 글자는 3:1 등 예외가 있어요.
누르는 영역
아이콘 그림보다 실제 클릭·터치 영역을 확인해요.
WCAG 2.2 AA 최소 24×24 CSS px 또는 간격 등 예외 조건.
조작하기 편한 크기
작은 아이콘 주변에도 누를 공간을 줘요.
44×44 CSS px는 WCAG AAA 강화 기준. 이 실습의 모바일 목표로 삼아요.
색 외의 안내
오류를 빨간색뿐 아니라 문구로도 알려주나요?
색을 구분하지 못해도 상태와 수정 방법을 알 수 있어야 해요.
키보드 조작
Tab으로 이동하고 요소에 맞는 Enter·Space 등으로 실행해요.
조작 위치가 보이고 필요한 요소에 접근할 수 있어야 해요.
이름과 입력 설명
아이콘 버튼의 이름과 입력창 설명을 확인해요.
화면 읽기 기능에서도 의미를 알 수 있도록 해요.

접근성 확인 요청

이 화면에서 읽기와 조작을 방해하는 문제를 확인해줘.
- 실제 글자색·배경색의 대비
- 버튼·아이콘의 실제 누르는 영역
- 키보드 이동과 포커스 표시
- 아이콘 버튼 이름과 입력창 설명
- 색만으로 전달하는 오류·상태

항목 / 확인 방법 / 실제 결과 / 수정할 부분으로 정리해줘.
자동으로 검사한 것, 직접 조작한 것, 아직 확인하지 못한 것을 구분해줘.
대비나 버튼 크기 몇 개가 통과했다는 이유로 접근성 전체를 통과했다고 쓰지 마.

W3C: 글자 대비 · 24×24 최소 기준과 예외 · 44×44 강화 기준

접근성 전체 항목을 담은 표는 아니에요. 콘텐츠·입력 방식·보조기기 등 앱의 상황에 맞춰 추가로 확인해야 해요.
따라 하기

6. 문제를 정확히 요청하고 다시 확인해요

문제 상황먼저 고칠 대상예시
한 화면만 명확한 기준과 다름
그 화면의 연결·구현
카드 하나만 토큰 대신 직접 입력한 색 사용
여러 화면에서 같은 판단이 갈림
공통 규칙과 관련 화면
긴 버튼 문구 규칙이 없어 화면마다 다름
규칙을 지켰는데 사용하기 어려움
규칙·예외 자체
정한 높이로는 긴 한글이 잘려 기준을 다시 정해야 함

관찰한 문제를 수정 요청으로 바꾸기

문제를 하나씩 확인하고 수정해줘.

화면: [문제가 있는 화면]
확인 조건: [너비 / 내용 / 상태 / 기기]
기대 결과: [기준 문서의 항목 또는 원본 모습]
실제 결과: [어디가 어떻게 다른지]
자료: [비교 이미지 또는 관련 파일 위치]

먼저 원인이 화면, 공통 부품, 토큰, 사용 규칙 중 어디에 있는지 확인해줘.
기준이 없다면 임의로 결정하지 말고 선택할 내용을 알려줘.
확정한 범위만 수정하고 관련 없는 디자인과 기능은 유지해줘.
같은 조건으로 다시 확인하고, 같은 부품을 쓴 다른 화면의 영향도 알려줘.

“고쳤다”라는 말보다 같은 조건에서 다시 확인한 결과를 남기세요.

화면·조건기준 / 실제수정할 곳재확인
신청 · 360 너비 · 긴 문구
전체 표시 / 오른쪽 잘림
버튼 안의 글자 배치
같은 문구로 재확인, 다른 버튼도 확인
완료 확인

여기까지 되면 다음 단계로

10 종합 실습

알아보기

기초 실습: 대표 화면 3개에서 시작해요

목표: 거대한 시스템을 완성하기보다, 같은 규칙이 실제 화면 3개에 적용되는 경험을 해요. 아래 시간은 진행 제안이며 Figma 기초 조작은 별도로 연습할 수 있어요.

순서·권장 시간할 일남길 결과
준비 · 수업 전기획, 목록·상세·신청 등 대표 시안 준비대표 화면 3개
1 · 15분색·글자·간격·부품을 조사값과 출처 표
2 · 15분합칠 기준과 유지할 차이를 결정승인한 역할·값·용도 목록
3 · 25분변수·스타일과 버튼 1개를 연결값 변경 시 함께 바뀌는 화면
4 · 20분디자인 기준과 AI 읽기 안내 작성DESIGN.md와 연결 안내
5 · 25분화면 하나에 적용하고 비교·수정전후 캡처·6항목 확인표
기초 실습에서는 라이트 모드 하나로 먼저 이해해도 돼요. 확장 실습에서는 아래 25개 역할을 정리하고 Light / Dark에서도 읽히고 구분되는지 확인해요.
알아보기

25개 기준을 정리해 봐요

그룹정리할 항목이해할 점
Color 9neutral · surface · on-surface · secondary · border · primary · primary-pressed · disabled · error이 이름과 개수는 수업의 시작 묶음. 버튼 위 글자색 등 필요한 역할은 추가 검토.
Typography 5headline-lg · headline-md · body-md · label-md · body-sm각 이름에 글꼴·크기·줄 높이·굵기·용도 연결.
Spacing 6xs 4 · sm 8 · md 12 · lg 16 · xl 24 · 2xl 32같은 이름의 구체 값과 사용 규칙에 합의.
Rounded 3sm 8 · md 12 · lg 16어느 부품에 어떤 값을 쓰는지 정하기.
Shadow 2shadow-sm · shadow-md효과의 상세 값과 용도를 정하고 스타일로 관리 가능.
25개는 보편적인 최소 개수가 아니에요. 기본 값·역할 참조·다크 모드 값을 각각 세면 실제 등록 항목은 더 많아요. 다크 모드는 모든 색을 반전하는 것이 아니라 각 역할이 읽히고 구분되도록 다시 정하는 일이에요.
알아보기

제출 전에 스스로 확인해요

우리 팀 디자인 시스템을 설명하겠습니다.
우리 앱은 [누구]가 [어떤 목적]을 이루도록 돕습니다.
여러 화면에서 [어떤 차이]가 생겨 [어떤 문제]가 있었습니다.
그래서 [공통 값]과 [재사용 부품], [사용 규칙]을 정했습니다.
대표 화면 [이름 3개]에 적용했고 [확인한 결과]가 달라졌습니다.
아직 [남은 문제]는 다음 검증에서 확인하겠습니다.

11 용어·출처

알아보기

헷갈리는 용어를 다시 찾아보세요

용어한 줄 설명
토큰 Token이름 붙여 재사용하는 값
변수 Variable도구에서 재사용할 값을 저장하는 수단
스타일 Style여러 표현 속성을 묶은 설정
참조 Alias다른 이름의 값을 가리키는 연결
Semantic생김새 대신 역할로 정한 이름
Component여러 곳에서 재사용하는 UI 단위
Variant부품의 종류나 선택 가능한 변형
State현재 상황에 따른 상태
Prop코드 컴포넌트에 전달하는 설정
Contract부품을 쓰는 조건과 방법을 적은 약속
Markdown / YAML사람이 읽는 문서 형식 / 구조화된 값 목록 표기
Repository · 저장소프로젝트 파일과 변경 기록을 함께 보관하는 곳
MCPAI가 외부 도구와 자료에 연결되는 통신 방식
Lint정해진 형식·규칙을 자동 검사하는 일
Version어느 시점의 기준·결과인지 구분하는 번호
알아보기

참고 자료

실무 순서, 대표 화면 수, 실습 시간, 예시 값은 이 자료의 교육용 제안이에요. 아래 공식 문서의 요구사항과 구분해 읽으세요. 도구 정보 확인일: 2026-10-23.

외부 링크를 제외한 설명과 예시는 인터넷 없이도 볼 수 있어요. 체크 저장은 현재 브라우저에만 남으며 공유한 다른 사람에게 전달되지 않아요.

버전과 변경 기록 · 현재 v1.2

내용을 수정할 때 버전 번호를 올리고, 이전 버전과 변경 내용을 함께 보존해요. 파일 이름 끝의 v번호와 화면에 표시된 버전을 확인하세요.

버전날짜변경 내용
v1.22026.10.26CONTRACT.md에 신청 처리 중인 버튼, 이름 입력 오류, 마감된 활동 카드의 세 상황과 작성 예시·확인 방법 추가.
v1.12026.10.261장의 비유를 레스토랑으로 정리. 불필요한 앱 이름 제거. 파일·화면에 버전 표시와 변경 기록 추가. 하위 폴더·문서를 AI가 생성하는 절차와 원본 자료 준비 역할 명시. 나머지 실습 내용 유지.
v1.0 · 기준본2026.10.26바로 전 전달본을 버전 관리의 시작점으로 지정. 7~9장 실습 보강, 기존 10·12장 삭제, 요청한 표현 정리.

체크 상태는 현재 브라우저에 저장돼요. 파일 열기 방식이나 브라우저 설정에 따라 저장이 제한될 수 있어요.