Skip to Content
심화 학습빌더 에이전트 가이드

빌더 에이전트 가이드

MoAI-ADK를 확장하는 3가지 빌더 에이전트를 상세히 안내합니다.

한 줄 요약: 빌더 에이전트는 MoAI-ADK의 확장 도구 제작소입니다. 스킬, 에이전트, 플러그인을 직접 만들어 시스템을 커스터마이징할 수 있습니다.

빌더 에이전트란?

MoAI-ADK는 기본 제공되는 52개 스킬, 28개 에이전트 외에도 사용자가 직접 확장할 수 있는 3가지 빌더 에이전트를 제공합니다.

확장의 3가지 유형

유형빌더목적호출 방식
스킬builder-skillAI에게 새로운 전문 지식 부여자동 트리거 / Skill()
에이전트builder-agent새로운 전문가 역할 정의MoAI가 위임
플러그인builder-plugin스킬+에이전트+명령어 번들 배포plugin install

스킬 생성 (builder-skill)

스킬이란?

스킬은 Claude Code에게 특정 분야의 전문 지식을 제공하는 문서입니다. 스킬이 로드되면 Claude Code는 해당 분야의 모범 사례, 패턴, 규칙을 알게 됩니다.

YAML 프론트매터 스키마

스킬의 SKILL.md 파일은 반드시 YAML 프론트매터로 시작해야 합니다.

--- # 공식 필드 (Official Fields) name: my-custom-skill # 스킬 식별자 (kebab-case, 최대 64자) description: > # 목적 설명 (50~1024자, 3인칭) 커스텀 스킬의 설명. 어떤 작업에 사용하는지, 어떤 전문 지식을 제공하는지 3인칭으로 작성. allowed-tools: # 허용 도구 (쉼표 구분 또는 리스트) - Read - Grep - Glob model: claude-sonnet-4-20250514 # 사용할 모델 (생략 시 현재 모델) context: fork # 서브 에이전트 컨텍스트에서 실행 agent: general-purpose # context: fork 시 사용할 에이전트 hooks: # 스킬 수명 주기 훅 PreToolUse: ... user-invocable: true # 슬래시 명령 메뉴 표시 여부 disable-model-invocation: false # false면 Claude도 직접 호출 가능 argument-hint: "[issue-number]" # 자동완성 힌트 # MoAI-ADK 확장 필드 (Extended Fields) version: 1.0.0 # 시맨틱 버전 (MAJOR.MINOR.PATCH) category: domain # 8개 카테고리 중 택 1 modularized: false # modules/ 디렉토리 사용 여부 status: active # active | experimental | deprecated updated: "2025-01-28" # 마지막 수정일 tags: # 발견용 태그 배열 - graphql - api related-skills: # 연관 스킬 - moai-domain-backend - moai-lang-typescript context7-libraries: # MCP Context7 라이브러리 ID - graphql aliases: # 대체 이름 - graphql-expert author: YourName # 작성자 ---

프론트매터 필드 상세

필드필수설명예시
name선택kebab-case 식별자 (최대 64자)my-graphql-patterns
description권장50~1024자, 3인칭, 발견용”GraphQL API 패턴을 제공한다…”
allowed-tools선택스킬 활성 시 허용되는 도구["Read", "Grep"]
model선택사용할 모델claude-sonnet-4-20250514
context선택fork 설정 시 서브 에이전트에서 실행fork
agent선택context: fork 시 사용할 에이전트general-purpose
hooks선택스킬 수명 주기 훅PreToolUse: ...
user-invocable선택슬래시 메뉴 표시 (기본값: true)true
disable-model-invocation선택true면 사용자만 호출 가능false
argument-hint선택자동완성 힌트"[issue-number]"
versionMoAI시맨틱 버전1.0.0
categoryMoAI카테고리domain
modularizedMoAI모듈화 여부false
statusMoAI활성 상태active

스킬 프론트매터 필드 상세

