모든 스킬

systematic-debugging (obra/superpowers)

버그, 테스트 실패, 예기치 않은 동작을 수정안을 내기 전에 체계적으로 조사합니다.

superpowers-systematic-debugging: 작은 버그 세 개에서 측정 가능한 이득이 없고 토큰을 약 1.3배 사용합니다.

상황에 따라안전

Codex CLI · gpt-6-astra

22.4 / 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
출력 품질
4.5
토큰 및 시간 비용
3.0
설치 및 이식성
4.0
안전성
4.0

보안 리뷰

안전

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

설치

npx skills@latest add obra/superpowers --skill systematic-debugging

출처

고정 커밋: 2ce8aa15d05bd57213e6f746f953aafb7ded7a8b

테스트일: 2026-11-02

테스트한 과제

  • 작은 함수의 오프바이원 오류 — movavg.py의 moving_average가 잘못된 숫자를 반환합니다. moving_average([2, 4, 6, 8, 10], 3)은 [2, 3, 4, 6, 8]이어야 하는데 뒤쪽 값이 잘못 나옵니다. 원인을 찾아 수정하세요. 테스트: python3 -m unittest.
  • 파일 간 날짜 버그 — 주간 보고서 헤더가 연말연시에 잘못된 날짜를 표시합니다. 예를 들어 header('2026-W01')은 'Week 2026-W01: Dec 29 - Jan 04, 2026'이어야 합니다. 원인을 찾아 수정하세요.
  • 실행 순서에 따라 달라지는 테스트 실패 — tests/test_settings.py의 테스트는 단독으로 실행하면 통과하지만 파일 전체를 실행하면 test_b가 실패하고, 설정이 이전 호출의 태그를 이어받는 것 같습니다. 진단하고 수정하세요.

장점

  • 스킬 이름을 언급하지 않았는데도 적용되었습니다. 스킬 사용군 실행 6/6회에서 스킬 파일을 읽었습니다.

단점

  • 스킬 없이보다 측정 가능한 향상 없음(+0.00, 노이즈 범위 안).
  • 한 문장 프롬프트는 4.86점, 스킬 사용은 4.45점(-0.42).
  • 테스트 참고: 한 문장 프롬프트군(6회 실행)은 나중에 대조군·스킬 사용군과 다른 머신에서 추가한 그룹입니다.
  • 과제·그룹당 n=2이며, 약 1점 미만의 차이는 노이즈입니다.

리뷰

Codex CLI 0.166 (gpt-6-astra, low reasoning)을 Mac 테스트 머신에서 실행했고, 실행마다 새 임시 프로젝트와 임시 HOME/TMPDIR/캐시를 사용했습니다. 스킬 설치(스킬 사용군), 미설치(대조군), 미설치 상태에서 스킬의 핵심 요구사항만 한 문장으로 압축해 프롬프트에 덧붙인 경우(한 문장 프롬프트군)로 나눴으며, 과제·그룹당 2회씩 실행했습니다. 네트워크는 끄고 /tmp 쓰기는 차단했습니다. 프롬프트에는 스킬 이름을 언급하지 않았습니다. 채점은 프로그램 기반(숨은 테스트 / 심어 둔 문제 회수 / 제약 조건 검사 / 해당되는 경우 렌더링+OCR)으로 실행당 0–5점입니다. 어떤 점수도 LLM 심사자가 결정하지 않았습니다.

3개 그룹 비교

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

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

참고: 한 문장 프롬프트군(6회)은 나중에 다른 머신에서 추가되어 대조군·스킬 사용군과 환경이 다릅니다.

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

어떤 스킬인가

obra/superpowers의 systematic-debugging 스킬입니다. '버그, 테스트 실패, 예상치 못한 동작을 만나면 수정을 제안하기 전에 사용'하라고 되어 있습니다. 네 단계(근본 원인 조사, 패턴 찾기, 가설, 수정), 수정을 겹쳐 쌓지 말라는 규칙, 동반 노트(근본 원인 추적, 심층 방어, 조건 기반 대기), 테스트 압박 시나리오, 셸 스크립트 하나(find-polluter.sh, 테스트 파일에 대한 로컬 이분 탐색)로 구성됩니다.

테스트 방법

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

  1. 작은 함수의 오프바이원 — movavg.py의 moving_average가 잘못된 숫자를 반환합니다. moving_average([2, 4, 6, 8, 10], 3)은 [2, 3, 4, 6, 8]이어야 하는데 뒤쪽 값이 틀립니다. 원인을 찾아 수정하세요. 테스트: python3 -m unittest.
  2. 파일 간 날짜 버그 — 주간 보고서 머리글이 연말 즈음 잘못된 날짜를 표시합니다. 예를 들어 header('2026-W01')은 'Week 2026-W01: Dec 29 - Jan 04, 2026'이어야 합니다. 원인을 찾아 수정하세요.
  3. 순서 의존 테스트 실패 — tests/test_settings.py의 테스트는 개별적으로는 통과하지만 파일 전체를 실행하면 test_b가 실패하고, configs가 이전 호출의 태그를 이어받는 것 같습니다. 진단하고 수정하세요.

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

결과

세 번째 군에 전달한 한 문장 프롬프트: "체계적으로 디버깅하세요. 먼저 실패를 재현하고, 코드를 바꾸기 전에 근본 원인을 조사해 증거와 함께 한 번에 가설 하나를 세우고, 근본 원인에 대한 가장 작은 수정을 하며(추측을 겹쳐 쌓지 않음), 테스트로 검증하세요."

