모든 스킬

caveman-review (JuliusBrussee/caveman)

코드 리뷰를 발견 사항마다 한 줄로 정리해 위치, 문제, 수정안만 남깁니다.

caveman-review: 코드 리뷰를 발견 사항별 짧은 한 줄 중심으로 바꾸며 토큰은 같은 수준입니다(대조군 3.3, 스킬 사용군 4.2, 한 문장 프롬프트군 4.8). 다만 스킬이 규정한 L<line> 줄 형식은 일부 실행에서만 지켜졌고, 형식을 한 문장으로 적은 프롬프트가 더 높은 점수를 받습니다.

상황에 따라안전

Codex CLI · gpt-6-astra

25.1 / 30

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

상황에 따라: 향상폭 +0.90가 +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.9
출력 품질
4.2
토큰 및 시간 비용
5.0
설치 및 이식성
4.0
안전성
4.0

보안 리뷰

안전

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

설치

npx skills@latest add JuliusBrussee/caveman --skill caveman-review

출처

고정 커밋: 9b68f7ed12b05e7efaff18e65c5a3fc2849fd0a4

테스트일: 2026-11-02

테스트한 과제

  • 작은 서비스 모듈 리뷰 — 병합하기 전에 orders_service.py를 리뷰하세요. 발견한 문제를 심각한 것부터 나열하세요. 파일은 변경하지 마세요.
  • 인증 헬퍼 리뷰 — auth_handlers.py를 리뷰하세요. 로그인 플로를 위해 방금 작성한 파일입니다. 문제를 심각한 것부터 나열하세요. 파일은 변경하지 마세요.
  • 작성된 표준과 스펙에 비추어 최신 커밋 리뷰 — 최신 커밋(HEAD~1 이후 변경 사항)을 CODING_STANDARDS.md와 SPEC.md에 비추어 리뷰하세요. 모든 위반 사항을 심각한 것부터 나열하세요. 파일은 변경하지 마세요.

장점

  • 스킬 없이보다 평균 점수를 3.26에서 4.16으로 끌어올렸습니다(+0.90).
  • 스킬 이름을 언급하지 않았는데도 적용되었습니다. 스킬 사용군 실행 6/6회에서 스킬 파일을 읽었습니다.
  • 토큰 오버헤드 없음: 스킬 없이의 1.02배 토큰을 사용합니다.

단점

  • 한 문장 프롬프트는 4.83점, 스킬 사용은 4.16점(-0.67).
  • 과제·그룹당 n=2이며, 약 1점 미만의 차이는 노이즈입니다.

리뷰

Codex CLI 0.166 (gpt-6-astra, low reasoning)을 전용 Windows 테스트 PC에서 실행했고, 실행마다 새 임시 프로젝트와 임시 HOME/TMPDIR/캐시를 사용했습니다. 스킬 설치(스킬 사용군), 미설치(대조군), 미설치 상태에서 스킬의 핵심 요구사항만 한 문장으로 압축해 프롬프트에 덧붙인 경우(한 문장 프롬프트군)로 나눴으며, 과제·그룹당 2회씩 실행했습니다. 네트워크는 끄고 /tmp 쓰기는 차단했습니다. 프롬프트에는 스킬 이름을 언급하지 않았습니다(아래에 적은 경우 제외). 작은 Python 파일에 각각 8개의 문제를 심어 둔 세 가지 리뷰 과제를 사용했습니다. 주문 서비스(SQL 인젝션, 권한 검사 누락, 하드코딩된 키가 로그에 남는 문제, 부동소수점 금액 등), 인증 핸들러 파일, 그리고 최신 커밋을 CODING_STANDARDS.md와 SPEC.md에 비추어 리뷰하는 과제입니다. 프롬프트는 리뷰를 요청하며, 심각한 것부터 제시하고 파일은 변경하지 말라고 합니다. 한 문장 프롬프트군은 줄 형식과 얼버무리지 말라는 규칙을 제시합니다.

3개 그룹 비교

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

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

판정: 상황에 따라 다름 (25.1 / 30). 출처: JuliusBrussee/caveman, skills/caveman-review, 커밋 9b68f7e에 고정. 설치: npx skills@latest add JuliusBrussee/caveman --skill caveman-review. 라이선스: MIT(저장소 LICENSE).

무엇인가

caveman-review 스킬(JuliusBrussee/caveman)은 간결한 코드 리뷰 스타일을 정의합니다. 발견 사항 하나를 L<line>: <problem>. <fix>. 형식의 한 줄로 적고, 심각도 접두어(bug, risk, nit, q)를 선택적으로 붙입니다. 심볼 이름은 정확히 백틱으로 감싸고 구체적인 수정안을 제시하며, 얼버무리거나 칭찬하거나 코드가 하는 일을 되풀이하지 않습니다.

