Install any skill in seconds. Free to start, no credit card required.
Get Started Free →OmD Lab
.claude/skills/kwakseongjae-omd-lab-02-design-harness/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-08 | ✗→✓ | ▲ Improved | 29% | 0% |
| case-09 | ✗→✓ | ▲ Improved | 22% | 0% |
| case-10 | ✗→✓ | ▲ Improved | 28% | 0% |
| case-11 | ✗→✓ | ▲ Improved | -27% | 0% |
| case-12 | ✗→✓ | ▲ Improved | -5% | 0% |
<!-- omd:installed-skill — managed by omd install-skills. Do not edit; rerun the command to refresh. -->
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 누적 학습)playbooks/v<N>.md 작성. 가설을 한 줄로: ## Hypothesis v2 raises persona ABANDON budget from 3s → 5s, expecting fewer false-abandon and more useful friction signal.
playbooks/v<N>/agents-overrides/*.md로 patch 보관.bash# 운영자가 수동 실행 omd harness "<task>" --lab v2 # 또는 사용자가 자연어: # "이 task를 lab v2 설정으로도 돌려서 v1과 비교해줘"
--lab v<N>이 들어오면:
runs/v<N>-run-<ts>-<slug>/ 디렉토리에 산출물 적재.claude/agents/에 덮어씌운 채 실행 (run 종료 시 원복)lab_version: v<N> 기록운영자가 동일 task에 대해 v1, v2, ..., vN의 run을 끝내면:
bashomd lab compare --task "<task-slug>" --versions v1,v2,v3
이게 compare/<task-slug>/index.html을 만든다. 4-패널 (또는 N-패널) 비교:
json{ "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" }
| 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<N>.md를 추가한다.
매 lab run 종료 시, run의 postmortem.md에서 cross-version-relevant 신호만 발췌해 postmortem-aggregate.md에 누적:
이게 다음 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 결과 제시| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 21,033 | 33,438 | +59% | 1 | 1 | 0% | 3,429 | 1,772 | -48% | 0 | 0 | — |
case-02 | fail→fail | 28,111 | 6,222 | -78% | 1 | 1 | 0% | 6,186 | 1,978 | -68% | 0 | 0 | — |
case-03 | fail→fail | 19,979 | 4,663 | -77% | 1 | 1 | 0% | 2,882 | 1,651 | -43% | 0 | 0 | — |
case-04 | pass→pass | 19,306 | 18,422 | -5% | 1 | 1 | 0% | 3,427 | 4,789 | +40% | 0 | 0 | — |
case-05 | pass→pass | 19,404 | 15,747 | -19% | 1 | 1 | 0% | 3,140 | 4,020 | +28% | 0 | 0 | — |
case-06 | pass→pass | 19,875 | 25,261 | +27% | 1 | 1 | 0% | 3,618 | 5,615 | +55% | 0 | 0 | — |
case-07 | fail→fail | 14,806 | 10,020 | -32% | 1 | 1 | 0% | 2,503 | 3,136 | +25% | 0 | 0 | — |
case-08 | fail→pass | 8,974 | 2,532 | -72% | 1 | 1 | 0% | 1,440 | 1,858 | +29% | 0 | 0 | — |
case-09 | fail→pass | 11,127 | 4,748 | -57% | 1 | 1 | 0% | 1,776 | 2,168 | +22% | 0 | 0 | — |
case-10 | fail→pass | 11,819 | 5,687 | -52% | 1 | 1 | 0% | 1,792 | 2,300 | +28% | 0 | 0 | — |
case-11 | fail→pass | 15,744 | 3,347 | -79% | 1 | 1 | 0% | 2,640 | 1,920 | -27% | 0 | 0 | — |
case-12 | fail→pass | 15,910 | 6,676 | -58% | 1 | 1 | 0% | 2,939 | 2,787 | -5% | 0 | 0 | — |
case-13 | fail→pass | 13,875 | 4,313 | -69% | 1 | 1 | 0% | 2,125 | 2,084 | -2% | 0 | 0 | — |
case-14 | pass→pass | 15,880 | 12,206 | -23% | 1 | 1 | 0% | 2,381 | 3,407 | +43% | 0 | 0 | — |
case-15 | pass→pass | 9,744 | 7,661 | -21% | 1 | 1 | 0% | 1,398 | 2,385 | +71% | 0 | 0 | — |
case-16 | fail→pass | 10,959 | 5,121 | -53% | 1 | 1 | 0% | 1,683 | 2,119 | +26% | 0 | 0 | — |
case-17 | fail→pass | 9,330 | 4,741 | -49% | 1 | 1 | 0% | 1,401 | 2,136 | +52% | 0 | 0 | — |
case-18 | fail→fail | 14,815 | 10,094 | -32% | 1 | 1 | 0% | 2,372 | 3,245 | +37% | 0 | 0 | — |
case-19 | pass→pass | 10,888 | 5,908 | -46% | 1 | 1 | 0% | 1,761 | 2,413 | +37% | 0 | 0 | — |
case-20 | fail→pass | 10,174 | 4,266 | -58% | 1 | 1 | 0% | 1,648 | 2,297 | +39% | 0 | 0 | — |
case-21 | fail→pass | 12,942 | 3,557 | -73% | 1 | 1 | 0% | 2,104 | 2,017 | -4% | 0 | 0 | — |
case-22 | pass→pass | 10,542 | 1,811 | -83% | 1 | 1 | 0% | 1,654 | 1,651 | -0% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted, and 20 counted toward the lift figure. The other 2 produced results that are not comparable between the two arms, so they are excluded from the headline rather than averaged into it. The headline lift of +45 percentage points is the difference between those two pass rates over the 20 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.