Skip to content

Day 35 of 52 · about 20 min · Skills · Bonus

Share plugins through your own marketplace

Sending a zip of your plugin to each teammate means nobody knows which version they have. A marketplace in a git repository lists the plugins your team reviewed, and everyone installs and updates them by name.

You’ll finish with

  • A team-plugins/ marketplace whose marketplace.json lists acme-kit
  • acme-kit@acme-team installed from it
  • Project settings that offer the marketplace to everyone who trusts the repository

You’ll need

  • The Day 34 plugin in plugins/acme-kit/, or this day’s practice kit
  • For the last two steps: a GitHub or other git repository you can push to

Before you start

Tell us about your setup and the steps change to fit it. Your answers stay in this browser, and you can change them at any time.

Which system are you on?

Commands differ between systems. Pick the one you’ll run Claude Code on.

The steps

One step at a time. When a step’s check matches, tick it and the next one opens.

0 of 5 steps done0%
  1. Step 1 of 5: Set up the marketplace folder

    A marketplace is a folder with .claude-plugin/marketplace.json and the plugins it lists.

    team-plugins/

    • folder .claude-plugin
      • marketplace.jsonNewthe catalog
    • folder plugins
      • folder acme-kitNewa copy of the Day 34 plugin
    In real use, team-plugins/ is its own git repository.
    The kit has these files. In your own project, ask Claude:
    Create team-plugins/.claude-plugin/ and team-plugins/plugins/, then copy plugins/acme-kit into team-plugins/plugins/. Don’t change the original.

    Check it worked

    team-plugins/plugins/acme-kit/.claude-plugin/plugin.json exists.

  2. Step 2 of 5: Write marketplace.json

    Name the marketplace and its owner, and add one entry per plugin.
    team-plugins/.claude-plugin/marketplace.jsonJSON
    {
      "name": "acme-team",
      "description": "Plugins the Acme Quotes team has reviewed and shares",
      "owner": {
        "name": "Acme Quotes team"
      },
      "plugins": [
        {
          "name": "acme-kit",
          "source": "./plugins/acme-kit",
          "description": "The client-update skill and a hook that blocks edits to .env files and test/"
        }
      ]
    }
    
    .claude-plugin/marketplace.json
    name: acme-team
    What people type after @ to install
    owner.name: "Acme Quotes team"
    Required: who maintains it
    plugins[0].name: acme-kit
    Must match the name in the plugin’s plugin.json
    plugins[0].source: ./plugins/acme-kit
    A path from the marketplace root, with no ..
    name, owner and plugins are required.

    Check it worked

    claude plugin validate ./team-plugins ends with ✔ Validation passed.

  3. Step 3 of 5: Add it and install the plugin

    Register the folder as a marketplace, then install the plugin by name.
    In Claude Code

    You type: /plugin marketplace add ./team-plugins

    What happens: Registers it under the name in marketplace.json: acme-team.

    You type: /plugin install acme-kit@acme-team

    What happens: Opens the plugin in /plugin. Choose Install for you, in this repo only (local scope).

    A plugin id is the entry name, @, then the marketplace name.

    Check it worked

    Type /acme-kit and /acme-kit:client-update is offered.

  4. Step 4 of 5: Push it and send the add command

    Teammates add the marketplace from your git host, then install by name.

    In order:

    1. You

      Push team-plugins/

      As its own repository

    2. You

      Send the add command

      /plugin marketplace add your-org/team-plugins

    3. Teammates install

      /plugin install acme-kit@acme-team

    4. You

      Release a change

      Raise version in plugin.json, or installs keep the old copy

    owner/repo means GitHub. For other git hosts, send the full repository URL.

    Check it worked

    The repository’s root shows .claude-plugin/ and plugins/.

  5. Step 5 of 5: Offer it in project settings

    Commit settings so everyone who trusts the repository gets the marketplace and the plugin.
    Terminal

    Run: claude plugin marketplace remove acme-team

    Run: claude plugin marketplace add your-org/team-plugins --scope project

    Run: claude plugin install acme-kit@acme-team --scope project

    What happens: The first removes your local test copy. Use your own repository in the second.

    Run these from your app’s repository root, then commit .claude/settings.json.

    Check it worked

    .claude/settings.json now mentions acme-team and acme-kit@acme-team.

    If it didn’t work

    A teammate sees the plugin enabled but not installed

    They run claude plugin install acme-kit@acme-team --scope project once in the repository.

Finish · 5 of 5 steps to go

Your team installs reviewed plugins by name

Change a plugin in one repository, raise its version, and every install can update to it.

What you’ll have checked

  • claude plugin validate ./team-plugins passes
  • .claude/settings.json offers acme-team to the repository

Lesson updates by email

Get lesson updates by email

Leave your email and we’ll tell you when we add or update a lesson.

We’ll email you when we add or update a lesson. We use your email only for this. Privacy policy

Claude Code for your team

Want Claude Code set up across your team?

HorizonLux sets up and repairs Claude Code for teams: CLAUDE.md rules, hooks that enforce them and reviewed MCP servers. Book a free call to talk it through.

Questions

Questions about Day 35

How do teammates get updates?

Raise `version` and push. They run `/plugin marketplace update acme-team`, or turn on auto-update for it under Marketplaces in `/plugin`.

Sources

Checked against the official Claude Code docs on .

Independent resource, not affiliated with Anthropic. HorizonLux wrote this lesson; Claude Code is made by Anthropic.