필드필수설명예시
name선택kebab-case 식별자 (최대 64자)my-graphql-patterns
description권장50~1024자, 3인칭, 발견용”GraphQL API 패턴을 제공한다…”
allowed-tools선택스킬 활성 시 허용되는 도구["Read", "Grep"]
model선택사용할 모델claude-sonnet-4-20250514
context선택fork 설정 시 서브 에이전트에서 실행fork
agent선택context: fork 시 사용할 에이전트general-purpose
hooks선택스킬 수명 주기 훅PreToolUse: ...
user-invocable선택슬래시 메뉴 표시 (기본값: true)true
disable-model-invocation선택true면 사용자만 호출 가능false
argument-hint선택자동완성 힌트"[issue-number]"
versionMoAI시맨틱 버전1.0.0
categoryMoAI카테고리domain
modularizedMoAI모듈화 여부false
statusMoAI활성 상태active

스킬 디렉토리 구조

.claude/skills/my-skills/ └── my-graphql-patterns/ ├── SKILL.md # 메인 스킬 문서 (500줄 이하) ├── modules/ # 심층 문서 (무제한) │ ├── schema-design.md │ └── resolver-patterns.md ├── examples.md # 실전 예시 └── reference.md # 외부 참조

중요: 파일명은 반드시 대문자 SKILL.md를 사용하세요. 사용자 커스텀 스킬은 .claude/skills/my-skills/ 디렉토리에 생성하세요. moai-* 접두사는 MoAI-ADK 공식 스킬에만 사용합니다.

문자열 치환 (String Substitutions)

스킬 본문에서 다음 런타임 치환을 사용할 수 있습니다.

치환문설명예시
$ARGUMENTS스킬 호출 시 모든 인자/skill foo barfoo bar
$ARGUMENTS[N] 또는 $NN번째 인자 (0부터 시작)$0, $1
${CLAUDE_SESSION_ID}현재 세션 ID세션 추적용

동적 컨텍스트 주입 (Dynamic Context Injection)

!command“ 구문을 사용하여 스킬 로드 전에 셸 명령을 실행하고 그 출력을 주입할 수 있습니다.

--- # YAML --- # 프로젝트 정보 프로젝트 이름: !basename $(pwd) Git 브랜치: !git branch --show-current

호출 제어 모드 (Invocation Control)

세 가지 호출 모드가 있습니다.

모드설정설명용도
기본두 필드 모두 생략사용자와 Claude 모두 호출 가능일반적인 스킬
사용자 전용disable-model-invocation: true사용자만 /name으로 호출배포, 커밋 워크플로우
Claude 전용user-invocable: false메뉴에서 숨김, Claude만 호출백그라운드 지식

저장소 우선순위

스킬이 중복으로 정의된 경우 우선순위는 다음과 같습니다.

  1. Enterprise: 관리형 설정 (최우선)
  2. Personal: ~/.claude/skills/ (개인)
  3. Project: .claude/skills/ (팀 공유, 버전 관리)
  4. Plugin: 설치된 플러그인 번들 (최저 우선순위)

스킬 저장소 우선순위

# Claude Code에서 builder-skill 호출 > GraphQL API 설계 패턴에 대한 커스텀 스킬을 만들어줘

생성되는 파일: .claude/skills/my-skills/my-graphql-patterns/SKILL.md

--- name: my-graphql-patterns description: > GraphQL API 설계 전문가. 스키마 설계, 리졸버 패턴, N+1 문제 해결, DataLoader 패턴을 제공한다. GraphQL API 개발 시 사용. version: 1.0.0 category: domain status: active triggers: keywords: ["graphql", "schema", "resolver", "dataloader"] agents: ["expert-backend"] allowed-tools: ["Read", "Grep", "Glob"] --- # GraphQL API 설계 전문가 ## Quick Reference - 스키마 우선 설계 (Schema-First) - N+1 문제 방지를 위한 DataLoader 필수 - 페이지네이션은 Relay Cursor 방식 사용 ## Implementation Guide (상세 구현 가이드) ## Advanced Patterns (고급 패턴) ## Works Well With - moai-domain-backend - moai-lang-typescript

제약사항: 사용자 스킬 이름에는 절대 moai- 접두사를 사용하지 마세요. 이 네임스페이스는 MoAI-ADK 시스템 스킬용으로 예약되어 있습니다. 관리자 모드 (admin mode, system skill) 요청 시에만 예외적으로 허용됩니다.

에이전트 생성 (builder-agent)

에이전트 정의 구조

