claude-design
현재 코드베이스(또는 폴더)를 분석해 "디자인 컨텍스트 브리프"(스택/디자인 토큰/컴포넌트/ 라우트/실제 UI 카피/큐레이션된 에셋/레포 링크)를 합성하고, 그걸…
이미지 placeholder를 동적으로 materialize. Codex 채널에서는 내장 image-generation primitive 호출, Claude Code 채널에서는 omd-asset-curator로 fall back, OpenCode에서는 spec dump. HTML/MD의 `<!-- omd:gen-image -->` 블록을 단일 source of truth로 사용. '이미지 생성해줘', '플레이스홀더 채워줘', '코덱스로 이미지 만들어' 류 트리거.
$ npx -y skills add kwakseongjae/oh-my-design --skill omd-codex-image --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/omd-codex-imageContext preview
The summary Claude sees to decide when to auto-load this skill.
이미지 placeholder를 동적으로 materialize. Codex 채널에서는 내장 image-generation primitive 호출, Claude Code 채널에서는 omd-asset-curator로 fall back, OpenCode에서는 spec dump. HTML/MD의 `<!-- omd:gen-image -->` 블록을 단일 source of truth로 사용. '이미지 생성해줘', '플레이스홀더 채워줘', '코덱스로 이미지 만들어' 류 트리거.
name: omd:codex-image description: "이미지 placeholder를 동적으로 materialize. Codex 채널에서는 내장 image-generation primitive 호출, Claude Code 채널에서는 omd-asset-curator로 fall back, OpenCode에서는 spec dump. HTML/MD의 `<!-- omd:gen-image -->` 블록을 단일 source of truth로 사용. '이미지 생성해줘', '플레이스홀더 채워줘', '코덱스로 이미지 만들어' 류 트리거." user-invocable: true
채널-aware 이미지 materialization 스킬. **하나의 spec format** + **세 가지 downstream 처리**.
문제: oh-my-design이 emit하는 HTML/MD에는 늘 illustration 자리가 비어있다. 채널별 capability가 다르다 — Codex CLI는 내장 image generation을 갖고, Claude Code는 안 가졌고, OpenCode는 user에게 위임한다. 이 차이를 skill 1개로 통합한다.
artifact (HTML, Markdown, JSX, MDX) 안에 다음 주석 블록을 둔다.
<!-- omd:gen-image
filename: assets/karrot-hero.png
prompt: "Karrot mobile home feed screenshot — white canvas, warm near-black headings, single Karrot Orange #FF6600 floating CTA. Mobile portrait, no chrome."
aspect: "16:9"
style: "product screenshot, minimal, mobile"
references:
- https://www.daangn.com/
- https://seed-design.io/
notes: "Single saturated element per viewport. Use brand orange only on the CTA."
-->
<img src="assets/karrot-hero.png" alt="당근 홈 피드의 단일 오렌지 CTA" />규칙:
이 spec은 channel과 무관하다. 채널별 처리는 §1.
호출 envelope의 `channel` (또는 환경 detect — `process.env.OMD_CHANNEL`이나 host agent 식별)에 따라:
Codex CLI는 native image generation을 갖고 있다. 다음 순서:
1. artifact를 Read로 전체 로드 2. `<!-- omd:gen-image ... -->` 블록을 정규식으로 추출 (multiline) 3. 각 블록마다 Codex의 image generation primitive 호출 — 도구명은 host에 따라 다르다 (`generate_image`, `image.create`, `dall_e_image_generation`, `gpt_image_1` 등). Codex agent가 자기 환경에서 사용 가능한 것을 선택한다. 4. 출력 파일을 `filename` 경로에 저장 (mkdir -p) 5. **주석 블록은 그대로 두고** `<img src>`나 `![]()` 경로가 매칭되는지 확인. 안 맞으면 alt 텍스트 보존하면서 src만 교체. 6. 각 처리 항목에 `<!-- omd:gen-image:done at=<ISO timestamp> by=codex -->` 주석을 spec 블록 아래에 1줄 추가.
generation 실패 시: spec 블록은 그대로, `<!-- omd:gen-image:error reason="..." -->` 추가. 다음 호출이 재시도 가능하도록.
prompt 보강 (Codex가 좋은 결과를 내려면):
Claude Code는 native image generation이 없다. 대신 `omd-asset-curator` 스킬로 라우팅:
1. spec 블록을 추출 2. 각 블록을 omd-asset-curator의 spec 형식으로 변환:
3. asset-curator가 free-license 자원에서 매칭 (DiceBear avatars, Lucide icons, Picsum CC0 photos, unDraw SVG 등) 또는 인라인 SVG를 생성해 `filename`에 저장 4. spec 블록 그대로 두고 `<!-- omd:gen-image:done at=<ISO> by=asset-curator source=<url> -->` 추가 5. **사용자에게 1줄 알림**: "Claude Code에서는 free-license fallback을 적용했어요. 더 정확한 이미지는 Codex 채널에서 generate하면 돼요."
OpenCode는 image generation도, asset-curator도 자동으로 못 돌린다. user-in-the-loop:
1. spec 블록을 추출 2. terminal에 `## Image generation queue` 섹션을 emit:
3개 이미지를 수동으로 생성/소싱해서 다음 경로에 두세요:
1. assets/karrot-hero.png (16:9)
prompt: "Karrot mobile home feed — single orange CTA..."
refs: https://www.daangn.com/
2. ...3. spec 블록은 그대로 두고 done 주석은 user 확인 후에만 추가
artifact를 처리할 때 항상 우선순위:
Codex native gen ──┐
├─► success → done 주석 추가
asset-curator ──┘
│
└─► fail → user-queue (OpenCode 식 prompt)각 단계 실패는 다음 단계로 escalate. 마지막 단계도 실패하면 error 주석 + 사용자에게 명시.
이 스킬은 같은 artifact에 여러 번 돌려도 안전해야 한다.
처리 끝에 한 줄 요약:
✓ 4 images materialized (codex) · 0 skipped · 0 errors
→ experiments/2026-05-19/karrot/assets/{hero,one-color,grid,detail}.png또는 fallback이 섞였을 때:
✓ 2 codex · 2 asset-curator fallback · 1 user-queue
agent: omd-codex-image inputs: artifact_path: experiments/2026-05-19/karrot/landing.html channel: codex # 또는 claude-code | opencode | auto force: false # done 주석 무시하고 재생성 dry_run: false # spec parse만 하고 generation 안 함
`channel: auto`면 env 또는 host detection으로 분기.
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…