One read of Claude Documentationclaude-docs-20260925T180706Z
76 pages moved out of 255 read.
What this read moved
26-50 of 76, page 2 of 4This capture is too large to show at once. Changes 26-50 of 76 are below, significant first; the rest are on the following screens.
connectors/building/what-to-build Changed · +43 / -37 lines
# Decide what to include in your plugin ## Reach your product with an MCP connector ## Teach Claude your workflows with skills ## Add commands, agents, and UI ## Package and list the plugin # What should I build: MCP, plugin, or both? ## The recommendation ## When to build only one ## What a plugin can bundle ## How they coexist ## Skills are not a standalone directory type ## Build it with Claude
connectors/custom/add-unlisted New page · 275 lines, new page
# Add a connector that isn't in the directory ## Choose a URL or a local install ## Add a connector by URL ### On a Team or Enterprise plan #### Add the connector for the organization #### Connect as a member ### On a Free, Pro, or Max plan ### Choose authentication settings ### Authenticate with request headers #### Add a request header #### Enter the full header value ### Turn connectors on or off in a chat ### Edit or remove a connector ## Install a local connector in the desktop app ### Get a desktop extension from your organization ### Build and package a desktop extension ## Security and privacy ### Connectors you add by URL ### Desktop extensions ### Report a malicious server ## Next steps
A whole new page. There's nothing to diff it against, so here is what it says.
# Add a connector that isn't in the directory
> Connect Claude to an MCP server that isn't in the Connectors Directory, by its URL or as a local desktop extension.
You can connect Claude to a [Model Context Protocol (MCP)](/docs/connectors/building/mcp) server that isn't listed in the [Connectors Directory](/docs/connectors/directory). You add a remote server by its URL as a custom connector. In Claude Desktop, you can also use a desktop extension, which runs the server on your own computer.
This page is for people adding a connector to their own Claude and for Team and Enterprise Owners adding one for their organization.
<Note>
* If you want a service that's already in the directory, see the [Connectors Directory](/docs/connectors/directory) and connect it from there
* If you're building the server yourself, see [Build an MCP server for Claude](/docs/connectors/building/index)
* If your server runs inside your private network, see [MCP tunnels](/docs/connectors/mcp-tunnels/overview)
</Note>
If you have a server URL, go to [Add a connector by URL](#add-a-connector-by-url). If you have a desktop extension, go to [Install a local connector in the desktop app](#install-a-local-connector-in-the-desktop-app).
## Choose a URL or a local install
A connector by URL suits internet-hosted services and public APIs. A desktop extension suits access to local files or tools, sensitive enterprise data, and work that needs offline capability.
| You have | Use | Works in |
| ------------------------------ | --------------------------------------------------------------------------------------------- | ---------------------------------------------- |
| The URL of a remote MCP server | [Add a connector by URL](#add-a-connector-by-url) | Free, Pro, Max, Team, and Enterprise plans |
| A desktop extension | [Install a local connector in the desktop app](#install-a-local-connector-in-the-desktop-app) | The Claude desktop app, signed in to claude.ai |
## Add a connector by URL
You can add any third-party connector as a custom connector as long as you have the URL of its remote MCP server. On Team and Enterprise plans, an Owner adds the connector for the organization, and members then connect with their own account.
<Warning>
Custom connectors allow connections to unverified services. Claude can access and perform actions within these services, so review [Security and privacy](#security-and-privacy) before you add one.
</Warning>
### On a Team or Enterprise plan
An Owner adds the connector for the organization. On Enterprise plans, a member whose custom role includes managing the organization's libraries can add it too. If you're a member without one of those roles, you can't add a custom connector yourself, so ask an Owner to add it.
#### Add the connector for the organization
Adding the connector in organization settings makes it appear under [**Customize > Connectors**](https://claude.ai/customize/connectors) for members, with the **Custom** label. To add it:
<Steps>
<Step title="Open organization connectors">
Go to [**Organization settings > Connectors**](https://claude.ai/admin-settings/connectors).
</Step>
<Step title="Add a custom connector">
Select **Add**, then **Custom**. If Claude asks for the connector type, choose **Web**.
</Step>
<Step title="Enter the server URL">
Enter the remote MCP server URL.
</Step>
<Step title="Enter OAuth credentials if needed">
Optionally, enter an OAuth client ID and secret. See [Choose authentication settings](#choose-authentication-settings).
</Step>
<Step title="Add the connector">
Click **Add**.
</Step>
</Steps>
#### Connect as a member
Once an Owner has added the connector, each member connects to it with their own account:
<Steps>
<Step title="Open Customize > Connectors">
Go to **Customize > Connectors**.
</Step>
<Step title="Find the custom connector">
Find the connector with the **Custom** label.
</Step>
<Step title="Connect">
Click **Connect** to authenticate.
</Step>
</Steps>
### On a Free, Pro, or Max plan
You add custom connectors to your own account. On the Free plan, you can add one custom connector.
<Steps>
<Step title="Open Customize > Connectors">
Go to **Customize > Connectors**.
</Step>
<Step title="Add a custom connector">
Click **Add custom connector**.
</Step>
<Step title="Enter the server URL">
Enter the remote MCP server URL.
</Step>
<Step title="Enter OAuth credentials if needed">
Optionally, enter OAuth credentials. See [Choose authentication settings](#choose-authentication-settings).
</Step>
<Step title="Add the connector">
Click **Add**.
</Step>
</Steps>
### Choose authentication settings
The layout of the **Add custom connector** dialog varies by organization. If yours shows a name, a URL, and **Advanced settings** on one screen, enter the OAuth client ID and secret under **Advanced settings**. If yours has two steps, it asks you to choose among the settings in this section.
For **MCP server URL**, enter the HTTPS address where the server accepts MCP requests, for example `https://mcp.example.com/mcp`.
For **Authentication**, choose how people connect to the server:
* **Sign in now**: each user signs in through the server's OAuth flow before using the connector
* **Sign in when needed**: Claude connects without credentials and prompts users to sign in when the server asks
* **No sign-in**: anyone with access to the server URL can use the connector. If the server uses an API key, choose **No sign-in** and add the key under **Request headers**. Claude stores the key as the connector's credential
For **OAuth client**, choose how Claude identifies itself to the server's authorization server. You see this setting unless you chose **No sign-in**.
* **Use Claude's published identity**: the recommended option. The server reads Claude's client details from a Client ID Metadata Document that Anthropic hosts. You set nothing up, and the server must support this method
* **Register automatically**: Claude registers OAuth clients with the server as users connect, using Dynamic Client Registration. This works with most servers and adds client registrations over time
* **Use your own OAuth client**: enter a client ID you registered with the server. Leave the secret blank unless your authorization server requires one. See [Authentication for connectors](/docs/connectors/building/authentication)
For **Request headers**, add fixed credentials such as API keys that Claude sends on every request. See [Authenticate with request headers](#authenticate-with-request-headers).
Change **Advanced > Transport** only if the server's documentation says to. A URL ending in `/sse` selects the older SSE transport.
### Authenticate with request headers
<Note>
Request header authentication is in beta and available to a limited set of organizations. If you don't see the **Request headers** section in the **Add custom connector** dialog, your organization doesn't have access yet.
</Note>
If your MCP server authenticates with an API key, bearer token, or other fixed credential instead of OAuth, configure it in the **Request headers** section of the **Add custom connector** dialog. Claude stores each header value securely, doesn't show it again after you save, and sends it on every request to your server.
Request headers suit services where everyone in your organization shares one credential, such as an internal tool or a service account. If each person needs to sign in with their own account, use OAuth instead.
You can also use request headers in addition to OAuth, including OAuth with your own pre-registered client credentials. Claude sends the headers on every request alongside the OAuth bearer token. Use this to verify where a request came from, to pass additional client metadata, or to work with tunnels and gateways that need their own routing header. On an OAuth connection you can't configure `Authorization` as a request header, because OAuth uses that header.
#### Add a request header
A request header holds a fixed credential, such as an API key, that Claude stores and sends on every request to your server. To add one:
<Steps>
<Step title="Open Request headers">
In the **Add custom connector** dialog, open **Request headers**.
</Step>
<Step title="Choose the header name">
Select a header name from the list, or choose **Custom header** to enter a different name. The list offers standard authentication and routing header names such as `authorization`, `x-api-key`, and `x-auth-token`, which every connector can use.
</Step>
<Step title="Enter the value">
Enter the header value exactly as your server expects to receive it.
</Step>
<Step title="Mark it required or optional">
Choose whether the header is **Required**. When a required header has no stored value at connection time, the connection fails. When an optional header has no value, Claude omits it from the request.
</Step>
<Step title="Add more headers and save">
Repeat for any additional headers your server needs, then click **Add**. You can add up to four headers.
</Step>
</Steps>
Anthropic reviews and approves each custom header name before Claude sends it to a third-party server. This review prevents connector configuration from being used to send arbitrary header names. If you enter a header name that isn't approved, Claude rejects the save with an error. To request approval for a custom header name, contact [Claude support](https://support.claude.com/en/articles/9015913-how-to-get-support).
#### Enter the full header value
Claude sends the value exactly as you enter it. It doesn't add an authentication scheme or any other prefix. For an `Authorization` header, include the scheme in the value, as this table shows.
| You enter | Claude sends |
| ------------------- | ---------------------------------- |
| `Bearer your-token` | `Authorization: Bearer your-token` |
| `your-token` | `Authorization: your-token` |
Most servers that use bearer tokens reject a value without the `Bearer ` scheme. If your server's documentation shows `Authorization: Bearer YOUR_TOKEN`, enter `Bearer ` followed by your token, including the space. The same applies to Basic authentication, where you enter `Basic ` followed by the base64-encoded credentials.
### Turn connectors on or off in a chat
You can turn each connector on or off for a single conversation. Click the **+** button in your chat interface and select **Connectors**, then turn each connector on or off for that conversation.
### Edit or remove a connector
You can edit a connector's name or URL, or remove the connector:
<Steps>
<Step title="Open your connectors">
Go to **Customize > Connectors**. If you're a Team or Enterprise Owner, go to **Organization settings > Connectors** instead.
</Step>
<Step title="Remove or open the menu">
Click **Remove**, or select the three-dot menu.
</Step>
<Step title="Follow the prompts">
Follow the prompts.
</Step>
</Steps>
You can't change authentication settings after you add a connector. That covers OAuth credentials and request headers. To change them, remove the connector and add it again with the new details. Members then need to reconnect.
## Install a local connector in the desktop app
A desktop extension is a local MCP server packaged with MCPB (MCP Bundles) that runs on your device inside Claude Desktop. Use one when Claude needs local tools without an internet dependency, or a custom integration with an internal tool.
You can install a desktop extension in the Claude desktop app when you're signed in to claude.ai. Your organization can turn extensions off or limit which ones you can install. When extensions are turned off, **Extensions** doesn't appear in settings.
To install an extension you have as a `.mcpb` file:
<Steps>
<Step title="Open Settings > Extensions">
In the Claude desktop app, go to **Settings > Extensions**.
</Step>
<Step title="Drag in the file">
Drag the `.mcpb` file onto the page. Claude opens a preview of the extension.
</Step>
<Step title="Install">
Select **Install**, then confirm.
</Step>
</Steps>
The extension then appears in the list on the **Extensions** page.
### Get a desktop extension from your organization
On Team and Enterprise plans, your organization can build its own desktop extensions and package them with MCPB. It deploys them through enterprise software management and controls which extensions you can install.
### Build and package a desktop extension
If you're authoring the extension, follow [Build a desktop extension with MCPB](/docs/connectors/building/mcpb) and the [MCPB documentation](https://github.com/modelcontextprotocol/mcpb). You build your MCP server, bundle it with MCPB, test it locally, and then deploy it to your organization.
## Security and privacy
Some connectors in the directory are verified by Anthropic and others are community connectors, as [connector verification](/docs/connectors/verification) explains. A connector you add yourself connects Claude to an unverified service.
### Connectors you add by URL
A remote MCP server gives Claude tools that can read data from applications, create, modify, or delete data, and take actions on your behalf. Before you connect to one, take these precautions:
* Only connect to servers from trusted organizations
* Carefully review requested permission scopes during authentication
* Be aware of prompt injection risks. Claude has built-in protections
* Monitor for unexpected changes in tool behavior
While you use the connector, take these precautions:
* Monitor Claude's actions for unintended effects
* Review tool approval requests carefully
* Only click **Always allow** for trusted servers
* Turn off connectors you aren't using with the toggles in the **Connectors** item of the chat **+** menu
* Block individual tools you don't need under **Customize > Connectors** by selecting the connector and setting the tool's permission to **Blocked**
### Desktop extensions
A desktop extension runs locally with your user permissions:
* It can access only what you can access
* It transmits no data unless the extension is explicitly designed to
* Enterprise organizations get full audit capability
* Administrators can revoke it
### Report a malicious server
Report malicious MCP servers to [Anthropic's Bug Bounty Program](https://www.anthropic.com/responsible-disclosure-policy).
## Next steps
* [Build an MCP server for Claude](/docs/connectors/building/index): build your own remote MCP server for any tool
* [Connector verification](/docs/connectors/verification): which directory connectors Anthropic verifies and which are community connectors
* [MCP in Claude Code](https://code.claude.com/docs/en/mcp-quickstart): add the same server to Claude Code from the command line
connectors/custom/desktop-extensions Page removed · 82 lines, page removed
# Desktop extensions ## What are desktop extensions? ## MCPB (MCP Bundles) ### Key features ## When to use desktop vs remote ## Enterprise deployment ## Security considerations ## Getting started ## Related topics
The page is gone upstream. What it last said is kept here.
connectors/custom/remote-mcp Page removed · 180 lines, page removed
# Third party connectors with remote MCP ## What are third party connectors? ### Finding connectors ## Adding custom connectors ### For Team and Enterprise plans ### For Free, Pro, and Max plans ### Enabling connectors in chat ## The Add custom connector dialog, field by field ## Authenticating with request headers ### Adding a request header ### Enter the full header value ## Managing connectors ## Security and privacy ### Best practices ### Tool actions ## Reporting issues ## Related topics
The page is gone upstream. What it last said is kept here.
connectors/directory Changed · +42 / -30 lines
## Understand how the directory works ## Browse the directory ## Request a connector on a Team plan ## Recognize when a connector's endpoint changes ## Submit to the directory ## Next steps ## How the directory works ## Browsing the directory ## Requesting a connector on a Team plan ## When a connector's endpoint changes ## Submitting to the directory ## Related topics
connectors/getting-started Changed · +74 / -91 lines
## Before you begin ## Add a connector from the directory ## Use the connector in a conversation ## Manage or disconnect a connector ## Where connectors work ## Next steps ## What you'll learn ## Prerequisites ## Setting up your first connector ### Step 1: Access connector settings ### Step 2: Choose a connector ### Step 3: Authenticate ## Using connectors in conversations ### In chat ### In projects ## Connector-specific tips ### Google Drive ### Gmail & Calendar ### GitHub ### Slack ### Microsoft 365 ## Best practices ## Troubleshooting ## Related topics
connectors/github/index Changed · +81 / -46 lines
## Add repository content ## Connect a private repository ## Try the connector ## Keep repository content current ## Review what Claude retrieves from GitHub ## Next steps ## Adding GitHub repositories ### In chats ### In projects ## Connecting to private repositories ## What information is retrieved ## Frequently asked questions
connectors/google/calendar Changed · +40 / -52 lines
# Google Calendar ## Try the connector ## Next steps # Google Calendar integration ## How to use Calendar integration ### 1. Ask about your schedule ### 2. Review Claude's response ### 3. Follow up ### Authentication ### Data access ## Related topics
connectors/google/drive Changed · +106 / -62 lines
# Google Drive ## Connect Google Drive ## What Claude can read from Drive ## Add Drive files to a chat or project ## Try the connector ## Reconnect or remove Google Drive ## Next steps # Google Drive integration ## How to add Google Docs ### In chats ### In projects ## Supported file types ## Key features ## Frequently asked questions ## Troubleshooting ## Related topics
connectors/google/gmail Changed · +39 / -55 lines
# Gmail ## Try the connector ## Next steps # Gmail integration ## How to use Gmail integration ### 1. Ask a question ### 2. Review Claude's response ### 3. Follow up ## Understanding citations ### Authentication ### Data access ## Related topics
connectors/mcp-tunnels/oauth Changed · +17 / -10 lines
## Understand how OAuth works through a tunnel ## Next steps ## How OAuth works through a tunnel
connectors/mcp-tunnels/overview Changed · +21 / -34 lines
## Decide when to use an MCP tunnel ## Understand how tunnel traffic flows ## Meet the tunnel requirements ## When to use an MCP tunnel ## How traffic flows ## What you need
connectors/mcp-tunnels/setup Changed · +144 / -68 lines
### Replace the Tunnels API key ### Rotate the tunnel token ### Renew the server certificate ## Next steps
connectors/mcp-tunnels/troubleshooting Changed · +31 / -9 lines
### Adding the connector fails, or the connector connects but no tools appear ## Related resources ### Adding the connector fails, or it connects but no tools appear
connectors/microsoft/365 Changed · +117 / -72 lines
## Review what Claude can do ## Set up the connector ### Add the connector for your organization ### Connect your account ## Try the connector ### Approve the write permissions ### Turn on write actions ## Next steps ## Capabilities ## Setup requirements ### Phase 1: Administrator setup ### Phase 2: User enablement ## Usage ### Example queries ## What you can access
connectors/overview Page removed · 92 lines, page removed
# Connectors overview ## How connectors work ## Types of connectors ### Prebuilt integrations ### Remote MCP servers ### MCP Apps ### MCP Bundles ### Self-serve local MCP ## Ways to connect ### Connectors directory ### Third-party connectors ## Related concepts ### Plugins ## Platform availability ## Next steps
The page is gone upstream. What it last said is kept here.
connectors/slack/index Changed · +86 / -55 lines
## Use the earlier Claude in Slack app ### Install the app ## Search Slack with the connector ### Enable the connector ### Try the connector ## Manage your connections ## Privacy and data ## Next steps ## Claude in Slack (earlier app) ### Ways to interact with Claude ## Installation ### For Slack admins ### For individual users ## Slack connector ### Enabling the connector ## Managing connections ### Viewing connection status ### Disconnecting ## Privacy & data ## Troubleshooting
connectors/verification Changed · +36 / -24 lines
## Connector labels ### Verified ### Community ### Custom ## Directory listing versus custom connectors ## Stay safe with third-party connectors ## Related resources ## Verified ## Community ## Custom ## The directory is optional ## Advice for all third-party connectors
cowork/guide/plugins Changed · +22 / -17 lines
## Next steps ## Related
directory/publish New page · 115 lines, new page
# Publish to the directory ## Before you submit to the directory ### Submit your plugin, and your MCP server as a connector ### What a listing gets you ### Confirm you can submit to the directory ### Move an earlier submission to the developer portal ### Prepare for review ## Start a submission in the developer portal ## Next steps
A whole new page. There's nothing to diff it against, so here is what it says.
# Publish to the directory
> Submit a plugin or MCP connector to Anthropic's directory: the two submission kinds, who can submit, what review involves, and where to start.
The directory is Anthropic's catalog of plugins and connectors that people browse inside Claude, on the [**Customize**](https://claude.ai/customize) page in claude.ai and the desktop app. A listing reaches people in claude.ai on the web, the desktop and mobile apps, and Cowork, and a plugin they add is also available in their Claude Code sessions.
This page is for developers who have built a plugin, or the MCP server behind one, and want it listed. Anyone on a paid Claude plan can submit, there's no partner program to apply to first, and Anthropic checks each submission before it's listed.
<Note>
* If you're still deciding what goes in your plugin, see [Decide what to include in your plugin](/docs/connectors/building/what-to-build)
* If you want to build a small example plugin and submit it, see [Build your first plugin](/docs/plugins/quickstart)
* If you want to share a plugin without a public listing, use [your own marketplace](https://code.claude.com/docs/en/plugins/publish) for Claude Code or [roll it out to your whole organization](/docs/plugins/org-rollout)
* If you came here from [Claude Marketplace](https://claude.com/marketplace), the website where you browse plugins, connectors, partner products, and service partners, you're in the right place: there's no separate Claude Marketplace submission, and you submit to the directory instead
</Note>
If you're ready to submit, open the [developer portal](https://claude.ai/directory/manage) or jump to [Start a submission in the developer portal](#start-a-submission-in-the-developer-portal).
## Before you submit to the directory
A directory listing is either a plugin bundle or an MCP connector.
### Submit your plugin, and your MCP server as a connector
A plugin bundle is the main thing you submit: one listing that packages whatever the plugin contains, whether that's skills, an MCP connector reference, commands, agents, or any combination. If you also run the remote MCP server that plugin points at, you submit the server as its own MCP connector too. When you start a submission, the developer portal asks which kind you're submitting:
| | Plugin bundle | MCP connector |
| :------------------ | :------------------------------------------------------------------------------ | :------------------------------------------------------------------ |
| What it is | A plugin folder with skills, commands, agents, hooks, and MCP server references | One remote MCP server that people connect to reach your app or data |
| Where it comes from | A GitHub repository, which must be public before the listing goes live | The server's URL, with no repository needed |
| How it's listed | As a plugin with all of its components | As a connector people connect to from the directory |
If you have a remote MCP server, always submit it as an MCP connector, even when a plugin you're submitting already references it. Submitting the server as a connector gives your organization the connector's listing, its dashboard, and the option to pair it with your plugin:
* **The connector's listing**: you edit its details and its authentication configuration
* **The connector's dashboard**: it shows the server's health and usage by tool, which a plugin's **Usage** tab doesn't break out
* **Pairing with your plugin**: when the connector and a plugin bundle that references it are submitted from the same organization, you can pair the two listings
For your own product, make two submissions: the server as an MCP connector, then the plugin bundle whose skills teach Claude how to use it. Point the bundle's MCP server configuration at the same URL, so people who have both see one set of tools rather than two.
Desktop extension listings in the directory are deprecated, and the directory no longer accepts local MCP servers packaged as desktop extensions (MCPB). To distribute a local MCP server through the directory, include it in a plugin bundle. [Compare component support by app](/docs/plugins/platform-support#compare-component-support-by-app) shows where a plugin's local servers run.
Skills aren't a submission type on their own. Put them in a bundle.
### What a listing gets you
A directory listing gives you:
* **One listing across Claude's apps**: people find it in claude.ai on the web, the desktop and mobile apps, and Cowork, and a plugin they add is also available in their Claude Code sessions
* **One developer portal for the whole life of a listing**: at [claude.ai/directory/manage](https://claude.ai/directory/manage) you submit, follow each submission's status, publish new versions, see usage, and change or delist the listing. [Track your directory submission](/docs/directory/submission-status) explains each status
* **Updates that reach the people who have your plugin**: when you push a new version, the directory scans it and, once it's published, serves it to them. [Update a published plugin](/docs/plugins/submit#update-a-published-plugin) covers the steps
* **Usage figures**: a published plugin's **Usage** tab shows installs, versions, how often each skill and MCP server runs, and error rates. A listed connector has a dashboard with server health and usage by tool. [Track published plugin usage](/docs/connectors/building/after-publishing#track-published-plugin-usage) and [Manage your directory listing](/docs/connectors/building/managing-your-listing) cover each
### Confirm you can submit to the directory
You submit from a claude.ai account, and the listing belongs to the organization you submit from. Before you start, confirm each of these:
* **Plan**: Pro, Max, Team, or Enterprise. Free accounts can't submit
* **Role**: on Pro and Max, you submit from your own account and there's no role to check. On Team and Enterprise, an Owner can submit. On Enterprise, an Owner can also grant the **Directory** permission to other members through a custom role under [**Organization settings > Roles**](https://claude.ai/admin-settings/roles). If you don't have one of those roles, ask an Owner
* **Which organization**: for a plugin bundle, the first organization to submit a given repository folder holds that listing, and the portal refuses a second organization's submission of the same one. Submit from the organization that should own the listing long term
### Move an earlier submission to the developer portal
A listing you submitted before the developer portal existed stays as it is. Move it to the portal to get what the portal adds:
* New versions that the directory scans and, once they're published, serves to the people who have your plugin
* A status for each submission
* Usage figures for a published plugin
The earlier Claude Console form for plugin submissions is no longer supported. To move a submission you made through it, submit it again at [claude.ai/directory/manage](https://claude.ai/directory/manage) from a claude.ai account.
### Prepare for review
Anthropic checks every submission before it's listed, and checks a plugin bundle again with each new version.
* **Plugin bundles**: every version gets automated validation and a security scan, and a person reviews a new listing before it goes live. The [plugin pre-submission checklist](/docs/plugins/pre-submission-checklist) lists what validation checks
* **MCP connectors**: every submission is scanned automatically for policy compliance and, by default, listed as a Community connector. Anthropic may escalate a listing to Verified review, in which a reviewer tests each tool against the [connector pre-submission checklist](/docs/connectors/building/review-criteria)
Every listing is subject to the [Anthropic Software Directory Terms](https://support.claude.com/en/articles/13145338-anthropic-software-directory-terms) and [Software Directory Policy](https://support.claude.com/en/articles/13145358-anthropic-software-directory-policy).
There's no separate application for the **Verified** label or for where in the directory a listing is placed. Anthropic decides both during review, and [Connector verification](/docs/connectors/verification#list-your-own-connector) explains how a listing becomes Verified and what each label means to people installing it.
Review time isn't fixed. Your submission's current state shows in the portal, and [Track your directory submission](/docs/directory/submission-status) explains what each status in the portal means and who acts next.
## Start a submission in the developer portal
You submit and maintain listings in the developer portal at [claude.ai/directory/manage](https://claude.ai/directory/manage).
To start a submission:
<Steps>
<Step title="Select Submit new">
In the developer portal at [claude.ai/directory/manage](https://claude.ai/directory/manage), select **Submit new**.
</Step>
<Step title="Choose the submission type">
Under **What would you like to submit?**, choose **Plugin bundle** or **MCP connector**.
</Step>
<Step title="Follow the checklist and submit pages">
Work through the checklist and submit pages for that kind:
* [Plugin pre-submission checklist](/docs/plugins/pre-submission-checklist), then [Submit a plugin](/docs/plugins/submit): for a plugin bundle
* [Connector pre-submission checklist](/docs/connectors/building/review-criteria), then [Submit a connector](/docs/connectors/building/submission): for an MCP connector
</Step>
</Steps>
## Next steps
These pages cover building and submitting a first plugin and, once a listing is published, maintaining it from the same portal:
* [Build your first plugin](/docs/plugins/quickstart): build a small example plugin and submit it to the directory
* [Track your submission](/docs/directory/submission-status): check what your submission's status means and who acts next
* [After publishing](/docs/connectors/building/after-publishing): update your server or plugin, and delist
* [Track published plugin usage](/docs/connectors/building/after-publishing#track-published-plugin-usage): see installs, versions, runs, and error rates on the plugin's **Usage** tab
* [Manage your directory listing](/docs/connectors/building/managing-your-listing): for an MCP connector, check health and usage metrics and edit the listing
directory/submission-status New page · 69 lines, new page
# Track your directory submission ## Plugin bundle statuses ## MCP connector statuses ## Contact Anthropic about a submission ## After your listing is published ## Next steps
A whole new page. There's nothing to diff it against, so here is what it says.
# Track your directory submission > Look up the status the developer portal shows for a plugin bundle or MCP connector submission: what it means, who acts next, and who to contact. After you submit to the directory, the developer portal at [claude.ai/directory/manage](https://claude.ai/directory/manage) shows one status for each submission. The status tells you whether Anthropic is working on the submission, whether it's waiting on you, or whether it's live. This page is for anyone with a submission in the portal. Review time isn't fixed. <Note> If you haven't submitted yet, see [Publish to the directory](/docs/directory/publish). </Note> Find your status in the table for your submission's kind: [plugin bundle](#plugin-bundle-statuses) or [MCP connector](#mcp-connector-statuses). If nothing is waiting on you and you still need an answer, see [Contact Anthropic about a submission](#contact-anthropic-about-a-submission). ## Plugin bundle statuses Open the plugin from **Submissions** in the developer portal. The status appears next to the plugin's name, and the card under it says what happens next. | Status | What it means | Who acts next | | :---------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------- | | **Draft** | Nothing has been sent to Anthropic yet | You. Select **Continue submission**. | | **Scanning** | You submitted, and the security scan is waiting to start or running. If a scan attempt fails on Anthropic's side or GitHub's, the directory retries it. | Anthropic. There's nothing to do on your side. | | **Needs changes** | The newest version didn't pass, or the scanner couldn't fetch or accept the plugin. The plugin's page names what to change. | You. [Fix a failed version](/docs/plugins/submit#fix-a-failed-version) covers pushing a fix and resubmitting. | | **In review** | An Anthropic reviewer is checking the listing. When the version was held, the card names the category it's held for. The reviewer's decision appears on the plugin's page. | Anthropic | | **Approved** | The version passed, and it isn't live yet. The card says who publishes it: an Anthropic reviewer, you, or the directory by itself. | Whoever the card names. [Publish a passing version](/docs/plugins/submit#publish-a-passing-version) explains the publish settings. | | **Published** | A version is live in the directory. The card also says what is happening with any newer version, such as being scanned, waiting with a reviewer, or not passing. A newer version that doesn't pass leaves the published one unaffected. | Nobody, unless the card names a newer version that needs changes | | **Not live yet** | The submission is marked published, and nothing is listed yet. The directory team has to list it. | Anthropic | | **Delisted** | The plugin isn't visible in the directory. Select **Relist plugin** to ask for it back. | You, if you want it listed again | | **Withdrawn** | Nothing is under review or listed | Nobody | **Approved** doesn't mean people can install the plugin. A plugin is installable only once its status is **Published**. ## MCP connector statuses Open the connector from the developer portal's list of submissions. A card at the top of the connector's page shows the status, one sentence about it, and the next step when there is one. A submission doesn't pass through every status in the table. Anthropic scans each connector submission automatically and, by default, lists it as a Community connector with no action from you. Some submissions also get a review from a person, and the statuses that mention a reviewer apply to those. [How Anthropic reviews directory submissions](/docs/directory/publish#prepare-for-review) describes both. | Status | What it means | Who acts next | | :-------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------- | | **Draft** | Nothing has been sent to Anthropic yet. A draft can have a reviewer's note if it was sent back and saved again. | You | | **In review** | A reviewer is checking the listing. Anthropic emails your primary contact if it needs anything. | Anthropic | | **Changes requested** | The reviewer left a note. Select **View feedback** on the card to read it, then address it and resubmit. | You | | **Not approved** | The reviewer's notes say why. Select **View feedback** to read them. You can edit the listing and resubmit. | You | | **Approved** | The review team cleared the listing, and it isn't in the directory yet. It goes live when someone who can edit the listing publishes it. If you edit the listing before you publish, it returns to draft for another review. | You. Select **Publish**. | | **Published** | The connector is live in the directory. If you submitted an edit, the card says whether that edit is in review, and the live listing stays until the edit is approved. | Nobody | [Manage your directory listing](/docs/connectors/building/managing-your-listing) covers reviewer feedback, listing edits, and the health and usage metrics for a published connector. ## Contact Anthropic about a submission Check the status first. **Scanning** and **In review** mean Anthropic acts next and nothing is waiting on you. When you need to reach Anthropic, use the channel for your submission's kind: * **Plugin bundle**: open the plugin in the developer portal, open its menu, and select **Get help** or **Contact Anthropic**. A plugin that wasn't approved shows **Appeal this decision** on its page. You can also email `[email protected]`, where replies can be delayed * **MCP connector**: email `[email protected]` Include the listing's name, the organization you submitted from, and the status the portal shows. ## After your listing is published A published listing appears in the directory that claude.ai, the Claude desktop and mobile apps, and Cowork share. [Plugin feature support across platforms](/docs/plugins/platform-support) lists which of a plugin's components load on each surface. A published connector is listed with the **Community** label by default. There's no application for the **Verified** label. [Connector verification](/docs/connectors/verification#list-your-own-connector) explains how a listing becomes Verified and what each label means to people installing it. ## Next steps * [After publishing](/docs/connectors/building/after-publishing): update your server or plugin, and delist * [Submit your plugin](/docs/plugins/submit#after-you-submit-a-plugin): follow each new plugin version through the scan, review, and publishing * [Manage your directory listing](/docs/connectors/building/managing-your-listing): for a connector, read reviewer feedback, edit the listing, and check its metrics
extend/overview New page · 61 lines, new page
# Connectors, skills, and plugins ## Choose plugins, connectors, or skills ## Compare connectors, skills, and plugins ## Where your connectors, skills, and plugins are available ## Next steps
A whole new page. There's nothing to diff it against, so here is what it says.
# Connectors, skills, and plugins
> Choose how to customize Claude: MCP connectors give it access to your tools, skills teach it how you do a task, and plugins package both as one install.
You can customize Claude with [MCP connectors](/docs/connectors/getting-started), [skills](/docs/skills/overview), and [plugins](/docs/plugins/overview). MCP connectors give Claude access to a tool or data source, and skills teach it how to do a task the way you or your team does it. Plugins package skills, MCP connectors, commands, and agents into one unit that you can install once and share with others.
You add all three from the [**Customize**](https://claude.ai/customize) page in claude.ai or the Claude desktop app. [Plugin feature support across platforms](/docs/plugins/platform-support) lists which parts of a plugin work in chat, Cowork, and Claude Code.
<Note>
If you want to make a connector or plugin for other people to install, see [Build for Claude](/docs/build/overview). Anyone on a paid Claude plan can submit one to Anthropic's directory for review without applying to a partner program first; on Team and Enterprise, an Owner submits it.
</Note>
## Choose plugins, connectors, or skills
Each card below leads to the setup page for one of the three. The last card is for Owners who manage plugins for a Team or Enterprise organization.
<CardGroup cols={2}>
<Card title="Plugins" icon="box" href="/docs/plugins/overview" arrow>
Add a set of connectors, skills, and commands with one install, such as everything for one tool, or your team's standard setup.
</Card>
<Card title="MCP connectors" icon="plug" href="/docs/connectors/getting-started" arrow>
Give Claude access to a tool or data source, such as your files, calendar, issue tracker, or an internal API.
</Card>
<Card title="Skills" icon="book-open" href="/docs/skills/how-to" arrow>
Have Claude do a task a particular way, such as your release-note format, your contract checklist, or your weekly report.
</Card>
<Card title="Plugins for your organization" icon="building" href="/docs/plugins/admin" arrow>
If you're an Owner on a Team or Enterprise plan, choose which plugins members can add, install some for everyone, and add your organization's own.
</Card>
</CardGroup>
## Compare connectors, skills, and plugins
* **[MCP connectors](/docs/connectors/getting-started)** connect Claude to an external service, such as your files, calendar, issue tracker, or an internal API, so Claude can read from it and act in it. Each one is a connection to an MCP server, which the service runs so Claude can reach it. In Claude's settings, connectors appear under **Connectors**
* **[Skills](/docs/skills/overview)** are written instructions, optionally with scripts and reference files, that Claude loads when the task you give it calls for them. Use a skill when you want Claude to follow your process for a task
* **[Plugins](/docs/plugins/overview)** are installable packages. One plugin can hold skills, MCP connectors, commands you run by name, and agents Claude delegates parts of a task to. You can add a skill or a connector on its own. Use a plugin when you want several of them installed and shared as one unit
When a plugin exists for a product you use, it bundles that product's connector with the skills that use it. After you add the plugin, you sign in to its connector from the plugin's page.
The diagram shows where each of the three acts when you send one request.
<img className="block dark:hidden" src="https://mintcdn.com/claude-ai/-njlLvrWxFCRdJVz/images/extend/how-connectors-skills-plugins-fit.svg?fit=max&auto=format&n=-njlLvrWxFCRdJVz&q=85&s=372738e15abde6a69704ebf43b5472f0" alt="Diagram read left to right. You ask in chat, Cowork, or Claude Code, and the request goes to Claude. A skill, written instructions with your steps, format, or checklist, feeds into Claude, which reads it when your request needs it. Claude calls a connector, a connection to the service's MCP server, which reads and acts in a service you use: your tools and data, such as files, calendar, chat, an issue tracker, internal APIs, and more. A dashed wrapper labeled plugin, optional, encloses the skill and the connector, captioned one package for both." width="1000" height="400" data-path="images/extend/how-connectors-skills-plugins-fit.svg" />
<img className="hidden dark:block" src="https://mintcdn.com/claude-ai/-njlLvrWxFCRdJVz/images/extend/how-connectors-skills-plugins-fit-dark.svg?fit=max&auto=format&n=-njlLvrWxFCRdJVz&q=85&s=add95697fad07587c1eda583c3023c5a" alt="Diagram read left to right. You ask in chat, Cowork, or Claude Code, and the request goes to Claude. A skill, written instructions with your steps, format, or checklist, feeds into Claude, which reads it when your request needs it. Claude calls a connector, a connection to the service's MCP server, which reads and acts in a service you use: your tools and data, such as files, calendar, chat, an issue tracker, internal APIs, and more. A dashed wrapper labeled plugin, optional, encloses the skill and the connector, captioned one package for both." width="1000" height="400" data-path="images/extend/how-connectors-skills-plugins-fit-dark.svg" />
## Where your connectors, skills, and plugins are available
Connectors, skills, and plugins you add in claude.ai or the desktop app are saved to your account, so you have them in chat on the web, desktop, and mobile wherever you sign in. Claude Code picks them up when you sign in there with the same account. A plugin on your account also loads in your Cowork tasks. Things you add from the Claude Code command line stay on that machine.
In chat, you can use a plugin's skills, commands, and connectors. Cowork and Claude Code also run its agents. [Plugin feature support across platforms](/docs/plugins/platform-support) lists each component by app.
## Next steps
* [Add your first connector](/docs/connectors/getting-started): connect one from the directory and use it in a conversation
* [Skills overview](/docs/skills/overview): turn on a skill Anthropic provides or add one of your own
* [Plugins](/docs/plugins/overview): find a plugin and add it to your account
* [Plugin feature support across platforms](/docs/plugins/platform-support): check whether a plugin's parts work where you use Claude
* [Build for Claude](/docs/build/overview): build a plugin or MCP server for other people and list it in Anthropic's directory
index Changed · +34 / -16 lines
plugins/admin New page · 355 lines, new page
# Manage plugins for your organization ## Find your organization's plugin settings ### Inventory ### Marketplaces ### Organization skills ### Requests ### Policy ## Review your organization's inventory ### Open an item's page ### Roll back to an earlier version ## Control which plugins members get ### Set availability ### Add your own plugins ### Manage synced marketplaces #### Remove one of Anthropic's sources ### Control what members add themselves ### Turn plugins and skills off for everyone ### Let members share plugins with each other ### Stop sharing by a member who left ### Review plugins that members publish #### Set the publishing policy #### Review a request ### Limit to user groups on Enterprise ## Track usage in your organization ## Related organization controls
A whole new page. There's nothing to diff it against, so here is what it says.
# Manage plugins for your organization
> Control which plugins members of your Team or Enterprise organization can use in claude.ai and Cowork: see what you have, add your own, and set availability.
Owners of a Team or Enterprise organization decide which plugins members can use in claude.ai and Cowork from [**Organization settings > Plugins & skills**](https://claude.ai/admin-settings/skills). You set each plugin's availability: hidden, available for members to install, installed for everyone, or required. You can also add your organization's own plugins from a GitHub or GitLab repository or a zip file.
This page is for Owners, and for Enterprise members whose role includes managing the organization's plugins.
<Note>
* If you set plugin policy for the Claude Code command line, see [managed settings](https://code.claude.com/docs/en/plugins/org) in the Claude Code docs
* If you want one plugin to reach members in claude.ai and Cowork and developers in the Claude Code command line, and need to decide between this page and managed settings, or use the two together, see [Roll out a plugin to your whole organization](/docs/plugins/org-rollout)
* If you run Claude Desktop on your own model provider, see [MCP, plugins, skills, and hooks](/docs/third-party/claude-desktop/extensions)
</Note>
To start, go to [**Organization settings > Plugins & skills**](https://claude.ai/admin-settings/skills?tab=inventory). From there you can [review what your organization has](#review-your-organization%E2%80%99s-inventory), [set each plugin's availability](#set-availability), or [add your organization's own plugins](#add-your-own-plugins).
## Find your organization's plugin settings
[**Organization settings > Plugins & skills**](https://claude.ai/admin-settings/skills?tab=inventory) is available on Team and Enterprise plans to Owners and Primary Owners. On Enterprise, it's also available to members whose custom role includes viewing or managing the organization's libraries. That permission is the **Libraries** row in the roles editor at **Organization settings > Roles**. The role labeled **Admin** in your members list doesn't include this page. With a role that only views libraries, you see the page without the **Add** menu and without the availability settings.
The **Plugins & skills** page has these tabs: **Inventory**, **Marketplaces**, **Organization skills**, **Requests**, and **Policy**.
### Inventory
The [**Inventory**](https://claude.ai/admin-settings/skills?tab=inventory) tab lists every plugin and skill in your organization and who can use each one. This is where you [review what you have](#review-your-organization%E2%80%99s-inventory), [set availability](#set-availability), and [add your own plugins](#add-your-own-plugins).
### Marketplaces
The [**Marketplaces**](https://claude.ai/admin-settings/skills?tab=marketplaces) tab lists the repositories and catalogs your organization's plugins come from, with the sync status of each one. This is where you [re-sync a marketplace, turn on automatic sync, or remove a source](#manage-synced-marketplaces).
### Organization skills
The **Organization skills** tab holds skills your organization uploaded that haven't moved into the **Inventory** tab yet. It appears only while your organization has some.
### Requests
The [**Requests**](https://claude.ai/admin-settings/skills?tab=requests) tab lists plugins and skills that members have asked to publish to your organization. This is where you [approve or deny them](#review-plugins-that-members-publish).
### Policy
The [**Policy**](https://claude.ai/admin-settings/skills?tab=policy) tab holds the switches for what members can do themselves: [create and add their own](#control-what-members-add-themselves), [share with each other](#let-members-share-plugins-with-each-other), and [publish to the organization](#review-plugins-that-members-publish). It also holds the **Skills and plugins scanning** switch, which turns on the security scan whose result the **Inventory** tab shows, and the switch that [turns plugins and skills off for everyone](#turn-plugins-and-skills-off-for-everyone).
## Review your organization's inventory
The [**Inventory**](https://claude.ai/admin-settings/skills?tab=inventory) tab lists every skill and plugin your organization governs in one table. The table includes what your organization uploaded or syncs from a marketplace, plugins from Anthropic's catalogs, which are Anthropic's default marketplaces, and what members created for themselves or shared.
Each row has these columns. Read across a row to see where an item came from and who has it:
* **Name**: the item's name, marked **Skill** or **Plugin**
* **Source**: the marketplace or repository the item comes from, or **Member** for an item a member created
* **Security scan**: the result of the item's security scan. You see this column when **Skills and plugins scanning** is on in the [**Policy**](https://claude.ai/admin-settings/skills?tab=policy) tab. Otherwise the column is **Version**
* **Capabilities**: the connectors and tools the item uses
* **Audience**: who can use the item, such as everyone or specific groups
* **Users (30d)**: how many people in your organization used the item in the last 30 days
Use the controls above the table to narrow it to the items you're looking for:
* **Search by name**: find an item by its name
* **Source**: show items from your organization's marketplaces, from Anthropic, or from members
* **Audience**: show items by who can use them
* **Add filter**: filter by **Type** to show only skills or only plugins, or by **Author** to show one person's items
* **Sort**: order the table by **Newest**, **Name A–Z**, or **Most users**
### Open an item's page
Select a row to open the item's page. For an item your organization uploaded or syncs, the page has these sections:
* **Distribution**: the item's availability and any group settings. These are the settings that [Set availability](#set-availability) and [Limit to user groups on Enterprise](#limit-to-user-groups-on-enterprise) describe
* **Connectors & tools**: what the item connects to
* **Version history**: each version with its date, who added it, and how it arrived, such as a GitHub push or an upload. To see what changed, open a version's menu and select **Compare with current**
When the item's security scan warns, fails, or couldn't run, a notice on the page gives the result and the reason. To run the scan again, open the menu on the item's page and select **Retry scan**.
To add a version of an item your organization uploaded, open the item's menu and select **Upload new version**. To remove an item your organization owns, use the delete option in the same menu.
For an item a member created for themselves, the page shows who created it, who they've shared it with, any request to publish it, and its scan status. It doesn't show the item's version history.
### Roll back to an earlier version
For an item your organization uploads, you can make any earlier version the one members get:
<Steps>
<Step title="Open the item's page">
On the [**Inventory**](https://claude.ai/admin-settings/skills?tab=inventory) tab, select the item's row to open its page.
</Step>
<Step title="Go to Version history">
Go to **Version history**. The version members get now is marked **Current**.
</Step>
<Step title="Compare the earlier version">
To see what an earlier version changes, open that version's menu and select **Compare with current**.
</Step>
<Step title="Revert to the version">
Open the menu of the version you want, select **Revert to this version**, and confirm.
</Step>
</Steps>
Members then get that version, and **Current** moves to it. Reverting deletes nothing, so every version stays in the list. To go forward again, open a newer version's menu and select **Make this the current version**.
Reverting isn't available for an item synced from a repository. Fix the plugin in the repository and push to the default branch. Then select **Re-sync** on the marketplace in the [**Marketplaces**](https://claude.ai/admin-settings/skills?tab=marketplaces) tab, as [Update through organization settings](/docs/plugins/org-rollout#update-through-organization-settings) describes.
While the repository is being fixed, you can [set the plugin's availability](#set-availability) to **Not available**. Members stop seeing the plugin and Claude stops loading it for them, including members who had it installed. On Enterprise, a group's own **Group access…** setting replaces the organization-wide one for that group's members, as [Limit to user groups on Enterprise](#limit-to-user-groups-on-enterprise) explains. Set any group that has one for this plugin to **Not available** as well. Set the availability back when the fix has synced. Don't use **Delete source** on the marketplace for this, because it permanently deletes every plugin in that marketplace for every member.
## Control which plugins members get
You set a plugin's availability, add your own plugins, manage synced marketplaces, decide what members can add, share, and publish, and set availability for user groups, all from the tabs of **Plugins & skills**.
### Set availability
A plugin's availability decides whether members can see the plugin, install it if they want it, get it installed automatically, or must keep it on. In the plugin's row menu, this setting is labeled **Default access**. To set it:
<Steps>
<Step title="Open the Inventory tab">
Go to [**Organization settings > Plugins & skills**](https://claude.ai/admin-settings/skills?tab=inventory) and stay on the **Inventory** tab.
</Step>
<Step title="Open the plugin's menu">
Open the menu at the end of the plugin's row.
</Step>
<Step title="Select Default access">
Select **Default access**.
</Step>
<Step title="Choose a value">
Choose **Not available**, **Available to install**, **Installed by default**, or **Required**.
</Step>
</Steps>
The product shows the availability setting under other labels too: **Distribution** on the item's page, **Audience** in the table, and **Group access…** for a user group.
Each availability value decides what members see and whether they can remove the plugin:
| Setting | What members see | Can members remove it |
| :----------------------- | :--------------------------------------------------------------------------------------------- | :----------------------------------------- |
| **Not available** | Nothing; the plugin is hidden from **Customize > Plugins** and can't be installed | Not applicable |
| **Available to install** | The plugin appears under **Discover** and members install it if they want it | Yes |
| **Installed by default** | The plugin is already installed for every member | Members can turn it off |
| **Required** | The plugin is installed and always on, marked **This plugin is required by your organization** | No; members can't turn it off or remove it |
Availability doesn't add a plugin's bundled connectors. If a plugin you install by default or require includes a connector, an Owner also adds that connector in [**Organization settings > Connectors**](https://claude.ai/admin-settings/connectors), and members then connect it with their own account.
You can set availability for plugins your organization owns and for plugins from Anthropic's catalogs. An item a member created for themselves has no availability setting.
In Claude Code sessions that sync the member's account plugins, a required plugin stays on as well. [Choose a rollout route](/docs/plugins/org-rollout#choose-a-rollout-route) says which sessions sync, and [Control which synced plugins load](https://code.claude.com/docs/en/plugins/loading#control-which-synced-plugins-load) in the Claude Code docs covers what the member sees there.
### Add your own plugins
Adding a plugin or skill of your own puts it on the **Inventory** tab, private to your organization, where you then [set its availability](#set-availability) for members. To add one:
<Steps>
<Step title="Open Plugins & skills">
Go to [**Organization settings > Plugins & skills**](https://claude.ai/admin-settings/skills?tab=inventory).
</Step>
<Step title="Select Add and choose the source">
Select **Add**, then choose where the plugin or skill comes from. The menu groups these items under **Skills** and **Plugins**:
* **Upload a skill** or **Create a skill**: one skill for your organization
* **Upload a plugin**: a plugin zip
* **Create a plugin**: a plugin you write in the browser
* **Sync from GitHub** or **Sync from GitLab**: a [plugin marketplace](https://code.claude.com/docs/en/plugins/create-marketplace) repository that contains your plugins
* **Add marketplace**: another source of plugins, such as one of Anthropic's catalogs
</Step>
</Steps>
A marketplace you add appears on the **Marketplaces** tab, and its plugins appear on the **Inventory** tab. Adding plugins here doesn't publish them anywhere.
[Sync your organization's plugins from a repository](/docs/plugins/org-sync) covers the repository requirements for syncing, the GitLab setup, and how members receive the plugins without needing access to the repository themselves.
### Manage synced marketplaces
The [**Marketplaces**](https://claude.ai/admin-settings/skills?tab=marketplaces) tab lists each marketplace your organization's plugins come from, with its sync status and its number of items. Select a marketplace to open its page, where these controls decide when it syncs and what availability its plugins start with:
* **Re-sync**: sync the marketplace now. A marketplace syncs when you select **Re-sync** or, with **Sync automatically** on, when someone pushes to the repository's default branch. Nothing syncs on a schedule. **Re-sync** is also in the marketplace's row menu on the **Marketplaces** tab
* **Sync automatically**: start a sync when someone pushes to the repository's default branch. It's in the **Sync** section, and it requires a webhook on the repository
* **Default access**: the availability for every plugin from this marketplace that doesn't have its own setting, including plugins added to it later. It's in the **Default settings** section. For Anthropic's directory, the choices are **Not available** and **Available to install** only
If a sync fails, the marketplace's page shows the date and the reason, with a **View affected items** link.
#### Remove one of Anthropic's sources
You can remove a catalog source, such as Anthropic's directory or a partner catalog, so that members no longer see plugins from it:
<Steps>
<Step title="Open the Marketplaces tab">
Open the [**Marketplaces**](https://claude.ai/admin-settings/skills?tab=marketplaces) tab.
</Step>
<Step title="Find the catalog's row">
Find the row that shows **Catalog** under its name. Its **Sync** column reads **Managed by Anthropic**, or **Managed by** the partner's name for a partner catalog.
</Step>
<Step title="Remove it from the organization">
Open the menu at the end of the row and select **Remove from organization**.
</Step>
<Step title="Confirm">
In **Remove source**, select **Remove**.
</Step>
</Steps>
To add the source back, select **Add**, then **Add marketplace**, then **Browse Anthropic sources**, and select **Add** next to the source.
### Control what members add themselves
Members can add plugins of their own from **Customize > Plugins > Add**: a marketplace by URL, an uploaded file, **Create a plugin**, or **Create with Claude**. The setting that lets members create skills also controls those options.
Go to [**Organization settings > Plugins & skills > Policy**](https://claude.ai/admin-settings/skills?tab=policy) and turn **User-created skills** on or off. When **User-created skills** is off, members can't upload or create skills, and the plugin options don't appear in their **Add** menu.
For the Claude Code command line, the counterpart is managed settings. [Restrict what users can install](https://code.claude.com/docs/en/plugins/org#restrict-what-users-can-install) in the Claude Code docs covers those keys.
### Turn plugins and skills off for everyone
You can turn plugins and skills off for your whole organization. This also stops Claude Code from loading the plugins it syncs from members' claude.ai accounts.
<Steps>
<Step title="Open the Policy tab">
Go to [**Organization settings > Plugins & skills > Policy**](https://claude.ai/admin-settings/skills?tab=policy).
</Step>
<Step title="Turn off Skills">
Turn off **Skills**.
</Step>
</Steps>
Members then see **Skills must be enabled in order to use plugins.** on **Customize > Plugins**, and they can't add or use plugins there. The organization's own skills are off as well.
To stop the sync into Claude Code and leave plugins on in claude.ai and Cowork, set `syncClaudeAiPlugins` to `false` in Claude Code managed settings instead. [Control which synced plugins load](https://code.claude.com/docs/en/plugins/loading#control-which-synced-plugins-load) in the Claude Code docs covers that setting.
### Let members share plugins with each other
Members can share a plugin they made with specific people without involving you. In [**Organization settings > Plugins & skills > Policy**](https://claude.ai/admin-settings/skills?tab=policy), **Skill sharing** controls whether members can share skills and plugins they made with specific people in your organization. On Enterprise, **Share with groups** lets them share with user groups as well. [Share a plugin with specific people](/docs/plugins/share#share-a-plugin-with-specific-people) covers what members and recipients see.
### Stop sharing by a member who left
When someone leaves your organization, the items they shared keep working for the people they shared them with. The **Inventory** tab shows a notice with the number of former members who still share items. To end that sharing:
<Steps>
<Step title="Open the review">
On the [**Inventory**](https://claude.ai/admin-settings/skills?tab=inventory) tab, select **Review** in the notice.
</Step>
<Step title="Stop sharing">
Select **Stop sharing** for an item, or stop sharing all of one former member's items at once.
</Step>
<Step title="Confirm">
Confirm. Everyone the item is shared with loses access right away.
</Step>
</Steps>
You can also open a former member's item from the table. Its page has an **Owner has left** section with **Stop sharing** and **Delete**.
### Review plugins that members publish
Members on Team and Enterprise plans can publish a plugin they made to your organization's library with **Publish to org** on the plugin's page. You decide whether that's allowed and whether each request waits for your approval. [Publish a plugin to your organization](/docs/plugins/share#publish-a-plugin-to-your-organization) covers the member's side.
#### Set the publishing policy
The **Publishing** setting decides whether members can publish to your organization and whether each request waits for review. Set it in [**Organization settings > Plugins & skills > Policy**](https://claude.ai/admin-settings/skills?tab=policy). Owners and Primary Owners can change it. The same setting covers skills and plugins, and it has these values:
| Publishing | What members can do |
| :------------------ | :------------------------------------------------------------------------------------------------------------------------------------------- |
| **Requires review** | Submit a plugin for review. Nothing reaches other members until a reviewer approves the request. |
| **Open** | Publish without review. Where your organization scans what members publish, the plugin goes live after the security scan passes. |
| **Off** | Nothing. **Publish to org** doesn't appear for members, and requests that were already waiting are hidden until you turn publishing back on. |
If nobody in your organization has chosen a **Publishing** value, your plan's default applies:
* **Team**: **Open**
* **Enterprise**: **Off**. On October 2, 2026, the Enterprise default becomes **Requires review**. To keep a different value, choose it before then
#### Review a request
Under **Requires review**, nothing reaches other members until a reviewer approves the request. To approve or deny a request, you need to be an Owner or Primary Owner. On Enterprise, a member whose custom role includes managing the organization's libraries can review requests too.
Requests to publish wait in [**Organization settings > Plugins & skills > Requests**](https://claude.ai/admin-settings/skills?tab=requests). You can't review a request you submitted yourself. A pending request that looks similar to other items in your organization is tagged **Possible duplicate**, and its review page lists up to three similar items, each with a **Compare** link.
To review a request:
<Steps>
<Step title="Open the request">
Open the request to see what the member submitted.
</Step>
<Step title="Approve or deny">
Select **Approve** or **Deny**.
</Step>
<Step title="Set availability or give a reason">
If you approve, choose the plugin's availability, as [Set availability](#set-availability) describes.
If you deny, enter a reason, which the member receives by email and sees on their plugin's page. A denial closes that request, and the member can revise the plugin and submit a new one.
</Step>
</Steps>
A plugin that a member published appears on the **Inventory** tab with your organization's other plugins. You [set its availability](#set-availability) there, and you can delete it from its menu.
Cut at 300 lines. The page has the rest.
plugins/build New page · 642 lines, new page
# Plugin structure and testing ## Lay out the plugin folder ### Folder layout ### Check what each app loads ### Start from an example ## Write the plugin ### Write the manifest ### Bundle an MCP connector with its skill ## Test the plugin on each surface ## Add Claude Code-only components ## Next steps
A whole new page. There's nothing to diff it against, so here is what it says.
# Plugin structure and testing
> Reference for the plugin folder: what each file is, the manifest fields every app reads, bundling an MCP connector with its skill, and testing on each app.
export const Piece = ({id, children}) => <div className="pe-piece" data-piece={id}>{children}</div>;
export const PluginExplorer = ({children, variant}) => {
const SKILL_PIECES = [{
id: 'skillmd',
required: 'Required',
name: 'SKILL.md',
path: 'brand-guidelines/SKILL.md',
lines: [{
depth: 0,
kind: 'file',
text: 'SKILL.md'
}],
href: '/skills/how-to#create-a-skillmd-file',
linkText: 'Go to Create a SKILL.md file'
}, {
id: 'references',
name: 'Reference file',
path: 'brand-guidelines/references/voice-and-tone.md',
lines: [{
depth: 0,
kind: 'folder',
text: 'references/'
}, {
depth: 1,
kind: 'file',
text: 'voice-and-tone.md'
}],
href: '/skills/how-to#add-resources',
linkText: 'Go to Add resources'
}, {
id: 'assets',
name: 'Asset',
path: 'brand-guidelines/assets/slide-template.md',
lines: [{
depth: 0,
kind: 'folder',
text: 'assets/'
}, {
depth: 1,
kind: 'file',
text: 'slide-template.md'
}],
href: '/skills/how-to#add-resources',
linkText: 'Go to Add resources'
}, {
id: 'scripts',
name: 'Script',
path: 'brand-guidelines/scripts/check_contrast.py',
lines: [{
depth: 0,
kind: 'folder',
text: 'scripts/'
}, {
depth: 1,
kind: 'file',
text: 'check_contrast.py'
}],
href: '/skills/how-to#add-scripts',
linkText: 'Go to Add scripts'
}];
const PLUGIN_PIECES = [{
id: 'manifest',
required: 'Required',
name: 'Manifest',
path: '.claude-plugin/plugin.json',
lines: [{
depth: 0,
kind: 'folder',
text: '.claude-plugin/'
}, {
depth: 1,
kind: 'file',
text: 'plugin.json'
}],
href: '/plugins/build#write-the-manifest',
linkText: 'Go to Write the manifest'
}, {
id: 'skills',
name: 'Skill',
path: 'skills/file-expense/SKILL.md',
lines: [{
depth: 0,
kind: 'folder',
text: 'skills/'
}, {
depth: 1,
kind: 'folder',
text: 'file-expense/'
}, {
depth: 2,
kind: 'file',
text: 'SKILL.md'
}],
href: '/skills/how-to',
linkText: 'Go to Create custom skills'
}, {
id: 'references',
name: 'Skill reference file',
path: 'skills/file-expense/references/categories.md',
lines: [{
depth: 2,
kind: 'folder',
text: 'references/'
}, {
depth: 3,
kind: 'file',
text: 'categories.md'
}],
href: '/skills/how-to#add-resources',
linkText: 'Go to Add resources'
}, {
id: 'scripts',
name: 'Skill script',
path: 'skills/file-expense/scripts/total.py',
lines: [{
depth: 2,
kind: 'folder',
text: 'scripts/'
}, {
depth: 3,
kind: 'file',
text: 'total.py'
}],
href: '/skills/how-to#add-scripts',
linkText: 'Go to Add scripts'
}, {
id: 'commands',
name: 'Command',
path: 'commands/summarize.md',
lines: [{
depth: 0,
kind: 'folder',
text: 'commands/'
}, {
depth: 1,
kind: 'file',
text: 'summarize.md'
}],
href: '/plugins/platform-support#compare-component-support-by-app',
linkText: 'Go to component support by app'
}, {
id: 'mcp',
name: 'MCP connector',
path: '.mcp.json',
lines: [{
depth: 0,
kind: 'file',
text: '.mcp.json'
}],
href: '/plugins/build#bundle-an-mcp-connector-with-its-skill',
linkText: 'Go to Bundle an MCP connector with its skill'
}, {
id: 'readme',
required: 'Required to publish',
name: 'README',
path: 'README.md',
lines: [{
depth: 0,
kind: 'file',
text: 'README.md'
}],
href: '/plugins/pre-submission-checklist#readme-and-license',
linkText: 'Go to README and license checks'
}, {
id: 'license',
required: 'Required to publish',
name: 'License',
path: 'LICENSE',
lines: [{
depth: 0,
kind: 'file',
text: 'LICENSE'
}],
href: '/plugins/pre-submission-checklist#readme-and-license',
linkText: 'Go to README and license checks'
}];
const isSkill = variant === 'skill';
const PIECES = isSkill ? SKILL_PIECES : PLUGIN_PIECES;
const rootLabel = isSkill ? 'brand-guidelines/' : 'expense-reports/';
const title = isSkill ? 'What goes in the skill folder' : 'What goes in the plugin folder';
const treeCaption = isSkill ? 'Skill folder' : 'Plugin folder';
const [selectedId, setSelectedId] = useState(isSkill ? 'skillmd' : 'manifest');
const [isFullscreen, setIsFullscreen] = useState(false);
const rootRef = useRef(null);
useEffect(() => {
const onFsChange = () => setIsFullscreen(!!document.fullscreenElement);
document.addEventListener('fullscreenchange', onFsChange);
return () => document.removeEventListener('fullscreenchange', onFsChange);
}, []);
const toggleFullscreen = () => {
if (!rootRef.current) return;
if (document.fullscreenElement) document.exitFullscreen(); else rootRef.current.requestFullscreen().catch(() => {});
};
const selected = PIECES.find(p => p.id === selectedId) || PIECES[0];
const onTreeKeyDown = e => {
const keys = ['ArrowDown', 'ArrowUp', 'Home', 'End'];
if (keys.indexOf(e.key) === -1) return;
const i = PIECES.findIndex(p => p.id === selectedId);
let next = i;
if (e.key === 'ArrowDown') next = Math.min(PIECES.length - 1, i + 1);
if (e.key === 'ArrowUp') next = Math.max(0, i - 1);
if (e.key === 'Home') next = 0;
if (e.key === 'End') next = PIECES.length - 1;
e.preventDefault();
if (next === i) return;
const id = PIECES[next].id;
setSelectedId(id);
const el = document.getElementById('pe-node-' + id);
if (el) el.focus();
};
const FolderIcon = () => <svg className="pe-icon" width="15" height="15" viewBox="0 0 16 16" fill="none" stroke="currentColor" strokeWidth="1.3" strokeLinejoin="round" aria-hidden="true">
<path d="M1.5 4.5a1 1 0 0 1 1-1h3.2l1.3 1.5h6a1 1 0 0 1 1 1V12a1 1 0 0 1-1 1h-10.5a1 1 0 0 1-1-1z" />
</svg>;
const FileIcon = () => <svg className="pe-icon" width="15" height="15" viewBox="0 0 16 16" fill="none" stroke="currentColor" strokeWidth="1.3" strokeLinejoin="round" aria-hidden="true">
<path d="M4 1.5h5.5L13 5v9.5H4z" />
<path d="M9.5 1.5V5H13" />
</svg>;
return <div ref={rootRef} className={isFullscreen ? 'pe-root pe-fullscreen not-prose' : 'pe-root not-prose'} data-selected={selected.id}>
<style>{`
.pe-root {
--pe-mono: var(--font-mono, ui-monospace, SFMono-Regular, Menlo, monospace);
--pe-accent: #D97757;
--pe-accent-text: #A8502F;
--pe-accent-bg: rgba(217,119,87,0.10);
--pe-bg: #FFFFFF;
--pe-surface: #FAFAF7;
--pe-hover: #F0EEE6;
--pe-border: #E8E6DC;
--pe-text: #141413;
--pe-text-2: #3D3D3A;
--pe-text-3: #5E5D59;
font-family: inherit;
background: var(--pe-bg);
color: var(--pe-text);
border: 1px solid var(--pe-border);
border-radius: 12px;
margin: 1.5rem 0;
overflow: hidden;
box-sizing: border-box;
}
.dark .pe-root {
--pe-accent-text: #EBA98F;
--pe-accent-bg: rgba(217,119,87,0.18);
--pe-bg: #1A1918;
--pe-surface: #232221;
--pe-hover: #2E2D2B;
--pe-border: #3A3936;
--pe-text: #F1EFE9;
--pe-text-2: #D6D4CA;
--pe-text-3: #B8B5AD;
}
.pe-root *, .pe-root *::before, .pe-root *::after { box-sizing: border-box; }
.pe-head { display: flex; align-items: flex-start; gap: 12px; padding: 18px 24px 16px; border-bottom: 1px solid var(--pe-border); }
.pe-head-text { flex: 1; min-width: 0; }
.pe-fs-btn { flex-shrink: 0; width: 32px; height: 32px; display: inline-flex; align-items: center; justify-content: center; border: 1px solid var(--pe-border); border-radius: 6px; background: var(--pe-surface); color: var(--pe-text-2); font-size: 15px; line-height: 1; cursor: pointer; }
.pe-fs-btn:hover { background: var(--pe-hover); }
.pe-fs-btn:focus-visible { outline: 2px solid var(--pe-accent); outline-offset: 2px; }
.pe-fullscreen { border-radius: 0; height: 100vh; display: flex; flex-direction: column; overflow: auto; }
.pe-fullscreen .pe-body { flex: 1; }
.pe-title { font-size: 19px; font-weight: 600; line-height: 1.3; color: var(--pe-text); margin: 0; }
.pe-sub { font-size: 15px; line-height: 1.5; color: var(--pe-text-3); margin: 4px 0 0; }
.pe-sub code { font-family: var(--pe-mono); font-size: 0.88em; padding: 1px 5px; border-radius: 4px; background: var(--pe-surface); border: 1px solid var(--pe-border); }
.pe-body { display: flex; align-items: stretch; }
.pe-tree-pane { width: 270px; flex-shrink: 0; background: var(--pe-surface); border-right: 1px solid var(--pe-border); padding: 16px 0 12px; }
.pe-panel { flex: 1; min-width: 0; padding: 16px 24px 24px; }
.pe-caption { font-size: 13px; font-weight: 600; color: var(--pe-text-3); margin: 0 0 10px; }
.pe-tree-pane .pe-caption { padding: 0 16px; }
.pe-rootline { display: flex; align-items: center; gap: 7px; padding: 3px 16px; font-family: var(--pe-mono); font-size: 13.5px; color: var(--pe-text-3); }
.pe-node {
display: block; width: 100%; margin: 0; padding: 3px 16px 3px 30px; text-align: left; cursor: pointer;
background: transparent; color: var(--pe-text-2);
border: none; border-left: 3px solid transparent;
font-family: var(--pe-mono); font-size: 13.5px; line-height: 1.4;
}
.pe-node:hover { background: var(--pe-hover); }
.pe-node:focus-visible { outline: 2px solid var(--pe-accent); outline-offset: -2px; }
.pe-node[aria-pressed="true"] { background: var(--pe-accent-bg); border-left-color: var(--pe-accent); color: var(--pe-accent-text); font-weight: 600; }
.pe-line { display: flex; align-items: center; gap: 7px; padding: 2px 0; }
.pe-line span { overflow-wrap: anywhere; }
.pe-line > span:not(.pe-req) { white-space: nowrap; flex-shrink: 0; }
.pe-req { flex-shrink: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; margin-left: 8px; padding: 0 6px; border-radius: 999px; font-size: 11px; line-height: 18px; font-family: var(--pe-sans, inherit); letter-spacing: .02em; color: var(--pe-accent-text); border: 1px solid var(--pe-border); background: var(--pe-surface); white-space: nowrap; }
.pe-piece { display: none; font-size: 16px; line-height: 1.6; color: var(--pe-text-2); }
${PIECES.map(p => '.pe-root[data-selected="' + p.id + '"] .pe-piece[data-piece="' + p.id + '"]').join(',\n ')} { display: block; }
.pe-piece p { margin: 0 0 10px; }
.pe-piece p:last-child { margin-bottom: 0; }
.pe-piece ul { list-style: disc; padding-left: 1.25em; margin: 0 0 10px; }
.pe-piece li { margin: 2px 0; }
.pe-piece code { font-family: var(--pe-mono); font-size: 0.88em; padding: 1px 5px; border-radius: 4px; background: var(--pe-surface); border: 1px solid var(--pe-border); }
.pe-piece .code-block { margin: 12px 0 0; }
.pe-piece pre code { padding: 0; border: none; background: none; }
.pe-piece a { color: var(--pe-accent-text); }
.pe-line-compact { display: none; }
.pe-icon { flex-shrink: 0; }
.pe-name { font-size: 22px; font-weight: 600; line-height: 1.25; letter-spacing: -0.2px; color: var(--pe-text); margin: 0; }
.pe-path { font-family: var(--pe-mono); font-size: 13.5px; color: var(--pe-accent-text); margin: 4px 0 0; overflow-wrap: anywhere; }
Cut at 300 lines. The page has the rest.