에이전트는 마크다운 파일로 정의되며, YAML 프론트매터에 메타데이터를 포함합니다.

--- name: my-data-analyst description: > 데이터 분석 전문가. 데이터 파이프라인 설계, ETL 프로세스, 분석 쿼리 최적화를 담당. PROACTIVELY 사용하여 데이터 분석 작업 시 자동 위임. tools: Read, Write, Edit, Grep, Glob, Bash, TodoWrite disallowedTools: Task, Skill # 선택사항: 제외할 도구 model: sonnet # sonnet | opus | haiku | inherit permissionMode: default # 권한 모드 skills: # 사전 로드할 스킬 - moai-lang-python - moai-domain-database hooks: # 에이전트 수명 주기 훅 PostToolUse: - matcher: "Write|Edit" hooks: - type: command command: "echo 'File modified'" --- 당신은 데이터 분석 전문가입니다. ## Primary Mission 데이터 파이프라인 설계 및 구현을 통해 데이터 기반 인사이트를 제공합니다. ## Core Capabilities - 데이터 파이프라인 설계 및 구현 - ETL 프로세스 자동화 - 분석 쿼리 최적화 - 데이터 시각화 ## Scope Boundaries IN SCOPE: - 데이터 분석 및 시각화 - ETL 프로세스 설계 - 쿼리 성능 최적화 OUT OF SCOPE: - ML 모델 개발 (expert-data-science에 위임) - 인프라 구성 (expert-devops에 위임) ## Delegation Protocol - ML 모델 필요시: expert-data-science - 인프라 설정시: expert-devops ## Quality Standards - TRUST 5 프레임워크 준수 - 데이터 무결성 검증 - 쿼리 성능 최적화

에이전트 프론트매터 필드 상세

필드필수설명
name필수에이전트 식별자 (kebab-case, 최대 64자)
description필수역할 설명. PROACTIVELY 키워드 포함 시 자동 위임
tools선택사용 가능 도구 (쉼표 구분, 생략 시 모든 도구 상속)
disallowedTools선택제외할 도구 (상속된 도구에서 제거)
model선택sonnet, opus, haiku, inherit (기본값: 설정된 모델)
permissionMode선택권한 모드 (아래 참조)
skills선택사전 로드할 스킬 목록 (상속 안 됨)
hooks선택에이전트 수명 주기 훅

권한 모드 (Permission Modes)

5가지 권한 모드가 도구 승인 처리를 제어합니다.

모드설명용도
default표준 권한 프롬프트일반적인 에이전트
acceptEdits파일 편집 자동 승인편집 중심 작업
dontAsk모든 프롬프트 자동 거부사전 승인된 도구만 사용
bypassPermissions모든 권한 검사 건너뜀신뢰할 수 있는 에이전트만
plan읽기 전용 탐색 모드수정 방지 필요시

에이전트 생성 방법

에이전트를 만드는 4가지 방법이 있습니다.

방법설명위치
/agents 명령대화형 인터페이스프로젝트/개인
수동 파일 생성마크다운 파일 직접 작성.claude/agents/
CLI 플래그--agents JSON 정의세션 전용
플러그인 배포플러그인 번들설치된 플러그인

에이전트 저장소 우선순위

동일한 에이전트 이름이 여러 곳에 정의된 경우:

  1. 프로젝트 레벨: .claude/agents/ (최우선, 버전 관리)
  2. 사용자 레벨: ~/.claude/agents/ (개인, 비버전 관리)
  3. CLI 플래그: --agents JSON (세션 전용)
  4. 플러그인: 설치된 플러그인 (최저 우선순위)

빌트인 에이전트 유형

Claude Code는 여러 빌트인 에이전트를 포함합니다.

에이전트모델특징
Explorehaiku읽기 전용 도구, 코드베이스 검색 최적화
Planinheritplan 권한 모드, 읽기 전용 도구
general-purposeinherit모든 도구, 복잡한 다단계 작업
Bashinherit터미널 명령 실행
Claude Code GuidehaikuClaude Code 기능 질문 답변

스킬 사전 로드 (Skills Preloading)

