Harness · 덜어내기 · 2026-10-03

에이전트 32종 중 26종을 보관하고
그 일을 모델에게 직접 맡겼다

문제는 이것이었다. Opus 5.5 이후의 모델은 계획을 세우고, 일을 나누고, 결과를 검증하는 일을 스스로 해낸다. 그런데 내 Claude Code 하네스(harness, AI 코딩 도구를 감싸는 규칙·훅·에이전트의 묶음으로, AI가 일하는 방식을 정하고 감시하는 틀)는 그 일을 한 번 더 하고 있었다. 일을 에이전트(agent, 특정 역할만 맡아 따로 띄우는 보조 AI)에게 넘기고, 그 결과를 훅(hook, 도구가 실행되기 전후에 자동으로 끼어들어 명령을 검사하거나 막는 작은 스크립트)으로 다시 검사했다. 같은 판단이 두 번 일어나니 작업은 느려지고, 틀릴 수 있는 자리도 둘로 늘었다. 그래서 하루 동안 하네스를 절반 가까이 덜어냈다. 에이전트 32종 가운데 26종을 보관하고, 그 일은 모델이 절차서를 읽고 직접 하게 했다. 남긴 훅은 증거 없는 완료를 막는 검문소와, 되돌릴 수 없는 사고를 막는 장치가 중심이다. 응답 언어처럼 세션의 바탕을 맞추는 훅 몇 개도 함께 남았다.

한 문장으로 줄이면, 판단은 모델에게 돌려주고 강제 장치를 남겼다

기준은 하나였다. "모델이 지금 혼자서도 하는 일인가." 그렇다면 따로 띄우거나 한 번 더 검사할 이유가 없다. 그런 에이전트는 보관했다. 에이전트가 들고 있던 절차는 버리지 않고 스킬(skill, 정해진 작업 절차를 적어 둔 문서로, 모델이 필요할 때 읽고 따른다)과 규칙으로 옮겼다. 일의 순서를 고정해 여러 에이전트를 차례로 띄우던 Workflow 스크립트 6개도 보관했다. Workflow 도구 자체는 남아 있어서, 밤에 사용자가 병렬 처리를 요청했을 때 한 번 썼다. 반대로 모델이 대신할 수 없는 일은 남겼다. 모델의 자기 보고를 믿지 않고 QA(품질 검증) 증거를 요구하는 검문소, 그리고 대량 삭제나 비밀 파일 커밋(commit, 변경 내용을 이력에 남기는 일)처럼 되돌릴 수 없는 사고를 막는 장치다. 사용자가 정한 것을 어기지 못하게 막는 장치(교차 리뷰를 꺼 두면 호출 차단, 요구 기능 삭제 차단 등)도 남겼다. 따로 떼어 실행하는 에이전트 6종(루프용 5종과 브라우저 QA 껍데기 1종)과, 세션의 바탕을 맞추는 훅 4개도 남겼다. 내 설정에서 뺀 것은 지우지 않고 보관 폴더로 옮겼다. 작업은 세 번에 나눠 했다. 낮에는 내 설정과 저장소(repository, 프로젝트 하나의 코드와 변경 이력을 담은 폴더) 29곳의 훅을, 저녁에는 옮긴 것이 맞는지를, 밤에는 낮에 빠진 저장소 안쪽을 정리했다.

26 / 32보관한 에이전트
44 → 19내 설정의 훅 등록
32 → 10프로젝트용 훅 템플릿
878 → 227저장소 33곳의 훅 등록
43 → 2저장소가 만든 에이전트
−15%매 세션 읽는 규칙 분량
8 / 4,18930일간 Workflow 를 쓴 세션
낮 · 내 설정

에이전트 26종을 보관하고 훅 등록을 절반 넘게 줄였다

모든 프로젝트에 적용되는 내 설정에서 에이전트 32종 중 26종과 Workflow 스크립트 6개를 보관했다. 훅 등록은 44개에서 19개로, 새 프로젝트에 깔아 주는 훅 템플릿은 32개에서 10개로 줄였다. 일부러 옮기지 않은 3종을 빼면, 에이전트가 하던 절차는 스킬과 규칙으로 옮겼다.

저녁 · 다시 재기

다시 재서 네 곳을 고치고, 긴 절차는 나눴다

보관한 에이전트 26종의 본문을 살아 있는 스킬·규칙과 한 줄씩 대조했다. 세 곳은 빠진 것을 채웠고, 한 곳은 남아 있던 중복 문장을 걷어냈다. 그리고 긴 절차를 매번 읽히는 자리에서 필요할 때만 읽는 자리로 옮겼다.

밤 · 저장소 안쪽

저장소 안쪽의 에이전트 43종 중 41종을 보관했다

저장소에도 그 저장소만의 훅과 에이전트를 따로 둘 수 있다. 낮의 훅 정리는 저장소 33곳 중 29곳에만 닿았고, 저장소 안의 에이전트는 그대로였다. 설정 폴더 152곳을 다시 세서, 빠졌던 저장소 4곳과 워크트리(한 저장소를 다른 폴더에 하나 더 꺼내 둔 작업 사본) 47곳의 훅을 정리했다. 저장소 8곳과 폴더 1곳에 있던 에이전트 43종 중 41종을 보관했다.

같은 판단을 두 번 하고 있었다

리드(lead, 사용자와 대화하는 메인 세션의 모델)는 계획·분배·검증을 스스로 할 수 있다. 그런데 하네스는 그 일을 에이전트에게 맡기고 훅으로 검사하는 방식으로 한 번 더 했다. 아래 그림 왼쪽처럼 리드 아래에 Workflow 스크립트, 역할별 에이전트, 훅이 겹겹이 놓여 있었다. 모델이 혼자 할 수 있는 판단을 여러 겹이 다시 한 셈이다. 그래서 가운데 겹을 걷어냈다. 이제 리드가 절차서를 읽고 직접 한다. 훅은 증거 없는 완료와 되돌릴 수 없는 사고를 막는 일을 중심으로 맡는다. 판단은 모델에게, 강제는 검문소에게 둔 구조다.

