Skip to content

Marketplace Metadata ​

The marketplace.json file lives in .claude-plugin/ and defines a plugin catalog for distribution.

Fields ​

FieldTypeRequiredDescription
$schemastringnoSchema URL for IDE validation
namestringyesMarketplace name
descriptionstringnoMarketplace description
versionstringnoMarketplace version
ownerobjectyesOwner info
pluginsarrayyesArray of plugin entries
metadataobjectnoExtra metadata (pluginRoot, etc.)
allowCrossMarketplaceDependenciesOnstring[]noOther marketplaces that plugins in this marketplace may depend on. Dependencies from a marketplace not listed here are blocked at install
forceRemoveDeletedPluginsbooleannoUninstall plugins removed from this marketplace catalog
renamesobjectnoMap former plugin names to new names, or null for removed plugins

Owner ​

FieldTypeRequiredDescription
namestringyesOwner name
emailstringnoContact email

Plugin Entry ​

Each entry in the plugins array:

FieldTypeRequiredDescription
namestringyesPlugin name
sourcestring | objectyesRelative path or source object
descriptionstringnoPlugin description
versionstringnoPlugin version
authorobjectnoAuthor info (name, email, url)
homepagestringnoHomepage URL
repositorystringnoRepository URL
licensestringnoLicense identifier
keywordsstring[]noSearch keywords
categorystringnoPlugin category
tagsstring[]noCategorization tags
strictbooleannoEnable strict mode
displayNamestringnoHuman-readable name, overriding the plugin manifest
defaultEnabledbooleannoInitial enablement, overriding the plugin manifest
metadataobjectnoFree-form catalog data
relevanceobjectnoPlugin recommendation signals
headersobjectnoHeaders for archive downloads
headersHelperstringnoCommand printing archive authentication headers

Plugin Source ​

The source field can be a relative path string or an object:

FieldTypeRequiredDescription
sourcestringyesgithub, url, git-subdir, npm, archive, or command
repostringnoGitHub owner/repo (for github)
urlstringnoGit URL (for url/git-subdir)
pathstringnoSubdirectory path (for git-subdir)
packagestringnoPackage name (for npm)
versionstringnoVersion constraint
registrystringnoCustom registry URL
refstringnoGit ref (tag, branch, commit)
shastringnoGit commit SHA for pinning
sha256stringnoArchive integrity pin, 64 hexadecimal characters
commandstringnoFor command sources, prints the plugin directory path
timeoutnumbernoCommand timeout in whole seconds, at most 600
modestringnoCommand source copy or link mode

Example ​

A marketplace with one local plugin and one external plugin:

json
{
  "name": "my-plugins",
  "description": "Plugins for developer tooling.",
  "version": "1.0.0",
  "owner": { "name": "Dev Team", "email": "team@example.com" },
  "metadata": {
    "description": "Plugins for developer tooling."
  },
  "plugins": [
    {
      "name": "my-linter",
      "source": "./",
      "description": "A linter plugin bundled with this marketplace.",
      "version": "1.0.0",
      "author": { "name": "Dev Team" },
      "homepage": "https://example.com",
      "repository": "https://github.com/example/my-linter",
      "license": "MIT",
      "keywords": ["linting", "developer-tools"],
      "category": "developer-tools"
    },
    {
      "name": "external-plugin",
      "source": { "source": "github", "repo": "owner/repo", "ref": "v2.0.0" },
      "description": "An external plugin fetched from GitHub.",
      "category": "developer-tools"
    }
  ]
}