skills 필드에 나열된 스킬은 에이전트 시작 시 전체 내용이 주입됩니다.

  • 부모 대화의 스킬을 상속하지 않습니다
  • 각 스킬의 완전한 내용이 시스템 프롬프트에 주입됩니다
  • 토큰 소모를 최소화하기 위해 필수 스킬만 나열하세요
  • 순서가 중요합니다: 높은 우선순위 스킬을 먼저

훅 구성 (Hooks Configuration)

에이전트는 프론트매터에서 수명 주기 훅을 정의할 수 있습니다.

이벤트설명
PreToolUse도구 실행 전 (검증, 사전 체크)
PostToolUse도구 완료 후 (린트, 포맷팅, 로깅)
Stop에이전트 실행 완료 시

핵심 제약사항 (Key Constraints)

제약설명
서브 에이전트 생성 불가하위 에이전트는 다른 하위 에이전트를 생성할 수 없습니다
AskUserQuestion 제한하위 에이전트는 사용자와 직접 상호작용할 수 없습니다
스킬 비상속부모 대화의 스킬을 상속하지 않습니다
MCP 도구 제한백그라운드 하위 에이전트에서 MCP 도구를 사용할 수 없습니다
독립 컨텍스트각 하위 에이전트는 독립적인 200K 토큰 컨텍스트를 가집니다

플러그인 생성 (builder-plugin)

플러그인이란?

플러그인은 스킬, 에이전트, 명령어, Hooks, MCP 서버를 하나의 패키지로 번들링한 배포 단위입니다.

중요한 제약사항: commands/, agents/, skills/, hooks/ 디렉토리는 플러그인 루트에 위치해야 합니다. .claude-plugin/ 내부에 두면 안 됩니다.

플러그인 디렉토리 구조

my-plugin/ ├── .claude-plugin/ │ └── plugin.json # 플러그인 매니페스트 ├── commands/ # 슬래시 명령어 (루트 레벨!) │ └── analyze.md ├── agents/ # 에이전트 정의 (루트 레벨!) │ └── data-expert.md ├── skills/ # 스킬 정의 (루트 레벨!) │ └── my-skill/ │ └── SKILL.md ├── hooks/ # Hooks 설정 (루트 레벨!) │ └── hooks.json ├── .mcp.json # MCP 서버 설정 ├── .lsp.json # LSP 서버 설정 ├── LICENSE ├── CHANGELOG.md └── README.md

잘못된 예: .claude-plugin/commands/ (commands가 .claude-plugin 내부에 있음) 올바른 예: commands/ (commands가 플러그인 루트에 있음)

플러그인 매니페스트 (plugin.json)

{ "name": "my-data-plugin", "version": "1.0.0", "description": "데이터 분석 작업을 위한 종합 플러그인", "author": { "name": "My Team", "email": "[email protected]", "url": "https://example.com" }, "homepage": "https://example.com/docs", "repository": { "type": "git", "url": "https://github.com/owner/repo" }, "license": "MIT", "keywords": ["data", "analytics", "etl"], "commands": ["./commands/"], "agents": ["./agents/"], "skills": ["./skills/"], "hooks": "./hooks/hooks.json", "mcpServers": "./.mcp.json", "lspServers": "./.lsp.json", "outputStyles": "./output-styles/" }

필드 상세

필드필수설명
name필수kebab-case 플러그인 식별자
version필수시맨틱 버전 (예: “1.0.0”)
description필수명확한 목적 설명
author선택name, email, url 속성
homepage선택문서 또는 프로젝트 URL
repository선택소스 코드 저장소 URL
license선택SPDX 라이선스 식별자
keywords선택발견용 키워드 배열
commands선택명령어 경로 (반드시 ”./“로 시작)
agents선택에이전트 경로 (반드시 ”./“로 시작)
skills선택스킬 경로 (반드시 ”./“로 시작)
hooks선택Hooks 경로 (반드시 ”./“로 시작)
mcpServers선택MCP 서버 설정 경로
lspServers선택LSP 서버 설정 경로

경로 규칙

  • 모든 경로는 플러그인 루트 기준 상대 경로입니다
  • 모든 경로는 ”./“로 시작해야 합니다
  • 사용 가능한 환경 변수: ${CLAUDE_PLUGIN_ROOT}, ${CLAUDE_PROJECT_DIR}

