모든 스킬

setup-pre-commit (mattpocock/skills)

현재 저장소에 Husky 커밋 전 훅을 설정하고 lint-staged, Prettier, 타입 검사, 테스트를 연결합니다.

setup-pre-commit: '커밋 훅 추가'라는 모호한 요청에 일반 Codex는 다른 방식(네이티브 git 훅)으로 구성하고, pnpm 저장소에서 npm을 호출하기도 합니다(한 실행에서 확인). 스킬과 한 문장 프롬프트는 모두 Husky + lint-staged 구성을 내놓습니다(5.0 대 1.4).

추천안전

Codex CLI · gpt-6-astra

29.0 / 30

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

추천: 총점 29.0/30이 22점 이상, 출력 품질 5.0가 3.5 이상, 향상폭 +3.59가 +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 setup-pre-commit

출처

고정 커밋: 4ae2317ddb22b046e26455e4f9c9b3aaaf62212d

테스트일: 2026-11-02

테스트한 과제

  • typecheck·test 스크립트가 있는 npm 프로젝트 — 커밋 훅을 추가하세요. 이 저장소에 pre-commit 훅을 설정하세요(네트워크를 사용할 수 없으니 설치하지 말고 파일과 package.json 변경 사항을 직접 작성하세요).
  • typecheck 스크립트가 없는 pnpm 프로젝트 — 커밋 훅을 추가하세요. 이 저장소에 pre-commit 훅을 설정하세요(네트워크를 사용할 수 없으니 설치하지 말고 파일과 package.json 변경 사항을 직접 작성하세요).
  • 기존 Prettier 설정이 유지되어야 함 — 커밋 훅을 추가하세요. 이 저장소에 pre-commit 훅을 설정하세요(네트워크를 사용할 수 없으니 설치하지 말고 파일과 package.json 변경 사항을 직접 작성하세요).

장점

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

단점

  • 한 문장 프롬프트는 5.0점, 스킬 사용은 5.0점(+0.00).
  • 테스트 참고: 첫 채점 뒤 검사 하나를 수정했고(수정하지 않은 파일도 통과해야 함), 모든 실행을 다시 채점했습니다.
  • 과제·그룹당 n=2이며, 약 1점 미만의 차이는 노이즈입니다.

리뷰

Codex CLI 0.166 (gpt-6-astra, low reasoning)을 전용 Windows 테스트 PC에서 실행했고, 실행마다 새 임시 프로젝트와 임시 HOME/TMPDIR/캐시를 사용했습니다. 스킬 설치(스킬 사용군), 미설치(대조군), 미설치 상태에서 스킬의 핵심 요구사항만 한 문장으로 압축해 프롬프트에 덧붙인 경우(한 문장 프롬프트군)로 나눴으며, 과제·그룹당 2회씩 실행했습니다. 네트워크는 끄고 /tmp 쓰기는 차단했습니다. 프롬프트에는 스킬 이름을 언급하지 않았습니다(아래에 적은 경우 제외). 작은 저장소 세 개를 사용했고 모두 같은 프롬프트를 넣었습니다: '커밋 훅을 추가하세요. 이 저장소에 pre-commit 훅을 설정하세요(네트워크를 사용할 수 없으니 설치하지 말고 파일과 package.json 변경 사항을 직접 작성하세요).' 대상은 typecheck·test 스크립트가 있는 npm 저장소, typecheck 스크립트가 없는 pnpm 저장소(pnpm-lock.yaml), 이미 .prettierrc가 있는 npm 저장소입니다. 한 문장 프롬프트군에는 스킬의 레시피를 한 문장으로 넣었습니다.

3개 그룹 비교

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

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

참고: 첫 채점 후 검사 하나를 수정했고(건드리지 않은 파일도 통과해야 함), 모든 실행을 다시 채점했습니다.

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

어떤 스킬인가

setup-pre-commit 스킬(mattpocock/skills)입니다. lint-staged와 Prettier를 사용하는 Husky v9 pre-commit 훅을 설정합니다. 잠금 파일에서 패키지 관리자를 감지하고, lint-staged를 실행한 뒤 해당 패키지 관리자로 저장소의 typecheck와 test 스크립트를 실행하는 .husky/pre-commit(셔뱅 없음)을 작성하며(없는 스크립트는 건너뛰고 알림), prettier --ignore-unknown --write를 쓰는 .lintstagedrc를 추가하고, prepare: husky를 추가하며, .prettierrc가 없을 때만 새로 만듭니다.

