Kipt

How to create a Claude Code plugin marketplace and host it

How to create Claude Code plugin marketplaces: write marketplace.json, pick plugin sources, validate, host on GitHub or a URL, and ship updates safely.

By the Kipt team · Updated 24 October 2026

What is a Claude Code plugin marketplace?

To create a Claude Code plugin marketplace, you make a directory with a .claude-plugin/marketplace.json file that lists your plugins, test it locally, then push it to a git host so others can add it with one command. Anthropic's marketplace docs define it as "a directory or repository with a .claude-plugin/marketplace.json file that lists your plugins and where to fetch each one."

It is a catalog, not a store. You control who can reach it, it can be private, and it can list as many plugins as you want. If you are new to plugins themselves, start with the Claude Code plugins guide.

A marketplace is worth it when a group, such as your team or company, should install your plugins and keep getting updates. For other cases the docs suggest something simpler:

  • One plugin for a few people: send the plugin directory or a .zip.
  • A plugin for everyone: submit it to Anthropic's directory.
  • Just for you: load it with --plugin-dir while you develop.

How do you create a marketplace step by step?

You need at least one working plugin. The example below uses a plugin called my-first-plugin with one skill.

1. Set up the folder

mkdir -p my-marketplace/.claude-plugin my-marketplace/plugins
cp -r my-first-plugin my-marketplace/plugins/
claude plugin validate ./my-marketplace/plugins/my-first-plugin

Validating the plugin first means any later error is about the marketplace, not the plugin.

2. Write marketplace.json

Save this at my-marketplace/.claude-plugin/marketplace.json:

{
  "name": "my-marketplace",
  "description": "Plugins for my team",
  "owner": {
    "name": "Your Name"
  },
  "plugins": [
    {
      "name": "my-first-plugin",
      "source": "./plugins/my-first-plugin",
      "description": "A greeting plugin to learn the basics"
    }
  ]
}

name, owner and plugins are required. Each plugin entry needs a name and a source.

3. Validate, add and install

claude plugin validate ./my-marketplace
claude plugin marketplace add ./my-marketplace
claude plugin install my-first-plugin@my-marketplace
claude plugin list

The install ID is always the entry name, an @, then the marketplace name. Start a session and run /my-first-plugin:hello to confirm the skill works. Plugin skills are always prefixed with the plugin's name.

While you iterate on a local marketplace, Claude Code reads plugin files directly, so edits show up at the next session start or after /reload-plugins. To start over, claude plugin marketplace remove my-marketplace removes it and uninstalls its plugins.

What goes in marketplace.json?

The marketplace reference lists every field. The ones most marketplaces use:

Field Required What it does
name Yes Marketplace identifier users type after @
owner Yes Maintainer info; name is required, email and url optional
plugins Yes One entry per plugin
description No Shown to users; validate warns when it's missing
renames No Maps old plugin names to new ones, or to null for removed plugins
forceRemoveDeletedPlugins No Uninstalls plugins you delete from the list

Plugin entries take name, source, description, version, category, tags and most plugin.json fields. Names use letters, digits, dots, underscores and hyphens, starting with a letter or digit.

Two rules prevent most failed installs:

  • Write relative paths from the marketplace root, the folder that contains .claude-plugin/, so "./plugins/my-first-plugin". Don't use ...
  • Keep the entry name and the plugin's own plugin.json name the same. If they differ and someone installs by the manifest name, Claude Code reports that the plugin was not found.

Where can a plugin's files live?

Each entry's source says where Claude Code fetches that plugin:

Source Use it when Example
Relative path The plugin is inside the marketplace folder "./plugins/my-first-plugin"
github The plugin is its own GitHub repo { "source": "github", "repo": "your-org/my-first-plugin" }
git-subdir The plugin is a folder in another repo, such as a monorepo { "source": "git-subdir", "url": "your-org/monorepo", "path": "tools/my-first-plugin" }

There are also url (any git host), archive (a zip over HTTPS), npm and command sources. Git-based sources can be pinned to a ref or sha.

How do you host a plugin marketplace?

Once installing works on your machine, push the folder somewhere your users can reach. The hosting docs list four options, each with the command users run in a session:

Host Users run
GitHub /plugin marketplace add your-org/your-marketplace
GitLab, Bitbucket, GitHub Enterprise Server or another git host /plugin marketplace add https://gitlab.example.com/team/plugins.git
A hosted marketplace.json URL /plugin marketplace add https://plugins.example.com/marketplace.json
A shared filesystem /plugin marketplace add /Volumes/shared/claude-plugins

