Cursus
Elke maandag opent iemand Claude, plakt dezelfde 40 regels context over het warehouse en vraagt om dezelfde weekcijfers. Tegen dinsdag is die context weg en plakt de volgende analist een iets andere versie. Een plugin helpt dit soort taken consistent en controleerbaar te houden.
Aan het eind van deze tutorial heb je een plugin in Claude Cowork geïnstalleerd, hem aangepast voor je eigen tabellen en er zelf een werkende vanaf nul gebouwd.
Je hebt 2 dingen nodig: een betaald Claude-abonnement (Pro, Max, Team of Enterprise) en de Claude-desktopapp voor macOS of Windows, wat je ook in de screenshots ziet. Geen terminal en geen Python nodig. Ik noem de command-line route voor wie dat fijn vindt, maar het is optioneel.
Eén heads-up voordat we beginnen. Op 16 september 2026 begon Anthropic met het samenvoegen van Chat en Cowork tot één Claude voor Pro- en Max-accounts, dus je berichtvenster toont mogelijk niet langer een aparte Cowork-optie. De pagina Aanpassen, waar plugins leven, is in beide gevallen hetzelfde, en ik noem onderweg de exacte menulabels.
Wil je deze stappen liever oefenen met begeleide opdrachten? DataCamp's cursus Building Claude Cowork Plugins leidt je door installeren, aanpassen en je eigen plugin bouwen, zonder code te schrijven.
In een notendop
- Een Cowork-plugin is een map met Markdown en JSON die Claude een taak aanleert.
- Je installeert er één vanaf de pagina Aanpassen in een paar klikken.
- Plugins zijn eenvoudig aan te passen via de optie Edit with Claude.
- Je kunt ook een Cowork-plugin bouwen door 2 korte skill-bestanden, een manifest met 6 velden en een connectorbestand te schrijven, de map te zippen en te uploaden.
- Om plugins met je team te delen, push je ze naar een GitHub-repo met een marketplace.json-bestand en voeg je de marketplace toe, of gebruik je Publish to org voor Team/Enterprise-accounts.
Wat zijn Claude Cowork-plugins?
Een Claude Cowork-plugin is een installeerbaar pakket dat alles bundelt wat Claude nodig heeft om als specialist te werken. Het bevat zaken als workflow-skills, de slashopdrachten, geschikte connectors en de nodige sub-agents en hooks. Anthropic's lancering vat het in één zin samen:
"Plugins laten je alle skills, connectors, slashopdrachten en sub-agents bundelen om Claude te veranderen in een specialist voor jouw rol, team en bedrijf."
Plugins kwamen op 30 januari 2026 naar Cowork, als onderzoeksvoorvertoning voor betalende gebruikers, samen met 11 open-source plugins gebouwd door teams van Anthropic zelf. Een tweede golf op 24 februari 2026 voegde HR-, design-, engineering-, operations- en financiële-analyse-plugins toe, 4 plugins voor financiële dienstverlening, partnerplugins van Slack, S&P Global en LSEG, en gestructureerde formulieren voor slashopdrachten. Cowork verliet zelf de preview en werd algemeen beschikbaar op 9 april 2026.
Waar plugins draaien, zorgt vaak voor verwarring, dus hier is het huidige antwoord uit Anthropic's helpcentrum-artikel over plugins. Een plugin die je toevoegt wordt opgeslagen bij je Claude-account, niet op je computer, en reist dus met je mee naar chat op het web, de desktopapp, Cowork en Claude Code (versie 2.1.273 of later synchroniseert automatisch). Skills en opdrachten werken op al die plekken, terwijl hooks en sub-agents alleen in Cowork en Claude Code draaien en in chat grijs getoond worden.
Als je Cowork zelf nog niet gebruikt hebt, loopt onze Claude Cowork-tutorial door de app heen, en de vergelijking Claude Cowork versus Claude Code legt uit waarom dezelfde plugin in de ene meer kan dan in de andere. Ik leg Cowork hier niet opnieuw uit.
Wat een plugin bundelt
De onderstaande tabel geeft de 5 componenten die een plugin kan bevatten, wat elk doet en wanneer het afgaat.
|
Component |
Wat het doet |
Wanneer het afgaat |
|
Skill |
Een |
Automatisch, wanneer Claude oordeelt dat de taak past bij de beschrijving van de skill. Je kunt hem ook op naam draaien na |
|
Slashopdracht |
Een benoemde actie met eigen instructies, zoals |
Handmatig, wanneer je hem typt. In Cowork kan Claude eerst een gestructureerde vraag stellen. |
|
Connector (MCP) |
Een koppeling naar een externe service via het Model Context Protocol (MCP): Snowflake, BigQuery, Slack en honderden meer |
Wanneer Claude een van de tools van de service aanroept, nadat je de service één keer verbonden hebt. |
|
Sub-agent |
Een specialist aan wie Claude een deel van een taak kan delegeren, met eigen prompt en lijst met tools |
Wanneer Claude besluit te delegeren. Alleen Cowork en Claude Code. |
|
Hook |
Een script of prompt die draait bij een sessiegebeurtenis, zoals vlak voor een toolcall |
Op die gebeurtenis, elke keer. Alleen Cowork en Claude Code. |
Skills gaan af wanneer Claude ze relevant acht, en opdrachten gaan af wanneer je / typt. Dat onderscheid bepaalt wat je moet checken als een plugin niets lijkt te doen; daar kom ik op terug in de verificatiesectie. Als sub-agents nieuw voor je zijn, behandelt onze cursus Introduction to AI Agents het delegeringspatroon zonder code.
Plugin vs. skill
Een skill leert Claude één taak in één SKILL.md-bestand. Een plugin is de verpakte set skills, opdrachten en connectors voor een hele functie, dus de Data-plugin bevat 10 skills. De plugin is wat je installeert, terwijl de skill is wat je bewerkt. Onze gids over Claude Skills gaat dieper in op het skillformaat als je dat wilt.
Waar vind je Cowork-plugins
Cowork-plugins komen uit 3 bronnen, en je gebruikt de eerste voor het grootste deel van dit artikel:
- De marketplaces in Cowork. De Knowledge Work-marketplace wordt standaard aan elk account toegevoegd. Anthropics Life Sciences-, Financial Services- en Legal-marketplaces vind je onder Add, Add marketplace en vervolgens Browse Anthropic sources.
- De directory op claude.com/plugins. Die bevat meer dan 300 plugins, met een filter voor of elke plugin werkt met Claude, Claude Code of beide.
- De anthropics/knowledge-work-plugins-repository op GitHub. Dit is de Apache-2.0-bron voor elke door Anthropic gebouwde rolplugin, en hier heb ik de hieronder geciteerde bestanden gelezen.
Er bestaan nog twee installatieroutes: voeg elke Git-repository toe als marketplace via de URL of owner/repo-notatie (GitHub, GitHub Enterprise en openbare GitLab- en Bitbucket-repositories werken), of upload een pluginbestand direct als een .zip- of .plugin-archief tot 200 MB.
De lineup aan rollen beslaat van alles in veel verschillende domeinen: productiviteit, sales, klantenondersteuning, productmanagement, marketing, juridisch, finance, data, enterprise search, HR, design, engineering, operations, biomedisch onderzoek en mkb, plus plugins van partners. Dit is geen overzichtsartikel; kies die voor jouw werk en lees verder.
Wat zit er in een Cowork-plugin?
Een Cowork-plugin is een map met een manifest in een verborgen submap en de rest in de toplaag. Hier is de volledige layout, met de componenten, waarbij alleen sommige oppervlakken als zodanig laden:
my-plugin/
├── .claude-plugin/
│ └── plugin.json # manifest (required)
├── skills/
│ └── <name>/SKILL.md # skills: auto-triggered knowledge & named actions
├── commands/
│ └── <name>.md # legacy single-file slash commands (still work)
├── agents/
│ └── <name>.md # sub-agents (Cowork and Claude Code only)
├── hooks/
│ └── hooks.json # hooks (Cowork and Claude Code only)
├── .mcp.json # connectors
└── README.md
Houd deze boom in gedachten, want in stap 4 bouw je de bovenste helft ervan bestand voor bestand. De figuur hieronder koppelt de boom aan waar elke component draait, uit Anthropics platformondersteuningstabel.

