Back to skills

Marketplace Structure

This skill should be used when the user asks to "create a marketplace", "set up marketplace.json", "organize multiple plugins", "distribute plugins", "host plugins", "marketplace schema", "plugin marketplace structure", "multi-plugin organization", or needs guidance on plugin marketplace creation, marketplace manifest configuration, or plugin distribution strategies.

4 stars
0 votes
0 copies
0 views
Added 12/19/2025
developmentgobashtestinggitfrontendsecuritydocumentation

Works with

mcp

Install via CLI

$openskills install sjnims/plugin-dev
Download Zip
Files
SKILL.md
---
name: marketplace-structure
description: This skill should be used when the user asks to "create a marketplace", "set up marketplace.json", "organize multiple plugins", "distribute plugins", "host plugins", "marketplace schema", "plugin marketplace structure", "multi-plugin organization", or needs guidance on plugin marketplace creation, marketplace manifest configuration, or plugin distribution strategies.
---

# Marketplace Structure

A plugin marketplace is a catalog of available plugins that enables centralized discovery, version management, and distribution. This skill covers creating and maintaining marketplaces for team or community plugin distribution.

## Overview

Marketplaces provide:

- **Centralized discovery** - Browse plugins from multiple sources in one place
- **Version management** - Track and update plugin versions automatically
- **Team distribution** - Share required plugins across an organization
- **Flexible sources** - Support for relative paths, GitHub repos, and git URLs

### When to Create a Marketplace vs. a Plugin

| Create a Plugin | Create a Marketplace |
|----------------|---------------------|
| Single-purpose extension | Collection of related plugins |
| Used directly by end users | Distributes multiple plugins |
| One team or individual maintains it | Curates plugins from various sources |
| Installed via `/plugin install` | Added via `/plugin marketplace add` |

## Directory Structure

Place `marketplace.json` in the `.claude-plugin/` directory at the repository root:

```text
marketplace-repo/
├── .claude-plugin/
│   └── marketplace.json      # Required: Marketplace manifest
├── plugins/                  # Optional: Local plugin directories
│   ├── plugin-one/
│   │   └── .claude-plugin/
│   │       └── plugin.json
│   └── plugin-two/
│       └── .claude-plugin/
│           └── plugin.json
└── README.md                 # Recommended: Marketplace documentation
```

## Marketplace Schema

The `marketplace.json` manifest defines the marketplace and its available plugins.

### Required Fields

| Field | Type | Description |
|-------|------|-------------|
| `name` | string | Marketplace identifier (kebab-case, no spaces) |
| `owner` | object | Marketplace maintainer information |
| `plugins` | array | List of available plugin entries |

### Owner Object

```json
{
  "owner": {
    "name": "Team Name",
    "email": "team@example.com",
    "url": "https://github.com/team"
  }
}
```

### Optional Metadata

```json
{
  "metadata": {
    "description": "Brief marketplace description",
    "version": "1.0.0",
    "pluginRoot": "./plugins"
  }
}
```

The `pluginRoot` field sets the base path for relative plugin sources.

## Plugin Entry Format

Each plugin in the `plugins` array requires:

| Field | Type | Description |
|-------|------|-------------|
| `name` | string | Plugin identifier (kebab-case, unique within marketplace) |
| `source` | string or object | Where to fetch the plugin |

### Optional Plugin Fields

Standard metadata fields:

- `description` - Brief plugin description
- `version` - Plugin version (semver)
- `author` - Author information object
- `homepage` - Documentation URL
- `repository` - Source code URL
- `license` - SPDX license identifier
- `keywords` - Tags for discovery
- `category` - Plugin category
- `tags` - Additional searchability tags

Component configuration fields:

- `commands` - Custom paths to command files or directories
- `agents` - Custom paths to agent files
- `hooks` - Hooks configuration or path to hooks file
- `mcpServers` - MCP server configurations

For complete field reference, see `references/schema-reference.md`.

## Plugin Sources

