Designing with Direction

화면을 그리기 전에,
문제를 다시 정의합니다.

정보는 이미 충분했습니다. 없던 건 결정할 수 있는 구조였습니다.
제품 디자인 5년. 채용·HR 제품을 만들며, 정의에서 멈추지 않고 코드까지 직접 만듭니다.

신건주
UI/UX Designer · 5년차
Domain채용 · HR · B2B SaaS — 마이다스인에서 세 개의 제품.
Method정보를 더하지 않고, 읽는 순서와 판단 기준을 다시 설계합니다.
Range디자인 → 프론트엔드 코드 → AI가 읽는 디자인 시스템.
About Me이력 · 역량 · 해온 일

안녕하세요,
UI/UX 디자이너 신건주입니다.

Careers 5년차
2023.01 – 현재
UI/UX Designer @ 마이다스인
2021.12 – 2022.06
UI/UX Designer @ 고리
2020.06 – 2021.08
UI/UX Designer @ 티오더스테이
Skills
  • UI/UX Design웹·모바일 화면 구조, 사용자 플로우, 상태 및 상세 UI 설계
  • Design System컴포넌트 구조 설계, 디자인 토큰·가이드 제작
  • PrototypeFigma 기반 인터랙션·클릭형 프로토타입 제작
  • MotionUI 비주얼·아이콘·간단한 AE 모션 시안 제작
  • Collaboration기획·개발 협업, 요구사항 정리 및 흐름 정의
Tools
FigmaFigma PrototypeAfter Effects IllustratorPhotoshop LottieFilesJiraConfluence
Projects

마이다스인 AI 기반 채용·평가 및 매칭 플랫폼

  • AI 역량검사 UI 디자인 · 기업용 결과표 개선
  • 취준BTI 마케팅 캠페인 디자인 — 16만 명 참여
  • 채용 플랫폼 UI/UX 디자인
  • AI 매칭 서비스 H.X UI/UX 디자인
  • 통합 브랜딩 홈페이지 디자인

고리 취미 클래스 구독·중개 서비스

  • 서비스 기획 및 UI 디자인
  • 프로토타입 제작
  • After Effects 기반 서비스 소개 영상 제작

티오더스테이 호텔 데이터 기반 객실 관리·IoT 솔루션

  • 체크아웃 리뷰 데이터를 활용한 객실별 리뷰 플랫폼 UI 제작
  • 서비스 스타일가이드 제작 및 개발팀 공유
  • 호텔 IoT 태블릿 PC UI 제작
Contents

세 가지 프로젝트를 소개합니다.

Case 01정보 구조 재설계

AI 역량검사
요약 결과표 프로젝트

A4 9장짜리 결과표를 한 화면으로 줄인 프로젝트입니다.
인사담당자가 실제로 읽는 순서를 찾아, 그 순서대로 다시 배치했습니다.
개편 후 해석 문의와 미팅에서 설명에 쓰던 시간이 줄었다는 피드백을 받았습니다.

역검
AI 역량검사 요약 결과표
Period2023.12 – 2024.02Role초안 설계 · UX 구조 · 최종 설계Team기획 1 · 디자인 3 · 개발 5
AboutAI 역량검사

이력서 밖의 것을
측정합니다.

AI 역량검사는 이력서만으로는 알기 어려운
업무 방식, 사고 패턴, 협업 태도를 보여주는 채용 검사입니다.
같은 스펙이라도 일하는 방식은 사람마다 다르기 때문에,
면접 전에 그 차이를 먼저 확인하려고 씁니다.

전형 위치
서류 → 역량검사 → 면접 → 최종 합격서류 다음, 면접 전에 봅니다
측정 방식
설문형 · 게임형 검사문장에 6점 척도로 답하고, 짧은 게임 과제를 풉니다
결과
지원자별 종합 결과표인사담당자가 이 결과표를 읽고 면접 대상을 고릅니다
설문형 검사 화면 — 문장을 읽고 6점 척도로 응답게임형 검사 화면 — 가위바위보 과제
Context현장의 목소리