이전에는 네 겹이 쌓여 있었고, 이제는 두 겹이다 이전 — 네 겹 리드 (메인 세션) 사용자와 대화하는 모델 Workflow 스크립트 6개 일을 나누고 검증하는 순서를 고정 역할별 에이전트 26종 계획 · 구현 · 리뷰 · QA 담당 … 훅 44개 등록 · 스크립트 40개 템플릿 32개 · 명령 한 번마다 검사 약 0.8초 모델이 이미 하는 판단을 에이전트와 훅이 한 번 더 한다 덜어냄 이후 — 두 겹 리드 (메인 세션) 절차서를 읽고 직접 한다 스킬 (절차서) · 규칙 팀 작업 · QA 반복 · 브라우저 테스트 · 기획 … 보관한 26종 중 23종의 절차를 여기로 옮겼다 QA 증거를 남긴다 증거 검문소 + 사고 방지 장치 내 설정의 훅 19개 · 스크립트 18개 · 템플릿 10개 예외 — 에이전트 6종만 남김 (루프용 5 + QA 1)
왼쪽이 이전 구조다. 리드 아래에 Workflow 스크립트와 역할별 에이전트가 놓여 있었고, 바닥에는 훅 44개가 등록돼 있었다(여러 에이전트를 지휘하던 총괄 에이전트는 9월 2일에 먼저 보관했다). 모든 일이 네 겹을 다 거친 것은 아니다. 30일 동안 Workflow 를 쓴 세션은 4,189개 중 8개였고, 에이전트 호출은 자가개선 루프(실수와 바깥 연구를 모아 하네스를 스스로 고치는 반복 작업)와 QA 격리(브라우저 검증을 따로 떼어 돌리는 일)에 몰려 있었다. 오른쪽이 이후 구조다. 리드가 스킬 절차서를 직접 따르고, 훅은 증거 검문소와 사고 방지 장치를 중심으로 남았다.
이전 · 중계 구조

에이전트가 에이전트를 부르는 길이 있었다

"모델이 이미 하는 판단을 하네스가 한 번 더 한다"

  • 일이 이 길을 타면 스크립트가 역할별 에이전트를, 그 에이전트가 다시 QA 에이전트를 불렀다. 일을 넘길 때마다 맥락을 처음부터 다시 넣었다.
  • Workflow 스크립트가 일을 나누는 순서와 검증하는 순서를 고정했다. 모델이 스스로 판단하는 것보다 느린 길이었다. 다만 그 속도 차이를 따로 잰 값은 없다.
  • 훅 등록 59개(이 컴퓨터의 Claude 를 Slack 과 잇는 연결 도구의 15개 포함)가 명령 한 번마다 약 0.8초를 더 썼다. 줄인 뒤의 값은 아직 다시 재지 않았다.
  • 30일 기록을 보니 Workflow 를 쓴 세션은 4,189개 중 8개였다. 에이전트 호출은 자가개선 루프와 QA 격리에 몰려 있었다.
이후 · 직접 수행

리드가 절차서를 읽고 직접 한다

"판단은 모델에게, 강제는 검문소에게"

  • 절차는 스킬이나 규칙 한 곳에만 둔다. 에이전트 파일에 복사본을 두지 않는다.
  • 따로 떼어 실행해야 할 때만 내장 범용 에이전트에 지시를 바로 넘긴다. 브라우저 QA 도 기본은 리드가 직접 하고, 출력이 너무 클 때도 내장 범용 에이전트로 넘기는 것이 정책이다. 그런데 얇은 껍데기 브라우저 QA 에이전트 1종이 남아 있어 정책과 어긋난다(아래 남은 일).
  • 훅은 증거 검문소, 사고 방지 장치, 사용자 결정을 지키는 차단 장치, 세션 환경 훅 4개만 남겼다. 그래서 내 하네스의 훅 등록은 19개, 스크립트는 18개다. Slack 연결 도구의 등록 15개는 하네스 밖이라 그대로 뒀다.
  • 자가개선·수확 루프는 그대로 두었다(수확 루프는 바깥 논문과 자료를 모아 하네스 개선안으로 바꾸는 반복 작업이다). 남긴 에이전트 5종이 그 루프의 격리 실행과 독립 반박을 맡는다.
에이전트 32종 중 6종만 남겼다

에이전트마다 하나만 물었다. "모델이 지금 혼자서도 하는 일인가." 계획을 세우는 일, 코드를 고치는 일, 버그를 잡는 일, 결과를 검토하는 일은 모델이 이미 직접 한다. 그래서 그 일을 맡던 에이전트 파일은 보관하고, 필요한 절차만 스킬과 규칙으로 옮겼다. 구현 담당처럼 모델이 따로 절차 없이도 하는 일은 옮기지도 않았다. 반대로 따로 떼어 실행하는 것 자체가 목적인 에이전트는 남겼다. 바깥 자료를 격리해서 읽는 트렌드 수집 담당이 그렇다. 만든 쪽이 자기 결과를 채점하지 못하게 따로 세운 적대적 비평 담당도 그렇다. 아래 막대는 최근 30일 동안 각 에이전트가 불린 횟수다.

최근 30일 에이전트 호출 횟수 — 낮에 센 세션 4,189개 기준 남긴 6종 1,066회 · 보관한 26종 668회 (보관분의 70%가 상위 5종) 자가개선 분석 539 전수 감사 158 브라우저 QA 150 48줄 껍데기로 다시 씀 — 절차는 브라우저 테스트 스킬로 구현 실행 143 → 팀 작업 스킬이 구현 단계를 맡음 (본문은 옮기지 않음) 적대적 비평 116 트렌드 수집 101 기능 테스트 실행 99 → 기능 테스트 스킬 화면 검수 89 → 기획·디자인, 웹툰 제작 스킬 (리드가 직접 검수) Figma 디자인 76 → 기획·디자인 스킬 (Figma 제작 순서) 버그 수정 59 → 에러 복구 규칙(요지) + 원문 문서 QA 시나리오 작성 28 → QA 시나리오 생성 스킬 백엔드 전문 26 → 백엔드 규칙 (검증 명령 4종) 계획 비평 25 프론트엔드 전문 21 → 프론트엔드 규칙 (검증 명령 4종) 제품 관리 20 → 제품 기획 스킬 계획 수립 18 → 팀 작업 스킬 (계획 확정 단계) 그 외 보관 15종 64 UX 리서치 14 · 웹앱 테스트 10 · 탐색 9 · 코드 리뷰 8 … · 호출 0회 3종 남김 — 따로 떼어 실행하는 것이 목적인 에이전트 (루프 5종 + QA 격리 1종) 보관 — 절차는 화살표의 스킬·규칙으로 옮기고, 원문은 보관 폴더에 둔다
초록 막대 5개가 남긴 에이전트다. 남긴 6종 중 나머지 하나(하네스 검사 절차의 한 단계를 따로 떼어 돌리는 에이전트)는 30일에 2회라 막대를 생략했다. 회색 막대는 보관한 에이전트다. 호출이 많았던 구현 실행(143회)과 기능 테스트 실행(99회)도 보관했다. 호출 횟수가 기준이었다면 남았겠지만, 기준은 위의 물음 하나였다. 모델이 혼자서도 하는 일이면 따로 띄울 이유가 없다.
남김

