How to Build a Microsoft 365 Copilot Cowork Plugin
Build a Microsoft 365 Copilot Cowork plugin with Skills, connectors, a Microsoft 365 app package, and Telvine telemetry for usage, errors, and version impact.
This guide explains how to build a Microsoft 365 Copilot Cowork plugin and measure it with Telvine. A Cowork plugin is packaged as a Microsoft 365 app and can include Skills, connectors, or both.
Microsoft currently documents Copilot Cowork plugins as Frontier functionality. Treat the details as preview-era: verify the latest Microsoft Cowork plugin docs and Cowork plugin development docs before shipping.
1. Define the plugin product
Start with the plugin, not the Skill:
- Name: the product users install.
- Audience: the team or tenant segment that needs it.
- Job: the work it helps Cowork perform.
- Skills: the task-specific capabilities it exposes.
- Connectors: the data or systems it needs.
- Telemetry: the plugin and capability events you will emit to Telvine.
Example: an invoice-ops plugin could contain a reconciliation Skill, a collections email Skill, and a connector to an accounting system.
2. Choose the Cowork plugin shape
Cowork plugins can contain Skills, connectors, or both:
| Shape | Use it when | Telvine view |
|---|---|---|
| Skill-only plugin | Cowork can do the job from instructions and user-provided context | Measure Skill invocations, outcomes, latency, feedback |
| Connector-only plugin | Cowork needs access to external data or actions | Measure connector health and dependency failures |
| Skill plus connector | The Skill orchestrates a job using external systems | Measure the full capability path: Skill, connector, outcome |
3. Package it as a Microsoft 365 app
Microsoft's development flow uses a Microsoft 365 app package and an app manifest for Cowork plugin metadata. Keep a source plugin folder that separates product metadata, Skills, connector code, and telemetry:
invoice-ops/
├── manifest.json
├── skills/
│ └── reconcile-invoices/
│ └── instructions.md
├── connectors/
│ └── accounting-api/
└── telemetry/
└── telvine-events.md
The exact manifest schema and tooling can change while Cowork remains Frontier. The durable architecture is the same: one plugin product, several capabilities, one telemetry contract.
4. Add Telvine telemetry
Emit events where you control code:
- Backend endpoints that serve connector operations.
- Middleware around API calls.
- Skill orchestration code, if the host exposes it.
- Admin or deployment automation that knows when a plugin version is installed or updated.
Use plugin-level events for distribution and component-level events for runtime behavior:
{
"event_type": "plugin.component.invoked",
"plugin_id": "plg_invoiceops",
"version": "1.2.0",
"runtime": "cowork",
"properties": {
"component_type": "connector",
"component_name": "accounting-api",
"operation": "tool_called",
"duration_ms": 240
}
}
Never send prompts, documents, messages, connector payloads, retrieved records, or tool arguments. Send metadata only.
5. Publish and compare versions
Once the plugin is ready:
- Package the Microsoft 365 app.
- Deploy it to a controlled audience.
- Register the plugin version and component inventory in Telvine.
- Watch Skill and connector behavior.
- Compare the new version against the previous version before expanding rollout.
With Telvine, the plugin release loop is:
npm i -g @telvine/cli
telvine login
telvine init
telvine publish ./my-copilot-cowork-plugin