# What Are the Different Source Types for External Plugins in Claude?

> Discover the two main source types url and git-subdir for external plugins in the Claude Plugins Community repository. Learn where your plugin code is hosted.

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

---

**External plugins in the Claude Plugins Community repository use either** `url` **or** `git-subdir` **source types in the marketplace manifest to declare where their code is hosted.**

The `anthropics/claude-plugins-community` repository defines how external plugins are loaded through a structured marketplace configuration. Each plugin declares its origin using specific source types for external plugins within the [`.claude-plugin/marketplace.json`](https://github.com/anthropics/claude-plugins-community/blob/main/.claude-plugin/marketplace.json) file. These identifiers tell Claude exactly where to fetch the plugin code—whether from a direct download link or a version-controlled subdirectory.

## The Two Source Types for External Plugins

The marketplace manifest supports two distinct source-type identifiers that determine how Claude retrieves plugin packages. These are defined in the `source` object of each plugin entry.

### URL Source Type

The `url` source type points to a direct link to a downloadable archive containing the plugin package. Claude fetches the file from the specified URL and extracts it automatically. This method works with ZIP or TAR archives hosted on any web server.

The `url` source object requires two parameters:

- **`source`**: Must be set to `"url"`
- **`url`**: The absolute URL to the plugin archive

```json
{
  "name": "example-url-plugin",
  "description": "A plugin packaged as a zip archive.",
  "source": {
    "source": "url",
    "url": "https://github.com/example/example-url-plugin/releases/download/v1.0/plugin.zip"
  }
}

```

### Git-Subdirectory Source Type

The `git-subdir` source type references a sub-directory inside a Git repository. Claude clones the repository (or a specific commit/branch) and uses only the indicated sub-folder as the plugin root. This approach is ideal for monorepo setups where multiple plugins live in a single repository.

The `git-subdir` source object accepts these parameters:

- **`source`**: Must be set to `"git-subdir"`
- **`git_url`**: The clone URL of the Git repository
- **`subdir`**: The path to the plugin folder within the repository
- **`ref`** (optional): A specific branch, tag, or commit hash to checkout

```json
{
  "name": "example-git-plugin",
  "description": "A plugin kept inside a monorepo.",
  "source": {
    "source": "git-subdir",
    "git_url": "https://github.com/example/example-monorepo.git",
    "subdir": "plugins/example-git-plugin",
    "ref": "v2.3.1"
  }
}

```

## Where Source Types Are Configured

Source type definitions reside in the [`.claude-plugin/marketplace.json`](https://github.com/anthropics/claude-plugins-community/blob/main/.claude-plugin/marketplace.json) file at the repository root. The repository includes concrete examples demonstrating both patterns in practice.

In [`quickdesign/.claude-plugin/marketplace.json`](https://github.com/anthropics/claude-plugins-community/blob/main/quickdesign/.claude-plugin/marketplace.json), you will find example entries utilizing both `url` and `git-subdir` configurations. Similarly, [`testdino/.claude-plugin/marketplace.json`](https://github.com/anthropics/claude-plugins-community/blob/main/testdino/.claude-plugin/marketplace.json) provides another concrete implementation of plugin source specifications. These files serve as authoritative references for how the two source types for external plugins are structured throughout the codebase.

## Summary

- The `anthropics/claude-plugins-community` repository recognizes two **source types for external plugins**: `url` and `git-subdir`.
- The **`url`** type downloads and extracts a remote archive file, requiring only the `url` parameter.
- The **`git-subdir`** type clones a Git repository and isolates a specific subdirectory, supporting optional version pinning via the `ref` parameter.
- Both configurations are defined in [`.claude-plugin/marketplace.json`](https://github.com/anthropics/claude-plugins-community/blob/main/.claude-plugin/marketplace.json), with working examples available in the `quickdesign` and `testdino` directories.

## Frequently Asked Questions

### Can I use a specific Git commit or tag with the git-subdir source type?

Yes. The `git-subdir` source type supports an optional **`ref`** parameter that accepts branch names, tags, or commit hashes. When specified, Claude checks out that exact reference before loading the plugin from the subdirectory, ensuring reproducible deployments from monorepo structures.

### Does the url source type support authentication or private archives?

The standard `url` source type expects publicly accessible archives without authentication headers. For private plugin distribution, use the `git-subdir` type with authenticated Git URLs or host private archives behind secure proxy endpoints that handle authentication before redirecting to the archive file.

### Where is the source configuration defined for each plugin?

Each plugin's source configuration is defined in the **[`.claude-plugin/marketplace.json`](https://github.com/anthropics/claude-plugins-community/blob/main/.claude-plugin/marketplace.json)** file located at the repository root. Individual plugin directories such as `quickdesign/` and `testdino/` contain their own [`.claude-plugin/marketplace.json`](https://github.com/anthropics/claude-plugins-community/blob/main/.claude-plugin/marketplace.json) files that demonstrate valid `source` object implementations for both URL and Git-based distribution methods.