claude-design
현재 코드베이스(또는 폴더)를 분석해 "디자인 컨텍스트 브리프"(스택/디자인 토큰/컴포넌트/ 라우트/실제 UI 카피/큐레이션된 에셋/레포 링크)를 합성하고, 그걸…
One full-bleed launch hero in two inks from the project's DESIGN.md: the base color and exactly one brand color, as a slowly folding ordered-dither (Bayer) field — a print/riso look, not a generic gradient. Two flat inks never blend, so there is no mud. The copy sits on a
$ npx -y skills add kwakseongjae/oh-my-design --skill omd-shader-hero --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/omd-shader-heroContext preview
The summary Claude sees to decide when to auto-load this skill.
One full-bleed launch hero in two inks from the project's DESIGN.md: the base color and exactly one brand color, as a slowly folding ordered-dither (Bayer) field — a print/riso look, not a generic gradient. Two flat inks never blend, so there is no mud. The copy sits on a
name: omd-shader-hero description: "One full-bleed launch hero in two inks from the project's DESIGN.md: the base color and exactly one brand color, as a slowly folding ordered-dither (Bayer) field — a print/riso look, not a generic gradient. Two flat inks never blend, so there is no mud. The copy sits on a hard-edged base-ink knockout, so headline and sub copy both clear 4.5:1 by construction, and a verify script measures it across the whole timeline. Reads Core v2 tokens (and Google-compatible frontmatter), refuses to invent a palette, ships a CSS halftone poster fallback, respects prefers-reduced-motion, ~7 KiB gzip of library JS. Use for a launch page, product hero, waitlist, event or rebrand first screen that needs motion in brand color. Triggers: '셰이더 히어로', '런칭 히어로', '디더링 배경', '리소 느낌 히어로', '브랜드 컬러 배경 애니메이션', 'dither hero', 'shader hero from DESIGN.md', 'launch hero background', 'riso print hero', 'シェーダーのヒーロー', '著陸頁主視覺 shader'. Whole scroll-native landing → omd-landing / omd-aphrodite. CJK headline ink effect → omd-cjk-type-shader. Brand tokens missing → omd-init first." argument-hint: "<DESIGN.md path> [--scheme dark|light] — <headline + one line of sub copy>" user-invocable: true
A launch hero gets one look from someone who owes you nothing. Mesh gradients are the most generic shader look on the web, and blending two complementary brand hues turns them brown. This skill does the opposite: **two flat inks**, the base color and one brand color, printed as an ordered-dither field that folds slowly like light through a screen print. Every pixel is one ink or the other, so nothing blends and nothing goes muddy. The copy sits on a hard-edged knockout in the base ink, like a cut-out panel on a riso poster.
The script picks both inks, the text color and the contrast from `DESIGN.md`. No color is chosen by taste.
Working example: [`examples/hero.html`](./examples/hero.html), filled from the fictional [`examples/DESIGN.example.md`](./examples/DESIGN.example.md). Scripts: [`scripts/tokens.mjs`](./scripts/tokens.mjs) (inks + contrast), [`scripts/verify.mjs`](./scripts/verify.mjs) (real-render proof).
Use when:
Don't use when:
1. **Read tokens, don't choose them.**
node <skill>/scripts/tokens.mjs DESIGN.md # prints the decision as JSON node <skill>/scripts/tokens.mjs DESIGN.md --scheme light # light base instead of dark
The script reads three formats, in this order: `- **color.<role>**: \`#hex\`` tokens, `**Name** (\`#hex\`)` pairs inside the Foundations section, then frontmatter `colors:`. Then it:
2. **Text color is computed.** The script checks the text candidates (ink/neutral tokens at the opposite end of the scheme) against both inks and their midpoint and picks the best one. The copy then sits on an **opaque base-ink knockout**, so the bar it must clear is the text token on the base ink. With the fixture that is 18.8:1. If even that is under 4.5:1, the script warns: pick another text token. 3. **Write the hero.** Copy `examples/hero.html` (or port it, see §6) and fill it:
node <skill>/scripts/tokens.mjs DESIGN.md --write path/to/hero.html
That rewrites the `#hero-vars` CSS block (`--hero-c0` base, `--hero-c1` brand, `--hero-text`, `--hero-scrim`, `--hero-scrim-a`) and the `#hero-tokens` JSON. 4. **Copy is real.** Headline + one sentence + one CTA. Use the user's actual product line. Never invent metrics, customers or investors (tf-shaders §0). 5. **Verify on a real GPU** (§5) and look at the frames at full size.
Paper's `ditheringFragmentShader`: `shape = warp` (slow folding bands), `type = 4x4` (ordered Bayer), `colorBack` = base ink, `colorFront` = brand ink.
| Param | Range | Default | What it does | |---|---|---|---| | `speed` (`data-speed`) | 0–1 | 0.3 | Drift of the folds. Above ~0.6 it reads as a screensaver. 0 freezes the field. | | `px` (`data-px`) | 2–6 CSS px | 3 | Dither cell size. 2 = fine screen, 3 = riso, 5–6 = coarse print. |
Layout rules:
Give your AI coding agent a design system. One command installs 500+ quality-graded company DESIGN.md references + skills into Claude Code, Codex, Cursor, and OpenCode. Free, MIT, zero AI calls.
Repo: kwakseongjae/oh-my-design
현재 코드베이스(또는 폴더)를 분석해 "디자인 컨텍스트 브리프"(스택/디자인 토큰/컴포넌트/ 라우트/실제 UI 카피/큐레이션된 에셋/레포 링크)를 합성하고, 그걸…
Reference catalog authoring compatibility gate. Core v2 cutover가 끝나기 전에는 신규 legacy DESIGN.md…
Maximum-craft one-page landing — the wow bar. omd:landing 의 구조 위에 마감(서체 조달·그레인·깊이·색보정·스크롤…
프로젝트 DESIGN.md를 UI/시각 작업의 brand context로 적용. 컴포넌트·색상·폰트·레이아웃 수정 같은 구체적 요청과 톤·분위기 표현 — KR '좀 더…
사용자 product UI 생성 시 placeholder 자리를 generic SVG가 아닌 **실제 free-license CDN 자산**으로 채운다.…
One-prompt autonomous product design and implementation. Use automatically for broad…