plugin-dev (플러그인 개발 도구킷)

[!tldr] 한줄 요약 plugin-dev는 Claude Code Plugin을 만드는 법을 가르치는 공식 메타 플러그인으로, 8단계 가이드 워크플로우 + 3개 전문 에이전트 + 7개 스킬로 구성된다.

핵심 내용

전체 구조

plugin-dev/
├── commands/
│   └── create-plugin.md         ← 8단계 가이드 워크플로우 (핵심 진입점)
├── agents/
│   ├── agent-creator.md         ← 에이전트 자동 생성기
│   ├── plugin-validator.md      ← 플러그인 구조 검증기
│   └── skill-reviewer.md        ← 스킬 품질 리뷰어
└── skills/
    ├── hook-development/        ← Hook 개발 가이드
    ├── mcp-integration/         ← MCP 서버 통합 가이드
    ├── plugin-structure/        ← 디렉토리/매니페스트 가이드
    ├── plugin-settings/         ← .local.md 설정 패턴
    ├── command-development/     ← 슬래시 커맨드 개발
    ├── agent-development/       ← 에이전트 개발
    └── skill-development/       ← 스킬 개발

자기 자신이 가르치는 베스트 프랙티스를 직접 따르는 자기 참조적(self-referential) 설계가 특징이다. 소스 코드를 읽는 것 자체가 "올바른 플러그인이 어떻게 생겨야 하는가"의 레퍼런스가 된다.

8단계 가이드 워크플로우

/plugin-dev:create-plugin으로 시작하는 핵심 커맨드:

Phase이름핵심 동작
1Discovery플러그인 목적과 대상 사용자 파악
2Component Planning필요한 구성 요소 결정 (표로 정리 후 사용자 확인)
3Detailed Design각 구성 요소의 세부 스펙 확정, 모호한 점 질문
4Structure Creation디렉토리 구조 + plugin.json 매니페스트 생성
5Component Implementation관련 스킬을 동적 로드하며 각 구성 요소 구현
6Validationplugin-validator 에이전트로 종합 검증
7Testingclaude --plugin-dir로 실제 테스트
8DocumentationREADME, 마켓플레이스 엔트리 작성

[!tip] 핵심 설계 Phase 5에서 구현 대상에 따라 해당 스킬을 동적으로 로드한다. Hook 구현 시 hook-development 스킬을, 에이전트 구현 시 agent-development 스킬을 로드하는 식이다.

3개 에이전트

에이전트트리거모델역할
agent-creator"create an agent", "build a new agent"Sonnet사용자 요구사항 → 에이전트 설정 파일 자동 생성 (identifier, description, <example> 블록, 시스템 프롬프트)
plugin-validator"validate my plugin", 플러그인 수정 후 자동inherit매니페스트, 구조, 네이밍, 보안 등 종합 검증 리포트 (Critical/Warning/Minor 분류)
skill-reviewer"review my skill", 스킬 생성 후 자동inherit스킬 품질 평가 (트리거 문구, Progressive Disclosure, 문체, 단어 수)

세 에이전트 모두 Proactive Triggering을 지원한다. 사용자가 명시적으로 요청하지 않아도, 플러그인을 만들거나 수정한 후 자동으로 트리거된다.

7개 스킬의 공통 설계 패턴

스킬이 일관되게 따르는 패턴:

1. 3인칭 description

description: This skill should be used when the user asks to "create a hook"...

"Use this skill when..."이 아닌 "This skill should be used when..."으로 작성하여 Claude가 자동 트리거 시 자연스럽게 판단할 수 있게 한다.

2. 구체적 트리거 문구 나열

description: ...asks to "create a hook", "add a PreToolUse hook",
  "implement prompt-based hooks", "use ${CLAUDE_PLUGIN_ROOT}"...

사용자가 실제로 입력할 문구를 구체적으로 나열한다.

3. Progressive Disclosure

skill-name/
├── SKILL.md          ← 핵심만 (1,000~3,000 단어)
├── references/       ← 상세 문서 (필요 시 로드)
├── examples/         ← 동작하는 코드 예시
└── scripts/          ← 검증/테스트 유틸리티

SKILL.md는 lean하게 유지하고, 상세 내용은 하위 디렉토리로 분리한다.

4. 명령형 문체 "To create a hook, define the event handler..." (O) "You should create a hook by..." (X)

7개 스킬 상세

스킬핵심 내용
hook-developmentcommand/prompt/agent 3가지 Hook 타입, ${CLAUDE_PLUGIN_ROOT} 활용, 검증 스크립트 3개
mcp-integration.mcp.json 설정, stdio/SSE/HTTP 서버 타입, MCP 인증 패턴
plugin-structure디렉토리 레이아웃, plugin.json 매니페스트, 자동 발견(auto-discovery) 규칙
plugin-settings.claude/plugin-name.local.md 패턴, YAML frontmatter + 마크다운 본문 구조
command-development커맨드(legacy) 작성법. frontmatter 필드, $ARGUMENTS 동적 인수
agent-development에이전트 frontmatter 구조, <example> 블록, 시스템 프롬프트 설계, 도구 최소 권한 원칙
skill-developmentSKILL.md 구조, Progressive Disclosure, 번들 리소스(scripts/references/assets) 가이드

plugin-dev가 Command와 Skill을 나눈 이유

plugin-dev는 create-plugin을 command로, 나머지 7개를 skill로 만들었다. 이는 단순히 legacy 호환이 아니라 의도적인 설계이다:

Command (create-plugin)Skill (7개 학습 가이드)
성격사용자가 시작하는 행동 (워크플로우)Claude가 필요 시 로드하는 지식
트리거/name으로만 (명시적)자동 + 수동 (암묵적 가능)
고유 기능allowed-tools로 도구 제한 가능Progressive Disclosure 구조
역할오케스트레이터 (8단계 진행)참고자료 (Phase 5에서 동적 로드)

create-plugin은 "플러그인을 만들겠다"는 의도적 결정이므로 Claude가 자동 트리거하면 안 된다. 반면 hook-development 같은 스킬은 "hook 만들어줘"라고 하면 Claude가 알아서 로드해야 한다.

[!tip] 설계 원칙 Command = 사용자가 시작하는 워크플로우/작업. Skill = Claude가 맥락에 따라 자동 로드하는 도메인 지식. 새 플러그인에서도 이 기준으로 Command와 Skill을 구분하는 것이 좋다.

커맨드/스킬 공통 원칙

[!warning] 커맨드와 스킬은 사용자가 아닌 Claude에게 주는 지시다 마크다운 내용은 사용자가 /command를 입력하면 Claude의 프롬프트에 주입된다. 따라서 "이 코드를 보안 관점에서 검토하라"(O)가 맞고, "이 커맨드는 코드를 보안 관점에서 검토합니다"(X)는 틀리다.

예시

# plugin-dev 설치
claude plugin install plugin-dev@anthropic

# 전체 가이드 워크플로우로 플러그인 생성
/plugin-dev:create-plugin database migration manager

# 개별 에이전트만 활용
# 에이전트 파일 자동 생성 → "create an agent that validates configs"
# 완성 후 검증 → "validate my plugin"
# 스킬 품질 확인 → "review my skill"

# 로컬 테스트
claude --plugin-dir ./my-plugin

[!example] 실행 결과 /plugin-dev:create-plugin은 Phase 1(Discovery)부터 시작하여 사용자와 대화하며 8단계를 순서대로 진행한다. 각 Phase 종료 시 사용자 확인을 받고 다음으로 넘어간다.

참고 자료

관련 노트