에이전트 자기개선 하네스 (4/12) — self-audit: 하네스 준수율 자가 점검

주요 기준 항목, 자동 점검 프로세스, 그리고 하네스 유지보수의 현실


핵심 요약

  • 프롬프트 하네스는 만들고 끝이 아니다. 시간이 지나면 구조가 흐트러지고, 규칙이 사문화된다. self-audit 스킬로 정기적으로 준수율을 점검해야 한다
  • 다수의 하네스 기준 항목을 자동으로 스캔하여 각각 통과/부분/누락으로 판정한다. 점수화하여 등급으로 평가
  • 첫 점검에서 초기 준수율은 낮았다. 일부만 완전 통과. 이후 개선 작업을 거쳐 대폭 향상. 하네스는 만든 날이 아니라 점검한 날부터 작동한다

배경

프로젝트를 시작할 때 하네스를 세심하게 설계합니다. CLAUDE.md에 규칙을 정의하고, 에이전트를 분리하고, 게이트 조건을 걸고, 메모리 시스템을 구축합니다.

설계 단계를 지나 실제 운용 단계로 접어들면 어떻게 될까요?

새로운 기능을 추가하면서 CLAUDE.md 업데이트를 빼먹습니다. 스킬 파일을 만들었는데 트리거 테이블에 등록하지 않습니다. docs/ 아래 참고 파일을 추가했는데 memory-map.md에 인덱스를 안 합니다. plan.md가 50줄 제한을 넘어서 200줄이 됩니다.

하나하나는 사소합니다. 하지만 누적되면 하네스의 구조가 무너집니다. 규칙은 있는데 아무도 따르지 않는 상태. 이 상태를 감지하려면 정기적인 점검이 필요합니다.

그래서 self-audit 스킬을 만들었습니다.


본문

1. 주요 하네스 기준 항목

self-audit은 프로젝트의 하네스를 다수의 항목 기준으로 평가합니다. 이 항목들은 5개 영역으로 나뉩니다.

CLAUDE.md 섹션:

핵심적인 항목 몇 가지를 소개합니다.

# 항목 통과 기준
1 Development Environment OS, Language/Framework, Package Manager가 포함된 테이블
4 Workflow Pipeline Ambiguous Request Gate + Task Flow 존재
5 Agent Role Separation orchestrator, executor, quality 역할 분리 + Writes Code 컬럼
7 Gate Conditions Phase/Entry/Exit 테이블, 4행
8 Built-in Rules brainstorming 대안, writing-plans 구체성, execution 서킷브레이커, verification 증거 — 4규칙
10 Model Routing 작업유형→모델 테이블 (haiku/sonnet/opus)
11 Memory System 3계층 기술 (docs, lessons, sessions)
15 Sub-agent Isolation 4규칙 (히스토리 금지, 핸드오프 추출, 1=1, 결과만)
20 Token Efficiency 4규칙: 재독금지, 재진술금지, 범위한정, 세션진실
21 Principles no-action 기본, 단순성, 근본원인, 금지>지시, no filler

각 항목은 단순히 "있다/없다"가 아니라 내용의 완전성까지 봅니다. Memory System 섹션이 존재하더라도 3계층이 모두 기술되어 있지 않으면 부분 통과(경고)로 판정됩니다.

CLAUDE.md 이외 점검:

영역 점검 대상
.claude/ 컴포넌트 9개 핵심 스킬, 에이전트 파일, 훅
docs/ 구조 memory-map.md + 7개 하위 디렉토리
tasks/ 파일 plan.md, context.md, checklist.md, change_log.md, lessons.md, cost-log.md + 3개 디렉토리
교차 검증 스킬 경로 실재 여부, memory-map 참조 유효성, 에이전트 파일 존재 여부

교차 검증이 중요합니다. CLAUDE.md의 스킬 트리거 테이블에 경로가 적혀 있는데 실제 파일이 없으면, 에이전트가 해당 스킬을 호출할 때 실패합니다. 이런 팬텀 참조를 잡아냅니다.


2. 자동 점검 프로세스

self-audit을 실행하면 5단계를 거칩니다.

Phase 1: CLAUDE.md 섹션 스캔. 각 항목에 대해 검색 패턴을 돌립니다. 예를 들어 "Development Environment" 항목은 ## Development Environment 또는 ## Dev Environment 헤딩을 찾고, 그 아래에 OS, Language/Framework, Package Manager 행이 있는지 확인합니다.

