make-interfaces-feel-better로 카드·버튼 CSS 다듬는 법
설치하고 부르기
make-interfaces-feel-better는 카드·버튼이 "뭔가 어색하다"는 느낌을 숫자가 붙은 규칙으로 바꿔 둔 Claude Code 스킬입니다. "바깥 반경은 안쪽 반경 더하기 패딩", "누를 때는 0.96배까지만" 같은 규칙입니다. 프로젝트 폴더에서 명령 한 줄로 깝니다.
npx skills add jakubkrehel/make-interfaces-feel-better깔고 나면 슬래시 명령 뒤에 모드와 폴더를 적어 부릅니다. quick은 고칠 곳과 바꿀 값만 보여 주고 파일은 그대로 둡니다. full은 더 작은 다듬기까지 짚고, 적용해 달라고 하면 CSS를 고칩니다. 모드를 빼면 full로 돕니다.
예시는 SaaS 요금제 카드입니다. 둥근 카드 안 회색 상자에 "Team plan" 제목과 좌석 수에 따라 바뀌는 가격, 좌석을 더하는 + 버튼이 있고 그 아래 Upgrade 버튼이 있습니다. 이 카드가 든 폴더에서 full로 부르고, 찾은 것을 적용해 달라고 합니다.
/make-interfaces-feel-better full src/고친 카드는 안쪽 상자와 Upgrade 버튼이 바깥 모서리를 같은 간격으로 따라 돌고, 테두리 대신 아래쪽 그림자가 카드를 띄웁니다.
모든 프로젝트에서 쓰려면
기본은 지금 프로젝트에만 깔립니다. 설치 명령에 -g를 붙이면 사용자 전체에 깔려 어느 프로젝트에서나 부를 수 있습니다.
full은 반경·그림자·전환·누름을 고친다
파일을 건드리기 전에 고칠 곳만 보려면 quick으로 부릅니다.
/make-interfaces-feel-better quick src/quick은 HIGH·MEDIUM 심각도만 다섯 건까지 내고, 파일은 고치지 않은 채 적용할지 묻고 끝납니다. 이번에는 모두 MEDIUM이었습니다.
full이 plan-card.css에서 주로 바꾼 값은 반경·그림자·전환·누름 넷입니다.
바깥 반경을 안쪽 반경 더하기 패딩으로 잡아야 모서리 간격이 고르다
Upgrade 버튼도 같은 계산으로 12px가 됐습니다. 회색 테두리는 다른 배경에선 선만 떠 보여서, 어느 배경에서나 같은 깊이로 보이는 투명 그림자 3겹으로 바꿨습니다. 버튼은 transition: all 대신 transform 하나만 바로 반응하는 ease-out으로 움직이고, 누름은 0.96배로 눌렸다는 신호만 남깁니다.
고친 값을 손으로 옮기거나 Tailwind를 쓴다면
full은 이 밖에 가격에 tabular-nums를, 제목에 text-wrap: balance를 넣었습니다. 24px짜리 + 버튼은 눌리는 범위를 44px로 넓혔고, 연달아 누르는 버튼이라 누름 효과는 달지 않았습니다. 아래는 고친 줄을 모은 것이고, 주석은 같은 값의 Tailwind v4 클래스입니다. 프로젝트가 Tailwind를 쓰면 스킬도 CSS 파일을 새로 만들지 않고 클래스로 고칩니다.
.card { border-radius: 20px; /* rounded-[20px] */ padding: 8px; /* p-2 */ box-shadow: /* shadow-card */ 0 0 0 1px oklch(0 0 0 / 0.06), 0 1px 2px -1px oklch(0 0 0 / 0.06), 0 2px 4px 0 oklch(0 0 0 / 0.04);}.icon-button { position: relative; } /* relative */.icon-button::after { /* after:absolute after:top-1/2 after:left-1/2 after:-translate-1/2 after:size-11 */ content: ""; position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%); width: 44px; height: 44px;}.button { border-radius: 12px; /* rounded-xl */ /* transition-transform duration-150 ease-[ease-out] */ transition: transform 150ms ease-out;}.button:active { transform: scale(0.96); /* active:scale-[0.96] */}shadow-card는 기본 클래스가 아닙니다. 위 그림자 값을 @theme의 --shadow-card 변수로 넣으면 생깁니다. 제목과 가격은 text-balance, tabular-nums 클래스 하나씩이면 됩니다.
가격 자릿수가 바뀌는 카드라면
tabular-nums는 숫자끼리 폭을 맞출 뿐입니다. $12가 $96으로 바뀔 때는 /mo가 그대로지만, 좌석 9개($108)처럼 자릿수가 늘면 한 자리만큼 오른쪽으로 밀립니다. 가격 숫자를 따로 감싸 최소 폭을 주고 오른쪽에 붙입니다.
<p className="price"> <span className="amount">${seats * 12}</span>/mo</p>.amount { display: inline-block; /* inline-block */ min-width: 5ch; /* min-w-[5ch] */ text-align: right; /* text-right */}ch는 그 글꼴의 숫자 0 한 자 폭입니다. $가 숫자보다 넓은 글꼴이 있어 $와 세 자리에 한 칸을 더 잡았습니다. 네 자리 가격이 있으면 6ch로 늘립니다.
quick으로 거르고 full로 고친다
PR마다 고장을 거를 때는 quick, 카드가 왜 어색한지 찾아 고칠 때는 full을 씁니다. 스킬이 맞는 곳은 요금제·설정 카드, 버튼이 모인 툴바, 숫자가 바뀌는 대시보드처럼 컴포넌트를 다듬는 화면입니다. 스킬 없이 같은 폴더에서 "카드와 버튼이 어색해 보인다"고만 물어도 Claude는 반경 규칙, transition: all, scale(0.9)를 짚습니다. 값은 "120ms 정도", "0.96~0.98"처럼 범위로 나오고, 카드를 띄우려고 둔 회색 테두리는 짚지 않습니다.
| 상황 | 쓸 것 | 이유 |
|---|---|---|
| PR마다 너무 작은 버튼·과한 누름 같은 고장을 거를 때 | quick | HIGH·MEDIUM만 다섯 건까지, 파일은 그대로 |
| 카드가 왜 어색한지 찾고 적용까지 맡길 때 | full | 테두리를 그림자로 바꾸는 LOW 다듬기까지 |
| 둥근 모서리를 빠짐없이 볼 때 | full | quick은 MEDIUM으로 잡을 때도, LOW로 뺄 때도 있음 |
| 반경·전환·누름 문제만 짚으면 될 때 | 스킬 없이 | 값은 범위로, 회색 테두리는 빠짐 |
| 접근성·레이아웃까지 볼 때 | jakubkrehel/skills | 이 스킬은 글자·표면·애니메이션·아이콘·성능만 봄 |