“하네스 구성해줘” 한 마디면 도메인에 맞는 전문 에이전트 팀을 설계하고, 에이전트가 사용할 스킬까지 자동 생성해주는 메타 스킬이 공개됐다. 카카오 AI Native 전략 팀 리더 황민호 님이 개발한 Harness는 Claude Code의 에이전트 팀 시스템을 구조화된 방식으로 활용할 수 있도록 설계된 Claude Code 플러그인이다.
Sources
Harness란 무엇인가
Harness는 복잡한 작업을 전문 에이전트 팀으로 분해·조율하는 아키텍처 도구다. “하네스 구성해줘"라고 말하면 사용자의 도메인에 맞는 에이전트 정의(.claude/agents/)와 스킬(.claude/skills/)을 자동 생성한다.
핵심은 에이전트(누가) 와 스킬(어떻게) 의 분리다. 에이전트 정의 파일은 역할·원칙·프로토콜을 담고, 스킬 파일은 구체적인 실행 방법을 담는다. 이 분리 덕분에 에이전트는 세션 간 재사용이 가능하고, 스킬은 독립적으로 교체·확장할 수 있다.
flowchart TD
U["사용자 요청
하네스 구성해줘"]
H["Harness
메타 스킬"]
A[".claude/agents/
에이전트 정의 파일"]
S[".claude/skills/
스킬 파일"]
O["오케스트레이터 스킬
팀 조율"]
U --> H
H --> A
H --> S
H --> O
classDef inputNode fill:#c5dcef,color:#333
classDef processNode fill:#fde8c0,color:#333
classDef outputNode fill:#c0ecd3,color:#333
class U inputNode
class H processNode
class A,S,O outputNode주요 기능:
- 에이전트 팀 설계 — 6가지 아키텍처 패턴으로 전문 에이전트 팀 구성
- 스킬 생성 — Progressive Disclosure 패턴으로 컨텍스트를 효율 관리하는 스킬 자동 생성
- 오케스트레이션 — 에이전트 간 데이터 전달, 에러 핸들링, 팀 조율 프로토콜 포함
- 검증 체계 — 트리거 검증, 드라이런 테스트, With-skill vs Without-skill 비교 테스트
6단계 워크플로우
Harness는 6개의 Phase로 하네스를 체계적으로 구성한다.
flowchart TD
P1["Phase 1
도메인 분석"]
P2["Phase 2
팀 아키텍처 설계"]
P3["Phase 3
에이전트 정의 생성"]
P4["Phase 4
스킬 생성"]
P5["Phase 5
통합 및 오케스트레이션"]
P6["Phase 6
검증 및 테스트"]
P1 --> P2 --> P3 --> P4 --> P5 --> P6
classDef analysisNode fill:#c5dcef,color:#333
classDef designNode fill:#fde8c0,color:#333
classDef genNode fill:#c0ecd3,color:#333
classDef verifyNode fill:#e0c8ef,color:#333
class P1,P2 analysisNode
class P3,P4 genNode
class P5 designNode
class P6 verifyNodePhase 1: 도메인 분석
사용자 요청에서 도메인/프로젝트를 파악하고, 핵심 작업 유형(생성, 검증, 편집, 분석 등)을 식별한다. 기존 에이전트/스킬과 충돌/중복이 없는지 확인하고, 프로젝트 코드베이스를 탐색해 기술 스택, 데이터 모델, 주요 모듈을 파악한다.
흥미로운 점은 사용자 숙련도 감지다. 대화의 맥락 단서(사용 용어, 질문 수준)로 기술 수준을 파악하고, 이후 커뮤니케이션 톤을 조절한다. 코딩 경험이 적은 사용자에게는 “assertion”, “JSON schema” 같은 용어를 설명 없이 사용하지 않는다.
Phase 2: 팀 아키텍처 설계
실행 모드 선택과 아키텍처 패턴 선택 두 단계로 구성된다. 에이전트를 어떻게 분리할지는 전문성·병렬성·컨텍스트·재사용성 4축으로 판단한다.
Phase 3: 에이전트 정의 생성
모든 에이전트는 반드시 프로젝트/.claude/agents/{name}.md 파일로 정의한다. 에이전트 정의 파일 없이 Agent 도구의 prompt에 역할을 직접 넣는 것은 금지된다. 이유는 세 가지다:
- 에이전트 정의가 파일로 존재해야 다음 세션에서 재사용 가능
- 팀 통신 프로토콜이 명시되어야 에이전트 간 협업 품질 보장
- 하네스의 핵심 가치는 에이전트(누가)와 스킬(어떻게)의 분리
모든 Agent 호출에는 반드시 model: "opus" 파라미터를 명시한다. 하네스의 품질은 에이전트의 추론 능력에 직결되기 때문이다.
Phase 4: 스킬 생성
각 에이전트가 사용할 스킬을 프로젝트/.claude/skills/{name}/skill.md에 생성한다. Progressive Disclosure 패턴으로 컨텍스트를 효율적으로 관리한다(아래 별도 섹션에서 상세 설명).
Phase 5: 통합 및 오케스트레이션
오케스트레이터 스킬이 개별 에이전트와 스킬을 하나의 워크플로우로 엮어 팀 전체를 조율한다. “각 에이전트가 무엇을 어떻게 하는가”(개별 스킬)와 “누가 언제 어떤 순서로 협업하는가”(오케스트레이터)를 명확히 분리한다.
Phase 6: 검증 및 테스트
구조 검증, 트리거 검증, 드라이런 테스트, With-skill vs Without-skill 비교 테스트를 수행한다. 각 스킬에 대해 Should-trigger 쿼리(810개)와 Should-NOT-trigger 쿼리(810개)를 작성해 트리거 정확도를 검증한다.
6가지 아키텍처 패턴
Harness는 6가지 아키텍처 패턴을 지원한다. 각 패턴은 작업의 특성에 따라 선택한다.
flowchart TD
subgraph P1["파이프라인 (Pipeline)"]
A1["Agent 1"] --> A2["Agent 2"] --> A3["Agent 3"]
end
classDef pipeNode fill:#c5dcef,color:#333
class A1,A2,A3 pipeNodeflowchart TD
subgraph FO["팬아웃/팬인 (Fan-out/Fan-in)"]
O["오케스트레이터"] --> B1["Agent 1"]
O --> B2["Agent 2"]
O --> B3["Agent 3"]
B1 --> R["결과 통합"]
B2 --> R
B3 --> R
end
classDef orchNode fill:#fde8c0,color:#333
classDef workerNode fill:#c5dcef,color:#333
classDef resultNode fill:#c0ecd3,color:#333
class O orchNode
class B1,B2,B3 workerNode
class R resultNodeflowchart TD
subgraph EP["전문가 풀 (Expert Pool)"]
Q["요청 분석"] --> E1["전문가 A
(상황 1)"]
Q --> E2["전문가 B
(상황 2)"]
Q --> E3["전문가 C
(상황 3)"]
end
classDef qNode fill:#fde8c0,color:#333
classDef expNode fill:#c0ecd3,color:#333
class Q qNode
class E1,E2,E3 expNodeflowchart TD
subgraph PR["생성-검증 (Producer-Reviewer)"]
G["생성 에이전트"] --> |"산출물"| Rev["검증 에이전트"]
Rev --> |"피드백"| G
Rev --> |"승인"| OUT["최종 산출물"]
end
classDef genNode fill:#c5dcef,color:#333
classDef revNode fill:#ffc8c4,color:#333
classDef outNode fill:#c0ecd3,color:#333
class G genNode
class Rev revNode
class OUT outNodeflowchart TD
subgraph SV["감독자 (Supervisor)"]
SUP["감독자 에이전트
(상태 관리 + 동적 분배)"]
SUP --> W1["Worker 1"]
SUP --> W2["Worker 2"]
SUP --> W3["Worker 3"]
W1 --> |"완료 보고"| SUP
W2 --> |"완료 보고"| SUP
W3 --> |"완료 보고"| SUP
end
classDef supNode fill:#fde8c0,color:#333
classDef wNode fill:#c5dcef,color:#333
class SUP supNode
class W1,W2,W3 wNodeflowchart TD
subgraph HD["계층적 위임 (Hierarchical Delegation)"]
L1["최상위 에이전트"] --> L2A["중간 에이전트 A"]
L1 --> L2B["중간 에이전트 B"]
L2A --> L3A["하위 에이전트 A1"]
L2A --> L3B["하위 에이전트 A2"]
L2B --> L3C["하위 에이전트 B1"]
end
classDef topNode fill:#fde8c0,color:#333
classDef midNode fill:#c5dcef,color:#333
classDef leafNode fill:#c0ecd3,color:#333
class L1 topNode
class L2A,L2B midNode
class L3A,L3B,L3C leafNode| 패턴 | 설명 | 적합한 경우 |
|---|---|---|
| 파이프라인 | 순차 의존 작업 | 이전 단계 출력이 다음 단계 입력 |
| 팬아웃/팬인 | 병렬 독립 작업 | 동시 처리 후 결과 통합 |
| 전문가 풀 | 상황별 선택 호출 | 문맥에 따라 다른 전문가 필요 |
| 생성-검증 | 생성 후 품질 검수 | 반복 개선이 필요한 창작/코딩 |
| 감독자 | 중앙 에이전트가 동적 분배 | 복잡한 상태 관리 필요 |
| 계층적 위임 | 상위→하위 재귀적 위임 | 복잡한 도메인 분해 |
실행 모드: 에이전트 팀 vs 서브 에이전트
Harness는 두 가지 실행 모드를 지원한다. 기본값은 에이전트 팀이다.
flowchart TD
DEC{"실행 모드 선택"}
DEC --> |"2개 이상 에이전트
협업 필요"| AT["에이전트 팀 모드
(기본)"]
DEC --> |"1개 에이전트
통신 불필요"| SA["서브 에이전트 모드"]
AT --> AT1["TeamCreate
팀 구성"]
AT --> AT2["TaskCreate
작업 할당"]
AT --> AT3["SendMessage
팀원 간 직접 통신"]
SA --> SA1["Agent 도구
직접 호출"]
SA --> SA2["run_in_background
병렬 실행"]
classDef decNode fill:#fde8c0,color:#333
classDef teamNode fill:#c5dcef,color:#333
classDef subNode fill:#c0ecd3,color:#333
classDef apiNode fill:#e0c8ef,color:#333
class DEC decNode
class AT,AT1,AT2,AT3 teamNode
class SA,SA1,SA2 subNode에이전트 팀 모드는 팀원 간 직접 통신(SendMessage)과 공유 작업 목록(TaskCreate)으로 자체 조율하며, 발견 공유·상충 토론·누락 보완이 결과 품질을 높인다.
서브 에이전트 모드는 에이전트가 1개뿐이거나, 에이전트 간 통신이 불필요한 구조(결과 전달만 필요)일 때 선택한다.
팀 크기 가이드라인
| 작업 규모 | 권장 팀원 수 | 팀원당 작업 수 |
|---|---|---|
| 소규모 (5~10개 작업) | 2~3명 | 3~5개 |
| 중규모 (10~20개 작업) | 3~5명 | 4~6개 |
| 대규모 (20개+ 작업) | 5~7명 | 4~5개 |
팀원이 많을수록 조율 오버헤드가 커진다. 3명의 집중된 팀원이 5명의 산만한 팀원보다 낫다.
Progressive Disclosure 스킬 아키텍처
스킬은 3단계 로딩 시스템으로 컨텍스트 윈도우를 효율적으로 관리한다.
flowchart TD
L1["레이어 1: Metadata
name + description
~100단어
항상 컨텍스트에 존재"]
L2["레이어 2: skill.md 본문
워크플로우 + 핵심 규칙
목표 500줄 이내
스킬 트리거 시 로드"]
L3["레이어 3: references/
상세 가이드 + 도메인 파일
크기 무제한
필요할 때만 로드"]
L1 --> |"스킬 트리거"| L2
L2 --> |"필요 시"| L3
classDef alwaysNode fill:#c5dcef,color:#333
classDef onTriggerNode fill:#fde8c0,color:#333
classDef onDemandNode fill:#c0ecd3,color:#333
class L1 alwaysNode
class L2 onTriggerNode
class L3 onDemandNode크기 관리 규칙:
- skill.md가 500줄에 근접하면 세부 내용을
references/로 분리하고, 본문에 “언제 이 파일을 읽으라"는 포인터를 남긴다 - 300줄 이상의 reference 파일에는 상단에 목차(ToC)를 포함한다
- 도메인/프레임워크별 변형이 있으면
references/하위에 도메인별로 분리해 관련 파일만 로드한다
스킬 description 작성의 핵심은 적극적(“pushy”) 트리거 유도다:
나쁜 예: "PDF 문서를 처리하는 스킬"
좋은 예: "PDF 파일 읽기, 텍스트/테이블 추출, 병합, 분할, 회전, 워터마크, 암호화, OCR 등 모든 PDF 작업을 수행. .pdf 파일을 언급하거나 PDF 산출물을 요청하면 반드시 이 스킬을 사용할 것."
에이전트 간 데이터 전달 프로토콜
오케스트레이터는 에이전트 간 데이터를 세 가지 방식으로 전달한다.
flowchart TD
subgraph MSG["메시지 기반"]
M1["Agent A"] --> |"SendMessage"| M2["Agent B"]
end
subgraph TASK["태스크 기반"]
T1["TaskCreate
작업 할당"] --> T2["TaskUpdate
상태 공유"]
end
subgraph FILE["파일 기반"]
F1["Agent A
파일 쓰기"] --> |"_workspace/"| F2["Agent B
파일 읽기"]
end
classDef msgNode fill:#c5dcef,color:#333
classDef taskNode fill:#fde8c0,color:#333
classDef fileNode fill:#c0ecd3,color:#333
class M1,M2 msgNode
class T1,T2 taskNode
class F1,F2 fileNode| 전략 | 방식 | 실행 모드 | 적합한 경우 |
|---|---|---|---|
| 메시지 기반 | SendMessage로 팀원 간 직접 통신 |
에이전트 팀 | 실시간 조율, 피드백 교환, 가벼운 상태 전달 |
| 태스크 기반 | TaskCreate/TaskUpdate로 작업 상태 공유 |
에이전트 팀 | 진행상황 추적, 의존 관계 관리 |
| 파일 기반 | 약속된 경로에 파일을 쓰고 읽음 | 둘 다 | 대용량 데이터, 구조화된 산출물, 감사 추적 |
에이전트 팀 모드 권장 조합: 태스크 기반(조율) + 파일 기반(산출물) + 메시지 기반(실시간 소통)
파일 기반 전달 시 파일명 컨벤션: {phase}_{agent}_{artifact}.{ext} (예: 01_analyst_requirements.md)
harness-100: 즉시 사용 가능한 100개 하네스
Harness 플러그인으로 생성된 revfactory/harness-100 은 10개 도메인, 100개의 프로덕션 레디 에이전트 팀 하네스를 한국어/영어 200패키지로 제공한다.
flowchart TD
H100["harness-100
1,808개 마크다운 파일"]
H100 --> D1["콘텐츠 제작"]
H100 --> D2["소프트웨어 개발"]
H100 --> D3["데이터/AI"]
H100 --> D4["비즈니스 전략"]
H100 --> D5["교육"]
H100 --> D6["법률"]
H100 --> D7["헬스케어"]
H100 --> D8["기타 3개 도메인"]
classDef rootNode fill:#fde8c0,color:#333
classDef domainNode fill:#c5dcef,color:#333
classDef etcNode fill:#e0c8ef,color:#333
class H100 rootNode
class D1,D2,D3,D4,D5,D6,D7 domainNode
class D8 etcNode각 하네스에는 4~5명의 전문 에이전트, 오케스트레이터 스킬, 도메인 특화 스킬이 포함되어 있으며, 모두 Harness 플러그인으로 생성됐다.
A/B 테스트 연구 결과
Harness의 효과를 검증하기 위해 15개 소프트웨어 엔지니어링 과제에 대한 통제 실험이 수행됐다 (출처: revfactory/claude-code-harness).
flowchart TD
subgraph WO["Harness 미적용"]
S1["평균 품질 점수
49.5"]
end
subgraph W["Harness 적용"]
S2["평균 품질 점수
79.3"]
end
WO --> |"+60% 향상"| W
classDef beforeNode fill:#ffc8c4,color:#333
classDef afterNode fill:#c0ecd3,color:#333
class S1 beforeNode
class S2 afterNodeflowchart TD
subgraph COMPLEXITY["난이도별 개선 효과"]
B["기초 (Basic)
+23.8점"]
A["고급 (Advanced)
+29.6점"]
E["전문가 (Expert)
+36.2점"]
end
classDef basicNode fill:#c5dcef,color:#333
classDef advNode fill:#fde8c0,color:#333
classDef expNode fill:#ffc8c4,color:#333
class B basicNode
class A advNode
class E expNode| 지표 | Harness 미적용 | Harness 적용 | 개선 |
|---|---|---|---|
| 평균 품질 점수 | 49.5 | 79.3 | +60% |
| 승률 | — | — | 100% (15/15) |
| 출력 분산 | — | — | -32% |
핵심 발견: 과제 난이도가 높을수록 개선 효과가 증대된다. 단순 작업보다 복잡한 전문가 수준 작업에서 Harness의 구조화된 사전 설정 효과가 더 크게 나타난다.
논문 전문: Hwang, M. (2026). Harness: Structured Pre-Configuration for Enhancing LLM Code Agent Output Quality.
설치 및 사용법
요구사항
Claude Code의 에이전트 팀 기능을 먼저 활성화해야 한다:
CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1
설치 방법
마켓플레이스를 통한 설치:
/plugin marketplace add revfactory/harness
/plugin install harness@harness
글로벌 스킬로 직접 설치:
cp -r skills/harness ~/.claude/skills/harness
사용법
Claude Code에서 다음과 같이 트리거한다:
하네스 구성해줘
하네스 설계해줘
이 프로젝트에 맞는 에이전트 팀 구축해줘
산출물 구조
프로젝트/
├── .claude/
│ ├── agents/ # 에이전트 정의 파일
│ │ ├── analyst.md
│ │ ├── builder.md
│ │ └── qa.md
│ └── skills/ # 스킬 파일
│ ├── analyze/
│ │ └── skill.md
│ └── build/
│ ├── skill.md
│ └── references/
사용 사례 예시 프롬프트
딥 리서치 하네스:
리서치 하네스를 구성해줘. 어떤 주제든 여러 각도에서 조사할 수 있는
에이전트 팀이 필요해 — 웹 검색, 학술 자료, 커뮤니티 반응 —
교차 검증 후 종합 보고서를 작성하는 팀.
코드 리뷰 하네스:
종합 코드 리뷰 하네스를 구성해줘. 아키텍처, 보안 취약점, 성능 병목,
코드 스타일을 병렬로 감사하는 에이전트들이 결과를 하나의 리포트로
통합하는 팀.
풀스택 개발 하네스:
풀스택 웹사이트 개발 하네스를 구성해줘. 디자인, 프론트엔드(React/Next.js),
백엔드(API), QA 테스트를 와이어프레임부터 배포까지 파이프라인으로
조율하는 팀.
핵심 요약
flowchart TD
subgraph CORE["Harness 핵심 가치"]
C1["메타 스킬
에이전트 팀 + 스킬 자동 생성"]
C2["6가지 아키텍처 패턴
작업 특성에 맞는 팀 구조"]
C3["Progressive Disclosure
컨텍스트 효율 관리"]
C4["A/B 검증
+60% 품질 향상"]
end
classDef coreNode fill:#c5dcef,color:#333
class C1,C2,C3,C4 coreNode- Harness는 “하네스 구성해줘” 한 마디로 도메인 맞춤형 에이전트 팀과 스킬을 자동 생성하는 Claude Code 플러그인이다
- 6가지 아키텍처 패턴 (파이프라인, 팬아웃/팬인, 전문가 풀, 생성-검증, 감독자, 계층적 위임)으로 작업 특성에 맞는 팀 구조를 선택한다
- 에이전트(누가) vs 스킬(어떻게) 분리 원칙으로 재사용성과 교체 가능성을 보장한다
- Progressive Disclosure 3단계 로딩으로 컨텍스트 윈도우를 효율적으로 관리한다
- A/B 테스트 결과 +60% 품질 향상, 100% 승률, -32% 분산 감소가 검증됐다
- harness-100 으로 10개 도메인 100개 하네스(1,808개 마크다운 파일)를 즉시 사용할 수 있다
CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1환경 변수 설정이 필수다
결론
Harness는 Claude Code의 에이전트 팀 시스템을 처음부터 잘 설계하도록 도와주는 메타 도구다. “어떤 에이전트 팀을 만들어야 할까?“라는 막막한 질문 앞에서 6단계 워크플로우와 6가지 아키텍처 패턴이 체계적인 길잡이가 된다. A/B 테스트로 검증된 품질 향상 효과와 함께 harness-100의 즉시 사용 가능한 100개 하네스가 실용적인 출발점을 제공한다. 복잡한 도메인 작업을 Claude Code로 자동화하려는 개발자라면 Harness를 기반으로 시작하는 것이 효율적인 선택이다.