모든 스킬

pr (mattpocock/skills)

리뷰어에게 변경 내용을 설명하는 PR 본문을 작성합니다.

pr: 순수한 형식 스킬입니다. 대조군은 세 섹션으로 된 PR 본문을 전혀 만들지 못했고(1.7/5), 스킬과 한 문장 프롬프트는 둘 다 만들어냈으며(5.0, 4.95) 추가 토큰도 들지 않았습니다

추천안전

Codex CLI · gpt-6-astra

29.0 / 30

스킬 없이 대비 향상폭: +3.33 · 추천 · 18회 실행

추천: 총점 29.0/30이 22점 이상, 출력 품질 5.0가 3.5 이상, 향상폭 +3.33가 +1.0 이상입니다.

SOTA

통과

Codex로 테스트

커버 대상 Codex, Claude Code

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

점수

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

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

보안 리뷰

안전

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

설치

npx skills@latest add mattpocock/skills --skill pr

출처

고정 커밋: 4ae2317ddb22b046e26455e4f9c9b3aaaf62212d

테스트일: 2026-11-02

테스트한 과제

  • 캐시 변경용 PR 본문 — PR을 올리려고 합니다. change.diff의 변경 사항에 대한 PR 본문을 PR.md로 작성하세요. 테스트 전/후 출력은 tests_before.txt와 tests_after.txt에 있습니다.
  • 컬럼 삭제용 PR 본문 — 제 PR을 정리해 주세요. change.diff의 변경 사항에 대한 PR 본문을 PR.md로 작성하세요. 테스트 전/후 출력은 tests_before.txt와 tests_after.txt에 있습니다.
  • 카피 변경용 PR 본문 — PR 설명을 작성하세요. change.diff의 변경 사항에 대한 PR 본문을 PR.md로 작성하세요. 테스트 전/후 출력은 tests_before.txt와 tests_after.txt에 있습니다.

장점

  • 스킬 없이보다 평균 점수를 1.67에서 5.0으로 끌어올렸습니다(+3.33).
  • 스킬 이름을 언급하지 않았는데도 적용되었습니다. 스킬 사용군 실행 6/6회에서 스킬 파일을 읽었습니다.
  • 토큰 오버헤드 없음: 스킬 없이의 1.0배 토큰을 사용합니다.
  • 스킬 사용 시 높은 절대 품질: 5.0/5.

단점

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

리뷰

Codex CLI 0.166 (gpt-6-astra, low reasoning)을 전용 Windows 테스트 PC에서 실행했고, 실행마다 새 임시 프로젝트와 임시 HOME/TMPDIR/캐시를 사용했습니다. 스킬 설치(스킬 사용군), 미설치(대조군), 미설치 상태에서 스킬의 핵심 요구사항만 한 문장으로 압축해 프롬프트에 덧붙인 경우(한 문장 프롬프트군)로 나눴으며, 과제·그룹당 2회씩 실행했습니다. 네트워크는 끄고 /tmp 쓰기는 차단했습니다. 프롬프트에는 스킬 이름을 언급하지 않았습니다(아래에 적은 경우 제외). 과제는 세 가지이며, 모두 change.diff의 변경 사항에 대한 PR 본문을 PR.md로 작성하는 과제이며, 옆에 tests_before.txt / tests_after.txt가 있습니다. 캐시 변경(되돌릴 수 있는 변경, 양방향 문), 컬럼을 삭제하는 마이그레이션(되돌릴 수 없는 변경, 단방향 문), 카피 변경입니다. 대조군은 그 문장만 받습니다. 한 문장 프롬프트군은 템플릿 전체를 풀어 쓴 문장을 하나 더 받습니다. 스킬 사용군도 형식을 알려주지 않습니다.

3개 그룹 비교

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

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

판정: 권장 (29.0 / 30). 출처: mattpocock/skills, skills/engineering/pr, 커밋 4ae2317에 고정. 설치: npx skills@latest add mattpocock/skills --skill pr. 라이선스: MIT (저장소 LICENSE).

어떤 스킬인가

pr 스킬(mattpocock/skills)은 diff를 고정된 세 부분 구조의 풀 리퀘스트 본문으로 바꿉니다. Summary(가장 작고 유용한 다이어그램, 의사코드, 호출 트리), Evidence(Before: / **After:**와 테스트 출력), Merge Danger(Door: 단방향 또는 양방향, 그리고 한 단어 Blast Radius:)로, 프로젝트 용어집의 단어로 작성합니다. 짧은 SKILL.md 하나입니다.

