Telvine Learn

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:

ShapeUse it whenTelvine view
Skill-only pluginCowork can do the job from instructions and user-provided contextMeasure Skill invocations, outcomes, latency, feedback
Connector-only pluginCowork needs access to external data or actionsMeasure connector health and dependency failures
Skill plus connectorThe Skill orchestrates a job using external systemsMeasure 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:

  1. Package the Microsoft 365 app.
  2. Deploy it to a controlled audience.
  3. Register the plugin version and component inventory in Telvine.
  4. Watch Skill and connector behavior.
  5. 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

Next steps

On this page