읽는 데
시간이 걸렸습니다.

검사는 해마다 정교해졌지만, 결과를 읽는 일은
인사담당자에게 또 하나의 업무가 되었습니다.
결과표를 쓰려면 따로 배워야 했고, 설명 없이는
쓸 수 없는 결과표는 곧 제품의 진입 장벽이었습니다.

사업팀
“미팅마다 결과 해석에만 15–20분씩 써요”고객사 미팅에서 결과표를 설명하는 시간
CS팀
“결과표 해석 문의가 계속 반복돼요”같은 질문이 계속 들어옵니다
고객사
“핵심만 빠르게 파악하고 싶어요”결과표를 받아 보는 기업 인사담당자
Attempt설명을 더해본 첫 시도

설명을 더해도,
문의는 줄지 않았습니다.

처음엔 설명을 더하면 해결될 거라 생각했습니다.
각 지표의 의미와 읽는 법을 정리한 해석 가이드를
만들어 배포했지만, 50페이지가 넘는 문서가 되었고
배포 뒤에도 해석 문의는 줄지 않았습니다.

담은 내용
지표 용어 · 읽는 순서 · 등급 해석 기준S~C 등급이 실제로 어떤 수준인지까지
배포 뒤
해석 문의는 그대로였습니다결과표를 읽으려고 50페이지를 먼저 읽는 사람은 없었습니다
다시 본 것
설명이 아니라 결과표의 구조더 긴 설명 대신, 읽자마자 이해되는 형태가 필요했습니다
Redefine다시 결과표를 들여다보니

결과표엔
읽을 순서가 없었습니다.

설명을 더하는 대신 결과표 자체를 다시 봤습니다.
원래 인쇄용으로 만든 A4 9장짜리 문서를
화면에 그대로 옮겨 온 것이었고, 무엇보다
읽을 우선순위가 없었습니다.

우선순위
종합 점수·직무 적합도·세부 역량이 같은 비중무엇부터 봐야 하는지 결과표가 말해주지 않았습니다
분량
A4 9장을 모두 봐야 판단 가능한 지원자를 보려면 문서 전체를 넘겨야 했습니다
포맷
인쇄용 레이아웃을 화면에 그대로본문 12–13px — 화면에서 읽기엔 작은 글자
Solution 01판단 순서대로 배치

가장 궁금한 정보를
맨 위에 놓았습니다.

인사담당자가 결과표에서 가장 먼저 찾는 건
전체 지원자 중 어디에 있는가였습니다.
영업팀 설문과 사업팀 피드백으로 이 순서를 확인하고,
위치 → 적합도 → 선호도 순으로 위에서부터 놓았습니다.

1 · 위치
등급 분포 위 지원자의 위치“전체 중 어디에 있나요?”
2 · 적합도
직무 적합도와 핵심역량 점수“우리 직무에 맞나요?”
3 · 선호도
기업 선택 우선순위“우리 회사를 원할까요?”
Solution 02훑어보면 파악되는 표현

색만 봐도
수준이 가늠됩니다.

순서를 바꾸는 것만으로는 부족했습니다.
화면마다 제각각이던 색을 등급 분포 기준으로 묶어
S부터 C까지 한 가지 색 체계로 통일했습니다.
훑어보는 단계에서는 숫자를 읽지 않아도 됩니다.

역량검사 등급 분포 · 색은 이 구간을 뜻합니다
CC+B-BB+A-AA+S상위 1~4%
종합 등급 S 카드
상위 예측 지수 — 초록
Solution 03기업별 맞춤 구성

기업마다
중요한 건 다릅니다.

채용 기준은 기업마다 다릅니다.
같은 데이터라도 보는 관점이 달라야 할 때가 있어,
결과표를 위젯 단위로 나누고 순서를 바꿔
기업별 템플릿으로 저장할 수 있게 했습니다.

