CanRobot · 캔로봇
Microsoft Certified Trainer Microsoft MVP 2025

M5-1. 패키지 구조와 manifest.json

한 줄 요약 — 플러그인 = manifest.json + 아이콘 2개 + skills/ (+ tools/) 를 담은 ZIP. manifest는 v1.28 스키마가 엄격해서 정의 밖 필드는 업로드가 거부됩니다.

패키지 해부도 — ZIP 내부 구조

1. ZIP 구조

my-extension.zip
├── manifest.json          # M365 Unified App Manifest (v1.28)
├── color.png              # 192×192 풀컬러 아이콘
├── outline.png            # 32×32 아웃라인 아이콘
├── tools/                 # (커넥터 있을 때) 도구 설명 JSON
│   └── my-connector.json
└── skills/
    └── my-skill/
        ├── SKILL.md
        └── references/    # 선택 — 심화 문서

2. manifest.json 최소 예

{
  "$schema": "https://developer.microsoft.com/json-schemas/teams/v1.28/MicrosoftTeams.schema.json",
  "manifestVersion": "1.28",
  "version": "1.0.0",
  "id": "YOUR-GUID-HERE",
  "developer": { "name": "…", "websiteUrl": "…", "privacyUrl": "…", "termsOfUseUrl": "…" },
  "name": { "short": "…", "full": "…" },
  "description": { "short": "…", "full": "…" },
  "icons": { "color": "color.png", "outline": "outline.png" },
  "accentColor": "#2B579A",
  "agentSkills": [ { "folder": "./skills/my-skill" } ]
}

커넥터는 agentConnectors 배열로 추가 — M5-3.

3. 주의 — v1.28 스키마의 엄격함

  • 루트에 additionalProperties: false정의 밖 필드는 거부 (예: Teams 앱에서 쓰던 packageName → 업로드 실패)
  • agentSkills는 폴더 참조 필수 · 최대 20개 · 경로 256자 이내
  • GUID는 버전 간 안정적으로 유지 (변환 스크립트는 UUID v5로 결정적 생성)

4. 패키징 명령

Compress-Archive -Path manifest.json, color.png, outline.png, tools, skills -DestinationPath my-extension.zip
zip -r my-extension.zip manifest.json color.png outline.png tools/ skills/

또는 Agents Toolkit: atk package --manifest-file ./appPackage/manifest.json …

5. 패키징 패턴 3종

패키징 패턴 3종

패턴 구성 적합
스킬 전용 agentSkills만 프롬프트 워크플로·문서 분석·작문
스킬+커넥터 agentSkills + agentConnectors 데이터 분석·API 통합·엔터프라이즈 시스템
커넥터 전용 agentConnectors만 빌트인 스킬이 쓸 데이터 소스 연결

출처

출처: Build plugins for Copilot Cowork — What you’ll build·Create the manifest (MS Learn)