Back to guides

How Do I Install and Publish Claude Code Plugins from the Marketplace?

Jake McCluskeyIntermediate40 min read
How Do I Install and Publish Claude Code Plugins from the Marketplace?

Claude Code plugins are how the community ships reusable Skills, MCPs, hooks, and agents as installable packages. If you've been copy-pasting Skills between projects or manually cloning other people's MCP setups, you're doing it the hard way. Here's how to install plugins from the marketplace, write your own, and publish it so other people can use it too.

Why this matters

Early Claude Code users each built their own Skills and MCPs from scratch. Useful, but redundant — five people building the same "generate-a-changelog" Skill. Plugins turn that into a marketplace: I write a plugin once, you install it with one command, your Claude Code session now has my Skill, MCP, and hooks.

The shift in your workflow: instead of writing every SOP and integration by hand, you start by asking "does a plugin already do this?" Often yes, and the community-maintained versions are stronger than the weekend hack you'd ship on your own.

Before you start

You need:

  • Claude Code 1.5+ (plugin support landed here). Check with claude --version.
  • A GitHub account — the default marketplace is GitHub-based, and publishing requires it.
  • Git installed and working.
  • One pain point you want a plugin for. The guide is more concrete with a real goal. Mine is usually "I want a /changelog command that writes a release note from git diff."

Step 1: Find the marketplace list

Claude Code looks for plugins in registered marketplace sources. The official one:

bash
claude plugin marketplace add anthropics/claude-code-plugins

That registers the Anthropic-maintained catalog. Other community marketplaces exist — add them the same way when you trust the maintainer.

List what's in registered marketplaces:

bash
claude plugin search

You'll see entries like changelog-generator, commit-message-writer, postgres-mcp, etc. Each entry has a short description and an install command.

Step 2: Install a plugin

bash
claude plugin install changelog-generator

Claude Code clones the plugin repo into ~/.claude/plugins/<name>/ and merges it into your active configuration:

  • Skills show up with / commands.
  • MCPs get registered in your mcp-config.json.
  • Hooks activate in your current projects.

List installed plugins:

bash
claude plugin list

Uninstall any time:

bash
claude plugin remove changelog-generator

No lock-in. Plugin files are just markdown and TypeScript you can inspect.

Step 3: Use the plugin

Open Claude Code in a project. Run the command the plugin exposes — e.g., /changelog. Claude invokes the plugin's Skill, which has its own SKILL.md describing what it does.

Treat the first run as a test. Plugins from unknown authors can write files, run scripts, and call MCPs you didn't install directly. Read the plugin's SKILL.md before you trust it with your codebase.

Step 4: Write your own plugin

Now flip it — you've got a Skill you use every day and you want to ship it as a plugin.

Create a new repo:

bash
mkdir my-claude-plugin && cd my-claude-plugin
git init

The plugin structure:

text
my-claude-plugin/
├── plugin.json
├── README.md
├── skills/
│   └── my-skill/
│       └── SKILL.md
├── hooks/
│   └── pre-commit.sh      # optional
└── mcp/
    └── server.config.json # optional

plugin.json is the manifest:

json
{
  "name": "my-skill-pack",
  "version": "0.1.0",
  "description": "One-line description of what this plugin does.",
  "author": "your-github-username",
  "skills": ["skills/my-skill"],
  "hooks": [],
  "mcp": []
}

Drop your SKILL.md file from the Skills guide into skills/my-skill/. That's it — a minimum viable plugin.

Step 5: Test locally before publishing

You can install a local plugin by path, no need to push first:

bash
claude plugin install /absolute/path/to/my-claude-plugin

Run the Skill it exposes. Iterate on SKILL.md until it behaves correctly. Uninstall and reinstall as needed.

This is the single most-skipped step when people publish plugins. The Claude Code plugin-marketplace ecosystem has a lot of plugins that work on the author's machine and not on yours. Test in a fresh project, as a new user would.

Step 6: Publish to GitHub and add to a marketplace

Commit everything, push to GitHub, make the repo public:

bash
git add -A
git commit -m "Initial plugin release"
git remote add origin [email protected]:yourname/my-claude-plugin.git
git push -u origin main

Anyone can now install it with:

bash
claude plugin install yourname/my-claude-plugin

To get it into the Anthropic marketplace catalog, open a PR to anthropics/claude-code-plugins adding your plugin to the registry. The CONTRIBUTING guide in that repo covers the current submission format and quality bar.

For community marketplaces or private org registries, follow the maintainer's submission flow — usually a PR to a YAML index file.

Verify it worked

1. The plugin installs cleanly in a fresh machine. Ask a teammate to install your plugin. If it works there, it works.

2. Uninstall and reinstall leaves no cruft. claude plugin remove, then check ~/.claude/plugins/ — your plugin's folder should be gone.

3. Installed plugins are discoverable. claude plugin list shows your plugin with correct name and version.

Where this breaks

  • Plugin name collisions. Two plugins can both ship a /commit Skill; the later one wins silently. Check existing plugins before naming yours.
  • Hook plugins that fire on every commit. A plugin that adds a pre-commit hook can slow down every git operation in every project. Review hook plugins' scripts before installing, and scope hooks to specific project types.
  • MCPs that require secrets. A plugin that bundles an MCP server often needs an API key. The plugin won't ship your key for you — read the README to see what env vars you need to set before the MCP works.
  • Version pinning. Plugins evolve, breaking changes happen. Pin the version in your team's CLAUDE.md or plugin-lock file so everyone runs the same version: claude plugin install [email protected].
  • Plugins with network access you didn't expect. A plugin's MCP can phone home. Inspect the plugin's MCP server config before trusting it with your codebase. For sensitive work, prefer local-only Skills over plugins that include MCPs.

What to try next

Want this built for you instead?

Let's talk about your AI + SEO stack

If you'd rather skip the how-to and have it shipped for you, that's what I do. Start a conversation and we'll figure out the fastest path to results.

Let's Talk
Questions from readers

Frequently asked

What's the difference between a Skill and a plugin?

A Skill is a single capability defined in a SKILL.md file. A plugin is a package — it can contain multiple Skills plus MCPs, hooks, and configuration. Skills are what Claude runs; plugins are how you distribute and install collections of them.

Are plugins safe to install from random GitHub users?

Not automatically. Plugins can ship MCPs that phone home, hooks that run on every commit, and Skills with arbitrary instructions. Inspect the SKILL.md files and hook scripts before installing anything from an unknown author. Pin to specific versions in your team.

How do I keep plugin versions consistent across my team?

Pin versions explicitly (claude plugin install [email protected]) and record the pins in your team's CLAUDE.md or a shared plugin-lock file. Without pinning, two teammates can end up running different plugin versions and get different behavior.

Can I install plugins from a private company repo?

Yes. The install command accepts any Git URL. Host your company-internal plugin repo privately on GitHub Enterprise or your own Gitea, and install with the full URL. Standard Git auth (SSH keys, HTTPS tokens) applies.

What's the fastest way to turn my existing Skill into a plugin?

Create a new directory, add a plugin.json manifest pointing at your existing SKILL.md, git init, push to GitHub, done. You don't need to restructure the Skill — wrap it. The minimum viable plugin is three files: plugin.json, README.md, and your SKILL.md.