oh-my-design-cli 1.3.8 → 1.5.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.
- package/README.ja.md +8 -8
- package/README.ko.md +28 -7
- package/README.md +71 -16
- package/README.zh-TW.md +8 -8
- package/agents/omd-asset-curator.md +2 -7
- package/agents/omd-codex-image.md +49 -0
- package/agents/omd-designer-review.md +38 -0
- package/agents/omd-final-qa.md +40 -0
- package/agents/omd-kr-writer.md +35 -0
- package/agents/omd-locale-adapter.md +32 -0
- package/agents/omd-master.md +3 -13
- package/agents/omd-orchestrator.md +34 -0
- package/data/reference-audits/2026-05-14-kr10.md +72 -0
- package/data/reference-audits/2026-05-15-kr10.md +124 -0
- package/data/reference-fingerprints.json +253 -3
- package/data/research/2026-05-18-agent-landscape.md +69 -0
- package/data/research/2026-05-18-kr-style-presets.md +572 -0
- package/dist/bin/oh-my-design.js +6 -3
- package/dist/bin/oh-my-design.js.map +1 -1
- package/dist/{install-skills-MVXVXYAY.js → install-skills-IETT2TBJ.js} +91 -8
- package/dist/install-skills-IETT2TBJ.js.map +1 -0
- package/package.json +9 -3
- package/skills/omd-apply/SKILL.md +0 -1
- package/skills/omd-codex-image/SKILL.md +162 -0
- package/skills/omd-designer-review/SKILL.md +146 -0
- package/skills/omd-final-qa/SKILL.md +153 -0
- package/skills/omd-kr-writer/SKILL.md +229 -0
- package/skills/omd-locale-adapter/SKILL.md +124 -0
- package/skills/omd-orchestrator/SKILL.md +124 -0
- package/web/references/29cm/DESIGN.md +11 -2
- package/web/references/ably/DESIGN.md +12 -2
- package/web/references/airbnb/DESIGN.md +17 -2
- package/web/references/airtable/DESIGN.md +20 -0
- package/web/references/apple/DESIGN.md +17 -2
- package/web/references/baemin/DESIGN.md +11 -2
- package/web/references/banksalad/DESIGN.md +17 -2
- package/web/references/bmw/DESIGN.md +14 -0
- package/web/references/bunjang/DESIGN.md +308 -0
- package/web/references/cal/DESIGN.md +14 -0
- package/web/references/catchtable/DESIGN.md +262 -0
- package/web/references/channeltalk/DESIGN.md +374 -0
- package/web/references/classum/DESIGN.md +217 -0
- package/web/references/claude/DESIGN.md +11 -2
- package/web/references/clay/DESIGN.md +19 -0
- package/web/references/clickhouse/DESIGN.md +19 -0
- package/web/references/cohere/DESIGN.md +20 -0
- package/web/references/coinbase/DESIGN.md +14 -0
- package/web/references/composio/DESIGN.md +14 -0
- package/web/references/coupang/DESIGN.md +17 -2
- package/web/references/cursor/DESIGN.md +20 -0
- package/web/references/dabang/DESIGN.md +210 -0
- package/web/references/dcard/DESIGN.md +11 -2
- package/web/references/elevenlabs/DESIGN.md +20 -0
- package/web/references/expo/DESIGN.md +20 -0
- package/web/references/fastcampus/DESIGN.md +460 -0
- package/web/references/ferrari/DESIGN.md +14 -0
- package/web/references/figma/DESIGN.md +17 -2
- package/web/references/flex/DESIGN.md +309 -0
- package/web/references/framer/DESIGN.md +20 -0
- package/web/references/freee/DESIGN.md +16 -2
- package/web/references/gangnamunni/DESIGN.md +18 -2
- package/web/references/gmarket/DESIGN.md +464 -0
- package/web/references/hashicorp/DESIGN.md +19 -0
- package/web/references/ibm/DESIGN.md +20 -0
- package/web/references/inflearn/DESIGN.md +396 -0
- package/web/references/intercom/DESIGN.md +14 -0
- package/web/references/jumpit/DESIGN.md +366 -0
- package/web/references/kakao/DESIGN.md +14 -0
- package/web/references/kakaobank/DESIGN.md +17 -2
- package/web/references/kakaopay/DESIGN.md +17 -2
- package/web/references/karrot/DESIGN.md +16 -2
- package/web/references/kbank/DESIGN.md +195 -0
- package/web/references/kraken/DESIGN.md +14 -0
- package/web/references/krds/DESIGN.md +17 -2
- package/web/references/kream/DESIGN.md +382 -0
- package/web/references/kurly/DESIGN.md +11 -2
- package/web/references/lamborghini/DESIGN.md +14 -0
- package/web/references/line/DESIGN.md +17 -2
- package/web/references/linear.app/DESIGN.md +17 -2
- package/web/references/lovable/DESIGN.md +14 -0
- package/web/references/lunit/DESIGN.md +249 -0
- package/web/references/mercari/DESIGN.md +11 -2
- package/web/references/minimax/DESIGN.md +14 -0
- package/web/references/mintlify/DESIGN.md +14 -0
- package/web/references/miro/DESIGN.md +20 -0
- package/web/references/mistral.ai/DESIGN.md +20 -0
- package/web/references/mongodb/DESIGN.md +19 -0
- package/web/references/musinsa/DESIGN.md +11 -2
- package/web/references/naver/DESIGN.md +17 -2
- package/web/references/notion/DESIGN.md +11 -2
- package/web/references/nvidia/DESIGN.md +11 -2
- package/web/references/ohouse/DESIGN.md +11 -2
- package/web/references/oliveyoung/DESIGN.md +342 -0
- package/web/references/ollama/DESIGN.md +14 -0
- package/web/references/opencode.ai/DESIGN.md +20 -0
- package/web/references/pinkoi/DESIGN.md +11 -2
- package/web/references/pinterest/DESIGN.md +19 -0
- package/web/references/posthog/DESIGN.md +20 -0
- package/web/references/qanda/DESIGN.md +11 -2
- package/web/references/raycast/DESIGN.md +19 -0
- package/web/references/remember/DESIGN.md +17 -2
- package/web/references/renault/DESIGN.md +14 -0
- package/web/references/replicate/DESIGN.md +14 -0
- package/web/references/resend/DESIGN.md +20 -0
- package/web/references/revolut/DESIGN.md +14 -0
- package/web/references/ridi/DESIGN.md +11 -2
- package/web/references/runwayml/DESIGN.md +14 -0
- package/web/references/sanity/DESIGN.md +20 -0
- package/web/references/sentry/DESIGN.md +14 -0
- package/web/references/socar/DESIGN.md +17 -2
- package/web/references/spacex/DESIGN.md +11 -2
- package/web/references/spotify/DESIGN.md +14 -0
- package/web/references/stripe/DESIGN.md +11 -2
- package/web/references/supabase/DESIGN.md +20 -0
- package/web/references/superhuman/DESIGN.md +20 -0
- package/web/references/tesla/DESIGN.md +11 -2
- package/web/references/together.ai/DESIGN.md +20 -0
- package/web/references/toss/DESIGN.md +16 -2
- package/web/references/toss-securities/DESIGN.md +193 -0
- package/web/references/tving/DESIGN.md +259 -0
- package/web/references/uber/DESIGN.md +19 -0
- package/web/references/upbit/DESIGN.md +276 -0
- package/web/references/upstage/DESIGN.md +214 -0
- package/web/references/vercel/DESIGN.md +17 -2
- package/web/references/voltagent/DESIGN.md +14 -0
- package/web/references/wadiz/DESIGN.md +344 -0
- package/web/references/wanted/DESIGN.md +16 -2
- package/web/references/warp/DESIGN.md +14 -0
- package/web/references/webflow/DESIGN.md +14 -0
- package/web/references/wise/DESIGN.md +19 -0
- package/web/references/x.ai/DESIGN.md +14 -0
- package/web/references/yanolja/DESIGN.md +17 -2
- package/web/references/yeogiotte/DESIGN.md +18 -2
- package/web/references/zapier/DESIGN.md +20 -0
- package/web/references/zigbang/DESIGN.md +12 -2
- package/web/references/zigzag/DESIGN.md +17 -2
- package/agents/omd-3d-blender.md +0 -269
- package/dist/install-skills-MVXVXYAY.js.map +0 -1
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schema_version": 1,
|
|
3
|
-
"generated_at": "2026-05-
|
|
3
|
+
"generated_at": "2026-05-15T00:00:00Z",
|
|
4
4
|
"generator": "oh-my-design parallel agent extraction (Claude Code Agent tool, no API key)",
|
|
5
|
-
"count":
|
|
5
|
+
"count": 107,
|
|
6
6
|
"items": [
|
|
7
7
|
{
|
|
8
8
|
"id": "airbnb",
|
|
@@ -2113,6 +2113,256 @@
|
|
|
2113
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
2114
|
"has_personas": true,
|
|
2115
2115
|
"category_raw": "Commerce / Women's Fashion Discovery"
|
|
2116
|
+
},
|
|
2117
|
+
{
|
|
2118
|
+
"id": "kream",
|
|
2119
|
+
"primary_color_hex": "#000000",
|
|
2120
|
+
"category": "E-commerce",
|
|
2121
|
+
"visual_theme": "Sneaker-culture editorial — monochrome 0/100 chrome, fixed 1280px shop canvas, bold tabular price typography, no-shadow card grid.",
|
|
2122
|
+
"voice_fingerprint": {
|
|
2123
|
+
"register": "editorial-direct"
|
|
2124
|
+
},
|
|
2125
|
+
"signature_motion": "Hover state crossfade on card thumbnail; 1-frame opacity reveal for sold-out chips.",
|
|
2126
|
+
"has_personas": true,
|
|
2127
|
+
"category_raw": "Marketplace / Limited-edition Sneaker Trading",
|
|
2128
|
+
"country": "KR"
|
|
2129
|
+
},
|
|
2130
|
+
{
|
|
2131
|
+
"id": "upbit",
|
|
2132
|
+
"primary_color_hex": "#093687",
|
|
2133
|
+
"category": "Fintech",
|
|
2134
|
+
"visual_theme": "Dense crypto exchange — KR up=red/down=blue inverted from US, navy chrome, 28px speed-fill tags, legacy Dotum/돋움 fallback chain unpruned.",
|
|
2135
|
+
"voice_fingerprint": {
|
|
2136
|
+
"register": "data-dense-neutral"
|
|
2137
|
+
},
|
|
2138
|
+
"signature_motion": "Tick-by-tick price flash (200ms red/blue), candle-chart redraw on resize, no easing on numeric updates.",
|
|
2139
|
+
"has_personas": true,
|
|
2140
|
+
"category_raw": "Crypto Exchange (Dunamu)",
|
|
2141
|
+
"country": "KR"
|
|
2142
|
+
},
|
|
2143
|
+
{
|
|
2144
|
+
"id": "kbank",
|
|
2145
|
+
"primary_color_hex": "#0046ff",
|
|
2146
|
+
"category": "Fintech",
|
|
2147
|
+
"visual_theme": "Neobank minimal — electric blue CTA on near-white, font-size:0 image-replacement H1, fixed 1280px desktop, no landmark a11y.",
|
|
2148
|
+
"voice_fingerprint": {
|
|
2149
|
+
"register": "trustworthy-direct"
|
|
2150
|
+
},
|
|
2151
|
+
"signature_motion": "Subtle button press depth change; modal entry fade-in 200ms.",
|
|
2152
|
+
"has_personas": true,
|
|
2153
|
+
"category_raw": "Internet-only Bank",
|
|
2154
|
+
"country": "KR"
|
|
2155
|
+
},
|
|
2156
|
+
{
|
|
2157
|
+
"id": "inflearn",
|
|
2158
|
+
"primary_color_hex": "#00c471",
|
|
2159
|
+
"category": "Productivity",
|
|
2160
|
+
"visual_theme": "Mantine UI app with green scale override — two radius families (8px cards, 32px nav pills, 999px green search pill), Pretendard-first, no custom display face.",
|
|
2161
|
+
"voice_fingerprint": {
|
|
2162
|
+
"register": "approachable-instructor"
|
|
2163
|
+
},
|
|
2164
|
+
"signature_motion": "Card hover lift 2px; tag-chip alpha fade; focus ring 2px green outline.",
|
|
2165
|
+
"has_personas": true,
|
|
2166
|
+
"category_raw": "EdTech / Online Courses",
|
|
2167
|
+
"country": "KR"
|
|
2168
|
+
},
|
|
2169
|
+
{
|
|
2170
|
+
"id": "wadiz",
|
|
2171
|
+
"primary_color_hex": "#00c4c4",
|
|
2172
|
+
"category": "Fintech",
|
|
2173
|
+
"visual_theme": "Crowdfunding mint — saturated #00c4c4 CTAs with 2.7:1 contrast trade-off, single source-of-truth 936KB CSS bundle, `-하기` gerund + `~해요` polite-casual voice patterns.",
|
|
2174
|
+
"voice_fingerprint": {
|
|
2175
|
+
"register": "campaign-encouraging"
|
|
2176
|
+
},
|
|
2177
|
+
"signature_motion": "Funding-progress bar fill on viewport entry; 'XX%' counter rollup over 800ms.",
|
|
2178
|
+
"has_personas": true,
|
|
2179
|
+
"category_raw": "Crowdfunding Platform",
|
|
2180
|
+
"country": "KR"
|
|
2181
|
+
},
|
|
2182
|
+
{
|
|
2183
|
+
"id": "channeltalk",
|
|
2184
|
+
"primary_color_hex": "#4f46e5",
|
|
2185
|
+
"category": "Productivity",
|
|
2186
|
+
"visual_theme": "Global B2B SaaS chat — open-source Bezier DS (MIT) with Inter + Noto KR/JP stacks, marketing-vs-product type cliff (marketing 48-64px / product 36px max).",
|
|
2187
|
+
"voice_fingerprint": {
|
|
2188
|
+
"register": "crisp-saas-confident"
|
|
2189
|
+
},
|
|
2190
|
+
"signature_motion": "Bubble pop-in spring; typing-indicator 3-dot 1.2s loop; unread badge bounce on increment.",
|
|
2191
|
+
"has_personas": true,
|
|
2192
|
+
"category_raw": "B2B SaaS / Customer Messaging",
|
|
2193
|
+
"country": "KR",
|
|
2194
|
+
"has_official_ds": true,
|
|
2195
|
+
"ds_name": "Bezier",
|
|
2196
|
+
"ds_url": "https://github.com/channel-io/bezier-react"
|
|
2197
|
+
},
|
|
2198
|
+
{
|
|
2199
|
+
"id": "lunit",
|
|
2200
|
+
"primary_color_hex": "#1032cf",
|
|
2201
|
+
"category": "Consumer",
|
|
2202
|
+
"visual_theme": "Medical AI corporate — signature blue withheld from primary CTA (CTA is black pill #000 r=100px); binary radius thesis 0px/100px; LIGHT-weight Lexend/ClashGrotesk anti-pharma.",
|
|
2203
|
+
"voice_fingerprint": {
|
|
2204
|
+
"register": "clinical-authoritative"
|
|
2205
|
+
},
|
|
2206
|
+
"signature_motion": "AOS scroll-in fades only; no hover micro-interactions; carousel snap-scroll.",
|
|
2207
|
+
"has_personas": true,
|
|
2208
|
+
"category_raw": "Medical Imaging AI",
|
|
2209
|
+
"country": "KR"
|
|
2210
|
+
},
|
|
2211
|
+
{
|
|
2212
|
+
"id": "bunjang",
|
|
2213
|
+
"primary_color_hex": "#d80c18",
|
|
2214
|
+
"category": "E-commerce",
|
|
2215
|
+
"visual_theme": "C2C marketplace red — single red (#d80c18, one job: primary CTA), specialty token ladders (care=amber, safe=indigo) literally encoding product taxonomy, zero box-shadow.",
|
|
2216
|
+
"voice_fingerprint": {
|
|
2217
|
+
"register": "casual-marketplace"
|
|
2218
|
+
},
|
|
2219
|
+
"signature_motion": "Card thumbnail crossfade; like-heart fill animation; sold-out diagonal stripe overlay.",
|
|
2220
|
+
"has_personas": true,
|
|
2221
|
+
"category_raw": "C2C Used Marketplace",
|
|
2222
|
+
"country": "KR"
|
|
2223
|
+
},
|
|
2224
|
+
{
|
|
2225
|
+
"id": "flex",
|
|
2226
|
+
"primary_color_hex": "#000000",
|
|
2227
|
+
"category": "Productivity",
|
|
2228
|
+
"visual_theme": "HR SaaS Stitches/CSS-in-JS stack — 0 namespaced :root tokens (tokens normalized from computed-style), Toss-adjacent KR voice tone, monochrome dashboard chrome.",
|
|
2229
|
+
"voice_fingerprint": {
|
|
2230
|
+
"register": "toss-adjacent-friendly"
|
|
2231
|
+
},
|
|
2232
|
+
"signature_motion": "Entry fade observed live; modal slide-in from right; table row hover bg shift.",
|
|
2233
|
+
"has_personas": true,
|
|
2234
|
+
"category_raw": "HR SaaS / Workforce Management",
|
|
2235
|
+
"country": "KR"
|
|
2236
|
+
},
|
|
2237
|
+
{
|
|
2238
|
+
"id": "classum",
|
|
2239
|
+
"primary_color_hex": "#ff4438",
|
|
2240
|
+
"category": "Productivity",
|
|
2241
|
+
"visual_theme": "EdTech classroom collab — Webflow class-driven (no :root vars), 14px Korean body density at WCAG floor, brand red == destructive (downstream split needed).",
|
|
2242
|
+
"voice_fingerprint": {
|
|
2243
|
+
"register": "warm-classroom"
|
|
2244
|
+
},
|
|
2245
|
+
"signature_motion": "Post-reply expand 250ms; reaction emoji pop spring; threaded indent slide-in.",
|
|
2246
|
+
"has_personas": true,
|
|
2247
|
+
"category_raw": "EdTech / Classroom Communication",
|
|
2248
|
+
"country": "KR"
|
|
2249
|
+
},
|
|
2250
|
+
{
|
|
2251
|
+
"id": "toss-securities",
|
|
2252
|
+
"primary_color_hex": "#3182f6",
|
|
2253
|
+
"category": "Fintech",
|
|
2254
|
+
"visual_theme": "Dark-mode-first trading chrome (#101013→#202025), KR-finance locale inversion (red=up, blue=down, #3182f6 doubles as fill-brand-default CTA), 2-tier radius (8/32), zero box-shadow, 416 :root CSS vars in --tw-semantic-*/--wts-adaptive-* namespaces.",
|
|
2255
|
+
"voice_fingerprint": {
|
|
2256
|
+
"register": "toss-direct-trading"
|
|
2257
|
+
},
|
|
2258
|
+
"signature_motion": "Tick price flash, candle redraw on resize.",
|
|
2259
|
+
"has_personas": true,
|
|
2260
|
+
"category_raw": "Securities Trading (Toss Securities)",
|
|
2261
|
+
"country": "KR"
|
|
2262
|
+
},
|
|
2263
|
+
{
|
|
2264
|
+
"id": "oliveyoung",
|
|
2265
|
+
"primary_color_hex": "#000000",
|
|
2266
|
+
"category": "E-commerce",
|
|
2267
|
+
"visual_theme": "Dual-stack architecture (legacy JSP grayscale chrome + Next.js subtree on product detail), five-flag taxonomy: sale #F65C60 / 오늘드림 #F374B7 / 쿠폰 #9BCE26 / 증정 #6FCFF7 / best #F05A5E — all 9px radius pills inside thumbnail. Brand Olive Green absent from storefront chrome.",
|
|
2268
|
+
"voice_fingerprint": {
|
|
2269
|
+
"register": "omnichannel-beauty"
|
|
2270
|
+
},
|
|
2271
|
+
"signature_motion": "Card thumbnail crossfade, flag pill fade-in, cart drawer slide.",
|
|
2272
|
+
"has_personas": true,
|
|
2273
|
+
"category_raw": "Beauty Commerce (H&B Omnichannel)",
|
|
2274
|
+
"country": "KR"
|
|
2275
|
+
},
|
|
2276
|
+
{
|
|
2277
|
+
"id": "gmarket",
|
|
2278
|
+
"primary_color_hex": "#ffd200",
|
|
2279
|
+
"category": "E-commerce",
|
|
2280
|
+
"visual_theme": "Veteran 2000-founded open marketplace post-Shinsegae rebrand. Smile Yellow #ffd200 + 247 :root CSS vars (10-hue × 10-stop ladders + Club Smile + Event + Service-accent sub-systems). Fixed 1200px canvas (WCAG fail on desktop, mitigated by m.gmarket).",
|
|
2281
|
+
"voice_fingerprint": {
|
|
2282
|
+
"register": "casual-marketplace"
|
|
2283
|
+
},
|
|
2284
|
+
"signature_motion": "Banner carousel auto-rotate, sprite-based icon animation.",
|
|
2285
|
+
"has_personas": true,
|
|
2286
|
+
"category_raw": "Legacy E-commerce (Shinsegae)",
|
|
2287
|
+
"country": "KR"
|
|
2288
|
+
},
|
|
2289
|
+
{
|
|
2290
|
+
"id": "tving",
|
|
2291
|
+
"primary_color_hex": "#FF153C",
|
|
2292
|
+
"category": "Consumer Tech",
|
|
2293
|
+
"visual_theme": "CJ ENM OTT streaming — dark canvas, brand red #FF153C primary CTA, six-category --color-cate-* taxonomy, mobile-first poster card grid, 114 :root CSS custom properties.",
|
|
2294
|
+
"voice_fingerprint": {
|
|
2295
|
+
"register": "streaming-bold"
|
|
2296
|
+
},
|
|
2297
|
+
"signature_motion": "Hero auto-play 5s loop, card hover scale, episode list slide.",
|
|
2298
|
+
"has_personas": true,
|
|
2299
|
+
"category_raw": "OTT Streaming (CJ ENM)",
|
|
2300
|
+
"country": "KR"
|
|
2301
|
+
},
|
|
2302
|
+
{
|
|
2303
|
+
"id": "catchtable",
|
|
2304
|
+
"primary_color_hex": "#FF3D00",
|
|
2305
|
+
"category": "Consumer Tech",
|
|
2306
|
+
"visual_theme": "Single-CTA orange (#FF3D00, 4× in 3000-element scan) — hard-square 0px chrome on 92% of elements, 150% line-height uniform across 35 typography slots, 145 :root vanilla-extract _11bicz7* vars.",
|
|
2307
|
+
"voice_fingerprint": {
|
|
2308
|
+
"register": "curatorial-warm"
|
|
2309
|
+
},
|
|
2310
|
+
"signature_motion": "Slot booking modal slide, calendar date-pick spring.",
|
|
2311
|
+
"has_personas": true,
|
|
2312
|
+
"category_raw": "F&B Booking",
|
|
2313
|
+
"country": "KR"
|
|
2314
|
+
},
|
|
2315
|
+
{
|
|
2316
|
+
"id": "upstage",
|
|
2317
|
+
"primary_color_hex": "#D2FF95",
|
|
2318
|
+
"category": "AI",
|
|
2319
|
+
"visual_theme": "AI corporate identity — Espeak proprietary face on hero, Solar lime accent #D2FF95 single-use, industry-rotating hero (font-family shifts not color/weight), 74 :root vars, brand resource center with logo/symbol only (no token tables).",
|
|
2320
|
+
"voice_fingerprint": {
|
|
2321
|
+
"register": "research-confident"
|
|
2322
|
+
},
|
|
2323
|
+
"signature_motion": "Hero industry-text rotate, font-family swap not color.",
|
|
2324
|
+
"has_personas": true,
|
|
2325
|
+
"category_raw": "AI / LLM (Solar)",
|
|
2326
|
+
"country": "KR"
|
|
2327
|
+
},
|
|
2328
|
+
{
|
|
2329
|
+
"id": "dabang",
|
|
2330
|
+
"primary_color_hex": "#FF3478",
|
|
2331
|
+
"category": "Consumer Tech",
|
|
2332
|
+
"visual_theme": "Real-estate listing platform — brand pink #FF3478 restricted to wordmark (3.4:1 fails AA body), 8-hue × 10-step ladder + -rgb variants (140 :root vars), Pretendard Variable 100%, zero box-shadow 100%, action blue #326CF9.",
|
|
2333
|
+
"voice_fingerprint": {
|
|
2334
|
+
"register": "trust-direct-property"
|
|
2335
|
+
},
|
|
2336
|
+
"signature_motion": "Map pin cluster zoom, listing card flip.",
|
|
2337
|
+
"has_personas": true,
|
|
2338
|
+
"category_raw": "Real Estate Listings (Station3)",
|
|
2339
|
+
"country": "KR"
|
|
2340
|
+
},
|
|
2341
|
+
{
|
|
2342
|
+
"id": "jumpit",
|
|
2343
|
+
"primary_color_hex": "#00DD6D",
|
|
2344
|
+
"category": "Productivity",
|
|
2345
|
+
"visual_theme": "Developer-jobs platform (Saramin) — one-green discipline: #00DD6D appears exactly twice in chrome across 112 samples, primary CTA is #000 (opposite to Wanted/Toss pattern). styled-components hashed classes, zero :root design tokens exposed.",
|
|
2346
|
+
"voice_fingerprint": {
|
|
2347
|
+
"register": "developer-vernacular"
|
|
2348
|
+
},
|
|
2349
|
+
"signature_motion": "Job card hover lift, filter chip toggle.",
|
|
2350
|
+
"has_personas": true,
|
|
2351
|
+
"category_raw": "Developer Recruiting (Saramin)",
|
|
2352
|
+
"country": "KR"
|
|
2353
|
+
},
|
|
2354
|
+
{
|
|
2355
|
+
"id": "fastcampus",
|
|
2356
|
+
"primary_color_hex": "#fc1c49",
|
|
2357
|
+
"category": "Education",
|
|
2358
|
+
"visual_theme": "Rich-color signature (yellow/orange/red/pink/blue/green Material ramps) vs single-mint Inflearn / institutional-blue Classum. Commerce-red #fc1c49 doubles as primary + sale-flag + inline-validation-error. Inverted GNB density (12px/600 secondary-compact + 16px/400 primary). Card geometry 4px 4px 0 0 + rank badge 4px 0 corner-only. 103 :root vars in --fds-color-*/--c-primary-*/--fds-semantic-* namespaces.",
|
|
2359
|
+
"voice_fingerprint": {
|
|
2360
|
+
"register": "approachable-instructor"
|
|
2361
|
+
},
|
|
2362
|
+
"signature_motion": "Category tab slide, course card hover scale.",
|
|
2363
|
+
"has_personas": true,
|
|
2364
|
+
"category_raw": "EdTech (Day1Company)",
|
|
2365
|
+
"country": "KR"
|
|
2116
2366
|
}
|
|
2117
2367
|
]
|
|
2118
|
-
}
|
|
2368
|
+
}
|
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
# omd v0.2 agent landscape — 2026-05-18
|
|
2
|
+
|
|
3
|
+
오 마이 디자인의 multi-agent layer를 구축하기 위해 조사한 supervisor / orchestration 패턴 정리.
|
|
4
|
+
|
|
5
|
+
## 1. Supervisor 토폴로지 비교
|
|
6
|
+
|
|
7
|
+
| 패턴 | 출처 | 특징 | omd 적합도 |
|
|
8
|
+
|---|---|---|---|
|
|
9
|
+
| **Supervisor (router)** | LangGraph `create_supervisor` | 중앙 LLM이 다음 worker를 routing. State는 graph로 명시. 2-round revision cap 명시적. | ★★★★★ |
|
|
10
|
+
| **Hierarchical crew** | CrewAI `Crew(process=hierarchical)` | Manager agent + worker pool. Manager가 task 위임. 단점: 무한 루프 가능. | ★★★ |
|
|
11
|
+
| **Orchestrator-workers** | Anthropic "Building effective agents" (2024-12) + multi-agent coordination 블로그 | Lead agent가 subagent 병렬 spawn. Synthesize → critic loop. **Anthropic 자체 권장 패턴**. | ★★★★★ |
|
|
12
|
+
| **Swarm (handoff)** | OpenAI Swarm (deprecated → Agents SDK) | Peer-to-peer handoff. 중앙 supervisor 없음. 추적 어려움. | ★★ |
|
|
13
|
+
|
|
14
|
+
**채택: Anthropic orchestrator-workers + LangGraph supervisor의 revision-cap 패턴.** Claude Code의 subagent 호출 메커니즘이 이미 orchestrator-workers와 1:1 매핑되므로 별도 런타임 deps 불필요.
|
|
15
|
+
|
|
16
|
+
## 2. Anti-pattern (실측 사례)
|
|
17
|
+
|
|
18
|
+
- "Looks good!" rubber-stamp critic — Critic이 LLM이면 sycophancy 발생. → **Rubric을 closed checklist로 강제**, "looks good" 응답 금지.
|
|
19
|
+
- 무한 revision loop — Cap 없이 두면 cost runaway. → **2-round hard cap**, 미해결 시 verdict=BLOCK 으로 escalate.
|
|
20
|
+
- Critic이 직접 artifact 수정 — Critic-writer 경계 붕괴. → **omd-final-qa는 read-only**, feedback만 emit.
|
|
21
|
+
- DESIGN.md를 re-read 안 하고 stamping — Memory hallucination. → 각 review마다 DESIGN.md 강제 재독.
|
|
22
|
+
|
|
23
|
+
## 3. 한국어 voice preset taxonomy (parallel agent 결과: `2026-05-18-kr-style-presets.md`)
|
|
24
|
+
|
|
25
|
+
요약: 6개 preset.
|
|
26
|
+
- `toss-tech-design` — `-요` 종결, 35~50자 문장, 5500자+
|
|
27
|
+
- `karrot-neighborly` — 더 짧고 친근, 이웃 호칭
|
|
28
|
+
- `brunch-maker-popular` — 1인칭 에세이, 감정 표현 허용
|
|
29
|
+
- `biz-formal-report` — `-습니다` 격식체, 결론 우선
|
|
30
|
+
- `academic-paper` — `-한다` 평어, 인용 강제
|
|
31
|
+
- `journalism-broadsheet` — `-다` 신문체, 리드문 30자
|
|
32
|
+
|
|
33
|
+
## 4. 한국어 spellcheck 옵션
|
|
34
|
+
|
|
35
|
+
| 라이브러리 | 상태 (2026-05) | 비고 |
|
|
36
|
+
|---|---|---|
|
|
37
|
+
| `py-hanspell` (ssut/py-hanspell) | 2020 이후 unmaintained. 네이버 API endpoint 변경 시 깨짐 | 일단 시도하되 fallback 필수 |
|
|
38
|
+
| `hanspell` 포크들 (`9beach/hanspell`) | 일부 active | CLI 도구 |
|
|
39
|
+
| `pyhanspell-fork` | 비활성 | — |
|
|
40
|
+
| Custom heuristic | 100% deterministic | 외래어 표기, 띄어쓰기 상위 20개 패턴 hard-coded |
|
|
41
|
+
|
|
42
|
+
**채택: heuristic-first + py-hanspell optional.** Network/외부 API 의존을 없애 deterministic하게 동작.
|
|
43
|
+
|
|
44
|
+
## 5. 3-stage 예시 워크플로우
|
|
45
|
+
|
|
46
|
+
사용자: "당근 디자인 시스템 분석 글 작성, KR + EN, 5500자+"
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
omd-orchestrator (supervisor)
|
|
50
|
+
├─ Stage 1: omd-kr-writer (preset=toss-tech-design)
|
|
51
|
+
│ → content/posts/karrot/index.ko.md (draft v1)
|
|
52
|
+
├─ Stage 2: omd-designer-review (artifact + references/karrot/DESIGN.md)
|
|
53
|
+
│ → review-report.md (WARN: 색 budget 위반, FYI: figure 2개 부족)
|
|
54
|
+
├─ Stage 2b: omd-kr-writer revision round 1 (review feedback 반영)
|
|
55
|
+
│ → index.ko.md v2
|
|
56
|
+
├─ Stage 3: omd-locale-adapter (KR → EN, cultural adaptation)
|
|
57
|
+
│ → index.en.md
|
|
58
|
+
├─ Stage 4: omd-final-qa (rubric + omd-kr-spellcheck)
|
|
59
|
+
│ → verdict: PASS (cycle 1, 9/9 rubric items)
|
|
60
|
+
└─ Final: handoff to user
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Revision cap: writer↔review 최대 2 round, 미해결 시 final-qa가 BLOCK + 사용자 escalation.
|
|
64
|
+
|
|
65
|
+
## 6. 미연결 디펜던시 (후속 작업)
|
|
66
|
+
|
|
67
|
+
- omd-orchestrator → omd-asset-curator 연동 (이미지 placeholder 자동 채우기) 미구현
|
|
68
|
+
- omd-locale-adapter의 JP/ZH-TW preset 깊이 부족 (KR-EN만 1차 완성)
|
|
69
|
+
- omd-kr-spellcheck heuristic ruleset 20개만 hard-coded. 사용자 누적 mistake corpus → rule 자동 학습은 v0.3 과제.
|