본문 바로가기
C.W.K.
Stream
Lesson 06 of 07 · published

Skill 테스트와 반복 개선

~14 min · skills, testing, iteration, evaluation

Level 0🌱 입문자
0 XP0/70 lessons0/11 achievements
0/120 XP to next level120 XP to go0% complete

Skill도 동작을 바꾸는 코드니까 회귀 검사가 필요해

Skill의 문제는 일반 테스트가 잡지 못하는 방식으로 결과를 조용히 바꾼다는 거야. 입력 사례와 기대 결과의 핵심 모양을 준비하고, 같은 Skill을 반복 실행해 diff를 사람이 읽는 작은 평가 장치를 만들어.

본문을 바꿨을 때, paths: 자료가 달라졌을 때, 바탕 모델이 올라갔을 때, 변경을 합치기 전에는 다시 돌려야 해. 생성 결과를 byte 단위로 같게 만들 필요는 없어. 구조와 핵심 주장, 없어야 할 발명이 그대로인지 눈으로 확인하는 것만으로도 큰 흔들림을 잡을 수 있어.

평가는 4번 다시 돌려. 1) 본문 변경, 2) paths: 변경, 3) 바탕 모델 업그레이드, 4) 변경을 합치기 전이야.

Code

하나의 Skill을 위한 평가 하네스·text
.claude/skills/security-audit/
├── SKILL.md
└── tests/
    ├── inputs/
    │   ├── safe-route.ts          ← shouldn't flag anything
    │   ├── sql-injection.ts       ← should flag CWE-89 high
    │   └── auth-bypass.ts         ← should flag CWE-287 high
    ├── expected/
    │   ├── safe-route.expected.md
    │   ├── sql-injection.expected.md
    │   └── auth-bypass.expected.md
    └── run.sh
tests/run.sh — 입력마다 실행하고 diff 확인·bash
#!/usr/bin/env bash
set -euo pipefail
cd "$(dirname "$0")"

for input in inputs/*.ts; do
  name=$(basename "$input" .ts)
  expected="expected/${name}.expected.md"
  actual=$(claude -p "/security-audit $input" \
    --output-format text --allowedTools "Read")
  echo "=== $name ==="
  diff <(echo "$actual") "$expected" || echo "DIFF"
done

External links

Exercise

Skill 하나를 대상으로 입력 세 개짜리 평가 하네스를 만들어. 기대 결과를 한 번 저장하고 하네스를 실행한 뒤 diff를 눈으로 확인해. 그다음 Skill을 조금 수정해 다시 실행하고, 무엇이 달라졌는지 적어 봐.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.