위젯
결과를 독립된 위젯으로 분리필요한 위젯만 골라 담습니다
배치
끌어다 놓아 순서를 바꿈기업이 중요하게 보는 항목을 위로 올립니다
저장
기업별 템플릿으로 저장같은 데이터, 다른 강조
Impact결과로 남은 변화

설명을 덜 하게
되었습니다.

요약 결과표는 기업 회원 대상 만족도 조사에서
8개 콘텐츠 중 1위를 기록했습니다.
사업팀은 미팅에서 해석 설명을 건너뛰게 됐고,
CS팀은 해석 문의가 줄었다고 전했습니다.

설명 시간
해석에만 15–20분 → 그 단계를 건너뜀사업팀 전언 · 별도 측정은 하지 않았습니다
만족도
8개 콘텐츠 중 1위기업 회원 대상 콘텐츠 만족도 조사 · 기획팀
분량
A4 9장 → 요약 1화면필요한 판단 근거만 한 화면에
개선된 요약 결과표가 실무면접 화면에서 쓰이는 모습
1위기업 회원 만족도
8개 콘텐츠 중
Retrospect문서가 아니라 구조

더 많은 정보가 아니라,
더 나은 구조였습니다.

아쉬운 점

처음부터 측정할 지표를 정하지 않았습니다

결과표 확인 시간, 해석 문의 건수를 추적했다면 개선 효과를 숫자로 보여줄 수 있었습니다. 개편 뒤에 남은 근거가 사업팀과 CS팀의 전언뿐이라, 무엇이 얼마나 나아졌는지 말하기 어려웠습니다. 지금도 이 부분이 제 약한 자리입니다.

요약과 상세가 서로 다른 구조로 남았습니다

요약 결과표는 새로 만들었지만 종합결과표 9장은 그대로 남았습니다. 요약에서 판단하고 더 깊이 보려는 담당자는 전혀 다른 구조의 문서로 넘어가야 합니다. 요약과 상세가 같은 설계 원칙 위에 있어야 경험이 이어진다는 것을, 요약만 바꿔 놓고서야 알았습니다.

배운 점

설명을 더하기 전에 구조를 먼저 봅니다

50페이지가 넘는 가이드를 만들어 배포했지만 문의는 줄지 않았습니다. 읽는 사람이 몰라서가 아니라, 결과표가 무엇부터 보라고 말해주지 않았던 것입니다. 우선순위를 다시 짜고 핵심을 맨 위에 두자 설명할 일이 줄었습니다. 그 뒤로는 설명을 덧붙이기 전에 구조부터 의심합니다.

문제를 먼저 꺼내면 설계에 참여할 수 있습니다

처음부터 맡은 과제는 아니었습니다. VOC를 정리하다 같은 불만이 반복되는 것을 보고, 그 패턴을 묶어 기획팀에 개선 방향을 먼저 제안했습니다. 요청을 기다렸다면 화면을 다듬는 데서 멈췄겠지만, 먼저 꺼낸 덕분에 무엇을 풀지 정하는 단계부터 함께할 수 있었습니다.

Case 02매칭 경험 재설계

AI 인재 매칭
솔루션 H.X

추천에 근거를 붙인 프로젝트입니다.
검색 도구에 가까웠던 매칭을, 왜 맞는지 근거를 주는 매칭으로 다시 설계했습니다.

H.X
AI 인재 매칭 솔루션
Period2025.04 – 2025.10Role문제 정의 · 화면 설계 · UIUXTeam기획 2 · 디자인 1 · 개발 6
AboutH.X

기업이 인재를
직접 찾습니다.

H.X는 기업이 원하는 인재를 말로 설명하면
AI가 맞는 사람을 찾아 추천하는 B2B 서비스입니다.
지원자를 기다리는 채용이 아니라,
기업이 먼저 찾아 나서는 채용을 돕습니다.

