모든 스킬

codebase-design (mattpocock/skills)

작은 인터페이스와 명확한 경계를 가진 깊은 모듈을 설계하기 위한 공통 어휘를 제공합니다.

codebase-design: 아키텍처 리뷰에 깊이를 논하는 어휘와 더 명확한 구조를 제공합니다(대조군 3.2, 스킬 사용군 3.9, 한 문장 프롬프트군 4.5). 토큰은 1.1배 사용합니다. 다만 심어 둔 문제를 한 문장 프롬프트군보다 더 많이 찾아내지는 못했습니다.

상황에 따라안전

Codex CLI · gpt-6-astra

23.6 / 30

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

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

보안 리뷰

안전

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

설치

npx skills@latest add mattpocock/skills --skill codebase-design

출처

고정 커밋: 4ae2317ddb22b046e26455e4f9c9b3aaaf62212d

테스트일: 2026-11-02

테스트한 과제

  • 저장소 전체 아키텍처 스캔 — 이 작은 쇼핑몰 백엔드에서 아키텍처 개선점을 검토하세요. 어디를 재구성하면 코드를 더 쉽게 바꾸고 더 쉽게 테스트할 수 있을까요? 발견 사항을 이 폴더의 report.html이라는 자체 완결형 HTML 보고서로 작성하세요. 브라우저를 열거나 서버를 실행하지 마세요…
  • 결제와 재고만 — 이 백엔드의 결제와 재고 부분만 살펴보고 어떤 재구성이 효과를 낼지 알려주세요. 발견 사항을 이 폴더의 report.html이라는 자체 완결형 HTML 보고서로 작성하세요. 브라우저를 열거나 서버를 실행하지 말고, 코드는 변경하지 마세요…
  • place_order는 왜 테스트하기 어려운가? — 이 백엔드에서 place_order에 제대로 된 테스트를 작성하는 것이 힘들게 느껴집니다. 왜 그런지, 어떤 재구성이 이를 해결할지 알려주세요. 파일은 변경하지 말고 최종 메시지로 답하세요.

장점

  • 스킬 없이보다 평균 점수를 3.21에서 3.92로 끌어올렸습니다(+0.71).
  • 스킬 이름을 언급하지 않았는데도 적용되었습니다. 스킬 사용군 실행 6/6회에서 스킬 파일을 읽었습니다.

단점

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

리뷰

Codex CLI 0.166 (gpt-6-astra, low reasoning)을 전용 Windows 테스트 PC에서 실행했고, 실행마다 새 임시 프로젝트와 임시 HOME/TMPDIR/캐시를 사용했습니다. 스킬 설치(스킬 사용군), 미설치(대조군), 미설치 상태에서 스킬의 핵심 요구사항만 한 문장으로 압축해 프롬프트에 덧붙인 경우(한 문장 프롬프트군)로 나눴으며, 과제·그룹당 2회씩 실행했습니다. 네트워크는 끄고 /tmp 쓰기는 차단했습니다. 프롬프트에는 스킬 이름을 언급하지 않았습니다(아래에 적은 경우 제외). 작은 쇼핑몰 백엔드에 여섯 가지 마찰 지점을 심어 두었습니다(얕은 검증자와 금액 래퍼, 그대로 전달만 하는 재고 서비스, 단일 결제 어댑터, 중복 로직 등). 과제는 아키텍처 개선 사항을 담은 HTML 보고서 작성, 결제와 재고로 범위를 한정한 보고서 작성, 그리고 'place_order는 왜 테스트하기 어렵고 어떻게 고치겠는가'에 답하기(채팅으로 응답)입니다. 프롬프트에는 어떤 설계 용어도 언급하지 않았습니다. 한 문장 프롬프트군은 깊이에 대한 개념과 짚어야 할 항목을 제시합니다.

3개 그룹 비교

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

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

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

무엇인가