따로 실행하는 6종

자가개선·수확 루프에서 쓰는 5종이 남았다. 자가개선 분석, 트렌드 수집, 하네스 검증 단계 실행, 적대적 비평, 전수 감사다. 적대적 비평은 다른 작업에서도 만든 쪽과 떨어진 독립 반박을 맡는다. 여기에 브라우저 출력이 너무 클 때 쓸 수 있도록 브라우저 QA 에이전트를 하나 남겼다. 정책 문서는 이 경우도 내장 범용 에이전트로 넘기라고 적었으니, 이 1종은 정책과 어긋난 채 남아 있다. 다만 926줄이던 절차는 스킬로 옮겼다. 남은 파일은 그 스킬을 가리키기만 하는 48줄짜리 껍데기다.

6
남긴 에이전트
926→48
브라우저 QA 파일 줄 수
보관

26종 + 안내 문서 1

계획·구현·버그 수정·코드 리뷰·QA 총괄 담당 등 26종을 보관했다. 에이전트처럼 잘못 보이던 안내 문서 1개도 함께 보관했다. 일부러 옮기지 않은 3종을 빼면, 절차는 스킬 26개의 문서 37건과 일부 규칙에 옮겨 적었다. 복사본은 두지 않았다.

27
보관한 파일
37
고친 스킬 문서
Workflow

스크립트 6개 보관

일을 나누고 검증 순서를 고정하던 Workflow 스크립트 6개를 보관했다. 여러 작업을 동시에 띄우던 스킬 1개도 함께 보관했다. 30일 동안 Workflow 를 쓴 세션은 4,189개 중 8개였다.

6
보관한 스크립트
8/4,189
30일간 쓴 세션
훅은 증거 검문소와 사고 방지 장치를 중심으로 남겼다

훅이 사는 자리는 세 군데다. 첫째는 내 설정(홈 폴더에 있어 모든 프로젝트에 적용되는 설정)이다. 여기에 59개가 등록돼 있었다. 그중 15개는 Slack 연결 도구의 것이라 이 글에서는 빼고, 하네스 훅 44개를 다뤘다. 둘째는 새 프로젝트에 깔아 주는 템플릿 32개다. 셋째는 실제 프로젝트 33곳에 깔린 설치본이다. 세 자리 모두 같은 기준으로 걸렀다. 증거 없는 완료와 push(작업을 원격 저장소로 올리는 일)를 막는 검문소, 그리고 되돌릴 수 없는 사고를 막는 장치는 남겼다. "일은 이렇게 하라"고 일깨워 주던 훅은 보관했다. 다만 보관한 쪽에도 명령을 실제로 막던 검문소가 여럿 있었다. 정책이 남길 훅을 "QA 검문소와 안전 가드"로 좁게 정했기 때문이다. 축소 직전 등록돼 있던 것만 꼽으면 이렇다. 브라우저 저장소(localStorage) 사용 차단, 브라우저 자동화 세션 이름을 잘못 짓는 관용구 차단, 큰 코드 커밋에 설계 문서가 없으면 차단, Workflow 비용 확인, 팀 작업 계약 확인이 있다. 비신뢰 웹을 읽는 에이전트의 정의를 검사하던 보안 검문소 2종도 있다. 그리고 스킬 읽기 검문소가 있다(스킬 절차를 옮겨 만든 에이전트가 그 절차서를 실제로 읽었는지 대화 기록에서 확인하던 장치다). 이 강제는 이제 멈춰 세우는 검문소 없이 규칙 문장이나 모델의 판단에 맡겨졌다. 사용자가 정한 것을 어기지 못하게 막는 장치 5개는 남겼다(아래 표 셋째 줄). 예외로 남긴 것은 내 설정의 세션 환경 훅 4개다. 응답 언어나 권한 설정처럼 세션의 바탕을 맞추는 훅이라 남겼다(아래 표 마지막 줄). 내 설정과 템플릿에서 뺀 훅은 보관 폴더로 옮겼고, 저장소에 깔린 훅은 git(코드 변경 이력을 관리하는 도구)으로 지웠다.