쓰는 사람
기업 인사담당자공고로는 오지 않는 인재를 직접 찾아야 하는 쪽
판단 재료
이력서 · AI 역량검사 결과 · 실질 조건세 가지를 함께 봐야 맞는 사람인지 판단할 수 있습니다
내 역할
문제 정의부터 화면 설계까지디자이너가 저 한 명이라 화면은 전부 제 손을 거쳤습니다
H.X 시작 화면 — 찾는 인재를 문장으로 입력AI가 입력을 직무 설명서와 필수·우대 조건으로 정리한 화면추천 인재 목록과 선택한 인재의 매칭 리포트매칭 리포트 — 자기소개와 이 포지션에 맞는 이유
Background기업이 찾아 나서는 시대

기업이 인재를 찾아야 하는 시대가 되었습니다.

공채가 사라지고 있습니다

수시채용만 실시하는 기업

60.6%

한 칸 = 기업 1곳

  • 수시채용만 실시60.6%
  • 정기공채 + 수시채용32.2%
  • 정기공채만 실시7.2%

출처: 한국경영자총협회, 2024

인재를 직접 찾습니다

경력 채용 · 다이렉트 소싱 활용

51.2%
신입경력
0255075100채용공고 · 신입 88.1%88.1채용공고 · 경력 83.7%83.7채용공고헤드헌팅 · 신입 61.2%61.2헤드헌팅 · 경력 81.9%81.9헤드헌팅다이렉트 소싱 · 신입 42.4%42.4다이렉트 소싱 · 경력 51.2%51.2다이렉트 소싱

출처: 고용노동부·한국고용정보원, 2024

경험이 가장 중요합니다

직무 관련 경험을 보는 기업

81.6%+23.2%p · 2023 대비
02550751002023 58.4%58.420232024 74.6%74.620242025 81.6%81.62025

출처: 한국경영자총협회, 2023–2025

Background이미 나와 있던 답들

그래서, 매칭 서비스가 여럿 나왔습니다.

여섯 곳을 하나씩 뜯어봤는데, 모두 조건에 맞는 사람을 찾아주는 데서 멈춰 있었습니다.

사람인인재풀 탐색

구직 활동 데이터로 인재를 추천

잡코리아원픽

공고와 이력서를 비교해 적합 인재를 추천

리멤버인재검색

명함을 바탕으로 경력직을 찾아 스카웃

원티드인재풀 탐색

매칭 데이터를 학습해 합격 확률이 높은 인재를 추천

볼트엑스인재검색

경력과 연봉이 인증된 인재를 추천

우리 서비스My Work

역량검사 결과를 바탕으로 직무에 맞는 인재를 매칭

Problem매칭이라는 이름의 검색 도구

매칭은 이름뿐,
사용자가 다 했습니다.

기존 채용 플랫폼들도 매칭을 내세웠지만,
실제로는 조건에 맞는 사람을 나열하는 데서 멈췄습니다.
왜 이 사람인지는 알려주지 않아서, 담당자가
프로필을 하나씩 열어 직접 판단해야 했습니다.

근거
추천 30명, 왜 이 사람들인지 모름적합도 점수는 있어도 그 이유가 없다 · 고객사
탐색
한 명씩 열어보고 닫기를 반복"한 시간이 금방" — 탐색 자체가 노동 · 내부 인사담당자
필터
서비스의 기준 ≠ 담당자의 기준"결국 제가 다 판단해야 하면 매칭인지 검색인지" · 내부 인사담당자
Redefine더 적게, 더 분명하게

많이가 아니라,
왜 맞는지로.

기존 서비스는 조건에 맞는 후보를 최대한 많이 보여줬고,
그중 맞는 사람을 찾는 건 담당자의 몫이었습니다.
더 적더라도 왜 맞는지 납득할 수 있다면,
그게 더 좋은 매칭이라고 봤습니다.

