oh-my-design-cli 1.1.0 → 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schema_version": 1,
3
- "generated_at": "2026-05-11T08:39:03Z",
3
+ "generated_at": "2026-05-13T00:00:00Z",
4
4
  "generator": "oh-my-design parallel agent extraction (Claude Code Agent tool, no API key)",
5
- "count": 78,
5
+ "count": 88,
6
6
  "items": [
7
7
  {
8
8
  "id": "airbnb",
@@ -1824,6 +1824,295 @@
1824
1824
  "signature_motion": "Inset orange underline marks active tabs; sand underline previews hover.",
1825
1825
  "has_personas": false,
1826
1826
  "category_raw": "saas-tool"
1827
+ },
1828
+ {
1829
+ "id": "29cm",
1830
+ "primary_color_hex": "#000000",
1831
+ "category": "Commerce",
1832
+ "visual_theme": "Editorial select-shop magazine on pure white with pure black ink — photography first, oversized margins, Pretendard-only typography, no shadows, no brand color beyond black-on-white.",
1833
+ "voice_fingerprint": {
1834
+ "register": "editorial-curatorial",
1835
+ "sentence_length": "medium",
1836
+ "metaphor_density": "moderate",
1837
+ "vocabulary_register": "korean-dominant"
1838
+ },
1839
+ "tone_keywords": [
1840
+ "editorial",
1841
+ "curated",
1842
+ "calm",
1843
+ "considered",
1844
+ "magazine",
1845
+ "offbeat"
1846
+ ],
1847
+ "antipatterns": [
1848
+ "No 최저가/초특가 or 오늘만 urgency",
1849
+ "No English SHOP NOW exclamations",
1850
+ "No corporate ~합니다 ending on consumer voice"
1851
+ ],
1852
+ "signature_motion": "Color inversion on inverted CTA hover — #000000 ↔ #ffffff with 2px radius, no scale, no shadow.",
1853
+ "has_personas": true,
1854
+ "category_raw": "Commerce / Editorial Select-Shop"
1855
+ },
1856
+ {
1857
+ "id": "ably",
1858
+ "primary_color_hex": "#FA2E5F",
1859
+ "category": "Commerce",
1860
+ "visual_theme": "MZ-coded mobile-first style commerce on white canvas — vibrant pink-coral reserved for commercial pressure (CTA, sale, urgency) while neutrals carry the photography-dense 4-up grid.",
1861
+ "voice_fingerprint": {
1862
+ "register": "informal-stylist-friend",
1863
+ "sentence_length": "short",
1864
+ "metaphor_density": "sparse",
1865
+ "vocabulary_register": "korean-dominant"
1866
+ },
1867
+ "tone_keywords": [
1868
+ "fast",
1869
+ "friendly",
1870
+ "MZ-informal",
1871
+ "image-dense",
1872
+ "personalized",
1873
+ "playful"
1874
+ ],
1875
+ "antipatterns": [
1876
+ "No 오류가 발생했습니다 vague errors",
1877
+ "No formal ~합니다/~십시오 on commerce surfaces",
1878
+ "No 약 ~원 price approximations"
1879
+ ],
1880
+ "signature_motion": "Heart/찜 tap: outline to filled pink with brief scale pulse on the bottom-pinned 구매하기 bar.",
1881
+ "has_personas": true,
1882
+ "category_raw": "Commerce / MZ Style Commerce"
1883
+ },
1884
+ {
1885
+ "id": "banksalad",
1886
+ "primary_color_hex": "#04c584",
1887
+ "category": "Fintech",
1888
+ "visual_theme": "Trustworthy financial advisor on white with warm near-black text and saturated salad-green for all interaction — 2px radius dominance, dense data tables, Pretendard 700 numerals as headings.",
1889
+ "voice_fingerprint": {
1890
+ "register": "calm-advisor",
1891
+ "sentence_length": "medium",
1892
+ "metaphor_density": "sparse",
1893
+ "vocabulary_register": "korean-dominant"
1894
+ },
1895
+ "tone_keywords": [
1896
+ "factual",
1897
+ "advisor",
1898
+ "calm",
1899
+ "data-driven",
1900
+ "explanatory",
1901
+ "precise"
1902
+ ],
1903
+ "antipatterns": [
1904
+ "No 약 ~원 approximations on money",
1905
+ "No 최고의/놀라운 superlatives",
1906
+ "No emoji on financial surfaces",
1907
+ "No 오류가 발생했습니다"
1908
+ ],
1909
+ "signature_motion": "Brand green focus/hover lightens to #10df99 — interaction makes things lighter, never darker; subtle single-layer shadow.",
1910
+ "has_personas": true,
1911
+ "category_raw": "Fintech / Personal Finance Advisor"
1912
+ },
1913
+ {
1914
+ "id": "gangnamunni",
1915
+ "primary_color_hex": "#d54300",
1916
+ "category": "Healthcare",
1917
+ "visual_theme": "Warm medical platform on white with bluegray neutrals and a single saturated orange — hairlines over shadows, exact numerals on hospital and procedure cards, regulatory disclosure as part of trust.",
1918
+ "voice_fingerprint": {
1919
+ "register": "careful-clinician",
1920
+ "sentence_length": "medium",
1921
+ "metaphor_density": "sparse",
1922
+ "vocabulary_register": "korean-dominant"
1923
+ },
1924
+ "tone_keywords": [
1925
+ "informational",
1926
+ "reassuring",
1927
+ "factual",
1928
+ "transparent",
1929
+ "regulatory",
1930
+ "exact"
1931
+ ],
1932
+ "antipatterns": [
1933
+ "No 예뻐지세요! or ✨💖 emoji on medical surfaces",
1934
+ "No 약 ~원 rounded pricing",
1935
+ "No 오류가 발생했습니다",
1936
+ "No consumer-beauty cartoon pinks"
1937
+ ],
1938
+ "signature_motion": "Hospital card hover: 1px #d8dfe6 hairline darkens; orange accent appears only on the booking CTA, never on hover decoration.",
1939
+ "has_personas": true,
1940
+ "category_raw": "Healthcare / Cosmetic-Procedure Discovery"
1941
+ },
1942
+ {
1943
+ "id": "kakaopay",
1944
+ "primary_color_hex": "#FFEB00",
1945
+ "category": "Fintech",
1946
+ "visual_theme": "Warm friendly fintech that feels like a continuation of KakaoTalk — Noto Sans KR on near-white canvas, rounded geometry as brand commitment, Kakao yellow as ecosystem anchor (not default CTA), 3:1 contrast minimum enforced.",
1947
+ "voice_fingerprint": {
1948
+ "register": "polite-conversational",
1949
+ "sentence_length": "short",
1950
+ "metaphor_density": "sparse",
1951
+ "vocabulary_register": "korean-dominant"
1952
+ },
1953
+ "tone_keywords": [
1954
+ "warm",
1955
+ "conversational",
1956
+ "approachable",
1957
+ "inclusive",
1958
+ "rounded",
1959
+ "polite-casual"
1960
+ ],
1961
+ "antipatterns": [
1962
+ "No 고객님께서는/~하시기 바랍니다 institutional Korean",
1963
+ "No 약 ~원 on money",
1964
+ "No 오류가 발생했습니다",
1965
+ "No sharp/aggressive geometry"
1966
+ ],
1967
+ "signature_motion": "Rounded button press: subtle radius-preserving scale-down (0.98) with quiet single-layer shadow at ≤0.08 opacity.",
1968
+ "has_personas": true,
1969
+ "category_raw": "Fintech / Ecosystem Payments"
1970
+ },
1971
+ {
1972
+ "id": "remember",
1973
+ "primary_color_hex": "#000000",
1974
+ "category": "HR",
1975
+ "visual_theme": "Business-card-database-grown-up — near-white surfaces with off-black #222222 body, black as the primary CTA color (B2B professional gravity), signup orange #FF5414 reserved for conversion punches only.",
1976
+ "voice_fingerprint": {
1977
+ "register": "senior-colleague",
1978
+ "sentence_length": "short",
1979
+ "metaphor_density": "sparse",
1980
+ "vocabulary_register": "korean-dominant"
1981
+ },
1982
+ "tone_keywords": [
1983
+ "calm",
1984
+ "concrete",
1985
+ "professional",
1986
+ "B2B",
1987
+ "trusted",
1988
+ "restrained"
1989
+ ],
1990
+ "antipatterns": [
1991
+ "No 불편을 드려 죄송합니다",
1992
+ "No emoji in scout/recruiter messages",
1993
+ "No 약 ~원 on salary numbers",
1994
+ "No mascots or illustration on product surfaces"
1995
+ ],
1996
+ "signature_motion": "Black CTA hover: subtle 1px lift via shadow; orange #FF5414 only appears once per surface at conversion moments.",
1997
+ "has_personas": true,
1998
+ "category_raw": "HR / Business Network + Career Marketplace"
1999
+ },
2000
+ {
2001
+ "id": "socar",
2002
+ "primary_color_hex": "#1d4ed8",
2003
+ "category": "Mobility",
2004
+ "visual_theme": "Calm achromatic car-sharing chrome on pure white with cool-grey #354153 body type — SOCAR Blue reserved for the Space Frame symbol and primary booking CTA, 12/14/16px radius ladder, single-layer soft shadows.",
2005
+ "voice_fingerprint": {
2006
+ "register": "calm-service",
2007
+ "sentence_length": "short",
2008
+ "metaphor_density": "sparse",
2009
+ "vocabulary_register": "korean-dominant"
2010
+ },
2011
+ "tone_keywords": [
2012
+ "calm",
2013
+ "service-confirming",
2014
+ "achromatic",
2015
+ "declarative",
2016
+ "frictionless",
2017
+ "grounded"
2018
+ ],
2019
+ "antipatterns": [
2020
+ "No Revolutionary/Game-changer marketing",
2021
+ "No 새로운 경험을 시작하세요 decoration without action",
2022
+ "No emoji on transactional booking/payment surfaces",
2023
+ "No 오류가 발생했습니다"
2024
+ ],
2025
+ "signature_motion": "Booking CTA hover: SOCAR Blue darkens one step; card lift uses single rgba(0,0,0,0.1) 0 4px 8px shadow, never chromatic stacks.",
2026
+ "has_personas": true,
2027
+ "category_raw": "Mobility / Car-Sharing (SOCAR Blue approximation — exact hex unpublished)"
2028
+ },
2029
+ {
2030
+ "id": "wanted",
2031
+ "primary_color_hex": "#0066FF",
2032
+ "category": "HR",
2033
+ "visual_theme": "Career marketplace as growth mentor — single decisive cobalt #0066FF for interaction only on a warm-white canvas, custom Wanted Sans + Pretendard, 12px-radius JobCard with salary + 합격보상금 visible by structural rule.",
2034
+ "voice_fingerprint": {
2035
+ "register": "career-mentor",
2036
+ "sentence_length": "medium",
2037
+ "metaphor_density": "sparse",
2038
+ "vocabulary_register": "korean-dominant"
2039
+ },
2040
+ "tone_keywords": [
2041
+ "confident",
2042
+ "growth-oriented",
2043
+ "respectful",
2044
+ "factual",
2045
+ "gentle-yet-clear",
2046
+ "precise"
2047
+ ],
2048
+ "antipatterns": [
2049
+ "No 대박 채용/핫한 회사/놓치지 마세요 urgency marketing",
2050
+ "No 약 X만원 salary hedging",
2051
+ "No 오류가 발생했습니다",
2052
+ "No competitive/negotiable in lieu of a range"
2053
+ ],
2054
+ "signature_motion": "JobCard hover: 12px-radius lift with bookmark icon outline→filled transition; brand blue used only on interactive states.",
2055
+ "has_personas": true,
2056
+ "category_raw": "HR / Career Marketplace"
2057
+ },
2058
+ {
2059
+ "id": "zigbang",
2060
+ "primary_color_hex": "#0066ff",
2061
+ "category": "Real Estate",
2062
+ "visual_theme": "Near-monochrome real-estate map tool — near-black #171719 type at weight 400, functional blue #0066ff for action only, brand orange reserved for wordmark, disabled-by-transparency neutrals so the map carries the surface.",
2063
+ "voice_fingerprint": {
2064
+ "register": "regional-analyst",
2065
+ "sentence_length": "short",
2066
+ "metaphor_density": "sparse",
2067
+ "vocabulary_register": "korean-dominant"
2068
+ },
2069
+ "tone_keywords": [
2070
+ "trustworthy",
2071
+ "data-rich",
2072
+ "neutral",
2073
+ "evidence-based",
2074
+ "quiet",
2075
+ "vision-forward"
2076
+ ],
2077
+ "antipatterns": [
2078
+ "No 지금 바로!/놓치지 마세요!/최저가 보장 urgency",
2079
+ "No exclamation marks on routine CTAs",
2080
+ "No stacked superlatives (최고의 프리미엄 매물)",
2081
+ "No 혁신적인 as UI dressing",
2082
+ "No orange on functional UI (brand-mark only)"
2083
+ ],
2084
+ "signature_motion": "Map-floating chrome: 8/10px-radius chips fade to rgba(55,56,60,0.16) on disabled; bookmark toggle is 50% circular outline→filled.",
2085
+ "has_personas": true,
2086
+ "category_raw": "Real Estate / Map-First Proptech"
2087
+ },
2088
+ {
2089
+ "id": "zigzag",
2090
+ "primary_color_hex": "#fa6ee3",
2091
+ "category": "Commerce",
2092
+ "visual_theme": "Mobile-as-canvas fashion playground locked to 600px max-width even on desktop — off-white #f5f6f6 surface, ZIGZAG brand pink #fa6ee3 for wordmark + favorites, interactive pink #f55dd6 for CTAs, coral #fb4333 for alerts.",
2093
+ "voice_fingerprint": {
2094
+ "register": "stylish-friend",
2095
+ "sentence_length": "short",
2096
+ "metaphor_density": "moderate",
2097
+ "vocabulary_register": "korean-dominant"
2098
+ },
2099
+ "tone_keywords": [
2100
+ "energetic",
2101
+ "fashion-fluent",
2102
+ "memorable",
2103
+ "effortless",
2104
+ "inspiring",
2105
+ "contextual"
2106
+ ],
2107
+ "antipatterns": [
2108
+ "No 불편을 드려 죄송합니다",
2109
+ "No 혁신적인/세상에 없던 ad clichés",
2110
+ "No 약 ~원 commerce price approximations",
2111
+ "No desktop multi-column reflow (mobile centred is the brand)"
2112
+ ],
2113
+ "signature_motion": "찜 heart: outline → filled brand pink with brief pulse; primary CTA uses pink-400 fill, darkening to pink-450/550 on hover/press.",
2114
+ "has_personas": true,
2115
+ "category_raw": "Commerce / Women's Fashion Discovery"
1827
2116
  }
1828
2117
  ]
