On this page
Updated September 2026
To get a plugin listed in Claude's public plugin directory, put the complete plugin in a public GitHub repository, validate it with claude plugin validate, review the directory terms and policy, and submit the repository link through the Claude.ai or Console form with the required organization permission. Anthropic performs basic automated review before directory inclusion. Additional Anthropic Verified status is a separate review and is not guaranteed.
That process is intentionally different from publishing an MCP server alone. A Claude plugin is a versioned package that can combine instructions, MCP connections, agents, hooks, commands, and other components into one coherent workflow.
Understand the three distribution routes
| Route | Best for | Discovery | Source requirement |
|---|---|---|---|
| Direct install | Internal testing or a small invited group | You provide the install source | Depends on your distribution method |
| Your own marketplace | A company, partner ecosystem, or community | Users opt into your marketplace | Marketplace and plugin source you control |
| Claude public directory | Broad public discovery in Cowork and Claude Code | Available through Claude's directory experience | Public GitHub repository required |
Claude's documentation uses both directory and marketplace language. The current public submission page describes a community-driven plugin directory surfaced in Claude Code as claude-plugins-official. Separate Claude Code documentation reserves several marketplace names for Anthropic and distinguishes community review from curated or verified placement. The practical rule for a publisher is simple: use the official in-app submission form, describe the package as a community submission unless Anthropic grants another status, and never promise an Anthropic Verified badge.
The MCP Connectors Directory is separate. If you are submitting a complete Claude workflow that includes MCP, use the plugin path. If the product is only an MCP connector, check the current connector-specific route before treating the plugin directory as a substitute.
What makes a Claude plugin worth listing
Anthropic's guide emphasizes a coherent job, not a bag of unrelated extensions. A good plugin gives Claude what it needs to complete a category of work end to end.
For example, an incident-response plugin might include:
- an MCP connection to monitoring and ticket data
- a skill that defines the investigation sequence
- a command for starting a release check
- an agent for gathering evidence in parallel
- a hook that performs a safe local validation
Each component should support the same user job. If users would install only one piece and ignore the rest, you may have several plugins rather than one.
The recommended package anatomy
Claude Code can auto-discover a plugin without a manifest, but a public package should normally include one so its identity, version, author, and component paths are explicit. When included, the manifest belongs in .claude-plugin/plugin.json. Other components belong at the plugin root.
my-plugin/
├── .claude-plugin/
│ └── plugin.json
├── skills/
│ └── my-workflow/
│ └── SKILL.md
├── agents/
├── hooks/
├── commands/
├── .mcp.json
├── SETUP.md
└── README.mdYou do not need every directory. Include only the components the workflow uses. Empty directories and placeholder capabilities make the package harder to audit.
A minimal manifest looks like this:
{
"name": "my-plugin",
"description": "What the plugin helps the user accomplish",
"version": "1.0.0",
"author": {
"name": "Your name or company"
}
}Use a stable, non-impersonating name. If you set an explicit version, bump it when publishing changes so users can receive the update. Keep a changelog for meaningful releases.
Build each component for review
Skills
A skill needs a clear trigger, bounded instructions, referenced resources that exist inside the package, and a verification step. Do not use a skill to hide permissions or override user intent. Keep the workflow understandable to a reviewer reading the files in GitHub.
MCP configuration
A plugin can include remote MCP, local MCP, or other supported MCP configurations. Declare only the connection the workflow actually needs. Explain required accounts and permissions in the README and setup flow.
Anthropic recommends directory-listed connectors or connectors from known developers because users receive fewer warnings and reviewers have clearer provenance. That is a recommendation, not permission to skip your own security review.
SETUP.md
If the plugin requires an MCP server, a SETUP.md skill can guide Claude through configuration. Make it idempotent and explicit:
- State the prerequisite account and permission.
- Explain which local or remote setting will change.
- Ask before making a consequential change.
- Verify the connection with a harmless request.
- Give the user a clear recovery or uninstall step.
Never put a real secret in the repository, an example command, a screenshot, or a test fixture. Use placeholders and guide the user to the service's secure credential flow.
Agents, hooks, and commands
Agents should have a narrow role and clear completion condition. Hooks should be predictable, documented, and safe to run in the intended environment. New command-style workflows should generally use the current skill structure where the documentation recommends it.
The public repository is part of the trust surface. A reviewer and prospective user should be able to find every executable action and understand why it exists.
Step 1: test locally from a clean session
Load the plugin from its directory during development, then start a fresh Claude Code session and test the same way a new user will experience it.
Cover at least:
- first installation
- the primary successful workflow
- missing prerequisite or credential
- refusal or clarification for an unsafe request
- MCP unavailable or authentication failure
- repeated installation or setup
- uninstall or disable path
- upgrade from the previous version
Do not test only on the maintainer's machine. Hidden environment variables, cached dependencies, existing marketplace configuration, and already authenticated MCP connections commonly make a broken package appear complete.
Step 2: validate the package
Run:
claude plugin validate ./my-pluginThe validator checks the manifest, hook configuration, and frontmatter in standard component directories for syntax and schema problems. In continuous integration, strict mode can turn warnings into failures:
claude plugin validate ./my-plugin --strictValidation is necessary, but it does not prove the workflow is useful or safe. A structurally valid hook can still be surprising. A valid skill can still activate too broadly. A valid MCP configuration can still request excessive access.
Step 3: make the GitHub repository submission-ready
Claude's current public-directory submission requires a public GitHub repository. Closed-source plugins are not accepted on this path.
Before submitting, verify the repository includes:
- A clear README with the user job, supported Claude surfaces, setup, permissions, and examples.
- The complete plugin source at an obvious path.
- A valid manifest and no unresolved local paths.
- A license and maintainer contact.
- Security reporting instructions.
- No credentials, customer data, internal endpoints, or private screenshots in history or fixtures.
- Release tags or an explicit versioning policy.
- A clean validation result from the commit you intend to submit.
Installed plugins are copied into a cache. Do not rely on files outside the plugin directory. References that work only because the repository sits beside another local project will fail for users.
Step 4: review permissions and data access
Write a short permission inventory for humans:
| Capability | What the user should know |
|---|---|
| Remote MCP | Service contacted, data accessed, account needed, actions available |
| Local MCP or executable | Process launched, files or environment it can access |
| Hook | Event that triggers it and side effect it can cause |
| Agent | Task delegated and tools it can use |
| Network or file access | Why the workflow needs it and what remains out of scope |
The plugin's code, README, and actual behavior should agree. Do not describe a connector as read-only if a bundled workflow can publish, message, delete, or modify external state.
Read the current Anthropic Software Directory Terms and Software Directory Policy immediately before submitting. Policies can change faster than a tutorial. Treat the official form and policy as the final authority if a field or requirement differs from this September 2026 walkthrough.
Step 5: choose the submission account
Claude currently provides two in-app forms:
- Claude.ai: requires a Team or Enterprise organization and directory-management access. Organization owners have it by default, subject to current enterprise controls.
- Console: requires a Developer, Admin, or Owner role. An individual author can create a Console organization and submit without joining a claude.ai Team or Enterprise organization.
Sign into the organization that will own the listing. The public repository, author identity, support path, and submission account should match well enough that a reviewer can identify the maintainer.
Step 6: submit the public repository
Use the official Claude.ai submission form ↗ or Console submission form ↗ and provide the GitHub repository link. Submit the exact repository and commit state you validated.
Prepare concise answers for:
- the job the plugin completes
- the intended users
- the components included
- external services and MCP connections
- setup and permissions
- the primary user workflow
- support and security contacts
Do not use private operational details as proof. A reproducible public example and a clean test fixture are more useful to review than an internal customer name, production credential, or screenshot of private data.
Review times vary with queue volume. Do not plan around a fixed approval date that Anthropic has not promised.
After publication, updates pushed to the public GitHub repository are picked up automatically. Claude's current submission guide says its CI mirrors the changes to the public marketplace and screens each update, so the form does not need to be resubmitted for routine updates. Still validate, version, test, and review every release before pushing it. Automatic delivery makes a weak release reach users faster too.
Community listing versus Anthropic Verified
The public plugin directory is community-driven. Anthropic performs basic automated review before adding submissions. An Anthropic Verified badge indicates additional quality and safety review.
These are separate outcomes:
- directory inclusion does not guarantee Anthropic Verified status
- a clean automated review does not replace the user's own source and permission review
- a badge should never be implied in your listing, logo, repository, or marketing before Anthropic grants it
This distinction matters because "official marketplace" can describe the catalog surfaced by Claude Code, while "Anthropic Verified" describes additional review of a particular plugin.
If public listing is not the right route
For a private company plugin or controlled beta, publish your own Claude Code marketplace instead of exposing the source only to satisfy a public-directory requirement.
A marketplace has its own .claude-plugin/marketplace.json that names the marketplace owner and points to one or more plugin sources. Users add the marketplace, then install a named plugin from it. Use a distinct marketplace name and avoid the names Anthropic reserves for official catalogs.
This route gives you controlled distribution, but it does not waive product security. Pin reviewed sources, define update behavior, protect credentials, and document the trust boundary.
Common submission failures
| Failure | Why it happens | Prevention |
|---|---|---|
| Plugin validates locally but fails for users | It depends on a sibling directory, cached file, or hidden environment variable | Test from a clean clone and clean profile |
| Components do not load | They were placed inside .claude-plugin instead of the plugin root | Keep only the manifest in the metadata directory |
| Update does not arrive | Explicit version was not bumped | Adopt semantic versions and release checks |
| Review cannot inspect the source | Repository or a required dependency is private | Use a complete public GitHub repository for public submission |
| MCP setup confuses users | Prerequisites and permissions are implicit | Add a bounded setup skill and harmless verification |
| Security warning surprises users | Local execution or external access was not explained | Publish the permission inventory |
| Plugin feels incoherent | Components solve unrelated jobs | Split the package around real workflows |
After listing: measure the product, not the install
Marketplace distribution gives you reach. It does not tell you what users accomplish after the plugin connects to your MCP server.
Repository traffic, installs, and tool-call counts miss critical questions:
- What did the user want to do?
- Which tools did Claude select across the full journey?
- Did a technically successful tool result produce a useful answer?
- Did Claude retry, loop, or abandon the workflow?
- Which capabilities do users repeatedly request but cannot access?
- Which accounts show product feedback or commercial intent?
Flowlines MCP observability instruments MCP servers with OpenTelemetry-compatible instrumentation and connects MCP interactions into complete behavioral sessions. It helps teams distinguish real adoption from noisy call volume, inspect recurring problems, and understand use cases and outcomes without replacing the operational telemetry stack.
For the other major distribution path, read the OpenAI Plugins Directory MCP submission guide. Continue with the MCP analytics guide, the production observability guide, or the OpenTelemetry instrumentation guide. Developers working in Claude Code or Codex can start the guided Flowlines plugin setup.
Final Claude submission checklist
- The plugin solves one coherent workflow.
- Public directory, direct install, or private marketplace is the right route.
- The complete public submission source is in GitHub.
- Any manifest is at
.claude-plugin/plugin.json. - Skills, agents, hooks, commands, and MCP configuration are at the plugin root.
- Every component is necessary and documented.
- Setup avoids real credentials and private values.
- Permissions and external services are clear before installation.
- The plugin works from a clean clone and clean session.
claude plugin validatepasses on the submitted commit.- Version and changelog are ready for updates.
- The correct organization role can access the submission form.
- The repository, maintainer, and support path are consistent.
- Current directory terms and policy have been reviewed.
- The launch plan measures user journeys and outcomes, not only installs.
Primary sources
Frequently asked questions
How do I submit a plugin to the Claude plugin directory?
Publish the plugin in a public GitHub repository, validate it with the Claude plugin validator, review the directory terms and policy, then submit the repository link through the Claude.ai or Console submission form using an account with the required organization role.
Does Claude accept closed-source plugins in its public directory?
No. The current Claude submission guide requires a public GitHub repository and says closed-source plugins are not accepted for the public directory.
What is the difference between a community Claude plugin and Anthropic Verified?
Community submissions receive basic automated review before directory inclusion. Anthropic Verified indicates additional quality and safety review. Submission does not guarantee the badge.
Which account role is required to submit a Claude plugin?
On claude.ai, the submitter needs a Team or Enterprise organization with directory-management access. On Console, a Developer, Admin, or Owner role can submit, and individual authors can create a Console organization.
How do I validate a Claude plugin before submission?
Run claude plugin validate against the plugin directory. Use strict mode in continuous integration when you want warnings to fail the check, then test the plugin locally from a clean Claude Code session.
Where does plugin.json go in a Claude plugin?
The manifest belongs at .claude-plugin/plugin.json. Skills, agents, hooks, commands, MCP configuration, and other components belong at the plugin root rather than inside .claude-plugin.
Can a Claude plugin include an MCP server?
Yes. Claude plugins can package MCP configuration alongside skills, agents, hooks, commands, and other components. A SETUP.md skill can guide users through required MCP setup.
Can I distribute a Claude plugin without the public directory?
Yes. You can support direct installation or publish your own Claude Code marketplace. These routes are useful for internal teams, private previews, and communities that opt in.
How long does Claude plugin review take?
Anthropic does not provide a fixed review time. The current guide says times vary with queue volume.
How do I measure Claude users after an MCP plugin is listed?
Instrument the MCP server, then measure permitted users, complete sessions, use cases, retries, outcomes, unmet needs, and repeat adoption. A repository star, installation, or tool call does not prove the user completed the intended job.