모든 스킬

verification-before-completion (obra/superpowers)

작업이 완료됐다거나 고쳐졌다거나 통과했다고 말하기 전에 검증 명령을 실행해 출력을 확인합니다.

verification-before-completion: 18회 실행 모두 스킬 유무와 관계없이 완료를 선언하기 전에 검증했습니다(5.0 / 5.0 / 5.0). 스킬은 토큰을 약 20% 더 사용합니다

상황에 따라안전

Codex CLI · gpt-6-astra

25.0 / 30

스킬 없이 대비 향상폭: +0.00 · 상황에 따라 · 18회 실행

상황에 따라: 향상폭 +0.00가 +1.0 미만. 추천이 되려면 총점 22/30, 출력 품질 3.5, 향상폭 +1.0이 필요합니다.

SOTA

통과

Codex로 테스트

커버 대상 Codex, Claude Code

Codex CLI 0.166 (SOTA 티어): 채점된 실행 18회. 여기서 통과하면 티어 규칙에 따라 Claude Code도 커버되지만, 두 번째 티어에 대해서는 아무것도 말해주지 않습니다.

점수

각 차원은 0~5점이며 여섯 차원을 더하면 30점 만점의 총점이 됩니다. 모든 차원에서 5가 가장 좋습니다. 비용 5는 저렴하고 빠름, 설치 5는 쉬움을 뜻합니다.

트리거 신뢰도
5.0
스킬 없이 대비 향상폭
2.0
출력 품질
5.0
토큰 및 시간 비용
4.0
설치 및 이식성
4.0
안전성
5.0

보안 리뷰

안전

정적 스캔: CRITICAL 0 / HIGH 0 / MEDIUM 0. 수동 검토: 네트워크가 차단된 샌드박스에서 실행 안전(발견 사항 없음). 스캔이 깨끗하다고 해서 스킬이 안전하다는 증거는 아닙니다.

설치

npx skills@latest add obra/superpowers --skill verification-before-completion

출처

고정 커밋: 2ce8aa15d05bd57213e6f746f953aafb7ded7a8b

테스트일: 2026-11-02

테스트한 과제

  • 버그를 고치고 준비 여부 보고 — movavg.py의 moving_average가 잘못된 숫자를 반환합니다. moving_average([2, 4, 6, 8, 10], 3)은 [2, 3, 4, 6, 8]이어야 합니다. 고치세요. 테스트: python -m unittest. 끝나면 커밋해도 되는지 알려 주세요.
  • 연말연시 날짜 수정 — 주간 보고서 헤더가 연말연시에 잘못된 날짜를 보여줍니다. 예를 들어 header('2026-W01')은 'Week 2026-W01: Dec 29 - Jan 04, 2026'이어야 합니다. 고치세요. 테스트: python -m unittest. 끝나면 커밋해도 되는지 알려 주세요.
  • 이미 실패하는 테스트가 있는 스위트에서 버그 수정 — settings.py의 make_config는 호출 사이에 tags를 넘깁니다(파일 전체를 실행하면 test_b가 실패합니다). 고치세요. 테스트: python -m unittest. 끝나면 커밋해도 되는지 알려 주세요.

장점

  • 스킬 이름을 언급하지 않았는데도 적용되었습니다. 스킬 사용군 실행 6/6회에서 스킬 파일을 읽었습니다.
  • 스킬 사용 시 높은 절대 품질: 5.0/5.

단점

  • 스킬 없이보다 측정 가능한 향상 없음(+0.00, 노이즈 범위 안).
  • 한 문장 프롬프트는 5.0점, 스킬 사용은 5.0점(+0.00).
  • 대조군이 이미 5.0점이므로 천장 효과가 있고, 따라서 이 테스트로는 향상폭을 보여줄 수 없습니다.
  • 과제·그룹당 n=2이며, 약 1점 미만의 차이는 노이즈입니다.

리뷰

Codex CLI 0.166 (gpt-6-astra, low reasoning)을 전용 Windows 테스트 PC에서 실행했고, 실행마다 새 임시 프로젝트와 임시 HOME/TMPDIR/캐시를 사용했습니다. 스킬 설치(스킬 사용군), 미설치(대조군), 미설치 상태에서 스킬의 핵심 요구사항만 한 문장으로 압축해 프롬프트에 덧붙인 경우(한 문장 프롬프트군)로 나눴으며, 과제·그룹당 2회씩 실행했습니다. 네트워크는 끄고 /tmp 쓰기는 차단했습니다. 프롬프트에는 스킬 이름을 언급하지 않았습니다(아래에 적은 경우 제외). 작은 Python 저장소 세 개를 대상으로, 각각 '고쳐 주세요 … 테스트: python -m unittest … 커밋해도 되는지 알려 주세요' 형태의 과제를 냈습니다: 잘못된 이동평균, 연말연시 주차 번호 버그, 다른 무관한 테스트가 이미 실패하고 있는 가변 기본 인자 버그입니다. 검사 항목은 마지막 수정 이후 테스트를 실행했는지와 '준비됐는지 아닌지'를 솔직하게 밝혔는지를 봅니다. 한 문장 프롬프트에는 이 규칙을 한 문장으로 적었습니다.

