Maintaining A Marketplace logo

Maintaining A Marketplace

Organization
ed3dai
maintaining-a-marketplace

Use when creating, releasing, or maintaining a Claude Code Plugin Marketplace - covers marketplace.json schema, version management, release checklists, changelog conventions, and validation to prevent sync drift between plugin.json and marketplace.json

Overview

Publishered3dai
Repositoryed3d-plugins
Skill namemaintaining-a-marketplace
Stars
249
Forks
33
Bundled files
Instructions only
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • Self-contained

    Everything the model needs lives in the instructions — no extra files to sync.

  • Open source

    Published by ed3dai on GitHub. Read the source before you install it.

Installation

Install the Maintaining A Marketplace AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/ed3dai/ed3d-plugins.git /tmp/ed3d-plugins
mkdir -p .claude/skills
cp -r /tmp/ed3d-plugins/plugins/ed3d-extending-claude/skills/maintaining-a-marketplace .claude/skills/maintaining-a-marketplace
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Maintaining A Marketplace in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Maintaining A Marketplace on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Maintaining A Marketplace is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Maintaining a Marketplace

Overview

A Claude Code Plugin Marketplace is a git repository containing .claude-plugin/marketplace.json that catalogs plugins for discovery and installation. The primary maintenance challenge is sync drift — keeping versions, descriptions, and metadata consistent across plugin.json, marketplace.json, and CHANGELOG.md.

When to Use

  • Setting up a new marketplace from scratch
  • Releasing a new plugin version
  • Adding a plugin to an existing marketplace
  • Auditing marketplace consistency
  • Troubleshooting plugin installation failures

Marketplace Structure

my-marketplace/
  .claude-plugin/
    marketplace.json       # Required: marketplace catalog
  plugins/
    plugin-a/
      .claude-plugin/
        plugin.json        # Required: plugin manifest
      skills/
      commands/
      agents/
    plugin-b/
      .claude-plugin/
        plugin.json

marketplace.json Schema

json
{
  "$schema": "https://anthropic.com/claude-code/marketplace.schema.json",
  "name": "my-marketplace",
  "owner": {
    "name": "Your Name",
    "email": "you@example.com"
  },
  "metadata": {
    "description": "Brief marketplace description",
    "version": "1.0.0",
    "pluginRoot": "./plugins"
  },
  "plugins": [
    {
      "name": "my-plugin",
      "source": "./plugins/my-plugin",
      "description": "What this plugin does",
      "version": "1.0.0",
      "author": {
        "name": "Your Name",
        "email": "you@example.com"
      },
      "license": "MIT",
      "keywords": ["category1", "category2"],
      "category": "development"
    }
  ]
}

Required fields:

  • name — Kebab-case marketplace identifier. Users see this: /plugin install my-tool@marketplace-name
  • owner.name — Maintainer name (string, not bare string for owner)
  • plugins — Array of plugin entries

Each plugin entry requires:

  • name — Kebab-case plugin identifier
  • source — Where to fetch the plugin (see Source Formats below)

Common optional fields: description, version, author, license, keywords, category, tags, homepage, repository

Fields that DO NOT exist (do not invent these): displayName, installUrl, path, marketplace (as wrapper object)

Source Formats

json
// Relative path (monorepo — only works with git-based marketplace add)
"source": "./plugins/my-plugin"

// GitHub repository
"source": { "source": "github", "repo": "owner/repo" }

// GitHub with pinned version
"source": { "source": "github", "repo": "owner/repo", "ref": "v2.0.0", "sha": "a1b2c3..." }

// Git URL (GitLab, Bitbucket, self-hosted)
"source": { "source": "url", "url": "https://gitlab.com/team/plugin.git" }

Release Checklist

