| name | omd-lab-02-design-harness |
| description | OmD Lab |
OmD Lab #02 โ Design Harness Refinement
omd:harness์ ์ ๊ตํ ์์
์ ์ํ ์คํ์ค. ๋์ผํ design task๋ฅผ ์๋ก ๋ค๋ฅธ ํ๋ค์ค ์ค์ (v1, v2, v3, ...)์ผ๋ก ๋๋ ค์ ํ์งยท๋น์ฉยท์คํจ๋ชจ๋๋ฅผ ๋น๊ตํ๋ค.
์
Lab #01์ด "DESIGN.md ์ ๋ฌด"์ ์ํฅ์ ๋ดค๋ค๋ฉด, Lab #02๋ ํ๋ค์ค ์์ฒด์ ์ค์ (prompt ๋ณํ, persona pool, eval rubric, asset ์ ์ฑ
๋ฑ)์ด ์ฐ์ถ๋ฌผ์ ๋ฏธ์น๋ ์ํฅ์ ๋ณธ๋ค.
๋๋ ํ ๋ฆฌ ๊ตฌ์กฐ
skills/omd-lab-02-design-harness/
โโโ SKILL.md (this file)
โโโ playbooks/
โ โโโ v1.md (ํ์ฌ baseline โ first full implementation)
โ โโโ v2.md (๋ค์ ์คํ ๊ฐ์ค)
โ โโโ ...
โโโ runs/
โ โโโ v1-run-<ts>-<slug>/ โ omd:harness๊ฐ v1 ์ค์ ์ผ๋ก ๋๋ฆฐ ์ฐ์ถ๋ฌผ ์ ์ฒด
โ โโโ v2-run-<ts>-<slug>/
โ โโโ ...
โโโ compare/
โ โโโ README.md (์ด๋ค task๋ก ์ด๋ค v๋ฅผ ๋น๊ตํ๋๊ฐ)
โ โโโ <task-id>/
โ โโโ index.html (v1 vs v2 vs v3 ๋์ ๋น๊ต ๋ทฐ)
โ โโโ metrics.json (์ง๊ณ ๋น๊ต ์งํ)
โโโ postmortem-aggregate.md (์ v ๋์ ํ์ต)
Lab Run ํ๋กํ ์ฝ
์ v ์ ์ (Lab ์ด์์ โ ์ฌ์ฉ์ ๋๋ Claude)
playbooks/v<N>.md ์์ฑ. ๊ฐ์ค์ ํ ์ค๋ก:
## Hypothesis
v2 raises persona ABANDON budget from 3s โ 5s, expecting fewer false-abandon and more useful friction signal.
- v์ด v๊ณผ ๋ฐ๊พธ๋ ๊ฒ ์ ํํ ๋ช
์. 1๊ฐ ๋ณ์๋ง ๋ฐ๊พธ๋ ๊ฒ ์์น.
- ๋ณ๊ฒฝ ์ ์ด sub-agent ํ๋กฌํํธ์ ์์ผ๋ฉด
playbooks/v<N>/agents-overrides/*.md๋ก patch ๋ณด๊ด.
Lab Run ์คํ
omd harness "<task>" --lab v2
--lab v<N>์ด ๋ค์ด์ค๋ฉด:
runs/v<N>-run-<ts>-<slug>/ ๋๋ ํ ๋ฆฌ์ ์ฐ์ถ๋ฌผ ์ ์ฌ
- v์ agent overrides๊ฐ ์์ผ๋ฉด ๊ทธ๊ฑธ ์์๋ก
.claude/agents/์ ๋ฎ์ด์์ด ์ฑ ์คํ (run ์ข
๋ฃ ์ ์๋ณต)
- run.log์
lab_version: v<N> ๊ธฐ๋ก
๋น๊ต ๋ทฐ ์์ฑ
์ด์์๊ฐ ๋์ผ task์ ๋ํด v1, v2, ..., vN์ run์ ๋๋ด๋ฉด:
omd lab compare --task "<task-slug>" --versions v1,v2,v3
์ด๊ฒ compare/<task-slug>/index.html์ ๋ง๋ ๋ค. 4-ํจ๋ (๋๋ N-ํจ๋) ๋น๊ต:
- ๊ฐ v์ brief.md / ์ฃผ์ wireframe / DESIGN.md.patch / persona ABANDON ์์ฝ / ํ ํฐ ๋น์ฉ
- ๊ณตํต metrics.json: per-v {iterations, total_tokens, persona_abandon_rate, deterministic_pass_rate, jury_score, time_to_handoff}
๋น๊ต metrics ์ ์
{
"task": "ํ ์ค ์คํ์ผ ๊ฐ์กฑ ์๋จ ์ฑ ๋ฉ์ธ",
"versions": {
"v1": {
"iterations": 2,
"total_tokens_estimated": 320000,
"persona_abandon_rate": 0.5,
"deterministic_pass_rate": 1.0,
"jury_score_normalized": 0.72,
"time_to_handoff_min": 18,
"user_satisfied": "?"
},
"v2": { ... }
},
"delta_v1_v2": "v2 reduced persona_abandon_rate by 0.25 but raised total_tokens by 12% โ net win on signal quality"
}
์งํ ํธ๋ (์ด Lab์ ๋ก๋๋งต)
| v | hypothesis | status |
|---|
| v1 | First full implementation โ 8 agents, 10 phases, 3 user checkpoints | active baseline |
| v2 | (TBD) | pending |
| v3 | (TBD) | pending |
playbooks/v1.md๊ฐ baseline ์ ์. ์ด์์๋ ๋งค ํ ์ ๊ฐ์ค๋ก v.md๋ฅผ ์ถ๊ฐํ๋ค.
postmortem-aggregate.md ์ ์ฑ
๋งค lab run ์ข
๋ฃ ์, run์ postmortem.md์์ cross-version-relevant ์ ํธ๋ง ๋ฐ์ทํด postmortem-aggregate.md์ ๋์ :
- ์์ฃผ ๋ฐ์ํ๋ deterministic gate ์คํจ
- persona ABANDON ํธ๋ฆฌ๊ฑฐ ๋น๋ ๋ถํฌ
- ์ฌ์ฉ์๊ฐ ๊ฐ์ฅ ์์ฃผ rejectํ๋ phase ์ถ๋ ฅ
- ํ ํฐ์ด ๊ฐ์ฅ ๋ง์ด ์๋ sub-agent
์ด๊ฒ ๋ค์ v์ ๊ฐ์ค์ ๋ง๋ค์ด๋ธ๋ค.
์ฌ์ฉ ์ (ํ ์ค ์์ฐ)
์ฌ์ฉ์: "ํ ์ค ์คํ์ผ ๊ฒฐ์ ํ๋ฉด โ Lab #02๋ก v1, v2 ๋น๊ต"
โ Claude: omd harness "..." --lab v1 ์คํ โ v1-run ์ ์ฌ
โ (์ฌ์ฉ์ ์ฒดํฌํฌ์ธํธ ์งํ, ship ๊ฒฐ์ )
โ Claude: omd harness "..." --lab v2 ์คํ (๋์ผ brief ์ฌ์ฌ์ฉ ๊ฐ๋ฅ)
โ omd lab compare --task <slug> --versions v1,v2
โ compare/<slug>/index.html ๊ฒฐ๊ณผ ์ ์
๊ธ์ง
- v ์ ์ ์์ด run ์ ์ฌ X (๋ฐ๋์ playbooks/v.md ์ ํ)
- ๋์ผ task์ ๋์ผ v ๊ฒฐ๊ณผ๋ฅผ ๋ฎ์ด์ฐ์ง X (timestamp๋ก ๋ณด์กด)
- runs/ ์ ๋ฆฌ X (์๊ตฌ ๋ณด์กด)