8장 §3

AGENTS.md 심화

AGENTS.md의 명세 포맷, 도구별 구현 방식, 작성 원칙, 검증 절차를 정리한다. 5장에서 개념적으로 소개한 AGENTS.md를 실무 관점에서 심화한다.

표준 명세: agents.md · 실습 예시: 4장 §2-A / 4장 §2-B

이 절에서 다루는 것
  • 에이전트 항목의 필드 구조와 의미
  • AGENTS.md(공통 명세)가 Claude 계열·Antigravity 계열·Codex 계열에서 각각 어떻게 "구현"되는지
  • 최소 권한 원칙과 handoff 선언
  • 검증 도구(agent:verify)와 생애주기 연결

명세 포맷

AGENTS.md의 각 에이전트 항목은 ## Agent: {이름}으로 시작하는 마크다운 섹션이다. 이 섹션 안에 역할·입력·출력·권한·handoff 등의 필드를 자유 형식으로 기술한다. 표준 명세는 strict schema를 강제하지 않고, 도구가 공통으로 인식하는 관례(convention)에 의존한다.

필드의미필수 여부4장 실습 예시
## Agent: {이름} 에이전트 식별자. Claude 계열에서는 subagent_type 값과 일치해야 호출 가능 필수 ## Agent: reviewer
역할 이 에이전트가 무엇을 하는가 필수 "텍스트 파일의 오탈자, 논리적 허점, 개선점을 검토한다"
입력 어떤 입력을 받는가 권장 "검토 대상 텍스트 파일 경로"
출력 어떤 출력을 내는가 권장 "오탈자 · 논리적 허점 · 개선점 목록"
권한 파일 접근 범위. 최소 권한 원칙 — 필요한 것만 허용 권장 "읽기 전용 — 파일을 직접 수정하지 않는다"
handoff_to 완료 후 결과를 넘길 다른 에이전트. 오케스트레이터가 참조하는 선언적 힌트 선택 handoff_to: reviewer

완성 예시

4장 실습(G-1, D-1)에서 작성한 두 에이전트가 들어간 AGENTS.md 전체 모습이다.

## Agent: reviewer

역할: 텍스트 파일의 오탈자, 논리적 허점, 개선점을 검토한다.
입력: 검토 대상 텍스트 파일 경로
출력: 오탈자 · 논리적 허점 · 개선점 목록
권한: 읽기 전용 — 파일을 직접 수정하지 않는다.

## Agent: writer