테스트 방법

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

작은 저장소 세 개를 사용했고 모두 같은 프롬프트를 받았습니다: '커밋 훅을 추가해 주세요. 이 저장소에 pre-commit 훅을 설정하세요(네트워크를 쓸 수 없으니 설치하지 말고 파일과 package.json 변경을 직접 작성하세요).' typecheck와 test 스크립트가 있는 npm 저장소, typecheck 스크립트가 없는 pnpm 저장소(pnpm-lock.yaml), 이미 .prettierrc가 있는 npm 저장소. 한 문장 프롬프트 = 스킬의 레시피를 한 문장으로.

  1. typecheck와 test 스크립트가 있는 npm 프로젝트 — 커밋 훅을 추가해 주세요. 이 저장소에 pre-commit 훅을 설정하세요(네트워크를 쓸 수 없으니 설치하지 말고 파일과 package.json 변경을 직접 작성하세요).
  2. typecheck 스크립트가 없는 pnpm 프로젝트 — 커밋 훅을 추가해 주세요. 이 저장소에 pre-commit 훅을 설정하세요(네트워크를 쓸 수 없으니 설치하지 말고 파일과 package.json 변경을 직접 작성하세요).
  3. 기존 Prettier 설정 유지 — 커밋 훅을 추가해 주세요. 이 저장소에 pre-commit 훅을 설정하세요(네트워크를 쓸 수 없으니 설치하지 말고 파일과 package.json 변경을 직접 작성하세요).

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

결과

세 번째 군에 전달한 한 문장 프롬프트: "Husky v9를 lint-staged와 함께 설정하세요. 잠금 파일에서 패키지 관리자를 감지하고, .husky/pre-commit(셔뱅 없음)을 작성해 npx lint-staged를 실행한 뒤 해당 패키지 관리자로 저장소의 typecheck와 test 스크립트를 실행하세요(없는 스크립트는 생략하고 알려 주세요). prettier --ignore-unknown --write를 쓰는 .lintstagedrc, prepare: husky 스크립트를 추가하고, .prettierrc는 없을 때만 만드세요."

작업대조군 점수한 문장 프롬프트스킬 사용대조군 토큰한 문장 프롬프트 토큰스킬 사용 토큰스킬 읽음
t1-npm0.05.05.076k75k78k2/2
t2-pnpm0.05.05.0103k66k87k2/2
t3-existing-prettier4.235.05.066k83k78k2/2

평균 점수: 스킬 없이 1.41, 스킬 사용 시 5.0(델타 +3.59). 실행당 토큰: 82k 대 82k(0.99배), 시간 58초 대 43초. 한 문장 프롬프트군: 5.0(한 문장 프롬프트 대비 스킬의 이득: +0.0, 스킬 없는 경우 대비 한 문장 프롬프트의 이득: +3.59). 한 문장 프롬프트는 실행당 75k 토큰을 쓰므로, 스킬은 한 문장 프롬프트의 1.09배 비용입니다.

실제로 있었던 일

  • 대조군 1.41, 한 문장 프롬프트 5.00, 스킬 5.00(각 n=6). 도구를 지정하지 않자 대조군은 자체 설계를 택했습니다. npm과 pnpm 저장소(4회 실행)에서는 Husky도 lint-staged도 Prettier도 없이 네이티브 git 훅 폴더(.githooks/pre-commit과 README, prepare 스크립트)를 작성했고, pnpm 저장소에서는 저장소가 pnpm을 쓰는데도 훅이 npm test를 실행했습니다(실행 1에서 확인). 기존 .prettierrc가 있는 저장소만 Husky를 받았습니다(2회 실행).
  • 스킬과 한 문장 프롬프트 실행은 세부 사항이 모두 정확했습니다. pnpm 저장소는 pnpm exec lint-staged와 pnpm run test를 사용했고, 없는 typecheck는 생략하고 그 사실을 알렸으며, 기존 .prettierrc는 다시 쓰지 않았고, prepare: husky와 devDependencies 세 개를 추가했습니다. 스킬은 어려운 엔지니어링이 아니라 의견(Husky + lint-staged + Prettier)으로 중요한 역할을 합니다.
  • 비용 없음: 스킬 82k, 대조군 82k, 한 문장 프롬프트 75k(실행당). 스킬은 이름을 밝히지 않아도 스킬 사용군 6/6 실행에서 읽혔습니다.
  • 오프라인에서는 설치하거나 실행할 수 없어 생성된 훅은 하나도 실행되지 않았습니다. 두 군 모두 훅은 npm install 전까지 비활성 상태라고 밝혔습니다.