원칙 1
정말 맞는 사람만 추천수십 명을 나열하지 않고 적합한 인재만 보여줍니다
원칙 2
점수가 아니라 근거를 제공적합도 점수와 함께 왜 그 점수인지를 보여줍니다
지표
매칭 요청률을 핵심 지표로납득하면 요청한다고 보고, 요청으로 확인했습니다
Solution 02이력서 밖의 조건

이력서 밖의 조건까지,
매칭의 기준으로.

이력서에는 경력과 스펙만 적혀 있습니다.
하지만 채용을 가르는 건 협업 방식이나
근무 조건처럼 이력서 밖의 것일 때가 많아,
이 조건들까지 매칭의 기준으로 끌어왔습니다.

정성 역량
협업력 · 문제해결력 · 주도성이력서에 적히지 않는 것을 기준에 넣습니다
실질 조건
근무형태 · 연봉 · 위치를 미리 비교만나기 전에 어긋나는 조건을 거릅니다
연봉
직무 분석에만 쓰고 구직자에게는 비공개조건 불일치 거절은 줄이고 인재 경험은 지켰습니다
인재상 입력 — 문제해결능력·성장가능성·소통능력 카드근무지와 연봉 범위 입력 — 연봉은 직무 분석에만 쓰고 구직자에게 노출하지 않음
Solution 03매칭 리포트

왜 이 사람인지를
리포트에 담았습니다.

점수 하나로는 왜 이 사람인지 알 수 없었습니다.
그래서 판단에 필요한 근거를 세 관점으로 나눠 담았고,
순서는 담당자가 후보 앞에서 실제로 묻는
질문의 흐름을 그대로 따랐습니다.

자기소개
“어떤 사람인가요?”자기소개와 사진으로 첫인상과 표현 방식을 봅니다
인재FIT
“우리 회사에 맞을까요?”기업의 인재상과 후보의 핵심 역량을 비교합니다
직무FIT
“직무를 잘할 수 있을까요?”직무 설명서와 경력을 연결해 실무 경험을 보여줍니다
Solution 04점수를 문장으로

AI의 판단을, 담당자의 언어로 옮겼습니다.

역량검사 결과를 기업이 적어둔 인재상과 연결된 문장으로 바꾸고, 근거를 직접 확인한 뒤 정하게 했습니다.

AS-IS — 결과표를 그대로
문제해결력상위 20%
자기주도성72 / 100
대인영향력B
추진력상위 35%
TO-BE — 인재상과 연결한 문장
Impact첫 클릭이 바뀌었다

리포트부터
열어봅니다.

출시 후 내부 인사담당자를 대상으로
사용 경험 인터뷰를 했습니다.
공통으로 나온 변화는 프로필을 열면
이력서보다 리포트부터 본다는 것이었습니다.

전
이력서를 한 장씩 해석탐색 자체가 노동이던 구조
후
매칭 리포트의 근거부터 확인"이력서보다 매칭 리포트를 먼저 보게 돼요"
의미
탐색이 판단으로 바뀜인터뷰 기반 — 정량 지표는 측정 전
Image — 매칭 리포트
Honest한계와 다음

문제는 화면 밖,
인재풀에 있었습니다.

경험은 개선했지만 수익으로 이어지지는 못했습니다.
매칭은 알고리즘 · UX · 인재풀이 함께 맞아야
작동하는데, 둘은 풀었고 인재풀은
디자인으로 풀 수 있는 문제가 아니었습니다.

결과
수익 연결까지 닿지 못함UX 개선만으로는 풀의 한계를 넘지 못했습니다
원인
풀이 신입 위주, 경력직이 적었음셋을 추천해도 원하는 사람이 아니면 의미가 없습니다
다음
가상 인재 셋으로 선호부터 확인"좋다 · 애매하다 · 싫다"에 맞춰 실제 인재를 추천
Image — 새 접근 콘셉트
Retrospect생태계 전체를 보다

