Telvine Learn

How to Build a Plugin for Anthropic Claude Cowork (and Claude Code)

A practical guide to building an Anthropic Claude plugin: package a SKILL.md capability, install it, trigger it, and measure how it performs.

This guide walks through how to build a plugin for Anthropic Claude Cowork (the same packaging approach applies to Claude Code). Cowork is an agent harness - the runtime that runs plugin capabilities on real work. Your plugin is the app; a Skill is a capability inside it.

If you're new to the concept, start with what an agent plugin is.

Step 1 — Write the SKILL.md

A Cowork Skill is a directory with a SKILL.md. The frontmatter tells Cowork when to trigger it:

---
name: month-end-close
description: >
  Use this skill when the user asks to "run the month-end close",
  "reconcile the bank accounts", or "prepare the close pack".
  Reconciles accounts, reviews accruals, and produces a close pack.
---
 
# Month-end close
## Steps
1. Confirm the period and locate the data.
2. Reconcile each bank account; list exceptions.
3. Produce a close pack. Propose journals — never post them.

See the SKILL.md template for a fuller scaffold.

Step 2 — Package it as a plugin

In Cowork, Skills are distributed inside plugins - a folder with a .claude-plugin/plugin.json manifest plus your skills/ directory:

my-plugin/
├── .claude-plugin/plugin.json
└── skills/
    └── month-end-close/
        └── SKILL.md
{
  "name": "my-plugin",
  "version": "0.1.0",
  "description": "What this plugin does."
}

Step 3 — Install and trigger it

Install the plugin in Cowork, then describe the task the way a real user would — you don't click a "run" button. If your description is good, Cowork loads the Skill automatically:

"Run the month-end close for May and flag any exceptions."

If it doesn't trigger, the fix is almost always the description: add the exact phrases users say.

Step 4 — Connect data and tools

Cowork Skills can use connected tools (via MCP connectors) and bundled scripts. Pull data from a connected source when one is available; otherwise have the Skill ask for the files it needs. Keep deterministic steps in scripts/.

Step 5 — Measure it

Once people are using your plugin, you'll want to know what's happening inside it: which capability is invoked, where it errors, how long it takes, and whether your latest version is better than the last. Wrap each Skill's telemetry with Telvine - invocations, errors, and feedback, with no user content collected - and a live dashboard shows real usage.

This closes the loop: build → ship → measure → improve.

Frequently asked questions

Is a Claude Cowork Skill different from a Claude Code Skill? They share the SKILL.md format. Cowork targets non-developer knowledge work; Claude Code targets the terminal. A well-written Skill often works in both.

How do I distribute a Skill to my team? Package it as a plugin and share the .plugin file (or a marketplace). Teammates install it once and it triggers automatically.

Why isn't my Skill triggering? The description is too vague or doesn't match how users phrase the request. Iterate on it first.

Next steps

On this page