훅 덜어내기 — 이전 대비 남은 비율 점선 = 이전 · 채움 = 이후 · 기준은 2026-10-03 아침의 설정 백업 내 설정 — 모든 프로젝트에 적용 (Slack 연결 15개 제외) 등록 44 → 19 스크립트 40 → 18 설정에서 뺀 스크립트 22개 중 19개 + 이미 연결이 끊겨 있던 파일 7개 = 26종은 훅 보관 폴더로 나머지 3개는 일반 스크립트라 다른 곳으로 — 2개는 안 쓰는 스크립트 보관 폴더, 1개는 스킬 폴더 프로젝트용 템플릿 — 새 프로젝트에 깔아 주는 원본 템플릿 32 → 10 남은 10 = 공통 7 · 화면 QA 2 · 웹 타입스크립트 1 · 보관 22 · 설치기와 초기화 스킬의 허용 목록도 같은 10개로 설치본 — 실제 프로젝트 33곳에 깔린 훅 등록 합계 878 → 227 파일 합계 944 → 278 등록 651건·파일 666개 제거(낮 29곳 + 밤 4곳) · 저장소마다 8~13개만 남음 · 워크트리 47곳은 따로 1,105건·1,092개 설정 원본은 백업 폴더에 보존 · 커밋은 이 컴퓨터에만 있고 원격에는 올리지 않았다 훅 보관 폴더 내 설정 훅 26종 템플릿 보관 폴더 템플릿 22종 + 걷어 낼 목록 저장소에서 지운 훅 파일 666 + 워크트리 1,092 보관한 곳 → 저장소의 훅은 지운 커밋이 기록으로 남아 되살릴 수 있다. git 추적 밖이던 워크트리 1곳만 디스크에서 바로 정리했다.
세 묶음이 훅이 사는 세 자리다. 내 설정, 깔기 전의 템플릿, 그리고 실제 프로젝트 33곳의 설치본이다. 그 저장소들의 워크트리에서도 47곳의 훅을 따로 정리했다(워크트리는 모두 49곳이고, 정리할 훅이 있던 곳이 47곳이다). 내 설정은 절반이 조금 안 되게 남았다(등록 43%, 스크립트 45%). 템플릿과 설치본은 넷에 하나 남짓(26~31%)만 남았다.
남긴 훅이 하는 일 내 설정 (스크립트 18) 프로젝트용 템플릿 (10)
증거 검문소증거 없는 완료 선언과 하네스 파일 훼손을 막는다 QA(품질 검증) 확인 목록 없이 완료를 선언하면 막기 · 등록된 훅 파일이 실제로 있는지 확인 · 규칙 파일 뒤에 부록을 덧붙이지 못하게 막기 · 규칙 본문 형식 검사 4 push 전에 QA 증거 확인(공통·화면 QA 두 벌) · 작업 품질 검사 · 완료 주장 검사 · 배포 확인 표식 · 교차 리뷰(다른 AI 모델이 다시 검토하는 일) 검사 6
사고 방지 장치되돌릴 수 없는 사고를 막는다 대량 삭제 · 비밀 파일 커밋 · 관측 기록(세션 대화 기록) 변조 · 작업 폴더 경계 경고 · 브라우저 세션 일괄 종료와 명령 주입(외부 값이 명령으로 실행되게 끼워 넣는 공격) 5 비밀 파일 커밋 · 커밋 내용 속 비밀값 · 커밋 메시지의 AI 서명 3
사용자 결정 지키기사용자가 정한 것을 어기지 못하게 막는다 교차 리뷰를 꺼 두면 호출 차단 · 요구 기능을 지워서 "해결"하지 못하게 막기 · 건너뛴 테스트가 늘면 차단 · 자가개선 라운드 예산 · 에이전트를 부를 때 모델 지정 금지 5 타입 검사와 빌드를 통과해야 커밋 (웹 타입스크립트 전용) 1
세션 환경세션의 바탕을 맞춘다 프로젝트 권한 설정 자동 적용 · 한글 응답 알림 · 사용자 지적 감지 · 팀 작업 세션 표식(QA 확인 목록 검문소를 돕는다) 4 해당 없음. 세션 환경은 내 설정이 맡는다
절차는 버리지 않고 스킬과 규칙으로 옮겼다

규칙은 세션이 시작될 때마다 모델이 함께 읽는 지시 문서다. 규칙 안에 "이 일은 저 에이전트를 불러서 하라"는 문장이 남아 있으면 문제가 생긴다. 에이전트를 보관해도 모델이 계속 없는 에이전트를 찾는다. 그래서 규칙 52개를 전부 훑었다. 에이전트에게 일을 넘기는 방법만 적은 규칙 4개는 은퇴시켰다(더는 읽히지 않게 보관 폴더로 뺐다). 특정 도구를 쓸 때만 필요한 4개는 필요할 때만 읽는 폴더로 옮겼다. 15개는 에이전트에게 맡기라는 문장을 리드가 직접 하라는 문장으로 고쳐 썼다. 보관한 에이전트의 절차는 대부분 스킬에 옮겨 적었다. 스킬 26개, 문서 37건이다. 버그 수정 절차와 검증 명령처럼 일부는 규칙으로 들어갔다.

규칙 52개와 보관한 에이전트 26종의 절차가 간 곳 규칙 52개 세션마다 읽히는 것 32개 119,507 바이트 보관한 에이전트 26종 각자 절차서를 품고 있었다 에이전트 정의 파일 44 유지 4 필요할 때만 4 은퇴 절차 옮김 유지 44개 — 세션마다 읽히는 것 25개 · 101,784 바이트 15개는 에이전트 호출 문장을 리드 직접 수행으로 고쳐 썼다 에러 복구 · 검증 레벨 · 프론트엔드 · 백엔드 · 완료 검증 · 브라우저 보안 … ↑ 버그 수정 절차는 에러 복구 규칙으로, 프론트·백엔드 검증 명령은 각 규칙으로 필요할 때만 읽는 규칙 4개 (그 폴더에 지금 71개) 브라우저 도구 선택 · 독자 우선 글쓰기 · 트렌드 색인 외 1개 은퇴 4개 — 원문은 보관 폴더에 에이전트 위임 전략 · 여러 에이전트 지휘 순서 · 에이전트가 에이전트를 무한히 띄우는 것 막기 · 동적 워크플로 스킬 26개 · 문서 37건 — 절차의 새 정본 팀 작업(계획·구현·코드 리뷰) · 브라우저 테스트 · 기능 테스트 · QA 시나리오 · 기획·디자인 · 제품 기획 · 문체 복제 · 마케팅 계획 · 리팩토링 … 옮긴 문서 여러 곳에 출처 에이전트와 날짜를 적었다(표기 형식은 문서마다 다르다) 매 세션 읽는 규칙: 32개 119,507 바이트 → 낮 뒤 25개 104,467 → 저녁 뒤 101,784 바이트(−15%). 더 줄이는 일은 남았다.
왼쪽 두 상자가 출발점이고, 오른쪽 네 상자가 간 곳이다. 규칙은 유지, 필요할 때만, 은퇴의 셋으로 갈렸다. 보관한 에이전트의 절차는 스킬 문서로 옮겨 갔다. 점선 화살표는 에이전트 절차 가운데 규칙으로 들어간 것(버그 수정 절차와 검증 명령)이다.
1
전부 훑기 · 어디서 에이전트를 부르는가
규칙 52개, 스킬 220개, 훅 등록 59개를 에이전트를 부르는 문구로 훑었다. 부르는 위치를 파일과 줄 번호로 목록을 만들었다.
↓
2
절차 옮기기 · 에이전트 본문을 스킬·규칙으로
에이전트 파일에 있던 절차, 판정 규칙, 결과물 형식을 해당 스킬의 첫 문서나 긴 절차서에 넣었다. 버그 수정 절차처럼 일부는 규칙 문서로 갔다. 하는 주체는 리드로 바꿨다.
↓
3
보관 · 지우지 않고 옮긴다
에이전트, 규칙, 훅을 각각의 보관 폴더로 옮기고 은퇴 목록에 적었다. 동기화 스크립트가 이 목록을 읽어, 설정 백업 저장소(미러)에서도 같은 상태를 지킨다.
↓
4
남은 흔적 0 확인
보관한 이름이 살아 있는 규칙·스킬·훅·프로젝트 문서에 남아 있지 않은지 다시 훑었다. 동기화 스크립트의 은퇴 스킬 검사가 한 트레이딩 프로젝트의 문서 2곳을 잡아내서 고쳤다.
줄인 뒤에는 재는 도구도 다시 맞췄다

