Pular para o conteúdo principal
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.

Visão geral

Criar e distribuir um marketplace envolve:
  1. 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.
  2. Criar um arquivo de marketplace: definir um marketplace.json que liste seus plugins e onde encontrá-los (veja Criar o arquivo de marketplace).
  3. Hospedar o marketplace: fazer push para GitHub, GitLab ou outro host git (veja Hospedar e distribuir marketplaces).
  4. Compartilhar com usuários: usuários adicionam seu marketplace com /plugin marketplace add e instalam plugins individuais (veja Descobrir e instalar plugins).
Depois que seu marketplace estiver ativo, você pode atualizá-lo fazendo push de alterações para seu repositório. Os usuários atualizam sua cópia local com /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á.
1

Criar a estrutura de diretórios

mkdir -p my-marketplace/.claude-plugin
mkdir -p my-marketplace/plugins/review-plugin/.claude-plugin
mkdir -p my-marketplace/plugins/review-plugin/skills/review
2

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
---
description: Revisar código para bugs, segurança e desempenho
disable-model-invocation: true
---

Revise o código que selecionei ou as alterações recentes para:
- Possíveis bugs ou casos extremos
- Preocupações de segurança
- Problemas de desempenho
- Melhorias de legibilidade

Seja conciso e acionável.
3

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
{
  "name": "review-plugin",
  "description": "Adiciona uma skill /review para revisões rápidas de código",
  "version": "1.0.0"
}
4

Criar o arquivo de marketplace

Crie o catálogo do marketplace que lista seu plugin.
my-marketplace/.claude-plugin/marketplace.json
{
  "name": "my-plugins",
  "owner": {
    "name": "Seu Nome"
  },
  "plugins": [
    {
      "name": "review-plugin",
      "source": "./plugins/review-plugin",
      "description": "Adiciona uma skill /review para revisões rápidas de código"
    }
  ]
}
5

Adicionar e instalar

Adicione o marketplace e instale o plugin.
/plugin marketplace add ./my-marketplace
/plugin install review-plugin@my-plugins
6

Testar

Selecione algum código em seu editor e execute seu novo comando.
/review
Para saber mais sobre o que os plugins podem fazer, incluindo hooks, agents, MCP servers e LSP servers, veja Plugins.
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.
{
  "name": "company-tools",
  "owner": {
    "name": "DevTools Team",
    "email": "[email protected]"
  },
  "plugins": [
    {
      "name": "code-formatter",
      "source": "./plugins/formatter",
      "description": "Formatação automática de código ao salvar",
      "version": "2.1.0",
      "author": {
        "name": "DevTools Team"
      }
    },
    {
      "name": "deployment-tools",
      "source": {
        "source": "github",
        "repo": "company/deploy-plugin"
      },
      "description": "Ferramentas de automação de implantação"
    }
  ]
}

Esquema do marketplace

Campos obrigatórios

CampoTipoDescriçãoExemplo
namestringIdentificador 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"
ownerobjectInformações do mantenedor do marketplace (veja campos abaixo)
pluginsarrayLista de plugins disponíveisVeja 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

CampoTipoObrigatórioDescrição
namestringSimNome do mantenedor ou equipe
emailstringNãoEmail de contato do mantenedor

Metadados opcionais

CampoTipoDescrição
metadata.descriptionstringBreve descrição do marketplace
metadata.versionstringVersão do marketplace
metadata.pluginRootstringDiretó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 array plugins 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

CampoTipoDescrição
namestringIdentificador do plugin (kebab-case, sem espaços). Isso é público: os usuários o veem ao instalar (por exemplo, /plugin install my-plugin@marketplace).
sourcestring|objectOnde buscar o plugin (veja Fontes de plugin abaixo)

Campos de plugin opcionais

