[이 문서는 시험판 설명서이며 변경될 수 있습니다.]
중요
- Microsoft 365 Copilot Cowork에 대한 조기 액세스를 얻으려면 프론티어 미리 보기 프로그램의 일부여야 합니다. Frontier는 Microsoft의 최신 AI 혁신과 직접 연결합니다. 프론티어 미리 보기에는 고객 계약의 기존 미리 보기 조건이 적용됩니다. 이러한 기능은 아직 개발 중이므로 가용성 및 기능은 시간이 지남에 따라 변경 될 수 있습니다.
- Microsoft 관리 Center 에이전트 관리에 Cowork가 표시되지 않는 경우 관리자 계정도 프론티어(Copilot - 설정 ->> 프론티어)에 등록되어 있는지 확인합니다.
- 미리 보기 기능입니다.
- 미리 보기 기능에는 제한된 기능이 있을 수 있습니다. 이러한 기능은 공식 릴리스 전에 사용할 수 있으므로 고객은 조기에 액세스하고 피드백을 제공할 수 있습니다.
- 자세한 내용은 Microsoft 제품 약관으로 이동하세요.
Microsoft 365 Copilot Cowork는 Teams 앱, Copilot 에이전트 및 Office 추가 기능에서 사용하는 것과 동일한 배포 메커니즘인 M365 앱 패키지를 통한 확장성을 지원합니다. 다음을 사용하여 Cowork를 확장할 수 있습니다.
- 기술: 재무 분석, 법률 연구 또는 HR 워크플로와 같은 Cowork 새 도메인 전문 지식을 가르치는 프롬프트 기반 워크플로입니다.
- 커넥터: Cowork에 외부 데이터 원본 및 API에 대한 액세스 권한을 부여하는 원격 서버입니다.
둘 다 표준 Microsoft 365 앱 패키지로 함께 패키지되고 Microsoft 365 App Store 통해 배포됩니다.
빌드할 내용
Cowork 플러그 인은 다음을 .zip 포함하는 패키지입니다.
my-extension.zip
├── manifest.json # M365 Unified App Manifest (v1.28)
├── color.png # 192×192 full-color app icon
├── outline.png # 32×32 outline icon
└── skills/ # Agent Skills (SKILL.md files)
├── skill-one/
│ ├── SKILL.md
│ └── references/ # Optional deep-dive docs
└── skill-two/
└── SKILL.md
기술은 Claude Code, Visual Studio Code Copilot, Gemini CLI, Cursor, JetBrains Junie 및 30개 이상의 다른 AI 도구에서 지원하는 에이전트 기술 개방형 표준 형식을 사용합니다.
시작점 선택
| 출발점 | 경로 | 첫 번째 패키지까지의 시간 |
|---|---|---|
| 기존 Claude 코드 플러그 인이 있습니다. | 변환 | ~5분 |
| 처음부터 시작합니다. | 처음부터 빌드 | ~30분 |
기존 Claude 플러그 인 변환
기술 및 MCP 서버가 있는 Claude Code 플러그 인이 이미 있는 경우 변환 스크립트는 변환을 처리합니다.
.\Convert-ClaudePluginToMOS3.ps1 -PluginPath ./my-claude-plugin -OutputPath ./output
이 스크립트는 플러그 인의 .claude-plugin/plugin.json, .mcp.json및 skills/ 디렉터리를 읽은 다음 생성된 manifest.json를 사용하여 유효한 M365 .zip 패키지를 생성합니다.
변환되는 항목
| 플러그 인 아티팩트 Claude | M365 등가 | 참고 사항 |
|---|---|---|
.claude-plugin/plugin.json |
manifest.json |
이름, 설명 및 매핑된 작성자; GUID 자동 생성(결정적 UUID v5) |
skills/*/SKILL.md |
agentSkills[] entries + skills/ folder |
복사된 축자 - 동일한 형식 |
.mcp.json 서버 |
agentConnectors[] 항목 |
URL 및 인증 유형 자동 검색됨 |
color.png / outline.png |
패키지의 아이콘 | 있는 경우 사용됩니다. 누락된 경우 생성된 자리 표시자 |
변환되지 않은 내용
다음 Claude 플러그 인 기능은 Microsoft 365 매니페스트에서 아직 지원되지 않습니다.
| Claude 플러그 인 기능 | 상태 |
|---|---|
commands/ (슬래시 명령) |
아직 지원되지 않음 |
agents/ (하위 에이전트) |
아직 지원되지 않음 |
hooks/ (이벤트 처리기) |
아직 지원되지 않음 |
settings.json |
해당 없음 |
bin/ (실행 파일) |
해당 없음 |
변환 스크립트 옵션
.\Convert-ClaudePluginToMOS3.ps1
-PluginPath <path> # Required: Claude plugin directory
-OutputPath <path> # Output directory (default: current)
-AppId <guid> # Override auto-generated GUID
-DefaultAuthType <type> # Auto | None | OAuthPluginVault | ApiKeyPluginVault
-DetailedOutput # Show step-by-step progress
인증 유형 자동 검색:
| 원본 | 기본 인증 유형 | 이유 |
|---|---|---|
| 외부 HTTPS URL | OAuthPluginVault |
대부분의 원격 API는 인증이 필요합니다. |
자동 검색이 설정과 일치하지 않는 경우 를 사용하여 -DefaultAuthType 재정의합니다.
처음부터 플러그 인 빌드
첫 번째 기술부터 시작하여 게시 가능한 전체 패키지를 빌드하여 처음부터 플러그 인 패키지를 만들려면 다음 단계를 수행합니다.
1단계: 첫 번째 기술 만들기
기술은 파일이 포함된 폴더입니다 SKILL.md . 다음 폴더 구조를 만듭니다.
my-extension/
└── skills/
└── contract-analysis/
└── SKILL.md
YAML frontmatter 및 Markdown 본문을 사용하여 작성 SKILL.md 합니다.
---
name: contract-analysis
description: |
Analyzes contracts for key terms, risks, and obligations.
Use when user asks to "review this contract", "find the liability clause",
"summarize the key terms", or "compare these two agreements".
license: MIT
metadata:
author: Contoso Legal Tech
version: "1.0"
---
# Contract Analysis
## What This Skill Does
Guides Cowork through systematic contract review, identifying:
- Key commercial terms (pricing, payment, renewal)
- Risk clauses (indemnification, limitation of liability, IP)
- Obligations and deadlines
- Non-standard or unusual provisions
## Workflow
1. Read the uploaded contract document
2. Extract and categorize all clauses
3. Flag risk areas with severity ratings
4. Generate a structured summary with recommendations
## Output Format
Present findings in a structured table:
| Clause | Category | Risk Level | Summary |
|--------|----------|------------|---------|
| Section 4.2-Indemnification | Risk | High | Unlimited indemnification for IP claims |
| Section 7.1-Term | Commercial | Low | 12-month auto-renewal with 30-day notice |
프런트매터 필드 SKILL.md
필수 필드:
| 필드 | 제약 조건 | 설명 |
|---|---|---|
name |
1~64자, 케밥 케이스 | 기술 식별자- 폴더 이름과 정확히 일치해야 합니다. |
description |
1-1024자 | 이 기술 포함 트리거 구를 사용하는 경우 |
중요
폴더 이름은 프런트매터의 name 필드와 일치해야 합니다. 이러한 불일치는 기술 실패의 가장 일반적인 원인입니다.
| 폴더 경로 |
name 필드 |
유효한? | 이유 |
|---|---|---|---|
skills/contract-analysis/SKILL.md |
contract-analysis |
예 | 폴더 및 이름 일치 |
skills/contract-analysis/SKILL.md |
ContractAnalysis |
아니요 | Name은 일치하는 폴더 대신 PascalCase를 사용합니다. |
skills/my-skill/SKILL.md |
contract-analysis |
아니요 | 폴더는 이지만 이름은 입니다.my-skillcontract-analysis |
명명 규칙(kebab-case): 소문자 영숫자 및 하이픈만 사용합니다. 연속 하이픈을 사용하지 말고 선행 또는 후행 하이픈을 사용하지 마세요.
| 예제 | 유효한? | 문제 |
|---|---|---|
bond-relative-value |
예 | 하이픈이 있는 소문자 |
fx-carry-trade |
예 | 하이픈이 있는 소문자 |
email |
예 | 한 단어, 하이픈 필요 없음 |
Bond_Relative_Value |
아니요 | 밑줄 및 대문자 |
--my-skill-- |
아니요 | 선행 및 후행 하이픈 |
my--skill |
아니요 | 연속 하이픈 |
2단계: 참조 자료 추가(선택 사항)
복잡한 기술의 경우 기본 SKILL.md 린을 유지하고 자세한 콘텐츠를 하위 디렉터리로 이동합니다. 이러한 추가 파일을 도우미 파일 이라고 하며 필요할 때 기술과 함께 로드됩니다.
skills/
└── contract-analysis/
├── SKILL.md # Core workflow (~1,500-2,000 words ideal)
├── references/ # Deep-dive docs loaded on demand
│ ├── clause-taxonomy.md
│ └── risk-scoring.md
└── scripts/ # Executable utilities
└── extract-clauses.py
도우미 파일 제한
각 기술에는 최대 20개의 도우미 파일(이외의 SKILL.md파일)이 포함될 수 있습니다. 기술당 적용되는 제한은 다음과 같습니다.
| 제한 유형 | 값 |
|---|---|
| 최대 도우미 파일 | 20 |
| 도우미 파일당 최대 크기 | 5MB |
| 최대 총 도우미 크기 | Excel Services에서 열 수 있는 최대 통합 문서 크기는 10MB입니다. |
| 다운로드 시간 제한(모든 도우미) | 15초 |
도우미 파일 규칙
도우미 파일 경로는 다음 규칙을 따라야 합니다.
- 상대 경로만 사용(절대 경로 없음)
- 경로 통과 없음(
..세그먼트) - 파일 이름에 백슬라이시 또는 null 바이트가 없음
- 숨겨진 파일 없음(로 시작하는
.이름) - Windows 예약 이름 없음(
CON, ,AUXPRN,NUL,COM1–COM9,LPT1–LPT9) - 파일
SKILL.md자체는 도우미 파일로 계산되지 않습니다. - 파일 이름은 영숫자, 하이픈, 밑줄, 점, 공백 및
!
컨텍스트 창을 효율적으로 유지하기 위해 시스템은 다음 세 계층으로 기술을 로드합니다.
| 층 | 로드 시 | 대상 크기 |
|---|---|---|
Frontmatter(name + description) |
Always - 시작 시 | ~100개의 토큰 |
SKILL.md 몸 |
기술이 트리거되는 경우 | 5,000개 미만의 토큰(1,500-2,000단어) |
참조(references/) |
에이전트의 요청 시 | 무제한 |
스크립트(scripts/) |
컨텍스트에 로드되지 않고 실행됨 | 해당 없음 |
에서 하위 디렉터리를 명시적으로 SKILL.md 참조하여 에이전트가 존재하는지 알 수 있도록 합니다.
## Additional Resources
- **`references/clause-taxonomy.md`**-Full taxonomy of contract clause types
- **`references/risk-scoring.md`**-Risk scoring methodology and thresholds
- **`scripts/extract-clauses.py`**-Automated clause extraction utility
3단계: 커넥터 추가(선택 사항)
확장에서 외부 데이터에 액세스해야 하는 경우 원격 MCP 서버를 추가합니다. 이 단계는 선택 사항입니다. 기술 전용 패키지는 프롬프트 기반 워크플로에 적합합니다.
커넥터 요구 사항
| 요구 사항 | 세부 정보 |
|---|---|
| 전송 | 스트리밍 가능한 HTTP(HTTPS 필요, TLS 1.2 이상) |
| Protocol(프로토콜) | JSON-RPC 2.0 메시지 형식 |
| 도구 검색 | 동적 검색 지원 tools/list (권장) |
| 도구 실행 | 호출 지원 tools/call |
| 상태 | 스토어에 게시된 앱에 권장되는 99.9% 작동 시간 SLA |
| 응답 시간 | 도구 호출당 30초 미만 |
도구 디자인 지침
- 작은 API에 대한 작업당 하나의 도구(15개 미만의 작업):
search_case_law, ,get_rulingcite_precedent -
검색 + 큰 API에 대한 실행(50개 이상의 작업):
search_actions+execute_action -
설명이 포함된 이름:
get_bond_pricenotgetData - 풍부한 입력 스키마: 모든 매개 변수에 대한 설명을 포함합니다. 에이전트가 읽는 내용입니다.
- 구조적 출력: 에이전트가 사용자에 대해 서식을 지정할 수 있는 JSON 반환
지원되는 인증 유형
| 인증 유형 | 사용 시기 | 사용자 환경 |
|---|---|---|
None |
공용 또는 익명 API, 내부 서비스 | 투명 - 인증 프롬프트 없음 |
OAuthPluginVault |
OAuth 2.0 API(프로덕션에 권장) | 사용자가 OAuth 동의를 한 번 완료합니다. |
ApiKeyPluginVault |
API 키 기반 서비스 | 사용자는 키를 한 번 제공합니다. |
및 ApiKeyPluginVault의 referenceId 경우 OAuthPluginVault Microsoft Enterprise 토큰 저장소에 저장된 자격 증명을 가리킵니다. 비밀은 매니페스트 또는 기술 파일에 표시되지 않습니다. 값은 referenceId에이전트 도구 키트에 OAuth 클라이언트를 등록할 때 만드는 OAuth 클라이언트 등록 ID입니다.
중요
OAuth 클라이언트를 등록할 때 organization 사용량을 모든 Microsoft 365 조직으로 설정하여 플러그 인이 테넌트에서 작동하는지 확인합니다.
MCP 인증
인증에 OAuth 또는 ApiKey를 사용하려면 설정 및 구성 세부 정보는 Microsoft 365 Copilot 에이전트에서 MCP 및 API 플러그 인에 대한 인증 구성을 참조하세요.
4단계: 매니페스트 만들기
패키지 루트에서 만들기 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",
"packageName": "com.contoso.legal-tools",
"developer": {
"name": "Contoso Legal Tech",
"websiteUrl": "https://contoso.com",
"privacyUrl": "https://contoso.com/privacy",
"termsOfUseUrl": "https://contoso.com/terms"
},
"name": {
"short": "Contoso Legal Tools",
"full": "Contoso Legal Tools for Copilot Cowork"
},
"description": {
"short": "Contract analysis, clause extraction, and legal research",
"full": "Comprehensive legal tools for Copilot Cowork including contract analysis, clause extraction, risk assessment, and legal research capabilities."
},
"icons": {
"color": "color.png",
"outline": "outline.png"
},
"accentColor": "#2B579A",
"agentSkills": [
{ "folder": "./skills/contract-analysis" }
]
}
커넥터를 추가하려면 를 포함합니다 agentConnectors.
{
"agentConnectors": [
{
"id": "contoso-legal-api",
"displayName": "Contoso Legal Database",
"description": "Access to case law, statutes, and regulatory databases",
"toolSource": {
"remoteMcpServer": {
"mcpServerUrl": "https://api.contoso.com/legal/mcp",
"authorization": {
"type": "OAuthPluginVault",
"referenceId": "A1bC2dE3fH4iJ5kL6mN7oP8qR9sT0u"
}
}
}
}
]
}
커넥터 구성에서 은 referenceId OAuth 등록 ID여야 합니다.
5단계: 아이콘 추가
두 개의 PNG 아이콘을 만듭니다.
| 아이콘 | Size | 용도 |
|---|---|---|
color.png |
192×192px | 스토어 및 앱 목록에 표시된 전체 색 앱 아이콘 |
outline.png |
32×32px | 간결한 보기에 대한 단일 색 윤곽선 아이콘 |
아이콘이 아직 없는 경우 변환 스크립트는 단색 자리 표시자를 생성합니다. 스토어 제출 전에 교체합니다.
6단계: 패키지
루트 수준에서 모든 내용이 포함된 ZIP 파일을 만듭니다.
contoso-legal-tools.zip
├── manifest.json
├── color.png
├── outline.png
└── skills/
└── contract-analysis/
├── SKILL.md
└── references/
└── clause-taxonomy.md
Windows(PowerShell):
Compress-Archive -Path manifest.json, color.png, outline.png, skills -DestinationPath contoso-legal-tools.zip
macOS/Linux:
zip -r contoso-legal-tools.zip manifest.json color.png outline.png skills/
7단계: 테스트
테스트용 사이드로드:
- M365 관리 Center>앱 관리 사용자지정 앱 >업로드를 엽니다.
- 패키지를 업로드합니다
.zip. - 기술 & Cowork >원본을 엽니다.
API를 통해 사이드로드할 수도 있습니다.
POST /users/titles
Content-Type: application/zip
Body: <your-package.zip>
8단계: 게시
파트너 센터를 통해 Microsoft 365 App Store 제출합니다.
패키징 패턴
확장에 맞는 패턴을 선택합니다.
기술 전용(커넥터 없음)
프롬프트 기반 워크플로, 문서 분석 및 쓰기 지원에 가장 적합합니다.
my-skills-pack.zip
├── manifest.json # agentSkills only, no agentConnectors
├── color.png
├── outline.png
└── skills/
├── skill-one/SKILL.md
└── skill-two/SKILL.md
기술 + 원격 커넥터
데이터 분석, API 통합 및 엔터프라이즈 시스템에 가장 적합합니다.
my-data-skills.zip
├── manifest.json # agentSkills + agentConnectors
├── color.png
├── outline.png
└── skills/
├── analysis-workflow/SKILL.md
└── reporting-workflow/SKILL.md
커넥터 전용(사용자 지정 기술 없음)
Cowork의 기본 제공 기술이 이미 사용할 수 있는 데이터 원본에 이 옵션을 사용합니다.
my-connector.zip
├── manifest.json # agentConnectors only, no agentSkills
├── color.png
└── outline.png
변환된 Claude 플러그 인
Cowork를 대상으로 하는 기존 Claude 에코시스템 플러그 인에 이 옵션을 사용합니다.
.\Convert-ClaudePluginToMOS3.ps1 -PluginPath ./claude-plugin -OutputPath ./output
기술 작성 모범 사례
다음 지침에 따라 안정적으로 활성화하고 일관된 결과를 생성하는 기술을 만듭니다.
효과적인 설명 작성
description 필드는 에이전트가 기술을 활성화하는 시기를 결정합니다. 구체적으로 설명합니다.
# Good-specific trigger phrases, concrete scenarios
description: |
Analyzes bond relative value using Z-spreads, ASW spreads, and butterfly analysis.
Use when user asks to "analyze bond spreads", "compare bonds",
"rich-cheap analysis", "relative value", or "Z-spread calculation".
# Bad-vague, no trigger phrases
description: Provides bond analytics capabilities.
효과적인 워크플로 작성
- 설명에서 구체적으로 설명합니다. 트리거 구 포함: "사용자가 요청할 때 사용..." 이 설명은 에이전트가 활성화할 기술을 결정하는 방법입니다.
- 워크플로로 구조화합니다. 단계에 번호를 지정합니다. 각 단계는 구체적인 작업에 매핑되어야 합니다(파일 읽기, 도구 호출, 출력 생성).
- 출력 형식을 정의합니다. 사용자가 예상해야 하는 정확한 테이블, 목록 또는 문서 구조를 표시합니다. 이 정의는 일관성을 크게 향상시킵니다.
-
이름별 참조 도구입니다. 기술이 커넥터 도구에 의존하는 경우 명시적으로 이름을 지정합니다. "도구를 사용하여
search_case_law..." -
메인 SKILL.md 의지하십시오. 자세한 참조 자료를 하위 디렉터리로
references/이동합니다. 기술 본문은 백과 사전이 아닌 워크플로여야 합니다.
일반적인 실수 방지
- 파일에 비밀을
SKILL.md포함하지 마세요. API 자격 증명에 인증과 함께 를 사용합니다agentConnectors. - 기본 제공 기술을 복제하지 마세요. 빌드하기 전에 기본 제공 기술 목록을 확인합니다.
- 기술을 너무 광범위하게 만들지 마십시오. "법률 문서를 사용하여 모든 작업을 수행"은 "계약 분석", "조항 추출" 및 "법률 연구"에 대한 특정 기술보다 더 나쁩니다.
- 파일 경로 또는 시스템 명령을 하드 코딩하지 마세요. 기술은 환경 전체에서 이식 가능해야 합니다.
-
모든 것을 SKILL.md 넣지 마십시오. 본문이 3,000단어를 초과하면 자세한 내용을 로
references/이동합니다.
유효성 검사 규칙
패키지를 제출할 때 플랫폼은 여러 수준에서 유효성을 검사합니다. 거부를 방지하기 위해 제출 전에 이러한 오류를 수정합니다.
매니페스트 수준 유효성 검사
| 코드 | 규칙 | 심각도 |
|---|---|---|
| ASKILL-M001 |
folder 는 각 agentSkills 항목에 필요합니다. |
오류 |
| ASKILL-M002 | 배열의 agentSkills 최대 20개 항목 |
오류 |
| ASKILL-M003 |
folder 경로 최대 256자 |
오류 |
패키지 수준 유효성 검사
| 코드 | 규칙 | 일반적인 수정 사항 | 심각도 |
|---|---|---|---|
| ASKILL-P001 | 매니페스트에서 참조되는 폴더가 ZIP에 있음 | ZIP 구조 확인 | 오류 |
| ASKILL-P002 | 폴더에 파일이 포함되어 있습니다.SKILL.md |
누락된 추가 SKILL.md |
오류 |
| ASKILL-P003 |
SKILL.md 구분 기호 간에 --- 유효한 YAML 프런트매터가 있습니다. |
YAML 구문 수정 | 오류 |
| ASKILL-P004 | Frontmatter에는 필드가 포함됩니다 name . |
frontmatter에 추가 name: |
오류 |
| ASKILL-P005 | Frontmatter에는 필드가 포함됩니다 description . |
frontmatter에 추가 description: |
오류 |
| ASKILL-P006 |
name 폴더 이름(마지막 경로 세그먼트)과 일치합니다. |
폴더 이름 바꾸기 또는 수정 name: |
오류 |
| ASKILL-P007 |
name 는 kebab-case입니다. |
사용 my-skill 안 하며 MySkillmy_skill |
오류 |
| ASKILL-P008 | 배열에 중복 folder 값 없음 |
중복 항목 제거 | 오류 |
커넥터 유효성 검사
| 규칙 | 심각도 |
|---|---|
id 및 displayName 는 각 커넥터에 필요합니다. |
오류 |
매니페스트 내에서 고유한 모든 커넥터 id 값 |
오류 |
정확히 또는 중 plugin 하나 remoteMcpServer |
오류 |
mcpServerUrl 유효한 HTTPS URL이어야 합니다. |
오류 |
authorization.referenceId 형식이 아닌 경우 필수 None |
오류 |
authorization.referenceId 형식이 인 경우 존재하지 않아야 합니다. None |
오류 |
도우미 파일 유효성 검사
도우미 파일(참조 자료, 스크립트 및 기타 파일과 함께 SKILL.md)은 업로드 및 동기화 시 유효성을 검사합니다.
| 규칙 | 심각도 |
|---|---|
기술당 최대 20개 도우미 파일(제외 SKILL.md) |
오류 |
| 각 도우미 파일은 5MB 이상이어야 합니다. | 오류 |
| 총 도우미 파일은 기술당 10MB 이상이어야 합니다. | 오류 |
| 파일 경로는 상대 경로여야 합니다(절대 경로 없음). | 오류 |
경로 통과 세그먼트 없음(..) |
오류 |
| 파일 이름에 백슬라이시 또는 null 바이트가 없음 | 오류 |
숨겨진 파일 없음(로 시작하는 .이름) |
오류 |
Windows 예약 이름 없음(CON, , AUXPRN, NUL, COM1–COM9, LPT1–LPT9) |
오류 |
파일 이름은 안전한 문자만 사용해야 합니다(영숫자, 하이픈, 밑줄, 점, 공백, !) |
오류 |
플랫폼 간 호환성
기술은 에이전트 기술 개방형 표준을 사용합니다. 동일한 SKILL.md 파일은 여러 AI 도구에서 작동합니다.
| 플랫폼 | 호환성 |
|---|---|
| Claude 코드 | 전체 동일한 SKILL.md 형식 |
| Claude.ai 프로젝트 | 전체 기술을 프로젝트 파일로 업로드할 수 있습니다. |
| VS Code/ GitHub Copilot | 에이전트 모드에서 지원되는 Full-Agent 기술 |
| GEMINI CLI | 지원되는 Full-Agent 기술 |
| JetBrains Junie | 지원되는 Full-Agent 기술 |
| OpenAI Codex | 지원되는 Full-Agent 기술 |
| 커서 | 지원되는 Full-Agent 기술 |
Claude Code 및 Cowork 모두에 대한 기술을 개발하는 경우 Claude Code 플러그 인 구조로 시작합니다.
my-plugin/
├── .claude-plugin/
│ └── plugin.json # Claude plugin manifest
├── skills/
│ ├── skill-one/
│ │ ├── SKILL.md # Works in both Claude Code AND M365
│ │ └── references/
│ └── skill-two/
│ └── SKILL.md
└── .mcp.json # MCP server config (optional)
그런 다음 Microsoft 365 App Store 게시할 준비가 되면 M365 패키지로 변환합니다.
.\Convert-ClaudePluginToMOS3.ps1 -PluginPath ./my-plugin -OutputPath ./output
MCP 주석 및 확인 관리
Copilot Cowork는 서버가 에서 반환하는 도구에서 tools/list표준 MCP annotations 개체를 읽고 이를 사용하여 도구 호출에 사용자 확인이 필요한지 여부와 프롬프트에 표시할 레이블을 결정합니다.
사용 가능한 필드
| 필드 | 유형 | 효과 |
|---|---|---|
readOnlyHint |
bool |
false: 도구가 실행되기 전에 확인이 필요합니다. |
destructiveHint |
bool |
true: 도구가 실행되기 전에 확인이 필요합니다. |
title |
문자열 | 확인 대화 상자에 사람이 읽을 수 있는 레이블입니다. 이 없는 경우 도구 이름으로 돌아갑니다. |
확인 규칙
확인은 또는 destructiveHint == true경우에만 readOnlyHint == false 필요합니다.
주석이 없거나 이러한 특정 힌트가 없는 도구는 기본적으로 프롬프트가 없습니다. Copilot Cowork는 기존 MCP 서버가 계속 작동하도록 기본적으로 차단이 아닌 기본적으로 안전하다고 가정합니다.
MCP 예제
친숙한 레이블이 있는 파괴적인 작업:
{
"name": "send_email",
"description": "Send an email message.",
"annotations": {
"title": "Send Email",
"destructiveHint": true
},
"inputSchema": { ... }
}
자동 실행되는 안전한 읽기:
{
"name": "search_docs",
"annotations": {
"title": "Search Documents",
"readOnlyHint": true
}
}
지금 사용할 수 있는 기능
- Microsoft 도구(Graph, Dataverse 등)는 주석에 관계없이 Cowork의 기본 제공 정책에 의해 제어됩니다.
- Microsoft MCP가 아닌 서버의 경우 주석 기반 확인이 점진적으로 롤아웃됩니다. 이제 힌트를 설정하는 것은 앞으로 호환되며 개발자 변경 없이 롤아웃이 확장되면 확인 프롬프트가 표시됩니다.
일반적인 질문
Claude Code에서 M365 패키지의 기술을 사용할 수 있나요?
예. 기술 폴더에는 표준 에이전트 기술이 포함됩니다.
.claude/skills/ Claude Code 프로젝트에서 복사하거나 프로젝트를 먼저 Claude 플러그 인으로 구성하고 M365의 변환 스크립트를 사용합니다.
원격 커넥터가 필요한가요?
아니요. 기술 전용 패키지는 프롬프트 기반 워크플로에 적합합니다. 커넥터는 기술에 외부 시스템의 라이브 데이터가 필요한 경우에만 필요합니다.
플러그 인 기술은 기본 제공 기술과 어떻게 다른가요?
플러그 인 기술은 API의 원본 "package" 과 함께 표시됩니다. 동일한 이름의 기본 제공 기술을 재정의할 수 없습니다. 관리 배포된 패키지는 를 표시isAdminDeployed: true합니다.
IT 관리자가 사용 가능한 플러그 인을 제어할 수 있나요?
예. Standard M365 관리 컨트롤이 적용됩니다. 테넌트 수준 허용/차단 목록, 관리자 관리형 배포 및 규정 준수 정책.
플러그 인이 해지되면 어떻게 되나요?
다음 동기화 주기에서 해당 패키지의 기술과 커넥터가 사용자의 세션에서 제거됩니다. 활성 대화는 중단되지 않지만 새 세션에는 패키지의 기능이 없습니다.
패키지당 최대 기술 수는 무엇인가요?
20(20) 기술(ASKILL-M002당). 커넥터의 경우 한도는 패키지당 10입니다.
기술이 동일한 패키지의 커넥터 도구를 참조할 수 있나요?
예, 그리고 그들은해야한다. 워크플로에서 도구 이름을 명시적으로 지정합니다 SKILL.md (예: "도구 사용 search_case_law ..."). 에이전트는 런타임에 연결합니다.
내 패키지에 대한 결정적 GUID를 생성할 어떻게 할까요? 있나요?
변환 스크립트는 플러그 인 이름에서 UUID v5(SHA-1 기반)를 사용합니다. 변환을 두 번 실행하면 동일한 GUID가 생성됩니다. 수동 패키징의 경우 GUID 생성기를 사용합니다. 버전 간에 안정적으로 유지해야 합니다.