Marketplace 설정 (marketplace.json)

여러 플러그인을 배포하려면 marketplace.json을 생성합니다.

{ "name": "my-marketplace", "owner": { "name": "My Organization", "email": "[email protected]" }, "plugins": [ { "name": "plugin-one", "source": "./plugins/plugin-one" }, { "name": "plugin-two", "source": { "type": "github", "repo": "owner/repo" } } ] }

설치 범위 (Installation Scopes)

범위위치설명
user~/.claude/settings.json개인 플러그인 (기본값)
project.claude/settings.json팀 공유 (버전 관리)
local.claude/settings.local.json개발자 전용 (gitignored)
managedmanaged-settings.json엔터프라이즈 관리 (읽기 전용)

플러그인 설치 및 관리

# GitHub에서 플러그인 설치 $ /plugin install owner/repo # 로컬 플러그인 검증 $ /plugin validate . # 플러그인 활성화 $ /plugin enable my-data-plugin # Marketplace 추가 $ /plugin marketplace add ./path/to/marketplace # 설치된 플러그인 목록 $ /plugin list

플러그인 캐싱 및 보안

캐싱 동작:

  • 플러그인은 보안과 검증을 위해 캐시 디렉토리로 복사됩니다
  • 모든 상대 경로는 캐시된 플러그인 디렉토리 내에서 해결됩니다
  • ../shared-utils 같은 경로 트래버설은 작동하지 않습니다

보안 경고:

  • 플러그인 설치 전 출처를 신뢰하는지 확인하세요
  • Anthropic은 서드파티 플러그인의 MCP 서버, 파일, 소프트웨어를 제어하지 않습니다
  • 설치 전 플러그인 소스 코드를 검토하세요

플러그인 생성 실전 예시

# 플러그인 생성 요청 > 데이터 분석 플러그인을 만들어줘. > 스킬, 에이전트, 명령어를 모두 포함해줘.

사용자 정의 보관 위치

MoAI-ADK 업데이트 시 사용자 커스텀 파일이 보존되는 위치를 정리합니다.

유형보존되는 위치덮어쓰기되는 위치
스킬.claude/skills/my-skills/.claude/skills/moai-*/
에이전트사용자 정의 에이전트.claude/agents/moai/
명령어사용자 정의 명령어.claude/commands/moai/
Hooks사용자 정의 Hooks.claude/hooks/moai/
규칙.claude/rules/local/.claude/rules/moai/
설정.claude/settings.local.json.claude/settings.json
지침CLAUDE.local.mdCLAUDE.md

권장 사항: 개인 확장은 항상 my-skills/ 또는 local/ 디렉토리에 생성하세요. MoAI-ADK 업데이트 시에도 안전하게 보존됩니다.

빌더 에이전트 호출 방법

빌더 에이전트는 MoAI에게 자연어로 요청하면 자동으로 호출됩니다.

# 스킬 생성 > @"builder-skill (agent)" GraphQL 패턴에 대한 커스텀 스킬을 만들어줘 # 에이전트 생성 > @"builder-agent (agent)" 데이터 분석 전문가 에이전트를 만들어줘 # 플러그인 생성 > @"builder-plugin (agent)" 데이터 분석 종합 플러그인을 만들어줘

핵심 제약사항

제약설명
서브 에이전트 생성 불가하위 에이전트는 다른 하위 에이전트를 생성할 수 없습니다
사용자 상호작용 제한하위 에이전트는 사용자와 직접 상호작용할 수 없습니다 (MoAI만 가능)
스킬 비상속부모 대화의 스킬을 상속하지 않습니다 (명시적 나열 필요)
독립 컨텍스트각 하위 에이전트는 독립적인 200K 토큰 컨텍스트를 가집니다
moai- 접두사 금지사용자 스킬/에이전트에는 moai- 접두사 사용 금지
SKILL.md 명명스킬 메인 파일은 반드시 대문자 SKILL.md 사용
플러그인 컴포넌트 위치플러그인의 commands/, agents/, skills/는 루트에 위치

관련 문서

: 처음에는 스킬 생성부터 시작하는 것을 권장합니다. 스킬은 가장 가볍고 빠르게 MoAI-ADK를 확장할 수 있는 방법입니다.

Last updated on