Campos de metadados padrão:
CampoTipoDescrição
descriptionstringBreve descrição do plugin
versionstringVersão do plugin
authorobjectInformações do autor do plugin (name obrigatório, email opcional)
homepagestringURL da página inicial ou documentação do plugin
repositorystringURL do repositório de código-fonte
licensestringIdentificador de licença SPDX (por exemplo, MIT, Apache-2.0)
keywordsarrayTags para descoberta e categorização de plugins
categorystringCategoria do plugin para organização
tagsarrayTags para pesquisabilidade
strictbooleanQuando 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.
Campos de configuração de componentes:
CampoTipoDescrição
commandsstring|arrayCaminhos personalizados para arquivos ou diretórios de comando
agentsstring|arrayCaminhos personalizados para arquivos de agent
hooksstring|objectConfiguração de hooks personalizada ou caminho para arquivo de hooks
mcpServersstring|objectConfigurações de servidor MCP ou caminho para configuração MCP
lspServersstring|objectConfigurações de servidor LSP ou caminho para configuração LSP

Fontes de plugin

Caminhos relativos

Para plugins no mesmo repositório:
{
  "name": "my-plugin",
  "source": "./plugins/my-plugin"
}
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

{
  "name": "github-plugin",
  "source": {
    "source": "github",
    "repo": "owner/plugin-repo"
  }
}
Você pode fixar em um branch, tag ou commit específico:
{
  "name": "github-plugin",
  "source": {
    "source": "github",
    "repo": "owner/plugin-repo",
    "ref": "v2.0.0",
    "sha": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0"
  }
}
CampoTipoDescrição
repostringObrigatório. Repositório GitHub no formato owner/repo
refstringOpcional. Branch ou tag git (padrão é o branch padrão do repositório)
shastringOpcional. SHA de commit git completo com 40 caracteres para fixar em uma versão exata

Repositórios Git

{
  "name": "git-plugin",
  "source": {
    "source": "url",
    "url": "https://gitlab.com/team/plugin.git"
  }
}
Você pode fixar em um branch, tag ou commit específico:
{
  "name": "git-plugin",
  "source": {
    "source": "url",
    "url": "https://gitlab.com/team/plugin.git",
    "ref": "main",
    "sha": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0"
  }
}
CampoTipoDescrição
urlstringObrigatório. URL completa do repositório git (deve terminar com .git)
refstringOpcional. Branch ou tag git (padrão é o branch padrão do repositório)
shastringOpcional. 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:
{
  "name": "enterprise-tools",
  "source": {
    "source": "github",
    "repo": "company/enterprise-plugin"
  },
  "description": "Ferramentas de automação de fluxo de trabalho empresarial",
  "version": "2.1.0",
  "author": {
    "name": "Enterprise Team",
    "email": "[email protected]"
  },
  "homepage": "https://docs.example.com/plugins/enterprise-tools",
  "repository": "https://github.com/company/enterprise-plugin",
  "license": "MIT",
  "keywords": ["enterprise", "workflow", "automation"],
  "category": "productivity",
  "commands": [
    "./commands/core/",
    "./commands/enterprise/",
    "./commands/experimental/preview.md"
  ],
  "agents": ["./agents/security-reviewer.md", "./agents/compliance-checker.md"],
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Write|Edit",
        "hooks": [
          {
            "type": "command",
            "command": "${CLAUDE_PLUGIN_ROOT}/scripts/validate.sh"
          }
        ]
      }
    ]
  },
  "mcpServers": {
    "enterprise-db": {
      "command": "${CLAUDE_PLUGIN_ROOT}/servers/db-server",
      "args": ["--config", "${CLAUDE_PLUGIN_ROOT}/config.json"]
    }
  },
  "strict": false
}
Coisas importantes a notar:
  • commands e agents: 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óprio plugin.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:
  1. Criar um repositório: Configure um novo repositório para seu marketplace
  2. Adicionar arquivo de marketplace: Crie .claude-plugin/marketplace.json com suas definições de plugin
  3. Compartilhar com equipes: Os usuários adicionam seu marketplace com /plugin marketplace add owner/repo
