- If you’re choosing who gets each plugin once the repository syncs, see Manage plugins for your organization
- If you’re writing the
marketplace.jsonfile, see Create a marketplace in the Claude Code docs
marketplace.json against the plugin sources that organization sync accepts.
Give organization sync access to your repository
Members don’t need access to the repository themselves, and their Git credentials aren’t involved. Organization sync reads the marketplace repository’s default branch through your organization’s GitHub or GitLab connection on claude.ai, whichever matches the repository’s host:- github.com: the Claude GitHub App, which you install during Sync a marketplace from github.com
- Your GitHub Enterprise Server host: your organization’s GitHub Enterprise App
- gitlab.com or your self-managed GitLab instance: the access token in your organization’s GitLab configuration for that host
Sync a marketplace from github.com
When you sync a marketplace from github.com, organization sync reads the repository through the Claude GitHub App, and you choose the availability its plugins start with as you add it. To sync a marketplace from a private or internal repository on github.com:1
Open Plugins & skills
2
Select Sync from GitHub
Select Add, then Sync from GitHub.
3
Connect to GitHub
If the dialog shows Connect to GitHub, select it and authorize. GitHub returns you to the dialog.
4
Choose the repository
Search for the repository or enter it as
owner/repo. The list shows private and internal repositories.5
Install the Claude GitHub App if needed
If the repository isn’t in the list, select Install the Claude GitHub App under Repository missing?, grant the app access to the repository on GitHub, and return to the dialog.
6
Leave automatic sync on
Leave Sync automatically on to sync each time someone pushes to the default branch. Claude creates the webhook on the repository for you.
7
Choose the default access
Choose the Default access for the plugins in this marketplace.
8
Create the marketplace
Select Create.
Sync a GitLab-hosted marketplace
Syncing a marketplace from GitLab needs a GitLab configuration for the host first, which holds the access token that organization sync reads the repository with. To sync a marketplace from gitlab.com or a self-managed GitLab instance:1
Add a GitLab configuration
As an Owner, add a GitLab configuration for that host at Organization settings > Claude Code. GitLab configurations are in public beta and apply only to plugin marketplace sync.
2
Sync from GitLab
In Organization settings > Plugins & skills, select Add, then Sync from GitLab, as Add your own plugins describes. When you add it, enter the project’s HTTPS URL, such as
https://gitlab.example.com/platform/claude-plugins.Plugin sources that organization sync accepts
The repository you sync is a plugin marketplace: it has a.claude-plugin/marketplace.json file that lists your plugins and the location of each one. On a Team or Enterprise plan, organization sync applies these rules to the marketplace repository and to each plugin source the marketplace lists:
- Marketplace repository: on github.com and gitlab.com, the marketplace repository must be private or internal
- Plugin source types: each plugin source must be of type
github,url, orgit-subdir, or a relative path that starts with./. If you list a plugin by bare name undermetadata.pluginRoot, organization sync rejects it as an unsupported source. Write the path out instead, such as./plugins/deploy-tools - Private plugin sources: a plugin source can be private when it’s one of the following:
- A github.com source that shares the marketplace repository’s owner
- A source on your organization’s GitHub Enterprise host with the GitHub Enterprise App installed on the repository
- A
urlorgit-subdirsource on the same GitLab host as the marketplace repository. On gitlab.com, the source must also be under the same top-level group or user namespace as the marketplace repository
- Public plugin sources: any other plugin source must be a public repository on github.com, gitlab.com, or bitbucket.org, which organization sync fetches without credentials. Organization sync rejects plugin sources on hosts these rules don’t cover
marketplace.json plugin entry references a plugin you committed at plugins/deploy-tools in the marketplace repository:
Keep executables out of the top-level bin directory
Don’t include a top-levelbin/ directory in any plugin you distribute through organization settings. claude.ai rejects a plugin that has one, whether the plugin arrives by marketplace sync or by direct upload in Organization settings > Plugins & skills. The error message starts with Plugin contains a top-level bin/ directory. On marketplace sync, organization sync rejects that plugin and syncs the rest of the marketplace.
Keep executables in another directory, such as scripts/, and reference them as ${CLAUDE_PLUGIN_ROOT}/scripts/<name> from your skills, hooks, or MCP server configs.
Next steps
- Manage plugins for your organization: set each synced plugin to available, installed by default, or required
- Roll out a plugin to your whole organization: reach members in claude.ai and Cowork and developers in the Claude Code command line with one plugin
- Create a marketplace in the Claude Code docs: write the
marketplace.jsonfile that lists your plugins