Send the full URL for non-GitHub hosts, because owner/repo shorthand always means github.com. Users can append #<ref> to pin a branch or tag, such as your-org/your-marketplace#stable.

A few hosting details matter:

  • URL-hosted catalogs download only the JSON file, so relative-path entries fail there. Use github or archive sources, or host in a git repo.
  • Keep plugin files out of Git LFS. Clones never fetch LFS content.
  • Share with one repo's contributors by running claude plugin marketplace add your-org/your-marketplace --scope project once and committing the .claude/settings.json it writes.

Private repositories

Claude Code has no git token of its own. It runs git on each user's machine with prompts turned off, so users need credentials already in place: an SSH key loaded in ssh-agent, or an HTTPS credential their helper has stored. On GitHub, gh auth login followed by gh auth setup-git stores one. Users without a GitHub SSH key can set CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1.

How do you ship updates without breaking installs?

Users only get a new copy when a plugin's version changes. You have two choices:

  • Bump version on every release. If you push new commits without changing it, users don't receive them.
  • Leave version out of both plugin.json and the marketplace entry, so users track your commits.

Don't set version in both places; plugin.json wins and validate reports the mismatch.

Auto-update is off for third-party marketplaces by default. Users turn it on under Marketplaces in /plugin, or an admin sets "autoUpdate": true in managed settings. Otherwise users update with /plugin marketplace update <name>.

Never rename a plugin casually. Its name is stored in users' settings, so changing it breaks installs. To change the label people see, set displayName instead. If you must rename, add a renames map such as "formatter": "code-formatter" and keep old entries forever. For stable and beta tracks, host two marketplaces with different names whose entries point at different refs.

Finally, check the name. Anthropic reserves its official marketplace names, such as claude-plugins-official, names that imitate them, and names starting with claudeai-, among others.

How do you roll a marketplace out to a company?

An admin who controls managed settings can register your marketplace and enable its plugins for everyone with extraKnownMarketplaces and enabledPlugins. Team and Enterprise organizations can also sync a private marketplace repo through Organization settings > Plugins & skills on claude.ai, which uses the organization's GitHub or GitLab connection instead of each user's credentials. The Claude Code enterprise guide covers managed settings.

Keep the skills portable

Most plugins are mostly skills, and a skill is useful outside Claude Code too. Kipt keeps your Agent Skills as SKILL.md folders in a private GitHub repo you own, and you can import skills from a GitHub link, a folder or a .zip. Copy the ones you want into a plugin's skills/ folder, or install the whole library with npx skills add https://github.com/<you>/<repo>.git --all -g. To turn a single prompt into a skill, try the free SKILL.md generator. For how skills work on their own, see the Claude Code skills guide.

Questions

How do I create a Claude Code plugin marketplace?

Make a directory with a .claude-plugin/marketplace.json file that has a name, an owner and a plugins array, and put your plugins inside it or point to them. Run claude plugin validate on the directory, test it with claude plugin marketplace add, then push it to a git host.

Can a Claude Code plugin marketplace be private?

Yes. Claude Code runs git on each user's machine with prompts turned off, so anyone whose machine already has working credentials for the repository can add it. There is no token field in marketplace.json.

How do users install plugins from my marketplace?

They run /plugin marketplace add your-org/your-marketplace for a GitHub repo, or the full URL for another host. Then they install with /plugin install plugin-name@marketplace-name, where the marketplace name comes from your marketplace.json, not the repo name.

How do I push updates to marketplace users?

Change the plugin's version, or leave version out entirely so users track your commits. Users receive changes when they run /plugin marketplace update or claude plugin update, or automatically if they or an admin turned on auto-update for your marketplace.

What names can't I use for a marketplace?

Official Anthropic names such as claude-plugins-official, names that imitate them, names starting with claudeai-, and a few others such as npm and github are reserved. Marketplace names use letters, digits, dots, underscores and hyphens, starting with a letter or digit.

More in Claude Code

All guides

Keep your prompts and skills in one place, in your own GitHub. Install every skill with one command.

Get started

Kipt is an independent product, not affiliated with or endorsed by Anthropic, OpenAI, Cursor or GitHub. Claude, ChatGPT, Codex, Cursor and GitHub are trademarks of their owners.