.claude/agents/web-researcher.md

SubAgent 강의 자료

실제 에이전트 파일로 배우는 SubAgent 설계 원칙
Claude Code SubAgent Pattern web-researcher
① 한국어 번역
② 구조 해부
③ 실행 흐름
④ 강의 핵심
R ## Role — 역할 정의

당신은 소프트웨어 개발을 지원하기 위해 온라인에서 관련성 높고 최신 정보를 찾는 데 탁월한 기술 리서처입니다. 공식 문서, 기술 블로그, 포럼을 능숙하게 탐색하여 모범 사례(Best Practices)와 솔루션을 찾아냅니다.

T ## Task — 임무 범위

기능 요청 파일(예: INITIAL.md)이 주어지면, 목적에 집중된 웹 리서치를 수행하여 "웹 리서치 리포트"를 작성합니다. 이 리포트는 라이브러리 문서, 모범 사례 등 외부 맥락 정보를 제공하여 기능 구현을 지원합니다.

P ## Process — 실행 절차
  1. 1
    요청 이해: 제공된 기능 파일($ARGUMENTS)을 읽어 언급된 핵심 기술, 라이브러리, 외부 API를 파악합니다.
  2. 2
    웹 리서치 수행: 웹 검색 도구를 사용하여 식별된 기술 관련 정보를 탐색합니다. 집중 영역:
    • 공식 문서: 라이브러리/API의 공식 문서 탐색. 작업과 관련된 특정 페이지나 섹션(API 엔드포인트, 특정 함수 사용법 등) 특정
    • 모범 사례: 지정된 기술로 기능 구현 시 모범 사례를 설명하는 아티클, 블로그 포스트, 포럼(Stack Overflow 등) 검색
    • 흔한 함정: 알려진 이슈, 버전 충돌, 피해야 할 일반적인 실수 탐색
  3. 3
    결과 합성: 리서치 결과를 간결하고 실행 가능한 리포트로 정리합니다. 전반적인 요약보다 직접 링크와 구체적이고 관련성 높은 정보를 우선시합니다.
O ## Output Format — 출력 형식 (고정 규약)

최종 출력은 반드시 아래 섹션이 포함된 Markdown 형식 리포트여야 합니다:

섹션 1 — Official Documentation (공식 문서)
공식 문서에서 가장 관련성 높은 페이지의 직접 URL 목록
섹션 2 — Implementation Guides & Examples (구현 가이드 & 예시)
유사 기능 구현 방법을 보여주는 고품질 튜토리얼, 아티클, 코드 저장소 링크
섹션 3 — Key Considerations & Gotchas (주요 고려사항 & 함정)
리서치에서 파악한 중요 포인트·잠재적 이슈·모범 사례 목록 (버전 호환성, 인증 방식, Rate Limiting 등)
Role (역할) 섹션
페르소나 설정

"기술 리서처"라는 명확한 전문가 페르소나를 부여합니다. 이 한 문단이 에이전트가 어떤 관점·태도·어조로 작동할지를 결정합니다.

Role은 전문성의 경계를 만든다. "개발자"가 아닌 "리서처"이기 때문에 코드를 작성하지 않고 정보를 수집·정리한다.
Task (임무) 섹션
입력·출력 정의

무엇을 입력받고(INITIAL.md) 무엇을 출력하는지(Web Research Report)를 단 두 문장으로 명시합니다.

입출력이 명확해야 메인 에이전트가 언제 이 SubAgent를 써야 하는지를 description만 보고 판단 가능하다.
Process (절차) 섹션
실행 체계화

3단계 순서(이해 → 리서치 → 합성)로 작업을 구조화합니다. 각 단계에서 무엇에 집중해야 하는지를 하위 항목으로 명시합니다.

Process가 있으면 LLM이 임의로 순서를 바꾸지 않는다. 반복 가능하고 예측 가능한 결과를 만든다.
Output Format (출력 형식) 섹션
결과 표준화

