$npx -y skills add kwakseongjae/oh-my-design --skill omd-batch-launch10개 brand 일괄 reference 추가 + 문서 카운트 sync + hyperframes 기반 promo MP4 생성. '10개씩 추천해줘', '한국 IT 10개 추가하고 영상까지', 'batch-launch', 'X 카테고리에서 10개 더' 류 트리거. 매 회 reference count +10, gitignored promo video 1편.
| 1 | # omd:batch-launch |
| 2 | |
| 3 | omd 카탈로그에 **한 번에 10개**의 brand reference를 추가하고, 동시에 SNS(스레드/X/링크드인)에 그대로 올릴 수 있는 **30초+ 프로모 MP4**를 만드는 3-phase 파이프라인. |
| 4 | |
| 5 | **왜 스킬화 했나**: 사용자가 "10개씩" 요청을 반복할 예정이라 매번 (1) 후보 큐레이션 (2) reference build (3) 문서 카운트 갱신 (4) 영상 합성을 일관 포맷으로 돌려야 한다. 매 회 의사결정 흔들림 없이 같은 산출물 → 시리즈가 일관된 톤을 가지게 됨. |
| 6 | |
| 7 | --- |
| 8 | |
| 9 | ## Phase 1 — Recommend (큐레이션) |
| 10 | |
| 11 | ### 입력 파싱 |
| 12 | - `[category|theme]` 자유 텍스트. 예: "한국 IT 대기업", "AI 스타트업", "글로벌 핀테크", "디자인 스튜디오" |
| 13 | - 미입력 시 사용자에게 카테고리/제약 물어보기 |
| 14 | |
| 15 | ### 후보 산출 규칙 |
| 16 | 1. **중복 배제**: `ls web/references/` 결과를 먼저 읽고, 거기 있는 id는 후보에서 제외 |
| 17 | 2. **DS 가시성 기준**: 다음 중 최소 1개 만족 |
| 18 | - 공식 design system docs 페이지 존재 (예: `<brand>.design`, `<brand>/design-system`) |
| 19 | - 디자인팀 medium/brunch 시리즈 (≥2 글) |
| 20 | - `getdesign.md/<id>` 또는 `styles.refero.design` 에 entry 존재 |
| 21 | 3. **도메인 다양성**: 같은 도메인(예: 핀테크)이 5개 초과하지 않도록 |
| 22 | 4. **단순 reskinning 회피**: 게임사처럼 DS보다 IP UI가 지배적인 경우 제외 권장 |
| 23 | |
| 24 | ### 출력 포맷 |
| 25 | 사용자에게 표로 제시 (id / 한글명 / DS 자료 근거 1줄): |
| 26 | |
| 27 | ``` |
| 28 | | # | id | 한글명 | DS 근거 | |
| 29 | |---|--------------|------------|---------| |
| 30 | | 1 | socar | 쏘카 | SOCAR DS brunch 시리즈 | |
| 31 | | ... |
| 32 | ``` |
| 33 | |
| 34 | + "포트폴리오 관점 균형" 단락(도메인/규모/카테고리 다양성)과 "대체 후보 5개"를 같이 제시. 사용자 컨펌 후 Phase 2로. |
| 35 | |
| 36 | --- |
| 37 | |
| 38 | ## Phase 2 — Build (10개 일괄 reference 생성) |
| 39 | |
| 40 | 각 brand에 대해 `omd:add-reference` CREATE 파이프라인을 그대로 적용. **단순 footer 박기 금지** — 모든 brand가 Apple-tier 풀 reconcile. |
| 41 | |
| 42 | ### 실행 방식 |
| 43 | - **병렬 wave**: 5개씩 2 wave (Agent subagent로 위임 권장). 한 wave 안에서는 brand별로 독립 subagent를 spawn해 parallel WebFetch + sequential playwright. |
| 44 | - **Wave 1 끝나면 sanity check** (`grep -c "^## 4\." web/references/<id>/DESIGN.md` 각각 1 이상) 후 Wave 2 진행. |
| 45 | - 실패한 brand는 보고하고 다음 wave에서 단독 재시도. 2회 실패 시 사용자에게 escalate. |
| 46 | |
| 47 | ### 각 brand build 체크리스트 (omd:add-reference CREATE 그대로) |
| 48 | - [ ] Tier 1: 라이브 inspect (hero CTA / nav / footer / input / card) — playwright 필수 |
| 49 | - [ ] Tier 2: getdesign.md/<id> + refero (둘 다 시도) |
| 50 | - [ ] **Tier 1.5 — 공식 DS surface 탐색** (Phase 3 등재에 직접 사용): |
| 51 | - `<brand>.design`, `design.<domain>`, `<domain>/brand`, `<domain>/brandcenter` HEAD |
| 52 | - GitHub: `gh search repos "<brand> design"`, `<org>.github.io/<brand>-ui` (Storybook 흔함) |
| 53 | - WebSearch: `"<brand>" design system site:<domain>`, `"<brand>" brunch design system`, `"<brand>" tech blog design` |
| 54 | - 발견 시 `curl -sIL` 200 확인 → `_promo.json` `design_system` 필드 기입 |
| 55 | - 없으면 필드 omit |
| 56 | - [ ] Tier 3: reconcile + §4 canonical schema |
| 57 | - [ ] §10-15 philosophy (Voice/Narrative/Principles/Personas/States/Motion) |
| 58 | - [ ] `_research.md` 작성 |
| 59 | - [ ] §4 footer `**Verified:** YYYY-MM-DD` + sources |
| 60 | |
| 61 | ### 산출물 |
| 62 | - `web/references/<id>/DESIGN.md` |
| 63 | - `web/references/<id>/.verification.md` (Proof block + conflict matrix + 리서치 노트 — `_research.md` 대체) |
| 64 | - (선택) `web/references/<id>/_preview.png` — Phase 3에서 쓸 라이브 hero 캡쳐 1장. **Phase 2에서 미리 찍어두면 Phase 3 재방문 비용 절감.** |
| 65 | |
| 66 | ### 빌드 실행 방식 (mandatory) |
| 67 | brand당 서브에이전트 1개, 프롬프트 = `.claude/skills/omd-add-reference/batch-instructions.md` 경로 + brand 파라미터. 각 서브에이전트의 종료 조건은 `node web/scripts/verify-reference.mjs <id>` 전 게이트 PASS. 서브에이전트는 ref 디렉터리 2파일만 쓰고 SYNC/test/git을 건드리지 않는다 (omd:add-reference "Batch 서브에이전트 프로토콜" 참조). |
| 68 | |
| 69 | --- |
| 70 | |
| 71 | ## Phase 2.5 — Audit (리서치 정합도 추적) |
| 72 | |
| 73 | **핵심**: 매 batch마다 `data/reference-audits/<YYYY-MM-DD>-<batch-slug>.md` 단일 파일 생성. 6개월 뒤에도 어떤 brand가 어떤 깊이로 추출됐는지, 어디를 보완해야 하는지 한 페이지로 확인 가능해야 한다. |
| 74 | |
| 75 | ### 필수 섹션 (greppable) |
| 76 | |
| 77 | `data/reference-audits/2026-05-13-kr10.md` 가 reference template: |
| 78 | |
| 79 | 1. `## How the N were researched` — 적용된 파이프라인 요약 |
| 80 | 2. `## Systemic finding` — 이 batch에서 발견된 카테고리 수준 인사이트 (예: "Korean brands는 Tier 2 directories에서 empty") |
| 81 | 3. `## Per-brand audit` — 표: id / confidence / Tier 1 depth / Tier 2 / Known gaps / Follow-up |
| 82 | 4. `## Confidence distribution` — High / Medium / Low 분포 + aggregate publishability |
| 83 | 5. `## Known shared limitation` — process 차원의 한계 + 다음 batch process 개선안 |
| 84 | 6. `## Promo highlight selection` — `_promo.json` highlight type 분포 (palette / voice / cta) |
| 85 | 7. `## Follow-up TODO` — 우선순위 정렬된 UPDATE 대상 |
| 86 | |
| 87 | ### Confidence 등급 기준 (3-tier) |
| 88 | |
| 89 | - **High** — ≥2 Tier 1 surfaces OR production CSS bundle 캡쳐; 미해결 hex 없음; ≥3 brand-owned 보조 source (blog/medium/brunch); §10-15 sourced |
| 90 | - **Medium** — 1 Tier 1 surface; 일부 inferred values; brand-owned philosophy sources 있음 |
| 91 | - **Low** — Tier 1 partial blocked; 핵심 토큰 `(unverified live)` 또는 `(illustrative)` 표시; UPDATE pass 필요 |
| 92 | |
| 93 | 이 등급은 batch 보고서뿐 아니라 **`web/references/<id>/_research.md` 상단에도 명시**되어야 (`Confidence: High|Medium|Low`). |
| 94 | |
| 95 | ### Audit 작성 절차 |
| 96 | |
| 97 | Phase 2 끝난 직후, build subagent들의 return summary를 모아서 작성. 각 subagent가 return한 정보: |
| 98 | - Tier 1 source count |
| 99 | - Tier 2 found / empty |
| 100 | - Conflicts unresolved |
| 101 | - Known gaps |
| 102 | |
| 103 | → 이걸 표로 합치고, 위 기준에 따라 confidence 등급 매김. Aggregate / TODO 작성. |
| 104 | |
| 105 | ### Anti-patterns |
| 106 | |
| 107 | - ❌ 모든 brand를 "High"로 표시 (작성자 편의를 위한 인플레이션) |
| 108 | - ❌ Follow-up TODO를 비워둠 (Medium/Low brand는 항상 TODO entry가 있어야 함) |
| 109 | - ❌ Audit 없이 SYNC로 넘어감 |
| 110 | |
| 111 | --- |
| 112 | |
| 113 | ## Phase |