khaki4

bf-metrics

sprint-status.yaml의 메트릭 데이터를 분석하여 모델 배당 최적화 및 난이도 재태깅을 제안한다. 읽기 전용 스킬로, 파일 변경 없이 대화로만 결과를 출력한다.

khaki4 0 Updated 6mo ago
GitHub

Install

npx skillscat add khaki4/my-skills/bf-metrics

Install via the SkillsCat registry.

About this skill

This skill analyzes sprint metrics from YAML files to recommend model allocation and difficulty retagging. It solves the problem of identifying inefficient model-difficulty pairings by aggregating data like retry counts, blockers, and regression rates. Developers should invoke it after archiving a sprint to surface optimization suggestions without modifying any files.

SKILL.md

Metrics Analysis

Overview

스프린트 메트릭을 집계·분석하여 모델 배당 최적화와 난이도 재태깅을 제안한다. 자동 적용하지 않으며, 사람이 판단한다.

When to Use

  • 사용자가 /bf-metrics를 입력했을 때
  • /bf-archive-sprint 완료 후 안내에 따라 실행할 때
  • 여러 스프린트를 거친 후 패턴 분석이 필요할 때

Prerequisites

  • docs/sprint-status.yaml 또는 docs/archive/*/sprint-status.yaml 중 하나 이상 존재
  • 분석 대상 Story에 메트릭 필드가 기록되어 있어야 함 (레거시 Story는 건너뜀)
  • 권장 실행 순서: /bf-archive-sprint/bf-metrics/bf-update-conventions. 아카이빙 전에 실행해도 동작하지만, 아카이빙 후 실행하면 현재 + 아카이브 전체 데이터를 분석하여 더 정확한 결과를 제공

Error Handling

  • sprint-status.yaml도 archive도 없으면: "분석 가능한 스프린트 데이터가 없습니다. /bf-execute로 워크플로우를 먼저 실행하세요." 안내
  • 모든 Story가 레거시이면: "메트릭 필드가 기록된 Story가 없습니다. 현행 워크플로우(v2+)로 실행한 스프린트만 분석할 수 있습니다." 안내
  • 완료된 Story가 없으면: "완료(done) 상태의 Story가 없습니다. 진행 중인 스프린트의 분석은 완료 후 수행하세요." 안내

Instructions

1. 데이터 수집

a. 현재 스프린트 데이터를 수집한다:

  • docs/sprint-status.yaml 읽기

b. 아카이브된 스프린트 데이터를 수집한다:

  • docs/archive/*/sprint-status.yaml 패턴으로 모든 아카이브 파일 읽기

c. 분석 대상 필터링:

  • status: done인 Story만 분석 대상에 포함
  • 레거시 Story 판정 기준: model_used AND ralph_retries YAML key가 모두 존재하지 않는 Story는 레거시로 간주하여 건너뜀. 두 키 중 하나라도 존재하면 현행 포맷으로 처리한다. (model_used: null은 미완료 Story이므로 status: done 조건에서 이미 필터됨)
  • 건너뛴 Story 수를 기록하여 리포트에 표시

2. 집계 테이블 생성

(difficulty, model_used) 페어별로 다음 지표를 집계한다:

지표 계산 방법
story_count 해당 페어의 Story 수
avg_ralph_retries 평균 재시도 횟수
avg_ralph_approaches 평균 접근 전환 횟수
stuck_rate ralph_stuck: true 비율 (%)
avg_review_blockers 평균 🔴 Blocker 건수
avg_review_recommended 평균 🟡 Recommended 건수
regression_rate is_regression: true 비율 (%)

3. 모델 배당 최적화 제안

아래 임계값에 해당하는 (difficulty, model_used) 페어에 대해 제안을 생성한다:

조건 임계값 제안
높은 블로커 avg_review_blockers >= 2.0 더 강한 모델 배당 제안 (예: sonnet → opus-lead)
높은 재시도 avg_ralph_retries >= 3.0 구현 모델 업그레이드 제안
높은 stuck stuck_rate >= 20% Agent Teams 전략 전환 제안 (예: ralph-loop → opus-lead)
높은 회귀 regression_rate >= 25% 리뷰 모델 강화 제안
  • 임계값에 해당하지 않으면 "현재 모델 배당 적정" 메시지를 표시한다.
  • 제안에는 해당 조건을 충족한 구체적 수치를 함께 표시한다.

4. 난이도 재태깅 제안

완료된 개별 Story의 메트릭을 기준으로 난이도 조정을 제안한다:

과소평가 (상향 제안):

현재 → 제안 조건
S → M ralph_retries >= 3 OR review_blockers >= 2 OR ralph_stuck == true
M → L ralph_retries >= 4 OR review_blockers >= 3 OR ralph_approaches >= 2
L → XL ralph_stuck == true AND ralph_approaches >= 3

과대평가 (하향 제안):

현재 → 제안 조건
M → S ralph_retries == 0 AND review_blockers == 0 AND review_recommended <= 1
L → M ralph_retries <= 1 AND review_blockers == 0
XL → L ralph_retries <= 1 AND review_blockers == 0 AND ralph_approaches == 0
  • 해당 Story ID와 함께 구체적 메트릭 수치를 표시한다.
  • 제안이 없으면 "난이도 태깅 적정" 메시지를 표시한다.

5. E2E 실패 패턴 분석

failure_tag별로 건수와 비율을 집계한다:

failure_tag 건수 비율
spec-gap N N%
impl-bug N N%
test-design N N%
convention-violation N N%
integration N N%
  • regression Story가 없으면 "E2E 회귀 없음" 메시지를 표시한다.
  • 특정 태그가 50% 이상이면 해당 영역 집중 개선 제안을 추가한다.

6. 종합 요약

위 분석 결과를 종합하여 우선순위별 액션 아이템을 정리한다:

  • 🔴 즉시 조치: 높은 stuck_rate, 높은 블로커 등 심각한 패턴
  • 🟡 검토 권장: 과소/과대평가된 난이도, 모델 최적화 기회
  • 🟢 양호: 임계값 내 정상 범위

Output Format

대화로만 출력한다 (파일 저장 없음, read-only 스킬).

## 📊 BF Workflow Metrics Report

### 분석 범위
- 스프린트: {수집된 스프린트 목록}
- 분석 대상: {N}개 Story (레거시 {M}개 제외)

### 1. (Difficulty, Model) 페어별 집계
{집계 테이블}

### 2. 모델 배당 최적화 제안
{제안 목록 또는 "현재 모델 배당 적정"}

### 3. 난이도 재태깅 제안
{과소/과대평가 제안 목록 또는 "난이도 태깅 적정"}

### 4. E2E 실패 패턴
{failure_tag 집계 테이블 또는 "E2E 회귀 없음"}

### 5. 종합 액션 아이템
🔴 즉시 조치: ...
🟡 검토 권장: ...
🟢 양호: ...