역할: 주어진 주제로 3~5문장 분량의 짧은 초안을 작성한다.
입력: 주제, 저장할 파일 경로
출력: 초안 텍스트 파일
권한: 쓰기 허용 — 지정된 파일에만 저장한다.
handoff_to: reviewer (초안 완료 후 검토로 이어짐)
AGENTS.md는 AI 도구를 향한 지시문이 아니라 사람이 정의한 여러 역할의 등록부다. Claude 계열은 이 등록부를 읽고 도구별 정의 파일(.claude/agents/*.md)로 "번역"하고, Antigravity 계열은 등록부 자체를 오케스트레이션이 직접 읽고 해석하며, Codex 계열은 별도 서브에이전트 정의 없이 PM이 등록부를 역할 컨텍스트로 읽고 순차 전환하며 해석한다(4장 §1-C).

도구별 구현 매핑

AGENTS.md는 도구 중립적인 공통 명세다. 하지만 실제로 서브에이전트를 "구현"하는 방식은 Claude 계열, Antigravity 계열, Codex 계열에서 서로 다르다.

층위Claude Desktop App / Claude CodeAntigravity Desktop / CLICodex CLI / Desktop App
AGENTS.md 읽기 메인 세션이 AGENTS.md를 읽고 에이전트 목록을 파악 오케스트레이터가 AGENTS.md를 읽고 동적으로 서브에이전트 생성 PM이 AGENTS.md·CODEX.md를 역할 컨텍스트로 읽음
서브에이전트 정의 .claude/agents/{name}.md 파일에 YAML frontmatter(name, description, tools, model) + 시스템 프롬프트 정의 파일 없음 — 오케스트레이터가 실행 시점에 역할·툴 범위를 자율 판단 정의 파일 없음 — PM이 역할 정의를 순차적으로 불러와 해당 역할을 수행
권한 구현 .claude/agents/*.mdtools 필드에 Read, Grep 등 필요한 최소 툴만 나열 오케스트레이터가 AGENTS.md의 권한 필드를 해석해 툴 접근을 스스로 제한 툴 제한 장치 없음 — PM이 AGENTS.md의 권한 필드를 스스로 준수
handoff handoff_to는 참고 힌트. 메인 세션이 Agent 툴을 순차 호출해 관계를 조율 오케스트레이터가 handoff_to를 읽고 자동으로 순차 파이프라인 구성 handoff_to는 힌트 — PM이 역할 순차 전환으로 파이프라인을 재현
상세 참조 4장 §1-A Claude 중심 4장 §1-B Antigravity 중심 4장 §1-C Codex 중심
AGENTS.md → 도구별 구현 흐름
AGENTS.md (공통 명세) Claude Desktop App / Claude Code .claude/agents/*.md (사전 정의) YAML frontmatter + 시스템 프롬프트 Antigravity Desktop / CLI 정의 파일 없음 (동적 생성) 오케스트레이터가 실시간 해석
Codex 계열은 Antigravity와 마찬가지로 정의 파일 없이 등록부를 직접 해석하는 쪽에 속하지만, 오케스트레이터의 동적 생성이 아니라 PM이 역할 컨텍스트를 순차 전환하는 방식이다 — 상세는 4장 §1-C.

작성 가이드

1. 섹션으로 시작

## Agent: {이름}으로 에이전트 항목을 시작한다. 이름은 영문 소문자로 하되 여러 단어는 -로 연결한다(code-reviewer, api-tester). 이 이름이 Claude 계열에서는 subagent_type 값으로 사용된다.

2. 역할을 간결하게

역할은 "무엇을 하는가"를 1~2문장으로 명확히 기술한다. 다른 에이전트와의 중복을 피하고, 각 에이전트가 독립적으로 책임지는 영역이 명확하도록 한다.

3. 최소 권한으로 권한 설정

권한 필드는 파일 접근 범위를 제한한다. 이 원칙을 지키지 않으면 서브에이전트가 실수로 중요 파일을 덮어쓰 수 있다. Claude 계열에서는 이 권한이 .claude/agents/*.mdtools 필드(Read, Grep, Write 등)로 번역된다.

reviewer는 애초에 쓸 수 없으므로 실수가 발생하지 않는다. — 4장 §2-A 최소 권한 원칙

4. handoff로 선후 관계 선언

handoff_to는 "이 에이전트가 작업을 마치면 결과를 어디로 넘길 것인가"를 선언한다. 이것은 명령이 아니라 힌트다. 실제로 순차 파이프라인을 구성하는 것은 메인 세션(오케스트레이터)의 몫이다.

## Agent: draft-writer
역할: 주어진 주제로 초안을 작성한다.
handoff_to: reviewer (초안 완료 후 검토로 이어짐)

## Agent: reviewer
역할: 텍스트의 오탈자와 논리를 검토한다.
handoff_to: editor (검토 완료 후 최종 편집으로 이어짐)

## Agent: editor
역할: 피드백을 반영해 최종 문서를 완성한다.
handoff_to가 선언되지 않은 에이전트(위 예시의 editor)는 파이프라인의 종점이다. 오케스트레이터는 에이전트의 결과를 최종 사용자에게 반환한다.

5. 검증

작성이 완료되면 bun run agent:verify로 구조를 검증한다. 이 스크립트는 에이전트 frontmatter의 완결성, 필수 섹션 존재, AGENTS.md 로스터와의 정합성을 확인한다.

검증과 생애주기

AGENTS.md에 에이전트를 등록하는 것은 생애주기의 Create 단계에 해당한다(8장 §2 참조). 등록된 에이전트는 다음 단계를 거친다.

생애주기 단계AGENTS.md에서의 동작검증
Create ## Agent: {이름} 섹션을 AGENTS.md에 추가 bun run agent:verify — 구조 완결성
Verify 등록 내용이 워크스페이스의 다른 파일(CONSTITUTION.md, agents/*.md)과 정합한지 확인 bun run agent:verify — 무결성 검증
Operate 실제 세션에서 오케스트레이터가 로스터를 읽고 에이전트를 호출 세션 로그에서 에이전트 호출 추적
Improve 역할 정의, 권한, handoff 관계 수정 수정 후 다시 agent:verify
Deprecate AGENTS.md에서 해당 에이전트 항목을 제거하거나 주석 처리 agent:verify — 참조 무결성 (다른 에이전트의 handoff_to가 deprecated를 가리키지 않는지)

에이전트를 새로 만들거나 변경할 때마다 agent:verify를 실행하는 것을 습관화하면, "로스터에는 있는데 실제 정의 파일이 없는" 또는 "handoff_to가 가리키는 에이전트가 삭제된" 같은 불일치를 조기에 발견할 수 있다.

이 검증 흐름의 자동화는 8장 §1(배포와 SSOT)에서 다루는 CI/CD 파이프라인에 validate-templates.ts 단계로 통합할 수 있다.

FAQ: bun run agent:verify 실행 시 "AGENTS.md 표와 실제 agents/*.md 파일 목록이 어긋난다"는 오류가 나면, AGENTS.md의 에이전트 이름과 .claude/agents/ 폴더의 파일명을 대조하고 누락된 항목을 추가하거나 불필요한 파일을 제거한다. → FAQ