Navigation

Impact tier probe

impact 를 읽기 깊이로 재정의한 커밋 4d7c012, 3574e92 가 실제 세션에서 어떻게 작동하는지 잰 기록이다. 측정은 script/measure-skill-reads.py 로 한다. 옛 프로토콜의 기준선은 이미 남아 있는 sk-ax-gas-pp 세션 기록에서, 새 프로토콜은 읽기 전용 헤드리스 세션 한 건에서 뽑았다.

기준선: 옛 프로토콜 (sk-ax-gas-pp 계열 39개 세션, 2026-08-12 ~ 09-04)

옛 프로토콜은 CRITICAL 만 원문 필수였고, 나머지는 “형태를 정하면 Correct 예제도 읽는다” 는 판단 문장이었다. 원문 읽기는 전부 Bash 의 cat, sed 였고 Read 도구는 쓰지 않았다. sed -n '/^## /,/^\*\*Incorrect/p' 로 예제를 스스로 잘라 낸 세션도 있다.

| project | session | Skill calls | index | contracts | rules | full | partial | to-Incorrect | skill-file kchars |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| sk-ax-gas-pp | 09dfcf3e | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 7 |
| sk-ax-gas-pp | 13696443 | 9 | 6 | 2 | 7 | 5 | 2 | 0 | 196 |
| sk-ax-gas-pp | 16bda4db | 3 | 5 | 11 | 23 | 10 | 13 | 0 | 138 |
| sk-ax-gas-pp | 1a19b4ac | 3 | 6 | 4 | 6 | 5 | 0 | 0 | 42 |
| sk-ax-gas-pp | 36ca66a5 | 3 | 2 | 6 | 0 | 0 | 0 | 0 | 25 |
| sk-ax-gas-pp | 3ebc1b9b | 3 | 8 | 6 | 18 | 10 | 8 | 0 | 78 |
| sk-ax-gas-pp | 47b1c494 | 1 | 5 | 6 | 3 | 3 | 0 | 0 | 52 |
| sk-ax-gas-pp | 66578175 | 3 | 3 | 0 | 0 | 0 | 0 | 0 | 21 |
| sk-ax-gas-pp | 75e00217 | 2 | 4 | 0 | 11 | 0 | 4 | 7 | 29 |
| sk-ax-gas-pp | 84d65142 | 3 | 3 | 0 | 0 | 0 | 0 | 0 | 27 |
| sk-ax-gas-pp | 85ad3a9c | 0 | 3 | 7 | 0 | 0 | 0 | 0 | 45 |
| sk-ax-gas-pp | 8ee142e4 | 1 | 1 | 12 | 9 | 9 | 0 | 0 | 45 |
| sk-ax-gas-pp | 8eea1df1 | 3 | 7 | 4 | 0 | 0 | 0 | 0 | 31 |
| sk-ax-gas-pp | 9274d3c6 | 2 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| sk-ax-gas-pp | 9b26443f | 3 | 4 | 0 | 6 | 4 | 2 | 0 | 60 |
| sk-ax-gas-pp | 9cb30f15 | 1 | 0 | 0 | 22 | 4 | 15 | 3 | 38 |
| sk-ax-gas-pp | a0bbafab | 3 | 2 | 10 | 1 | 1 | 0 | 0 | 35 |
| sk-ax-gas-pp | d212af17 | 3 | 3 | 5 | 0 | 0 | 0 | 0 | 11 |
| sk-ax-gas-pp | da8c783e | 0 | 3 | 11 | 3 | 3 | 0 | 0 | 47 |
| sk-ax-gas-pp | de792981 | 0 | 0 | 0 | 11 | 7 | 4 | 0 | 28 |
| sk-ax-gas-pp-chart-readability-v2 | 002c337f | 3 | 9 | 19 | 9 | 7 | 2 | 0 | 119 |
| sk-ax-gas-pp-chart-readability-v2 | c00d7de1 | 0 | 2 | 0 | 6 | 3 | 3 | 0 | 18 |
| sk-ax-gas-pp-css-convention | 1ec155d7 | 1 | 2 | 5 | 1 | 1 | 0 | 0 | 24 |
| sk-ax-gas-pp-css-convention | 71fd7dbe | 3 | 4 | 29 | 6 | 5 | 1 | 0 | 84 |

규칙 원문 읽기 방식: {'full': 77, 'partial': 54, 'to_incorrect': 10}
현재 등급별 (세션, 규칙) 쌍: 연 수 / 끝까지 읽은 수
  CRITICAL: 31 / 27
  HIGH: 39 / 23
  MEDIUM: 29 / 18

