CLI
검색부터 소스 검증과 새 작업 폴더 생성까지
klic-design 통합 패키지
[email protected] · AI 지침·토큰·테마·폰트·CLI·컴포넌트·블록·모션 · npm 발행 전
KLIC 저장소에서 bun run pack:npm을 실행해 설치할 tarball을 만드세요.
bun add [email protected]
bunx --bun [email protected] klic version --jsonnpm install [email protected]
npx --yes [email protected] klic version --json필요한 항목만 가져오기
import {createTokens} from 'klic-design/tokens';
import {getMotion} from 'klic-design/motions';
import button from 'klic-design/components/button';
import SupportTickets from 'klic-design/blocks/support-tickets';
import 'klic-design/blocks.css';
import 'klic-design/motions/fade-slide.css';컴포넌트는 항목별 등록 HTML 형태, 블록은 React 19 실행 예제, 모션은 CSS/React 원본 예제입니다. 블록에는 React·React DOM이 필요합니다. 폰트·스타일은 필요한 경로를 명시적으로 가져오세요.
KLIC Design Agent Skill
동일한 klic-design 패키지에 포함됩니다. 별도 설치 없이, 필요한 에이전트에만 선택적으로 동기화하세요. 동기화 명령은 실험적 기능입니다.
bunx skills experimental_sync -ynpx skills experimental_sync -y선택 사항 · CLI 파일 직접 다운로드
직접 다운로드하는 단일 ESM CLI는 Bun 1.4.2 실행을 기본으로 합니다. Node.js 22+도 npm/npx 호환 소비 경로로 지원합니다. 명령은 현재 디렉터리에서 실행합니다.
curl -fL https://design.klic.co.kr/integrations/klic.mjs -o klic.mjs
bun klic.mjs help
bun klic.mjs contractshadcn으로 React 블록 추가
shadcn이 설정된 React 19 프로젝트에서 아래 명령으로 지원 블록의 소스, CSS, 토큰과 MIT 고지를 추가할 수 있습니다. 폰트는 시스템 대체 글꼴을 사용합니다.
bunx --bun shadcn@latest add https://design.klic.co.kr/r/affect-agent-review.json지원 항목: affect-agent-review, affect-response-workspace, affect-logo-marquee, affect-testimonial-wall. 다른 항목은 아래 KLIC CLI의 독립 작업 폴더 전달을 사용하세요.
각 항목의 설치 내용은 https://design.klic.co.kr/r/<항목-ID>.json에서 확인할 수 있습니다.
전체 명령
| 명령 | 동작 | 명령별 옵션 |
|---|---|---|
| list | 항목 목록, total과 nextCursor | --kind --status --limit --cursor --token --group |
| search "query" | 이름·ID·설명·태그·토큰 검색 | --kind --status --limit --cursor --token --group |
| get <kind> <id> | 상세 JSON과 설계 지침 | — |
| source <kind> <id> | 참조 소스 텍스트 출력 | --variant (component only) |
| plan <kind> <id> | manifest 경로·CLI 명령 출력 | — |
| add <kind> <id> | 검증 후 새 작업 폴더 생성 | --out (required), --dry-run |
| theme <list|get|plan|add> | 테마 검색·정의·설치 계획·새 폴더 전달 | list: --query; get: 없음; plan: --profile --material --mode; add: plan 옵션 + --out (필수) --dry-run |
| motion <list|get> | KLIC 각색 및 원본 출처 정보가 있는 모션 레시피와 구현 정보 읽기 | list: --query --category --limit --cursor; get: ID |
| contract | 버전·기능·정책·문서 링크 | — |
| mcp | 줄 단위 JSON-RPC stdio 서버 | — |
항목 명령의 kind는 component 또는 block입니다. theme은 별도 명령 그룹이며 아래 하위 명령별 옵션을 사용합니다. 모든 데이터 명령에 --base 또는 --local을 사용할 수 있으며 두 옵션을 함께 쓰면 오류입니다. 중복 옵션, 알 수 없는 옵션과 명령에 맞지 않는 옵션도 오류입니다.
필터와 페이지 이동
curl --fail --location --output klic.mjs https://design.klic.co.kr/integrations/klic.mjs
bun ./klic.mjs list --kind component --limit 5
curl --fail --location --output klic.mjs https://design.klic.co.kr/integrations/klic.mjs
bun ./klic.mjs search "button" --kind component --token klic.component --group actions
curl --fail --location --output klic.mjs https://design.klic.co.kr/integrations/klic.mjs
bun ./klic.mjs list --kind component --limit 5 --cursor 5
curl --fail --location --output klic.mjs https://design.klic.co.kr/integrations/klic.mjs
bun ./klic.mjs list --kind block --status planned --limit 5| 옵션 | 허용 값 / 기본값 |
|---|---|
| --kind | all | component | block / all |
| --status | ready | planned | all / ready |
| --limit | 1–100 / 20 |
| --cursor | 응답 nextCursor의 숫자 문자열 / 0 |
| query / --token | 최대 200자 |
| --group | 정확한 그룹 ID, 최대 100자 |
페이지를 넘길 때 동일한 검색 조건과 release를 유지하세요. 다음 페이지가 없으면 nextCursor는 null입니다. 필터를 바꾸면 cursor를 0으로 되돌립니다.
소스 가져오기
curl --fail --location --output klic.mjs https://design.klic.co.kr/integrations/klic.mjs
bun ./klic.mjs add block support-tickets --out ./klic-support-ticketscurl --fail --location --output klic.mjs https://design.klic.co.kr/integrations/klic.mjs
node ./klic.mjs add block support-tickets --out ./klic-support-tickets컴포넌트 상세의 variants에 등록된 형태의 ID·용도·출처·소스 경로가 있습니다. source의 --variant에는 그 ID를 사용하세요. add는 해당 컴포넌트의 모든 등록 형태와 공통 스타일·동작을 함께 가져옵니다.
curl --fail --location --output klic.mjs https://design.klic.co.kr/integrations/klic.mjs
bun ./klic.mjs get component button
curl --fail --location --output klic.mjs https://design.klic.co.kr/integrations/klic.mjs
bun ./klic.mjs source component button --variant default
curl --fail --location --output klic.mjs https://design.klic.co.kr/integrations/klic.mjs
bun ./klic.mjs source block support-tickets
curl --fail --location --output klic.mjs https://design.klic.co.kr/integrations/klic.mjs
bun ./klic.mjs plan block support-tickets
curl --fail --location --output klic.mjs https://design.klic.co.kr/integrations/klic.mjs
bun ./klic.mjs add block support-tickets --out ./klic-support-demo --dry-run
curl --fail --location --output klic.mjs https://design.klic.co.kr/integrations/klic.mjs
bun ./klic.mjs add block support-tickets --out ./klic-support-demo- dry-run: manifest를 읽어 파일 경로·용량·의존성을 출력하며 파일은 만들지 않습니다.
- add: 모든 파일의 크기와 SHA-256을 검증한 뒤 저장합니다. 기존 경로와 심볼릭 링크는 거부합니다. 상위 폴더는 미리 존재해야 합니다.
- 출력은 공용 런타임과 라이선스를 포함한 독립 작업 폴더입니다. bun install과 bun run dev는 README 확인 후 직접 실행합니다.
- source는 참조 코드 한 파일을 출력합니다. 의존성을 포함한 전체 전달은 add를 사용하세요.
테마 검색과 검증된 전달
curl --fail --location --output klic.mjs https://design.klic.co.kr/integrations/klic.mjs
bun ./klic.mjs theme list --query paper
curl --fail --location --output klic.mjs https://design.klic.co.kr/integrations/klic.mjs
bun ./klic.mjs theme get paper
curl --fail --location --output klic.mjs https://design.klic.co.kr/integrations/klic.mjs
bun ./klic.mjs theme plan paper --profile studio --material glass --mode system
curl --fail --location --output klic.mjs https://design.klic.co.kr/integrations/klic.mjs
bun ./klic.mjs theme add paper --profile studio --material glass --mode system --out ./klic-theme-paper --dry-run
curl --fail --location --output klic.mjs https://design.klic.co.kr/integrations/klic.mjs
bun ./klic.mjs theme add paper --profile studio --material glass --mode system --out ./klic-theme-papertheme list는 --query만, theme get은 선택 옵션 없이 실행합니다. theme plan과 theme add는 --profile, --material, --mode를 받으며 add만 새 폴더 --out과 선택 --dry-run을 받습니다. --base와 --local은 모든 theme 하위 명령에서 사용할 수 있습니다.
- theme add는 파일별 SHA-256과 크기를 검증한 뒤 새 폴더에만 씁니다. 기존 경로는 덮어쓰지 않으며 npm, shell 또는 설치 명령을 실행하지 않습니다.
- 묶음: theme.css, tokens.light.json, tokens.dark.json, theme.config.json, apply-theme.mjs, vanilla index.html, 표준 테마 엔진 JS, 등록된 실제 폰트 21개와 fonts/FONT-NOTICES.md.
- 초기 CSS는 선택한 테마·프로필의 Light/Dark와 공통 재질 선택자를 포함합니다. 런타임 helper는 같은 표준 엔진으로 테마·프로필·모드·재질 전환을 지원합니다. 토큰 JSON은 Component와 Semantic 재질 역할 및 그 참조를 보존한 4계층 형식입니다.
import './klic-theme-paper/theme.css';
import {applyTheme} from './klic-theme-paper/apply-theme.mjs';
const theme = applyTheme(document.documentElement);
theme.update({id:'paper', profile:'studio', mode:'dark', material:'glass'});
// For a portal outside the themed root, also call applyTheme(portalRoot).
// Keep each root's context in sync, then release its listeners when disposed.
theme.destroy();테마를 적용할 앱 루트에 helper를 연결하세요. 루트 밖 포털은 자체 포털 루트에도 helper를 연결하고 컨텍스트를 함께 갱신합니다. system 모드는 운영체제 색상 설정을 따라가며 destroy()가 리스너를 해제합니다.
Paperlogy는 실제 400·600·700 파일을, Pretendard는 실제 400 파일만 제공합니다. 다른 Pretendard 굵기는 브라우저가 합성하며 별도 실제 파일이 아닙니다. fonts/FONT-NOTICES.md의 라이선스 고지를 보존하세요.
로컬 체크아웃과 다른 배포
# KLIC source repository root
bun dist/integrations/klic.mjs list --local --kind component
bun dist/integrations/klic.mjs get component button --local
curl --fail --location --output klic.mjs https://design.klic.co.kr/integrations/klic.mjs
bun ./klic.mjs list --base https://design.klic.co.kr--local은 현재 작업 폴더의 dist/api/v1/registry.json과 dist 아래 소스를 읽습니다. 다운로드한 단일 파일만으로 로컬 스냅샷이 생기지는 않습니다. --base는 HTTPS만 허용하며 localhost 개발 환경에 한해 HTTP를 허용합니다.
출력과 오류 처리
성공 종료 코드는 0, 실패는 1입니다. JSON 결과는 stdout, 오류 JSON은 stderr로 출력합니다. source는 원본 텍스트를, mcp는 응답마다 한 줄 JSON을 출력합니다.
{
"error": {
"code": "INVALID_ARGUMENT",
"message": "add requires --out with a new directory."
}
}| error.code | 조치 |
|---|---|
| INVALID_ARGUMENT | 명령·옵션·ID 확인 |
| NOT_FOUND / SOURCE_UNAVAILABLE | ID와 ready 상태 확인 |
| DESTINATION_EXISTS / UNSAFE_DESTINATION | 일반 디렉터리 아래 새 경로 선택 |
| INTEGRITY_FAILED | 저장 중단, 스냅샷과 원본 재확인 |
| RATE_LIMITED | Retry-After 안내에 따라 재실행, 자동 재시도 없음 |
| REGISTRY_UNAVAILABLE / UNSAFE_REDIRECT | 배포 주소와 연결 확인, 리다이렉트 미허용 |
테마 컨텍스트와 범위
| 축 | 허용 값 |
|---|---|
| id | klic | paper | ink | analysis | electronics | compute | integrations | console | workspace | spatial |
| profile | core | studio | data |
| material | flat | glass | solid-glass | liquid-glass |
| mode | system | light | dark |
전체 정의 인벤토리는 호환성을 위해 3,751개 토큰을 유지합니다. 외부 전달은 선택한 컨텍스트의 활성 참조를 따라 사용하지 않는 Primitive를 제외하며, 토큰 탐색기는 현재 컨텍스트와 전체 정의 범위를 구분합니다. Primitive 3,143개 중 2,496개(79.41%)는 재질 정의입니다.
형식은 프로젝트가 지원하는 타입과 4계층 참조 규칙을 검증합니다. 모든 DTCG 기능 지원이나 모든 화면의 WCAG 인증을 의미하지 않습니다.
요청 한도와 권한 키
| 채널 | 60s / IP | 허용 키 |
|---|---|---|
| API | 120 | 무제한 |
| Remote MCP | 60 | 무제한 |
| Source downloads | 2000 | 무제한 |
초과 요청은 HTTP 429와 Retry-After를 반환합니다. API·MCP는 X-KLIC-API-Key 헤더, CLI는 KLIC_API_KEY 환경 변수를 지원합니다. 서버에 등록된 키만 한도에서 제외되며 관리 권한이나 MCP 인증을 부여하지 않습니다. 키를 URL·문서·브라우저 코드에 넣지 마세요.
이미 읽은 스냅샷의 stdio·WebMCP 호출과 --local 실행은 서버 요청을 만들지 않습니다. 초기 HTTP 레지스트리 조회와 소스 다운로드는 각각 서버 한도를 사용합니다.
수치의 집계 범위
| 범위 | 계산 |
|---|---|
| 블록 전체 | 247 + 80 = 327 |
| 실행 기본 검색 | 109 + 247 = 356 |
| 준비 포함 레지스트리 | 109 + 327 = 436 |
| 모션 카탈로그 (별도 집계) | 884 |
제공 형태와 버전 읽기
KLIC은 7개 디자인 디멘션과 4계층 토큰을 공통 기반으로 씁니다. 적용 기준은 다릅니다. 컴포넌트는 개별 조작 요소, 블록은 업무 흐름, 모션은 시간에 따른 전환을 다룹니다. 공개 npm: [email protected]. 소스 후보 [email protected]는 미발행이며 [email protected]가 현재 발행본입니다.
컴포넌트 109개와 실행 블록 247개는 CLI plan/add로 독립 참고 작업 폴더 356개를 제공합니다. 모션 884개는 source id + pattern 출처와 보존된 고지를 포함한 KLIC 각색 패턴이며 상세 화면·API·CLI motion get에서 HTML/CSS/JavaScript/React 소스를 제공합니다(CSS/React 예제 포함). 미리보기와 JavaScript/React 구현은 같은 런타임을 사용하며 Canvas 재생은 CSS만으로 재현되지 않습니다. 패키지는 components/*·blocks/*·motions/*를 제공하고, 모션 수는 작업 폴더 수와 별도로 집계합니다. 소스 후보 [email protected]는 미발행이며 [email protected]가 현재 발행본입니다.
| 표기 | 의미 |
|---|---|
| Toolkit 0.0.1 | CLI와 공유 연동 런타임 버전. npm 패키지 버전 0.0.4과 별도로 관리합니다. |
| Schema 1.0 | 응답 데이터 형식 |
| release 444ee642b9edec32 | 레지스트리 배포 해시 |
| revision 6f9c8f5e4d7c767f79a7db999670fb4d0936e07acb1b472fe162a7a9ade60c97 | 디자인 기준 해시 |
라이선스 안내는 파일별 출처와 보존 고지의 색인입니다. 사이트 전체에 새 단일 라이선스를 부여하지 않습니다. Figma는 manifest와 이관 가이드를 제공하며 자동 동기화 기능과 구분합니다. 공개 KLIC 소스 저장소 주소는 현재 제공 계약에 등록되어 있지 않습니다.
https://design.klic.co.kr/licenses/README.md
https://design.klic.co.kr/design-contract/materials/figma-manifest.json
https://design.klic.co.kr/design-contract/materials/figma-migration.md공통 디자인 기준 보기
공통 디자인 기준
기준 리비전: 6f9c8f5e4d7c767f79a7db999670fb4d0936e07acb1b472fe162a7a9ade60c97
기준 원문: https://design.klic.co.kr/api/v1/design-system.json
API·CLI·MCP·WebMCP의 designSystem과 동봉된 KLIC-DESIGN-SYSTEM.json에서 이 기준과 리비전을 확인합니다. 항목별 계약은 item.design.system으로 연결합니다.
| 디멘션 | 토큰의 책임 | 구조·행동의 책임 |
|---|---|---|
| 크기와 비율 | 컨트롤 크기·아이콘·콘텐츠 폭 | min-height·패딩·줄바꿈·실제 hit area는 컴포넌트 recipe와 DOM에서 보장 |
| 타이포그래피 | 등록 family·역할별 크기·굵기 | 행간·자간·줄바꿈·반응형 조건은 지원 recipe에서 정의; 등록되지 않은 타입을 가정하지 않음 |
| 색과 대비 | 행동·선택·텍스트·경계·상태의 역할 색 | 레이블·아이콘·상태 속성으로 의미 전달; 합성 표면의 실제 대비는 토큰 밖에서 측정 |
| 배치와 정렬 | 콘텐츠 최대 폭·패널 폭 등 등록된 공간 역할 | DOM 읽기 순서·배치 전환·스크롤 소유권·Portal 구조 |
| 간격과 그룹화 | 내부 gap·padding·그룹 사이 간격과 승인 밀도 매핑 | label·fieldset·legend·describedby 등의 관계; 창 폭만으로 밀도를 변경하지 않음 |
| 표면과 깊이 | 표면색·반경·경계 및 지원 color/dimension 소재 leaf | blur·shadow 합성 recipe·stacking·보조 패널과 모달 구분·불투명 fallback |
| 상호작용과 피드백 | focus·선택·진행·성공·경고·오류의 시각 역할 | 키보드·focus 이동·비동기 전이·실행 차단·입력 보존·복구 경로 |
Primitive만 literal 소유. Brand→Primitive, Semantic→Brand, Component→Semantic 인접 참조 유지.
토큰 정의, DOM/CSS recipe의 구조 조건, 컴파일된 최종 literal 출력을 구분한다.
모션 레시피는 컴포넌트·블록 설치 항목과 별도 읽기 카탈로그로 유지하되, 브라우저 검색·미리보기·상세 UI는 KLIC Interface Library 홈페이지의 기존 #motion 메뉴에서 제공한다. 읽기 API·CLI·MCP·WebMCP도 같은 정본 카탈로그를 사용한다. 적용 범위는 사용자 제공 참조 소스의 884개 패턴·67개 분류이며, 기존 KLIC 카테고리/항목 탐색 동작에 그룹으로 싣는다. 기존 단순화 280개 카탈로그, 그 전용 경로와 별칭은 현 카탈로그에서 제외하고 호환 항목으로 유지하지 않는다. 각 채택 항목에는 원본 source id·pattern·engine을 연결하고, Copyright © 2026 acc0mplish. All rights reserved. 및 원본 라이선스 고지를 보존하며 KLIC 자체 제작으로 표시하지 않는다. 원본 안무·시간·경로·레이어·SVG/inline/WAAPI alpha는 보존한다. 외관은 KLIC 4계층 토큰 경로의 색·폰트·표면·테두리·radius·spacing으로 각색하고 Canvas도 같은 팔레트·폰트 토큰을 사용한다. 데모 CSS는 항목 범위로 격리한다. 같은 source runtime이 미리보기와 JavaScript/React 전달을 구동하며 Canvas 재생을 CSS만으로 제공한다고 주장하지 않는다. KLIC 각색본은 블루·네이비·중립 팔레트와 reduced-motion·replay·cleanup 계약을 따르고 출시 전 light/dark/mobile 및 실제 재생을 검증한다. NPM 패키지는 홈페이지와 별도 산출물이며, 현재 소스 후보의 export를 발행된 버전의 기능으로 소개하지 않는다. NPM export 안내는 확인된 발행 manifest에 근거한다.
프리셋의 허용 범위
Preset은 기존 API의 승인된 설정 조합이며 토큰의 다섯 번째 계층이 아니다.
해당 컴포넌트 API가 실제 지원하는 size·variant·density·layout 등 명시적 allowlist
- label·설명·업무 데이터
- value·selection·validation·request 상태
- 이벤트 핸들러·복구 액션·권한
- 원시 스타일 값·미등록 CSS 변수·임의 토큰 override
컴포넌트 기본값 → 선택한 preset → 허용된 명시적 설정. 업무 데이터·상태·권한은 별도 입력으로 처리한다.
허용 키·enum·조합을 검사하고 모르는 값은 진단한다. 타입 선언과 실제 DOM·동작 검증을 구분한다.
충돌 해결 순서
- 정보·조작·접근성을 먼저 보존: 핵심 정보·상태 의미·입력·focus와 조작 경로를 보존한다. 디멘션 번호로 다른 필수 계약을 무효화하지 않는다.
- 구조와 읽기 순서를 재배치: 줄바꿈·열 전환·행동 묶음·패널 배치를 먼저 조정한다. 의미상 필요한 2차원 영역만 국소 스크롤을 사용한다.
- 승인 범위에서 간격·표면 조정: 사용자가 선택한 밀도와 글자 배율을 존중하며 승인된 recipe 안에서 여백·장식을 조정한다. 공간 부족만으로 자동 compact나 글자 축소를 적용하지 않는다.
- 남는 제약과 검증을 기록: 기본값으로 해결되지 않으면 적용 범위·대안·영향·FR/AT·실제 검증을 기록한다. 토큰 계층을 건너뛰거나 검증 실패를 예외 승인으로 덮지 않는다.
sources/checks는 연결 근거이며 통과 인증이 아니다. 제품별 실제 환경 검증 결과는 기존 FR/AT 기록에서 관리한다.
적용과 검증
공통 기준과 항목별 DESIGN.md·실제 소스를 먼저 읽습니다. 규칙마다 토큰·DOM·CSS recipe·상태 처리의 책임을 나누고 제품에 필요한 조건을 적용합니다.
기준 본문과 항목 계약의 revision을 비교합니다. release는 레지스트리 배포를 식별하므로 서로 다른 배포의 페이지 결과를 섞지 않습니다.
최신 CLI와 로컬 레지스트리를 사용하고 stdio 세션을 재시작합니다. WebMCP는 페이지를 새로 읽어 등록합니다. source는 원시 코드만 출력합니다. 소스 묶음은 DESIGN.md, 테마 키트는 README.md를 KLIC-DESIGN-SYSTEM.json과 함께 읽습니다.
참고 문서의 선택적 채택
외부 문서와 초안은 검토 후보로 취급한다. KLIC의 현재 문제·구현·계약을 확인하고 필요한 규칙만 채택하며, 보류·기각의 이유와 적용 범위를 남긴다.
참고 문서의 제품명·예제 API·출처를 KLIC의 구현 사실로 옮기지 않는다. 채택한 규칙은 실제 토큰·DOM·CSS recipe·상태 처리와 검증 근거에 연결한다.
변경 시 함께 확인할 범위
문제 제기는 관련 사용 경로 전체의 변경 영향을 검토하는 출발점이다. 사용자가 언급한 화면이나 도구만 수정하고 완료로 처리하지 않는다.
- 구현 원본·토큰·컴포넌트·타입·스키마
- DOCS·웹 가이드·개발자 문서·예제
- MCP·CLI·WebMCP·API의 설명·입력·응답
- AI 프롬프트·llms.txt·소스와 테마 내보내기
- 회귀 검사·빌드·운영 배포와 실제 응답
정본을 수정한 뒤 관련 가이드·예제·도구·프롬프트·내보내기를 함께 재생성하고 같은 리비전을 검사한다. 영향을 받지 않는 경로는 이유를 기록하며, 실제 확인한 결과와 남은 미검증 조건을 구분해 보고한다.