Custom Agents
Markdown 형식과 태그 기반 도구, 인라인 권한으로 목적에 맞는 커스텀 에이전트 프로필을 만드는 방법을 소개합니다.
개요
목적에 특화된 에이전트를 몇 분 만에 만들 수 있습니다. Markdown 파일 하나를 작성하고, read, write, shell 같은 간단한 태그로 에이전트가 접근할 도구 범주를 선언하고, MCP 서버와 권한 규칙을 인라인으로 포함시킨 다음, 버전 관리로 팀과 그 파일을 공유하면 됩니다. 파일을 저장하는 순간 에이전트가 에이전트 선택기에 나타납니다.
Markdown 형식
설정은 YAML 프런트매터에 두고, 시스템 프롬프트는 문서 본문에 작성합니다.
---
description: Backend development agent
model: claude-sonnet-4
tools: [read, write, shell, web]
mcpServers:
postgres:
command: npx
args: ["-y", "@modelcontextprotocol/server-postgres"]
env:
DATABASE_URL: "${DATABASE_URL}"
permissions:
rules:
- capability: shell
effect: allow
match:
- "npm *"
- "node *"
---
You are a backend developer focused on Node.js and TypeScript.
Always use async/await. All database queries must be parameterized.
태그
tools 필드는 범주 태그를 받으며, 해당 범주에 속한 모든 도구를 자동으로 포함합니다.
| 태그 | 포함 대상 |
|---|---|
read | 파일 읽기, 디렉터리 목록, 검색 |
write | 파일 쓰기, 편집, 삭제 |
shell | 명령 실행 및 프로세스 관리 |
web | 웹 페치 |
subagent | 서브에이전트 위임 |
context | 컨텍스트 및 Steering 도구 |
@mcp | mcp.json에 정의된 모든 MCP 도구 |
@builtin | 모든 내장 도구 |
* | 전체 |
새 도구가 특정 범주에 추가되면 에이전트가 이를 자동으로 인식합니다.
파일 위치
.kiro/agents/: 워크스페이스 수준 에이전트(버전 관리로 공유)~/.kiro/agents/: 사용자 수준 에이전트(모든 프로젝트에서 사용 가능)
중첩 디렉터리도 지원합니다. 에이전트 이름은 agents 디렉터리를 기준으로 한 상대 경로에서 확장자를 뺀 값입니다. 예를 들어 ~/.kiro/agents/team/planner.md는 team/planner가 됩니다.
워크스페이스 에이전트는 해당 워크스페이스가 신뢰된 경우에만 로드됩니다. .kiro/agents/가 있는 워크스페이스를 처음 열면 Kiro가 신뢰 여부를 묻습니다.
에이전트 프로필의 권한
권한 규칙을 에이전트 프로필에 직접 포함시킬 수 있습니다.
permissions:
rules:
- capability: builtin
effect: allow
- capability: shell
effect: deny
match:
- "rm *"
- "sudo *"
- capability: filesystem
effect: deny
match:
- ".env"
- "secrets/**"
어떤 규칙도 도구 호출과 일치하지 않으면 기본값은 ask입니다. 효과는 deny > ask > allow 순으로 우선 적용됩니다.
MCP 서버 인라인 정의
MCP 서버를 정의해 두면 에이전트 프로필이 완전히 자기 완결적으로 동작합니다.
mcpServers:
local-server:
command: npx
args: ["-y", "@org/mcp-server"]
env:
API_KEY: "${API_KEY}"
requestTimeout: 180000
remote-server:
url: https://api.example.com/mcp
headers:
Authorization: "Bearer ${TOKEN}"
환경 변수는 $ 구문을 사용하며 런타임에 확장됩니다. Stdio 서버는 timeout(연결 핸드셰이크, 기본 60초)과 requestTimeout(호출당, 기본 120초)을 지원합니다. HTTP 서버는 인증이 필요한 엔드포인트를 위해 headers를 지원합니다.