Benefícios: Controle de versão integrado, rastreamento de problemas e recursos de colaboração em equipe.

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:
/plugin marketplace add https://gitlab.com/company/plugins.git

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. Se git 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:
ProvedorVariáveis de ambienteNotas
GitHubGITHUB_TOKEN ou GH_TOKENToken de acesso pessoal ou token de aplicativo GitHub
GitLabGITLAB_TOKEN ou GL_TOKENToken de acesso pessoal ou token de projeto
BitbucketBITBUCKET_TOKENSenha de aplicativo ou token de acesso ao repositório
Defina o token em sua configuração de shell (por exemplo, .bashrc, .zshrc) ou passe-o ao executar Claude Code:
export GITHUB_TOKEN=ghp_xxxxxxxxxxxxxxxxxxxx
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:
/plugin marketplace add ./my-local-marketplace
/plugin install test-plugin@my-local-marketplace
Para a gama completa de comandos add (GitHub, URLs Git, caminhos locais, URLs remotas), veja Adicionar marketplaces.

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:
{
  "extraKnownMarketplaces": {
    "company-tools": {
      "source": {
        "source": "github",
        "repo": "your-org/claude-plugins"
      }
    }
  }
}
Você também pode especificar quais plugins devem ser ativados por padrão:
{
  "enabledPlugins": {
    "code-formatter@company-tools": true,
    "deployment-tools@company-tools": true
  }
}
Para opções de configuração completas, veja Plugin settings.

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ção strictKnownMarketplaces em configurações gerenciadas. Quando strictKnownMarketplaces é configurado em configurações gerenciadas, o comportamento de restrição depende do valor:
ValorComportamento
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 fontesOs usuários podem adicionar apenas marketplaces que correspondem exatamente à lista de permissões

Configurações comuns

Desabilitar todas as adições de marketplace:
{
  "strictKnownMarketplaces": []
}
Permitir apenas marketplaces específicos:
{
  "strictKnownMarketplaces": [
    {
      "source": "github",
      "repo": "acme-corp/approved-plugins"
    },
    {
      "source": "github",
      "repo": "acme-corp/security-tools",
      "ref": "v2.0"
    },
    {
      "source": "url",
      "url": "https://plugins.example.com/marketplace.json"
    }
  ]
}
Permitir todos os marketplaces de um servidor git interno usando correspondência de padrão regex:
{
  "strictKnownMarketplaces": [
    {
      "source": "hostPattern",
      "hostPattern": "^github\\.example\\.com$"
    }
  ]
}

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, e ref ou path també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
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.

Validação e testes

Teste seu marketplace antes de compartilhar. Valide a sintaxe JSON do seu marketplace:
claude plugin validate .
Ou de dentro de Claude Code:
/plugin validate .
Adicione o marketplace para testes:
/plugin marketplace add ./path/to/marketplace
Instale um plugin de teste para verificar se tudo funciona:
/plugin install test-plugin@marketplace-name
Para fluxos de trabalho completos de teste de plugin, veja Testar seus plugins localmente. Para troubleshooting técnico, veja Referência de plugins.

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.json existe no caminho especificado
  • Garanta que a sintaxe JSON seja válida usando claude plugin validate ou /plugin validate
  • Para repositórios privados, confirme que você tem permissões de acesso

Erros de validação do marketplace

Execute claude plugin validate . ou /plugin validate . do seu diretório de marketplace para verificar problemas. Erros comuns:
ErroCausaSolução
File not found: .claude-plugin/marketplace.jsonManifesto ausenteCrie .claude-plugin/marketplace.json com campos obrigatórios
Invalid JSON syntax: Unexpected token...Erro de sintaxe JSONVerifique vírgulas ausentes, vírgulas extras ou strings sem aspas
Duplicate plugin name "x" found in marketplaceDois plugins compartilham o mesmo nomeDê a cada plugin um valor name único
plugins[0].source: Path traversal not allowedCaminho de origem contém ..Use caminhos relativos à raiz do marketplace sem ..
Avisos (não bloqueadores):
  • Marketplace has no plugins defined: adicione pelo menos um plugin ao array plugins
  • No marketplace description provided: adicione metadata.description para ajudar os usuários a entender seu marketplace
  • Plugin "x" uses npm source which is not yet fully implemented: use fontes github ou 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 status para 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
Para atualizações automáticas em segundo plano:
  • 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 repo para 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 (como https://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:
    { "name": "my-plugin", "source": { "source": "github", "repo": "owner/repo" } }
    
  • 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