Back to list
sjnims

marketplace-structure

by sjnims

Comprehensive toolkit for developing Claude Code plugins. Includes 8 expert skills covering hooks, MCP integration, commands, agents, and best practices.

6🍴 1📅 Jan 24, 2026

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 PluginCreate a Marketplace
Single-purpose extensionCollection of related plugins
Used directly by end usersDistributes multiple plugins
One team or individual maintains itCurates plugins from various sources
Installed via /plugin installAdded via /plugin marketplace add

Directory Structure

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

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

FieldTypeDescription
namestringMarketplace identifier (kebab-case, no spaces)
ownerobjectMarketplace maintainer information
pluginsarrayList of available plugin entries

Owner Object

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

Optional Metadata

{
  "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:

FieldTypeDescription
namestringPlugin identifier (kebab-case, unique within marketplace)
sourcestring or objectWhere 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:

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

GitHub Repositories

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

Git URLs

For GitLab, Bitbucket, or self-hosted git:

{
  "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:

ModeBehavior
strict: true (default)Plugin must include plugin.json; marketplace entry supplements it
strict: falseplugin.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
{
  "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:

# 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

{
  "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
  • 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.

Score

Total Score

75/100

Based on repository quality metrics

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

+10
説明文

100文字以上の説明がある

+10
人気

GitHub Stars 100以上

0/15
最近の活動

1ヶ月以内に更新

+10
フォーク

10回以上フォークされている

0/5
Issue管理

オープンIssueが50未満

+5
言語

プログラミング言語が設定されている

+5
タグ

1つ以上のタグが設定されている

+5

Reviews

💬

Reviews coming soon