새 프로토콜: 헤드리스 검토 세션 한 건

sk-ax-gas-pp 에서 src/component/ui/chart/_type/ 의 타입 파일 셋을 convention-typescript 기준으로 검토만 하게 했다. 명령은 claude -p "<검토 지시>" --permission-mode plan --output-format stream-json --verbose --max-turns 40 이다.

도구 호출: {'skill_calls': 1, 'index': 1, 'contract': 12, 'rule': 9} | 원문 읽기 방식: {'full': 9} | 스킬 파일 글자 수: 45085 (≈15028 토큰)
링크만 남은 계약 7개 중 원문까지 따라간 것 7개
연 원문: ['typescript/01-01-types-reuse-existing-contracts-before-new-types [HIGH]', 'typescript/01-02-types-derive-subsets-with-indexed-access [HIGH]', 'typescript/01-04-types-document-custom-types-and-shapes [MEDIUM]', 'typescript/01-08-types-choose-interface-for-object-contracts-and-type-for-composition [MEDIUM]', 'typescript/02-03-naming-use-consistent-file-and-symbol-naming [HIGH]', 'typescript/02-05-naming-import-by-absolute-path [CRITICAL]', 'typescript/02-07-naming-name-types-by-role-and-lifetime [HIGH]', 'typescript/03-05-functions-order-declarations-top-down [HIGH]', 'typescript/06-03-docs-write-concise-korean-comments-about-purpose-and-constraints [HIGH]']
turns=40 duration=328s cost=$3.33 cache_create=103284 cache_read=467081 out=22977

새 프로토콜: 편집이 있는 헤드리스 세션 한 건

검토 세션이 찾은 위반 셋을 실제로 고치게 했다. sk-ax-gas-pp 의 worktree(브랜치 tier-probe)에서 도구를 Read, Edit, Grep, Glob, Skill 과 npx tsc 로 제한하고 --permission-mode acceptEdits 로 돌렸다.

도구 호출: {'skill_calls': 1, 'index': 1, 'contract': 5, 'rule': 4} | 원문 읽기 방식: {'full': 4} | 스킬 파일 글자 수: 27007 (≈9002 토큰)
링크만 남은 계약 3개 중 원문까지 따라간 것 3개
연 원문: ['typescript/01-01-types-reuse-existing-contracts-before-new-types [HIGH]', 'typescript/01-02-types-derive-subsets-with-indexed-access [HIGH]', 'typescript/01-08-types-choose-interface-for-object-contracts-and-type-for-composition [MEDIUM]', 'typescript/02-07-naming-name-types-by-role-and-lifetime [HIGH]']
turns=35 duration=133s cost=$2.05 cache_create=73704 cache_read=509135 out=8945

새 프로토콜: 편집이 있는 헤드리스 세션 둘째 건

측정이 찾아낸 후속 셋을 시켰다. 위젯 두 곳의 labelValues, paneId 를 ui/chart 계약에서 파생, 두 파일에 각각 선언된 Extract<ChartAxis['labelFormat'], …> 를 _type/date-axis-label-format.ts 하나로 합치기, tsc 확인이다. 같은 worktree 에 hooks/check-critical-rules.sh 를 Stop 훅으로 걸어 두었다.

도구 호출: {'skill_calls': 2, 'index': 2, 'contract': 13, 'rule': 9} | 원문 읽기 방식: {'full': 9} | 스킬 파일 글자 수: 60130 (≈20043 토큰)
링크만 남은 계약 8개 중 원문까지 따라간 것 8개
연 원문: ['react/01-02-ownership-prefix-layer-names-on-files-and-symbols [MEDIUM]', 'react/01-03-ownership-place-owner-files-in-role-folders [HIGH]', 'typescript/01-01-types-reuse-existing-contracts-before-new-types [HIGH]', 'typescript/01-02-types-derive-subsets-with-indexed-access [HIGH]', 'typescript/02-03-naming-use-consistent-file-and-symbol-naming [HIGH]', 'typescript/02-05-naming-import-by-absolute-path [CRITICAL]', 'typescript/02-07-naming-name-types-by-role-and-lifetime [HIGH]', 'typescript/03-05-functions-order-declarations-top-down [HIGH]', 'typescript/06-03-docs-write-concise-korean-comments-about-purpose-and-constraints [HIGH]']
turns=63 duration=219s cost=$3.20 cache_create=110262 cache_read=611883 out=16796

판정

