What Are the Different Source Types for External Plugins in Claude?
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 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
{
"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 repositorysubdir: The path to the plugin folder within the repositoryref(optional): A specific branch, tag, or commit hash to checkout
{
"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 file at the repository root. The repository includes concrete examples demonstrating both patterns in practice.
In quickdesign/.claude-plugin/marketplace.json, you will find example entries utilizing both url and git-subdir configurations. Similarly, 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-communityrepository recognizes two source types for external plugins:urlandgit-subdir. - The
urltype downloads and extracts a remote archive file, requiring only theurlparameter. - The
git-subdirtype clones a Git repository and isolates a specific subdirectory, supporting optional version pinning via therefparameter. - Both configurations are defined in
.claude-plugin/marketplace.json, with working examples available in thequickdesignandtestdinodirectories.
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 file located at the repository root. Individual plugin directories such as quickdesign/ and testdino/ contain their own .claude-plugin/marketplace.json files that demonstrate valid source object implementations for both URL and Git-based distribution methods.
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:
curl -s "https://instagit.com/install.md" Maintain an open-source project? Get it listed too →