한 줄 결과물: 토큰 대응 표, 상태 행렬 9칸, 극단 데이터, 접근성 수용 조건, 열린 항목(
[open],[drift])을 담은 개발 인수 명세.
스킬 본문: ../../handoff-to-dev/SKILL.md · 템플릿: ../../handoff-to-dev/templates/handoff.md
언제 쓰나
- 새 화면이나 컴포넌트를 개발에 넘기기 전
- 구현 결과를 디자인 의도와 대조할 때(구현 후 검수는
ui-review) - 쓰지 않을 때: 코드 작성 자체, 일정 협의
샘플

| 입력 | 값 |
|---|---|
| 대상 | 알림 설정 카드 |
| 토큰 대응 | 제목 글자는 text-primary(#14213d/#ffffff 15.97:1), 행동 버튼은 color-action(#328523/#ffffff 4.65:1), 여백은 space-4(16px) |
| 토큰 없음 | "토큰 없음, 제안" 칸에 따로 적는다 |
| 상태 행렬 | 기본, 호버, 포커스, 눌림, 비활성, 로딩, 빈 상태, 오류, 성공 아홉 칸 |
| 열린 항목 | [open] 오류 문구(결정 주체: 카피 담당), [drift] 간격(정본: 디자인 파일) |
| 이 명세에 없는 것 | 다크 모드, 알림 이력 화면 |
토큰 이름은 모양을 보여 주는 예시다. 실제로는 제품의 토큰 정본에서 찾은 이름만 쓴다. 대비 15.97:1과 4.65:1은 contrast.py로 계산한 값이다.
따라하기
- 템플릿을 복사한다.
cp handoff-to-dev/templates/handoff.md ./handoff-알림설정.md - 범위를 한 문단으로 쓴다. 무엇을, 누구를 위해, 어디까지. "이 명세에 없는 것"을 한 줄 이상 넣는다.
handoff-to-dev 스킬로 <시안 링크 또는 파일> 의 인수 명세를 만들어 줘. 토큰 정본: <경로>. 정본에 없는 값은 만들지 말고 "토큰 없음, 제안"으로 적어 줘. - 시안 값을 토큰 이름으로 바꾼다. 글자와 바탕 쌍에는 대비 비율을 함께 적는다.
python3 a11y-audit/scripts/contrast.py '#328523' '#ffffff' # - #328523 on #ffffff = 4.65:1 | 일반 글자 4.5 통과 | 큰 글자·UI 3.0 통과 - 상태 행렬을 채운다. 해당 없는 상태는 "해당 없음(이유)"로 적는다. 비워 두지 않는다.
- 극단 데이터를 쓴다. 아주 긴 글, 값 없음, 수천 개, 느린 네트워크, 좁은 폭. 각각 기대 동작을 적는다.
- 열린 항목을 분리한다.
[open]은 미정과 결정 주체,[drift]는 문서와 구현이 다른 곳과 정본. - 완성 점검. 다른 사람이 이 문서만 읽고 구현해도 질문이 남지 않는지 본다. 남을 질문은 열린 항목으로 올린다.
흔한 실패
- 시안의 색, 크기 값을 그대로 복사한다. 토큰 이름이 정본이다. 본문에서 리터럴을 검색해 토큰 표 밖에서 0건이어야 한다.
- "상황에 맞게", "자연스럽게"처럼 명세가 아닌 표현을 쓴다. 기준 값이나 예시로 바꾼다.
- 열린 항목을 본문에 숨긴다.
- 개발이 고를 구현 방식(라이브러리)을 요청 없이 정한다.
다음 스킬
- 토큰 구조 점검은
design-system-tokens - 모션 결정은
motion-craft, 한글 줄바꿈은korean-typography, 문구는ux-writing-ko