하네스를 줄이면 그 하네스를 재던 검사 도구도 함께 낡는다. 은퇴한 에이전트를 기준점으로 삼던 검사기나, 보관한 훅을 찔러 보던 점검기가 그대로면 판단이 꼬인다. "검사기가 깨진 것"을 "하네스가 깨진 것"으로 잘못 읽게 된다. 그래서 검사 도구 일곱 종을 새 구성에서 전부 다시 돌렸다. 다섯 종은 새 구성에 맞게 고쳤고, 두 종은 고칠 것 없이 통과했다. 고친 것 중 발표 내용 대조 검사기는 프로젝트 템플릿 쪽 기대 목록을 고치는 일이 남았다. 아래 수치는 모두 글을 쓰던 2026-10-03 밤에 실행한 결과다. "종료 코드 2"는 검문소가 명령을 막을 때 내는 차단 신호다.

8/8발표 대조표 검문소 실제 차단
7/7검문소 생존 점검
6/6측정 감시기 자가 시험
25/25서로 가리키는 경로 확인
34 · 0등록된 훅 · 없는 파일
종료 코드 2증거 없는 push 를 막음
검사 도구 무엇을 재나 지금 결과 고친 것
발표 내용 대조 검사기 발표(키노트)에서 "강제된다"고 말한 검문소들이 실제 하네스에 등록돼 있고, 규칙 위반 입력을 받으면 실제로 차단 신호(종료 코드 2)를 내는지 강제 확인 8/8 대조표에 오른 차단 검문소 8개 전부. 내 설정 훅 19개 중 나머지는 이 검사가 재지 않는다 내 설정 쪽 기대 목록에서 보관한 훅 3행(브라우저 저장소 차단 1, 감지 훅 2)을 지웠다. 8/8 은 그 뒤의 분모다. 프로젝트 템플릿 쪽은 그대로 둬서 보관한 템플릿 3종이 "빠진 것"으로 표시되므로, 그쪽을 고치는 일이 남았다
검문소 생존 점검기 차단 훅 7종에 위반 입력을 넣어 살아 있는지 7/7 통과 점검 입력이 없는 6종은 표시만 에이전트 호출을 검사하는 검문소 줄을 되살렸다. 남긴 에이전트 6종이 아직 그 길을 쓴다
측정 기록 감시기 수치를 시간순으로 쌓는 기록(원장)이 멈췄는지, 같은 값만 받는지, 비었는지를 가려내는지 자가 시험 6/6 바꾼 것 없음. 새 구성에서도 통과했다
경로·표식 계약 검사기 규칙·스킬·훅이 서로 가리키는 경로와 표식이 실제로 있는지 25/25 내 설정·프로젝트 양쪽 은퇴한 팀 총괄 에이전트를 기준점으로 삼던 항목을 지웠다
등록 대상 존재 검사기 설정에 등록된 훅의 대상 파일이 디스크에 실제로 있는지 등록 34 · 없는 파일 0 34 = 하네스 훅 19 + Slack 연결 도구 15 바꾼 것 없음. 보관으로 사라진 파일을 가리키는 등록이 0건이었다
새 프로젝트 설치 시험 새 프로젝트에 설치하면 허용 목록 10개만 깔리고, 은퇴 훅은 지워지고, 증거 없는 push 가 막히는지 종료 코드 2 설치본 11파일(검문소 9 + 보조 2) 필수 목록을 공통 7개로, 웹 타입스크립트용은 커밋 전 검사 1개로 줄였다. 비어 버린 백엔드·Flutter·Supabase 분류는 지웠다
저장소 훅 정리기 33개 프로젝트의 설치본과 워크트리 47곳에서 허용 목록 밖의 훅을 등록과 파일 모두 지우는지 남은 것 0 저장소 33 · 워크트리 47 재검사 처음에는 git 이 수정된 파일 삭제를 거부했다. 그래서 8개 저장소에 51개 파일이 조용히 남았다. 실패를 숨기지 않게 고친 뒤(강제 옵션을 쓰고, 실패하면 멈추게) 다시 적용했다. 밤의 전수 재고에서는 처음 목록에서 빠졌던 깊이 3의 저장소 4곳과 워크트리를 찾아 같은 절차로 마쳤다(아래 '저장소 안쪽' 절)
남은 일 · 숨기지 않고 적는다
  1. 다른 Mac(Mac Studio)에는 보관한 훅을 실제 설정에서 빼는 작업이 아직 전파되지 않았다. 설정 백업 저장소의 적용 스크립트를 한 번 돌려야 한다.
  2. 33개 프로젝트와 워크트리 46곳의 훅 정리, 프로젝트 에이전트 41종 보관은 각 저장소에 로컬 커밋(내 컴퓨터에만 있고 원격에는 안 올린 커밋)으로만 있다. push 여부는 저장소마다 따로 정한다. 원격보다 크게 뒤처진 저장소 1곳은 push 전에 합쳐야 한다.
  3. 발표 내용 대조 검사기의 프로젝트 템플릿 쪽 기대 목록에 보관한 템플릿 3종이 남아 있어 "빠진 것"으로 표시된다.
  4. 전부터 있던 문제도 그대로다. 자가개선을 깨우는 훅이 등록돼 있지 않고, 규칙 효과 측정이 6일째 멈춰 있다. 매 세션 읽는 규칙(지금 101,784 바이트)도 더 줄일 여지가 있다.
  5. 하다가 발견한 것이 있다. 규칙 폴더 아래에, 8월 19일 자동 동기화가 만든 이름에 공백이 섞인 폴더가 실제 설정과 백업 양쪽에 남아 있다. 이번 범위 밖이라 삭제 후보로만 적었다.
  6. 새 프로젝트 초기화 스킬의 첫 문서(44KB)는 이번 정리에서 바뀐 파일이 아니어서 아직 나누지 않았다. 아래 "다시 재서 네 곳을 고치고, 긴 절차는 따로 나눴다" 절과 같은 방식을 적용할 후보다.
  7. 설정 백업 저장소가 브랜드 키트 스킬을 추적하지 않는다. 그래서 그 스킬을 나눈 결과는 실제 설정에만 있다.
  8. 남긴 에이전트 4종(적대적 비평 등)의 정의에는, 스킬 읽기 검문소가 자기 약속을 강제한다고 적혀 있다. 그런데 그 검문소는 보관했다. 정의 문구를 고치거나 검문소를 다시 등록해야 그 문장이 사실이 된다.
  9. 정책 문서는 유지 에이전트를 루프용 5종으로 정하고, 너무 큰 브라우저 출력도 내장 범용 에이전트로 넘기라고 적었다. 그런데 브라우저 QA 껍데기 에이전트 1종이 남아 있다. 껍데기를 보관하거나 정책에 예외로 적어야 둘이 맞는다.
  10. 비신뢰 웹을 읽는 에이전트의 정의를 검사하던 보안 검문소 2종을 보관했다. 이 검문소는 남긴 에이전트와 저장소 안 에이전트까지 지켰다. 남긴 웹 수집 에이전트 가운데 후보 설계 저장소의 수집기에는 이 검문소가 요구하던 설정(프로젝트 지시문을 넣지 않는 설정)이 없고, 지금은 이를 막는 장치가 없다. 설정을 넣거나 검문소를 다시 등록해야 한다.