항목별 점수

항목점수이유
1_output_quality5.0

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

2_lift_vs_no_skill5

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

3_trigger5.0스킬 사용군 6/6 실행에서 스킬 파일이 읽힘.
4_instructions_portability4짧은 SKILL.md 하나, 스크립트 없음.
5_efficiency5토큰 0.99배(실행당 82k 대 82k), 시간 0.73배(43초 대 58초).
6_safety_hygiene5

산문만 포함. package.json을 편집하고 모든 커밋에서 실행되는 훅을 추가하라고 지시합니다.

이 테스트의 한계

  • 작성된 파일에 대한 규칙 기반 검사입니다. 훅은 실행되지 않았습니다(네트워크 없음, Husky 미설치).
  • 대조군의 네이티브 훅 해법도 유효한 설계입니다. 검사는 요청된 Husky/lint-staged 레시피가 만들어졌는지를 측정하며, 대조군은 그것을 알 방법이 없었습니다.
  • 한 검사(기존 .prettierrc 유지)는 변경되지 않은 파일이 복사되어 나오지 않아 처음에는 모든 실행에서 실패했습니다. 파일이 손대지 않은 경우 통과하도록 바꾸고 18회 실행을 모두 같은 규칙으로 다시 채점했습니다.
  • 작업·군당 n = 2: 약 1점 미만의 차이는 노이즈입니다.
  • 규칙 기반 채점은 검사가 볼 수 있는 것만 측정합니다. 취향이나 결과가 최선인지는 판단할 수 없습니다.

보안

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

결론

Husky + lint-staged + Prettier 구성을 원한다면, 이 스킬은 추가 토큰 없이 세 가지 저장소 형태(pnpm 감지, typecheck 누락, 기존 Prettier 설정) 모두에서 올바르게 해냅니다. 한 문장 레시피도 같은 일을 합니다. 레시피를 매번 다시 설명하지 않으려면 설치하되, 그 이상의 품질 향상은 기대하지 마세요.

트랜스크립트

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

t1-npm control-1: 점수 0.0, 토큰 84825, 초 49.0, 검사 0/7, 연 파일 없음
t1-npm control-2: 점수 0.0, 토큰 67687, 초 62.1, 검사 0/7, 연 파일 없음
t1-npm oneliner-1: 점수 5.0, 토큰 66754, 초 38.4, 검사 7/7, 연 파일 없음
t1-npm oneliner-2: 점수 5.0, 토큰 83997, 초 38.6, 검사 7/7, 연 파일 없음
t1-npm treatment-1: 점수 5.0, 토큰 69607, 초 37.3, 검사 7/7, 연 파일 setup-pre-commit
t1-npm treatment-2: 점수 5.0, 토큰 87911, 초 42.1, 검사 7/7, 연 파일 setup-pre-commit
t2-pnpm control-1: 점수 0.0, 토큰 102203, 초 77.9, 검사 0/8, 연 파일 없음
t2-pnpm control-2: 점수 0.0, 토큰 104460, 초 67.1, 검사 0/8, 연 파일 없음
t2-pnpm oneliner-1: 점수 5.0, 토큰 66597, 초 34.4, 검사 8/8, 연 파일 없음

18회 실행, 아티팩트 3개

샘플 출력

SOTA · With the skill: package.json (t1-npm, run 1, Codex)

{ "name": "app", "version": "1.0.0", "private": true, "scripts": { "prepare": "husky", "test": "vitest run", "typecheck": "tsc --noEmit" }, "devDependencies": { "husky": "^9.1.7", "lint-staged": "^15.5.2", "prettier": "^3.5.3", "typescript": "^5.4.0" } }

Pro 보기