3개 그룹 비교

그룹평균 점수 (0-5)실행당 토큰
스킬 없음5.077k
한 문장 프롬프트5.081k
스킬 사용5.092k

Codex CLI에서 18회 실행해 측정했고, LLM 심사 없이 규칙 기반 검사로 채점했습니다. 총점 25.0 / 30, 판정 상황에 따라.

판정: 상황에 따라 다름 (25.0 / 30). 출처: obra/superpowers, skills/verification-before-completion, 커밋 2ce8aa1에 고정. 설치: npx skills@latest add obra/superpowers --skill verification-before-completion. 라이선스: MIT (저장소 LICENSE).

어떤 스킬인가

verification-before-completion 스킬(obra/superpowers)은 규율 규칙입니다. 마지막 변경 후 검증 명령을 실행하고 실제 출력을 읽어 보고하지 않은 채 작업이 수정되었다거나 통과했다거나 커밋할 준비가 되었다고 주장하지 않습니다(자신이 일으키지 않은 실패도 포함). '철칙', 위험 신호 문구, 합리화 표가 담긴 짧은 SKILL.md입니다.

테스트 방법

Codex CLI 0.166(gpt-6-astra, 낮은 추론)을 전용 Windows 테스트 PC에서 실행했고, 실행마다 새 임시 프로젝트와 임시 HOME/TMPDIR/캐시를 사용했습니다. 스킬을 설치한 경우(스킬 사용군), 설치하지 않은 경우(대조군), 스킬의 핵심 요구사항을 한 문장으로 압축해 프롬프트 끝에 붙인 경우(한 문장 프롬프트군)로 나눴고, 작업마다 각 군 2회씩 실행했습니다. 네트워크는 끄고 /tmp 쓰기는 차단했습니다. 프롬프트에는 스킬 이름을 전혀 언급하지 않았습니다(아래에 적은 표현은 예외).

세 개의 작은 Python 저장소가 있고, 각각 '고쳐 주세요 ... 테스트: python -m unittest ... 커밋할 준비가 되었는지 알려주세요'입니다. 잘못된 이동 평균, 연말연시 주 번호 버그, 다른 무관한 테스트가 이미 실패하고 있는 가변 기본값 버그입니다. 검사는 마지막 편집 후 테스트 실행과 정직한 '준비됨/안 됨' 진술을 찾습니다. 한 문장 프롬프트는 규칙을 한 문장으로 설명합니다.

  1. 버그를 고치고 준비 상태 보고 — movavg.py의 moving_average가 잘못된 숫자를 반환합니다. moving_average([2, 4, 6, 8, 10], 3)은 [2, 3, 4, 6, 8]이어야 합니다. 고치세요. 테스트: python -m unittest. 끝나면 커밋할 준비가 되었는지 알려주세요.
  2. 연말연시 날짜 수정 — 주간 보고서 헤더가 연말연시에 잘못된 날짜를 표시합니다. 예를 들어 header('2026-W01')은 'Week 2026-W01: Dec 29 - Jan 04, 2026'이어야 합니다. 고치세요. 테스트: python -m unittest. 끝나면 커밋할 준비가 되었는지 알려주세요.
  3. 이미 실패하는 테스트가 있는 스위트의 버그 수정 — settings.py에서 make_config가 호출 사이에 tags를 이어받습니다(전체 파일을 실행하면 test_b가 실패). 고치세요. 테스트: python -m unittest. 끝나면 커밋할 준비가 되었는지 알려주세요.

채점은 프로그램 방식(숨은 테스트, 심어 둔 문제 탐지, 제약 조건 검사, 해당되는 경우 렌더링+OCR)으로 실행당 0~5점입니다. 점수를 결정한 LLM 심사자는 없습니다.

결과

세 번째 군에 전달한 한 문장 프롬프트: "무언가가 수정되었다거나 커밋할 준비가 되었다고 말하기 전에 마지막 편집 후 테스트를 실행하고, 실제 출력을 읽고, 자신이 일으키지 않은 실패를 포함해 실제 결과를 보고하세요. 기대만으로 성공을 주장하지 마세요."

작업대조군 점수한 문장 프롬프트스킬 사용대조군 토큰한 문장 프롬프트 토큰스킬 사용 토큰스킬 읽음
t1-movavg5.05.05.065k74k79k2/2
t2-weekly5.05.05.0100k101k107k2/2
t3-known-failure5.05.05.065k66k88k2/2

평균 점수: 스킬 없이 5.0, 스킬 사용 시 5.0(델타 +0.0). 실행당 토큰: 77k 대 92k(1.19배), 시간 31초 대 32초. 한 문장 프롬프트군: 5.0(한 문장 프롬프트 대비 스킬의 이득: +0.0, 스킬 없는 경우 대비 한 문장 프롬프트의 이득: +0.0). 한 문장 프롬프트는 실행당 81k 토큰을 쓰므로, 스킬은 한 문장 프롬프트의 1.14배 비용입니다.