매칭은 UX만으로
완성되지 않았습니다.

아쉬운 점

좋은 경험이 성과로 이어지지 않았습니다

담당자의 탐색 방식은 바뀌었고, 근거를 확인하고 판단하는 구조도 만들었습니다. 하지만 인재풀이 신입 위주라 기업이 찾는 경력직이 부족했고, 경험을 개선하는 것만으로는 수익을 만들 수 없었습니다.

배운 점

화면 밖의 문제도 설계의 일부입니다

이 프로젝트 전까지는 화면 안의 문제를 잘 푸는 것이 디자이너의 역할이라고 생각했습니다. 하지만 매칭은 UX, 알고리즘, 인재풀, 비즈니스 모델이 함께 맞물려야 작동했습니다.

디자인이 맡을 역할부터 확인합니다

이제는 화면을 설계하기 전에 서비스 전체에서 디자인이 풀 수 있는 부분과 풀 수 없는 부분부터 가려 봅니다. 인재풀을 채우기 전에 수요부터 확인하는 다음 접근도 이 과정에서 나왔습니다.

Case 03inAX Design System

디자인 시스템
구축 프로젝트

시안을 넘기는 데서 멈추지 않습니다.
토큰과 컴포넌트를 직접 코드로 구현하고, AI가 읽는 시스템을 거쳐 지켜지게 만드는 장치까지 만들었습니다.
이렇게 하자고 제가 제안했습니다.

Design System
inAX
Period2026.01 – 진행 중Role토큰 설계 · 컴포넌트 구현 · 하네스BuildReact·TS 67개 컴포넌트
Before값으로 만든 시스템

시스템은 있었지만,
작동하지 않았습니다.

컬러와 타이포, 컴포넌트까지 시스템은 이미 있었습니다.
하지만 색과 간격을 값으로 정해 두어서,
만드는 사람이 늘수록 같은 역할에 다른 값이 쓰였고
무엇을 기준으로 골라야 하는지 설명할 수 없었습니다.

일관성
같은 역할인데 담당자마다 다른 색과 간격하나씩은 사소해도 쌓이면 화면이 흐트러집니다
추적
값을 바꾸면 어디까지 고칠지 알 수 없음"비활성 텍스트를 밝게"를 한 번에 바꾸지 못했습니다
기준
판단 기준이 말로만 전해짐시스템이 결정의 근거가 되지 못했습니다
bluegray-300#D1D5DB

이 색은 무엇을 위한 색일까?

본문 텍스트
?본문 텍스트디자이너 A의 해석
비활성
?비활성 상태디자이너 B의 해석
?카드 테두리개발자 C의 해석
Redefine값이 아니라 역할

값이 아니라, 역할을 정의했습니다.

bluegray-900처럼 값으로 부르던 색을, 무엇을 위한 색인지로 4단계 역할 구조에 다시 담았습니다.

요소Element
text
icon
border
fill
background
의도Intent
neutral
brand
success
danger
inverse
강조Emphasis
strong
base
subtle
subtlest
상태State
default
hover
pressed
disabled
원시값(Primitive) bluegray-900
역할(Semantic) · 요소+의도+강조
fillneutralstrong
Solution 01토큰을 코드 변수로

디자인 토큰이, 그대로 코드가 됩니다.

역할 토큰을 Figma 이름 그대로 코드 변수로 옮겨, 설계부터 React·TypeScript 구현까지 직접 했습니다.