테스트 방법

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

세 작업 모두 'change.diff의 변경에 대한 PR 본문을 PR.md로 작성'이며 옆에 tests_before.txt / tests_after.txt가 있습니다. 캐시 변경(양방향 문), 컬럼을 삭제하는 마이그레이션(단방향 문), 카피 변경입니다. 대조군은 그 문장만 받습니다. 한 문장 프롬프트군은 전체 템플릿을 풀어 쓴 문장 하나를 추가로 받습니다. 스킬군은 형식에 대해 안내받지 않습니다.

  1. 캐시 변경의 PR 본문 — 풀 리퀘스트를 열려고 합니다. change.diff의 변경에 대한 PR 본문을 PR.md로 작성하세요. 전후 테스트 출력은 tests_before.txt와 tests_after.txt에 있습니다.
  2. 컬럼 삭제의 PR 본문 — 제 풀 리퀘스트를 작성해 주세요. change.diff의 변경에 대한 PR 본문을 PR.md로 작성하세요. 전후 테스트 출력은 tests_before.txt와 tests_after.txt에 있습니다.
  3. 카피 변경의 PR 본문 — PR 설명을 작성하세요. change.diff의 변경에 대한 PR 본문을 PR.md로 작성하세요. 전후 테스트 출력은 tests_before.txt와 tests_after.txt에 있습니다.

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

결과

세 번째 군에 전달한 한 문장 프롬프트: "PR 본문을 짧은 세 섹션으로 작성하세요. Summary(가장 작고 유용한 다이어그램, 의사코드, 호출 트리, 서두 없음), Evidence(**Before:**와 After:, 테스트 출력 포함), Merge Danger(Door: 단방향 또는 양방향, 한 단어 Blast Radius:)입니다. 용어집의 단어를 사용하세요."

작업대조군 점수한 문장 프롬프트스킬 사용대조군 토큰한 문장 프롬프트 토큰스킬 사용 토큰스킬 읽음
t1-cache1.675.05.082k83k79k2/2
t2-migration1.674.835.082k91k79k2/2
t3-copy1.675.05.081k91k87k2/2

평균 점수: 스킬 없이 1.67, 스킬 사용 시 5.0(델타 +3.33). 실행당 토큰: 82k 대 82k(1.00배), 시간 37초 대 34초. 한 문장 프롬프트군: 4.95(한 문장 프롬프트 대비 스킬의 이득: +0.05, 스킬 없는 경우 대비 한 문장 프롬프트의 이득: +3.28). 한 문장 프롬프트는 실행당 89k 토큰을 쓰므로, 스킬은 한 문장 프롬프트의 0.92배 비용입니다.

실제로 있었던 일

  • 대조군 1.67, 한 문장 4.95, 스킬 5.00(각 n=6). 대조군은 명확하고 정확한 산문 PR을 썼지만, 6회 실행 중 어느 것도 세 섹션, 다이어그램이나 의사코드 블록, Before/After 레이블, Door, Blast Radius를 사용하지 않았습니다. 모델이 추측할 수 없는 형식이므로 형식을 안내받은 군은 모두 높은 점수를 받습니다. 이 검사 세트는 작성 품질이 아니라 형식 준수를 측정합니다.
  • 스킬은 이름 없이 트리거되었고(6/6 읽음), 한 문장 프롬프트도 같은 정보를 담고 있습니다. 둘의 차이는 0.05점입니다(한 실행에서 템플릿 섹션 정규식이 하나 빠졌습니다. 마이그레이션 한 문장 실행은 3개 섹션 중 2개만 일치). 실행당 토큰은 대조군 82k, 한 문장 89k, 스킬 82k로 오버헤드가 없습니다.
  • 판단 내용은 중요한 곳에서 올바릅니다. 마이그레이션에서 스킬 실행은 문을 단방향으로 지정하고 코드를 되돌려도 삭제된 컬럼을 복구할 수 없다고 말했으며 블래스트 반경을 명시했습니다. 캐시와 카피 작업은 양방향이었습니다. 대조군의 마이그레이션 PR도 0041을 먼저 적용하라고 경고했지만 Door나 반경이 없어서 리뷰어가 훑어보고 찾을 수 없습니다.
  • 스킬은 아주 작아서(몇 줄) 로드 비용이 없습니다. 가치는 누구도 매번 템플릿을 붙여넣지 않아도 된다는 점입니다.