1829
2118
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oh-my-design-cli",
3
- "version": "1.1.0",
3
+ "version": "1.2.0",
4
4
  "description": "Bootstrap oh-my-design skills + agents into your project. After install, talk to your AI coding agent in natural language — no other CLI commands.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -40,7 +40,7 @@ DESIGN.md를 모든 UI/디자인 작업의 권위 있는 컨텍스트로 사용
40
40
  | "이 인터랙션 / 모션 / 포커스 / 모바일 / 지각 성능 / 섹션별 UX 약점" | dispatch `omd-ux-engineer` | 코드 레벨 인터랙션 감사 + fix |
41
41
  | "랜딩 / 메인 화면 / 페이지 *전체*를 전문가 의견으로 개선" | dispatch `omd-ux-writer` + `omd-ux-engineer` (병렬) | 두 트랙 동시 — writing + engineering |
42
42
  | "이게 왜 안 좋은지 critique / postmortem / root cause" | dispatch `omd-critic` | 비판적 분석 |
43
- | "DESIGN.md 만들어 / reference 골라 / 67개 추천" | dispatch `omd-init` skill (또는 omd-add-reference) | reference 매칭 |
43
+ | "DESIGN.md 만들어 / reference 골라 / 카탈로그에서 추천" | dispatch `omd-init` skill (또는 omd-add-reference) | reference 매칭 |
44
44
  | "preference 정리 / 누적된 교정 반영 / DESIGN.md 업데이트" | dispatch `omd-learn` skill | fold-in 로직 |
