from line 1
1# Submitting your plugin
1# Submit your plugin
22
3> Submit your plugin to the plugin directory for Cowork
3> Submit a plugin from a GitHub repository to Anthropic's directory through the developer portal, follow its review, publish it, and release updates.
44
5The [plugin directory](https://claude.com/plugins-for/cowork) is a community-driven directory where developers can submit plugins for use in Cowork and Claude Code. In Claude Code, this directory is surfaced as the official `claude-plugins-official` marketplace and is automatically available to all users — see [Discover and install plugins](https://code.claude.com/docs/en/discover-plugins#official-anthropic-marketplace). This is a separate and complementary directory from the [Connectors Directory](/docs/connectors/directory), which is specific to MCP connectors.
5To list a plugin in [Anthropic's directory](/docs/directory/publish), you submit it from a GitHub repository through the developer portal at [claude.ai/directory/manage](https://claude.ai/directory/manage). Anthropic checks each version before it can go live, and people can then add the plugin from claude.ai and use it in chat, Cowork, and Claude Code.
66
7## Getting your plugin to users
7Use this page if your plugin is already in a GitHub repository and you want it listed. If the plugin references a remote MCP server you run, submit that server as an MCP connector too, as [Submit your plugin, and your MCP server as a connector](/docs/directory/publish#submit-your-plugin-and-your-mcp-server-as-a-connector) explains.
88
9Once you've built a plugin, there are several ways to get it to users:
9<Note>
10 * To build the plugin first, see [Plugin structure and testing](/docs/plugins/build)
11 * To share it without a public listing, see [Share a plugin with teammates](/docs/plugins/share) or [Roll out a plugin to your whole organization](/docs/plugins/org-rollout)
12 * If you submitted through the earlier Claude Console form, see [Move an earlier submission to the developer portal](/docs/directory/publish#move-an-earlier-submission-to-the-developer-portal)
13</Note>
1014
111. **Direct install** — You can install specific plugins yourself, or guide select users to install them. This is the simplest path for internal tools or small teams.
122. **Your own plugin marketplace** — You can serve your own [plugin marketplace](https://code.claude.com/docs/en/plugin-marketplaces), which allows a subset of opted-in users to access any plugin you share. This is a great fit for enterprise contexts or communities with shared tasks. See the [Claude Code docs on sharing a marketplace](https://code.claude.com/docs/en/plugin-marketplaces) for setup instructions.
133. **[Submit to the Claude plugin directory](#submitting-your-plugin)** — You can submit to the Claude plugin directory, which is made available to all users of Cowork and Claude Code.
15## Before you submit a plugin
1416
15## Plugin Directory: Community vs. Anthropic Verified
17You need the following to submit from the developer portal on claude.ai:
1618
17Plugins are submitted by developers and creators in the community. Anthropic performs basic automated review on submissions before adding them to the directory. Plugins with an "Anthropic Verified" badge have undergone additional review from a quality and safety perspective. That said, there are limits to what Anthropic is able to review — you should only install plugins from developers you trust.
19* **A GitHub repository that holds the plugin.** The directory reads plugins from repositories on github.com, and the repository must be public before the listing goes live. If the portal shows **Couldn’t find that repository, branch or tag**, check that the repository and the branch or tag exist
20* **A plan and role that can submit.** See [who can submit to the directory](/docs/directory/publish#confirm-you-can-submit-to-the-directory)
1821
19There are no guarantees that any community plugin will become Anthropic Verified.
22Every plugin in the directory must comply with the [Anthropic Software Directory Terms](https://support.claude.com/en/articles/13145338-anthropic-software-directory-terms) and the [Anthropic Software Directory Policy](https://support.claude.com/en/articles/13145358-anthropic-software-directory-policy).
2023
21<Warning>
22 Exercise caution when installing community plugins. Always review a plugin's permissions, connected services, and data access before use.
23</Warning>
24Before you open the portal, work through the [plugin pre-submission checklist](/docs/plugins/pre-submission-checklist). It covers what the directory's checks look for in `plugin.json`, the README, the license, and the rest of the plugin folder. In your terminal, from the folder that contains the plugin folder, run `claude plugin validate ./<plugin-folder>` first to catch formatting and structure problems. The portal's **Validate** step runs more checks than the command does.
2425
25## What makes a good plugin
26## Submit a plugin
2627
27The best plugins bundle related capabilities together into a coherent package that solves a specific job function or workflow end-to-end. Rather than exposing a single tool, a good plugin combines skills, connectors, slash commands, and sub-agents so Claude has everything it needs to handle a category of work.
28Each plugin folder is its own submission in the developer portal at [claude.ai/directory/manage](https://claude.ai/directory/manage), so a repository that holds several plugins needs one submission for each.
2829
29For example, a sales plugin might bundle a CRM connector, a skill that teaches Claude your sales process, slash commands for common tasks like prospect research and call follow-ups, and a sub-agent that handles competitive analysis in parallel. Together, these components make Claude a specialist — individually, they're just building blocks.
30<Steps>
31 <Step title="Open the portal">
32 1. Open the [developer portal](https://claude.ai/directory/manage) and select **Submit new**.
33 2. When the portal asks **What would you like to submit?**, select **Plugin bundle**.
3034
31Plugins can include any combination of:
35 <Note>
36 The other option, **MCP connector**, submits one remote MCP server as its own connector listing. If your plugin references an MCP server you built and you haven't submitted that server yet, submit it separately with **MCP connector** by following [Submit your connector](/docs/connectors/building/submission). [Submit your plugin, and your MCP server as a connector](/docs/directory/publish#submit-your-plugin-and-your-mcp-server-as-a-connector) explains why you submit both.
37 </Note>
38 </Step>
3239
33* **Skills** — Task-specific instructions that Claude activates dynamically based on context
34* **MCP connectors** — Connections to external tools and data sources. Plugins can contain any MCP, including remote MCPs, local MCPs, and MCPBs. The MCP configuration within a plugin is highly customizable.
35* **Slash commands** — User-invoked commands for triggering specific workflows
36* **Sub-agents** — Custom agent definitions for delegating complex work
40 <Step title="Enter the source and validate">
41 On the **Source** step, fill in the fields:
3742
38### Guiding Claude through MCP setup
43 * **Repository**: the GitHub repository's URL, or `owner/repo`. If you paste a link to a folder on a branch, the portal fills in the path and branch for you
44 * **Plugin path (optional)**: the folder that holds `.claude-plugin/plugin.json`, if the plugin isn't at the repository root
45 * **Branch or tag (optional)**: the branch or tag that the directory follows for new versions. The portal calls this the tracked branch or tag. Leave the field empty to follow the repository's default branch. A tag stays on its commit until you change the tag. If the branch name contains a slash, type the name in this field or enter `owner/repo@branch` in **Repository**, instead of pasting a folder link
3946
40Plugins can include a `SETUP.md` skill to guide Claude through configuring and connecting any MCP servers bundled in the plugin. This lets you define step-by-step setup instructions that Claude follows when a user installs or activates your plugin.
47 Then validate the plugin:
4148
42### Using safe MCP connectors in plugins
49 1. Select **Validate** to run the directory's validation checks on the plugin.
50 2. If a finding blocks submission, fix it in the repository and push the fix.
51 3. Validate again.
4352
44While a plugin can include any MCP of any kind in its `.mcp.json` definition, we strongly encourage using connectors that already exist in the [Connectors Directory](/docs/connectors/directory) or come from well-known developers. This will increase the likelihood of verification and will reduce the number of warnings shown to users.
53 The [plugin pre-submission checklist](/docs/plugins/pre-submission-checklist) explains what each kind of finding means.
4554
46## Directory terms & conditions
55 A validation result applies to one commit. If you push to the branch after validating, validate again before you continue.
56 </Step>
4757
48All plugins in the directory must comply with:
58 <Step title="Check the listing details">
59 The **Listing details** step shows how the plugin appears in the directory, read from `plugin.json` and the README. To change a field before you submit, edit `plugin.json` or the README in the repository and validate again. Once the plugin is listed, its name and short description follow the version that's live, so to change them later, edit `plugin.json` or the README and publish a new version.
60 </Step>
4961
50* [Anthropic Software Directory Terms](https://support.claude.com/en/articles/13145338-anthropic-software-directory-terms)
51* [Anthropic Software Directory Policy](https://support.claude.com/en/articles/13145358-anthropic-software-directory-policy)
62 <Step title="Answer the data handling questions">
63 On the **Data handling** step, answer each question: whether the plugin reads or stores personal data, whether it sends data to services other than its declared connectors, how long it keeps data, and whether it's intended for people under 18.
64 </Step>
5265
53## Security
66 <Step title="Complete the compliance step">
67 On the **Compliance** step, check the contact email and select the acknowledgements:
5468
55Each plugin in the directory includes a link to where you can review its contents before installing. Plugins are capable of loading remote MCP servers, local MCP servers, and other local software tools to assist you in doing work. You should review any additional software that may be installed by a plugin, as community plugins may install unverified, third-party software that could be malicious or result in unintended behavior.
69 1. Check that the contact email is an address where Anthropic can reach you about the submission.
70 2. Select all four acknowledgements.
71 </Step>
5672
57Best practices when using community plugins:
73 <Step title="Review and submit">
74 On the **Review and submit** step, confirm the details, choose how new versions arrive, and submit:
5875
59* Review the plugin's source code before installing
60* Check which MCP connectors are included and what permissions they request
61* Prefer Anthropic Verified plugins for production workflows
62* Report any suspicious activity to Anthropic
76 1. Confirm the details.
77 2. Under **How new versions reach the directory**, choose **GitHub push webhook**, which is selected by default, or **Scheduled check only**. With either option, the directory also checks the tracked branch or tag for new commits on a schedule.
78 3. Select **Submit for review**.
6379
64## Submitting your plugin
80 If you kept **GitHub push webhook**, the **Plugin submitted for review** page offers **Set up push updates**. You need admin access to the repository on GitHub to set up the webhook.
6581
66To submit a plugin to the directory, share a GitHub link to your plugin. The repo must be public—closed-source plugins are not accepted.
82 To set it up later, open the plugin from **Submissions** in the developer portal and select **Set up** under **Updates** on the **Settings** tab.
83 </Step>
84</Steps>
6785
68Before submitting, run `claude plugin validate` to check formatting and structure. Review times vary with queue volume.
86### Submission limits and duplicates
6987
70### Before you start
88An organization can create up to 10 submissions in any 24-hour period, and saved drafts and withdrawn submissions count toward the limit. When your organization reaches the limit, the portal shows **Daily submission limit reached**.
7189
72Both submission forms require you to be signed in with sufficient permissions:
90Your organization can have one submission for each repository and folder. To continue an existing submission, open it from **Submissions** in the developer portal instead of creating a second one.
7391
74* **claude.ai** requires a Team or Enterprise organization and directory management access. Organization Owners have this by default; on Enterprise, an Owner can delegate it through a custom role, as described in the [connector submission access requirements](/docs/connectors/building/submission#before-you-start).
75* **Console** requires a Developer, Admin, or Owner role on a Console organization. Individual authors who aren't part of a claude.ai Team or Enterprise organization can sign up for Console at [platform.claude.com](https://platform.claude.com) and submit there.
92If another organization has already submitted the same repository and folder, the portal refuses **Submit for review** with **Already submitted by another organization**. If your organization owns the repository, email `[email protected]`.
7693
77To submit please use one of our in-app submission forms:
94## After you submit a plugin
7895
79* **Claude.ai** — [https://claude.ai/admin-settings/directory/submissions/plugins/new](https://claude.ai/admin-settings/directory/submissions/plugins/new)
80* **Console** — [https://platform.claude.com/plugins/submit](https://platform.claude.com/plugins/submit)
96When you select **Submit for review**, the directory scans the newest commit on the tracked branch or tag. Each scan validates the plugin against the directory's rules again and runs a security scan. [Prepare for the security scan](/docs/plugins/pre-submission-checklist#prepare-for-the-security-scan) describes what the security scan looks for.
8197
82After you submit on claude.ai, the **Directory** page in your organization settings ([claude.ai/admin-settings/directory/submissions](https://claude.ai/admin-settings/directory/submissions)) lists your submissions with their review status.
98To follow the submission, open the plugin from **Submissions** in the [developer portal](https://claude.ai/directory/manage). The **Versions** tab on the plugin's page lists each scanned commit with the result of its checks. When the newest version isn't live, the plugin's page says why. [Track your directory submission](/docs/directory/submission-status#plugin-bundle-statuses) explains what each status in the portal means and who acts next.
8399
84After your plugin is published, updates pushed to your GitHub repo are picked up automatically—CI mirrors changes to the public marketplace and runs automated screening on each update. You do not need to re-submit the form for updates.
100A finished scan leaves the version in one of these states:
85101
86<Note>
87 Need help building your plugin? See the [Claude Code plugin guide](https://code.claude.com/docs/en/plugins) for a complete walkthrough of plugin structure, manifests, and testing, or the [plugins reference](https://code.claude.com/docs/en/plugins-reference) for full technical specifications.
88</Note>
102* **Passes every check:** the version can be published, as described in [Publish a passing version](#publish-a-passing-version)
103* **Held for a reviewer:** an Anthropic reviewer reads the version, and it can go live only after the reviewer clears it. The [plugin pre-submission checklist](/docs/plugins/pre-submission-checklist) lists the findings that hold a version
104* **Doesn't pass:** the portal lists the rules that the version breaks. For a failed security scan, the portal shows the category of the finding when the scan recorded one, such as **Sends data to an undisclosed destination**
105
106If the directory can't fetch a commit, or a scan ends without a result, the plugin's page says whether the directory retries on its own or whether something in the repository needs fixing. After any fix, select **Check for new commits** on the plugin's page to run the scan again.
107
108### Fix a failed version
109
110To fix a version that doesn't pass, first check whether the submission was rejected. A rejected submission says that the version was not approved, and only a rejected submission shows **Resubmit for review** on its **Review** tab. A reviewer's decision rejects a submission, and so does a failed security scan on a plugin that has never been published.
111
112* **If the submission was rejected:** the directory stops scanning it. To resubmit:
113 1. Read any changes that the reviewer asked for under **Requested changes** on the **Review** tab.
114 2. Update the plugin and push the fix.
115 3. Select **Resubmit for review** on the **Review** tab. Resubmitting runs every check again.
116* **If the submission wasn't rejected:** push a fix to the tracked branch, then select **Check for new commits** on the plugin's page. Without that step, the directory finds the new commit at its next scheduled check
117
118### Publish a passing version
119
120A version that passes every check isn't live until it's published. When the version passes, select **Publish** on the plugin's page. By default, the portal records this as a request for an Anthropic reviewer, who then publishes the version.
121
122The **Auto-publish** row on the plugin's **Overview** tab says which publish setting Anthropic has applied to your plugin. The settings include:
123
124* **An Anthropic reviewer publishes each version**: the default. For every version that passes, you select **Publish** and a reviewer publishes it
125* **The reviewer publishes only the first version**: you select **Publish** for the first version and a reviewer publishes it. Later versions that pass go live by themselves unless you turn auto-publish off or the security scan flags a version, which holds later versions for a reviewer
126
127You set auto-publish with the **Auto-publish passing versions** toggle on the **Review and submit** step. After you submit, change it with the **Publish new versions automatically** toggle on the plugin's **Settings** tab. Auto-publish doesn't apply while a reviewer publishes each version.
128
129If a submission is stuck, [Contact Anthropic about a submission](/docs/directory/submission-status#contact-anthropic-about-a-submission) gives the channel for a plugin.
130
131## Update a published plugin
132
133To release a new version, push to the tracked branch. You don't submit the form again. If the submission follows a tag, release a new version by changing the tag, as described in [Change the tracked branch or tag](#change-the-tracked-branch-or-tag).
134
135The directory checks the tracked branch for new commits on a schedule. If you set up the GitHub push webhook, the directory also checks when you push, without waiting for the schedule.
136
137* **To set up the webhook after you submit:** select **Set up** under **Updates** on the plugin's **Settings** tab
138* **To check right away:** open the plugin from **Submissions** in the [developer portal](https://claude.ai/directory/manage) and select **Check for new commits**
139
140A new version that passes is published according to the plugin's [publish setting](#publish-a-passing-version). The listing keeps serving the last published version until a new version is published, including when a new version doesn't pass or is held for a reviewer. If the security scan flags or fails a new version, later versions also wait until an Anthropic reviewer clears the plugin.
141
142If your `plugin.json` sets `version`, raise it with every release.
143
144### Change the tracked branch or tag
145
146The tracked branch or tag is where the directory checks for new versions of your plugin. To follow a different one, edit the **Tracked branch or tag** field on the plugin's **Settings** tab and select **Save**. The directory then scans the newest commit there as a new version; when it passes, select **Publish** again, or **Publish update** if a version is already live.
147
148A version that is already live stays up when you change the tracked branch or tag, and the directory cancels a publish request that is still waiting. You can't change the branch or tag while the plugin is with a reviewer.
149
150You can't change a submission's repository and folder after you submit. To list a plugin from a different repository or folder, create a new submission.
151
152## Withdraw or delist a plugin
153
154You can take a submission back at any stage from its page in the developer portal. Open the plugin from **Submissions** at [claude.ai/directory/manage](https://claude.ai/directory/manage); which control you see depends on how far the submission got:
155
156* **A draft you haven't submitted**: select **Delete draft**. The draft leaves your list.
157* **A submission that's in review and was never published**: select **Withdraw submission**, in the page header or on the **Settings** tab. The submission leaves your list and drops out of scanning and review, and nothing is published. To try again later, submit the same repository and path, which reopens it. A withdrawn submission still counts toward the [10 submissions per 24 hours](#submission-limits-and-duplicates) limit.
158* **A plugin that's live in the directory**: open the menu in the page header and select **Delist plugin**. This asks the directory to stop listing it, which can take time to reach every Claude app. People who already installed the plugin stop getting updates, and their copy may be removed. While the request is pending, the menu shows **Delist requested**.
159
160To bring a delisted plugin back, select **Relist plugin** on its page. Relisting is a request, not an instant switch: the directory may apply it directly or send it to a reviewer, and it can be declined. To change what's listed rather than remove it, [update the published plugin](#update-a-published-plugin) instead.
161
162## Next steps
163
164* [Track your submission](/docs/directory/submission-status#plugin-bundle-statuses): check what the status next to your plugin's name means and who acts next
165* [Plugin pre-submission checklist](/docs/plugins/pre-submission-checklist): fix each validation and scan finding
166* [After publishing](/docs/connectors/building/after-publishing): update your plugin and listing, and delist
167* [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
168* [Manage your directory listing](/docs/connectors/building/managing-your-listing): for an MCP connector, check health and usage metrics and edit the listing
89169
No line in this hunk matches that.