Visão geral
Criar e distribuir um marketplace envolve:- Criar plugins: construir um ou mais plugins com commands, agents, hooks, MCP servers ou LSP servers. Este guia assume que você já tem plugins para distribuir; veja Criar plugins para detalhes sobre como criá-los.
- Criar um arquivo de marketplace: definir um
marketplace.jsonque liste seus plugins e onde encontrá-los (veja Criar o arquivo de marketplace). - Hospedar o marketplace: fazer push para GitHub, GitLab ou outro host git (veja Hospedar e distribuir marketplaces).
- Compartilhar com usuários: usuários adicionam seu marketplace com
/plugin marketplace adde instalam plugins individuais (veja Descobrir e instalar plugins).
/plugin marketplace update.
Passo a passo: criar um marketplace local
Este exemplo cria um marketplace com um plugin: uma skill/review para revisões de código. Você criará a estrutura de diretórios, adicionará uma skill, criará o manifesto do plugin e o catálogo do marketplace, depois instalará e testará.
Criar a skill
Crie um arquivo
SKILL.md que defina o que a skill /review faz.my-marketplace/plugins/review-plugin/skills/review/SKILL.md
Criar o manifesto do plugin
Crie um arquivo
plugin.json que descreva o plugin. O manifesto vai no diretório .claude-plugin/.my-marketplace/plugins/review-plugin/.claude-plugin/plugin.json
Criar o arquivo de marketplace
Crie o catálogo do marketplace que lista seu plugin.
my-marketplace/.claude-plugin/marketplace.json
Como os plugins são instalados: Quando os usuários instalam um plugin, Claude Code copia o diretório do plugin para um local de cache. Isso significa que os plugins não podem referenciar arquivos fora de seu diretório usando caminhos como
../shared-utils, porque esses arquivos não serão copiados.Se você precisar compartilhar arquivos entre plugins, use symlinks (que são seguidos durante a cópia) ou reestruture seu marketplace para que o diretório compartilhado esteja dentro do caminho de origem do plugin. Veja Plugin caching and file resolution para detalhes.Criar o arquivo de marketplace
Crie.claude-plugin/marketplace.json na raiz do seu repositório. Este arquivo define o nome do seu marketplace, informações do proprietário e uma lista de plugins com suas fontes.
Cada entrada de plugin precisa no mínimo de um name e source (onde buscá-lo). Veja o esquema completo abaixo para todos os campos disponíveis.
Esquema do marketplace
Campos obrigatórios
| Campo | Tipo | Descrição | Exemplo |
|---|---|---|---|
name | string | Identificador do marketplace (kebab-case, sem espaços). Isso é público: os usuários o veem ao instalar plugins (por exemplo, /plugin install my-tool@your-marketplace). | "acme-tools" |
owner | object | Informações do mantenedor do marketplace (veja campos abaixo) | |
plugins | array | Lista de plugins disponíveis | Veja abaixo |
Nomes reservados: Os seguintes nomes de marketplace são reservados para uso oficial da Anthropic e não podem ser usados por marketplaces de terceiros:
claude-code-marketplace, claude-code-plugins, claude-plugins-official, anthropic-marketplace, anthropic-plugins, agent-skills, life-sciences. Nomes que imitam marketplaces oficiais (como official-claude-plugins ou anthropic-tools-v2) também são bloqueados.Campos do proprietário
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
name | string | Sim | Nome do mantenedor ou equipe |
email | string | Não | Email de contato do mantenedor |
Metadados opcionais
| Campo | Tipo | Descrição |
|---|---|---|
metadata.description | string | Breve descrição do marketplace |
metadata.version | string | Versão do marketplace |
metadata.pluginRoot | string | Diretório base adicionado aos caminhos de origem de plugin relativos (por exemplo, "./plugins" permite escrever "source": "formatter" em vez de "source": "./plugins/formatter") |
Entradas de plugin
Cada entrada de plugin no arrayplugins descreve um plugin e onde encontrá-lo. Você pode incluir qualquer campo do esquema de manifesto de plugin (como description, version, author, commands, hooks, etc.), além destes campos específicos do marketplace: source, category, tags e strict.
Campos obrigatórios
| Campo | Tipo | Descrição |
|---|---|---|
name | string | Identificador do plugin (kebab-case, sem espaços). Isso é público: os usuários o veem ao instalar (por exemplo, /plugin install my-plugin@marketplace). |
source | string|object | Onde buscar o plugin (veja Fontes de plugin abaixo) |
Campos de plugin opcionais
Campos de metadados padrão:| Campo | Tipo | Descrição |
|---|---|---|
description | string | Breve descrição do plugin |
version | string | Versão do plugin |
author | object | Informações do autor do plugin (name obrigatório, email opcional) |
homepage | string | URL da página inicial ou documentação do plugin |
repository | string | URL do repositório de código-fonte |
license | string | Identificador de licença SPDX (por exemplo, MIT, Apache-2.0) |
keywords | array | Tags para descoberta e categorização de plugins |
category | string | Categoria do plugin para organização |
tags | array | Tags para pesquisabilidade |
strict | boolean | Quando verdadeiro (padrão), campos de componente do marketplace se mesclam com plugin.json. Quando falso, a entrada do marketplace define o plugin inteiramente, e plugin.json não deve declarar componentes. |
| Campo | Tipo | Descrição |
|---|---|---|
commands | string|array | Caminhos personalizados para arquivos ou diretórios de comando |
agents | string|array | Caminhos personalizados para arquivos de agent |
hooks | string|object | Configuração de hooks personalizada ou caminho para arquivo de hooks |
mcpServers | string|object | Configurações de servidor MCP ou caminho para configuração MCP |
lspServers | string|object | Configurações de servidor LSP ou caminho para configuração LSP |
Fontes de plugin
Caminhos relativos
Para plugins no mesmo repositório:Caminhos relativos funcionam apenas quando os usuários adicionam seu marketplace via Git (GitHub, GitLab ou URL git). Se os usuários adicionarem seu marketplace via URL direta para o arquivo
marketplace.json, caminhos relativos não serão resolvidos corretamente. Para distribuição baseada em URL, use fontes GitHub, npm ou URL git. Veja Troubleshooting para detalhes.Repositórios GitHub
| Campo | Tipo | Descrição |
|---|---|---|
repo | string | Obrigatório. Repositório GitHub no formato owner/repo |
ref | string | Opcional. Branch ou tag git (padrão é o branch padrão do repositório) |
sha | string | Opcional. SHA de commit git completo com 40 caracteres para fixar em uma versão exata |
Repositórios Git
| Campo | Tipo | Descrição |
|---|---|---|
url | string | Obrigatório. URL completa do repositório git (deve terminar com .git) |
ref | string | Opcional. Branch ou tag git (padrão é o branch padrão do repositório) |
sha | string | Opcional. SHA de commit git completo com 40 caracteres para fixar em uma versão exata |
Entradas de plugin avançadas
Este exemplo mostra uma entrada de plugin usando muitos dos campos opcionais, incluindo caminhos personalizados para commands, agents, hooks e MCP servers:commandseagents: Você pode especificar múltiplos diretórios ou arquivos individuais. Os caminhos são relativos à raiz do plugin.${CLAUDE_PLUGIN_ROOT}: Use esta variável em hooks e configurações de servidor MCP para referenciar arquivos dentro do diretório de instalação do plugin. Isso é necessário porque os plugins são copiados para um local de cache quando instalados.strict: false: Como isso está definido como falso, o plugin não precisa de seu próprioplugin.json. A entrada do marketplace define tudo.
Hospedar e distribuir marketplaces
Hospedar no GitHub (recomendado)
GitHub fornece o método de distribuição mais fácil:- Criar um repositório: Configure um novo repositório para seu marketplace
- Adicionar arquivo de marketplace: Crie
.claude-plugin/marketplace.jsoncom suas definições de plugin - Compartilhar com equipes: Os usuários adicionam seu marketplace com
/plugin marketplace add owner/repo
Hospedar em outros serviços git
Qualquer serviço de hospedagem git funciona, como GitLab, Bitbucket e servidores auto-hospedados. Os usuários adicionam com a URL completa do repositório:Repositórios privados
Claude Code suporta instalar plugins de repositórios privados. Para instalação manual e atualizações, Claude Code usa seus auxiliares de credencial git existentes. Segit clone funciona para um repositório privado em seu terminal, funciona em Claude Code também. Os auxiliares de credencial comuns incluem gh auth login para GitHub, Keychain do macOS e git-credential-store.
As atualizações automáticas em segundo plano são executadas na inicialização sem auxiliares de credencial, pois prompts interativos bloqueariam Claude Code de iniciar. Para ativar atualizações automáticas para marketplaces privados, defina o token de autenticação apropriado em seu ambiente:
| Provedor | Variáveis de ambiente | Notas |
|---|---|---|
| GitHub | GITHUB_TOKEN ou GH_TOKEN | Token de acesso pessoal ou token de aplicativo GitHub |
| GitLab | GITLAB_TOKEN ou GL_TOKEN | Token de acesso pessoal ou token de projeto |
| Bitbucket | BITBUCKET_TOKEN | Senha de aplicativo ou token de acesso ao repositório |
.bashrc, .zshrc) ou passe-o ao executar Claude Code:
Para ambientes CI/CD, configure o token como uma variável de ambiente secreta. GitHub Actions fornece automaticamente
GITHUB_TOKEN para repositórios na mesma organização.Testar localmente antes da distribuição
Teste seu marketplace localmente antes de compartilhar:Exigir marketplaces para sua equipe
Você pode configurar seu repositório para que os membros da equipe sejam automaticamente solicitados a instalar seu marketplace quando confiarem na pasta do projeto. Adicione seu marketplace a.claude/settings.json:
Restrições de marketplace gerenciado
Para organizações que exigem controle rigoroso sobre fontes de plugins, administradores podem restringir quais marketplaces de plugins os usuários podem adicionar usando a configuraçãostrictKnownMarketplaces em configurações gerenciadas.
Quando strictKnownMarketplaces é configurado em configurações gerenciadas, o comportamento de restrição depende do valor:
| Valor | Comportamento |
|---|---|
| Indefinido (padrão) | Sem restrições. Os usuários podem adicionar qualquer marketplace |
Array vazio [] | Bloqueio completo. Os usuários não podem adicionar novos marketplaces |
| Lista de fontes | Os usuários podem adicionar apenas marketplaces que correspondem exatamente à lista de permissões |
Configurações comuns
Desabilitar todas as adições de marketplace:Como as restrições funcionam
As restrições são validadas no início do processo de instalação de plugin, antes de qualquer solicitação de rede ou operação do sistema de arquivos. Isso evita tentativas de acesso não autorizado ao marketplace. A lista de permissões usa correspondência exata para a maioria dos tipos de fonte. Para um marketplace ser permitido, todos os campos especificados devem corresponder exatamente:- Para fontes GitHub:
repoé obrigatório, erefoupathtambém devem corresponder se especificados na lista de permissões - Para fontes de URL: a URL completa deve corresponder exatamente
- Para fontes
hostPattern: o host do marketplace é correspondido contra o padrão regex
strictKnownMarketplaces é definido em configurações gerenciadas, configurações individuais de usuários e projetos não podem substituir essas restrições.
Para detalhes de configuração completos, incluindo todos os tipos de fonte suportados e comparação com extraKnownMarketplaces, veja a referência strictKnownMarketplaces.
Validação e testes
Teste seu marketplace antes de compartilhar. Valide a sintaxe JSON do seu marketplace:Troubleshooting
Marketplace não carregando
Sintomas: Não consegue adicionar marketplace ou ver plugins dele Soluções:- Verifique se a URL do marketplace é acessível
- Verifique se
.claude-plugin/marketplace.jsonexiste no caminho especificado - Garanta que a sintaxe JSON seja válida usando
claude plugin validateou/plugin validate - Para repositórios privados, confirme que você tem permissões de acesso
Erros de validação do marketplace
Executeclaude plugin validate . ou /plugin validate . do seu diretório de marketplace para verificar problemas. Erros comuns:
| Erro | Causa | Solução |
|---|---|---|
File not found: .claude-plugin/marketplace.json | Manifesto ausente | Crie .claude-plugin/marketplace.json com campos obrigatórios |
Invalid JSON syntax: Unexpected token... | Erro de sintaxe JSON | Verifique vírgulas ausentes, vírgulas extras ou strings sem aspas |
Duplicate plugin name "x" found in marketplace | Dois plugins compartilham o mesmo nome | Dê a cada plugin um valor name único |
plugins[0].source: Path traversal not allowed | Caminho de origem contém .. | Use caminhos relativos à raiz do marketplace sem .. |
Marketplace has no plugins defined: adicione pelo menos um plugin ao arraypluginsNo marketplace description provided: adicionemetadata.descriptionpara ajudar os usuários a entender seu marketplacePlugin "x" uses npm source which is not yet fully implemented: use fontesgithubou caminhos locais
Falhas de instalação de plugin
Sintomas: Marketplace aparece mas a instalação do plugin falha Soluções:- Verifique se as URLs de origem do plugin são acessíveis
- Verifique se os diretórios de plugin contêm arquivos obrigatórios
- Para fontes GitHub, garanta que os repositórios sejam públicos ou você tenha acesso
- Teste fontes de plugin manualmente clonando/baixando
Falha de autenticação de repositório privado
Sintomas: Erros de autenticação ao instalar plugins de repositórios privados Soluções: Para instalação manual e atualizações:- Verifique se você está autenticado com seu provedor git (por exemplo, execute
gh auth statuspara GitHub) - Verifique se seu auxiliar de credencial está configurado corretamente:
git config --global credential.helper - Tente clonar o repositório manualmente para verificar se suas credenciais funcionam
- Defina o token apropriado em seu ambiente:
echo $GITHUB_TOKEN - Verifique se o token tem as permissões necessárias (acesso de leitura ao repositório)
- Para GitHub, garanta que o token tenha o escopo
repopara repositórios privados - Para GitLab, garanta que o token tenha pelo menos escopo
read_repository - Verifique se o token não expirou
Plugins com caminhos relativos falham em marketplaces baseados em URL
Sintomas: Adicionou um marketplace via URL (comohttps://example.com/marketplace.json), mas plugins com fontes de caminho relativo como "./plugins/my-plugin" falham ao instalar com erros “path not found”.
Causa: Marketplaces baseados em URL apenas baixam o arquivo marketplace.json em si. Eles não baixam arquivos de plugin do servidor. Caminhos relativos na entrada do marketplace referenciam arquivos no servidor remoto que não foram baixados.
Soluções:
- Use fontes externas: Altere entradas de plugin para usar fontes GitHub, npm ou URL git em vez de caminhos relativos:
- Use um marketplace baseado em Git: Hospede seu marketplace em um repositório Git e adicione-o com a URL git. Marketplaces baseados em Git clonam o repositório inteiro, tornando caminhos relativos funcionarem corretamente.
Arquivos não encontrados após instalação
Sintomas: Plugin instala mas referências a arquivos falham, especialmente arquivos fora do diretório do plugin Causa: Plugins são copiados para um diretório de cache em vez de serem usados no local. Caminhos que referenciam arquivos fora do diretório do plugin (como../shared-utils) não funcionarão porque esses arquivos não são copiados.
Soluções: Veja Plugin caching and file resolution para soluções alternativas incluindo symlinks e reestruturação de diretórios.
Para ferramentas de debugging adicionais e problemas comuns, veja Debugging and development tools.
Veja também
- Descobrir e instalar plugins pré-construídos - Instalando plugins de marketplaces existentes
- Plugins - Criando seus próprios plugins
- Referência de plugins - Especificações técnicas completas e esquemas
- Plugin settings - Opções de configuração de plugin
- Referência strictKnownMarketplaces - Restrições de marketplace gerenciado