Em 2026 a Anthropic lançou o Plugin Marketplace oficial (acessível via buildwithclaude.com e via CLI). É o equivalente do npm registry em SPIRITO, mas com arquitetura distribuída: skills, agents, hooks e MCP servers empacotados, versionados com semver, assinados criptograficamente. Este módulo cobre descoberta, instalação, escopos, publicação e como rodar um marketplace interno corporativo.
AVISO sobre exemplos de CLI: Os snippets claude plugin install/publish/login ilustram o FLUXO conceitual. A arquitetura real é distribuída — NÃO existe registry HTTP central tipo plugins.claude.com. Marketplaces são arquivos marketplace.json em repos git (GitHub/GitLab), local paths ou npm packages. Para sintaxe exata de comandos, consulte sempre https://code.claude.com/docs/en/plugin-marketplaces — esta página teaches o MODELO MENTAL, não substitui doc canônica.
Como o marketplace é organizado
Cada plugin tem um namespace/nome (ex: anthropic/security-scanner ou vercel/next-helper). Plugins oficiais ficam sob o namespace anthropic/, são revisados e assinados. Plugins de comunidade vivem sob namespace do autor/org GitHub. Diferente do npm, NÃO existe registry HTTP centralizado: marketplaces são arquivos marketplace.json hospedados em repos git (GitHub/GitLab), local paths ou pacotes npm — multi-source por design. Fonte oficial: https://code.claude.com/docs/en/plugin-marketplaces.
Descobrir plugins
# Busca por keyword:
claude plugin search security
claude plugin search "code review"
# Filtrar por categoria:
claude plugin search --category devops
claude plugin search --category testing
# Filtrar por tag oficial:
claude plugin search --official # só namespace anthropic/
claude plugin search --verified # autores verificados
# Ver detalhes de um plugin:
claude plugin info anthropic/security-scanner
# Output típico:
# anthropic/security-scanner@1.4.2
# ⭐ 12.3k installs · ✓ verified · MIT
# Skills: /audit, /secrets-scan, /sast
# Hooks: PreToolUse (Bash, Edit), PostToolUse (Write)
# Dependencies: anthropic/git-helpers@>=1.0.0
# Repo: https://github.com/anthropics/security-scanner-plugin
# Last updated: 2026-04-22Web UI: https://buildwithclaude.com/plugins — busca com filtros, README renderizado, screenshots, leaderboard de downloads e ratings de comunidade. O comando claude plugin browse abre essa URL no navegador padrão.
Instalar com o escopo certo
# Instalar última versão (escopo user — vale pra todo projeto seu):
claude plugin install anthropic/security-scanner
# Pinar versão (sempre faça isso em time):
claude plugin install anthropic/security-scanner@1.4.2
# Range semver:
claude plugin install anthropic/security-scanner@^1.4.0
# Escopo project — instala em .claude/plugins/, commitável:
claude plugin install anthropic/security-scanner --scope project
# Quando usar cada escopo:
# - user: suas skills favoritas pessoais (git-helpers, code-formatter)
# - project: skills/hooks que TODO o time deve ter (lint policy, security checks)
# - enterprise: políticas inegociáveis (vem do MDM ou /etc/claude/policy.json)
# Verificar assinatura antes de instalar (default em --strict):
claude plugin install anthropic/security-scanner --strict
# Falha se: assinatura inválida, autor não verificado, dependência insegura
# Modo offline (lockfile):
# Cria .claude/plugins.lock — versões exatas + checksums.
claude plugin install --frozen-lockfile # CI deve usar issoplugins.lock — reprodutibilidade
// .claude/plugins.lock — gerado automaticamente. Commit no repo.
{
"lockfileVersion": 1,
"plugins": {
"anthropic/security-scanner": {
"version": "1.4.2",
"resolved": "https://plugins.claude.com/v1/anthropic/security-scanner/1.4.2.tar.gz",
"integrity": "sha512-abc123...",
"signature": "ed25519:def456..."
},
"anthropic/git-helpers": {
"version": "1.1.0",
"resolved": "https://plugins.claude.com/v1/anthropic/git-helpers/1.1.0.tar.gz",
"integrity": "sha512-ghi789...",
"signature": "ed25519:jkl012..."
}
}
}Publicar seu plugin
# 1. Login (browser-based OAuth via GitHub)
claude plugin login
# 2. Valide o plugin antes de publicar:
claude plugin validate ./meu-plugin
# Checa:
# - plugin.json: name, version, claudeCodeVersion, license
# - skills/: cada SKILL.md tem frontmatter válido
# - hooks/hooks.json: matchers válidos, scripts executáveis
# - README.md existe e tem ao menos: descrição + install + usage
# - CHANGELOG.md segue Keep a Changelog
# - LICENSE presente (SPDX-id válido)
# 3. Dry-run da publicação:
claude plugin publish --dry-run ./meu-plugin
# Mostra: arquivos incluídos, tamanho final, dependências resolvidas
# 4. Publish real (cria release no marketplace):
claude plugin publish ./meu-plugin
# Output:
# Publishing fernando-franco/ffv-academy-tools@2.4.0
# Signing with ed25519 key (fingerprint AB:CD:EF...)
# Uploaded 47KB to plugins.claude.com
# ✓ Published. URL: https://buildwithclaude.com/plugins/fernando-franco/ffv-academy-tools
# 5. Deprecate uma versão antiga:
claude plugin deprecate fernando-franco/ffv-academy-tools@1.x \
--message "Mude para 2.x: API de skills mudou"Checklist pre-publish
1) plugin.json com semver válido e claudeCodeVersion>=X.Y. 2) README.md em PT-BR + EN se for público. 3) Pelo menos 1 teste de integração em tests/. 4) LICENSE SPDX. 5) CHANGELOG.md com entry pra esta versão. 6) Tag git correspondente (v2.4.0). 7) GitHub Action de CI verde.
Registry interno corporativo
Empresa que não quer publicar plugins internos no marketplace público hospeda um registry próprio. O protocolo é aberto: precisa expor 3 endpoints HTTP.
Protocolo do registry (compatível com claude plugin install)
=============================================================
GET /v1/{namespace}/{name}
→ { versions: ["1.0.0", "1.1.0", ...], dist-tags: {latest: "1.1.0"} }
GET /v1/{namespace}/{name}/{version}
→ { tarball: "https://...", integrity: "sha512-...", signature: "ed25519:..." }
GET /v1/{namespace}/{name}/{version}.tar.gz
→ bytes do tarball
POST /v1/{namespace}/{name} (auth: Bearer)
→ publica nova versão
Configurar Claude Code pra usar o registry interno:
----------------------------------------------------
claude plugin config set registry https://plugins.internal.empresa.com
claude plugin config set auth.token $CLAUDE_INTERNAL_TOKEN
# Múltiplos registries com scope:
# Plugins do namespace 'empresa/' vêm do registry interno;
# o resto vem do marketplace público.
claude plugin config set scope.empresa.registry https://plugins.internal.empresa.comPegadinhas reais de quem já apanhou
1. Plugins não assinados não rodam em --strict. Se você instalou de um repo git direto (não via marketplace), não vem assinatura. O default do Claude Code é warning, mas times com policy de segurança forçam --strict no settings.json. Para publicar interno + manter --strict: rode um signing service simples (cosign serve).
2. Hooks de plugin rodam ANTES dos seus. Ordem: enterprise policy → plugin hooks → project hooks → user hooks. Um plugin pode bloquear ações ANTES do seu PreToolUse local rodar. Use claude plugin trace para ver qual hook bloqueou.
3. claude plugin update faz major bumps sem perguntar. Sem lockfile e com versão sem caret, update vai pegar major. Sempre pin com @^1 ou @~1.4 em produção.
4. Plugins com MCP server consomem porta. Se 3 plugins instalam MCP servers e dois querem porta 4321, o segundo falha silenciosamente. Configure portas em settings.json.mcp.ports.{plugin-name}.
5. Plugin que mexe em CLAUDE.md é veneno. Há plugins que injetam CLAUDE.md global automaticamente (tipo 'meta-prompt'). Quase sempre conflita com o seu CLAUDE.md de projeto. Audite o que cada plugin faz com claude plugin info --show-files antes de instalar em time grande.
TL;DR
Marketplace é npm para harness engineering. Use claude plugin install para skills/hooks que TODO time precisa, pine versões com semver e commit plugins.lock. Para distribuir interno: rode registry compatível (3 endpoints HTTP) e use scope.{namespace}.registry para hibridizar. Antes de publicar: validate, dry-run, CHANGELOG, LICENSE. Antes de instalar plugin de terceiros: leia claude plugin info --show-files.