읽기 깊이를 계약 파일 모양으로 강제한 뒤로는 “몇 줄 보고 끝내기” 가 기록에서 사라졌다. 기준선에서는 HIGH 로 올린 규칙을 열어도 절반가량은 잘라 읽었다. 표본은 검토 한 건과 편집 두 건이다. 셋 다 링크만 남은 계약을 100% 원문까지 따라갔고(18/18) 스킬 파일 토큰은 9k~20k 였다. 사용자가 직접 진행하는 실제 작업 세션 두세 건을 같은 파서로 더 재고, 한 작업이 15k 를 넘기면 HIGH 를 일부 내린다.

다시 재는 법

python3 script/measure-skill-reads.py '*sk-ax-gas-pp*'        # 기록 전체
python3 script/measure-skill-reads.py --probe run.jsonl         # 헤드리스 세션 한 건

부수 감사: MEDIUM 계약에서 빠지는 규범

MEDIUM 계약은 첫 Incorrect, Correct 짝까지만 싣는다. 첫 짝 뒤에 예제가 더 있는 MEDIUM 규칙 33개(css 14, react 10, ts 9)를 읽어, 뒤쪽 예제에만 있고 산문에는 없는 규범을 찾았다.

규칙예제에만 있던 규범처리
css 01-04덧붙이는 부모 식별자는 충돌한 화면의 라우트 세그먼트 하나이고 pg_ 바로 뒤. 중간 컴포넌트 이름은 넣지 않음산문 두 문장 추가
css 04-02stylelint-disable 주석의 사유는 규칙 이름 뒤 -- <마크업 출처> 형태산문 한 문장 교체
css 08-01리뷰 항목을 content/public/css-review.md 문서로 둔다규칙이 정할 일이 아니라 넣지 않고, 예제의 경로 주석도 뺐다
react 04-01합성 진입 파일은 {Root, Header, Body} as const 하나로 내보내고 Root가 상태를 소유해 컨텍스트로 내린다산문 두 문장 추가
react 08-06파싱 결과 필드는 별칭 없이 체인으로 읽는다HIGH 인 ts 04-03 이 덮어 그대로 둠

나머지 28개는 산문과 표를 코드로 되풀이하는 예제라 계약 손실이 없다. 덤으로 ts 03-01 둘째 Correct 가 객체 상수 키에 문서 주석을 달아 ts 01-04 와 어긋나던 것을 헤더 주석으로 옮겼다.

다섯 작업 회차 (2026-09-08 오후, opus, fable)

sk-ax 커밋 이력의 문투로 작업 다섯 건을 만들어 worktree 마다 헤드리스로 돌렸다. 도구는 편집, tsc, lint 로 제한하고 Stop 훅을 걸었다. fable 로 돌린 첫 회차는 사용량 한도로 1, 2, 3 이 끊겨 opus 로 다시 돌렸다(4, 5 는 fable 로 완주). 결과 diff 는 script/review-diff.sh 가 opus 로 검토했다.

작업모델링크 계약 → 완독스킬 토큰턴, 비용tsc, 훅검토 확정, 해석여지
1 diagram 부품 이름, 구역 주석opus1 / 113k51, $3.060, 09, 6
2 spike-chart 부품 이름, 구역 주석opus6 / 618k55, $2.570, 01, 4
3 chatbot 구역 주석, 부품 판정opus3 / 311k43, $3.220, 06, 14
4 chart Params 문서화, 타입 보장fable3 / 38k58, $2.780, 00, 1
5 두 차트 위젯 판정fable2 / 212k23, $1.770, 0변경 없음

판정 갱신

읽기 깊이 강제는 여덟 세션에서 한 번도 어긋나지 않았다. 남은 변수는 준수율이고, 작업 세션이 새로 만드는 위반은 다섯 건 합쳐 확정 4건 수준이다. 기존 빚이 큰 자리(diagram, chatbot)는 개명, 인라인 작업이 그 빚을 diff 로 끌어올리므로, 그런 작업은 검토 결과의 기존 빚을 별도 후속으로 돌린다.

chatbot 정리 세션 (2026-09-08 밤, opus)

다섯 작업 회차에서 남은 chatbot 후속을 한 세션으로 돌렸다. 하위 소유자 셋 개명, 남은 CSS 짝 병합, 이름만 되풀이하는 주석 삭제, 리터럴 지역 변수 되돌림, 그리고 진입 파일만 있는 폴더 다섯을 부품으로 올리는 지시였다.

항목값
링크 계약 → 완독4 / 4
스킬 토큰17k
턴, 시간, 비용141, 908초, $13.44
tsc, stylelint, eslint, test:unit, 훅모두 0
검토(opus) 확정, 해석여지3, 3