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

> Learn how to contribute a new plugin to the Claude Plugins Community repository. Discover the submission process and requirements for your plugin.

- Repository: [Anthropic/claude-plugins-community](https://github.com/anthropics/claude-plugins-community)
- Tags: how-to-guide
- Published: 2026-09-06

---

**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`](https://github.com/anthropics/claude-plugins-community/blob/main/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**:

- Anthropic's systems clone your standalone plugin repository
- Automated validation runs via [`.github/workflows/validate-plugins.yml`](https://github.com/anthropics/claude-plugins-community/blob/main/.github/workflows/validate-plugins.yml)
- Security scans and policy checks execute
- Approved plugins generate SHA-specific entries in [`.claude-plugin/marketplace.json`](https://github.com/anthropics/claude-plugins-community/blob/main/.claude-plugin/marketplace.json)
- The read-only mirror updates to reflect the current marketplace state

## 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`](https://github.com/anthropics/claude-plugins-community/blob/main/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`](https://github.com/anthropics/claude-plugins-community/blob/main/tres-finance-plugin/.claude-plugin/plugin.json) in the community repository shows a fully-populated example.

### Optional: [`marketplace.json`](https://github.com/anthropics/claude-plugins-community/blob/main/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`](https://github.com/anthropics/claude-plugins-community/blob/main/.claude-plugin/marketplace.json) in the community repo.

### Minimal [`plugin.json`](https://github.com/anthropics/claude-plugins-community/blob/main/plugin.json) Template

```json
// .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`](https://github.com/anthropics/claude-plugins-community/blob/main/.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`](https://github.com/anthropics/claude-plugins-community/blob/main/validate-plugins.yml) workflows
- Automated security scanning
- Manifest generation with commit-SHA pinning

Upon approval, your plugin becomes available for installation:

```bash

# 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`](https://github.com/anthropics/claude-plugins-community/blob/main/README.md) | Usage instructions and submission policy (lines 24-27 detail the PR closure policy) |
| [`tres-finance-plugin/.claude-plugin/plugin.json`](https://github.com/anthropics/claude-plugins-community/blob/main/tres-finance-plugin/.claude-plugin/plugin.json) | Production example of plugin manifest |
| [`.claude-plugin/marketplace.json`](https://github.com/anthropics/claude-plugins-community/blob/main/.claude-plugin/marketplace.json) | Generated master list of all community plugins |
| [`.github/workflows/validate-plugins.yml`](https://github.com/anthropics/claude-plugins-community/blob/main/.github/workflows/validate-plugins.yml) | CI validation enforced on all submissions |
| `.github/actions/validate-plugins/*` | Implementation of security and policy checks |

## Summary

- The Claude Plugins Community repository is **read-only**—never submit plugins via pull request
- Develop plugins in **standalone repositories** with [`.claude-plugin/plugin.json`](https://github.com/anthropics/claude-plugins-community/blob/main/.claude-plugin/plugin.json) manifests
- **Validate locally** using the same checks defined in [`validate-plugins.yml`](https://github.com/anthropics/claude-plugins-community/blob/main/validate-plugins.yml)
- Submit through **https://clau.de/plugin-directory-submission** for internal review
- Published plugins install via `claude plugin install <name>@claude-community`

## 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`](https://github.com/anthropics/claude-plugins-community/blob/main/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`](https://github.com/anthropics/claude-plugins-community/blob/main/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.