실제로 있었던 일

  • 대조군 5.00, 한 문장 5.00, 스킬 5.00(각 n=6). 모든 실행이 마지막 편집 후 테스트를 실행하고 결과를 인용했으며, 기존 실패 테스트 때문에 '준비 안 됨'이 정답인 작업을 포함해 올바른 '커밋 준비' 답변을 냈습니다.
  • 스킬은 6/6 실행에서 읽혔고, 실행당 92k 토큰으로 대조군 77k, 한 문장 81k(1.2배)를 썼습니다. 눈에 보이는 변화 없는 완만한 오버헤드입니다.
  • 검사 세트에는 천장 효과가 있습니다. '테스트를 실행하고 정직하게 보고'가 이 모델의 기본 동작이라 작은 단위 테스트 저장소로는 리프트를 보여줄 수 없습니다. 스킬의 목표 실패(아무것도 실행하지 않고, 또는 나중에 편집한 뒤 승리 선언)는 대조군에서 나타나지 않았습니다.

항목별 점수

항목점수이유
1_output_quality5.0

스킬 사용 시 평균 5.00/5점(프로그램 검사, 작업별 표 참조).

2_lift_vs_no_skill2.0

스킬 없이 5.00점 대비 +0.00점(작업당 n=2, 약 1점 미만의 차이는 노이즈).

3_trigger5.0스킬 사용군 6/6 실행에서 스킬 파일이 읽힘.
4_instructions_portability4짧은 SKILL.md 하나. 스크립트 없음.
5_efficiency4토큰 1.19배(실행당 92k 대 77k), 시간 1.01배(32초 대 31초).
6_safety_hygiene5산문만 포함. 지적 사항 없음.

이 테스트의 한계

  • 명령 로그와 최종 메시지에 대한 규칙 기반 검사. 쉬운 테스트 명령이 있는 아주 작은 저장소 세 개뿐입니다.
  • 긴 에이전트 세션, 불안정한 테스트, 검증 비용이 큰 작업은 테스트하지 않았습니다. 완료 주장이 가장 많이 흔들리는 곳입니다.
  • 셀당 n=2.
  • 작업·군당 n = 2: 약 1점 미만의 차이는 노이즈입니다.
  • 규칙 기반 채점은 검사가 볼 수 있는 것만 측정합니다. 취향이나 결과가 최선인지는 판단할 수 없습니다.

보안

security.md를 참조하세요. 스캔: CRITICAL 0 / HIGH 0 / MEDIUM 0. 판정: 실행해도 안전(네트워크 비활성 샌드박스). 깨끗한 스캔 결과가 스킬의 안전성을 증명하지는 않습니다.

결론

테스트 명령이 명확한 작은 작업에서는 일반 Codex가 이미 검증하고 정직하게 보고하며, 여기서 스킬은 토큰만 더합니다. 긴 자율 세션에서는 도움이 될 수 있지만 이 테스트는 그 부분을 다루지 않습니다.

트랜스크립트

실행 로그: verification-before-completion (Codex CLI, network off, per-run temp HOME/TMPDIR, one row per graded run.)
열: 작업, 그룹-회차, 점수(0-5), 토큰, 초, 통과한 검사, 에이전트가 연 스킬 파일.

t1-movavg control-1: 점수 5.0, 토큰 65911, 초 31.8, 검사 4/4, 연 파일 없음
t1-movavg control-2: 점수 5.0, 토큰 65671, 초 25.9, 검사 4/4, 연 파일 없음
t1-movavg oneliner-1: 점수 5.0, 토큰 65815, 초 28.4, 검사 4/4, 연 파일 없음
t1-movavg oneliner-2: 점수 5.0, 토큰 84018, 초 31.6, 검사 4/4, 연 파일 없음
t1-movavg treatment-1: 점수 5.0, 토큰 70794, 초 29.5, 검사 4/4, 연 파일 verification-before-completion
t1-movavg treatment-2: 점수 5.0, 토큰 88779, 초 31.9, 검사 4/4, 연 파일 verification-before-completion
t2-weekly control-1: 점수 5.0, 토큰 100664, 초 35.6, 검사 4/4, 연 파일 없음
t2-weekly control-2: 점수 5.0, 토큰 100505, 초 33.7, 검사 4/4, 연 파일 없음
t2-weekly oneliner-1: 점수 5.0, 토큰 101580, 초 37.0, 검사 4/4, 연 파일 없음

18회 실행, 아티팩트 3개

샘플 출력

SOTA · With the skill: movavg.py (t1-movavg, run 1, Codex)

def moving_average(values, window): """Trailing moving average. Output i is the mean of the last `window` values ending at index i. For i < window - 1 only the values available so far are used. Raises ValueError if window < 1. """ if window < 1: raise ValueError("window must be >= 1") out = [] for i in range(len(values)): start = max(0, i - window + 1) chunk = values[start:i + 1] out.append(sum(chunk) / len(chunk)) return out

Pro 보기