원클릭으로
benchmark
PR 생성 전 develop 대비 feature 브랜치의 성능을 비교하는 스킬. 번들 크기, 테스트 시간, API 응답 시간을 측정. P7 PR 생성 전 자동 트리거.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
PR 생성 전 develop 대비 feature 브랜치의 성능을 비교하는 스킬. 번들 크기, 테스트 시간, API 응답 시간을 측정. P7 PR 생성 전 자동 트리거.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Multi-worker 검수 스킬 (Codex + Gemini Double / Opus + Codex + Gemini Triple). 단일 Codex 검수 대비 100% 보완 카테고리 커버. 트리거: /cr-multi, /cr-double, /cr-triple, plan/spec 저장 후 자동(CR_MULTI_AUTO=on), plateau 3회 자동 승격.
Forge 하네스 읽기전용 레거시 감사: 낡은룰/중복/과대 전역컨텍스트/넓은 Skill/불필요 Hook·MCP/제품중복 분류. 트리거: /harness-legacy-scan
YouTube 영상을 트랜스크립트·댓글·설명란까지 수집해 비판적 분석·팩트체크·시스템 개선 제안을 생성한다. 사용자가 YouTube URL을 보내거나 영상 분석을 요청할 때 사용한다.
REST API 엔드포인트 HTTP 레벨 E2E 자동 테스트. Spec 또는 OpenAPI(Swagger) YAML/JSON을 읽어 엔드포인트별 테스트 케이스(happy path/인증 실패/잘못된 입력/경계값)를 자동 생성하고 curl로 실행한다. 응답 스키마를 OpenAPI 스펙과 대조해 드리프트를 감지한다. /qa 스킬이 서버/API 프로젝트 감지 시 자동 트리거. 직접 호출: /api-e2e <spec-path> [--base-url http://localhost:3000]
기획서를 CEO(비즈니스)→Design(UX)→Engineering(기술) 3관점 순차 리뷰 + Synthesizer 종합 + 독립 Evaluator 검증(5-Wave)하는 스킬. Phase 3 에이전트 회의 후 자동 트리거. (적대적 Codex 검수는 cr-triple/codex-review 별도 게이트.)
웹앱 LNB 전체 메뉴를 자동 순회하며 기능 오류·레이아웃 이슈를 탐지하고 bug-report 표준 포맷(BUG-NNN, 6하원칙, INDEX.md)으로 저장. 트리거: 'QA 해줘', '버그 찾아줘', '메뉴 돌아봐줘', URL+로그인 정보 주면서 탐색 요청, 레이아웃 확인 요청.
| name | benchmark |
| description | PR 생성 전 develop 대비 feature 브랜치의 성능을 비교하는 스킬. 번들 크기, 테스트 시간, API 응답 시간을 측정. P7 PR 생성 전 자동 트리거. |
| model | haiku |
응답 간결성 (Haiku 토큰 최적화): 구조화된 번호 목록 + 핵심 사실 위주로 답하세요. 장황한 설명·반복·메타 코멘트 금지. 각 항목 2문장 이내, 전체 300토큰 이하 목표.
역할: 당신은 PR 생성 전 feature 브랜치의 성능을 develop baseline과 비교하는 성능 벤치마크 전문가입니다.
컨텍스트: P7 PR 생성 직전 자동 트리거되거나 /benchmark 호출 시 실행됩니다.
출력: 번들 크기·테스트 시간·API 응답 시간 비교 결과를 PR 본문에 삽입할 마크다운 테이블로 반환합니다.
아래 생각이 들면 더 엄격하게 본다:
PR 생성 직전 develop baseline 대비 feature 브랜치 성능을 비교한다.
성능 회귀 없이 머지한다. +10% = WARN (PR에 기록), +25% = [STOP].
(manual) /benchmark # 전체 메트릭 /benchmark --metric bundle # 번들 크기만 /benchmark --baseline main # main 기준 비교
(auto-trigger) P7 PR 생성 직전 → 자동 실행
| 메트릭 | 측정 방법 | 적용 조건 |
|---|---|---|
| 번들 크기 | build 후 dist/ 크기 비교 | 웹 프로젝트 |
| 테스트 시간 | verify.sh code 실행 시간 비교 | 전체 |
| API 응답 시간 | 주요 엔드포인트 벤치마크 | API 프로젝트 |
| 빌드 시간 | build 명령 실행 시간 | 전체 |
git stash → develop 체크아웃 → baseline 측정 → 복귀| 변화량 | 판정 | 행동 |
|---|---|---|
| < +10% | PASS | PR 진행 |
| +10% ~ +25% | WARN | PR 본문에 경고 기록 |
| > +25% | FAIL | [STOP] 성능 최적화 필요 |
release-config.json의 benchmarkEnabled: falsePR 본문에 인라인 삽입:
## Benchmark Report
| Metric | Baseline | Current | Δ | Status |
|--------|----------|---------|---|--------|
| Bundle | 245KB | 251KB | +2.4% | ✅ PASS |
| Tests | 12.3s | 13.1s | +6.5% | ✅ PASS |
브라우저 런타임 성능 회귀를 번들/테스트 시간 게이트와 병렬로 측정한다. 웹 프로젝트(benchmarkEnabled: true)에서 자동 활성화.
| 메트릭 | Good | Needs Improvement | Poor(FAIL) |
|---|---|---|---|
| LCP (Largest Contentful Paint) | < 2.5s | 2.5s ~ 4.0s | > 4.0s |
| FID / INP (Interaction to Next Paint) | < 100ms | 100ms ~ 300ms | > 300ms |
| CLS (Cumulative Layout Shift) | < 0.1 | 0.1 ~ 0.25 | > 0.25 |
| FCP (First Contentful Paint) | < 1.8s | 1.8s ~ 3.0s | > 3.0s |
| TTFB (Time to First Byte) | < 0.8s | 0.8s ~ 1.8s | > 1.8s |
판정 기준: Good = PASS / Needs Improvement = WARN (PR 본문에 기록) / Poor = FAIL([STOP]).
// playwright run-code 로 CWV 수집
playwright-cli run-code "async page => {
await page.goto(TARGET_URL, { waitUntil: 'networkidle' });
const entries = await page.evaluate(() => {
const nav = performance.getEntriesByType('navigation')[0];
const paint = performance.getEntriesByType('paint');
const lcp = performance.getEntriesByType('largest-contentful-paint').at(-1);
const cls = performance.getEntriesByType('layout-shift')
.reduce((sum, e) => sum + e.value, 0);
return {
ttfb: nav?.responseStart - nav?.requestStart,
fcp: paint.find(e => e.name === 'first-contentful-paint')?.startTime,
lcp: lcp?.startTime,
cls: cls,
};
});
return entries;
}"
cwv-baseline.json 저장# baseline 캡처 (develop 브랜치)
playwright-cli eval "JSON.stringify(performance.getEntriesByType('navigation')[0])" > cwv-baseline.json
# 비교 리포트 포맷 (기존 번들 리포트와 병렬 출력)
## Benchmark Report — Core Web Vitals
| Metric | Baseline | Current | Δ | Status |
|----------|----------|---------|---------|-------------|
| LCP | 1.8s | 2.1s | +16.7% | ⚠️ WARN |
| INP | 68ms | 72ms | +5.9% | ✅ PASS |
| CLS | 0.05 | 0.04 | -20% | ✅ PASS |
기존 번들/테스트 스킵 조건과 동일 + 로컬 dev 서버 미기동 시(localhost 접근 불가) 자동 스킵 후 WARN 기록.
benchmark 스킬 결과물 완성 후 독립 Evaluator Subagent가 품질을 2차 검증한다.
원칙: 생성자 ≠ 평가자. 자기평가 편향 방지.
Agent(
subagent_type="general-purpose",
model="sonnet",
prompt="""
당신은 benchmark 스킬 결과물의 독립 품질 검증자입니다.
아래 기준으로 결과물을 평가하세요:
1. 번들 크기, 테스트 시간, API 응답 시간(또는 빌드 시간) 3개 지표가 모두 측정됐는지 확인한다. 적용 조건에 해당하는 지표가 누락됐으면 FAIL.
2. 각 지표에 baseline(develop 브랜치) 수치 대비 % 변화량이 명시됐는지 확인한다. 절대 수치만 있고 % 변화가 없으면 FAIL.
3. 임계값(PASS/WARN/FAIL 기준: +10%/+25%)이 결과물에 적용됐는지 확인한다. 수치가 있어도 판정 없이 끝났으면 FAIL.
판정: PASS(기준 충족) / FAIL(재작업 필요)
피드백 형식: [파일명+섹션] — [이유] → [방법]
"""
)
피드백 루프:
실패 시 [[pev-self-correction]] 적용
병렬/다단계 실행 = Workflow 도구로 컨텍스트 격리 + resume 지원. 패턴: sequential (git stash/checkout 직렬 필수).
실행: Workflow({ script: Bash("cat ~/.claude/skills/benchmark/workflow.js"), args: { branch, baseline } })
CLAUDE_CODE_DISABLE_WORKFLOWS=1 시 기존 /benchmark 방식 fallback.