작업대조군 점수한 문장 프롬프트스킬 사용대조군 토큰한 문장 프롬프트 토큰스킬 사용 토큰스킬 읽음
t1-moving-average4.174.584.5860k62k69k2/2
t2-weekly-dates4.175.04.1778k104k109k2/2
t3-shared-state5.05.04.5885k127k118k2/2

평균 점수: 스킬 없이 4.45, 스킬 사용 시 4.45(델타 +0.0). 실행당 토큰: 75k 대 99k(1.33배), 시간 34초 대 45초. 한 문장 프롬프트군: 4.86(한 문장 프롬프트 대비 스킬의 이득: -0.42, 스킬 없는 경우 대비 한 문장 프롬프트의 이득: +0.42). 한 문장 프롬프트는 실행당 98k 토큰을 쓰므로, 스킬은 한 문장 프롬프트의 1.01배 비용입니다.

실제로 있었던 일

  • 결과: 두 군의 모든 실행에서 숨은 테스트가 통과했으므로 정확성에는 차이가 없었습니다.
  • 과정 검사 '코드를 편집하기 전에 테스트를 실행했는가'(먼저 재현): 대조군은 6회 중 4회 놓쳤고, 스킬 사용군도 6회 중 4회 놓쳤습니다. 스킬의 첫 단계가 '재현'인데도 스킬을 가진 에이전트는 여전히 아무것도 실행하기 전에 패치하는 경우가 많았습니다.
  • 스킬은 스킬 사용군 6/6 실행에서 읽혔으므로 발동은 문제가 아닙니다. 다만 이런 작은 버그에서는 행동을 바꾸지 못했습니다(버그는 코드를 읽어 찾을 수 있었습니다).
  • 비용: 실행당 토큰이 약 1.3배(89k 대 67k).
  • 한 문장 버전(먼저 재현, 한 번에 가설 하나, 가장 작은 수정, 검증): 평균 4.86으로 대조군 4.45, 스킬 4.45보다 높았고, 실행당 98k 토큰으로 대조군 75k(1.3배), 스킬 99k(1.0배)였습니다.
  • 차이는 편집 전에 테스트를 실행했는지에 있습니다. 한 문장 프롬프트는 6회 중 5회 테스트를 실행했고, 대조군은 6회 중 2회, 스킬은 6회 중 2회뿐이었습니다. 그 행동을 바꾼 것은 스킬이 아니라 그것을 문장으로 명시한 쪽입니다. 모든 군이 모든 실행에서 근본 원인을 설명하고 작은 diff로 모든 숨은 테스트를 통과했습니다.

항목별 점수

항목점수이유
1_output_quality4.45

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

2_lift_vs_no_skill2.0

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

3_trigger5.0스킬 사용군 6/6 실행에서 스킬 파일이 읽힘.
4_instructions_portability4
5_efficiency3토큰 1.33배(실행당 99k 대 75k), 시간 1.32배(45초 대 34초).
6_safety_hygiene4

이 테스트의 한계

  • 심어 둔 작은 버그 세 개(오프바이원, 파일 간 날짜 로직, 순서 의존 테스트 오염)로, 기준선도 고칠 만큼 쉬운 것들입니다.
  • 이 스킬은 여러 번 시도해야 하는 어려운 버그를 위해 설계됐습니다. 그런 버그는 테스트하지 않았습니다.
  • find-polluter.sh는 실행해 보지 않았습니다.
  • 작업·군당 n = 2: 약 1점 미만의 차이는 노이즈입니다.
  • 규칙 기반 채점은 검사가 볼 수 있는 것만 측정합니다. 취향이나 결과가 최선인지는 판단할 수 없습니다.

보안

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

결론

작은 버그 세 개에서 스킬은 토큰을 약 1.3배 더 쓰고 측정 가능한 변화를 만들지 못했습니다. 대조군과 스킬 모두 4.45점이었고, 편집 전에 테스트를 실행한 것도 둘 다 6회 중 2회뿐이었습니다. '먼저 재현하라'고 말한 한 문장 버전이 더 나았습니다(4.86, 6회 중 5회). 더 어려운 버그에서는 값어치를 할 수 있지만, 그 부분은 테스트하지 않았습니다.

트랜스크립트

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

t1-moving-average control-1: 점수 4.17, 토큰 60337, 초 30.6, 검사 3/4, 연 파일 없음
t1-moving-average control-2: 점수 4.17, 토큰 60293, 초 24.1, 검사 3/4, 연 파일 없음
t1-moving-average oneliner-1: 점수 4.17, 토큰 62543, 초 30.2, 검사 3/4, 연 파일 없음
t1-moving-average oneliner-2: 점수 5.0, 토큰 62033, 초 32.0, 검사 4/4, 연 파일 없음
t1-moving-average treatment-1: 점수 5.0, 토큰 69716, 초 31.0, 검사 4/4, 연 파일 systematic-debugging
t1-moving-average treatment-2: 점수 4.17, 토큰 69385, 초 26.6, 검사 3/4, 연 파일 systematic-debugging
t2-weekly-dates control-1: 점수 4.17, 토큰 78575, 초 38.8, 검사 3/4, 연 파일 없음
t2-weekly-dates control-2: 점수 4.17, 토큰 78005, 초 39.5, 검사 3/4, 연 파일 없음
t2-weekly-dates oneliner-1: 점수 5.0, 토큰 96141, 초 41.5, 검사 4/4, 연 파일 없음

18회 실행, 아티팩트 3개

샘플 출력

SOTA · With the skill: movavg.py (t1-moving-average, 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 보기