다시 재서 네 곳을 고치고, 긴 절차는 따로 나눴다

낮의 정리가 끝난 뒤, 정말 잘 옮겼는지 디스크에서 다시 확인했다. 보관한 에이전트 26종의 본문을 살아 있는 스킬·규칙 전체와 한 줄씩 대조했다. 영어 원문을 한글로 바꿔 적은 경우처럼 줄로 잡히지 않는 것도 있었다. 그런 것은 결과물 형식, 판정 규칙, 점검 목록 같은 산출 약속이 옮긴 곳에 있는지 항목별로 봤다. 결과는 "대부분 옮겨졌지만 네 곳은 손봐야 했다"였다. 세 곳은 빠진 것을 채웠고, 한 곳은 남아 있던 중복 문장을 걷어냈다.

옮겨 둔 자리도 문제였다. 규칙은 세션마다, 스킬의 첫 문서는 그 스킬을 부를 때마다 통째로 모델에 실린다. 긴 절차를 그 두 자리에 두면 읽기도 전에 컨텍스트(모델이 한 번에 볼 수 있는 분량)를 차지한다. 그래서 긴 절차는 별도의 절차서와 참고 문서로 옮겼다. 첫 문서에는 개요와 "어디를 읽으라"는 안내만 남겼다.

모델에 매번 실리는 분량 — 나누기 전 대비 남은 비율 점선 = 나누기 전 · 채움 = 나눈 뒤 · 오른쪽은 실제 크기 · 옮긴 절차는 그 단계에서만 읽는다 스킬을 부를 때마다 통째로 실리는 첫 문서 팀 작업 77.1 → 14.8 KB + 절차서 64.1 KB QA 반복 60.0 → 9.2 KB + 절차서 53.4 KB 리팩토링 22.8 → 16.3 KB 작업 재검증 21.6 → 16.6 KB 마케팅 계획 26.7 → 23.0 KB 브랜드 키트 20.3 → 16.5 KB 리팩토링부터 브랜드 키트까지 네 스킬에서 옮긴 절은 참고 문서 4개(4.4~7.2 KB)로 — 그 단계에서만 읽는다 세션마다 실리는 규칙 에러 복구 5.0 → 2.3 KB 수정 절차 전문은 원문 문서로 매 세션 규칙 25개 104.5 → 101.8 KB 옮긴 줄이 하나도 빠지지 않았는지 스크립트로 대조했다(빠진 줄 0). 검사기가 첫 문서에서 찾는 표식 문구는 그대로 남겨 경로·표식 계약 검사 25/25 를 지켰다.
위 여섯 줄은 스킬을 부를 때 통째로 실리던 첫 문서의 크기다. 아래 두 줄은 세션마다 실리는 규칙이다. 줄어든 만큼의 긴 절차는 사라지지 않았다. 막대 옆에 적힌 절차서와 참고 문서로 옮겨 가서, 실행 단계에 들어갈 때만 읽힌다.
옮긴 방식 (보관 26종 = 6 + 17 + 3) 에이전트 → 옮긴 곳 근거
원문 대부분을 옮김 6 문체 복제 → 문체 복제 스킬 절차서 94% · 버그 수정 → 에러 복구 89% · 결제 전문 → 결제 스킬 88% · 코드 리뷰 → 리팩토링 스킬 78% · QA 시나리오 작성 → QA 시나리오 생성 스킬 · QA 총괄 → QA 반복 스킬 63%. 남긴 브라우저 QA 도 926줄 절차의 93%가 브라우저 테스트 절차서에 있다 원문 줄 대부분(63~94%)이 그대로 남아 있다 (줄 단위 대조)
약속 단위로 옮김 17 계획 수립 → 팀 작업의 계획 확정 · 계획 비평 → 제품 기획의 계획 시뮬레이션 통과·반려 판정 · 검증 → 작업 재검증의 완료 주장 분류·판정 규칙 · Figma 디자인 → 기획·디자인의 Figma 제작 순서 · 제품 관리·디자인·정보 구조·UX 리서치(사용자 경험 조사)·분석 5종 → 제품 기획의 산출 형식 11곳 · 브랜드 전략 → 브랜드 키트 · 마케팅 총괄 → 마케팅 계획 · 프론트엔드·백엔드 전문 → 각 규칙 · 화면 검수 → 기획·디자인의 블라인드 검수(만든 쪽 설명을 보지 않고 결과물만 보고 판단하는 검수) · 기능 테스트 실행·웹앱 테스트 실행·사용자 대리 → 각 스킬 + QA 검증 단계 규칙 문장은 한글로 바뀌었지만 출력 형식, 판정 규칙, 완료 점검 항목이 옮긴 곳에 전부 있다
일부러 안 옮김 3 탐색(내장 탐색 에이전트와 중복) · 글쓰기 · 구현 실행 본문. 셋 다 축소 전 기준으로 "이 이름으로 띄우라"는 문장이 스킬·규칙·훅에 한 곳도 없었다. 구현 실행 막대의 143회는 그런 고정 호출 없이 실제로 띄운 횟수다. 구현 실행이 지키던 증거 약속(종료 코드를 따로 받기, 검증 못 한 것은 따로 적기)은 에러 복구·각 분야 규칙·완료 검증 규칙에 이미 있다 기준 커밋에서 부르는 곳 0, 모델이 직접 하는 일
손본 곳 4 (에이전트 수가 아님) ① 정보 구조 범용 템플릿 4종(구조 지도·분류 체계·이름 규칙·찾기 쉬움 평가)을 제품 기획 스킬의 참고 문서로 ② UX 리서치 템플릿 4종(발견 정리표·리서치 계획·휴리스틱 평가(사용성 원칙 목록으로 화면을 점검하는 방법)·인터뷰 가이드)도 같은 곳에. 둘 다 단독 요청이 닿도록 스킬 설명에 길을 냈다 ③ 백엔드 보안 점검 목록의 전역 예외 처리 항목 복원 ④ 스킬 안에 남아 있던 Workflow 정책 반복 3줄 제거(정책은 전역 지시 문서 한 곳에만) 30일 동안 UX 리서치 담당이 14회, 정보 구조 담당이 5회 불려 쓰던 산출 형식이다
저장소 안쪽에는 빠진 곳이 남아 있었다