45
45
  | "이 한 줄 / 이 컬러 / 이 spacing 좀" 단발 명확 | **인라인 처리** | 분명한 단일 변경 |
46
46
  | 위 어디에도 안 맞는 자유로운 디자인 작업 | 인라인 처리 후 Phase 3 (교정 캡처) | 일반 케이스 |
@@ -128,7 +128,7 @@ test -d "${RUN_DIR}" && test -f "${RUN_DIR}/task.md" && echo "OK" || echo "FAIL"
128
128
 
129
129
  다음 파일을 Read 툴로 전체 로드:
130
130
 
131
- - `.claude/data/reference-fingerprints.json` — 67개 reference fingerprint (tone keywords, visual theme, antipatterns, signature motion, has_personas, category)
131
+ - `.claude/data/reference-fingerprints.json` — reference fingerprint (tone keywords, visual theme, antipatterns, signature motion, has_personas, category)
132
132
  - `.claude/data/reference-tags.md` — 사람-읽기용 keyword 매트릭스
133
133
  - `.claude/data/vocabulary.json` — controlled vocab
134
134
 
@@ -160,14 +160,14 @@ DESIGN.md가 없어서 reference 한 개를 골라 부트스트랩할게요. <ta
160
160
 
161
161
  이대로 가시려면 go (또는 <top1.id>).
