Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Microsoft Copilot Cowork ondersteunt uitbreidbaarheid via M365-app-pakketten, hetzelfde distributiemechanisme dat wordt gebruikt door Teams-apps, Copilot-agents en Office-invoegtoepassingen. Je kunt Cowork uitbreiden met:
- Vaardigheden: Op prompts gebaseerde workflows die Cowork nieuwe domeinexpertise leren, zoals financiële analyse, juridisch onderzoek of HR-workflows.
- Connectors: Externe servers die Cowork toegang geven tot externe gegevensbronnen en API's.
Beide zijn samen verpakt in een standaard Microsoft 365-app-pakket en worden gedistribueerd via de Microsoft 365 App Store.
Belangrijk
Microsoft Purview-informatiebarrières (IB) worden momenteel niet ondersteund voor het beheren en delen van invoegtoepassingen of vaardigheden. In tenants waar IB is ingeschakeld, worden uploads van ingesloten kennisbestanden geblokkeerd op tenantniveau. Hiermee voorkomt u dat de betrokken plug-ins en vaardigheden worden geüpload of gepubliceerd.
Wat u gaat bouwen
Een Cowork-plug-in is een .zip pakket met:
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
Skills maken gebruik van de Agent Skills open standard, dezelfde indeling die wordt ondersteund door Claude Code, Visual Studio Code Copilot, Gemini CLI, Cursor, JetBrains Jenie en 30+ andere AI-hulpprogramma's.
Kies je startpunt
| Startpunt | Pad | Tijd tot eerste pakket |
|---|---|---|
| Ik heb een bestaande invoegtoepassing voor Claude Code of Cursor | Importeren | ~5 minuten |
| Ik begin bij nul | Volledig opnieuw bouwen | ~30 minuten |
Een bestaande invoegtoepassing importeren
Als u al een invoegtoepassing voor Claude Code of Cursor met vaardigheden en MCP-servers hebt, importeert de Microsoft 365 Agents Toolkit CLI (atk) deze rechtstreeks. De CLI draait op Windows, macOS en Linux.
Installeer de CLI (versie 1.1.12 of hoger vereist):
npm install -g @microsoft/m365agentstoolkit-cliControleer de versie:
atk --versionUw invoegtoepassing importeren:
atk import openplugin --path ./my-claude-plugin --output ./my-plugin-project \ --privacy-url https://contoso.com/privacy \ --terms-url https://contoso.com/terms
De opdracht leest de plugin's .claude-plugin/plugin.json (of .cursor-plugin/plugin.json), .mcp.jsonen skills/ directory en vervolgens een Agents Toolkit-project met appPackage/manifest.jsonje vaardigheden, en gegenereerde pictogrammen.
U moet en opnemen --privacy-url omdat --terms-url invoegtoepassingsmanifesten geen equivalente velden hebben en het Microsoft 365-manifest beide vereist.
Opmerking
atk import openpluginHiermee zoekt u een pluginmanifest in een map met een vooraf punt,.claude-plugin/plugin.json.cursor-plugin/plugin.json of , naast .plugin/plugin.jsoneen .mcp.json. De Agent Plugins 1.0.0-specificatie plaatst het manifest op een topniveau plugin.json en MCP-configuratie op mcp.json. Als u een invoegtoepassing wilt importeren die de indeling 1.0.0 volgt, verplaatst u het manifest naar .plugin/plugin.json en wijzigt u de naam mcp.json naar .mcp.json.
Verpak het resultaat in een uploadbare .zip:
cd my-plugin-project
atk package --manifest-file ./appPackage/manifest.json \
--output-package-file ./appPackage/build/appPackage.zip \
--output-folder ./appPackage/build
Opmerking
atk import openplugin genereert een devPreview manifest. De manifestvoorbeelden elders in dit artikel zijn bedoeld voor schema v1.28. Als u publiceert via een kanaal dat v1.28 vereist, werkt manifestVersion u de gegenereerde connector bij en appPackage/manifest.json$schema voegt u de mcpToolDescription eigenschap toe aan elke connector, zoals beschreven in Beschrijving van de hulpprogramma's van uw connector.
Wat wordt geïmporteerd
| Artefact van invoegtoepassing | M365-equivalent | Opmerkingen |
|---|---|---|
.claude-plugin/plugin.json |
manifest.json |
Naam-, beschrijvings- en ontwikkelaarsvelden toegewezen; GUID automatisch gegenereerd (deterministische UUID v5) |
skills/*/SKILL.md |
agentSkills[] Items + skills/ map |
Letterlijk gekopieerd - identieke indeling |
.mcp.json servers |
agentConnectors[] Vermeldingen |
URL en verificatietype worden automatisch gedetecteerd |
color.png / outline.png |
Pictogrammen in verpakking | Gebruikt indien aanwezig; Tijdelijke aanduidingen gegenereerd als deze ontbreken |
Belangrijk
Voor elke connector die wordt geïmporteerd uit .mcp.json, is de gegenereerde authorization.referenceId een tijdelijke aanduiding die is afgeleid van de naam van de invoegtoepassing en de server. Vervang deze door de werkelijke OAuth-clientregistratie-id voordat u de publicatie publiceert. Zie Ondersteunde verificatietypen.
Wat niet wordt geconverteerd
De volgende functies van de Claude-invoegtoepassing worden nog niet ondersteund in het Microsoft 365-manifest:
| Claude plugin functie | Status |
|---|---|
commands/ (slash-opdrachten) |
Nog niet ondersteund |
agents/ (subagenten) |
Nog niet ondersteund |
hooks/ (gebeurtenishandlers) |
Nog niet ondersteund |
settings.json |
Niet van toepassing |
bin/ (uitvoerbare bestanden) |
Niet van toepassing |
Opties voor importeren
| Optie | Beschrijving |
|---|---|
--path, -p |
Vereist. Map van invoegtoepassing met .claude-plugin/plugin.json, .cursor-plugin/plugin.json, of .plugin/plugin.json |
--output, -o |
Doelprojectmap (standaard: ./<plugin-name>) |
--privacy-url |
developer.privacyUrl voor het gegenereerde manifest |
--terms-url |
developer.termsOfUseUrl voor het gegenereerde manifest |
--website-url |
developer.websiteUrl. Valt terug naar homepage, dan author.url |
--app-id |
De deterministische UUID v5 die voor het manifest is gegenereerd, overschrijven id |
--default-auth-type |
Auto (standaard), None, OAuthPluginVault, of ApiKeyPluginVault |
Automatische detectie van verificatietype:
| Source | Standaardverificatietype | Reden |
|---|---|---|
| Externe HTTPS-URL's | OAuthPluginVault |
De meeste externe API's hebben verificatie nodig |
localhost en niet-HTTPS-URL's |
None |
Lokale ontwikkelservers |
Als de automatische detectie niet overeenkomt met uw instellingen, overschrijft --default-auth-type u deze.
Terug exporteren naar de map met invoegtoepassingen
Om een Agents Toolkit-project terug te verplaatsen naar een plug-inmap, bijvoorbeeld om een Claude Code-plug-in en een Cowork-pakket gesynchroniseerd te houden, gebruikt uatk export openplugin:
atk export openplugin --path ./my-plugin-project \
--output ./my-claude-plugin --manifest-kind claude-plugin
| Optie | Beschrijving |
|---|---|
--path, -p |
Vereist. Projectmap Agents Toolkit met appPackage/manifest.json |
--output, -o |
Map met doelplug-in (standaard: ./<plugin-name>-openplugin) |
--manifest-kind |
open-plugin (standaard, schrijft .plugin/plugin.json), claude-pluginof cursor-plugin |
Export schrijft een x-microsoft-365-agents-toolkit blok in het gegenereerde plugin.json. Dat blok bevat het manifest id, de ontwikkelaars-URL's en de connectorinstellingen, dus een latere atk import openplugin round-trips zonder dat dat nodig is --privacy-url of --terms-url opnieuw.
Opmerking
Het x-microsoft-365-agents-toolkit blok is specifiek voor Agents Toolkit en het standaardtype open-plugin schrijft het manifest naar .plugin/plugin.json.
Agent Plugins 1.0.0 gebruikt een top-level plugin.json en draagt client-specifieke gegevens onder een extensions sleutel met een omgekeerde domeinnaamruimte, zodat andere clients dit blok negeren in plaats van ernaar te handelen. Wanneer uw doel Claude Code of Cursor is, gebruikt u --manifest-kind claude-plugin of cursor-plugin.
Verouderd: PowerShell-conversiescript
Vóór atk het importeren van ondersteunde plug-ins, werd bij de conversie een PowerShell-script gebruikt dat alleen voor Windows beschikbaar is, dat beschikbaar blijft als het conversiescript:
.\Convert-ClaudePluginToMOS3.ps1 -PluginPath ./my-claude-plugin -OutputPath ./output
Gebruik atk import openplugin in plaats daarvan. Het is platformonafhankelijk, ondersteunt zowel Cursor- als Claude Code-bronnen en kan teruggaan naar een plug-in-directory.
Een volledig nieuwe invoegtoepassing bouwen
Volg deze stappen om een volledig nieuw plug-inpakket te maken, beginnend met uw eerste vaardigheid en opbouwend tot een compleet, publiceerbaar pakket.
Stap 1: Uw eerste vaardigheid maken
Een vaardigheid is een map die een SKILL.md bestand bevat. Maak de volgende mapstructuur:
my-extension/
└── skills/
└── contract-analysis/
└── SKILL.md
Schrijf SKILL.md met YAML-frontmatter en een Markdown-hoofdtekst:
---
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 velden
Verplichte velden:
| Veld | Beperkingen | Beschrijving |
|---|---|---|
name |
1-64 karakters, kebab-case | Vaardigheids-id: moet exact overeenkomen met de naam van de map |
description |
1-1024 personages | Wanneer gebruikt u deze vaardigheid: voeg triggerzinnen toe |
Belangrijk
- De naam van de map moet overeenkomen met het
nameveld in het voorwerk. Deze mismatch is de meest voorkomende oorzaak van mislukte vaardigheden. - Velden met invoegtoepassingen
descriptionmogen geen oproepen tot actie bevatten die gebruikers naar externe marktplaatsen leiden om abonnementen te kopen.
| Mappad |
name veld |
Geldig? | Waarom |
|---|---|---|---|
skills/contract-analysis/SKILL.md |
contract-analysis |
Ja | Map en naam komen overeen |
skills/contract-analysis/SKILL.md |
ContractAnalysis |
Nee | De naam gebruikt PascalCase in plaats van een overeenkomende map |
skills/my-skill/SKILL.md |
contract-analysis |
Nee | Map is my-skill maar naam is contract-analysis |
Naamgevingsregels (kebab-case): Gebruik alleen kleine letters, alfanumerieke tekens en afbreekstreepjes. Gebruik geen opeenvolgende afbreekstreepjes en geen voor- of volgstreepjes.
| Voorbeeld | Geldig? | Probleem |
|---|---|---|
bond-relative-value |
Ja | Kleine letters met afbreekstreepjes |
fx-carry-trade |
Ja | Kleine letters met afbreekstreepjes |
email |
Ja | Eén woord, geen afbreekstreepjes nodig |
Bond_Relative_Value |
Nee | Onderstrepingstekens en hoofdletters |
--my-skill-- |
Nee | Voorloop- en volgstreepjes |
my--skill |
Nee | Opeenvolgende afbreekstreepjes |
Stap 2: Referentiemateriaal toevoegen (optioneel)
Voor complexe vaardigheden houdt u de belangrijkste SKILL.md informatie en verplaatst u gedetailleerde inhoud naar submappen. Deze aanvullende bestanden zijn companion-bestanden. De vaardigheid laadt ze wanneer dat nodig is.
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
Limieten voor begeleidende bestanden
Elke vaardigheid kan maximaal 20 begeleidende bestanden bevatten (elk bestand behalve SKILL.md). Per vaardigheid gelden de volgende limieten:
| Limiet | Waarde |
|---|---|
| Maximaal aantal companion-bestanden | 20 |
| Maximale grootte per begeleidend bestand | 5 MB |
| Maximale totale grootte van de companion | 10 MB |
| Time-out voor downloaden (alle companions) | 15 seconden |
Regels voor begeleidende bestanden
Begeleidende bestandspaden moeten voldoen aan de volgende regels:
- Alleen relatieve paden gebruiken (geen absolute paden)
- Geen padtraversal (
..segmenten) - Geen backslashes of null-bytes in bestandsnamen
- Geen verborgen bestanden (namen die beginnen met
.) - Geen gereserveerde namen in Windows (
CON, ,AUXPRN,NUL,COM1–COM9,LPT1–LPT9) - Het bestand
SKILL.mdzelf telt niet als begeleidend bestand - Bestandsnamen moeten veilige tekens bevatten: alfanumeriek, streepjes, onderstrepingstekens, punten, spaties en
!
Om het contextvenster efficiënt te houden, laadt het systeem vaardigheden in drie lagen:
| Laag | Wanneer geladen | Doelgrootte |
|---|---|---|
Voormaterie (name + description) |
Altijd - bij het opstarten | ~100 tokens |
SKILL.md Lichaam |
Wanneer de vaardigheid wordt geactiveerd | Minder dan 5.000 tokens (1.500-2.000 woorden) |
Referenties (references/) |
Op aanvraag van de agent | Onbeperkt |
Scripts (scripts/) |
Uitgevoerd, niet in context geladen | N.v.t. |
Verwijs expliciet SKILL.md naar de submappen, zodat de agent weet dat ze bestaan:
## 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
Stap 3: Een verbindingslijn toevoegen (optioneel)
Als uw extensie toegang nodig heeft tot externe gegevens, voegt u een externe MCP-server toe. Deze stap is optioneel. Vaardigheidspakketten werken goed voor op prompts gebaseerde workflows.
Tip
Als uw server de zichtbaarheid van de tool per client aflegt of inkomend verkeer kenmerkt, raadpleegt u Identificeer het Cowork-verkeer naar uw server voor de clientidentiteit die Cowork presenteert.
Opmerking
Aangepaste plug-ins worden niet ondersteund in Cowork op mobiele apparaten.
Vereisten voor connectors
| Vereiste | Details |
|---|---|
| Vervoer | Streambare HTTP (HTTPS vereist, TLS 1.2+) |
| Protocol | JSON-RPC 2.0-berichtindeling |
| Detectie van hulpprogramma's | Ondersteuning tools/list voor dynamische detectie (aanbevolen) |
| Uitvoering van hulpprogramma's | Ondersteuning tools/call voor aanroepen |
| Beschikbaarheid | 99,9% beschikbaarheid SLA aanbevolen voor in de winkel gepubliceerde apps |
| Reactietijd | Minder dan 30 seconden per gereedschapsoproep |
Richtlijnen voor het ontwerpen van hulpprogramma's
-
Eén hulpprogramma per actie voor kleine API's (minder dan 15 bewerkingen):
search_case_law,get_ruling,cite_precedent -
Zoeken + uitvoeren voor grote API's (50+ bewerkingen):
search_actions+execute_action -
Beschrijvende namen:
get_bond_pricenietgetData - Uitgebreide invoerschema's: voeg een beschrijving toe voor elke parameter. Dit is wat de agent leest
- Gestructureerde uitvoer: retourneer JSON die de agent kan opmaken voor de gebruiker
-
Bestandsinvoer: als u een bestand uit de werkruimte van de gebruiker wilt accepteren, declareert u de parameter met
contentEncoding: base64. Meer informatie vindt u in Bestanden accepteren uit de werkruimte Cowork.
Beschrijf de hulpprogramma's van uw connector (mcpToolDescription)
Elke remoteMcpServer verbindingslijn moet een mcpToolDescription object bevatten. De geneste file eigenschap verwijst naar een JSON-bestand met de beschrijving van het hulpprogramma dat u in uw .zip pakket verpakt en waarnaar u verwijst via een relatief pad vanaf de pakkethoofdmap. Als u dit weglaat mcpToolDescription, wordt de upload door de pakketdienst geweigerd met een HTTP 400-fout:
Vereiste eigenschappen ontbreken in object: mcpToolDescription.
"remoteMcpServer": {
"mcpServerUrl": "https://api.contoso.com/legal/mcp",
"mcpToolDescription": {
"file": "./tools/contoso-legal-tools.json"
},
"authorization": {
"type": "OAuthPluginVault",
"referenceId": "A1bC2dE3fH4iJ5kL6mN7oP8qR9sT0u"
}
}
In het bestand waarnaar wordt verwezen (bijvoorbeeld tools/contoso-legal-tools.json) worden de hulpprogramma's beschreven die de connector weergeeft en die aanwezig moeten zijn in het ZIP-pakket. Voeg deze toe aan je manifest.json en skills/ map wanneer je de plugin verpakt.
Ondersteunde verificatietypen
| Verificatietype | Wanneer gebruiken | Gebruikerservaring |
|---|---|---|
None |
Openbare of anonieme API's, interne services | Transparant - geen verificatieprompt |
OAuthPluginVault |
OAuth 2.0 API's (aanbevolen voor productie) | Gebruiker voltooit OAuth-toestemming eenmaal |
ApiKeyPluginVault |
Services op basis van API-sleutels | Gebruiker geeft sleutel eenmaal op |
Opmerking
- Ondersteuning voor API-sleutelverificatie is nog niet beschikbaar in Cowork.
- Als uw MCP-server een API-sleutel vereist, gebruikt
OAuthPluginVaultu in plaats daarvan Dynamic Client Registration of stelt u een eindpunt beschikbaar dat accepteertNone.
Voor OAuthPluginVault en ApiKeyPluginVault, de referenceId verwijzingen naar referenties die zijn opgeslagen in de Microsoft Enterprise Token Store - geheimen worden nooit weergegeven in het manifest- of vaardigheidsbestand. De referenceId waarde is de OAuth-clientregistratie-id die u maakt wanneer u een OAuth-client registreert bij Agents Toolkit.
Belangrijk
Wanneer u uw OAuth-client registreert, stelt u het gebruik per organisatie in op Elke Microsoft 365-organisatie om ervoor te zorgen dat uw invoegtoepassing op alle tenants werkt.
MCP-verificatie
Raadpleeg Verificatie configureren voor MCP- en API-invoegtoepassingen in agents in Microsoft 365 Copilot voor installatie- en configuratiedetails als u OAuth of ApiKey wilt gebruiken voor verificatie.
Dynamic Client Registration
Als uw MCP-server Dynamic Client Registration (DCR) ondersteunt, hoeft u geen authentication configuratie uit de connectordefinitie weg te laten en maakt Cowork automatisch een OAuth-client namens uw plugin.
U kunt het authorization object weglaten, maar u moet nog steeds .mcpToolDescription Configureer de URL van uw MCP-server en de beschrijving van de tool, en Cowork zorgt voor de OAuth-client:
"remoteMcpServer": {
"mcpServerUrl": "https://api.contoso.com/legal/mcp",
"mcpToolDescription": {
"file": "./tools/contoso-legal-tools.json"
}
}
Stap 4: Het manifest maken
Maak manifest.json in de hoofdmap van het pakket:
{
"$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": "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" }
]
}
Voeg de volgende onderdelen toe om een connector toe te voegen 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",
"mcpToolDescription": {
"file": "./tools/contoso-legal-tools.json"
},
"authorization": {
"type": "OAuthPluginVault",
"referenceId": "A1bC2dE3fH4iJ5kL6mN7oP8qR9sT0u"
}
}
}
}
]
}
In de configuratie referenceId van de connector moet de OAuth-registratie-id staan en mcpToolDescription.file moet deze verwijzen naar een JSON-bestand met een beschrijving van het hulpprogramma dat is opgenomen in het ZIP-pakket.
Belangrijk
Het manifestschema van v1.28 is streng: het wordt in de hoofdmap ingesteld additionalProperties: false , dus elk veld dat niet in het schema is gedefinieerd, wordt geweigerd. Velden die geldig zijn in standaard Teams-app-manifesten, zoals packageName, zorgen ervoor dat het uploaden mislukt met een fout zoals Property 'packageName' has not been defined and the schema does not allow additional properties. Alleen de hier getoonde velden opnemen.
Stap 5: Pictogrammen toevoegen
Maak twee PNG-pictogrammen:
| Pictogram | Grootte | Doel |
|---|---|---|
color.png |
192×192 px | Pictogram voor app in kleur weergegeven in Store en lijst met apps |
outline.png |
32×32 px | Overzichtspictogram in één kleur voor compacte weergaven |
Als u nog geen pictogrammen hebt, atk import openplugin genereert u tijdelijke aanduidingen met een effen kleur. Vervang ze voordat u ze bij de Store indient.
Stap 6: Pakket
Een ZIP-bestand maken met alle inhoud op hoofdniveau:
contoso-legal-tools.zip
├── manifest.json
├── color.png
├── outline.png
├── tools/
│ └── contoso-legal-tools.json # Referenced by mcpToolDescription (connectors only)
└── skills/
└── contract-analysis/
├── SKILL.md
└── references/
└── clause-taxonomy.md
Als het pakket een agentConnectors vermelding bevat, voegt u het JSON-bestand met de hulpprogrammabeschrijving waarnaar wordt verwezen door mcpToolDescription.file. Vaardigheidspakketten hebben geen map nodig tools/ .
Windows (PowerShell):
Compress-Archive -Path manifest.json, color.png, outline.png, tools, skills -DestinationPath contoso-legal-tools.zip
macOS/Linux:
zip -r contoso-legal-tools.zip manifest.json color.png outline.png tools/ skills/
Microsoft 365 Agents Toolkit gebruiken
atk package --manifest-file ./appPackage/manifest.json \
--output-package-file ./appPackage/build/appPackage.zip \
--output-folder ./appPackage/build
Stap 7: test
Als u uw app wilt testen, uploadt u het app-pakket naar Teams, zoals beschreven in Uw app uploaden naar Teams.
Voor persoonlijke tests kunt u de app sideloaden met behulp van de opdrachtregelinterface van de Microsoft 365 Agents Toolkit:
Installeren
@microsoft/m365agentstoolkit-clivanafnpm:npm install -g @microsoft/m365agentstoolkit-cliControleer de installatie door het volgende uit te voeren:
atk --versionVerifiëren met uw Microsoft 365-werkaccount:
atk auth loginMeld u aan bij uw werkaccount en installeer het agentpakket. Vervang het bestandspad door de locatie van het ZIP-pakket:
atk install --file-path "C:/Users/myuser/myPackage.zip" --scope PersonalEen geslaagde installatie retourneert uitvoer met een
TitleIdenAppIdvoor uw account.Sla deze id's op voor later gebruik wanneer u bijwerkt of verwijdert.
Meer informatie vindt u in de opdrachtregelinterface van de Microsoft 365 Agents Toolkit.
Stap 8: Publiceren naar uw tenant
- M365-beheercentrum> openenApps> beherenAangepaste app uploaden.
- Selecteer de knop met de drie puntjes (...)>Agent toevoegen.
- Upload uw
.zippakket. - Open Cowork>Bronnen &invoegtoepassingen voor vaardigheden>. Uw invoegtoepassing wordt weergegeven in de sectie Ontdekken .
Stap 9: publiceren voor het publiek
Voor invoegtoepassingen die zijn bedoeld voor openbare distributie, dient u uw invoegtoepassing in bij de Microsoft 365 App Store via het Partnercentrum. Meer informatie in Agents publiceren voor Microsoft 365 Copilot.
Een connector testen met een lokale MCP-server
Voor connectors is een HTTPS mcpServerUrlvereist. Als u een server wilt testen die op uw computer wordt uitgevoerd, moet u deze dus weergeven via een openbare HTTPS-URL.
Dev-tunnels bieden een relais waarmee TLS voor je wordt afgesloten.
devtunnel port create <tunnel> -p <port> --protocol http
Belangrijk
Gebruik --protocol http, niet https. De --protocol vlag beschrijft de lokale service waarnaar de tunnel wordt doorgestuurd, niet de URL van de openbare tunnel. De meeste lokale MCP-servers spreken gewoon HTTP, dus als u instelt --protocol https terwijl uw server HTTP bedient, retourneert elke aanvraag door de tunnel een 502 fout. De relay beëindigt TLS en levert de openbare URL via HTTPS, ongeacht deze vlag.
Problemen oplossen
| Symptoom | Oorzaak | Oplossing |
|---|---|---|
Elke getunnelde aanvraag komt terug 502 en de lokale server spreekt HTTP |
devtunnel port create werd uitgevoerd met --protocol https |
Maak de poort opnieuw met --protocol http |
Getunnelde verzoeken keren terug 502 op macOS zelfs als de lokale server actief is |
De server is gebonden aan 0.0.0.0 (IPv4-only), maar de tunnel belt localhost, wat eerst wordt omgezet in ::1 (IPv6) |
Bind de server eraan zodat :: deze zowel IPv4- als IPv6-verbindingen accepteert |
Uploaden is mislukt met Required properties are missing from object: mcpToolDescription |
De connector ontbreekt mcpToolDescription |
Voeg mcpToolDescription dat bestand toe met een file referentie en verpak het in de ZIP-indeling |
Uploaden is mislukt met Property '<field>' has not been defined and the schema does not allow additional properties |
Het manifest bevat een veld dat niet is toegestaan in het v1.28-schema (bijvoorbeeld packageName) |
Verwijder het veld; In het v1.28-schema wordt gebruikgemaakt van additionalProperties: false |
Verpakkingspatronen
Kies het patroon dat bij jouw extensie past:
Alleen Skills (geen connector)
Geschikt voor werkstromen op basis van prompts, documentanalyse en hulp bij het schrijven.
my-skills-pack.zip
├── manifest.json # agentSkills only, no agentConnectors
├── color.png
├── outline.png
└── skills/
├── skill-one/SKILL.md
└── skill-two/SKILL.md
Vaardigheden + externe connector
Ideaal voor gegevensanalyse, API-integraties en bedrijfssystemen.
my-data-skills.zip
├── manifest.json # agentSkills + agentConnectors
├── color.png
├── outline.png
├── tools/ # Tool-description file(s) for mcpToolDescription
│ └── my-connector.json
└── skills/
├── analysis-workflow/SKILL.md
└── reporting-workflow/SKILL.md
Alleen Connector (geen aangepaste vaardigheden)
Gebruik deze optie voor gegevensbronnen die al kunnen worden gebruikt met de ingebouwde vaardigheden van Cowork.
my-connector.zip
├── manifest.json # agentConnectors only, no agentSkills
├── color.png
├── outline.png
└── tools/ # Tool-description file(s) for mcpToolDescription
└── my-connector.json
Geïmporteerde Claude Code of Cursor-invoegtoepassing
Gebruik deze optie voor bestaande plug-ins van andere AI-hulpprogramma's die gericht zijn op Cowork.
atk import openplugin --path ./claude-plugin --output ./my-plugin-project \
--privacy-url https://contoso.com/privacy \
--terms-url https://contoso.com/terms
Best practices voor het maken van vaardigheden
Volg deze richtlijnen om vaardigheden te ontwikkelen die betrouwbaar activeren en consistente resultaten produceren.
Effectieve beschrijvingen schrijven
Het description veld bepaalt wanneer de agent je vaardigheid activeert. Wees specifiek:
# 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.
Effectieve werkstromen schrijven
- Wees specifiek in de beschrijving. Voeg triggerzinnen toe: "Gebruik wanneer de gebruiker vraagt om..." Met deze beschrijving bepaalt de agent welke vaardigheid moet worden geactiveerd.
- Structureer als een workflow. De stappen nummeren. Elke stap moet worden toegewezen aan een concrete actie (een bestand lezen, een tool aanroepen, uitvoer genereren).
- Uitvoerformaat definiëren. Geef de exacte tabel-, lijst- of documentstructuur weer die gebruikers mogen verwachten. Deze definitie verbetert de consistentie drastisch.
-
Verwijs naar hulpmiddelen op naam. Als uw vaardigheid afhankelijk is van verbindingslijngereedschappen, noem ze dan expliciet: "Gebruik het
search_case_lawhulpprogramma om..." -
Houd de hoofd SKILL.md slank. Verplaats gedetailleerd referentiemateriaal naar de
references/submap. Het vaardigheidslichaam moet de workflow zijn, geen encyclopedie.
Veelvoorkomende fouten vermijden
-
Sluit geen geheimen in
SKILL.mdbestanden in. GebruikagentConnectorsmet verificatie voor API-referenties. - Dupliceer ingebouwde vaardigheden niet. Controleer de ingebouwde lijst met vaardigheden voordat u gaat bouwen.
- Maak vaardigheden niet te breed. "Alles doen met juridische documenten" is erger dan specifieke vaardigheden voor "contractanalyse", "clausule-extractie" en "juridisch onderzoek".
- Codeer bestandspaden of systeemopdrachten niet hardcodeer . Vaardigheden moeten overdraagbaar zijn in verschillende omgevingen.
-
Zet niet alles in SKILL.md. Als uw lichaam meer dan ~3.000 woorden bevat, verplaatst u gedetailleerde inhoud naar
references/.
Validatieregels
Wanneer u uw pakket indient, valideert het platform het op meerdere niveaus. Corrigeer deze fouten voordat u ze inzendt om afwijzing te voorkomen.
Validatie op manifestniveau
| Code | Regel | Ernst |
|---|---|---|
| ASKILL-M001 |
folder is vereist voor elke agentSkills invoer |
Error |
| ASKILL-M002 |
agentSkills matrix kan maximaal 20 items bevatten |
Error |
| ASKILL-M003 |
folder Pad kan maximaal 256 tekens bevatten |
Error |
Validatie op pakketniveau
| Code | Regel | Algemene oplossing | Ernst |
|---|---|---|---|
| ASKILL-P001 | Map waarnaar in manifest wordt verwezen, bestaat in ZIP | Controleer uw ZIP-structuur | Error |
| ASKILL-P002 | Map bevat een SKILL.md bestand |
Ontbrekende toevoegen SKILL.md |
Error |
| ASKILL-P003 |
SKILL.md heeft geldige YAML-frontmatter tussen --- scheidingstekens |
YAML-syntaxis corrigeren | Error |
| ASKILL-P004 | Frontmatter includes name field |
Toevoegen name: aan frontmatter |
Error |
| ASKILL-P005 | Frontmatter includes description field |
Toevoegen description: aan frontmatter |
Error |
| ASKILL-P006 |
name Komt overeen met de mapnaam (laatste padsegment) |
De naam van een map wijzigen of een oplossing name: |
Error |
| ASKILL-P007 |
name is kebab-case |
Gebruik my-skill niet MySkill of my_skill |
Error |
| ASKILL-P008 | Geen dubbele folder waarden in de matrix |
Dubbele waarden verwijderen | Error |
Validatie van connector
| Regel | Ernst |
|---|---|
Voor elke verbindingslijn is een id en displayName |
Error |
Alle verbindingswaarden id in het manifest moeten uniek zijn |
Error |
Precies één van plugin of remoteMcpServer |
Error |
mcpServerUrl moet een geldige HTTPS-URL zijn |
Error |
mcpToolDescription vereist op elk remoteMcpServer, met a file die bestaat in de ZIP |
Error |
authorization.referenceId Vereist, tenzij type_getal None |
Error |
authorization.referenceId Mag niet aanwezig zijn bij type None |
Error |
Validatie van begeleidende bestanden
De portal valideert begeleidende bestanden (referentiemateriaal, scripts en andere bestanden SKILL.md) op het moment van uploaden en synchroniseren:
| Regel | Ernst |
|---|---|
Maximaal 20 companion-bestanden per vaardigheid (met uitzondering van SKILL.md) |
Error |
| Elk begeleidend bestand mag niet groter zijn dan 5 MB | Error |
| Het totale aantal companion-bestanden moet 10 MB of kleiner zijn per vaardigheid | Error |
| Bestandspaden moeten relatief zijn (geen absolute paden) | Error |
Geen padtraversalsegmenten (..) |
Error |
| Geen backslashes of null-bytes in bestandsnamen | Error |
Geen verborgen bestanden (namen die beginnen met .) |
Error |
Geen gereserveerde namen in Windows (CON, , AUXPRN, NUL, COM1–COM9, LPT1–LPT9) |
Error |
Bestandsnamen mogen alleen veilige tekens bevatten (alfanumeriek, streepjes, onderstrepingstekens, punten, spaties, !) |
Error |
Compatibiliteit met meerdere platforms
Skills maken gebruik van de open standaard van Agent Skills. Dezelfde SKILL.md bestanden werken in meerdere AI-hulpprogramma's:
| Platform | Compatibiliteit |
|---|---|
| Claude Code | Volledig dezelfde SKILL.md indeling |
| Claude.ai Projecten | Volledige vaardigheden kunnen worden geüpload als projectbestanden |
| VS-code/GitHub Copilot | Full-Agent Vaardigheden die worden ondersteund in de agentmodus |
| Gemini CLI | Full-Agent Ondersteunde vaardigheden |
| JetBrains Junie | Full-Agent Ondersteunde vaardigheden |
| OpenAI Codex | Full-Agent Ondersteunde vaardigheden |
| Cursor | Full-Agent Ondersteunde vaardigheden |
Als je vaardigheden ontwikkelt voor zowel Claude Code als Cowork, begin dan met de Claude Code-plug-instructuur - het is de superset:
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)
Importeer het vervolgens in een M365-project wanneer u klaar bent om te publiceren naar de Microsoft 365 App Store:
atk import openplugin --path ./my-plugin --output ./my-plugin-project \
--privacy-url https://contoso.com/privacy \
--terms-url https://contoso.com/terms
MCP-annotatie- en bevestigingsbeheer
Copilot Cowork leest het standaard MCP-object annotations op hulpprogramma's waarvan tools/listuw server retourneert en gebruikt dit om te bepalen of een hulpprogramma-aanroep door de gebruiker moet worden bevestigd en welk label moet worden weergegeven op de prompt.
Beschikbare velden
| Veld | Type | Werking |
|---|---|---|
readOnlyHint |
bool |
false: bevestiging vereist voordat het hulpprogramma wordt uitgevoerd. |
destructiveHint |
bool |
true: bevestiging vereist voordat het hulpprogramma wordt uitgevoerd. |
title |
tekenreeks | Voor mensen leesbaar label dat wordt weergegeven in het bevestigingsdialoogvenster. Valt terug op de naam van het hulpprogramma wanneer dit afwezig is. |
Bevestigingsregels
Bevestiging is vereist als readOnlyHint == false of destructiveHint == true.
Voor alle gereedschappen moeten veiligheidsannotaties zijn opgegeven. Gereedschappen zonder aantekeningen worden als destructief beschouwd en moeten worden bevestigd. Meer informatie vindt u in de MCP-schemaverwijzing.
MCP-voorbeelden
Een destructieve actie met een vriendelijk label:
{
"name": "send_email",
"description": "Send an email message.",
"annotations": {
"title": "Send Email",
"destructiveHint": true
},
"inputSchema": { ... }
}
Veilig lezen die automatisch wordt uitgevoerd:
{
"name": "search_docs",
"annotations": {
"title": "Search Documents",
"readOnlyHint": true
}
}
Wat is er nu beschikbaar
- Microsoft-hulpprogramma's (Graph, Dataverse en andere) worden afgesloten door het ingebouwde beleid van Cowork, ongeacht annotaties.
- Voor MCP-servers die niet van Microsoft zijn, wordt bevestiging op basis van aantekeningen geleidelijk uitgerold. Het instellen van de hints is nu compatibel met de toekomst en bevestigingsprompts verschijnen wanneer de implementatie wordt uitgebreid, zonder dat er een wijziging van de ontwikkelaar nodig is.
Accepteer bestanden uit de Cowork-werkruimte
Een connector-tool kan een bestand uit de Cowork-sessie van de gebruiker als invoer gebruiken: een document dat de gebruiker heeft bijgevoegd, een e-mailbijlage die als Cowork is opgeslagen of een bestand dat een eerdere stap heeft geproduceerd. Declareer de parameter met het standaard JSON-schemasleutelwoord contentEncoding: base64 en Cowork handelt de rest af. Er is geen Microsoft-specifieke schema-extensie vereist en het API-oppervlak van uw server verandert niet.
Cowork lost het werkruimtebestand op en codeert het met base64 voordat je de server aanroept, zodat bestandsbytes nooit in de context van de agent terechtkomen. De agent ziet en verzendt alleen werkruimtebestandspaden.
Opmerking
Geef de agent niet de opdracht om zelf een base64-bestand te coderen en plak de blob in een toolaanroep. Hiermee wordt het hele bestand in de context van het model geladen en het is afhankelijk van de manier waarop het model de blob exact reproduceert. Het lijkt te werken bij kleine testbestanden en werkt niet bij echte.
Een bestandsparameter declareren
Een tekenreekseigenschap wordt contentEncoding: base64 herkend als een bestandsinvoer:
{
"name": "analyze_contract",
"description": "Extract key terms from a contract document.",
"annotations": {
"title": "Analyze Contract",
"readOnlyHint": true
},
"inputSchema": {
"type": "object",
"properties": {
"document": {
"type": "string",
"contentEncoding": "base64",
"description": "The contract file to analyze."
},
"jurisdiction": {
"type": "string",
"description": "Two-letter country code governing the contract."
}
},
"required": ["document"]
}
}
Een matrix van dergelijke tekenreeksen wordt ook herkend voor hulpprogramma's die meerdere bestanden accepteren:
"attachments": {
"type": "array",
"items": { "type": "string", "contentEncoding": "base64" },
"description": "Receipt images to attach to the expense line."
}
Wat de agent ziet
Voor bestandsparameters die op het hoogste niveau zijn inputSchema.propertiesgedeclareerd, vervangt Cowork deze in het modelgerichte schema door een enkele direct_attachment_file_paths array - dezelfde parameter die de ingebouwde tools van Cowork gebruiken, zodat de agent al weet hoe deze moet worden ingevuld. Het bovenstaande schema wordt aan de agent gepresenteerd als:
{
"type": "object",
"properties": {
"direct_attachment_file_paths": {
"type": "array",
"items": { "type": "string" },
"description": "Workspace file paths to attach."
},
"jurisdiction": { "type": "string" }
}
}
Als uw hulpprogramma meer dan één bestandsparameter op het hoogste niveau declareert, worden deze allemaal samengevouwen in die ene direct_attachment_file_paths matrix. Op het moment van aanroepen verspreidt Cowork de opgeloste bestanden terug naar uw oorspronkelijke parameternamen in declaratievolgorde.
Geneste bestandsparameters
Een bestandsparameter die is genest in een object of een matrix van objecten wordt ook ondersteund en wordt op verschillende manieren verwerkt: in plaats van samengevouwen te worden, wordt deze op zijn plaats herschreven in een padtekenreeks op zijn eigen locatie. Hierdoor blijft de koppeling tussen een bestand en de bijbehorende velden behouden, bijvoorbeeld één factuur per onkostenregel:
"line_items": {
"type": "array",
"items": {
"type": "object",
"properties": {
"amount": { "type": "number" },
"receipt": { "type": "string", "contentEncoding": "base64" }
}
}
}
De agent vult line_items[].receipt een werkruimtepad en Cowork wisselt elk pad voor base64-inhoud voordat de oproep wordt doorgeschakeld.
Het nestelen wordt doorkruist tot een diepte van vier niveaus onder de top van inputSchema.
$ref Pointers aren't follow - Definieer bestandsparameters inline in plaats van achter een $ref.
Wat uw server ontvangt
Uw server ontvangt een gewone tools/call met uw oorspronkelijke parameternamen ingevuld met inhoud die is gecodeerd met base64:
{
"method": "tools/call",
"params": {
"name": "analyze_contract",
"arguments": {
"document": "JVBERi0xLjQKJcfsj6IKNSAwIG9iago8PC9MZW5...",
"jurisdiction": "US"
}
}
}
Uw server hoeft niet te weten dat de agent een op paden gebaseerde interface heeft gebruikt en hulpprogramma's die geen parameters declareren contentEncoding: base64 , worden niet beïnvloed.
Limieten
| Limiet | Waarde |
|---|---|
| Files per tool call | 8 |
| Grootte per bestand | 150 MiB |
| Totale grootte per gereedschapsoproep | 150 MiB |
| Parameters voor matrixbestanden per hulpprogramma | 1 (combineer het met een willekeurig aantal scalaire bestandsparameters) |
| Maximale nestdiepte | 4 niveaus onder de bovenkant van inputSchema |
Een aanroep die het aantal bestanden overschrijdt of een groottelimiet mislukt met een hulpprogrammafout en bereikt uw server nooit. Bepaal de grootte van uw API en de time-outs met het plafond van 150 MiB in gedachten: base64 blaast de payload met ongeveer een derde op ten opzichte van de onbewerkte bestandsgrootte en de gecodeerde inhoud wordt verzonden in de JSON-RPC-aanvraagtekst.
Aanbevelingen
- Beschrijf de parameter voor een menselijke lezer. De agent bepaalt aan de hand van de beschrijving welk bestand bij welke parameter hoort. Werkt bijvoorbeeld
"The signed contract PDF to analyze"beter dan"file". - Vermeld in de beschrijving van de parameter welke notaties u accepteert. Cowork passeert alles wat de gebruiker toevoegt. Valideer het inhoudstype aan jouw kant en retourneer een duidelijke hulpmiddelfout als deze niet bruikbaar is.
- Aantekeningen instellen. Een hulpprogramma dat een bestand ontvangt en hierop bewerkingen uitvoert, is normaal gesproken niet alleen-lezen, zodat om bevestiging wordt gevraagd. Zie MCP-annotatie- en bevestigingsbeheer.
- Houd bestandsparameters inline. Een parameter achter een
$ref, of genest dieper dan vier niveaus, wordt niet herschreven. De server ontvangt een padtekenreeks waar inhoud wordt verwacht. - Declareer ten hoogste één matrixbestandsparameter per hulpprogramma. Met twee of meer gegevens kan Cowork niet zien welk bestand in welke matrix thuishoort, en de aanroep mislukt met een hulpprogrammafout. Gebruik één matrix of meerdere scalaire parameters of een combinatie van scalaire waarden en één matrix.
- Verwacht een exacte telling voor scalaire tools. Als je hulpprogramma alleen scalaire bestandsparameters declareert, moet het aantal bestanden dat de agent doorgeeft overeenkomen met het gedeclareerde aantal. Markeer optionele bestandsparameters duidelijk in hun beschrijvingen, zodat de agent niet te weinig of te veel levert.
Opmerking
Dit mechanisme dateert van vóór het eigen bestandsinvoerwerk van het Model Context Protocol, dat wordt gestandaardiseerd door de MCP File Uploads Working Group. Cowork voegt mogelijk ondersteuning toe voor de gestandaardiseerde vorm van declaratieve bestandsinvoer zodra deze is geland. Het contentEncoding: base64 contract dat hier wordt beschreven, blijft van kracht.
Identificeer het Cowork-verkeer naar uw server
Als uw MCP-server de zichtbaarheid van tools per client poort, of als u het verkeer dat het ontvangt wilt toeschrijven, kunt u verzoeken van Cowork herkennen. Cowork presenteert een stabiele software-identiteit op twee kanalen:
| Kanaal | Waar het wordt weergegeven | Waarde |
|---|---|---|
User-Agent Koptekst van aanvraag |
Elk uitgaand verzoek dat Cowork naar uw server verzendt | copilot-cowork/1.0 |
clientInfoin de MCP-handshake initialize |
Alleen het initialize verzoek |
{ "name": "copilot-cowork", "version": "<version>" } |
Overeenkomsten met het copilot-cowork voorvoegsel
Zorg dat het copilot-coworkvoorvoegsel (niet hoofdlettergevoelig) op een van beide kanalen overeenkomt. Records komen niet overeen met de exacte copilot-cowork/1.0 tekenreeks of een specifiek clientInfo.version. De versie volgt het client-identiteitscontract en zal naar verwachting veranderen; Een overeenkomst met voorvoegsels zorgt ervoor dat uw poort blijft werken bij oneffenheden in de versie.
# Correct: case-insensitive prefix match
copilot-cowork
# Incorrect: exact match breaks when the version changes
copilot-cowork/1.0
Kies het juiste kanaal voor uw poort
De twee kanalen hebben verschillende bereiken, dus sleutel op het kanaal dat overeenkomt met hoe uw server zijn gate afdwingt:
- De
User-Agentheader is aanwezig op elke aanvraag, inclusieftools/listentools/call. Als u poort of kenmerk per aanvraag, sleutel op deze header. -
clientInfowordt alleen verzonden bij deinitializehanddruk. Als je per sessie gate op het moment van verbinding, kun je dit daar lezen, maar het wordt niet herhaald bij latere aanvragen.
Wat de identiteit wel en niet omvat
De identiteitsnamen alleen van de software . Het is hetzelfde voor elke Cowork-gebruiker en -verbinding, en het draagt nooit een gebruikersidentiteit. Gebruikers-id blijft aanwezig in de autorisatiestroom die door de verificatieconfiguratie van de connector wordt gedefinieerd.
| De identiteit omvat | De identiteit omvat geen |
|---|---|
Een stabiele softwarenaam (copilot-cowork) en een contractversie |
Elke tenant-, gebruikers-, sessie- of gespreks-id |
| Dezelfde waarde op elke aanvraag en elke verbinding | Een kwalificatie per connector |
Omdat er geen kwalificatie per connector is, kunt u deze identiteit momenteel niet gebruiken om te bepalen welke connector een oproep heeft gedaan of om een gepubliceerde Microsoft-invoegtoepassing te scheiden van een sideloaded server die naar dezelfde URL wijst. Als u dat onderscheid nodig hebt, dwingt u dit af via de autorisatieconfiguratie van uw connector en niet via de clientidentiteit.
Veelgestelde vragen
Kan ik vaardigheden uit het M365-pakket gebruiken in Claude Code?
Ja. De vaardigheidsmappen bevatten standaard agentvaardigheden. Kopieer ze naar .claude/skills/ in een willekeurig Claude Code-project of voer ze uit atk export openplugin om het hele project terug te converteren naar een Claude Code-plug-in.
Heb ik een externe connector nodig?
Nee. Vaardigheidspakketten werken goed voor op prompts gebaseerde workflows. Connectors zijn alleen nodig wanneer voor uw vaardigheid live gegevens uit een extern systeem moeten worden opgeslagen.
Waarin verschillen plug-in-vaardigheden van ingebouwde vaardigheden?
Plugin-vaardigheden verschijnen met de bron "package" in de API. Ze kunnen ingebouwde vaardigheden met dezelfde naam niet vervangen. Door Beheer geïmplementeerde pakketten tonen isAdminDeployed: true.
Kunnen IT-beheerders bepalen welke plug-ins beschikbaar zijn?
Ja. Standaard M365-beheerelementen zijn van toepassing: lijsten voor toestaan/blokkeren op tenantniveau, door beheerders beheerde implementaties en nalevingsbeleid.
Wat gebeurt er als een plugin wordt ingetrokken?
Bij de volgende synchronisatiecyclus worden de vaardigheden en connectors uit dit pakket verwijderd uit de sessie van de gebruiker. Actieve gesprekken worden niet onderbroken, maar nieuwe sessies hebben niet de mogelijkheden van het pakket.
Wat is het maximum aantal vaardigheden per pakket?
Twintig (20) vaardigheden (per ASKILL-M002). Voor connectors is de limiet 10 per pakket.
Kunnen vaardigheden verwijzen naar connectortools uit hetzelfde pakket?
Ja, en dat zouden ze ook moeten doen. Geef de hulpprogramma's expliciet een naam in uw SKILL.md werkstroom (bijvoorbeeld 'Gebruik het search_case_law hulpprogramma om...'). De agent verbindt ze tijdens runtime.
Kunnen de tools van mijn plugin bestanden uit de Cowork-werkruimte accepteren?
Ja. Declareer de toolparameter met contentEncoding: base64, en Cowork zet het werkruimtebestand van de gebruiker om naar base64-inhoud voordat u uw server belt. Het model passeert bestandspaden, niet bestandsinhoud, zodat grote bestanden de context van het model niet gebruiken. Meer informatie over declaraties en limieten vindt u in Bestanden accepteren uit de werkruimte Cowork.
Hoe kan ik een deterministische GUID genereren voor mijn pakket?
atk import openplugin gebruikt UUID v5 (gebaseerd op SHA-1) van de naam van uw plugin. Als u de import tweemaal uitvoert, levert u dezelfde GUID op. Om je eigen in te stellen, passeer --app-idje . Gebruik een willekeurige GUID-generator voor handmatig verpakken. Zorg ervoor dat deze stabiel is in alle versies.