// 원시 팔레트(Primitive) — 색의 '값' :root { --ds-color-neutral-950: #030712; --ds-color-brand-600: #2563eb; // 역할(Semantic) — 값이 아니라 '역할'을 가리킨다 --ds-color-text-strong: var(--ds-color-neutral-950); --ds-color-text-base: var(--ds-color-neutral-800); --ds-color-border-base: var(--ds-color-neutral-200); } // 다크 테마 — 같은 토큰, 값만 교체된다 (이름은 불변) [data-theme=dark] { --ds-color-text-strong: var(--ds-color-neutral-0); }
Local variables · inAXColor
Fill/Neutral/Strong/Default#111827
Fill/Danger/Base/Default#dc2626
Text/Neutral/Base#374151
Border/Neutral/Base#e5e7eb
Background/Neutral/Subtlest#f9fafb
Export → CSS 변수로 자동 생성
Solution 0267개 컴포넌트 직접 구현

프로퍼티를 나눠, 작동하는 컴포넌트로.

variant를 역할 토큰에 연결해 hover · pressed · disabled가 토큰에서 자동으로 따라옵니다.

// variant은 역할 토큰에 연결 — 상태는 토큰에서 파생된다 const variantStyles: Record<ButtonType, string> = { primary: "bg-(--color-fill-strong) text-(--color-text-inverse) hover:bg-(--color-fill-strong-hover) active:bg-(--color-fill-strong-pressed)", danger: "bg-(--color-fill-danger) text-(--color-text-inverse) hover:bg-(--color-fill-danger-hover) …", } // variant 7 · size 5 — 모든 조합이 토큰으로 정의된다
Buttonvariant × state
DefaultHoverPressedDisabled primary 저장 저장 저장 저장 secondary 취소 취소 취소 취소 outline 보기 보기 보기 보기 ghost 닫기 닫기 닫기 닫기 danger 삭제 삭제 삭제 삭제
Solution 03AI가 읽고 호출하는 시스템

AI도 읽을 수 있게 만들었습니다.

컴포넌트가 언제 쓰이는지 스스로 설명하게 하고, 에이전트가 그 설명을 질의해 시스템대로 짜게 했습니다.

// 컴포넌트가 스스로를 설명한다 — button.metadata.ts export default defineMetadata({ component: { name: 'Button', category: 'action' }, usage: { antiPatterns: [{ scenario: '한 영역에 primary 여러 개', reason: '위계가 흐려진다', alternative: '가장 중요한 하나만 primary', }], }, aiHints: { keywords: ['submit', 'confirm', 'delete', 'cta'], selectionCriteria: '즉시 실행되는 액션에 사용', }, })
01
컴포넌트가 스스로 설명

.metadata.ts — 용도·안티패턴·AI 힌트를 코드에 명시

02
레지스트리 자동 생성

전 컴포넌트 메타데이터 → 단일 JSON, 소스가 곧 스펙

03
에이전트가 질의

CLI·스킬로 필요한 컴포넌트만 골라 조회

04
시스템대로 코딩

임의 스타일이 아니라 DS 토큰·컴포넌트를 우선 사용

Solution 04지켜지게 만드는 장치

만들어둔 부품이 잘 안 쓰였습니다.

AI가 없는 토큰 이름을 지어내도 오류도 안 나고 화면도 안 깨져서, 사람 눈으로는 안 잡혔습니다.

$ pnpm ds:scan // 전수 스캔 FilterBar.tsx:118 [HIGH] 팬텀 클래스 text-ds-text-muted @theme에 없음 — 조용히 미적용 → text-(--ds-color-text-subtle) MemberCard.tsx:42 [HIGH] 색 리터럴 #3B82F6 → var(--ds-color-fill-brand-hover) TaskDialog.tsx:87 [SOFT] native <select> 손조립 → DS Select 가 이미 있다 StatTiles.tsx:24 [SOFT] ds-metric-* 3회 사용 히어로 지표 1개 전용 스케일 // 렌더가 죽는 것만 차단 · 판단이 필요한 건 경고
01
착수

UI 파일을 처음 열 때, 쓸 수 있는 컴포넌트 목록을 통째로 알려준다

02
편집

저장 직후, 하드코딩·유령 참조를 그 자리에서 지적

03
커밋

