How Plugin Categories Are Defined in the Claude marketplace.json File

Plugin categories in the Claude plugin marketplace are defined by the category property in each plugin object within .claude-plugin/marketplace.json, where values are arbitrary lowercase strings validated by CI to ensure they are non-empty and well-formed.

The anthropics/claude-plugins-community repository powers the Claude plugin marketplace through a central JSON manifest. Understanding how plugin categories are defined in marketplace.json is essential for developers submitting new integrations, as proper categorization directly drives discovery and organization within the marketplace interface.

The Category Property Structure

Each plugin entry in .claude-plugin/marketplace.json is a JSON object containing standardized metadata fields, including the required category property. According to the source code, this field accepts short, human-readable strings that classify the plugin's primary function.

The field appears at the root level of each plugin object:

{
  "name": "10x-shopping",
  "description": "Shopping assistant plugin",
  "source": { 
    "source": "url", 
    "url": "https://example.com/plugin", 
    "sha": "abc123..." 
  },
  "homepage": "https://www.10xgeo.com/",
  "category": "productivity"
}

Allowed Values and Naming Conventions

Unlike rigid enumerations, the marketplace does not hard-code specific category strings. The allowed values are simply whatever strings appear in the file, provided they meet the CI validation requirements.

Common categories found in the source include:

  • development (line 695)
  • productivity (line 368)
  • security
  • testing (line 105)
  • finance

While the schema permits arbitrary strings, the community follows lowercase conventions for consistency. The validator enforces that the field contains a non-empty string, rejecting null values or empty strings, but does not restrict the semantic meaning of the term.

CI Validation and Schema Enforcement

When contributors submit changes to the repository, the GitHub Actions workflow executes .github/actions/validate-plugins/scripts/20-validate-cli-marketplace.sh to verify the assembled marketplace.json. This validation step ensures every plugin entry contains a valid category field conforming to the expected schema.

The validator specifically checks that:

  1. The category key exists on each plugin object
  2. The value is a non-empty string
  3. The field is properly formed within the JSON structure

This process is documented in .github/actions/validate-plugins/README.md, which outlines the invariants applied to marketplace entries to maintain data integrity across the plugin ecosystem.

Practical Implementation Examples

To add a category when submitting a plugin, include the category field in your plugin's JSON object within marketplace.json. Choose a descriptive, lowercase term that accurately reflects your plugin's primary function.

Example implementations from the repository:

{
  "name": "42crunch-api-security-testing",
  "description": "API security testing and audit plugin",
  "source": {
    "source": "git-subdir",
    "url": "42Crunch-AI/claude-plugins",
    "path": "plugins/api-security-testing",
    "ref": "v1.0.1",
    "sha": "30287f5e3f122a646d1ac5ca3ab96e130c52a3ad"
  },
  "homepage": "https://docs.42crunch.com",
  "category": "security"
}
{
  "name": "a11y-fixer",
  "description": "Scan HTML/JSX for accessibility issues",
  "source": {
    "source": "git-subdir",
    "url": "barnburner121/claude-plugin-marketplace",
    "path": "generated-plugins/a11y-fixer",
    "ref": "main",
    "sha": "5f6b5d32d9f457dc9c2c7c0fb1d67dffc9140f33"
  },
  "homepage": "https://github.com/barnburner121/claude-plugin-marketplace",
  "category": "development"
}

Summary

Frequently Asked Questions

Is there a predefined list of allowed categories in marketplace.json?

No, the repository does not maintain a hard-coded enumeration of valid categories. The schema accepts any non-empty string value, allowing the ecosystem to evolve organically. However, contributors should use descriptive, lowercase terms consistent with existing entries like development, testing, or productivity to ensure proper grouping in the marketplace interface.

How does the CI validate plugin categories?

The validation script .github/actions/validate-plugins/scripts/20-validate-cli-marketplace.sh checks that every plugin object in the assembled marketplace.json contains a category field with a non-empty string value. This ensures structural integrity without restricting the specific terms developers can use to describe their plugins.

Can I use multiple categories for a single plugin?

No, each plugin entry supports only one category value as a string. If your plugin spans multiple domains, select the category that best describes its primary function or the use case most users will encounter when browsing the marketplace.

Where is the category field displayed in the marketplace?

The category value from marketplace.json is consumed by the marketplace frontend to organize plugins into browsable groups and filtering options. While the exact display logic resides in the marketplace UI layer, the source data originates from the category property defined in each plugin object within the JSON manifest.

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 →