Figuur 1. De map van een plugin links, en per component wanneer die afgaat en of chat, Cowork of Claude Code hem laadt. Afbeelding door auteur.
Het manifest
Het manifest is .claude-plugin/plugin.json, en name is het enige verplichte veld. Dit is het echte manifest van Anthropics Data-plugin, gekopieerd uit de repository:
{
"name": "data",
"version": "1.1.0",
"description": "Write SQL, explore datasets, and generate insights faster. Build visualizations and dashboards, and turn raw data into clear stories for stakeholders.",
"author": {
"name": "Anthropic"
}
}
Drie dingen om te weten:
-
De
nameis de permanente identiteit van de plugin en prefixeert elke component, dus dewrite-query-skill wordt/data:write-query. -
De
version-string is het releasenummer dat mensen zien voor de plugin, en Anthropics buildgids zegt dat je die bij elke release moet verhogen. -
Optionele velden zijn onder meer
displayName,license,homepageenkeywords.
Skills en opdrachten
Een skill staat op skills/<name>/SKILL.md: een kort blok instellingen tussen ----regels bovenaan (de YAML-frontmatter), daaronder instructies voor Claude. Hier is de bovenkant van de write-query-skill van de Data-plugin, die ik in stap 2 draai:
---
name: write-query
description: Write optimized SQL for your dialect with best practices. Use when translating a natural-language data need into SQL, building a multi-CTE query with joins and aggregations, optimizing a query against a large partitioned table, or getting dialect-specific syntax for Snowflake, BigQuery, Postgres, etc.
argument-hint: "<description of what data you need>"
---
# /write-query - Write Optimized SQL
De description is wat Claude leest om te beslissen of de skill geladen wordt, en de argument-hint vertelt jou wat de skill verwacht dat je typt. Twee frontmatter-vlaggen veranderen hoe een skill afgaat:
-
user-invocable: falseverbergt hem in het/-menu zodat alleen Claude hem kan laden (desql-queries-skill van de plugin staat zo ingesteld) -
disable-model-invocation: truedoet het omgekeerde, waardoor een skill alleen draait wanneer jij zijn naam typt.
Opdrachten zijn het oudere formaat: één Markdownbestand op commands/<name>.md met een description in de frontmatter. Anthropics eigen pluginauteur-skill vraagt Claude nu om "nieuwe plugins te scaffolden met skills/*/SKILL.md" en noemt de map commands/ legacy, omdat Coworks interface beide als één Skills-lijst toont. Opdrachten laden nog steeds overal, dus je blijft ze tegenkomen in oudere plugins, maar stap 4 gebruikt skills.
Connectors
Het .mcp.json-bestand in de pluginroot lijst de externe services die de plugin kan bereiken, elk als een MCP-server-URL. Hier zijn de eerste 3 entries uit het bestand van de Data-plugin:
{
"mcpServers": {
"snowflake": {
"type": "http",
"url": ""
},
"databricks": {
"type": "http",
"url": ""
},
"bigquery": {
"type": "http",
"url": "https://bigquery.googleapis.com/mcp"
},
De lege URL's zijn placeholders: Anthropic levert het BigQuery-endpoint mee maar laat Snowflake en Databricks aan jou om in te vullen met je eigen serveradres. Als MCP zelf nieuw is, bouwt onze Model Context Protocol-gids een server vanaf nul.
Eén beperking is minder zichtbaar: Anthropics helpcentrum stelt dat "in Cowork bereiken connectors externe services via Anthropics cloud, niet via je lokale netwerk." Een aangepaste connector moet dus wijzen naar een server "die via het publieke internet bereikbaar is vanuit Anthropics IP-ranges." Een warehouse achter een firewall of VPN zal pas verbinden wanneer je netwerkteam Anthropics adressen op de allowlist zet.
Lokale MCP-servers, het soort dat een programma op je machine start, zijn de uitzondering: die draaien in Claude Code en in Cowork-sessies die op je computer draaien, en chat negeert ze.
Sinds 6 oktober 2026 draaien nieuwe Pro- en Max-taken alleen in Anthropics cloud, dus lokale sessies zijn vooral een Team- en Enterprise-functie.
Stap 1: je eerste plugin installeren
Een Cowork-plugin installeren kost 6 korte stappen op de pagina Aanpassen, en die zijn identiek voor elke plugin in de catalogus, dus lezers in sales of juridisch kunnen hun eigen plugin kiezen. Ik gebruik de Data-plugin omdat die de SQL-case in stap 2 voorbereidt.
1. Open Customize in de linkerzijbalk van de Claude-desktopapp. Als jouw app nog een Cowork-tab toont, open die eerst.

2. Open het tabblad Plugins.

3. Laten we zeker weten dat je de Knowledge Work-marketplace hebt. Klik op + Add, vervolgens Add marketplace, daarna Browse Anthropic sources.

4. Selecteer en voeg de Knowledge Work-plugins toe.

5. Open het tabblad Discover. De Knowledge Work-marketplace zou er al moeten staan. Klik op de Code-filter.

6. Selecteer Data en klik op Add. In sommige builds heet de knop Install.
De pluginpagina toont vervolgens wat je gekregen hebt: op zijn tabblad Skills zie je 10 skills, waarvan je er 7 op naam kunt draaien (analyze, explore-data, write-query, create-viz, build-dashboard, validate-data en data-context-extractor), en 3 die op de achtergrond laden (sql-queries, data-visualization en statistical-analysis). Het connectorbestand in de repository vermeldt Snowflake, Databricks, BigQuery, Definite, Hex, Amplitude (met een aparte EU-entry) en Atlassian, en geen ervan is verbonden totdat jij inlogt. De directorypagina van de Data-plugin toonde 7.655 installs op 28 september 2026.
Ben je handig met een terminal, dan installeert dezelfde plugin in Claude Code met 2 commando's uit de README van de repository:
claude plugin marketplace add anthropics/knowledge-work-plugins
claude plugin install data@knowledge-work-plugins
Eén verschil is belangrijk: een plugin die je via Aanpassen toevoegt, synchroniseert naar Claude Code, maar een plugin die je via de command line installeert, blijft op die machine en komt nooit in je account. Onze gids voor het bouwen van Claude Code-plugins behandelt de terminalworkflow uitgebreid, dus ik blijf hier bij de desktoproute.
Op Team- en Enterprise-abonnementen zet een owner elke plugin op één van 4 statussen: niet beschikbaar, beschikbaar om te installeren, standaard geïnstalleerd of verplicht. Enterprise-beheerders kunnen dat per groep overschrijven, dus het helpcentrum waarschuwt dat "de plugins die je in de catalogus ziet, kunnen verschillen van wat collega's in andere groepen zien." Als Data ontbreekt op je Discover-tab, vraag een owner voordat je aanneemt dat de marketplace stuk is.
Stap 2: een databron verbinden en een slashopdracht draaien
Een plugin met een niet-verbonden warehouse kan alleen SQL voor je schrijven om elders te plakken, dus de eerste echte stap is het verbinden van een databron. Daarna doet de slashopdracht de rest.
Een connector autoriseren
Een plugin toevoegen logt je nergens in. Open het tabblad Connectors van de plugin, waar elke entry één van 3 statussen toont: Connected, Not connected (de connector staat op je account, maar je bent niet ingelogd) of Not added. Klik waar nodig op Add, daarna op Connect, en rond het inloggen bij de service in je browser af.

Op Team- en Enterprise-plannen voegt een owner eerst de connector voor de organisatie toe, waarna jij met je eigen account verbindt.
Gebruik read-only credentials voor het warehouse, want een write-capable connector laat Claude elke statement draaien die zijn tools blootstellen, en in Coworks automodus beslist Claude zelf of hij ze aanroept. Dat betekent:
-
Voor Snowflake een rol met alleen
SELECT -
Voor BigQuery een serviceaccount met de Data Viewer-rol
-
Voor Databricks een token met scope op een read-only SQL-warehouse
Als je nieuw bent met een van beide platforms, brengen onze beginnersgids voor Snowflake en BigQuery-tutorial je allebei in één middag naar je eerste query.
De verbinding leeft in je account onder Aanpassen en daarna Connectors, dus je autoriseert elke service één keer, en elke andere plugin die dezelfde server-URL vermeldt, zoals de BigQuery-entry van de Finance-plugin, hergebruikt die.
Je eerste opdracht draaien
De write-query-opdracht zet een vraag in gewone taal om naar SQL voor jouw dialect, en het is het artefact waar ik wil dat je het meest naar kijkt, omdat de verificatiesectie erop terugkomt.
Ik heb een kleine SQLite-database, shop.db, gebouwd met de 4 tabellen die een e-commerce-warehouse zou hebben en 1.600 orders van 5 januari tot 27 september 2026. De tabel hieronder definieert het schema; elke query in dit artikel draait erop.
|
Tabel |
Kolommen |
Eén rij is |
|
|
|
Een klant (240 rijen) |
|
|
|
Een catalogusproduct in 1 van 5 categorieën (40 rijen) |
|
|
|
Een order met status completed, refunded of canceled (1.600 rijen) |
|
|
|
Eén productregel in een order, geprijsd vóór een korting van 0 tot 25% (2.647 rijen) |
Om de opdracht te draaien, typ je / in het berichtvenster en kies je write-query van de Data-plugin, of typ je /data:write-query.
Sinds de update van 24 februari 2026 zet het typen van een opdracht de hinttekst in het berichtvenster, en kan Claude een gestructureerde vraag met genummerde keuzes stellen voordat hij begint, zoals Anthropics screenshot hieronder toont met de /dashboard-opdracht.

Het gestructureerde formulier dat een slashopdracht start in Cowork, getoond door Anthropic met de /dashboard-opdracht: de hint van de opdracht staat in het berichtvenster en Claude stelt vooraf een vraag met genummerde keuzes. Beeldbron: Anthropic, 24 februari 2026.
Mijn verzoek was: nettowinst per productcategorie voor elk van de laatste 8 weken, alleen voltooide orders meerekenen en kortingen op regels aftrekken, in SQLite, met het schema eronder geplakt.
Hier is de onbewerkte SQL die terugkwam:
-- Net revenue by product category, last 8 complete weeks (Mon–Sun), completed orders only
-- Dialect: SQLite
WITH RECURSIVE
params AS (
SELECT
-- Monday of the current week; 'weekday 0' jumps forward to Sunday, -6 days lands on Monday
date('2026-09-28', 'weekday 0', '-6 days') AS current_week_start, -- 2026-09-28
date('2026-09-28', 'weekday 0', '-6 days', '-56 days') AS range_start -- 2026-08-03
),
-- One row per week, so weeks with no sales still show up
weeks AS (
SELECT range_start AS week_start
FROM params
UNION ALL
SELECT date(w.week_start, '+7 days')
FROM weeks AS w
CROSS JOIN params AS pr
WHERE date(w.week_start, '+7 days') < pr.current_week_start
),
categories AS (
SELECT DISTINCT category
FROM products
),
-- Filter and aggregate at the line-item level before building the grid
weekly_category_revenue AS (
SELECT
date(o.order_date, 'weekday 0', '-6 days') AS week_start,
p.category,
-- discount_pct is stored as 0–25 (a percent), not as a 0–0.25 fraction
SUM(oi.quantity * oi.unit_price * (1 - oi.discount_pct / 100.0)) AS net_revenue
FROM orders AS o
CROSS JOIN params AS pr
INNER JOIN order_items AS oi ON oi.order_id = o.order_id
INNER JOIN products AS p ON p.product_id = oi.product_id
WHERE o.status = 'completed'
-- Plain string comparison, so an index on order_date can be used; works for ISO-8601 dates
AND o.order_date >= pr.range_start
AND o.order_date < pr.current_week_start
GROUP BY 1, 2
)
SELECT
w.week_start,
date(w.week_start, '+6 days') AS week_end,
c.category,
ROUND(COALESCE(r.net_revenue, 0), 2) AS net_revenue
FROM weeks AS w
CROSS JOIN categories AS c
LEFT JOIN weekly_category_revenue AS r
ON r.week_start = w.week_start
AND r.category = c.category
ORDER BY w.week_start, net_revenue DESC, c.category;
Dat is langer dan wat ik met de hand zou hebben getypt, en juist die extra lengte is de waarde. Elk blok van de query, een common table expression (CTE), doet één ding:
-
paramsverankert alles aan één datum, zodat je de query makkelijk kunt verleggen. -
weeksis recursief en garandeert een rij voor een week zonder sales. -
weekly_category_revenuehoudt alleenstatus = 'completed'over en past de korting toe als1 - discount_pct / 100.0, omdat het schema aangeeft dat de kolom hele percentages van 0 tot 25 bevat. -
De laatste
SELECTvult gaten met 0, zodat de output klaar is om te plotten.
De skill noemt ook zijn aannames onder de query, waaronder dat order_date ISO 8601-tekst moet zijn (YYYY-MM-DD) voor de rangefilter om te werken, en dat terugbetaalde orders geheel worden weggelaten.
Ik draaide de query tegen shop.db en kreeg 40 rijen, één per week en categorie. Hier is hij gepivot zodat elke categorie een kolom is:
|
Week vanaf |
Audio |
Fitness |
Home Office |
Kitchen |
Outdoor |
|
2026-08-03 |
12.714,80 |
9.187,23 |
13.542,08 |
7.925,04 |
7.621,21 |
|
2026-08-10 |
12.017,26 |
6.467,39 |
5.380,54 |
12.444,47 |
6.386,67 |
|
2026-08-17 |
8.808,47 |
4.669,72 |
6.675,32 |
7.513,97 |
4.485,65 |
|
2026-08-24 |
15.634,67 |
8.055,81 |
8.716,85 |
7.730,55 |
7.047,96 |
|
2026-08-31 |
11.402,99 |
11.517,37 |
14.252,59 |
9.954,80 |
7.226,14 |
|
2026-09-07 |
14.853,85 |
5.509,74 |
5.639,71 |
4.926,32 |
4.162,98 |
|
2026-09-14 |
8.780,41 |
4.893,28 |
7.864,22 |
7.344,70 |
6.204,45 |
|
2026-09-21 |
12.937,24 |
4.149,27 |
12.715,72 |
9.618,61 |
7.353,57 |
Audio is de grootste categorie in 5 van de 8 weken en zakt nooit onder de 8.780. Home Office schommelde het meest, van 5.380 in de week van 10 augustus tot 14.252 in de week van 31 augustus. Fitness eindigt de periode op zijn laagste punt van 4.149, het soort beweging dat een weekrapport moet signaleren en dat de plugin die ik in stap 4 bouwde ook benoemt.
De grafiek hieronder toont dezelfde 40 getallen, één paneel per categorie.

Figuur 2. Wekelijkse nettowinst voor voltooide orders per productcategorie over de 8 volledige weken eindigend op 27 september 2026, uit het write-query-resultaat. Afbeelding door auteur.
Stap 3: een geïnstalleerde plugin aanpassen
Installeren kost 2 minuten. Aanpassen is waar een plugin zijn plek verdient, omdat Anthropics plugins zijn geschreven voor een generiek bedrijf, en dat van jou niet. Er zijn 2 manieren om het te doen.
Edit with Claude gebruiken
Klikken op Edit with Claude opent een Cowork-taak waarin Claude de plugin samen met jou bewerkt.

Het helpcentrum noemt de knop nog steeds Customize. In de huidige app open je het menu van de plugin rechtsboven en kies je Edit with Claude, wat "een nieuwe Cowork-taak opent met een prompt waarin Claude wordt gevraagd de gekozen plugin aan te passen", klik daarna op Let's go. Onder de motorkap draait dit de cowork-plugin-customizer-skill uit Anthropics Plugin Management-plugin.
De skill zoekt eerst in de pluginbestanden naar ~~-placeholders, zoals ~~data warehouse, kijkt dan in verbonden Slack- of documenttools naar de echte namen en vraagt jou tot slot om alles wat hij niet vond.
Een concrete aanpassing hier is je tabelbenaming: vertel dat canonieke tabellen in het analytics-schema staan, dat fct_orders de enige ordertabel is om op te queryen, en dat alles met prefix stg_ off-limits is. Claude schrijft die regels in de SQL-skill en toont je de aangepaste plugin in het gesprek; je accepteert hem met de knop bij dat resultaat.
De bestanden rechtstreeks bewerken
De tweede manier is de pluginbestanden openen en zelf bewerken, wat past bij wijzigingen die je al weet te schrijven. Drie aanpassingen betalen zich het meest uit:
-
Voeg bedrijfscontext toe aan een skill. Voeg je metricdefinities, de canonieke tabellen en de tabellen die je nooit mag queryen toe onderaan
skills/sql-queries/SKILL.md. Het blok dat ik gebruik is hetzelfde dat in stap 4 een eigen skill wordt, en 4 van de regels zien er zo uit:
- orders: one row per order. status is completed, refunded, or canceled. order_date is ISO 8601 (YYYY-MM-DD).
- order_items: one row per product line. unit_price is the price charged before discount. discount_pct is a whole-number percentage from 0 to 25.
- products: one row per product, with its category.
- Never compute revenue from products.list_price. It is the catalog price, not what the customer paid.
-
Vervang connectors in
.mcp.json. Verwijder de entries voor services die je niet gebruikt en vul de lege Snowflake- of Databricks-URL met het adres van je eigen server, of voeg je warehouse toe als een custom connector onder Aanpassen en vervolgens Connectors. -
Verhoog de versie. Wijzig de versie in plugin.json wanneer je iets aanpast, zodat je jouw kopie van het origineel kunt onderscheiden.
Eén ding om te onthouden: Anthropics Cowork plugingids zegt dat Cowork de marketplace op updates controleert en "als je lokaal bestanden van een plugin hebt bewerkt, detecteert Cowork de wijziging en waarschuwt voordat een update die zou overschrijven." Door de organisatie beheerde plugins en plugins die een collega met je deelde, kun je helemaal niet bewerken, dus kopieer ze eerst in je eigen plugin.
Nog een kanttekening voor Windows-gebruikers: een bugreport van 11 september 2026 beschrijft een zelf geüploade plugin die vastzit op de eerste geïnstalleerde versie, waarbij nieuwe uploads, uninstalls en reinstalls na een herstart steeds teruggedraaid worden. Hij stond op 6 oktober 2026 nog open zonder workaround, dus als je edits op Windows niet meer blijven staan, check die thread in plaats van in een loop opnieuw te uploaden.
Stap 4: een aangepaste plugin vanaf nul bouwen
Een custom plugin is het antwoord wanneer geen marketplace-plugin jouw workflow kent. Laten we een voorbeeldbouw doornemen: een wekelijks metriekrapport met 1 kennisskill, 1 opdracht en 1 connector.
Elk bestand staat volledig in dit artikel, want de map ís het product. De figuur toont de lus die je volgt.

Figuur 3. Een custom plugin bouwen: schrijf en valideer de bestanden op je computer, zip en upload ze, draai de opdracht in een nieuwe taak en keer terug naar de bestanden voor wijzigingen. Afbeelding door auteur.
Scaffolding met Plugin Create
Plugin Create is Anthropics naam voor de begeleide route en leeft in september 2026 in het Add-menu. Ga naar Customize, Plugins, Add, dan Create with Claude, wat een Cowork-taak opent met het verzoek al ingevuld.

Beschrijf de taak in de woorden die je met een collega zou gebruiken, beantwoord Claudes vragen over welke connectors je wilt opnemen en klik op Save plugin op de bestandskaart die hij oplevert. In hetzelfde menu vind je ook Create a plugin, een formulier en een editor voor mensen die al weten wat er in elk bestand moet staan.
Voor de plugin in dit artikel zou ik de onderstaande briefing typen. Die noemt de ene opdracht, de ene achtergrondskill, de ene connector en de regels, wat de informatie is die de discovery-vragen van de skill anders stap voor stap uit je zouden halen.
Build me a plugin called Weekly Metrics Report for our online store's data team.
What it does: every Monday, compare the most recent complete week (Monday to Sunday) with the week before it and write a short Markdown report. Keep it to one command, /weekly-report, that runs the whole thing, and one background skill that holds our metric definitions so Claude never guesses them.
The definitions: net revenue is quantity times unit price after the line discount, for completed orders only. Completed orders are counted by distinct order ID. Average order value is net revenue divided by completed orders. Refund rate is refunded orders divided by completed plus refunded orders, as a percentage with one decimal. Cancelled orders never count toward anything.
The data: the canonical tables are orders, order_items, and products in our BigQuery warehouse. Never use products.list_price for revenue; it is the catalog price, not what the customer paid. Bundle the BigQuery connector and nothing else.
The report: a three-sentence summary that names the biggest mover and says whether it went up or down, a table of net revenue by product category (this week, last week, percentage change with one decimal and a sign), a second table with the overall metrics for both weeks, and the SQL at the end so a reader can check it. If either week has fewer than 20 completed orders, say the comparison is noisy.
Do not add agents, hooks, or any other skills.
De begeleide route draait de create-cowork-plugin-skill uit de Plugin Management-plugin in de Knowledge Work-marketplace. Je kunt die plugin installeren en de skill op naam draaien. Hij vraagt naar de taak, componenten en connectors en pakt het resultaat vervolgens in een .plugin-bestand.
Hier is de map waar je op uitkomt:
weekly-metrics-report/
├── .claude-plugin/
│ └── plugin.json
├── .mcp.json
├── README.md
└── skills/
├── metric-definitions/
│ └── SKILL.md
└── weekly-report/
└── SKILL.md
Het manifest noemt de plugin en zet de versie vast:
{
"name": "weekly-metrics-report",
"displayName": "Weekly Metrics Report",
"version": "0.1.0",
"description": "Builds the store's weekly metrics report from the warehouse, using the team's own metric definitions.",
"author": { "name": "Tim Lu" },
"license": "MIT"
}
Het connectorbestand vermeldt één server, hetzelfde BigQuery-endpoint dat de Data-plugin gebruikt, zodat een lezer die in stap 2 BigQuery verbond niets nieuws hoeft te autoriseren:
{
"mcpServers": {
"bigquery": {
"type": "http",
"url": "https://bigquery.googleapis.com/mcp"
}
}
}
De README is optioneel voor een private plugin en verplicht als je ooit naar de directory indient, dus ik heb hem nu geschreven:
# Weekly Metrics Report
A small Cowork plugin that turns "how did last week go?" into a consistent report. It holds the store's metric definitions in one skill and the report workflow in another, and it bundles the BigQuery connector so Claude can query the warehouse directly.
## Use it
Run /weekly-metrics-report:weekly-report, or ask for the weekly numbers in plain words. Claude compares the most recent complete week with the week before, writes a Markdown report with per-category and overall tables, and includes the SQL it ran.
## Data
The plugin reads the orders, order_items, and products tables through the connector you sign in to. It stores nothing itself.
De skill schrijven
De kennisskill houdt de context die elke maandag werd geplakt. Hier is skills/metric-definitions/SKILL.md volledig:
---
name: metric-definitions
description: The store's definitions of net revenue, completed orders, average order value, and refund rate, plus which warehouse tables are canonical. Use whenever a request involves revenue, sales, orders, refunds, discounts, or which table to query, even if it does not name a metric.
user-invocable: false
---
# Metric definitions for the store warehouse
Follow these definitions whenever you compute or report a store metric. If a request conflicts with them, follow the definitions and say so.
## Canonical tables
- orders: one row per order. status is completed, refunded, or cancelled. order_date is ISO 8601 (YYYY-MM-DD).
- order_items: one row per product line. unit_price is the price charged before discount. discount_pct is a whole-number percentage from 0 to 25.
- products: one row per product, with its category.
- Never compute revenue from products.list_price. It is the catalog price, not what the customer paid.
## Metrics
- Net revenue: SUM(quantity * unit_price * (1 - discount_pct / 100.0)) over order_items, for orders with status = 'completed'.
- Completed orders: COUNT(DISTINCT order_id) where status = 'completed'.
- Average order value: net revenue divided by completed orders.
- Refund rate: refunded orders divided by completed plus refunded orders, as a percentage with one decimal.
- Cancelled orders never count toward revenue, order counts, or the refund rate.
## Weeks
- A week runs Monday to Sunday. Label a week by its Monday.
- "Last week" means the most recent complete week, not the last 7 days.
De beschrijving is wat deze skill betrouwbaar laat afgaan, en een vage beschrijving is de gebruikelijke reden dat een skill nooit afgaat. Claude leest alleen de frontmatter totdat hij beslist om een skill te laden, en de Claude Code skills-referentie zegt dat je de belangrijkste usecase eerst moet zetten.
Schrijf de beschrijving als de situaties waarin de lezer zit ("een verzoek gaat over revenue, sales, orders, refunds, discounts") in plaats van als een samenvatting van het bestand, en neem de woorden op die mensen gebruiken, omdat Claude je beschrijving matcht met hun bericht.
Twee keuzes zijn bewust: user-invocable: false houdt deze skill uit het /-menu, want niemand zou een set definities moeten "draaien". De body is geschreven als instructies aan Claude in de gebiedende wijs ("Never compute revenue from products.list_price"), wat de stijl is die Anthropics eigen auteursskill vraagt. De tabellensectie is het deel dat je zou vervangen door de namen van je eigen warehouse.
De opdracht schrijven
De opdracht is ook een skillbestand, want zo definiëren nieuwe plugins benoemde acties. Hier is skills/weekly-report/SKILL.md volledig:
---
name: weekly-report
description: Build the store's weekly metrics report. Use when the user asks for the weekly report, the weekly numbers, week-over-week metrics, or how last week went.
argument-hint: "[a date inside the week to report on]"
---
# Weekly metrics report
Produce a short report comparing the most recent complete week with the week before it, using the definitions in the metric-definitions skill.
## Steps
1. Work out the reporting week. If the user gave a date, use the Monday-to-Sunday week that contains it. Otherwise use the most recent complete week before today.
2. Get the data. If a warehouse connector is connected, query it directly. If not, ask the user for a database file or an export and query that instead. Never estimate a number.
3. For the reporting week and the week before it, compute net revenue, completed orders, average order value, and refund rate, overall and per product category.
4. Write the report to a Markdown file named weekly_report_<week start>.md containing:
- A three-sentence summary that names the biggest mover and says whether it went up or down.
- A table with one row per category: net revenue this week, last week, and the percentage change.
- A second table with the overall metrics for both weeks.
- The SQL you ran, in a code block at the end, so the reader can check it.
5. Show the summary in the conversation and say where the file is.
## Rules
- Follow the metric-definitions skill for every metric. Do not invent new ones.
- Report percentage changes with one decimal place and a sign.
- If either week has fewer than 20 completed orders, say the comparison is noisy.
Deze skill is standaard user-invocable, dus hij verschijnt in het /-menu als /weekly-metrics-report:weekly-report, en de argument-hint documenteert het ene argument dat hij accepteert.
De body noemt de metric-definitions-skill twee keer, één keer in de openingszin en één keer bij de regels, en zo roept de opdracht de skill aan: Claude laadt de definities omdat ze bij naam genoemd zijn en omdat hun beschrijving matcht met een verzoek over revenue.
Als je het legacy-formaat verkiest, werkt dezelfde body als commands/weekly-report.md met alleen de description-regel in de frontmatter.
Installeren en testen
Valideer voor het uploaden de map relatief aan zijn bovenliggende directory met claude plugin validate ./weekly-metrics-report, waarvoor Claude Code geïnstalleerd moet zijn. Op mijn machine printte hij ✔ Validation passed, en bij falen noemt hij het veld dat je moet fixen.
Zip vervolgens de pluginmap. Beide layouts werken: de map als het enige toplevel-item, of zijn inhoud direct, zolang het archief één .claude-plugin/plugin.json bevat (de mijne was 3.067 bytes). Ga daarna naar Customize, Plugins, Add, Upload plugin en selecteer de zip.
Een nieuw toegevoegde plugin laadt in je volgende Cowork-taak, niet in de huidige, dus start een nieuwe taak voordat je hem zoekt. Verschijnt hij nog steeds niet in de nieuwe taak, sluit en heropen de desktopapp voordat je de bestanden gaat debuggen.
Ik testte de plugin via Claude Code met claude --plugin-dir ./weekly-metrics-report, wees naar shop.db en typte /weekly-metrics-report:weekly-report. Claude leidde af dat 28 september 2026 een maandag is, rapporteerde de week van 21 september en schreef weekly_report_2026-09-21.md. Dit is de samenvatting, letterlijk:
Net revenue rose to $46,774.42, up +33.3% from $35,087.07 the week before. Completed orders went from 61 to 78, and average order value rose slightly to $599.67 (+4.3%).
The biggest mover was Home Office: its net revenue went up +61.7% ($7,864.22 → $12,715.72), the largest gain in both dollars and percent.
Fitness was the only category that fell (-15.2%).
The refund rate rose from 10.3% to 12.4%, and Home Office's refund rate reached 27.6% (8 refunded orders), which is worth a closer look.
En dit is de categorietabel uit hetzelfde bestand:
|
Categorie |
Deze week (2026-09-21) |
Vorige week (2026-09-14) |
Verschil |
|
Audio |
$12,937.24 |
$8,780.41 |
+47.3% |
|
Fitness |
$4,149.27 |
$4,893.28 |
-15.2% |
|
Home Office |
$12,715.72 |
$7,864.22 |
+61.7% |
|
Kitchen |
$9,618.61 |
$7,344.70 |
+31.0% |
|
Outdoor |
$7,353.57 |
$6,204.45 |
+18.5% |
|
Totaal |
$46,774.42 |
$35,087.07 |
+33.3% |
Vergelijk de laatste rij van de pivottabel in stap 2 met de kolom "Deze week" hier: dezelfde 5 getallen, uit 2 verschillende plugins, omdat beide dezelfde definitie van nettowinst volgden.
Claude deed ook 2 dingen die ik niet vroeg. Hij signaleerde dat 4 van de 5 categorieën in minstens 1 week minder dan 20 voltooide orders hadden en paste mijn regel over ruisgevoelige vergelijkingen per categorie toe. Ook wees hij erop dat mijn regel "wijzigingen als percentages rapporteren" dubbelzinnig is voor het refundpercentage, dat al een percentage is, dus rapporteerde hij die wijziging in procentpunten.
Beide zijn edits die ik als volgende in de skill zou doen, wat ook de lus is in figuur 3: een regel wijzigen, de versie verhogen, opnieuw uploaden.
Als het rapport werkt, typ je /schedule in een Cowork-taak om het elke maandagochtend zonder jou te laten draaien, omdat geplande taken in Anthropics cloud draaien. Sinds 1 oktober 2026 staan door Claude gemaakte geplande taken standaard op "Automatically approve" wanneer je organisatie dat toestaat, wat nog een reden is om die connector lezen/schrijven op lezen te houden. Onze Cowork Dispatch-tutorial laat de andere optie zien: een taak starten vanaf je telefoon.
Een Cowork-plugin met je team delen
De pluginmap is de distributie-eenheid, dus delen is de vraag waar je hem neerzet. Push hem naar een GitHub-repository met een marketplace.json die hem vermeldt, en iedereen aan wie je de URL geeft kan de repository toevoegen onder Add en vervolgens Add marketplace.
Op Team- en Enterprise-plannen kan een owner in plaats daarvan een private repository syncen of zips uploaden in een organization marketplace en elke plugin op beschikbaar, standaard geïnstalleerd of verplicht zetten, voor iedereen of voor specifieke groepen. Members kunnen een plugin die ze bouwden delen via het menu met de drie puntjes of indienen met Publish to org, en het helpcentrum's organisatieplugingids bespreekt de rest.
Hoe verifieer je de output van een plugin?
Je verifieert de output van een plugin door de query te lezen voordat je de grafiek vertrouwt, door te beperken wat de plugin kan aanraken en door te weten waar je kijkt als een skill niet afgaat. Daar is geen securityteam voor nodig. Wel 5 minuten gewoonte.
Lees de code vóór de grafiek
Een ogenschijnlijk plausibele query kan een net andere vraag beantwoorden dan die jij stelde. Hier is er een die ik met de hand schreef voor dezelfde vraag als stap 2, en hij draait zonder foutmelding:
SELECT p.category,
ROUND(SUM(oi.quantity * p.list_price), 2) AS revenue
FROM orders AS o
JOIN order_items AS oi ON oi.order_id = o.order_id
JOIN products AS p ON p.product_id = oi.product_id
WHERE o.order_date >= '2026-08-03' AND o.order_date < '2026-09-28'
GROUP BY p.category
ORDER BY p.category;
Hij prijst elke regel op de catalogus-list_price in plaats van de berekende prijs, negeert kortingen en telt terugbetaalde en geannuleerde orders mee omdat hij nooit op status filtert. Beide queries draaien tegen shop.db levert de onderstaande totalen op, met in de laatste kolom hoeveel de shortcut de nettowinst overschat.
|
Categorie |
Pluginquery (netto, completed) |
Shortcutquery (list price, alle orders) |
Overschrijving |
|
Audio |
97.149,69 |
128.770,97 |
+32,5% |
|
Fitness |
54.449,81 |
71.237,81 |
+30,8% |
|
Home Office |
74.787,03 |
99.157,55 |
+32,6% |
|
Kitchen |
67.458,46 |
83.908,32 |
+24,4% |
|
Outdoor |
50.488,63 |
64.366,84 |
+27,5% |
|
Totaal |
344.333,62 |
447.441,49 |
+29,9% |
Elke categorie is 24% tot 33% te hoog ingeschat, en een staafdiagram van beide resultaten oogt even redelijk. De query van de plugin had dit goed omdat de skill hem vroeg om vroeg te filteren en het schema te lezen.
Als het lezen van een query van 50 regels nog stroef gaat, is onze Associate Data Analyst in SQL-track de snelste route naar vloeiendheid. De gids voor SQL-queryoptimalisatie legt de praktijken uit die de write-query-skill volgt, zoals filteren vóór het joinen en SELECT * vermijden.
Houd verbindingen read-only
Een write-capable warehouseconnector brengt je tabellen vanuit 2 richtingen in gevaar: Claude die een verzoek verkeerd leest ("maak de testorders schoon") als een instructie om te verwijderen, en promptinjection, waar tekst in een document of webpagina die Claude leest eigen instructies bevat. Op Team- en Enterprise-plannen staat de instelling die members toestaat om per-taakgoedkeuring over te slaan voor write-capable connector-tools standaard uit.
Voor een harde vangrail draaien hooks vóór elke toolcall in Cowork en Claude Code, dus een hook die de SQL van een connector leest en alles behalve SELECT weigert, is het patroon om te gebruiken. Onze Claude Code hooks-gids laat zien hoe je er een schrijft. Ik heb die hook niet gebouwd voor dit artikel, dus test hem met je eigen connector voordat je erop vertrouwt.
Als een skill misgaat of nooit afgaat, check eerst de beschrijving
Claude beslist op basis van de frontmatter, dus open de skill en vraag je af of de beschrijving de situatie noemde waarin jij zat en de woorden die jij gebruikte. Zo niet, voeg ze toe.
Trigger de skill daarna handmatig met / om te bevestigen dat de body zelf werkt, check dat de toggle van de plugin aan staat en de connector "Connected" toont, en onthoud dat een plugin in de volgende taak laadt, niet in de huidige. De meest voorkomende boosdoener is een beschrijving die het bestand samenvat in plaats van het verzoek te beschrijven.
Ken de productstatus
Cowork is algemeen beschikbaar sinds 9 april 2026. Plugins lanceerden als onderzoeksvoorvertoning op 30 januari 2026 en staan nu als beschikbaar vermeld op alle betaalde plannen. Op 11 augustus 2026 breidde Anthropic Compliance API-dekking uit naar Cowork-sessies op desktop, web en mobiel.
Twee hiaten blijven in het huidige helpcentrum: transcripts van lokale desktopsessies hebben nog geen deletion-endpoint en OpenTelemetry-monitoring "vervangt geen audit logging voor compliance-doeleinden."
Als je organisatie Amerikaanse gezondheidsdata verwerkt op een HIPAA-ready Enterprise-plan, valt Cowork pas onder je Business Associate Agreement nadat een admin de HIPAA-configuratie toepast, en zodra die aanstaat, kan Cowork niet in de cloud draaien. Als je data gereguleerd is, vraag dan goedkeuring van je compliance-team voordat een plugin productietabellen aanraakt.
Tot slot
Je hebt nu 3 plugins: de Data-plugin die je installeerde, de kopie die je aanpaste met je eigen tabelnamen, en het weekrapport dat je uit 5 bestanden bouwde. De derde is die ik zou houden, omdat die de 40 regels context bevat die voorheen elke maandag werden geplakt, en ze maar één keer bevat.
Het principe om te beslissen wat een plugin verdient is kort: een plugin is het bouwen waard wanneer de workflow zich herhaalt en de context stabiel blijft, wat een weekrapport, een checklist voor contractreview of salescall-voorbereiding beschrijft. Een eenmalige analyse heeft er geen nodig; plak de context en ga door.
En als je weegt welke herhalende workflows bij jou op het werk dit het eerst zouden moeten krijgen, is onze cursus Generative AI for Business precies rond die vraag opgebouwd. Wil je dieper in het model achter dit alles duiken, dan behandelt de cursus Introduction to Claude Models prompting en multi-turn-werk met de Claude API.
Claude Cowork-plugins: veelgestelde vragen
Wat zijn Claude Cowork-plugins?
Claude Cowork-plugins zijn installeerbare pakketten die skills, slashopdrachten en connectors bundelen en, in Cowork en Claude Code, ook sub-agents en hooks, zodat Claude als specialist voor één rol werkt. Anthropic voegde ze op 30 januari 2026 toe aan Cowork met 11 open-source plugins, en ze zijn beschikbaar op alle betaalde Claude-plannen.
Wat is het verschil tussen een Claude Cowork-plugin en een skill?
Een skill is één SKILL.md-bestand dat Claude één taak aanleert en afgaat wanneer Claude het relevant acht. Een plugin is de verpakte set skills, opdrachten en connectors voor een hele functie, en dat is de eenheid die je installeert, deelt en versieert.
Hoe installeer ik een Claude Cowork-plugin?
Open Customize in de linkerzijbalk van de Claude-desktopapp, open het tabblad Plugins, open Discover, selecteer de plugin en klik op Add. De plugin wordt opgeslagen bij je account, dus verschijnt hij ook in chat en synchroniseert hij naar Claude Code wanneer je met hetzelfde account inlogt.
Werken Cowork-plugins in Claude Code en in chat?
Ja, voor skills, opdrachten en connectors, die laden in chat, Cowork en Claude Code. Sub-agents en hooks draaien alleen in Cowork en Claude Code, en lokale MCP-servers draaien alleen in Claude Code en in Cowork-sessies die op je computer draaien.
Kan ik een Claude Cowork-plugin bouwen zonder te coderen?
Ja. Een plugin is een map met Markdown en JSON, en de optie Create with Claude onder Customize > Plugins > Add leidt je er in gesprek doorheen en slaat het resultaat op je account op. De bestanden met de hand schrijven vereist een teksteditor en een ziptool, en de hele weekly-report-plugin in dit artikel bestaat uit 5 korte bestanden.
Ik ben een data scientist met ervaring in ruimtelijke analyse, machine learning en datapijplijnen. Ik heb gewerkt met GCP, Hadoop, Hive, Snowflake, Airflow en andere data science- en engineeringprocessen.

