Open PluginsSupported Agents

For Plugin Builders

For Agent Builders

Marketplace

Grouping multiple plugins into a single distributable collection.

A marketplace is a named collection of one or more plugins. It acts as an index: it declares which plugins are available, where they live, and basic metadata about each one.

Marketplaces solve the multi-plugin distribution problem. A single GitHub repository can contain multiple plugins. The marketplace index tells tools what's inside without scanning the filesystem.

Marketplace Index

The marketplace index is a marketplace.json file.

Location

Tools MUST check for the marketplace index in this order:

PathPriority
marketplace.jsonFirst (root of repository or directory)
.plugin/marketplace.jsonSecond
.<tool-name>-plugin/marketplace.jsonThird (vendor-specific)

Schema

{
  "name": "my-marketplace",
  "owner": {
    "name": "Author or Organization"
  },
  "metadata": {
    "pluginRoot": "./plugins"
  },
  "plugins": [
    {
      "name": "plugin-one",
      "source": "./plugin-one/",
      "description": "First plugin in the collection.",
      "version": "1.0.0"
    },
    {
      "name": "plugin-two",
      "source": "./plugin-two/",
      "description": "Second plugin in the collection.",
      "version": "2.1.0"
    }
  ]
}

Required Fields

FieldTypeDescription
namestringName of the marketplace.
pluginsarrayList of plugin entries. Must contain at least one entry.

Optional Fields

FieldTypeDescription
ownerobjectAuthor or organization (name, email, url).
metadata.pluginRootstringBase path for resolving plugin source paths. Defaults to ".".

Plugin Entry Fields

FieldRequiredTypeDescription
nameYesstringPlugin name (follows name constraints).
sourceYesstringRelative path to the plugin directory. Must start with ./.
descriptionNostringBrief description. Overrides the plugin manifest's description for display.
versionNostringSemantic version. Overrides the manifest's version for update checks.
authorNoobjectAuthor information.
licenseNostringSPDX license identifier.
keywordsNostring[]Tags for discovery and search.

Multi-Plugin Repositories

my-org-plugins/
├── marketplace.json
├── code-quality/
│   ├── .plugin/plugin.json
│   ├── skills/
│   └── rules/
├── deployment/
│   ├── .plugin/plugin.json
│   ├── skills/
│   └── hooks/
└── documentation/
    ├── .plugin/plugin.json
    ├── agents/
    └── skills/
{
  "name": "my-org-plugins",
  "owner": { "name": "My Organization" },
  "plugins": [
    { "name": "code-quality", "source": "./code-quality/", "description": "Linting, review, and code standards." },
    { "name": "deployment", "source": "./deployment/", "description": "Deploy workflows and automation." },
    { "name": "documentation", "source": "./documentation/", "description": "Doc generation and maintenance." }
  ]
}

Using pluginRoot

For repositories where plugins are nested under a subdirectory, use metadata.pluginRoot:

{
  "name": "my-repo",
  "metadata": { "pluginRoot": "./plugins" },
  "plugins": [
    { "name": "plugin-a", "source": "./plugin-a/" },
    { "name": "plugin-b", "source": "./plugin-b/" }
  ]
}

The source paths are resolved relative to pluginRoot, so plugin-a resolves to ./plugins/plugin-a/.

Discovery Without a Marketplace Index

If no marketplace.json is found, tools SHOULD fall back to filesystem-based discovery:

  1. Check if the root directory itself is a plugin.
  2. Scan immediate subdirectories (up to 2 levels deep) for plugin directories.