지난 250개를 되돌려 재보니 걸렸을 건 6개, 2.4%

04
집계

못 지킨 자리를 모아 다음에 만들 컴포넌트의 근거로

Impact기준으로 작동하는 시스템

무엇을 쓸지
시스템에서 찾습니다.

화면을 짜는 주체가 사람에서 AI로 바뀌었지만,
무엇을 고를지와 그 기준은 같은 자리에 있습니다.
디자이너와 개발자, AI가 같은 이름으로 말하고
같은 시스템에서 부품을 찾습니다.

핸드오프
"이 회색"이 아니라 "border-base"로 말합니다Figma 이름과 코드 변수명이 같아 옮기는 단계가 없습니다
찾기
이름을 몰라도 개념으로 찾습니다"아이콘 버튼"이라 물으면 IconButton을 돌려줍니다
조용한 실패
눈으로 못 잡는 어긋남을 장치가 잡습니다정의에 없는 토큰명은 오류 없이 그냥 미적용됩니다
Ask묻는 말 그대로 물어봅니다

“이거 뭘 써야 하지?”

Button

언제 쓰는지 · 기본값이 무엇인지

쓰면 안 될 때 한 영역에 primary 여럿 — 가장 중요한 하나만

“이름을 모르겠는데”

“아이콘 버튼” → IconButton

한글로 물어도 찾습니다. 이름을 알아야만 찾을 수 있으면, 있는 줄 모르는 부품은 영영 다시 만들어집니다

“이 색은 어떤 토큰이지?”

가장 가까운 토큰

똑같은 게 없으면 제일 가까운 것을 줍니다

34종을 대보니 26종은 이미 있는 색이었습니다

Now & Next지금 여기, 다음 저기

부품은 섰습니다. 다음은 화면입니다.

아직 진행 중인 시스템입니다. 부품은 대체로 섰고, 화면을 짜는 층이 남아 있습니다.

Now여기까지 섰습니다
01부품 67개와 색 기준 317개화면을 만들 때 고를 것이 이미 정해져 있습니다
02부품마다 AI가 읽는 설명서언제 쓰고, 언제 쓰면 안 되고, 그럴 땐 뭘 대신 쓰는지. 빠뜨리면 테스트가 막습니다
03어긋나면 되돌아오는 층 네 단계파일을 열 때 · 저장할 때 · 커밋할 때 · 주기적으로 세어볼 때. 최근 색과 글자 굵기까지 커밋에서 막도록 올렸습니다
Retrospect함께 쓰는 언어

결국, 모두가 함께 쓰는
언어를 만들었습니다.

배운 점

시스템은 팀이 함께 쓰는 언어입니다

구조가 잘 짜여 있어도 다른 사람이 이해하지 못하면 쓰이지 않았습니다. 프론트엔드 개발자와 구현 가능성을 검토하고 네이밍 규칙을 맞춘 것이, 시스템이 실제로 작동하는 데 가장 큰 영향을 줬습니다.

직접 구현하면 끊기는 자리가 사라집니다

시안을 넘기고 기다리는 대신 제가 코드로 옮겼기 때문에, 디자인과 개발 사이에서 이름이 어긋나는 자리를 바로 잡을 수 있었습니다.

다음 과제

무엇을 먼저 만들지는 집계가 정합니다

시스템은 제품과 함께 자라야 합니다. 그래서 안 지켜지는 자리를 세는 장치를 먼저 붙였고, 다음에 만들 부품은 감이 아니라 그 기록을 보고 고릅니다. 부품 다음은 화면을 짜는 패턴입니다.

Thank you

문제를 다시 정의하는 일,
계속하겠습니다.

읽어주셔서 감사합니다. 더 나은 결정을 돕는 디자인으로 이어가겠습니다.

신건주
UI/UX Designer
Emailkunjoo0621@gmail.comCareer마이다스인 · 고리 · 티오더스테이