한 줄 결과물: 역할 표, OKLCH 표(색역 판정 포함), 램프, 대비 표. 값은 모두
oklch.py와contrast.py가 계산한다.
스킬 본문: ../../color-system/SKILL.md
언제 쓰나
- 팔레트, 램프, 의미 색 토큰, 차트 색을 만들거나 검수할 때
- 색역을 넘는 값, 탁해지는 색, 다크 모드 색을 확인할 때
- 쓰지 않을 때: 색 하나에 대한 과한 분석, 색 이름 짓기(사람이 짓는다)
샘플

| 입력 | 값 |
|---|---|
| 기준색 | 브랜드 녹색 #328523 (정본: @infograb/design-tokens) |
| 함께 본 색 | 글자용 녹색 #286a1b, 보라 #5941af |
| 명령 | to-oklch, gamut, ramp --steps 10 |
| 결과 | 기준색 oklch(0.5456 0.1551 140.87), 램프 10단계(#E1FFDC ... #002C00) |
OKLCH 값, 램프의 hex, 색역 경고(chroma 0.2215)는 아래 명령의 실제 출력이다. 역할 표의 "쓰는 곳"은 모양을 보여 주는 예시다.
따라하기
- 역할부터 적는다. 어떤 색이 면, 선, 본문, 행동, 분류, 상태 중 무엇을 맡는지 표로 쓴다.
color-system 스킬로 우리 팔레트를 점검해 줘. 기준색: #328523, 정본 위치: <토큰 파일 경로>. 역할 표부터 만들어 줘. - 기준색을 OKLCH로 바꾼다.
python3 color-system/scripts/oklch.py to-oklch '#328523' # oklch(0.5456 0.1551 140.87) - 색역을 확인한다. 색역 밖이면 명도나 색상을 바꾸지 말고 chroma만 줄인다.
python3 color-system/scripts/oklch.py gamut 'oklch(0.7 0.3 145)' # sRGB 색역 밖 | 이 L,H에서 최대 chroma = 0.2215 | 요청 chroma = 0.3000 - 램프를 만든다. 색상을 고정하고 명도만 움직인다.
python3 color-system/scripts/oklch.py ramp '#328523' --steps 10 # step 1 L=0.970 C=0.0557 #E1FFDC (chroma 0.1551 -> 0.0557 로 감소) # ... # step 10 L=0.250 C=0.0970 #002C00 (chroma 0.1551 -> 0.0970 로 감소) - 대비를 계산한다. 글자와 실제 바탕 쌍마다
a11y-audit의contrast.py를 쓴다. - 보고한다. 역할 표, OKLCH 표, 대비 표, 구조 점검, 제안(정본에 없는 색은 제안으로만) 순서로 낸다.
흔한 실패
- 정본에 없는 새 색이나 폐기된 색(
#579950,#4B24D7,#7e61d5)을 코드에 넣는다. 제안으로만 올린다. - 색역 밖 값을 그대로 쓴다. 잘려서 탁해지고 색상이 틀어진다.
- 색상 중심 조화 규칙(보색, 삼각 배색)만 근거로 삼는다. chroma와 명도가 정서를 더 좌우한다.
- 다크 모드를 라이트 팔레트의 반전으로 만든다. 별도 팔레트로 계산한다.
다음 스킬
- 토큰 구조(값, 의미, 규칙 층)는
design-system-tokens - 글자/바탕 대비 판정은
a11y-audit