162
162
  다른 후보: <top2.id> (한 줄 이유) · <top3.id> (...) · <top4.id> (...) · <top5.id> (...)
163
- 본인이 아는 다른 reference면 한 줄로 id만 (예: vercel) — 67개 카탈로그에 없으면 알려드립니다.
163
+ 본인이 아는 다른 reference면 한 줄로 id만 (예: vercel) — reference 카탈로그에 없으면 알려드립니다.
164
164
  ```
165
165
 
166
166
  ### 3.6 사용자 응답 처리
167
167
 
168
168
  - `go` 또는 reference id (top-5 안) → 그 id로 master spawn
169
169
  - 다른 reference id (top-5 밖이지만 카탈로그 안) → 동일하게 진행
170
- - 카탈로그에 없는 id → "해당 id는 67개 카탈로그에 없어요. top-5 중에서 골라주세요."
170
+ - 카탈로그에 없는 id → "해당 id는 reference 카탈로그에 없어요. top-5 중에서 골라주세요."
171
171
  - `중단` → 종료
172
172
 
173
173
  ## Step 4 — Master 호출 (handoff loop)
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: omd:init
3
- description: "프로젝트 루트에 DESIGN.md를 부트스트랩 — 67개 실제 기업 레퍼런스 중 컨텍스트 매칭으로 추천하고 선택된 레퍼런스의 톤&매너를 보존한 variation을 생성. DESIGN.md 부재 상태에서의 UI 작업 또는 '디자인 시스템 세팅', 'set up our design system', 「デザインシステムを作って」, 「建立設計系統」류의 요청에 트리거. CLAUDE.md / AGENTS.md / Cursor rule shim도 함께 설치."
3
+ description: "프로젝트 루트에 DESIGN.md를 부트스트랩 — 실제 기업 레퍼런스 중 컨텍스트 매칭으로 추천하고 선택된 레퍼런스의 톤&매너를 보존한 variation을 생성. DESIGN.md 부재 상태에서의 UI 작업 또는 '디자인 시스템 세팅', 'set up our design system', 「デザインシステムを作って」, 「建立設計系統」류의 요청에 트리거. CLAUDE.md / AGENTS.md / Cursor rule shim도 함께 설치."
4
4
  ---
5
5
 
6
6
  # omd:init — DESIGN.md Bootstrap