M5-1. 패키지 구조와 manifest.json
한 줄 요약 — 플러그인 = manifest.json + 아이콘 2개 + skills/ (+ tools/) 를 담은 ZIP. manifest는 v1.28 스키마가 엄격해서 정의 밖 필드는 업로드가 거부됩니다.
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종
| 패턴 | 구성 | 적합 |
|---|---|---|
| 스킬 전용 | agentSkills만 | 프롬프트 워크플로·문서 분석·작문 |
| 스킬+커넥터 | agentSkills + agentConnectors | 데이터 분석·API 통합·엔터프라이즈 시스템 |
| 커넥터 전용 | agentConnectors만 | 빌트인 스킬이 쓸 데이터 소스 연결 |
출처
출처: Build plugins for Copilot Cowork — What you’ll build·Create the manifest (MS Learn)