출력 형식을 고정 템플릿으로 강제합니다. "MUST"라는 표현으로 반드시 따라야 함을 명시합니다.

다운스트림 에이전트(코드 작성 에이전트 등)가 파싱 없이 결과를 바로 소비 가능하다.
  web-researcher.md — 원본 (구조 하이라이트)
# Agent: Web Researcher

## Role                          ← 📌 페르소나 (1~2문장으로 충분)

You are a technical researcher who excels at finding relevant,
up-to-date information online to support software development...

## Task                          ← 📌 입출력 계약 (무엇을 받아 무엇을 줄지)

Given a feature request file (e.g., `INITIAL.md`), your task is to
conduct targeted web research and produce a "Web Research Report"...

## Process                       ← 📌 실행 절차 (순서 고정)

1. **Understand the Request**: Read the provided feature file (`$ARGUMENTS`)...
2. **Conduct Web Research**: Use your web search tool...
   - **Official Documentation**: Find the official docs...
   - **Best Practices**: Search for articles, blog posts...
   - **Common Pitfalls**: Look for known issues...
3. **Synthesize Findings**: Organize your research...

## Output Format               ← 📌 출력 규약 (MUST = 강제)

Your final output MUST be a markdown-formatted report with:

#### 1. Official Documentation
#### 2. Implementation Guides & Examples
#### 3. Key Considerations & Gotchas
실제 호출 시나리오 — "React Query 기능 추가" 요청

각 단계를 클릭하면 상세 설명을 볼 수 있습니다

U
사용자 요청
"React Query를 사용한 데이터 fetching 기능을 추가해 줘"
사용자는 단지 원하는 것만 말한다. 어떤 라이브러리 버전을 쓸지, 문서가 어디 있는지 알 필요가 없다. 메인 에이전트가 판단을 시작한다.
M
메인 에이전트 — SubAgent 선택 description 매칭
메인 에이전트가 .claude/agents/ 디렉토리의 에이전트 description을 스캔. "web researcher"가 기술 리서치 작업에 적합하다고 판단.
자동 선택 기준:
에이전트의 description 필드와 현재 작업의 성격이 매칭될 때 자동 위임됩니다. 명시적으로 요청할 수도 있습니다:
  • "Use the web-researcher subagent to research React Query"
  • 또는 메인 에이전트가 스스로 판단하여 호출
SubAgent 시작 — 요청 이해 독립 컨텍스트
메인 에이전트로부터 INITIAL.md 파일 경로를 전달받아 읽기 시작. React Query, TanStack Query, fetching 패턴 등 핵심 기술 식별.
컨텍스트 격리:
SubAgent는 완전히 새로운 컨텍스트 창에서 시작합니다. 메인 에이전트의 긴 대화 히스토리를 물려받지 않아 $ARGUMENTS로 넘겨받은 정보만 갖습니다.
  • 메인 에이전트 컨텍스트 오염 없음
  • 빠르고 가벼운 실행 가능
SubAgent — 웹 리서치 수행 web_search 도구
공식 문서(tanstack.com), 모범 사례 아티클, Stack Overflow의 흔한 함정 등을 순서대로 탐색. 수십 개의 검색 결과를 처리.
탐색 범위 (Process 섹션에 정의됨):
  • 공식 문서: tanstack.com/query/v5/docs 특정 페이지
  • 모범 사례: "React Query best practices 2025" 검색
  • 흔한 함정: "React Query v5 breaking changes", "stale time pitfalls"
이 모든 탐색 과정이 메인 에이전트 컨텍스트에 쌓이지 않는다.
SubAgent — 리포트 합성 Output Format 준수
수집한 정보를 고정된 Output Format(3개 섹션)에 맞게 정리. 일반 요약보다 직접 링크와 구체적 정보를 우선.
Output Format의 위력:
출력 형식이 고정되어 있으므로, 다음에 실행될 코드 작성 SubAgent는 파싱 로직 없이 바로:
  • 섹션 1에서 공식 문서 URL 추출
  • 섹션 3에서 버전·인증 주의사항 확인
