- To build the plugin first, see Plugin structure and testing
- To share it without a public listing, see Share a plugin with teammates or Roll out a plugin to your whole organization
- If you submitted through the earlier Claude Console form, see Move an earlier submission to the developer portal
Before you submit a plugin
You need the following to submit from the developer portal on claude.ai:- A GitHub repository that holds the plugin, and your GitHub account connected on claude.ai. The directory reads plugins from repositories on github.com. The portal checks that your connected GitHub account can push to the repository, so connect it first. The repository can stay private while you validate and submit, and must be public before the listing goes live. See Submit from a private repository
- A plan and role that can submit. See who can submit to the directory
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.
Submit a plugin
Each plugin folder is its own submission in the developer portal at claude.ai/directory/manage, so a repository that holds several plugins needs one submission for each.1
Open the portal
- Open the developer portal and select Submit new.
- When the portal asks What would you like to submit?, select Plugin bundle.
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. Submit your plugin, and your MCP server as a connector explains why you submit both.
2
Enter the source and validate
On the Source step, fill in the fields:
- 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 - Plugin path (optional): the folder that holds
.claude-plugin/plugin.json, if the plugin isn’t at the repository root - 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@branchin Repository, instead of pasting a folder link
- Select Validate to run the directory’s validation checks on the plugin.
- If a finding blocks submission, fix it in the repository and push the fix.
- Validate again.
3
Check the listing details
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.4
Answer the data handling questions
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.
5
Complete the compliance step
On the Compliance step, check the contact email and select the acknowledgements:
- Check that the contact email is an address where Anthropic can reach you about the submission.
- Select all four acknowledgements.
6
Review and submit
On the Review and submit step, confirm the details, choose how new versions arrive, and submit:
- Confirm the details.
- 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.
- Select Submit for review.
Submission limits and duplicates
An 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. Your 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. If 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, emaildirectory@anthropic.com. If the earlier submission is one you made through the Claude Console form, see Move an earlier submission to the developer portal.
Connect your GitHub account
The portal checks your GitHub access before it lets you create a submission, submit it, publish the plugin, relist it, or turn on auto-publish. It uses the GitHub account you connected to claude.ai in the organization you’re submitting from, and asks GitHub whether that account can push to the repository. A GitHub connection you made in another Claude organization doesn’t carry over. If the portal can’t confirm push access, the action stops and you see one of these messages:- GitHub isn’t connected for this Claude organization: select Connect GitHub in the message to connect your account, then try again
- The connected GitHub account can’t push to this repository: ask an admin of the repository to give your GitHub account write access, then try again
Submit from a private repository
You can validate and submit a plugin while its repository is private, so review can start before you publish your code. The directory scans it while it’s private. Publishing and relisting still need the repository to be public. The portal reads a private repository only when these conditions hold:- Your connected GitHub account can push to the repository. This is the same check as Connect your GitHub account
- You agree to the source upload. The portal shows This repository is private. and asks you to confirm that the repository’s source is uploaded to Anthropic for automated scanning and is visible to Anthropic reviewers
- The Claude GitHub App is installed on the repository and connected to your Claude organization. If it isn’t, the portal shows The Claude GitHub App can’t reach this repository with an Install the Claude GitHub App link. Install it, then validate again
After you submit a plugin
When 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 describes what the security scan looks for. To follow the submission, open the plugin from Submissions in the developer portal. 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 explains what each status in the portal means and who acts next. A finished scan leaves the version in one of these states:- Passes every check: the version can be published, as described in Publish a passing version
- 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 lists the findings that hold a version
- 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
Fix a failed version
To 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.- If the submission was rejected: the directory stops scanning it. To resubmit:
- Read any changes that the reviewer asked for under Requested changes on the Review tab.
- Update the plugin and push the fix.
- Select Resubmit for review on the Review tab. Resubmitting runs every check again.
- 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
Publish a passing version
A 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. The Auto-publish row on the plugin’s Overview tab says which publish setting Anthropic has applied to your plugin. The settings include:- An Anthropic reviewer publishes each version: the default. For every version that passes, you select Publish and a reviewer publishes it
- 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 plugin is waiting for a reviewer
- You publish the first version: an Anthropic reviewer can apply this setting when they approve the plugin. You select Publish for the first version and it goes live. Later versions that pass go live by themselves unless you turn auto-publish off or the plugin is waiting for a reviewer
Update a published plugin
After the first submission, you keep the listing current by releasing the way you already do. Merge to the tracked branch, and the directory picks up the commit, checks it, and publishes it. You don’t return to the portal unless a version is held or you want to change a setting. If the submission follows a tag, release a new version by changing the tag, as described in Change the tracked branch or tag. The 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.- To set up the webhook after you submit: select Set up under Updates on the plugin’s Settings tab
- To check right away: open the plugin from Submissions in the developer portal and select Check for new commits
plugin.json sets version, raise it with every release.
Change the tracked branch or tag
The 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. A 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. You 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.Withdraw or delist a plugin
You 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; which control you see depends on how far the submission got:- A draft you haven’t submitted: select Delete draft. The draft leaves your list.
- 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 limit.
- 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.
Next steps
- Track your submission: check what the status next to your plugin’s name means and who acts next
- Plugin pre-submission checklist: fix each validation and scan finding
- After publishing: update your plugin and listing, and delist
- Track published plugin usage: see installs, versions, runs, and error rates on the plugin’s Usage tab
- Manage your directory listing: for an MCP connector, check health and usage metrics and edit the listing