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

> Discover how plugin categories are defined in the Claude marketplace.json file. Learn about the category property and its validation rules for seamless integration.

- Repository: [Anthropic/claude-plugins-community](https://github.com/anthropics/claude-plugins-community)
- Tags: how-to-guide
- Published: 2026-09-08

---

**Plugin categories in the Claude plugin marketplace are defined by the `category` property in each plugin object within [`.claude-plugin/marketplace.json`](https://github.com/anthropics/claude-plugins-community/blob/main/.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`](https://github.com/anthropics/claude-plugins-community/blob/main/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`](https://github.com/anthropics/claude-plugins-community/blob/main/.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:

```json
{
  "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`](https://github.com/anthropics/claude-plugins-community/blob/main/.github/actions/validate-plugins/scripts/20-validate-cli-marketplace.sh) to verify the assembled [`marketplace.json`](https://github.com/anthropics/claude-plugins-community/blob/main/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`](https://github.com/anthropics/claude-plugins-community/blob/main/.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`](https://github.com/anthropics/claude-plugins-community/blob/main/marketplace.json). Choose a descriptive, lowercase term that accurately reflects your plugin's primary function.

Example implementations from the repository:

```json
{
  "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"
}

```

```json
{
  "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

- Plugin categories are defined by the **`category`** property in [`.claude-plugin/marketplace.json`](https://github.com/anthropics/claude-plugins-community/blob/main/.claude-plugin/marketplace.json)
- Values are arbitrary lowercase strings (e.g., `development`, `productivity`, `security`) with no hard-coded enumeration in the repository
- The CI validator at [`.github/actions/validate-plugins/scripts/20-validate-cli-marketplace.sh`](https://github.com/anthropics/claude-plugins-community/blob/main/.github/actions/validate-plugins/scripts/20-validate-cli-marketplace.sh) enforces that categories are non-empty strings
- Categories enable the marketplace UI to group plugins for discovery and filtering

## 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`](https://github.com/anthropics/claude-plugins-community/blob/main/.github/actions/validate-plugins/scripts/20-validate-cli-marketplace.sh) checks that every plugin object in the assembled [`marketplace.json`](https://github.com/anthropics/claude-plugins-community/blob/main/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`](https://github.com/anthropics/claude-plugins-community/blob/main/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.