여기까지는 주로 내 설정 이야기였다. 그런데 하네스는 저장소 안에도 둘 수 있다. 저장소의 설정 폴더에 그 저장소만의 훅·에이전트·스킬을 넣으면 된다. "저장소 안쪽도 정리된 건가"라는 물음에 답하려고 이 폴더 152곳을 전부 다시 셌다. 답은 "아니오"였다. 낮의 훅 정리는 폴더 깊이 2까지만 훑어서, 깊이 3에 있는 저장소 4곳이 빠졌다. 워크트리 49곳은 아예 셈 밖이었다. 저장소가 직접 만든 에이전트 43종에는 손대지 않은 상태였다. 그래서 같은 기준을 저장소 안쪽까지 적용했다. 에이전트가 있는 저장소 8곳 중 7곳은 사용자가 병렬 처리를 요청해 Workflow 로 한 번에 돌렸고, 1곳은 직접 고쳤다. 정책은 Workflow 도구를 쓰지 않는 것이지만, 이때는 사용자가 직접 병렬 처리를 요청해서 썼다. 워크트리는 같은 입력에 늘 같은 결과를 내는 스크립트로 처리했다. 남긴 에이전트 2종은 요구 잠금(지켜야 할 문장이 특정 파일에 남아 있는지 세션이 끝날 때마다 확인하는 장치)에 묶여 옮기지 못했다.

저장소 안쪽 — 정리 전 대비 남은 비율 점선 = 정리 전 · 채움 = 남은 것 · git 으로 지우거나 옮겨 되돌릴 수 있다(git 추적 밖 워크트리 1곳 제외) · push 없음 훅 — 저장소 본체 33곳 (낮 29 + 밤 4) 등록 878 → 227 파일 944 → 278 훅 — 워크트리 49곳 (밤에 처음 셈) 등록 1,510 → 405 파일 1,560 → 468 에이전트 — 저장소가 직접 만든 것 (8곳 + 폴더 1) 에이전트 43 → 2 남김 2 — 요구 잠금에 묶여 옮기지 못한 2종 보관 41 = 절차를 스킬 참고 문서로 옮긴 5 + 보관한 원문이 곧 절차 문서인 36 · 30일 동안 불린 횟수 0 에이전트 보관 폴더 에이전트가 있던 곳마다 · 안내 표 옛 판 훅 보관 7개 · 내용 해시로 이름 로컬 커밋만 저장소 15 · 워크트리 46 옮긴 자리 → 워크트리 49곳 중 정리할 훅이 있던 곳은 47곳이다. 46곳은 커밋했고, 1곳은 설정 폴더가 git 추적 밖이라 디스크만 정리했다.
위 두 묶음은 훅이고, 아래 한 묶음은 에이전트다. 워크트리는 그 폴더에서 세션이 열릴 때만 훅이 깨어나서 평소에는 잠들어 있었다. 하지만 그대로 두면 다음 자동 이슈 처리(GitHub 이슈를 받아 에이전트가 워크트리에서 스스로 고치는 자동화)가 옛 훅을 물려받는다. 훅이 남은 비율은 낮의 설치본 정리와 비슷하게 넷에 하나 남짓(26~30%)이다. 가운데 상자는 설치본에만 있던 옛 판 훅 7개를 보관한 곳이다. 이름은 내용 해시(파일 내용으로 계산한 고유 값)로 붙였다.
찾은 것 한 것 근거와 판단
훅 정리에서 빠진 저장소 4 저장소 묶음 폴더 하나 아래의 3곳, 그리고 다른 저장소 안에 들어 있는 하위 저장소 1곳이다. 은퇴 훅 파일 105개와 등록 109건을 지우고 로컬 커밋 4건을 남겼다. 커밋된 상태에서 남은 것 0, 없는 대상을 가리키는 등록 0을 확인했다 낮의 29곳 목록이 폴더 깊이 2까지만 훑었다. 전수 감사 스크립트를 남겨 다음에는 깊이와 무관하게 센다
워크트리 49 46곳은 로컬 커밋했다(8월 자동 이슈 처리가 만든 것 37곳, 에이전트 작업용 9곳). 1곳은 설정 폴더가 git 제외 대상이라 디스크만 정리했고, 2곳은 할 일이 없었다. 파일 1,092개와 등록 1,105건을 지웠다. 커밋에 든 파일은 전부 훅 폴더와 설정 파일이고, 작업 중인 소스는 섞이지 않았다 워크트리는 그 폴더에서 세션이 열릴 때만 훅이 깨어나 평소엔 잠들어 있었다. 하지만 남겨 두면 다음 자동 이슈 처리가 옛 훅을 물려받는다. 아직 커밋하지 않은 작업물이 있어 워크트리 자체는 지우지 않았다
저장소가 만든 에이전트 43 → 보관 41 · 남김 2 저장소 8곳과 폴더 1곳에 있었다. 30일 동안 불린 횟수는 0이다(밤에 다시 센 대화 기록 4,267개 전수). 아직 부르는 곳이 있던 5종은 그 스킬의 참고 문서로 절차를 옮겼다(한 저장소의 후보 설계 스킬 3, 아이디어 접수 1, 코드 변경 요청 리뷰 1). 나머지 36종은 보관한 원문이 그대로 절차 문서 역할을 한다. 부르던 파일 15개(스킬 5, 운영 문서 10)의 지시는 리드가 직접 하라는 지시로 바꿨다. 과거 보고서와 코드 속 문자열은 역사 기록이라 그대로 뒀다. 한 저장소에서는 테스트용 고정 보고서(픽스처)의 줄 해시를 검사하는 검문소가 에이전트 경로를 읽고 있었다. 그래서 픽스처는 두고, 검사기에 옮긴 경로 대응표를 넣었다 남긴 2종은 신약 후보 설계 저장소의 에이전트다. 하나는 후보 세트의 통과·차단을 판정하는 검증자, 하나는 신약 연구 자료를 모으는 수집기다. 보관하려 했지만 막혔다. 그 저장소의 요구 잠금 4줄이 에이전트 파일의 경로 자체를 기준으로 쓴다(에이전트의 도구 목록 등을 지키는 줄이다). 파일을 옮기면 세션 종료 검사와 테스트가 확정적으로 깨진다. 요구 잠금은 사용자 승인 없이 고치지 않으므로 그대로 두었다. 패턴만 남긴 빈 파일로 검사를 통과시키는 방법도 쓰지 않았다. 그 저장소가 네 번 버린 "말에 건 잠금"이 바로 그런 꼼수이기 때문이다
은퇴한 에이전트를 가리키던 문서 4 저장소 4곳의 스킬과 메모다. 버그 수정 에이전트를 부르던 곳은 에러 복구 절차로 바꿨다. 코드 리뷰·QA 보조 에이전트 서술은 직접 수행으로 바꾸고, 교차 리뷰를 켜고 끄는 설정에 맞췄다. 보조 에이전트 메모에는 보관 사실을 적었다 외부 플러그인에 든 에이전트 5종과 과거 보고서·코드 문자열 속 언급은 우리 것이 아니거나 역사 기록이라 두었다
남은 일 · 저장소 안쪽
  1. 밤 작업의 저장소 15곳 커밋 15건과 워크트리 커밋 46건도 낮의 훅 정리처럼 전부 로컬에만 있다. push 여부는 저장소마다 따로 정한다.
  2. 로컬 브랜치가 원격보다 크게 뒤처진 저장소가 1곳 있어, push 전에 합쳐야 한다.
  3. 남긴 2종까지 보관하려면 사용자 승인을 받은 뒤 요구 잠금 4줄의 경로, 감사 스크립트 1곳, 테스트 픽스처 5곳을 함께 고쳐야 한다. 그 절차는 보관 폴더의 안내 문서에 적어 두었다.
  4. 다음 재고는 전수 감사 스크립트 한 번으로, 폴더 깊이와 무관하게 센다.
