How to Find the Source Repository for a Claude Plugin: A Complete Guide

The source repository for any Claude plugin is stored in the "repository" field of the plugin.json file located inside the hidden .claude-plugin directory of each plugin folder.

Every plugin in the anthropics/claude-plugins-community monorepo follows a standardized structure that makes tracing upstream sources straightforward. Whether you're auditing dependencies, contributing fixes, or simply curious about a plugin's origins, the metadata you need is consistently located in one place.

Where Plugin Metadata Is Stored

Each Claude plugin contains a hidden directory named .claude-plugin at its root. Inside this directory, the plugin.json file serves as the authoritative source of plugin metadata, including the upstream source repository URL.

For example, in the tres-finance-plugin, the metadata file is located at:


tres-finance-plugin/.claude-plugin/plugin.json

The "repository" field in this JSON file points directly to the original codebase:

{
  "repository": "https://github.com/Tres-Finance-Public/tres-claude-plugin"
}

This pattern is identical across all plugins in the repository. Other examples include:

Step-by-Step: Finding a Source Repository Manually

Follow these steps to locate the source repository for any Claude plugin:

  1. Navigate to the plugin folder in the anthropics/claude-plugins-community repository (e.g., tres-finance-plugin/).

  2. Open the hidden .claude-plugin directory.

  3. Read the plugin.json file and extract the value of the "repository" key.

The URL you find is the definitive source repository maintained by the plugin's original authors.

Programmatic Methods to Extract Repository URLs

For automation or bulk analysis, you can retrieve source repository information programmatically.

Python: Get Repository URL for a Single Plugin

This function reads the plugin.json file and returns the repository URL:

import json
from pathlib import Path

def get_plugin_repo(plugin_name: str) -> str | None:
    """Return the upstream repository URL for a Claude plugin."""
    plugin_json = Path("..") / plugin_name / ".claude-plugin" / "plugin.json"
    if not plugin_json.is_file():
        raise FileNotFoundError(f"{plugin_json} does not exist")
    with plugin_json.open() as f:
        data = json.load(f)
    return data.get("repository")

# Example usage

repo_url = get_plugin_repo("tres-finance-plugin")
print(f"Source repository: {repo_url}")

Shell: List All Plugins with Their Source Repositories

Use this one-liner to discover every plugin and its upstream source in one command:

#!/usr/bin/env bash

# Find every plugin.json and print the plugin name + repository URL

find . -path "*/.claude-plugin/plugin.json" -exec sh -c '
  dir=$(dirname "$1")
  name=$(basename "$dir")
  repo=$(jq -r .repository "$1")
  echo "- $name → $repo"
' {} \;

This script leverages the consistent .claude-plugin/plugin.json path pattern to traverse the entire monorepo efficiently.

Key Metadata Files in the Claude Plugins Community Repository

Plugin Metadata File Location Source Repository Field
tres-finance-plugin tres-finance-plugin/.claude-plugin/plugin.json "repository": "https://github.com/Tres-Finance-Public/tres-claude-plugin"
quickdesign quickdesign/.claude-plugin/plugin.json "repository" key
testdino testdino/.claude-plugin/plugin.json "repository" key
eli5 eli5/.claude-plugin/plugin.json "repository" key

All files are available in the anthropics/claude-plugins-community repository under their respective plugin directories.

Why This Structure Matters

The standardized .claude-plugin/plugin.json convention in the claude-plugins-community monorepo provides several benefits:

  • Traceability — Every plugin can be traced back to its original maintainers.
  • Transparency — Users can inspect source code before installation.
  • Automation — Tools can bulk-process plugin metadata without custom parsing logic.

When you need to find the source repository for a Claude plugin, this consistent structure eliminates guesswork. The "repository" field in plugin.json is always the authoritative reference.

Summary

  • Claude plugins store source repository URLs in .claude-plugin/plugin.json under the "repository" key.
  • The tres-finance-plugin example shows "repository": "https://github.com/Tres-Finance-Public/tres-claude-plugin".
  • Python and shell scripts can automate extraction of repository URLs across the entire monorepo.
  • All plugins in anthropics/claude-plugins-community follow this identical metadata structure.

Frequently Asked Questions

What if a plugin doesn't have a .claude-plugin directory?

Every plugin in the anthropics/claude-plugins-community repository is required to include this directory as part of the standardized plugin format. If you encounter a plugin without it, the plugin may be malformed or incomplete. Check the repository's contribution guidelines for validation requirements.

Can the repository URL point to platforms other than GitHub?

Yes. While the examples in claude-plugins-community primarily use GitHub URLs, the "repository" field accepts any valid URL. The plugin.json schema does not restrict the hosting platform, so GitLab, Bitbucket, or self-hosted Git instances are all valid.

How do I verify that a source repository is authentic?

Compare the "repository" URL in plugin.json against the plugin's documentation and the publisher's official channels. The anthropics/claude-plugins-community repository itself provides a curation layer, but you should still verify upstream sources independently for security-sensitive applications.

Is the repository field ever empty or omitted?

The field should always be present in valid plugins. If "repository" is missing or null, the plugin metadata is incomplete. You can report such issues through the anthropics/claude-plugins-community repository's issue tracker.

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 →