실험 모니터 & 보고서 생성기
활성화 및 최근 완료된 실험을 스캔하고, 주의가 필요한 사항을 표면화하며, 중요한 실험에 대한 보고서를 생성합니다.
이것은 모니터링 스킬입니다 — 비전문가도 접근할 수 있도록 결과를 제공하세요. 통계적 전문 용어(p-value, 검정력 분석 등)를 사용하지 마세요. 특정 실험에 대한 심층 분석이 필요하면 analyze-experiments 스킬을 사용하세요.
중요: 응답 크기 관리
get_experiments: 호출당 최대 3-5개 ID.search결과를 사용하여 데이터를 가져오기 전에 필터링하세요.query_experiment응답이 큽니다.summary객체와 유효성 플래그만 추출하세요.timeseries,xValues, 대량 배열은 무시하세요.- 메트릭 이름 확인:
search는queries의 메트릭 ID와 일치하지 않습니다.entityTypes: ["METRIC"], 빈queries,limitPerQuery: 50으로 프로젝트 범위 내에서 검색하세요. 결과에서 ID를 매핑하세요.
보고서 구조
보고서는 두 부분으로 구성됩니다:
- 요약 및 조치 (상단) — 하나의 표 + 액션 아이템. 누군가 이 부분만 읽어도 전체 그림을 알 수 있어야 합니다.
- 세부 정보 (하단) — 주의가 필요한 실험에 대한 심층 분석, 최근 결정된 사항에 대한 간략한 설명, 모니터링 중인 실험에 대한 한 줄 요약, 설정 필요 목록.
요약 표와 세부 정보 간에 정보를 중복하지 마세요. 요약 표는 포트폴리오 상태에 대한 단일 진실 공급원입니다. 세부 정보는 특정 실험에 대해 확장하여 설명합니다.
지침
1단계: 컨텍스트 및 발견
Amplitude:get_context를 호출합니다. 여러 프로젝트가 있는 경우 모니터링할 프로젝트를 질문합니다.- 실험 검색:
Amplitude:search({
entityTypes: ["EXPERIMENT"],
appIds: [projectId],
queries: [],
sortOrder: "lastModified",
sortDirection: "DESC",
limitPerQuery: 50
})
- 필터링 규칙 — 다음 실험을 포함합니다:
- 실행 중이며 오래되지 않음: 실행 상태이면서 오래된(stale) 것으로 표시되지 않은 모든 실험. 오래된 실험은 유휴 상태이므로 제외해야 합니다.
- 최근 결정됨: 결정이 기록되었고 지난 14일 이내에 수정된 완료된 실험. 결정을 확인하거나 학습 내용을 공유하기 위해 검토할 가치가 있습니다.
- 제외: 초안, 비활성화된 실험 및 오래된 실험.
2단계: 메타데이터, 메트릭 이름 및 주요 결과 가져오기
Amplitude:get_experiments를 3-5개 ID씩 배치로 호출합니다(1단계에서 필터링된 세트만).- 추출할 항목: 상태, 날짜/기간, 변형, 메트릭 ID(권장=true인 주요 메트릭), 결정, 소유자.
- 상세 메타데이터를 사용하여 1단계의 필터링 규칙을 다시 적용합니다(일부 필드(예: 오래된 상태, 결정)는 여기에서만 사용 가능할 수 있음).
Amplitude:search({ entityTypes: ["METRIC"], appIds: [projectId], queries: [], limitPerQuery: 50 })를 통해 메트릭 이름을 확인합니다.{ id: name }매핑을 구축합니다.- 메트릭이 구성된 실험의 경우
Amplitude:query_experiment({ id: "<id>" })(metricIds 없이)를 호출하여 주요 메트릭 결과 및 데이터 품질 플래그를 가져옵니다. 이 데이터는 요약 표와 심층 분석 모두에 사용됩니다.
중요: 사용자에게 원시 메트릭 ID를 절대 표시하지 마세요. 메트릭 이름을 확인할 수 없는 경우 해당 역할(예: "주요 메트릭", "가드레일 메트릭")로 설명하고 "rrgtky08" 또는 "Metric gvgb5efj"와 같은 문자열을 표시하지 마세요. 메트릭 ID는 인간 독자에게 아무 의미가 없는 내부 식별자입니다.
3단계: 요약 및 조치
이것은 보고서의 상단입니다. 자체적으로 완결되어야 합니다 — 이 섹션만 읽어도 전체 그림을 파악할 수 있습니다.
요약 표
## 실험 모니터: [프로젝트 이름]
날짜: [오늘] | 프로젝트: [이름] ([ID])
| 실험 | 상태 | 기간 | 상승률 | 판정 |
|------|------|------|--------|------|
열 정의:
- 실험 — 사람이 읽을 수 있는 이름(URL이나 ID가 아님)
- 상태 — 실행 중 또는 완료됨
- 기간 — 실험이 시작된 이후 일수
- 상승률 — 주요 메트릭 상대적 상승률(가능한 경우), 데이터가 없으면 "—". 다변량인 경우 범위 표시(예: "-17% ~ -20%")
- 판정 — 수행할 작업(아래 용어 참조)
판정 용어:
| 판정 | 사용 시기 |
|---|---|
| 출시 | 주요 메트릭 유의미하게 긍정적, 가드레일 양호, 데이터 품질 좋음 |
| 반복 | 긍정적 신호이지만 가드레일 회귀 또는 품질 문제 |
| 모니터링 | 실행 중, 아직 유의미하지 않음, 조치할 사항 없음 |
| 중단 | 주요 메트릭 유의미하게 부정적이거나 심각한 데이터 품질 문제 |
| 결정됨: 출시 | 최근 완료, 팀이 출시 결정 |
| 결정됨: 출시 안 함 | 최근 완료, 팀이 출시하지 않기로 결정 |
| 설정 수정 | 쿼리 오류, 노출 이벤트 손상 또는 심각한 트래픽 불균형 |
| 메트릭 필요 | 메트릭 없이 실행 중 — 평가 불가 |
| 해당 없음 | 설문조사/넛지 배포, 기능 실험 아님 |
액션 아이템(표 바로 다음)
**바로 조치:**
- [실험] — [소유자 이름과 함께 구체적인 조치]
**계속 관찰:**
- [실험] — [간략한 상태 + 재확인 시기]
**설정 필요:**
- [실험] — [누락된 사항 + 소유자 이름]
표의 모든 실험은 정확히 하나의 액션 카테고리에 나타나야 합니다. 카테고리에 실험이 없으면 해당 카테고리를 생략하세요.
4단계: 세부 정보
요약 아래에 섹션별로 구성된 추가 세부 정보를 제공합니다. 각 실험은 정확히 하나의 섹션에 나타납니다 — 중복 없음.
4a: 심층 분석(주의가 필요한 실험)
Ship, Iterate 또는 Abandon 판정이 있는 실험에 대한 심층 분석(최대 3개). 이러한 실험은 검토할 가치가 있는 중요한 결과를 가지고 있습니다.
각 실험에 대해 단일 패스로 전체 보고서를 출력합니다:
---
## [실험 이름]
[상태] | [기간]일 | 대조군: [N] / 처리군: [N] | [실험 링크]
데이터 품질(첫 번째 — 결과보다 먼저):
메트릭 결과를 보고하기 전에 데이터 품질을 확인하세요. 심각한 문제가 있는 경우 독자는 숫자를 해석하기 전에 해당 컨텍스트가 필요합니다.
모든 항목이 통과하면 한 줄: "데이터 품질 검사가 모두 통과했습니다." 그런 다음 주요 메트릭을 진행합니다.
문제가 발견되면 주요 메트릭보다 먼저 보고합니다:
### 데이터 품질: [N]개의 문제 발견
SRM(표본 비율 불일치):
- API 응답의
srmDetected필드 사용 srmDetected: true인 경우: 항상 먼저 눈에 띄게 보고- 보고: 실제 분할 vs. 예상 분할(특정 백분율 포함)
트래픽 할당 변경:
- 현재 변형 가중치와 누적 노출 분포를 비교
- 일치하지 않는 경우(예: 현재 가중치가 100/0/0이지만 누적은 15/70/15인 경우) 실험 중간에 할당이 변경되었음을 의미
- 이를 눈에 띄게 표시 — 일부 변형이 더 이상 새 트래픽을 받지 않을 수 있음
표본 크기:
- 변형당 <100개: 불충분으로 표시 — 결론을 내리기에는 너무 이름
- 변형당 100~1,000개: 방향성 신호만 있음, 확신 있는 결정을 내리기에 충분하지 않음
- 1,000개 이상: 분석에 적합
유효성 플래그 — 실패한 경우만 보고:
| 플래그 | 실패 시 의미 | 심각도 |
|---|---|---|
isVariancePositive = false | 메트릭 데이터가 유효하지 않음 — 통계 테스트를 실행할 수 없음 | 심각 |
isConfidenceIntervalNotFlipped = false | 결과 계산 오류 — 숫자를 신뢰하지 마세요 | 심각 |
isMeanValid = false | 메트릭 값이 손상됨(NaN/무한대) — 분석 불가 | 심각 |
statsAssumptionsMetForWholeExperiment = false | 통계적 가정이 충족되지 않음 — 결과가 신뢰할 수 없을 수 있음 | 높음 |
hasSuspiciousUplift = true | 비정상적으로 큰 효과 — 측정 오류일 수 있음, 실제 변화가 아님 | 높음 |
isPointEstimateInsideConfidenceInterval = false | 내부 수학 불일치 — 결과가 잘못되었을 수 있음 | 높음 |
isStandardErrorLargeEnough = false | 신뢰할 수 있는 추정치를 얻기에는 노이즈가 너무 많음 | 중간 |
SRM이 감지되거나 심각한 플래그가 실패한 경우:
⚠️ 아래 결과는 [문제]로 인해 주의하여 해석해야 합니다.
주요 메트릭:
### [메트릭 이름]: [평이한 언어 판정]
| 변형 | 값 | 상승률 | 95% CI |
|------|-----|--------|--------|
| 대조군 | [X] | — | — |
| 처리군 | [Y] | [+Z%] | [A% ~ B%] |
[한 문장 평이한 언어 해석.]
프레이밍 규칙:
- p-value를 포함하지 마세요. 비전문가는 그것이 무엇을 의미하는지 모릅니다.
- "효과 없음" 대신 "유의미하지 않음"을 사용하세요. 효과가 있을 수 있음 — 실험이 이 표본 크기에서 감지하지 못하는 것뿐입니다.
- 평이한 언어로 무슨 일이 일어났는지 설명하세요.
판정 단어:
- 유의미하게 긍정적 — CI가 완전히 0보다 위, 긍정적 상승률
- 유의미하게 부정적 — CI가 완전히 0보다 아래, 부정적 상승률
- 유의미하지 않음 — CI가 0을 포함; 아직 실제 차이가 있다고 확신할 수 없음
- 긍정적/부정적 추세 — 방향성 신호이지만 CI가 0을 포함; 주시할 가치 있음
상승률이 매우 작은(<2%) 또는 매우 큰(>20%) 경우에만 실질적 유의성에 대해 한 문장을 추가하세요.
가드레일 및 보조 메트릭:
Amplitude:query_experiment({ id: "<id>", metricIds: [...] })를 호출합니다.
모든 메트릭을 설명하기보다는 회귀를 찾는 데 집중하세요.
유의미한 회귀가 없으면: "모든 가드레일 및 보조 메트릭이 깨끗합니다 — 유의미한 회귀가 감지되지 않았습니다."
유의미한 회귀가 발견된 경우:
- **[메트릭 이름]:** 유의미한 회귀([−X%], CI: [A% ~ B%]) — [영향에 대한 한 문장]
아직 유의미하지 않지만 큰 방향성 회귀(>20% 상대적 상승률)가 있는 경우:
- **[메트릭 이름]:** 유의미하지 않지만 방향성으로 부정적([−X%]) — 주시할 가치 있음
유의미하지 않은 작은 방향성 변화는 생략하세요. 5개 이상의 메트릭이 있는 경우 다중 비교로 인해 위양성 확률이 증가할 수 있다고 언급하세요.
피드백(주요 메트릭이 유의미한 경우만):
Amplitude:get_feedback_insights를 실험 관련 키워드로 호출합니다. 각각 한 줄로 2-3가지 테마를 보고합니다. 관련 피드백이 없으면 섹션을 건너뛰세요.
판정:
### 판정: [출시 / 반복 / 모니터링 / 중단]
1. [주요 메트릭 결과 — 한 문장]
2. [품질 / 가드레일 상태 — 한 문장]
3. [다음에 할 일 — 한 문장]
결정 매트릭스(내부 참조용, 출력하지 마세요):
| 신호 | 출시 | 반복 | 모니터링 | 중단 |
|---|---|---|---|---|
| 주요 메트릭 | 유의미하게 긍정적 + 실질적 | 유의미하게 긍정적이지만 가드레일 회귀 | 아직 유의미하지 않음, 계속 실행 중 | 유의미하게 부정적 |
| 품질 | 모두 통과 | 사소한 플래그 | 모두 통과 또는 데이터 불충분 | SRM 또는 심각한 플래그 |
| 가드레일 | 깨끗함 | 1개 회귀 수정 필요 | 깨끗하거나 데이터 충분하지 않음 | 중요 메트릭에서 유의미한 회귀 |
| 실험 상태 | 완료됨 | 완료됨 | 실행 중 | 완료됨 또는 실행 중 |
4b: 실행 중인 실험(모니터링, 조치 필요 없음)
Monitor 판정이 있는 실험의 경우 각각 한 줄 상태를 제공합니다:
---
### 실행 중인 실험
**[이름]** — [X]일째 실행 중, 대조군: [N] / 처리군: [N]. [주요 메트릭 상태 — 예: "긍정적 추세(+3.3%)이지만 아직 유의미하지 않음"]. 데이터 품질 깨끗함. [링크]
**[이름]** — [X]일째 실행 중, 대조군: [N] / 처리군: [N]. 결론을 내리기에는 너무 이름 — [이유, 예: "표본 크기가 100-1,000 범위임"]. [링크]
간결하게 유지하세요 — 실험당 한 줄. Amplitude에서 확인하고 싶은 사람을 위해 마지막에 링크를 포함하세요.
4c: 최근 결정됨(간략한 요약)
Decided: Ship 또는 Decided: Don't ship 판정이 있는 실험의 경우:
---
### 최근 결정됨
- **[이름]** — [출시됨/롤백됨] ([날짜]), [X]일 후. [결과 또는 근거에 대한 한 문장]. [링크]
실험이 메트릭 없이 또는 통계적 유의성 없이 출시된 경우 간략히 언급하세요.
4d: 설정 필요
Fix config, Needs metrics 또는 N/A 판정이 있는 실험의 경우:
---
### 설정 필요
- **[이름]** — [문제 설명]. 소유자: [소유자].
- **[이름]** — 설문조사/넛지 배포, 기능 실험 아님. 분석 필요 없음.
각 실험은 정확히 하나의 세부 정보 섹션에 나타납니다. 요약 표 조치와 동일한 정보가 포함된 세부 정보 섹션에 실험을 나열하지 마세요 — 세부 정보 섹션은 조치 항목을 확장할 뿐 반복하지 않습니다.
예외 사례
- 실험 없음: 명확히 보고하고 다른 프로젝트 확인 제안
- 데이터 없음(<24시간): 실험이 방금 시작되었음을 알리고 7일 후에 다시 확인
- SRM 감지됨: 데이터 품질에서 이를 먼저 제시 — 다른 모든 것을 무효화할 수 있음
- 10개 이상의 실험: 모든 실험에 대한 요약 표, 상위 3개 심층 분석, 추가 분석 제안
- 응답이 너무 큼 / 디스크에 저장됨:
summary+ 유효성 플래그만 추출 - 메트릭이 구성되지 않음: "설정 필요" 섹션에 나열, 심층 분석하지 않음
- 모든 실험이 오래됨: 모니터링할 활성 실험이 없다고 보고
query_experiment의 쿼리 오류: 실험 소유자 이름과 함께 오류를 명확히 보고. 요약에 "설정 수정"으로 표시. 일반적인 원인: 손상된 노출 이벤트 속성, 잘못 구성된 실험 키.- 실험 중간에 트래픽 할당 변경: 데이터 품질에 표시. 현재 가중치와 누적 노출 분포 비교. 더 이상 트래픽을 받지 않는 변형을 기록.
- 설문조사/넛지 실험(NPS 등): 요약에 해당 없음으로 표시. 분석 필요 없음 — 심층 분석 건너뜀.
- 심각하게 불균형한 트래픽(예: 5%/95% 또는 0%/100%): "설정 수정"으로 표시 — 의미 있는 대조군 없이는 유효한 실험을 실행할 수 없음. 소유자와 함께 설정 필요에 기록.