항목별 점수

항목점수이유
1_output_quality5.0

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

2_lift_vs_no_skill5

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

3_trigger5.0스킬 사용군 6/6 실행에서 스킬 파일이 읽힘.
4_instructions_portability4템플릿이 담긴 짧은 SKILL.md 하나, 스크립트 없음.
5_efficiency5토큰 1.00배(실행당 82k 대 82k), 시간 0.93배(34초 대 37초).
6_safety_hygiene5산문만 포함. 지적 사항 없음.

이 테스트의 한계

  • 규칙 기반 형식 검사만 수행합니다(섹션 존재, Before/After, Door 값 정확성, Blast Radius, 다이어그램/의사코드 블록). 다이어그램이 '가장 작고 유용한' 것인지나 글이 좋은지는 판단하지 않습니다.
  • 대조군은 구조상 형식 검사에서 실패할 수밖에 없습니다. 이 결과는 스킬이 하우스 형식을 다시 진술할 필요를 없애 준다는 것이지, 모델이 더 나은 PR을 쓰게 한다는 것이 아닙니다.
  • 작은 픽스처 세 개. 실제 저장소나 git 히스토리는 없습니다.
  • 작업·군당 n = 2: 약 1점 미만의 차이는 노이즈입니다.
  • 규칙 기반 채점은 검사가 볼 수 있는 것만 측정합니다. 취향이나 결과가 최선인지는 판단할 수 없습니다.

보안

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

결론

이 PR 형식을 원한다면 스킬이 첫 시도에 무료로 제공하며(82k 토큰, 스킬 없을 때와 동일), 템플릿을 한 문장으로 붙여넣는 것과 동등합니다. 팀 전체의 일관성을 위해 설치하되, 더 나은 산문을 기대하지는 마세요.

트랜스크립트

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

t1-cache control-1: 점수 1.67, 토큰 82698, 초 35.7, 검사 4/9, 연 파일 없음
t1-cache control-2: 점수 1.67, 토큰 82765, 초 30.9, 검사 4/9, 연 파일 없음
t1-cache oneliner-1: 점수 5.0, 토큰 83654, 초 32.5, 검사 9/9, 연 파일 없음
t1-cache oneliner-2: 점수 5.0, 토큰 84007, 초 38.4, 검사 9/9, 연 파일 없음
t1-cache treatment-1: 점수 5.0, 토큰 70378, 초 33.8, 검사 9/9, 연 파일 pr
t1-cache treatment-2: 점수 5.0, 토큰 88915, 초 35.0, 검사 9/9, 연 파일 pr
t2-migration control-1: 점수 1.67, 토큰 81748, 초 33.8, 검사 4/9, 연 파일 없음
t2-migration control-2: 점수 1.67, 토큰 82290, 초 36.5, 검사 4/9, 연 파일 없음
t2-migration oneliner-1: 점수 5.0, 토큰 100647, 초 37.7, 검사 9/9, 연 파일 없음

18회 실행, 아티팩트 3개

샘플 출력

SOTA · With the skill: PR.md (t1-cache, run 1, Codex)

## Summary Cache free slots by Room and day to avoid repeated database queries. Creating a Reservation invalidates the matching cache entry. ```text free_slots(Room, day) cache hit → return cached free slots cache miss → query Reservations → compute and cache free slots create Reservation insert Reservation → invalidate cache for Room and day ``` ## Evidence - **Before:** `tests/test_availability.py::test_free_slots_not_queried_twice` failed: `db.query called 2 times, expected 1`. Suite: 1 failed, 14 passed in 0.9s. **After:** Supplied test output reports 15 passed in 0.8s. ## Merge Danger **Door:** two-way Reverting restores a database query on each availability request; no schema or stored-data changes. **Blast Radius:** availability Cached free slots affect Members checking Room availability. Invalidation covers Reservation creation in the current process; other mutation paths or processes can leave cached results stale. The cache has no size limit or expiry.

Pro 보기