mattpocock/skills의 codebase-design 스킬입니다. 모듈의 깊이를 기준으로 아키텍처를 리뷰하는 방법을 제시합니다. 깊은 모듈은 작은 인터페이스 뒤에 많은 동작을 숨깁니다. 얕은 통과형 모듈, 가정에 불과한 단일 어댑터 이음새, 중복 로직, 헬퍼를 통해서만 테스트되는 동작을 지적하고, 동작을 인터페이스로 테스트할 수 있도록 이음새가 어디에 있어야 하는지 알려 줍니다.

테스트 방법

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

마찰 지점 여섯 개를 심어 둔 작은 쇼핑 백엔드입니다(얕은 검증기와 금액 래퍼, 통과형 재고 서비스, 단일 결제 어댑터, 중복 로직 등). 작업은 아키텍처 개선점을 담은 HTML 보고서 작성, 결제와 재고로 범위를 한정한 보고서 작성, 'place_order는 왜 테스트하기 어렵고 어떻게 고치시겠습니까'(채팅으로 답변)입니다. 프롬프트에는 어떤 설계 용어도 등장하지 않습니다. 한 문장 프롬프트에는 깊이 개념과 지적해야 할 항목이 적혀 있습니다.

  1. 저장소 전체 아키텍처 스캔 — 이 작은 쇼핑 백엔드에서 아키텍처 개선점을 찾아주세요. 구조를 바꾸면 코드를 더 쉽게 변경하고 더 쉽게 테스트할 수 있는 곳은 어디인가요? 결과를 이 폴더의 report.html이라는 독립형 HTML 보고서로 작성하세요(브라우저를 열거나 서버를 시작하지 마…
  2. 결제와 재고만 — 이 백엔드의 결제와 재고 부분만 살펴보고 어떤 구조 변경이 효과를 볼지 알려주세요. 결과를 이 폴더의 report.html이라는 독립형 HTML 보고서로 작성하고(브라우저를 열거나 서버를 시작하지 마세요), 어떤 코드도 변경하지 마…
  3. place_order는 왜 테스트하기 어려운가? — 이 백엔드에서 place_order에 제대로 된 테스트를 작성하는 것은 고통스럽게 느껴집니다. 왜 그렇고, 어떤 구조 변경이 이를 해결할까요? 파일은 변경하지 말고 최종 메시지로 답하세요.

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

결과

세 번째 군에 제공한 한 문장 프롬프트: "모듈을 깊이로 판단하세요. 깊은 모듈은 작은 인터페이스 뒤에 많은 동작을 숨깁니다. 얕은 통과형 모듈, 가정에 불과한 단일 어댑터 이음새, 중복 로직, 헬퍼를 통해서만 테스트되는 동작을 지적하고, 동작을 인터페이스로 테스트할 수 있도록 이음새가 어디에 있어야 하는지 밝히세요."

작업대조군 점수한 문장 프롬프트스킬 사용대조군 토큰한 문장 토큰스킬 사용 토큰스킬 읽음
t1-scan2.543.633.83135k135k177k2/2
t2-focus2.55.03.75153k139k148k2/2
t3-testing4.585.04.1765k65k72k2/2

평균 점수: 스킬 없음 3.21 vs 스킬 사용 3.92(델타 +0.71). 실행당 토큰: 119k vs 133k(1.12배), 시간 154초 vs 158초. 한 문장 프롬프트군: 4.54(한 문장 프롬프트 대비 스킬의 이득: -0.63, 스킬 없음 대비 한 문장 프롬프트의 이득: +1.34). 한 문장 프롬프트는 실행당 114k 토큰이므로 스킬 비용은 한 문장 프롬프트의 1.17배입니다.

무슨 일이 있었나

  • 대조군 3.21, 스킬 3.92, 한 문장 4.54(각 6회). 안내가 없을 때 HTML 보고서는 아키텍처 용어를 거의 쓰지 않았습니다(deep/shallow/seam/interface 사용 0~2회, 검사 기준은 6회). 보고서를 낸 실행 4회 중 4회 모두 그랬습니다. 스킬 보고서는 4회 모두 이 용어를 사용했고 한 문장 프롬프트도 마찬가지였습니다.
  • 백엔드 전체 스캔: 스킬 4.24와 3.41, 한 문장 3.41과 3.86, 대조군 2.88과 2.2. 안내를 받은 두 군 모두 심어 둔 문제 6개 중 3~4개를 찾았습니다. 얕은 검증기 래퍼와 단일 결제 어댑터는 모든 군에서 여러 실행에 걸쳐 놓쳤습니다.
  • 결제·재고에 집중한 작업: 스킬은 두 실행 모두 3.75, 대조군은 두 실행 모두 2.5, 한 문장은 두 실행 모두 5.0이었습니다. 스킬과 대조군의 모든 실행은 두 지점 중 하나만 찾았습니다(가정에 불과한 단일 결제 어댑터를 놓침). 한 문장 프롬프트는 둘 다 찾았습니다.
  • place_order 테스트 난이도: 모든 군이 비슷했습니다(대조군 4.17과 5.0, 스킬 4.17과 4.17, 한 문장 5.0과 5.0). 스킬 실행은 한 번은 원인 하나(헬퍼 전용 테스트)를, 다른 한 번은 통과형 계층을 놓쳤습니다.
  • 토큰: 실행당 스킬 133k, 한 문장 114k, 대조군 119k(대조군의 1.12배). 스킬은 스킬 사용군 6/6 실행에서 읽혔습니다.

항목별 점수

항목점수이유
1_출력_품질3.92

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

2_스킬_없음_대비_향상2.71

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

3_트리거5.0스킬 사용군 6/6 실행에서 스킬 파일을 읽었습니다.
4_지침_이식성4SKILL.md와 참고 파일 몇 개.
5_효율성4

토큰 1.12배(실행당 133k vs 119k), 시간 1.03배(158초 vs 154초).

6_안전성_및_위생4서술형 문서만 사용, security.md 참고.

이 테스트의 한계

  • 보고서 텍스트에 대한 규칙 기반 탐지 검사(파일 이름 근처 키워드)와 용어 개수 집계입니다. 제안된 구조 변경이 타당한지는 판단하지 않았고 보고서를 브라우저에서 열어 보지도 않았습니다.
  • 용어 검사는 스킬 자체의 용어에 점수를 주는데, 한 문장 프롬프트도 같은 용어를 언급하므로 안내를 받은 군에 유리합니다.
  • '전후' 검사는 스캔 작업에서만 2회 실패로 나타났으며 차별 요소가 아닙니다.
  • 셀당 n=2, 작은 코드베이스 하나.
  • 작업·군당 n=2: 약 1점 미만의 차이는 노이즈입니다.
  • 규칙 기반 채점은 검사가 볼 수 있는 것만 측정하며, 취향이나 결과가 최선인지는 판단하지 못합니다.

보안

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

결론

이 스킬은 아무것도 주지 않은 프롬프트에 없는 모듈 깊이라는 관점을 리뷰에 분명히 부여하며 대조군보다 점수가 조금 높습니다. 그러나 같은 개념을 한 문장으로 적으면 더 적은 토큰으로 심어 둔 문제를 더 많이 찾습니다. 따라서 이득은 대부분 표현 방식에 관한 것입니다.

트랜스크립트

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

t1-scan control-1: 점수 2.88, 토큰 135577, 초 182.2, 검사 4/6, 연 파일 없음
t1-scan control-2: 점수 2.2, 토큰 136096, 초 168.8, 검사 4/6, 연 파일 없음
t1-scan oneliner-1: 점수 3.86, 토큰 135437, 초 152.3, 검사 5/6, 연 파일 없음
t1-scan oneliner-2: 점수 3.41, 토큰 135611, 초 172.2, 검사 4/6, 연 파일 없음
t1-scan treatment-1: 점수 3.41, 토큰 176681, 초 216.0, 검사 4/6, 연 파일 codebase-design
t1-scan treatment-2: 점수 4.24, 토큰 178425, 초 181.7, 검사 6/6, 연 파일 codebase-design
t2-focus control-1: 점수 2.5, 토큰 164638, 초 128.2, 검사 2/4, 연 파일 없음
t2-focus control-2: 점수 2.5, 토큰 143158, 초 298.9, 검사 2/4, 연 파일 없음
t2-focus oneliner-1: 점수 5.0, 토큰 112021, 초 375.7, 검사 4/4, 연 파일 없음

18회 실행, 아티팩트 3개

샘플 출력

SOTA · With the skill: report.html (t1-scan, run 1, Codex)

<!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <title>Small shop backend — architecture review</title> <style> :root{color-scheme:light;--ink:#183047;--muted:#506276;--accent:#116b66;--line:#d8e2e8}*{box-sizing:border-box}body{margin:0;background:#f3f6f8;color:var(--ink);font:16px/1.65 system-ui,sans-serif}main{max-width:1060px;margin:auto;padding:48px 28px 70px}header{border-top:6px solid var(--accent);padding:24px 0}h1{font-size:2.5rem;line-height:1.15;letter-spacing:-.04em}h2{font-size:1.55rem;margin-top:0}h3{font-size:1.1rem;margin-bottom:6px}p{margin:10px 0 18px}.eyebrow,.meta{color:var(--muted)}.eyebrow{text-transform:uppercase;letter-spacing:.13em;font-size:.8rem;font-weight:700}section{background:white;border:1px solid var(--line);border-radius:12px;padding:26px;margin:22px 0}code,pre{font-family:Consolas,monospace;font-size:.9em}code{overflow-wrap:anywhere}pre{background:#edf4f5;padding:18px;white-space:pre-wrap;border-left:4px solid var(--accent)}table{width:100%;border-collapse:collapse;font-size:.93rem}th,td{text-align:left;vertical-align:top;padding:12px;border-bottom:1px solid var(--line)}th{background:#edf4f5}a{color:var(--accent)}.tag{display:inline-block;background:#e3f2ef;color:#155b53;border-radius:20px;padding:3px 10px;font-size:.8rem;font-weight:700}.note{border-left:4px solid #d1a03b;padding-left:16px}.flow{display:flex;gap:12px;flex-wrap:wrap;margin:18px 0}.flow div{flex:1;min-width:180px;background:#edf4f5;padding:16px;border-radius:8px}li{margin:8px 0}@media(max-width:650px){main{padding:24px 14px}section{padding:18px}h1{font-size:2rem}table{font-size:.83rem}th,td{padding:7px}}@media print{body{background:white}main{padding:0}section{break-inside:avoid}a{color:inherit}} </style> </head> <body><main> <header><div class="eyebrow">Architecture review · 2 November 2026</div> <h1>Make pricing and ordering the test surface.</h1> <p>The highest-value restructuring is to concentrate pricing policy in one pure module and let an order module own validation, stock decisions, and payment sequencing behind a small interface. Remove pass-through layers as this happens. This backend is small enough that a framework, generic repository hierarchy, or distributed decomposition would add more work than leverage.</p> <p class="meta">Scope: all ten Python files in <code>shop/</code>, <code>tests/test_helpers.py</code>, and the README. This report proposes changes; no application or test files were edited. Source references use the line numbers of the reviewed snapshot.</p> <nav aria-label="Report contents"><a href="#pricing">Pricing</a> · <a href="#orders">Order module</a> · <a href="#stock">Stock consistency</a> · <a href="#validation">Validation</a> · <a href="#plan">Migration &amp; tests</a></nav> </header> <section><h2>Current structure and where knowledge leaks</h2> <pre aria-label="Current dependency diagram">cart ──→ money pricing (discount implementation) └── own discount rules ↑ imported by orders, never called orders ──→ validators + money + own discount rules ├─→ inventory_service ──→ inventory_repo ──→ g [... excerpt: first 3200 of 17083 characters]

Pro 보기