테스트 방법

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

작은 Python 파일을 대상으로, 각 파일에 문제 8개를 심어 둔 리뷰 작업 세 가지를 수행했습니다. 주문 서비스(SQL 인젝션, 권한 검사 누락, 하드코딩된 키 로깅, 부동소수점 금액 등), 인증 핸들러 파일, 그리고 CODING_STANDARDS.md와 SPEC.md를 기준으로 최신 커밋을 리뷰하는 작업입니다. 프롬프트는 리뷰를 요청하며 가장 심각한 문제부터 제시하고 파일은 변경하지 말라고 지시합니다. 한 문장 프롬프트에는 줄 형식과 얼버무리지 말라는 규칙이 담겨 있습니다.

  1. 작은 서비스 모듈 리뷰 — 병합하기 전에 orders_service.py를 리뷰해 주세요. 발견한 문제를 가장 심각한 것부터 나열해 주세요. 어떤 파일도 변경하지 마세요.
  2. 인증 헬퍼 리뷰 — auth_handlers.py를 리뷰해 주세요. 로그인 플로우를 위해 방금 작성한 파일입니다. 문제를 가장 심각한 것부터 나열해 주세요. 어떤 파일도 변경하지 마세요.
  3. 작성된 표준과 명세에 비추어 최신 커밋 리뷰 — CODING_STANDARDS.md와 SPEC.md를 기준으로 내 최신 커밋(HEAD~1 이후 변경 사항)을 리뷰해 주세요. 모든 위반 사항을 가장 심각한 것부터 나열해 주세요. 어떤 파일도 변경하지 마세요.

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

결과

세 번째 군에 전달한 한 문장 프롬프트: "각 발견 사항을 L<line>: <problem>. <fix>. 형식의 한 줄로 쓰고, 심각도 접두어(bug, risk, nit, q)를 선택적으로 붙이세요. 심볼 이름은 정확히 백틱으로 감싸고 구체적인 수정안을 제시하세요. 얼버무리거나 칭찬하거나 군더더기를 늘어놓지 말고, 코드가 하는 일을 되풀이하지 마세요."

작업대조군 점수한 문장 프롬프트스킬 사용대조군 토큰한 문장 프롬프트 토큰스킬 사용 토큰스킬 읽음
t1-orders3.064.664.1574k64k61k2/2
t2-auth3.194.923.3173k64k88k2/2
t3-diff3.534.925.059k50k60k2/2

평균 점수: 스킬 없음 3.26, 스킬 사용 4.16(차이 +0.9). 실행당 토큰: 69k 대 70k(1.02배), 시간: 56초 대 54초. 한 문장 프롬프트 군: 4.83(한 문장 프롬프트 대비 스킬의 이득 -0.67, 스킬 없음 대비 한 문장 프롬프트의 이득 +1.57). 한 문장 프롬프트의 실행당 토큰은 60k이므로 스킬은 한 문장 프롬프트의 1.17배 비용을 씁니다.

무슨 일이 있었나

  • 대조군 3.26, 스킬 사용 4.16, 한 문장 프롬프트 4.83(각 n=6)입니다. 심어 둔 문제를 찾아내는 성능은 모든 군이 비슷했습니다(8개 중 5~7개). 거의 모든 실행이 레이트 리밋 누락 문제를 놓쳤습니다. 차이는 주로 형식과 길이에서 나왔습니다.
  • 형식: 대조군은 6회 실행 어디에서도 L<n>: 줄 형식을 쓰지 않았습니다(주문 리뷰는 굵은 심각도가 붙은 번호 목록). 스킬 사용군은 커밋 리뷰 작업(2회 모두 5.0)과 주문 리뷰 1회에서 형식을 지켰지만, 인증 작업에서는 줄이 번호와 굵은 심각도로 시작해 형식 검사가 2/2회 실패했고 점수는 3.3에 머물렀습니다. 한 문장 프롬프트는 거의 모든 실행에서 통과했습니다.
  • 간결성: 대조군의 리뷰는 주문과 인증 작업에서 233~332단어였습니다(220단어에서 만점). 스킬 사용군의 인증 리뷰도 약 300단어였고, 한 문장 프롬프트는 거의 모든 실행에서 기준 아래를 유지했습니다.
  • 어느 군도 얼버무리는 표현을 쓰지 않았습니다. 토큰: 실행당 스킬 사용 70k, 한 문장 프롬프트 60k, 대조군 69k(대조군의 1.01배). 스킬 사용군 6/6회 실행에서 스킬을 읽었습니다.

