How to Contribute a New Plugin to the Claude Plugins Community Repository: Complete Guide

You cannot submit a new plugin via pull request to the anthropics/claude-plugins-community repository; instead, you must develop a self-contained plugin with the required .claude-plugin manifest files and submit it through Anthropic's official web portal for internal review.

The Claude Plugins Community repository is a read-only mirror of the official plugin marketplace. Understanding this architecture is essential if you want to contribute a new plugin—the workflow differs significantly from typical open-source contribution models.

Understanding the Repository Architecture

The anthropics/claude-plugins-community repository serves as a public mirror, not a direct contribution target. As stated in README.md (lines 24-27), pull requests opened directly against this repository are automatically closed.

The actual ingestion flow works through an internal review pipeline:

Step 1: Prepare Your Plugin Repository

Your plugin must live in its own GitHub repository. Create a .claude-plugin directory at the root with the following required files.

Required: plugin.json

This core manifest defines your plugin's identity and capabilities.

Field Required Description
name Yes Unique identifier across the marketplace
description Yes Human-readable summary
version Yes Semantic version string
author Yes Object with name and email
homepage Yes Project website URL
repository Yes Source code URL
license Yes SPDX license identifier
keywords No Array for discoverability
userConfig No Schema for user-configurable settings

Reference implementation: tres-finance-plugin/.claude-plugin/plugin.json in the community repository shows a fully-populated example.

Optional: marketplace.json

For advanced use cases—such as providing multiple sub-plugins or overriding display metadata—include this additional manifest. The master marketplace schema lives at .claude-plugin/marketplace.json in the community repo.

Minimal plugin.json Template

// .claude-plugin/plugin.json
{
  "name": "my-awesome-plugin",
  "description": "Adds /awesome skill to Claude Code for X-Y automation.",
  "version": "0.1.0",
  "author": {
    "name": "Jane Doe",
    "email": "jane@example.com"
  },
  "homepage": "https://github.com/janedoe/my-awesome-plugin",
  "repository": "https://github.com/janedoe/my-awesome-plugin",
  "license": "MIT",
  "keywords": ["awesome", "automation"],
  "userConfig": {
    "API_KEY": {
      "title": "API Key",
      "description": "Key for the external service.",
      "type": "string",
      "sensitive": true
    }
  }
}

Step 2: Validate Your Plugin Locally

Before submission, ensure your plugin passes the same checks used in Anthropic's internal pipeline.

The validation logic resides in .github/workflows/validate-plugins.yml with supporting scripts in .github/actions/validate-plugins/. These checks enforce:

  • JSON syntax validity and presence of all required fields
  • Dependency restrictions—no disallowed runtime services unless explicitly approved
  • Version formatting compliance with semantic versioning
  • License compatibility with marketplace distribution

Run equivalent checks locally by validating your JSON against the schema and reviewing your dependency tree against known restrictions.

Step 3: Submit Through the Official Portal

Navigate to https://clau.de/plugin-directory-submission and complete the form:

  1. Repository URL — paste your plugin's GitHub URL
  2. Plugin name — must be globally unique in the marketplace
  3. Brief description — appears in the marketplace manifest
  4. Contact information — optional, for maintainer outreach

Click Submit to trigger Anthropic's internal pipeline.

Step 4: Pipeline Processing and Publication

After submission, Anthropic's systems execute:

  • Repository cloning and manifest extraction
  • Execution of validate-plugins.yml workflows
  • Automated security scanning
  • Manifest generation with commit-SHA pinning

Upon approval, your plugin becomes available for installation:


# Add the community marketplace source

claude plugin marketplace add anthropics/claude-plugins-community

# Install your newly published plugin

claude plugin install my-awesome-plugin@claude-community

Key Files in the Community Repository

Understanding these source files clarifies the contribution requirements:

Path Purpose
README.md Usage instructions and submission policy (lines 24-27 detail the PR closure policy)
tres-finance-plugin/.claude-plugin/plugin.json Production example of plugin manifest
.claude-plugin/marketplace.json Generated master list of all community plugins
.github/workflows/validate-plugins.yml CI validation enforced on all submissions
.github/actions/validate-plugins/* Implementation of security and policy checks

Summary

Frequently Asked Questions

Why are pull requests to the community repository automatically closed?

The repository at anthropics/claude-plugins-community is a generated mirror of Anthropic's internal plugin marketplace. Direct modifications would be overwritten by the next pipeline run and could create security vulnerabilities. The README.md (lines 24-27) explicitly states this policy to redirect contributors to the proper submission channel.

What happens if my plugin fails validation in the internal pipeline?

You will receive notification at the contact address provided during submission. Common failures include missing required fields in plugin.json, invalid semantic versioning, or inclusion of disallowed dependencies. Fix the issues in your repository and resubmit through the web portal—there is no penalty for multiple submissions.

Can I update my plugin after it has been published?

Yes. Updates follow the same submission process: increment the version field in your plugin.json, ensure your repository reflects the changes, and submit the updated repository URL through the portal. The pipeline detects version changes and generates new marketplace entries with updated SHA references.

Is the userConfig field required for all plugins?

No. Include userConfig only if your plugin requires user-provided settings such as API keys, endpoint URLs, or feature flags. Each entry in the userConfig object defines a configuration field with title, description, type, and optional sensitive boolean for secret masking.

Have a question about this repo?

These articles cover the highlights, but your codebase questions are specific. Give your agent direct access to the source. Share this with your agent to get started:

Share the following with your agent to get started:
curl -s "https://instagit.com/install.md"

Works with
Claude Codex Cursor VS Code OpenClaw Any MCP Client

Maintain an open-source project? Get it listed too →