Um marketplace de plugins é um catálogo que permite distribuir plugins para outros. Os marketplaces fornecem descoberta centralizada, rastreamento de versão, atualizações automáticas e suporte para múltiplos tipos de fonte (repositórios git, caminhos locais e muito mais). Este guia mostra como criar seu próprio marketplace para compartilhar plugins com sua equipe ou comunidade. Procurando instalar plugins de um marketplace existente? Veja Descobrir e instalar plugins pré-construídos.Documentation Index
Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt
Use this file to discover all available pages before exploring further.
Visão geral
Criar e distribuir um marketplace envolve:- Criar plugins: construir um ou mais plugins com skills, 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 lista 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 skillquality-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 define o que a skill quality-review faz.my-marketplace/plugins/quality-review-plugin/skills/quality-review/SKILL.md
Criar o manifesto do plugin
Crie um arquivo
plugin.json que descreve o plugin. O manifesto vai no diretório .claude-plugin/.my-marketplace/plugins/quality-review-plugin/.claude-plugin/plugin.json
Definir
version significa que os usuários só recebem atualizações quando você altera este campo, então aumente-o em cada lançamento. Se você omitir version e hospedar este marketplace no git, cada commit conta automaticamente como uma nova versão. Veja Resolução de versão para escolher a abordagem correta.Criar o arquivo de marketplace
Crie o catálogo de 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. 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 de marketplace
Campos obrigatórios
| Campo | Tipo | Descrição | Exemplo |
|---|---|---|---|
name | string | Identificador de 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, knowledge-work-plugins, 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 |
Campos opcionais
| Campo | Tipo | Descrição |
|---|---|---|
$schema | string | URL do JSON Schema para autocompletar e validação do editor. Claude Code ignora este campo no momento do carregamento. |
description | string | Breve descrição do marketplace |
version | string | Versão do manifesto do marketplace |
metadata.pluginRoot | string | Diretório base adicionado aos caminhos de fonte de plugin relativos (por exemplo, "./plugins" permite escrever "source": "formatter" em vez de "source": "./plugins/formatter") |
allowCrossMarketplaceDependenciesOn | array | Outros marketplaces que plugins neste marketplace podem depender. Dependências de um marketplace não listado aqui são bloqueadas na instalação. Veja Depender de um plugin de outro marketplace. |
description e version também são aceitos sob metadata para compatibilidade com versões anteriores.
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 de 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. Se definido (aqui ou em plugin.json), o plugin é fixado a esta string e os usuários recebem atualizações apenas quando ela muda. Omita para usar o SHA do commit do git. Veja Resolução de versão. |
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 | Controla se plugin.json é a autoridade para definições de componentes (padrão: true). Veja Strict mode abaixo. |
| Campo | Tipo | Descrição |
|---|---|---|
skills | string|array | Caminhos personalizados para diretórios de skill contendo <name>/SKILL.md |
commands | string|array | Caminhos personalizados para arquivos de skill .md simples ou diretórios |
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 MCP server ou caminho para config de MCP |
lspServers | string|object | Configurações de LSP server ou caminho para config de LSP |
Fontes de plugin
As fontes de plugin informam ao Claude Code onde buscar cada plugin individual listado em seu marketplace. Elas são definidas no camposource de cada entrada de plugin em marketplace.json.
Depois que um plugin é clonado ou copiado para a máquina local, ele é copiado para o cache de plugin versionado local em ~/.claude/plugins/cache.
| Fonte | Tipo | Campos | Notas |
|---|---|---|---|
| Caminho relativo | string (por exemplo, "./my-plugin") | nenhum | Diretório local dentro do repositório de marketplace. Deve começar com ./. Resolvido relativamente à raiz do marketplace, não ao diretório .claude-plugin/ |
github | object | repo, ref?, sha? | |
url | object | url, ref?, sha? | Fonte de URL Git |
git-subdir | object | url, path, ref?, sha? | Subdiretório dentro de um repositório git. Clona esparsamente para minimizar largura de banda para monorepos |
npm | object | package, version?, registry? | Instalado via npm install |
Fontes de marketplace vs fontes de plugin: Estes são conceitos diferentes que controlam coisas diferentes.
- Fonte de marketplace — onde buscar o próprio catálogo
marketplace.json. Definido quando os usuários executam/plugin marketplace addou em configuraçõesextraKnownMarketplaces. Suportaref(branch/tag) mas nãosha. - Fonte de plugin — onde buscar um plugin individual listado no marketplace. Definido no campo
sourcede cada entrada de plugin dentro demarketplace.json. Suporta tantoref(branch/tag) quantosha(commit exato).
acme-corp/plugin-catalog (fonte de marketplace) pode listar um plugin buscado de acme-corp/code-formatter (fonte de plugin). A fonte de marketplace e a fonte de plugin apontam para repositórios diferentes e são fixadas independentemente.Caminhos relativos
Para plugins no mesmo repositório, use um caminho começando com./:
.claude-plugin/. No exemplo acima, ./plugins/my-plugin aponta para <repo>/plugins/my-plugin, mesmo que marketplace.json viva em <repo>/.claude-plugin/marketplace.json. Não use ../ para referenciar caminhos fora da raiz do marketplace.
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 de 40 caracteres para fixar a uma versão exata |
Repositórios Git
| Campo | Tipo | Descrição |
|---|---|---|
url | string | Obrigatório. URL completa do repositório git (https:// ou git@). O sufixo .git é opcional, então URLs do Azure DevOps e AWS CodeCommit sem o sufixo funcionam |
ref | string | Opcional. Branch ou tag Git (padrão é o branch padrão do repositório) |
sha | string | Opcional. SHA de commit git completo de 40 caracteres para fixar a uma versão exata |
Subdiretórios Git
Usegit-subdir para apontar para um plugin que vive dentro de um subdiretório de um repositório git. Claude Code usa um clone parcial e esparso para buscar apenas o subdiretório, minimizando largura de banda para grandes monorepos.
url também aceita atalho GitHub (owner/repo) ou URLs SSH (git@github.com:owner/repo.git).
| Campo | Tipo | Descrição |
|---|---|---|
url | string | Obrigatório. URL do repositório Git, atalho GitHub owner/repo ou URL SSH |
path | string | Obrigatório. Caminho do subdiretório dentro do repositório contendo o plugin (por exemplo, "tools/claude-plugin") |
ref | string | Opcional. Branch ou tag Git (padrão é o branch padrão do repositório) |
sha | string | Opcional. SHA de commit git completo de 40 caracteres para fixar a uma versão exata |
Pacotes npm
Plugins distribuídos como pacotes npm são instalados usandonpm install. Isso funciona com qualquer pacote no registro npm público ou um registro privado que sua equipe hospeda.
version:
registry:
| Campo | Tipo | Descrição |
|---|---|---|
package | string | Obrigatório. Nome do pacote ou pacote com escopo (por exemplo, @org/plugin) |
version | string | Opcional. Versão ou intervalo de versão (por exemplo, 2.1.0, ^2.0.0, ~1.5.0) |
registry | string | Opcional. URL de registro npm personalizado. Padrão é o registro npm do sistema (tipicamente npmjs.org) |
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 MCP server 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. Para dependências ou estado que devem sobreviver a atualizações de plugin, use${CLAUDE_PLUGIN_DATA}em vez disso.strict: false: Como isso está definido como false, o plugin não precisa de seu próprioplugin.json. A entrada de marketplace define tudo. Veja Strict mode abaixo.
Strict mode
O campostrict controla se plugin.json é a autoridade para definições de componentes (skills, agents, hooks, MCP servers, output styles).
| Valor | Comportamento |
|---|---|
true (padrão) | plugin.json é a autoridade. A entrada de marketplace pode complementá-lo com componentes adicionais, e ambas as fontes são mescladas. |
false | A entrada de marketplace é a definição completa. Se o plugin também tem um plugin.json que declara componentes, isso é um conflito e o plugin falha ao carregar. |
strict: true: o plugin tem seu próprioplugin.jsone gerencia seus próprios componentes. A entrada de marketplace pode adicionar skills ou hooks extras no topo. Este é o padrão e funciona para a maioria dos plugins.strict: false: o operador do marketplace quer controle total. O repositório do plugin fornece arquivos brutos, e a entrada de marketplace define quais desses arquivos são expostos como skills, agents, hooks, etc. Útil quando o marketplace reestrutura ou curada os componentes de um plugin de forma diferente do que o autor do plugin pretendia.
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 ajudantes de credencial git existentes, então acesso HTTPS viagh auth login, Keychain do macOS ou git-credential-store funciona da mesma forma que em seu terminal. Acesso SSH funciona desde que o host já esteja em seu arquivo known_hosts e a chave esteja carregada em ssh-agent, já que Claude Code suprime prompts SSH interativos para a impressão digital do host e passphrase da chave.
As atualizações automáticas em segundo plano são executadas na inicialização sem ajudantes de credencial, já que prompts interativos bloqueariam Claude Code de iniciar. Para habilitar 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 GitHub App |
| GitLab | GITLAB_TOKEN ou GL_TOKEN | Token de acesso pessoal ou token de projeto |
| Bitbucket | BITBUCKET_TOKEN | Senha de app 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:
Se você usar uma fonte local
directory ou file com um caminho relativo, o caminho é resolvido contra o checkout principal do seu repositório. Quando você executa Claude Code de um git worktree, o caminho ainda aponta para o checkout principal, então todos os worktrees compartilham o mesmo local de marketplace. O estado do marketplace é armazenado uma vez por usuário em ~/.claude/plugins/known_marketplaces.json, não por projeto.Pré-popular plugins para containers
Para imagens de container e ambientes CI, você pode pré-popular um diretório de plugins no tempo de construção para que Claude Code inicie com marketplaces e plugins já disponíveis, sem clonar nada em tempo de execução. Defina a variável de ambienteCLAUDE_CODE_PLUGIN_SEED_DIR para apontar para este diretório.
Para colocar em camadas múltiplos diretórios seed, separe caminhos com : em Unix ou ; no Windows. Claude Code procura cada diretório em ordem, e o primeiro seed que contém um determinado marketplace ou cache de plugin vence.
O diretório seed espelha a estrutura de ~/.claude/plugins:
~/.claude/plugins resultante em sua imagem e aponte CLAUDE_CODE_PLUGIN_SEED_DIR para ele.
Para pular a etapa de cópia, defina CLAUDE_CODE_PLUGIN_CACHE_DIR para seu caminho de seed de destino durante a construção para que os plugins sejam instalados diretamente lá:
CLAUDE_CODE_PLUGIN_SEED_DIR=/opt/claude-seed no ambiente de tempo de execução do seu container para que Claude Code leia do seed na inicialização.
Na inicialização, Claude Code registra marketplaces encontrados no known_marketplaces.json do seed na configuração primária, e usa caches de plugin encontrados sob cache/ no local sem re-clonar. Isso funciona tanto em modo interativo quanto em modo não-interativo com a flag -p.
Detalhes de comportamento:
- Somente leitura: o diretório seed nunca é escrito. As atualizações automáticas são desabilitadas para marketplaces seed já que git pull falharia em um sistema de arquivos somente leitura.
- Entradas seed têm precedência: marketplaces declarados no seed sobrescrevem qualquer entrada correspondente na configuração do usuário em cada inicialização. Para optar por não usar um plugin seed, use
/plugin disableem vez de remover o marketplace. - Resolução de caminho: Claude Code localiza conteúdo de marketplace sondando
$CLAUDE_CODE_PLUGIN_SEED_DIR/marketplaces/<name>/em tempo de execução, não confiando em caminhos armazenados dentro do JSON do seed. Isso significa que o seed funciona corretamente mesmo quando montado em um caminho diferente de onde foi construído. - Mutação é bloqueada: executar
/plugin marketplace removeou/plugin marketplace updatecontra um marketplace gerenciado por seed falha com orientação para pedir ao seu administrador para atualizar a imagem seed. - Compõe com configurações: se
extraKnownMarketplacesouenabledPluginsdeclaram um marketplace que já existe no seed, Claude Code usa a cópia do seed em vez de clonar.
Restrições de marketplace gerenciado
Para organizações que exigem controle rigoroso sobre fontes de plugin, administradores podem restringir quais marketplaces de plugin 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 apenas adicionar marketplaces que correspondem exatamente à lista de permissões |
Configurações comuns
Desabilitar todas as adições de marketplace:".*" como pathPattern para permitir qualquer caminho de sistema de arquivos enquanto ainda controla fontes de rede com hostPattern.
strictKnownMarketplaces restringe o que os usuários podem adicionar, mas não registra marketplaces por conta própria. Para tornar marketplaces permitidos disponíveis automaticamente sem usuários executarem /plugin marketplace add, combine com extraKnownMarketplaces no mesmo managed-settings.json. Veja Usando ambos juntos.Como as restrições funcionam
As restrições são verificadas antes de qualquer operação de rede ou sistema de arquivos. A verificação é executada na adição de marketplace e na instalação, atualização, atualização e auto-atualização de plugin. Se um marketplace foi adicionado antes da política ser configurada e sua fonte não corresponder mais à lista de permissões, Claude Code recusa instalar ou atualizar plugins a partir dele. A mesma aplicação se aplica ablockedMarketplaces.
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 - Para fontes
pathPattern: o caminho do sistema de arquivos do marketplace é correspondido contra o padrão regex
.git ou forma ssh:// versus https:// são tratados como valores diferentes. Se o marketplace da sua organização pode ser clonado por mais de uma forma de URL, prefira uma entrada hostPattern em vez de uma URL literal para que todas as formas correspondam.
Como 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.
Resolução de versão e canais de lançamento
As versões de plugin determinam caminhos de cache e detecção de atualização: se a versão resolvida corresponder ao que um usuário já tem,/plugin update e auto-atualização pulam o plugin.
Claude Code resolve a versão de um plugin a partir do primeiro destes que está definido:
versionnoplugin.jsondo pluginversionna entrada de marketplace do plugin- O SHA do commit git da fonte do plugin
github, url, git-subdir e caminhos relativos dentro de um marketplace hospedado em git, você pode omitir version inteiramente e cada novo commit é tratado como uma nova versão. Esta é a configuração mais simples para plugins internos ou em desenvolvimento ativo.
Configurar canais de lançamento
Para suportar canais de lançamento “stable” e “latest” para seus plugins, você pode configurar dois marketplaces que apontam para diferentes refs ou SHAs do mesmo repositório. Você pode então atribuir os dois marketplaces a diferentes grupos de usuários através de configurações gerenciadas.Exemplo
Atribuir canais a grupos de usuários
Atribua cada marketplace ao grupo de usuários apropriado através de configurações gerenciadas. Por exemplo, o grupo stable recebe:latest-tools em vez disso:
Fixar versões de dependência
Um plugin pode restringir suas dependências a um intervalo semver para que atualizações de uma dependência não quebrem o plugin dependente. Veja Restringir versões de dependência de plugin para a convenção de git-tag{plugin-name}--v{version}, sintaxe de intervalo e como múltiplas restrições na mesma dependência são combinadas.
Validação e testes
Teste seu marketplace antes de compartilhar. Valide a sintaxe JSON do seu marketplace:Gerenciar marketplaces a partir da CLI
Claude Code fornece subcomandosclaude plugin marketplace não-interativos para scripting e automação. Estes são equivalentes aos comandos /plugin marketplace disponíveis dentro de uma sessão interativa.
Plugin marketplace add
Adicione um marketplace de um repositório GitHub, URL git, URL remota ou caminho local.<source>: Atalho GitHubowner/repo, URL git, URL remota para um arquivomarketplace.jsonou caminho de diretório local. Para fixar a um branch ou tag, anexe@refao atalho GitHub ou#refa uma URL git
| Opção | Descrição | Padrão |
|---|---|---|
--scope <scope> | Onde declarar o marketplace: user, project ou local. Veja Plugin installation scopes | user |
--sparse <paths...> | Limitar checkout a diretórios específicos via git sparse-checkout. Útil para monorepos |
owner/repo:
@ref:
marketplace.json diretamente:
.claude/settings.json:
Plugin marketplace list
Liste todos os marketplaces configurados.| Opção | Descrição |
|---|---|
--json | Saída como JSON |
Plugin marketplace remove
Remova um marketplace configurado. O aliasrm também é aceito.
<name>: nome do marketplace a remover, conforme mostrado porclaude plugin marketplace list. Este é onamedemarketplace.json, não a fonte que você passou paraadd
Plugin marketplace update
Atualize marketplaces de suas fontes para recuperar novos plugins e mudanças de versão.[name]: nome do marketplace a atualizar, conforme mostrado porclaude plugin marketplace list. Atualiza todos os marketplaces se omitido
remove quanto update falham quando executados contra um marketplace gerenciado por seed, que é somente leitura. Ao atualizar todos os marketplaces, entradas gerenciadas por seed são puladas e outros marketplaces ainda são atualizados. Para alterar plugins fornecidos por seed, peça ao seu administrador para atualizar a imagem seed. Veja Pré-popular plugins para containers.
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 é válida e o frontmatter está bem formado usando
claude plugin validateou/plugin validate - Para repositórios privados, confirme que você tem permissões de acesso
Erros de validação de marketplace
Executeclaude plugin validate . ou /plugin validate . do seu diretório de marketplace para verificar problemas. O validador verifica plugin.json, frontmatter de skill/agent/command e hooks/hooks.json para erros de sintaxe e esquema. 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 em marketplace.json | Verifique vírgulas ausentes, vírgulas extras ou strings não citadas |
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 contains ".." | Caminho de fonte contém .. | Use caminhos relativos à raiz do marketplace sem ... Veja Caminhos relativos |
YAML frontmatter failed to parse: ... | YAML inválido em um arquivo de skill, agent ou command | Corrija a sintaxe YAML no bloco frontmatter. Em tempo de execução este arquivo carrega sem metadados. |
Invalid JSON syntax: ... (hooks.json) | hooks/hooks.json malformado | Corrija a sintaxe JSON. Um hooks/hooks.json malformado previne o plugin inteiro de carregar. |
Marketplace has no plugins defined: adicione pelo menos um plugin ao arraypluginsNo marketplace description provided: adicione umadescriptionde nível superior para ajudar os usuários a entender seu marketplacePlugin name "x" is not kebab-case: o nome do plugin contém letras maiúsculas, espaços ou caracteres especiais. Renomeie para apenas letras minúsculas, dígitos e hífens (por exemplo,my-plugin). Claude Code aceita outras formas, mas a sincronização de marketplace do Claude.ai as rejeita.
Falhas de instalação de plugin
Sintomas: Marketplace aparece mas a instalação do plugin falha Soluções:- Verifique se as URLs de fonte do plugin são acessíveis
- Verifique se os diretórios de plugin contêm arquivos obrigatórios
- Para fontes GitHub, garanta que repositórios são públicos ou você tem 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 ajudante 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 obrigatórias (acesso de leitura ao repositório)
- Para GitHub, garanta que o token tem o escopo
repopara repositórios privados - Para GitLab, garanta que o token tem pelo menos escopo
read_repository - Verifique se o token não expirou
Atualizações de marketplace falham em ambientes offline
Sintomas:git pull do marketplace falha e Claude Code limpa o cache existente, causando plugins ficarem indisponíveis.
Causa: Por padrão, quando um git pull falha, Claude Code remove o clone obsoleto e tenta re-clonar. Em ambientes offline ou airgapped, re-clonar falha da mesma forma, deixando o diretório de marketplace vazio.
Solução: Defina CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE=1 para manter o cache existente quando o pull falhar em vez de limpá-lo:
git pull e continua usando o último estado conhecido como bom. Para implantações totalmente offline onde o repositório nunca será alcançável, use CLAUDE_CODE_PLUGIN_SEED_DIR para pré-popular o diretório de plugins no tempo de construção em vez disso.
Operações Git expiram
Sintomas: Instalação de plugin ou atualizações de marketplace falham com um erro de timeout como “Git clone timed out after 120s” ou “Git pull timed out after 120s”. Causa: Claude Code usa um timeout de 120 segundos para todas as operações git, incluindo clonagem de repositórios de plugin e puxar atualizações de marketplace. Repositórios grandes ou conexões de rede lentas podem exceder este limite. Solução: Aumente o timeout usando a variável de ambienteCLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS. O valor está em milissegundos:
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 próprio arquivo marketplace.json. Eles não baixam arquivos de plugin do servidor. Caminhos relativos na entrada de 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 workarounds incluindo symlinks e reestruturação de diretório.
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
- Plugins reference - Especificações técnicas completas e esquemas
- Plugin settings - Opções de configuração de plugin
- strictKnownMarketplaces reference - Restrições de marketplace gerenciado