에이전트 간 표준화된 핸드오프가 가능해진다.
R
메인 에이전트 — 결과 수신 최종 결과만 반환
메인 에이전트는 SubAgent의 중간 과정(수십 번의 검색)을 모두 건너뛰고, 최종 Web Research Report만 받아 다음 단계(구현)에 활용.
컨텍스트 절약 효과:
SubAgent가 30번의 웹 검색을 했더라도 메인 에이전트에는 최종 리포트 텍스트(~2000토큰)만 전달됩니다. 메인 에이전트의 컨텍스트 창이 고갈되지 않아 전체 워크플로우를 더 오래 유지할 수 있습니다.
🔒
컨텍스트 격리
SubAgent의 작업 과정이 메인 에이전트 컨텍스트에 쌓이지 않음
병렬 실행 가능
여러 SubAgent를 동시에 실행해 작업 시간을 단축할 수 있음
♻️
재사용 가능
한번 만든 web-researcher는 모든 프로젝트의 모든 기능 요청에 재사용
LESSON 01

SubAgent는 전문가 직원이다

web-researcher.md는 "리서치만 하는 직원"의 채용 공고와 같다. 역할이 좁고 명확할수록 일관된 결과를 만든다.

  • 한 에이전트 = 한 가지 책임
  • 코딩·리서치·테스트를 섞지 않는다
  • 전문화가 품질과 예측 가능성을 높인다
LESSON 02

$ARGUMENTS 가 입력 계약이다

메인 에이전트가 SubAgent를 호출할 때 넘기는 값이 $ARGUMENTS다. 명확한 입력 계약이 있어야 자동 위임이 작동한다.

  • 파일 경로, 기술명, 요구사항 등 전달 가능
  • 입력이 불명확하면 결과도 불명확해진다
  • Task 섹션에 입력 형식을 명시하라
LESSON 03

Output Format이 다운스트림 품질을 결정한다

고정된 3개 섹션 구조 덕분에 다음 에이전트(코드 작성)가 리포트를 즉시 파싱할 수 있다.

  • 섹션 구조를 명시적으로 정의하라
  • "MUST"로 형식 준수를 강제하라
  • 다운스트림 소비를 고려해 설계하라
LESSON 04

Process가 블랙박스를 없앤다

순서가 명시된 3단계 Process 덕분에 에이전트가 임의로 행동하지 않는다. 실행이 추적 가능하고 디버깅이 쉬워진다.

  • 단계별 순서를 명확히 기술하라
  • 각 단계의 집중 영역을 하위 항목으로
  • 재현 가능한 결과 = 신뢰 가능한 에이전트
SubAgent 설계 — Do / Don't
✓ 좋은 설계
  • 역할을 한 문장으로 설명 가능한가
  • 입력($ARGUMENTS)이 명확한가
  • 출력 형식이 고정되어 있는가
  • 도구 접근이 필요한 것만 허용했는가
  • 다른 프로젝트에서도 재사용 가능한가
✕ 나쁜 설계
  • 리서치 + 코딩 + 테스트를 한 에이전트에
  • 출력이 "알아서 써줘" 수준으로 모호함
  • Process 없이 자유롭게 판단하도록 방치
  • 모든 도구 권한을 아무 이유 없이 부여
  • 특정 프로젝트에만 종속된 하드코딩
4

web-researcher.md가 보여주는 완벽한 SubAgent 구조

Role(페르소나) → Task(입출력 계약) → Process(실행 절차) → Output Format(결과 표준화). 이 4개 섹션만 제대로 작성해도, 메인 에이전트는 언제 이 에이전트를 써야 하는지, 어떻게 호출하는지, 무엇을 돌려받는지를 자동으로 판단할 수 있다.