Phase 2: .claude/ 컴포넌트 체크. 파일 시스템을 스캔합니다. .claude/skills/*/SKILL.md로 스킬을 찾고, .claude/agents/*.md로 에이전트를 찾고, .claude/hooks/*.sh로 훅을 찾습니다. 기대하는 파일 목록과 비교해서 누락을 보고합니다.

Phase 3: docs/ 구조 체크. memory-map.md가 존재하는지, 내용이 비어있지 않은지(빈 템플릿 상태가 아닌지) 확인합니다. 7개 하위 디렉토리(architecture, decisions, patterns, domain, risks, integrations, references)가 있는지 확인합니다.

Phase 4: tasks/ 파일 체크. 핵심 파일 6개와 디렉토리 3개의 존재 여부를 확인합니다. plan.md가 50줄을 초과하면 경고합니다.

Phase 5: 교차 검증. CLAUDE.md에 적힌 경로가 실제 파일 시스템에 존재하는지 대조합니다.

각 항목에 점수를 매깁니다. 완전 통과는 1점, 부분 통과는 0.5점, 누락은 0점. 총점을 전체 항목 수로 나누어 백분율로 환산합니다.

등급 점수 의미
A 90-100% 완전 준수
B 70-89% 사소한 격차 — 현재 세션에서 수정
C 50-69% 유의미한 격차 — 전용 세션 필요
D 50% 미만 대규모 정비 필요

3. 실제 점검 결과: 낮은 준수율에서 시작하다

하네스를 초기 배포한 직후 self-audit을 실행했을 때의 결과입니다.

점검 결과: - 일부 통과(통과): 소수 - 부분 통과(경고): 일부 - 누락(실패): 다수

준수율: 낮은 등급.

하네스를 "완성했다"고 판단한 시점에서 실제 준수율은 낮았습니다. CLAUDE.md에 섹션 제목은 있는데 내용이 템플릿 상태인 경우, 스킬 파일은 존재하는데 SKILL.md가 비어있는 경우, memory-map.md가 있는데 키워드 엔트리가 하나도 없는 경우 — 이런 항목들이 대부분이었습니다.

이후 누락 항목에 대한 구체적인 수정 지시를 생성하고, 우선순위를 정해 하나씩 채워갔습니다. 하네스 에이전트가 각 프로젝트 에이전트에게 수정 메시지를 전달하는 구조도 함께 설계했습니다.

프롬프트 하네스 에이전트
  ├─ self-audit 실행 → 결과 수집
  ├─ 누락 항목별 수정 지시 생성
  └─ 대상 에이전트에게 메시지 전송
       └─ "CLAUDE.md의 Memory System 섹션에 3계층 기술 추가 필요"

각 에이전트가 자신의 하네스를 스스로 수정하고, 수정 완료 후 다시 self-audit을 돌려서 확인합니다.


4. 점검 주기와 트리거

권장하는 점검 주기는 월 1회 또는 대규모 변경 후입니다.

대규모 변경이란: 새로운 스킬 추가, 에이전트 구조 변경, CLAUDE.md의 핵심 섹션 수정, 프로젝트 범위 확장 등. 이런 변경 후에는 기존 구조와의 정합성이 깨질 수 있습니다.

self-audit은 보고만 하고 자동 수정하지 않습니다. 이것은 의도적인 설계입니다. 자동 수정을 허용하면, 에이전트가 맥락을 이해하지 못한 채 템플릿을 채워 넣는 문제가 생깁니다. 누락된 항목을 어떻게 채울지는 사용자가 판단합니다.


설계 결정

처음에는 self-audit 없이 project-doctor 스킬만 있었습니다. project-doctor는 빌드/보안/메모리 무결성을 점검합니다. "프로젝트가 작동하는가?"에 초점이 있습니다.

문제는 project-doctor가 하네스의 구조적 준수는 보지 않는다는 것입니다. CLAUDE.md에 Gate Conditions 섹션이 없어도, 프로젝트는 잘 "작동"합니다. 하지만 에이전트는 게이트 없이 작업하고, 품질이 떨어집니다. 작동과 준수는 다른 차원의 문제입니다.

self-audit을 별도 스킬로 분리한 이유가 이것입니다. project-doctor는 "고장났는가?", self-audit은 "규칙을 따르고 있는가?"를 봅니다.

점수 체계도 처음에는 이분법(통과/실패)이었습니다. 실제 운용해보니 "섹션은 있는데 내용이 불완전한" 경우가 많았습니다. 부분 통과(0.5점)를 추가한 후 점검 결과가 현실을 더 정확하게 반영했습니다.


마무리

하네스는 만든 날이 아니라 점검한 날부터 작동합니다.

CLAUDE.md를 아무리 정교하게 작성해도, 운용 과정에서 실제 프로젝트 상태와 괴리가 생깁니다. 새 스킬을 추가했는데 트리거 테이블에 빠져있고, 디렉토리를 만들었는데 memory-map에 인덱스가 없고, plan.md가 비대해져서 에이전트가 제대로 읽지 못합니다.

self-audit은 이 괴리를 숫자로 보여줍니다. 주요 항목 각각 통과/부분/누락. 총점과 등급. 구체적인 수정 지시.

이 시리즈에서 다룬 내용을 정리하면: 게이트 시스템으로 작업 흐름을 통제하고, 모델 라우팅으로 비용과 품질을 균형 잡고, self-audit으로 전체 구조가 유지되고 있는지 확인합니다. 설계, 운영, 유지보수 — 이 세 축이 프롬프트 하네스의 전부입니다.

시리즈 전체 안내: 시리즈 목차

댓글

이 블로그의 인기 게시물

"LLM 핵심 학습 (1/6) — 기본: 토큰화·임베딩·어텐션·위치 인코딩"

"LLM 핵심 학습 (2/6) — 파인튜닝: LoRA·QLoRA·증류·Adapter"

"ML 기초 학습 (1/9) — 머신러닝과 sklearn: 학습의 좌표계"