보관한 것과 남긴 것을 가른 선

"모델이 이미 하는 판단을 하네스가 한 번 더 하면, 작업은 느려지고 틀릴 자리는 둘로 는다."

선은 깔끔하게 그어지지 않았다. 보관한 쪽에도 명령을 실제로 막던 검문소가 여럿 있었다. 그 강제는 이제 멈춰 세우는 검문소 없이 규칙 문장이나 모델의 판단에 맡겨졌다. "판단은 모델에게, 강제는 검문소에게"는 방향이고, 경계선은 아직 다 맞지 않았다.

보관한 것의 공통점

모델이 이미 하는 것, 그리고 남길 범주 밖의 장치

  • 계획·구현·리뷰·버그 수정을 대신하던 역할별 에이전트
  • 일을 나누고 검증하는 순서를 고정하던 Workflow 스크립트
  • "일은 이렇게 하라"고 일깨우던 알림형 훅. 질문 금지, 완료 위장 감지 같은 것들이다
  • 명령을 실제로 막던 검문소 일부. 브라우저 저장소 사용 차단, 설계 문서 확인, Workflow 비용 확인, 에이전트 정의 보안 검사 같은 것들이다. 이제 규칙 문장이나 모델의 판단에 맡겨졌다
  • 스킬 읽기 검문소. 증거를 확인하는 검문소였지만 push·완료를 막는 QA 검문소도, 사고 방지 장치도 아니어서 보관했다. 그런데 이 검문소가 지키던 에이전트 9종 중 5종은 남았고, 그중 4종의 정의가 아직 이 검문소를 자기 약속의 강제 장치로 적고 있어 정리가 남았다
  • 에이전트에게 일을 넘기는 방법을 적은 규칙 4개
  • 저장소 8곳과 폴더 1곳에 따로 만들어 둔 역할 에이전트 41종. 30일 동안 한 번도 불리지 않았다
남긴 것의 공통점

모델이 대신할 수 없는 것

  • 되돌릴 수 없는 사고를 막는 장치. 대량 삭제, 비밀 파일 커밋, 관측 기록 변조를 막는다
  • 사용자 결정을 지키는 차단 장치. 교차 리뷰를 꺼 두면 호출 차단, 요구 기능 삭제 차단, 건너뛴 테스트 증가 차단 같은 것들이다
  • 증거 없는 완료와 push 를 막는 검문소. 판단을 한 번 더 하는 자리가 아니라, 정해진 증거 파일이 있고 지금 상태와 맞는지 기계적으로 확인하는 자리다. 모델이 검증을 할 수는 있어도, 실제로 했는지는 이렇게 확인한다
  • 따로 떼어 실행하는 것이 목적인 에이전트. 바깥 자료 읽기와 자기 채점 막기다. 너무 큰 브라우저 출력용 껍데기 1종은 정책과 어긋난 채 남아 있다
  • 자가개선·수확 루프. 하네스가 스스로를 고치는 바깥 고리다
  • 예외로 남긴 세션 환경 훅 4개. 한글 응답 알림이나 권한 설정처럼 세션의 바탕을 정하는 훅이다