### Relative Paths

For plugins within the same repository:

```json
{
  "name": "my-plugin",
  "source": "./plugins/my-plugin"
}
```

### GitHub Repositories

```json
{
  "name": "github-plugin",
  "source": {
    "source": "github",
    "repo": "owner/plugin-repo"
  }
}
```

### Git URLs

For GitLab, Bitbucket, or self-hosted git:

```json
{
  "name": "git-plugin",
  "source": {
    "source": "url",
    "url": "https://gitlab.com/team/plugin.git"
  }
}
```

## Strict vs. Non-Strict Mode

The `strict` field controls whether plugins must have their own `plugin.json`:

| Mode | Behavior |
|------|----------|
| `strict: true` (default) | Plugin must include `plugin.json`; marketplace entry supplements it |
| `strict: false` | `plugin.json` optional; marketplace entry serves as complete manifest |

Use `strict: false` when:

- Curating external plugins without modifying their source
- Providing all metadata in the marketplace entry
- Plugin directories contain only commands/agents/skills without manifest

```json
{
  "name": "external-plugin",
  "source": {
    "source": "github",
    "repo": "external/plugin"
  },
  "description": "Complete metadata here",
  "version": "2.0.0",
  "strict": false
}
```

## Best Practices

### Organization

- **One theme per marketplace** - Group related plugins (e.g., "frontend-tools", "security-plugins")
- **Clear naming** - Use descriptive kebab-case names for both marketplace and plugins
- **Version all entries** - Include `version` for every plugin entry
- **Document each plugin** - Provide `description` for discoverability

### Versioning

- Use semantic versioning (X.Y.Z) for marketplace `metadata.version`
- Update marketplace version when adding, removing, or updating plugins
- Consider a CHANGELOG.md for tracking changes

### Distribution

- **GitHub hosting** - Simplest distribution via `/plugin marketplace add owner/repo`
- **Team settings** - Configure `extraKnownMarketplaces` in `.claude/settings.json`
- **Local testing** - Add with `/plugin marketplace add ./path` during development

For detailed distribution patterns, see `references/distribution-patterns.md`.

### Validation

Validate marketplace structure before publishing:

```bash
# Check JSON syntax
jq . .claude-plugin/marketplace.json

# Verify required fields
jq 'has("name") and has("owner") and has("plugins")' .claude-plugin/marketplace.json
```

Use the `plugin-validator` agent with marketplace support for comprehensive validation.

## Complete Example

```json
{
  "name": "team-tools",
  "owner": {
    "name": "DevTools Team",
    "email": "devtools@company.com",
    "url": "https://github.com/company"
  },
  "metadata": {
    "description": "Internal development tools for the engineering team",
    "version": "1.0.0"
  },
  "plugins": [
    {
      "name": "code-formatter",
      "source": "./plugins/formatter",
      "description": "Automatic code formatting on save",
      "version": "2.1.0"
    },
    {
      "name": "security-scanner",
      "source": {
        "source": "github",
        "repo": "company/security-plugin"
      },
      "description": "Security vulnerability detection",
      "version": "1.5.0",
      "category": "security"
    }
  ]
}
```

## Additional Resources

- `references/schema-reference.md` - Complete field reference for marketplace.json
- `references/distribution-patterns.md` - Hosting and team distribution strategies
- `examples/minimal-marketplace.md` - Single plugin marketplace template
- `examples/team-marketplace.md` - Internal company marketplace template
- `examples/community-marketplace.md` - Public multi-plugin marketplace template

## Related Skills

- **plugin-structure** - For individual plugin `plugin.json` details
- **plugin-validator** agent - For validating marketplace structure
- **`/plugin-dev:create-marketplace`** - Guided marketplace creation workflow

## Working Example

This repository (`plugin-dev`) is itself a marketplace. Examine `.claude-plugin/marketplace.json` at the repository root for a real-world example of marketplace structure and plugin organization.

Comments (0)

No comments yet. Be the first to comment!