항목별 점수

항목점수근거
1. 출력 품질4.16

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

2. 스킬 없음 대비 향상2.9

스킬 없음 3.26 대비 +0.90점(작업당 n=2, 약 1점 미만은 노이즈).

3. 트리거5.0스킬 사용군 6/6회 실행에서 스킬 파일을 읽었습니다.
4. 지침 이식성4SKILL.md만 사용합니다.
5. 효율성5토큰 1.02배(실행당 70k 대 69k), 시간 0.96배(54초 대 56초).
6. 안전성·위생4산문만 포함합니다. security.md 참조.

이 테스트의 한계

  • 최종 메시지에 대한 규칙 기반 검사: 심어 둔 문제 탐지율, L<n> 형식의 줄 시작 정규식, 단어 수, 얼버무리는 표현 목록. 수정안의 품질은 평가하지 않았습니다.
  • 형식 정규식은 각 줄의 시작을 엄격하게 봅니다. '- L17 - High: ...' 같은 불릿은 일치로 인정하지만, 굵은 심각도가 붙은 번호 목록은 인정하지 않습니다.
  • '파일을 변경하지 않음' 검사는 모든 실행에서 통과해 표시하지 않았습니다.
  • 셀당 n=2, 작은 파일.
  • 작업·군당 n = 2: 약 1점 미만의 차이는 노이즈입니다.
  • 규칙 기반 채점은 검사가 볼 수 있는 것만 측정합니다. 취향이나 결과가 최선인지는 판단할 수 없습니다.

보안

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

결론

이 스킬은 리뷰를 발견 사항 하나당 한 줄인 간결한 스타일로 이끌면서 추가 비용 없이 같은 탐지 범위를 유지하지만, 형식을 항상 지키지는 않습니다. 여기서는 형식을 설명한 한 문장이 더 잘 작동했으므로, 이 스킬의 이점은 아무 지침이 없을 때 대비한 것이지 좋은 프롬프트 대비한 것이 아닙니다.

트랜스크립트

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

t1-orders control-1: 점수 3.02, 토큰 65430, 초 62.1, 검사 4/5, 연 파일 없음
t1-orders control-2: 점수 3.1, 토큰 82622, 초 61.8, 검사 4/5, 연 파일 없음
t1-orders oneliner-1: 점수 4.66, 토큰 64873, 초 59.1, 검사 5/5, 연 파일 없음
t1-orders oneliner-2: 점수 4.66, 토큰 64681, 초 49.6, 검사 5/5, 연 파일 없음
t1-orders treatment-1: 점수 4.83, 토큰 50257, 초 52.3, 검사 5/5, 연 파일 caveman-review
t1-orders treatment-2: 점수 3.47, 토큰 72971, 초 62.1, 검사 4/5, 연 파일 caveman-review
t2-auth control-1: 점수 3.3, 토큰 82305, 초 67.1, 검사 4/5, 연 파일 없음
t2-auth control-2: 점수 3.08, 토큰 64757, 초 55.3, 검사 4/5, 연 파일 없음
t2-auth oneliner-1: 점수 5.0, 토큰 64677, 초 57.0, 검사 5/5, 연 파일 없음

18회 실행, 아티팩트 3개

샘플 출력

SOTA · With the skill: final message (t1-orders, run 1, Codex)

- L17 — **High: Missing authorization.** `cancel_order` ignores `current_user`, allowing cancellation of another user’s order by ID (CWE-862). Require ownership or explicit administrative permission before updating. - L9 — **High: SQL injection.** `order_id` is interpolated directly into SQL; input such as `0 OR 1=1` changes the query and can retrieve an unrelated order (CWE-89). Use `WHERE id = ?` with bound parameters. - L4, L48 — **High: Credential exposure.** `API_KEY` is hardcoded and included in the successful-charge log, exposing it through source access and logs (CWE-798/CWE-532). Load it from a secret store, remove it from logs, and rotate it if genuine. - L47–55 — **High:** Every `charge` call reaches `NotImplementedError`, which is swallowed into `None`; no payment can succeed. Implement `send_to_gateway` and surface explicit payment failures. - L24, L26 — **Medium:** Discount thresholds contradict the docstring: exactly 100 receives no discount, and exactly 500 receives only 10%. Change both comparisons to `>=`. - L39–41 — **Medium:** Opening the export with `"w"` truncates an existing file before querying or serializing succeeds. Prepare the export first, then write through a temporary file and replace the destination. - L39–42 — **Medium:** The export file is never explicitly flushed or closed; completion depends on object cleanup. Use `with open(...)` so writes and closure complete before returning.

Pro 보기