| name | experiment-design |
| description | TRIGGER when: sigma proposes a Tier 2 feedback change that needs A/B experiment
validation; designing statistical tests for team configuration changes.
SKIP: Tier 0/1 runs, pure observation, data quality checks, causal analysis.
|
| version | 0.2.0 |
| license | MIT |
experiment_design
Elixir ๋ชจ๋: Sigma.V2.Skill.ExperimentDesign
MCP ์ด๋ฆ: experiment_design
๋ฒ์ : v2 (Phase 5)
Before You Start
hypothesis๋ ์ธก์ ๊ฐ๋ฅํ ํํ์ฌ์ผ ํจ. "๊ฐ์ ๋ ๊ฒ์ด๋ค" โ "ํด๋ฆญ๋ฅ ์ด 5% ์ด์ ์ฆ๊ฐํ ๊ฒ์ด๋ค"๋ก ๊ตฌ์ฒดํ.
primary_metric + baseline์ด ์์ผ๋ฉด ์ํ ์ฌ์ด์ฆ ๊ณ์ฐ์ด ๋ถ๊ฐ๋ฅ โ ๊ถ๊ณ ์ฌํญ๋ง ๋ฐํ.
variants์ control(๋์กฐ๊ตฐ)์ด ํฌํจ๋์ด์ผ ํจ (์: ["control", "variant_a"]). ์์ผ๋ฉด ์ค๊ณ ์ ์ ๊ฐ์ .
- ์ต์ ํ์ง ํจ๊ณผ(
min_detectable_effect)๋ baseline ๋๋น ์๋์ ๋ณํ์จ๋ก ์ ๋ฌ (0.05 = 5% ํฅ์).
- ์ด ์คํฌ์ ์ค๊ณ ์ ์์ ๊ถ๊ณ ๋ง ๋ฐํ. ์ค์ ์คํ ์คํ์ ๋ณ๋ ํ๋ก์ธ์ค.
Input Schema
{
"type": "object",
"properties": {
"hypothesis": {
"type": "string",
"description": "๊ฒ์ฆ ๊ฐ์ค (์ธก์ ๊ฐ๋ฅํ ํํ)"
},
"primary_metric": {
"type": "string",
"description": "1์ฐจ ์ฑ๊ณผ ์งํ๋ช
(์: 'click_through_rate')"
},
"baseline": {
"type": "number",
"description": "ํ์ฌ primary_metric ๊ธฐ์ค๊ฐ"
},
"variants": {
"type": "array",
"items": { "type": "string" },
"description": "์คํ ๋ณ์ข
๋ชฉ๋ก (control ํฌํจ ๊ถ์ฅ)"
},
"min_detectable_effect": {
"type": "number",
"description": "๊ฐ์งํ ์ต์ ํจ๊ณผ ํฌ๊ธฐ (baseline ๋๋น ์๋๊ฐ, ์: 0.05)"
},
"guardrails": {
"type": "array",
"items": { "type": "string" },
"default": [],
"description": "์คํ ์ค๋จ ์กฐ๊ฑด ์งํ ๋ชฉ๋ก (์: 'error_rate', 'revenue')"
}
}
}
Process
- ๊ฐ์ค ๋ช
ํ์ฑ ์ฒดํฌ:
hypothesis์ ์ธก์ ๊ธฐ์ค์ด("์ฆ๊ฐ", "๊ฐ์", "%", "์ด์", "์ดํ")๊ฐ ์์ผ๋ฉด ๋ช
ํ์ฑ flag.
- control ํฌํจ ์ฌ๋ถ ์ฒดํฌ:
variants์ "control"์ด ์์ผ๋ฉด ๊ฒฝ๊ณ ์ถ๊ฐ.
- ์ํ ์ฌ์ด์ฆ ์ถ์ :
baseline๊ณผ min_detectable_effect๊ฐ ์์ผ๋ฉด ํต๊ณ ๊ณต์์ผ๋ก ๊ทธ๋ฃน๋น ์ต์ ์ํ ์ ๊ณ์ฐ (ฮฑ=0.05, ฮฒ=0.2).
- guardrail ์ฒดํฌ:
guardrails๊ฐ ๋น์ด์์ผ๋ฉด guardrail ๋ถ์ฌ ๊ฒฝ๊ณ .
- ์ค๊ณ ์ ์ ์ฐ์ถ: ๋ช
ํํ ๊ฐ์ค(+3), control ํฌํจ(+2), ์ํ ๊ณ์ฐ ๊ฐ๋ฅ(+2), guardrail ์กด์ฌ(+3) โ 10์ ๋ง์ .
- ๊ถ๊ณ ์ฌํญ ์์ฑ: ๊ฐ ๋ถ์กฑํ ํญ๋ชฉ์ ๋ํ ๊ตฌ์ฒด์ ๊ฐ์ ๊ถ๊ณ ๋ฐํ.
Defaults
| ํ๋ผ๋ฏธํฐ | ๊ธฐ๋ณธ๊ฐ | ์กฐ์ ๊ธฐ์ค |
|---|
guardrails | [] | ์ต์ 1๊ฐ (error_rate ๊ถ์ฅ) |
min_detectable_effect | ์์ | ๋น์ฆ๋์ค์ ์๋ฏธ์๋ ์ต์ ๋ณํ์จ ์ค์ |
variants | ์์ | control + 1~2๊ฐ variant๊ฐ ์ผ๋ฐ์ |
Integration
์๊ทธ๋ง ๋ด ํธ์ถ ์ง์ :
Sigma.V2.Commander โ Tier 2 ๋ณ๊ฒฝ ์ ์ฉ ์ ์คํ ์ค๊ณ ๊ฒ์ฆ
causal_check์ ์ฐ๊ณ: ๊ฐ์ค ์ธ๊ณผ์ฑ ๊ฒ์ฆ โ ์คํ ์ค๊ณ ์์
- MCP ์๋ํฌ์ธํธ:
POST /mcp/sigma/tools/experiment_design/call
Examples
Good โ ์์ ํ ์คํ ์ค๊ณ:
{
"hypothesis": "๋ธ๋ก๊ทธ ์ ๋ชฉ A/B ํ
์คํธ ์ ํด๋ฆญ๋ฅ ์ด 10% ์ด์ ์ฆ๊ฐํ ๊ฒ์ด๋ค",
"primary_metric": "click_through_rate",
"baseline": 0.035,
"variants": ["control", "title_variant_a", "title_variant_b"],
"min_detectable_effect": 0.10,
"guardrails": ["bounce_rate", "session_duration"]
}
Bad โ ์ธก์ ๋ถ๊ฐ๋ฅํ ๊ฐ์ค:
{
"hypothesis": "๋ ๋์ ๊ฒฐ๊ณผ๊ฐ ๋์ฌ ๊ฒ์ด๋ค",
"variants": ["variant_a"]
}
Edge โ baseline ์๋ ์ค๊ณ:
{
"hypothesis": "์ ๊ท ๊ธฐ๋ฅ ๋์
์ DAU๊ฐ 5% ์ด์ ์ฆ๊ฐํ ๊ฒ์ด๋ค",
"primary_metric": "dau",
"variants": ["control", "new_feature"],
"guardrails": ["error_rate"]
}
Failure Modes
| ํจํด | ์์ธ | ๋์ฒ |
|---|
design_score: 0 | ๋ชจ๋ ํ๋ ๋๋ฝ | ์ต์ hypothesis + variants ์ ๊ณต |
| ์ํ ์ null | baseline ๋๋ min_detectable_effect ๋ฏธ์ ๊ณต | ๋ ํ๋ผ๋ฏธํฐ ๋ชจ๋ ์ ๊ณต |
| control ๊ฒฝ๊ณ ๋ฐ๋ณต | variants์ "control" ๋ฌธ์์ด ๋ฏธํฌํจ | variants ๋ฐฐ์ด์ "control" ์ถ๊ฐ |