Skill261 repo starsupdated 1mo ago
skill-tester
Skill Tester is a quality validation tool for Claude Code skills that implements A/B testing methodology to compare baseline performance against skill-enhanced performance. It includes an embedded four-dimensional scoring rubric and chain validation protocol, enabling standalone operation without external rules files, and supports multiple test modes including regression testing, chain integration testing, and individual rubric assessment with comprehensive token usage and output quality metrics.
Install in Claude Code
Copygit clone --depth 1 https://github.com/modu-ai/cowork-plugins /tmp/skill-tester && cp -r /tmp/skill-tester/moai-core/skills/skill-tester ~/.claude/skills/skill-testerThen start a new Claude Code session; the skill loads automatically.
Definition
SKILL.md
# Skill Tester — 스킬 품질 검증 도구 (루브릭 + 체인 내장)
> moai-core | revfactory/harness 테스트 방법론 기반
> single source of truth for: 4차원 스코어링 루브릭, 스킬 체인 검증 프로토콜
## 개요
skill-builder로 생성된 스킬 또는 기존 스킬의 품질을 검증합니다. harness의 A/B 테스트 방법론을 구현하여 baseline(스킬 없음)과 with-skill(스킬 사용)을 비교하며, **4차원 스코어링 루브릭**과 **체인 검증 프로토콜**을 본문에 직접 포함하여 별도 rules 파일 참조 없이 단독으로 동작합니다.
## 트리거 키워드
스킬 테스트 검증 A/B 테스트 baseline 회귀 테스트 체인 테스트 skill-tester 품질 측정 루브릭 스코어링 4차원 평가
## 워크플로우
```
1. [로드] → 대상 스킬의 tests/test-cases.yaml 로드
2. [선택] → 테스트 모드 선택 (A/B | 회귀 | 체인 | 루브릭 단독)
3. [실행] → 테스트 프롬프트를 Claude Code에 실행
4. [측정] → 토큰 사용량, 출력 품질, 시간 측정
5. [스코어] → 4차원 루브릭 가중 평균 산출
6. [비교] → baseline vs with-skill 결과 비교
7. [보고] → 스코어 리포트 생성
```
## 실행 규칙
### 테스트 모드
#### Mode 1: A/B 테스트 (신규 스킬 검증)
skill-builder Phase 5에서 사용하는 기본 모드입니다.
**절차:**
1. **Baseline 실행**: 스킬 없이 동일 프롬프트를 Claude Code에 실행
2. **With-Skill 실행**: 스킬 로드 후 동일 프롬프트 실행
3. **비교 측정**:
| 메트릭 | 측정 방법 | 개선 기준 |
|--------|----------|-----------|
| 토큰 사용량 | input + output 토큰 | -10% 이상 감소 |
| 출력 품질 | 루브릭 스코어 | +0.15 이상 향상 |
| 정확성 | assertion 통과율 | 80% 이상 |
| 완전성 | 필수 출력 포함 여부 | 100% |
**샘플 사이즈 가이드:**
| 예상 개선율 | 최소 샘플 수 |
|-------------|------------|
| >= 20% | 2-3회 |
| 10-20% | 3-5회 |
| < 10% | 5회 이상 |
#### Mode 2: 회귀 테스트 (기존 스킬 수정 후)
스킬 수정 시 기존 테스트 케이스가 여전히 통과하는지 확인합니다.
**절차:**
1. 수정 전 마지막 테스트 결과를 baseline으로 로드
2. 수정 후 동일 테스트 케이스 재실행
3. 비교: 기존 통과 항목이 미통과로 변경되면 regression
**회귀 판정:**
| 변화 | 판정 |
|------|------|
| 기존 통과 → 여전히 통과 | PASS |
| 기존 통과 → 미통과 | REGRESSION (수정 롤백 필요) |
| 기존 미통과 → 통과 | IMPROVEMENT |
| 새로운 테스트 추가 | INFO (비교 불가) |
#### Mode 3: 체인 테스트 (스킬 조합 검증)
여러 스킬이 순차적으로 연결되는 체인을 테스트합니다. CLAUDE.local.md §3-3에 정의된 모든 체인이 검증 대상입니다.
##### 3-1. Chain Definition Format
```yaml
chain:
name: "blog-publishing"
description: "Blog post creation → AI slop review → optional media generation"
steps:
- skill: "moai-content:blog"
output_type: "markdown"
provides: ["blog_draft"]
- skill: "moai-core:ai-slop-reviewer"
input_from: ["blog_draft"]
output_type: "markdown"
provides: ["reviewed_draft"]
- skill: "moai-media:nano-banana"
input_from: ["reviewed_draft"]
output_type: "image_url"
optional: true
provides: ["cover_image"]
```
##### 3-2. Test Design Rules
**Happy Path Test** — 전체 체인을 대표 입력으로 실행하고 다음을 검증:
- 각 단계 출력이 다음 단계 입력 스키마와 호환
- 최종 출력이 문서화된 기대치와 일치
- 단계 간 데이터 손실 없음
**Failure Propagation Test** — 각 단계 실패를 시뮬레이션:
- 체인이 우아하게 정지하는가?
- 어느 단계가 실패했는지 사용자에게 전달되는가?
- 실패 지점에서 재개 가능한가?
**Optional Step Test** — 선택적 단계가 있는 체인:
- 선택 단계를 건너뛰어도 체인이 완료되는가
- 선택 단계가 실패해도 체인이 완료되는가
- 선택 단계 출력 없이도 결과가 유의미한가
**Output Compatibility Test** — 각 단계 경계에서:
- 출력 스키마가 다음 단계 기대 입력과 일치
- 언어 일관성 (한국어 출력 → 한국어 입력)
- 형식 일관성 (markdown → markdown)
##### 3-3. Test Case Template
```markdown
## Chain Test: <chain-name>
### TC-1: Happy Path
- Input: <대표 프롬프트>
- Expected Step 1 output: <설명>
- Expected Step 2 output: <설명>
- Expected Final output: <설명>
- Pass criteria: 모든 단계가 기대 출력 생성, 최종 결과 사용 가능
### TC-2: Step <N> Failure
- Input: <단계 N 실패 유발 프롬프트>
- Expected behavior: <체인 정지 / 건너뜀 / 재시도>
- Pass criteria: 사용자에게 전달, 데이터 손실 없음
### TC-3: Optional Step Skip
- Input: <선택 단계 트리거 없는 프롬프트>
- Expected behavior: <선택 단계 없이 체인 완료>
- Pass criteria: 최종 출력이 선택 단계 기여 없이도 유의미함
```
##### 3-4. Known Chains (CLAUDE.local.md §3-3 매핑)
| Chain | Steps | Status |
|-------|-------|--------|
| 사업계획서(PPT) | strategy-planner → pptx-designer → ai-slop-reviewer | 검증 대상 |
| 블로그 발행 | blog → ai-slop-reviewer → (optional) nano-banana | 검증 대상 |
| 제품 랜딩 | copywriting → landing-page → ai-slop-reviewer | 검증 대상 |
##### 3-5. 회귀 통합
체인 내 어떤 스킬이 수정되면:
1. 해당 스킬을 포함하는 모든 체인 테스트 재실행
2. 단계 경계 출력 호환성 집중 검증
3. 출력 스키마 변경 시 다운스트림 스킬 동반 갱신
#### Mode 4: 루브릭 단독 (Standalone Scoring)
특정 스킬의 SKILL.md 본문만으로 4차원 스코어링을 수행합니다. A/B 비교 없이 절대 평가가 필요할 때 사용합니다.
### 스코어링 루브릭 (4차원 가중 평균)
> 모든 스킬(신규/수정)은 **출시 전 본 루브릭으로 스코어링되어야 합니다**.
#### 차원 정의
| 차원 | 가중치 | 핵심 질문 |
|------|--------|----------|
| Correctness (정확성) | 30% | 출력이 의도한 목적을 달성하는가? |
| Completeness (완전성) | 25% | 에지 케이스와 일반 변형을 다루는가? |
| Clarity (명확성) | 25% | 사용자가 이해하고 결과를 활용할 수 있는가? |
| Efficiency (효율성) | 20% | 출력 품질 대비 토큰 사용량이 적정한가? |
#### Correctness — 30%
| 점수 | 설명 |
|------|------|
| 1.0 | 명시된 목적을 사실 오류 없이 완전히 달성. 모든 스킬 내 예시가 정확한 결과 산출. |
| 0.75 | 목적 달성하나 형식·스타일에서 경미한 편차. 사실 오류 없음. |
| 0.50 | 목적 대부분 달성하나 1-2개 핵심 측면 누락 또는 경미한 부정확성. |
| 0.25 | 목적 일부만 다룸. 큰 격차 또는 오류 존재. |
#### Completeness — 25%
| 점수 | 설명 |
|------|------|
| 1.0 | 문서화된 모든 use case 처리. 에지 케이스 커버. 에러 경로 문서화. 적용 안 될 때 대체 스킬 명시. |
| 0.75 | 핵심 use case 처리. 대부분 에지 케이스 커버. 에러 처리 존재하나 불완전. |
| 0.50 | 주요 use case 동작. 에지 케이스 미커버. 에러 처리 최소. |
| 0.25 | happy path만 동작. 에지 케이스 처리 없음. 에러 시 silent failure. |
#### Clarity — 25%
| 점수 | 설명 |
|------|------|
| 1.0 | 재독 없이 실행 가능. 워크플로우 명확. 출력 형식 예측 가능. 예시가 복사·붙여넣기 사용 가능. |
| 0.75 | 1회 독해 후 이해. 1-2 단계에서 미세한 모호성. 예시는 유용하나 변형 필요. |
| 0.50 | 섹션 재독 필요. 일부 단계 해석 여지. 예시는 있으나 추상적. |
| 0.25 | 워크플로우 혼란. 단계 해석 여지 큼. 구체적 예시 없음. |
#### Efficiency — 20%
| 점수 | 설명 |
|------|------|
| 1.0 | 출력 품질 대비 토큰 사용 최적. 중복 지시 없음. 점진적 공개 잘 활용. 필요할 때만 로드. |
| 0.75 | 토큰 사용 합리적. 경미한 중복 가능. 점진적 공개 대체로 효과적. |
| 0.50 | 토큰 사용 필요 대비 높음. 일부 섹션 단축 가능. 점진적 공개 미활용. |
| 0.25 | 과도한 토큰 사용. 보일러플레이트 大. 점진적 공개 부재. |
#### 통과 기준
- **최저 통과**: 가중 평균 >= 0.70
- **단일 차원 floor**: 어떤 차원도 0.50 미만이면 hard fail
- **신규 스킬**: 첫 평가에서 >= 0.75 필요
#### 가중 점수 계산
```
score = (correctness * 0.30) + (completeness * 0.25) + (clarity * 0.25) + (efficiency * 0.20)
```
#### 평가 절차
1. **Self-evaluation**: 스킬 작성자가 본 루브릭으로 self-score
2. **Peer evaluation**: 두 번째 평가자가 독립 스코어링 (Complex tier 권장)
3. **Gap resolution**: 차원별 점수 차이 > 0.15 시 토론·해결
4. **Final score**: 모든 평가자 평균
#### 스킬 Tier 통합
| 스킬 Tier | 필요 점수 | 평가 |
|-----------|-----------|------|
| Simple (<50줄) | >= 0.70 | Self-evaluation |
| Standard (50-150줄) | >= 0.70 | Self + 권장 peer |
| Complex (150줄+) | >= 0.75 | Self + 필수 peer |
#### Anti-Pattern Checks (boundary-verification 통합)
통과 점수 확정 전 다음을 확인:
- [ ] 다른 스킬이 커버하는 기능과 중복하지 않음