When releasing a new plugin version, update these files in this order:

  1. plugins/<name>/.claude-plugin/plugin.json — Bump version
  2. .claude-plugin/marketplace.json — Update matching plugin entry's version to the same value
  3. CHANGELOG.md — Add entry at the top (after # Changelog heading)
  4. Validate — Run claude plugin validate . or /plugin validate . from the marketplace root
  5. Commit and push — Single commit with all three file changes

Changelog Format

markdown
## plugin-name X.Y.Z

Brief description of the release (1-2 sentences).

**New:**
- Specific new features or additions

**Changed:**
- Modifications to existing behavior

**Fixed:**
- Bug fixes

Only include sections that apply. Be specific — "Added code-review-checklist skill for systematic code review" not "Added new skill."

Version Sync Verification

After editing, verify these match:

  • plugins/<name>/.claude-plugin/plugin.jsonversion
  • .claude-plugin/marketplace.json → plugin entry's version
  • CHANGELOG.md → entry header ## plugin-name X.Y.Z

All three MUST show the same version string.

Creating a New Marketplace

From Scratch

  1. Create directory structure with .claude-plugin/marketplace.json
  2. Add plugin entries with name and source at minimum
  3. Add $schema field for validation
  4. Validate: claude plugin validate .
  5. Test locally: /plugin marketplace add ./my-marketplace
  6. Push to git host for distribution

Adding a Plugin to Existing Marketplace

  1. Read the plugin's plugin.json to extract metadata
  2. Add entry to plugins array in marketplace.json with fields matching plugin.json
  3. Validate: claude plugin validate .
  4. Add changelog entry for the marketplace update

Distribution

Users add your marketplace by its git location:

bash
# GitHub
/plugin marketplace add owner/repo

# Other git hosts
/plugin marketplace add https://gitlab.com/company/plugins.git

# Specific branch/tag
/plugin marketplace add https://gitlab.com/company/plugins.git#v1.0.0

# Local (development)
/plugin marketplace add ./my-marketplace

Users install plugins from your marketplace:

bash
/plugin install plugin-name@marketplace-name

Auto-Updates

  • Official Anthropic marketplaces auto-update by default
  • Third-party marketplaces have auto-update disabled by default
  • Users toggle auto-update per marketplace in /plugin → Marketplaces tab

Team Configuration

Add to .claude/settings.json in a project repo to prompt team members to install:

json
{
  "extraKnownMarketplaces": {
    "company-tools": {
      "source": { "source": "github", "repo": "your-org/claude-plugins" }
    }
  },
  "enabledPlugins": {
    "formatter@company-tools": true
  }
}

Private Repositories

Manual install uses existing git credential helpers. For background auto-updates, set environment tokens:

ProviderVariables
GitHubGITHUB_TOKEN or GH_TOKEN
GitLabGITLAB_TOKEN or GL_TOKEN
BitbucketBITBUCKET_TOKEN

Common Mistakes

MistakeSymptomFix
Version drift between plugin.json and marketplace.jsonOld version installed despite pushVerify both files show same version
Skipping validationJSON syntax errors, missing fieldsRun claude plugin validate . before every push
Generic changelog entriesUsers can't evaluate upgrade valueDescribe specific changes, name affected skills/agents
Inventing schema fieldsValidation errors, plugins not foundOnly use fields from the schema above
Using owner as stringValidation errorowner must be object: {"name": "...", "email": "..."}
Missing source in plugin entryPlugin can't be installedEvery plugin entry needs source
Relative paths in URL-based marketplace"path not found" errorsOnly use relative paths with git-based marketplace add
Not committing all sync files togetherPartial release, version mismatchSingle commit for plugin.json + marketplace.json + CHANGELOG.md
Forgetting to pushLocal changes, users see old versionCommit AND push after release

Quick Reference

TaskFiles to Touch
New plugin versionplugin.json + marketplace.json + CHANGELOG.md
New plugin addedmarketplace.json + CHANGELOG.md
New marketplace.claude-plugin/marketplace.json only
Description updateplugin.json + marketplace.json (keep in sync)
Validateclaude plugin validate . or /plugin validate .

Frequently asked questions

What does the Maintaining A Marketplace AI skill do?

Use when creating, releasing, or maintaining a Claude Code Plugin Marketplace - covers marketplace.json schema, version management, release checklists, changelog conventions, and validation to prevent sync drift between plugin.json and marketplace.json

Why use Maintaining A Marketplace on TypingMind?

Because you install it once and use it with any model. Maintaining A Marketplace is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Maintaining A Marketplace in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/ed3dai/ed3d-plugins/tree/main/plugins/ed3d-extending-claude/skills/maintaining-a-marketplace. TypingMind reads its SKILL.md and installs it as a skill you can enable per chat.

Which AI models can use Maintaining A Marketplace?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Maintaining A Marketplace?

As many as you like. As long as a model supports skills, you can use Maintaining A Marketplace with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Maintaining A Marketplace AI skill free?

It is published on GitHub by ed3dai. Check the repository for licensing terms. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