| name | feature-planner |
| description | TRIGGER when: sigma needs to identify which team metrics are most analytically
valuable; planning feature engineering for a new team onboarding to sigma;
detecting feature drift in existing team analytics.
SKIP: raw data validation, causal analysis, experiment design.
|
| version | 0.2.0 |
| license | MIT |
feature_planner
Elixir ๋ชจ๋: Sigma.V2.Skill.FeaturePlanner
MCP ์ด๋ฆ: feature_planner
๋ฒ์ : v2 (Phase 5)
Before You Start
features ๋ฐฐ์ด์ด ๋น์ด์์ผ๋ฉด ๋น ๊ฒฐ๊ณผ ๋ฐํ. ์ต์ 1๊ฐ ํผ์ฒ ํ์.
signal, effort, leakage_risk ๋ชจ๋ 0~5 ๋ฒ์ ์ซ์. ๋ฒ์ ์ด๊ณผ ์ clamp ์ฒ๋ฆฌ.
- ์ ์ ๊ณต์:
signal * 2 - effort - leakage_risk. ๋์์๋ก ์ฐ์ ๊ตฌํ.
leakage_risk >= 4์ธ ํผ์ฒ๋ high_risk_features๋ก ๋ณ๋ ๋ถ๋ฅ โ ์๋ ๊ตฌํ ๊ธ์ง ๋์.
score >= 3 AND effort <= 2์ธ ํผ์ฒ๋ quick_wins๋ก ๋ถ๋ฅ (์ฆ์ ๊ตฌํ ๊ฐ๋ฅ).
- ์ด ์คํฌ์ ์ฐ์ ์์ ์ ์ ๊ณ์ฐ๋ง. ์ค์ ๊ตฌํ ๊ฒฐ์ ์ ๋ง์คํฐ ์น์ธ ํ์.
Input Schema
{
"type": "object",
"required": ["features"],
"properties": {
"features": {
"type": "array",
"description": "ํผ์ฒ ํ๋ณด ๋ชฉ๋ก",
"items": {
"type": "object",
"required": ["name"],
"properties": {
"name": { "type": "string", "description": "ํผ์ฒ๋ช
" },
"signal": {
"type": "number",
"minimum": 0,
"maximum": 5,
"default": 0,
"description": "์์ ๋น์ฆ๋์ค ์ ํธ ๊ฐ๋ (0=๋ฌด์๋ฏธ, 5=ํต์ฌ KPI)"
},
"effort": {
"type": "number",
"minimum": 0,
"maximum": 5,
"default": 3,
"description": "๊ตฌํ ๋์ด๋ (0=trivial, 5=์์ฃผ ์์
)"
},
"leakage_risk": {
"type": "number",
"minimum": 0,
"maximum": 5,
"default": 0,
"description": "๋ฐ์ดํฐ ๋ฆฌํฌ/ํธํฅ ์ํ๋ (0=์์, 5=์ฆ์ ์ค๋จ ์์ค)"
}
}
}
}
}
}
Process
- ๊ฐ ํผ์ฒ ์ ์ ์ฐ์ถ:
score = signal * 2 - effort - leakage_risk.
- ์ฐ์ ์์ ์ ๋ ฌ: ์ ์ ๋ด๋ฆผ์ฐจ์. ๋์ ์ leakage_risk ์ค๋ฆ์ฐจ์.
- quick_wins ๋ถ๋ฅ:
score >= 3 AND effort <= 2.
- high_risk_features ๋ถ๋ฅ:
leakage_risk >= 4.
- ๊ฒฐ๊ณผ ๋ฐํ:
ranked_features(์ ์ฒด ์ ๋ ฌ), quick_wins, high_risk_features.
Defaults
| ํ๋ผ๋ฏธํฐ | ๊ธฐ๋ณธ๊ฐ | ์กฐ์ ๊ธฐ์ค |
|---|
signal | 0 | ๋ฐ๋์ ํ๋ณ KPI ์ํฅ๋ ๊ธฐ์ค์ผ๋ก ํ๊ฐ |
effort | 3 | ์ค๊ฐ ๋์ด๋ ๊ธฐ๋ณธ. ๊ตฌํ ๊ฒฝํ ์์ผ๋ฉด 4~5 |
leakage_risk | 0 | ํ์ต ๋ฐ์ดํฐ ์ฌ์ฉ ํผ์ฒ๋ ์ต์ 2 ์ด์ ์ค์ |
Integration
์๊ทธ๋ง ๋ด ํธ์ถ ์ง์ :
Sigma.V2.Commander.decide_formation/4 โ ํ๋ณ ํผ์ฒ ์ฐ์ ์์ ๊ฒฐ์ ์ ํธ์ถ
- ๋ค์ํ ์ฐ๋:
darwin.applied.* ์ด๋ฒคํธ ํ ๋ค์ ํผ์ฒ ์ฌ์ดํด์์ ์ฌํ๊ฐ
- MCP ์๋ํฌ์ธํธ:
POST /mcp/sigma/tools/feature_planner/call
Examples
Good โ ๋ค์ํ ํผ์ฒ ๋น๊ต:
{
"features": [
{"name": "์๋ ๋ธ๋ก๊ทธ ์ ๋ชฉ ์ต์ ํ", "signal": 4, "effort": 2, "leakage_risk": 1},
{"name": "์ค์๊ฐ ๊ฒฝ์์ฌ ๋ชจ๋ํฐ๋ง", "signal": 3, "effort": 4, "leakage_risk": 0},
{"name": "๊ณผ๊ฑฐ ๋ฐ์ดํฐ ์ฌํ์ต", "signal": 5, "effort": 1, "leakage_risk": 4}
]
}
Bad โ leakage_risk ๋ฏธ์ค์ (์ค์ ๋ฐฉ์น):
{
"features": [
{"name": "๋ฏธ๋ ์์ต ์์ธก ํผ์ฒ", "signal": 5, "effort": 2}
]
}
Edge โ ๋จ์ผ ํผ์ฒ:
{
"features": [{"name": "A/B ์คํ ์๋ํ", "signal": 3, "effort": 3, "leakage_risk": 0}]
}
Failure Modes
| ํจํด | ์์ธ | ๋์ฒ |
|---|
| ๋ชจ๋ ์ ์๊ฐ ์์ | effort + leakage_risk > signal*2 | signal ๊ฐ ์ฌ๊ฒํ . ๋น์ฆ๋์ค ๊ฐ์น ์ฌํ๊ฐ |
| high_risk๊ฐ quick_wins์ ํฌํจ | leakage_risk >= 4 && score >= 3 && effort <= 2 ๋์ ๋ง์กฑ | high_risk ์ฐ์ ํํฐ๋ง. ๊ตฌํ ๊ธ์ง ๋์ ํ์ธ |
| features ๋น ๋ฐฐ์ด | ์์ ํธ์ถ์๊ฐ ํผ์ฒ ๋ชฉ๋ก ๋ฏธ๋ก๋ | ํธ์ถ ์ team metrics์์ ํผ์ฒ ํ๋ณด ์์ง |