Curso – Claude

Complementos de Claude Code

Esta carpeta contiene ejemplos completos de complementos que incluyen múltiples características de Claude Code en paquetes cohesivos e instalables.

Introducción

Los Plugins de Claude Code son colecciones de personalizaciones (comandos de barra, subagentes, servidores MCP y hooks) que se instalan con un solo comando. Representan el mecanismo de extensión de más alto nivel, combinando múltiples funciones en paquetes cohesivos y compartidos.

Arquitectura de complementos

graph TB
    A["Plugin"]
    B["Comandos de barra"]
    C["Subagents"]
    D["Servidores MCP"]
    E["Hooks"]
    F["Configuration"]

    A -->|bundles| B
    A -->|bundles| C
    A -->|bundles| D
    A -->|bundles| E
    A -->|bundles| F

Proceso de carga del complemento

sequenceDiagram
    participant User
    participant Claude as Claude Code
    participant Plugin as Plugin Marketplace
    participant Install as Installation
    participant SlashCmds as Slash Commands
    participant Subagents
    participant MCPServers as MCP Servers
    participant Hooks
    participant Tools as Configured Tools

    User->>Claude: claude --plugin-dir ./07-plugins/pr-review
    Claude->>Plugin: Download plugin manifest
    Plugin-->>Claude: Return plugin definition
    Claude->>Install: Extract components
    Install->>SlashCmds: Configure
    Install->>Subagents: Configure
    Install->>MCPServers: Configure
    Install->>Hooks: Configure
    SlashCmds-->>Tools: Ready to use
    Subagents-->>Tools: Ready to use
    MCPServers-->>Tools: Ready to use
    Hooks-->>Tools: Ready to use
    Tools-->>Claude: Plugin installed ✅

No se requiere mercado (v2.1.157+): Complementos colocados en .claude/skills directorios ahora auto-cargar sin un mercado. Andamios uno nuevo con claude plugin init <name>, que lo crea en ~/.claude/skills/<name>/ (usuario global) y lo carga automáticamente en la siguiente sesión como <name>@skills-dir. La configuración administrada puede bloquear los plugins de directorio de skills: strictPluginOnlyCustomization los detiene incluso cuando un permiso tiene una { "source": "skills-dir" } entrada, y una lista de permisos de mercado sin esa entrada los detiene también. Una carpeta bloqueada no muestra ningún plugin y ningún error en /plugin o claude plugin list.

Tipos de complementos y distribución

Tipo Ámbito de aplicación Compartido Autoridad Ejemplos
Oficial Mundial Todos los usuarios Antrópico Revisión de relaciones públicas, orientación sobre seguridad
Comunidad Público Todos los usuarios Comunidad DevOps, Ciencia de Datos
Organización Interno Miembros del equipo Empresa Normas internas, instrumentos
Datos personales Individual Usuario único Desarrollador Flujos de trabajo personalizados

Estructura de definición del complemento

El manifiesto de complementos utiliza el formato JSON en .claude-plugin/plugin.json:

{
  "name": "my-first-plugin",
  "description": "A greeting plugin",
  "version": "1.0.0",
  "author": {
    "name": "Your Name"
  },
  "homepage": "https://example.com",
  "repository": "https://github.com/user/repo",
  "license": "MIT"
}

Más allá de esos campos de identidad, el manifiesto puede apuntar a Claude Code a componentes que viven en otro lugar que las carpetas predeterminadas, y llevar metadatos de descubrimiento y dependencia:

Campo Tipo Descripción
workflows string array Personalizado flujo de trabajo archivos de script o directorios (reemplaza el valor predeterminado workflows/)
outputStyles string array Archivos o directorios de estilo de salida personalizados (reemplaza el valor predeterminado output-styles/)
lspServers string array objeto Servidores LSP para inteligencia de código: vaya a la definición, encuentre referencias, diagnósticos. "./.lsp.json". Véase Configuración del servidor LSP
channels array Declaraciones de canales para la inyección de mensajes (Telegram, Slack, estilo Discord)
dependencies array Otros plugins que este complemento requiere, opcionalmente con restricciones de la versión de Semver
keywords array Etiquetas de descubrimiento utilizadas al navegar y buscar mercados
metadata objeto Objeto de forma gratuita para sus propios datos, como campos de derecho o catálogo
experimental.themes string array Color de los archivos o directorios del tema (reemplaza el valor predeterminado themes/)
experimental.monitors string array Monitor de fondo configuraciones que se inician automáticamente cuando el complemento está activo

Ejemplo de estructura de complemento

my-plugin/
├── .claude-plugin/
│   └── plugin.json       # Manifest (name, description, version, author)
├── commands/             # Skills as Markdown files
│   ├── task-1.md
│   ├── task-2.md
│   └── workflows/
├── agents/               # Custom agent definitions
│   ├── specialist-1.md
│   ├── specialist-2.md
│   └── configs/
├── skills/               # Agent Skills with SKILL.md files
│   ├── skill-1/
│   │   └── SKILL.md
│   └── skill-2/
│       └── SKILL.md
├── hooks/                # Event handlers in hooks.json
│   └── hooks.json
├── .mcp.json             # MCP server configurations
├── .lsp.json             # LSP server configurations for code intelligence
├── bin/                  # Executables added to Bash tool's PATH while plugin is enabled (unsandboxed PowerShell commands find them too, v2.1.302)
├── settings.json         # Default settings applied when plugin is enabled (only the `agent` and `subagentStatusLine` keys take effect)
├── themes/               # Optional: ship custom Claude Code themes (v2.1.118+)
├── templates/
│   └── issue-template.md
├── scripts/
│   ├── helper-1.sh
│   └── helper-2.py
├── docs/
│   ├── README.md
│   └── USAGE.md
└── tests/
    └── plugin.test.js

Nota: commands/ es legado. Orientación oficial "Usar skills/ para nuevos plugins." Existentes commands/ los directorios siguen trabajando — los tres plugins de ejemplo en este módulo envían uno — pero un nuevo plugin debe poner sus capacidades en skills/ como SKILL.md directorios en lugar de archivos de comandos planos Markdown.

Configuración del servidor LSP

Los plugins pueden incluir el soporte de Language Server Protocol (LSP) para la inteligencia de código en tiempo real. Los servidores LSP proporcionan diagnósticos, navegación de código e información de símbolos mientras trabaja.

Localización de la configuración: - .lsp.json archivo en el directorio raíz del complemento - La lspServers tecla en plugin.json — el nombre del campo de manifiesto oficial. Acepta una cadena, un array o un objeto: una cadena o un array puntos en los archivos de configuración LSP o directorios (por ejemplo "./.lsp.json"), y un objeto declara los servidores en línea.

Referencia sobre el terreno

Campo Requerido Descripción
command Sí. Servidor de LSP binario (debe estar en PATH)
extensionToLanguage Sí. Mapas de extensiones de archivo a IDs de idioma
args No Argumentos de línea de comandos para el servidor
transport No Método de comunicación: stdio (por defecto) o socket
env No Variables de entorno para el proceso del servidor
initializationOptions No Opciones enviadas durante la inicialización de LSP
settings No Configuración del espacio de trabajo pasado al servidor
workspaceFolder No Anular la ruta de carpeta del espacio de trabajo
startupTimeout No Tiempo máximo (ms) para esperar el inicio del servidor
shutdownTimeout No Tiempo máximo (ms) para el apagado elegante
restartOnCrash No Reiniciar automáticamente si el servidor se bloquea
maxRestarts No Intensidades máximas de reinicio antes de renunciar

Configuración de ejemplos

Vamos (goplas):

{
  "go": {
    "command": "gopls",
    "args": ["serve"],
    "extensionToLanguage": {
      ".go": "go"
    }
  }
}

Python (pyright):

{
  "python": {
    "command": "pyright-langserver",
    "args": ["--stdio"],
    "extensionToLanguage": {
      ".py": "python",
      ".pyi": "python"
    }
  }
}

TypeScript:

{
  "typescript": {
    "command": "typescript-language-server",
    "args": ["--stdio"],
    "extensionToLanguage": {
      ".ts": "typescript",
      ".tsx": "typescriptreact",
      ".js": "javascript",
      ".jsx": "javascriptreact"
    }
  }
}

Complementos LSP disponibles

El mercado oficial incluye complementos LSP preconfigurados:

Complemento Idioma Servidor binario Instalar comando
pyright-lsp Python pyright-langserver pip install pyright
typescript-lsp TypeScript/JavaScript typescript-language-server npm install -g typescript-language-server typescript
rust-analyzer-lsp Rust rust-analyzer Instalar vía rustup component add rust-analyzer

Capacidades de LSP

Una vez configurados, los servidores LSP proporcionan:

  • Diagnóstico instantáneo — los errores y advertencias aparecen inmediatamente después de las ediciones
  • Navegación de códigos — ir a la definición, buscar referencias,
  • Información sobre el hover — las firmas de tipo y la documentación en el aeroplano
  • Lista de símbolos — busque símbolos en el archivo o espacio de trabajo actual

bin/ directorio en PATH

Cuando un complemento está activado, su bin/ se añade el directorio a la sesión PATH, después de la tuya PATH entradas, por lo que un plugin no puede sombra git, ls, u otro comando del sistema. Cualquier ejecutable enviado allí puede ser invocado directamente desde la herramienta Bash por nombre — no se requiere ruta calificada (un comando de herramienta PowerShell fuera de la caja de arena también los encuentra, v2.1.302; uno arenero no lo hace).

# In a plugin layout:
my-plugin/
├── .claude-plugin/
│   └── plugin.json
└── bin/
    └── my-tool          # executable file (chmod +x)

# Inside a Claude Code session with the plugin enabled:
$ my-tool --help

Utilice esto para los ayudantes de CLI que engancha, skills, o comandos dentro del mismo plugin se shell hacia. Marcar los archivos ejecutables en la repo plugin (chmod +x) — git conserva el bit.

Opciones de complemento (v2.1.83+)

Los complementos pueden declarar opciones configurables por el usuario en el manifiesto a través de userConfig. Valores marcados sensitive: true se almacenan en el llavero del sistema en lugar de los archivos de configuración de texto plano:

{
  "name": "my-plugin",
  "version": "1.0.0",
  "userConfig": {
    "apiKey": {
      "type": "string",
      "title": "API key",
      "description": "API key for the service",
      "sensitive": true
    },
    "region": {
      "type": "string",
      "title": "Region",
      "description": "Deployment region",
      "default": "us-east-1"
    }
  }
}

Datos de complementos persistentes (${CLAUDE_PLUGIN_DATA}) (v2.1.78+)

Los complementos tienen acceso a un directorio de estado persistente a través del ${CLAUDE_PLUGIN_DATA} variable de entorno. Este directorio es único por plugin y sobrevive a través de las sesiones, por lo que es adecuado para cachés, bases de datos y otro estado persistente:

{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "*",
        "hooks": [
          {
            "type": "command",
            "command": "node \"${CLAUDE_PLUGIN_ROOT}\"/scripts/track-usage.js \"${CLAUDE_PLUGIN_DATA}\"/usage.json"
          }
        ]
      }
    ]
  }
}

El directorio (~/.claude/plugins/data/<id>/) se crea la primera vez que se hace referencia y se mantiene a través de actualizaciones de plugin. Se elimina cuando se desinstala el plugin desde el último lugar que está instalado (a menos que pase --keep-data).

Monitores de fondo (v2.1.105)

Los complementos pueden registrar monitores de fondo que comienzan cuando una sesión comienza o la primera vez que se ejecuta una de las skills del complemento. experimental.monitors en plugin.json (o en monitors/monitors.json):

{
  "name": "my-plugin",
  "version": "1.0.0",
  "experimental": {
    "monitors": [
      {
        "name": "app-log",
        "command": "tail -f /var/log/app.log",
        "description": "Application log errors",
        "when": "always"
      }
    ]
  }
}

name, command, y description son necesarios. when acepta: - "always" (predeterminado) — empezar al inicio de la sesión y en la recarga del plugin - "on-skill-invoke:<skill>" — empezar la primera vez que la habilidad se ejecuta

Las teclas desconocidas son rechazadas y el plugin no se carga. Un nivel superior monitors la tecla todavía se carga, pero claude plugin validate advierte.

Los monitores utilizan la misma herramienta de Monitor bajo el capó, que transmite líneas stdout como eventos a los que Claude puede reaccionar.

Los monitores de complementos no se inician en no interactivos -p En Amazon Bedrock, Claude Platform en AWS, Google Cloud's Agent Platform, o Microsoft Foundry, o con DISABLE_TELEMETRY o CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC set, necesitan v2.1.310+ (las versiones anteriores no las iniciaron allí). allowManagedHooksOnly, sólo monitores de plugins de su configuración administrada de inicio de la fuerza-activable (v2.1.310+).

Complemento en línea a través de configuración (source: 'settings') (v2.1.80+)

Los complementos se pueden definir en línea en los archivos de configuración como entradas de mercado utilizando el source: 'settings' campo. Esto permite incrustar una definición de plugin directamente sin requerir un repositorio o mercado separado. Declararlo bajo extraKnownMarketplaces.<name>.source; el name debe coincidir con la clave del mercado, y sus plugins deben hacer referencia a fuentes externas como GitHub o npm (las rutas relativas son rechazadas):

{
  "extraKnownMarketplaces": {
    "inline-tools": {
      "source": {
        "source": "settings",
        "name": "inline-tools",
        "plugins": [
          {
            "name": "quick-lint",
            "source": {
              "source": "github",
              "repo": "my-org/quick-lint"
            }
          }
        ]
      }
    }
  }
}

Mods (v2.1.287+)

Un mod es un plugin que cambia la apariencia y el comportamiento de Claude Code. Su código es un módulo de hooks JavaScript o TypeScript: manejadores de eventos a los que Claude Code llama cuando algo sucede, como una llamada a herramienta, un prompt enviado o parte de la interfaz que se está dibujando. Cada controlador puede observar el evento, reescribirlo o responderlo a sí mismo. Un mod instala como cualquier otro plugin (/plugin install <plugin>@<marketplace>), puede enviar en el mismo plugin como skills y servidores MCP, y se ejecuta con sus permisos, por lo que instalar mods sólo de los autores y mercados de confianza. Mods trabajan en el CLI Claude Code (v2.1.287+), en la pestaña Código de la aplicación de escritorio Claude, y en la extensión Código VS.

Lo que un mod puede hacer Ejemplo
Dibujar paneles y una banda encima del prompt Un panel al lado de la transcripción o una banda encima del prompt, con pestañas, botones y campos de texto
Añadir comandos A /command que ejecuta su función a la vez, sin Claude turno, incluso mientras Claude está trabajando
Guarda o cambia las llamadas de la herramienta Sostenga una llamada de herramienta mientras hace una pregunta al usuario, rehúsela o conteste sin ejecutar la herramienta
Reacción a los acontecimientos Siga las llamadas de la herramienta, preguntas y vueltas; las variables compartidas de hooks de un mod, por lo que uno puede contar llamadas de la herramienta mientras que otro muestra el conteo junto al spinner
Llame a la API de mods Llamar a un modelo, leer y escribir archivos, iniciar procesos o hacer peticiones de red (un hook puede hacer esto sólo a través de la API de mods)

Para crear un mod, describa lo que desea en una sesión de Claude Code: Claude trabaja desde el sistema integrado plugin-authoring habilidad (o ejecutar /plugin-authoring usted mismo), escribe el mod, y, una vez que se habilita la recarga en caliente para la sesión, lo recarga al final de cada turno que lo cambia; claude plugin validate los administradores deciden si los mods se ejecutan, y cuáles, a través de configuraciones administradas — por ejemplo, allowManagedModsOnly permite que sólo los mods de su organización y los mods incorporados en Claude Code ejecuten sus hooks. Con la configuración administrada, o un equipo o Enterprise /login como credencial de la sesión, una guardia incorporada impide que el mod de un usuario apruebe una llamada que un deny o ask regla o cualquier PreToolUse hook se detendría; sin ninguno de los dos, un mod puede aprobar tal llamada.

Nota: v2.1.299–2.1.300 añadir Text accesorios size, weight, mono, tabular, dir (RTL) — bold se deprecia a favor de weight — Box pasos de espaciado xs–xl, prompt virtualText, $.ui.view({ agentId }), y el prompt.change hook; v2.1.301 añade Input rows para un campo de varias líneas (Entrar envía, Shift+Enter añade una línea). v2.1.304 añade e.isReadOnly el tool.check (más un isReadOnly: true emparejador), settings.read hooks que ven cada capa de configuración (e.layers) en el propio Claude Code lee — por lo que un mod administrado puede tapar la configuración de una organización — y un key argumentación en favor $.settings.read(); v2.1.305 mantiene un panel acoplado dentro del 45% de la anchura de la terminal y dibuja Image en iTerm2 3.5+ (renderizado a pantalla completa); v2.1.310 sorteos Image dentro de tmux 3.3+ con allow-passthrough y focus-events En adelante.

Nota: Ver el oficial Descripción general de los cambios, Crear un mod, y Referencia de los cambios.

Configuración del complemento

Los complementos pueden enviar un settings.json archivo para proporcionar la configuración predeterminada. Dos claves tienen efecto, agent y subagentStatusLine; cada otra llave se cae. agent toma el nombre de uno de los agentes del plugin y lo ejecuta como el hilo principal:

{
  "agent": "specialist-1"
}

Cuando un complemento incluye settings.json, sus valores predeterminados se aplican en la instalación. Los usuarios pueden anular estos ajustes en su propio proyecto o configuración de usuario.

Enfoque autónomo vs complemento

Enfoque Nombres de órdenes Configuración Lo mejor para
Independiente /hello Configuración manual en CLAUDE.md Personal, específico para el proyecto
Plugins /plugin-name:hello Automatizado mediante plugin.json Compartir, distribuir, utilizar en equipo

Uso Comandos de barra independiente para flujos de trabajo personales rápidos. complementos cuando desees combinar múltiples funciones, compartir con un equipo o publicar para su distribución.

Invocación espaciada (v2.1.136+): Los comandos Plugin slash también funcionan con un espacio — /myplugin review resuelve a la canónica /myplugin:review. Cualquiera de las dos formas está bien; la forma del colon es canónica y recomendada en las escrituras.

skills/ descubrimiento (v2.1.136+): A skills entrada en plugin.json ya no oculta el complemento predeterminado skills/ directorio. Las skills declaradas en ambos lugares se fusionan, por lo que puede listar algunos puntos destacados en plugin.json sin perder el resto.

Nivel de raíz SKILL.md complementos (v2.1.142+): Un complemento con un nivel superior SKILL.md y no skills/ subdirectorio es en sí aparece como una sola habilidad — el plugin es la habilidad. Este es un patrón adicional, no un reemplazo para el skills/ o el directorio plugin.json skills entrada; utilícelo para pequeños plugins de una sola habilidad donde el diseño del directorio no añade valor.

Ejemplos prácticos

Ejemplo 1: Complemento de revisión PR

Archivo: .claude-plugin/plugin.json

{
  "name": "pr-review",
  "version": "1.0.0",
  "description": "Complete PR review workflow with security, testing, and docs",
  "author": {
    "name": "Anthropic"
  },
  "repository": "https://github.com/your-org/pr-review",
  "license": "MIT"
}

Archivo: commands/review-pr.md

---
name: Review PR
description: Start comprehensive PR review with security and testing checks
---

# PR Review

This command initiates a complete pull request review including:

1. Security analysis
2. Test coverage verification
3. Documentation updates
4. Code quality checks
5. Performance impact assessment

Archivo: agents/security-reviewer.md

---
name: security-reviewer
description: Security-focused code review
tools: Read, Grep, Bash
---

# Security Reviewer

Specializes in finding security vulnerabilities:
- Authentication/authorization issues
- Data exposure
- Injection attacks
- Secure configuration

Instalación:

claude --plugin-dir ./07-plugins/pr-review

# Result:
# ✅ 3 slash commands installed
# ✅ 3 subagents configured
# ✅ 2 MCP servers connected
# ✅ 4 hooks registered
# ✅ Ready to use!

Ejemplo 2: Complemento DevOps

Componentes:

devops-automation/
├── commands/
│   ├── deploy.md
│   ├── rollback.md
│   ├── status.md
│   └── incident.md
├── agents/
│   ├── deployment-specialist.md
│   ├── incident-commander.md
│   └── alert-analyzer.md
├── mcp/
│   └── kubernetes-config.json
├── hooks/
│   ├── pre-deploy.js
│   └── post-deploy.js
└── scripts/
    ├── deploy.sh
    ├── rollback.sh
    └── health-check.sh

Ejemplo 3: Complemento de documentación

Componentes agrupados:

documentation/
├── commands/
│   ├── generate-api-docs.md
│   ├── generate-readme.md
│   ├── sync-docs.md
│   └── validate-docs.md
├── agents/
│   ├── api-documenter.md
│   ├── code-commentator.md
│   └── example-generator.md
├── mcp/
│   └── github-docs-config.json
└── templates/
    ├── api-endpoint.md
    ├── function-docs.md
    └── adr-template.md

Mercado de complementos

El directorio oficial de plugin administrado por Anthrópic es anthropics/claude-plugins-official, auto-registrado en el primer lanzamiento interactivo. Los administradores de empresas también pueden crear mercados de plugins privados para la distribución interna.

También hay un mercado comunitario, anthropics/claude-plugins-community, alojando plugins de terceros que han pasado la validación automatizada de Anthropic y la detección de seguridad — cada uno fijado a un compromiso específico SHA en el catálogo. A diferencia del mercado oficial se añade manualmente:

/plugin marketplace add anthropics/claude-plugins-community

# Then install from it using the claude-community marketplace name
/plugin install <plugin-name>@claude-community
graph TB
    A["Mercado de complementos"]
    B["Oficial<br/>antrópica/claude-plugins-oficial"]
    C["Comunidad<br/>Mercado"]
    D["Empresa<br/>Registro privado"]

    A --> B
    A --> C
    A --> D

    B -->|Categories| B1["Development"]
    B -->|Categories| B2["DevOps"]
    B -->|Categories| B3["Documentation"]

    C -->|Search| C1["Automatización DevOps"]
    C -->|Search| C2["Mobile Dev"]
    C -->|Search| C3["Ciencia de los datos"]

    D -->|Internal| D1["Normas de la empresa"]
    D -->|Internal| D2["Sistemas heredados"]
    D -->|Internal| D3["Compliance"]

    style A fill:#e1f5fe,stroke:#333,color:#333
    style B fill:#e8f5e9,stroke:#333,color:#333
    style C fill:#f3e5f5,stroke:#333,color:#333
    style D fill:#fff3e0,stroke:#333,color:#333

Configuración del mercado

Los usuarios empresariales y avanzados pueden controlar el comportamiento del mercado a través de ajustes:

Ajuste Descripción
extraKnownMarketplaces Añadir fuentes de mercado adicionales más allá de los valores predeterminados
strictKnownMarketplaces Control de los mercados que los usuarios pueden añadir (solo gestionados)
blockedMarketplaces blocklist de mercados gestionados por los administradores (apoyos hostPattern / pathPattern campos regex desde v2.1.119)
enabledPlugins (configurado a false) Bloquear un complemento específico: "enabledPlugins": { "<plugin>@<marketplace>": false } en los ajustes gestionados lo bloquea de la instalación en cada alcance y lo esconde del mercado

Alias amistosos (v2.1.232): additionalMarketplaces se acepta como un alias para extraKnownMarketplaces, y allowedMarketplaces para strictKnownMarketplaces. Las listas de referencia de los ajustes oficiales en Alias clave del mercado. Versiones anteriores ignoran los alias, por lo que las teclas canónicas son seguras de seguir usando.

Comodines del propietario (v2.1.223+): a "owner/*" la entrada permite o bloquea cada repo del mercado bajo un propietario de GitHub. Aceptada sólo en strictKnownMarketplaces y blockedMarketplaces. En todas partes un github fuente aparece, incluyendo extraKnownMarketplaces y /plugin marketplace add — los repo valor debe nombrar un único repositorio.

Ejecución (v2.1.117+): blockedMarketplaces y strictKnownMarketplaces se aplican en cada evento del ciclo de vida del plugin — instalar, actualizar, actualizar y autoactualizar — no sólo al principio añadir. strictKnownMarketplaces se administra sólo.

Ejemplo blockedMarketplaces con regex host/path (v2.1.119):

{
  "blockedMarketplaces": [
    { "source": "hostPattern", "hostPattern": "^evil\\.example\\.com$" },
    { "source": "pathPattern", "pathPattern": "^/opt/approved/" }
  ]
}

Mercado headersHelper (v2.1.238)

A url mercado — o una entrada de catálogo individual — puede nombrar un headersHelper comando que acuña los encabezados HTTP utilizados para buscar el catálogo y cualquier archivo de origen mismo. Así es como un mercado privado detrás de un servicio de emisión de tokens autentica sin un secreto estático en la configuración.

A la entrada del catálogo helper se ejecuta sólo en instalación o actualización, y sólo después de que su comando se ha mostrado a usted: claude plugin install y claude plugin update pronto [y/N] antes de ejecutarlo. Paso -y aceptar sin el aviso en la automatización.

Características adicionales del mercado

  • Barra de búsqueda del mercado (v2.1.172): Al navegar por los complementos de un mercado en /plugin, una barra de búsqueda le permite filtrar los plugins del mercado por nombre o palabra clave — útil para los grandes mercados donde el desplazamiento de la lista completa es lento.
  • Tiempo de espera predeterminado de git: Aumento de 30s a 120s para grandes repositorios de plugin
  • Registros npm personalizados: Los complementos pueden especificar URLs de registro npm personalizadas para la resolución de dependencias
  • Fijación de la versión: Bloquear complementos a versiones específicas para entornos reproducibles
  • Coste de contexto proyectado en el panel de navegación (v2.1.143): El /plugin marketplace browser muestra el costo de cada plugin proyectado por vuelta de contexto-token — la suma de skills siempre cargadas, hooks y descriptores de servidor MCP. Úselo para tamaño adopción de plugin antes de instalar. La misma proyección está disponible post-instalación a través de claude plugin details <name>.
  • Sólo los submódulos de complementos son clonados (v2.1.295): cuando Claude Code clona un repositorio de mercado, sólo obtiene los submódulos git que contienen archivos de plugin (un complemento raíz con "source": "./" consigue todo o ninguno, y --sparse/sparsePaths las versiones anteriores se llevaron cada submódulo y pudieron correr más allá del tiempo de espera del clon.

Ejemplo de fila de navegación con la columna de costes:

NAME              VERSION   AUTHOR     CTX/TURN   DESCRIPTION
code-reviewer     1.2.0     anthropic  +1,420     Multi-agent PR review
devops-toolkit    0.4.1     acme       +3,180     SRE playbooks, on-call helpers
docs-helper       0.9.0     community  +610       Doc-style guide enforcement

Esquema de definición del mercado

Los mercados de complementos se definen en .claude-plugin/marketplace.json:

{
  "name": "my-team-plugins",
  "owner": { "name": "my-org" },
  "plugins": [
    {
      "name": "code-standards",
      "source": "./plugins/code-standards",
      "description": "Enforce team coding standards",
      "version": "1.2.0",
      "author": { "name": "platform-team" }
    },
    {
      "name": "deploy-helper",
      "source": {
        "source": "github",
        "repo": "my-org/deploy-helper",
        "ref": "v2.0.0"
      },
      "description": "Deployment automation workflows"
    }
  ]
}
Campo Requerido Descripción
name Sí. Nombre del mercado en la caja de kebab
owner Sí. Organización o usuario que mantiene el mercado: un objeto con un requisito name (email, url opcional)
plugins Sí. Array de entradas de complementos
plugins[].name Sí. Nombre del complemento (case de kebab)
plugins[].source Sí. Fuente del complemento (cadena de ruta u objeto fuente)
plugins[].description No Breve descripción del complemento
plugins[].version No Cadena de versión semántica
plugins[].author No Autor del complemento: un objeto con un requisito name (email, url opcional)
renames No Campo de mercado de nivel superior (no por entrada): mapea un complemento anterior name a su nombre actual (o null si se elimina) por lo que los usuarios migran automáticamente (v2.1.193)
plugins[].displayName No Nombre de lectura humana que se muestra en la interfaz de usuario; no se utiliza para buscar (v2.1.143)
plugins[].defaultEnabled No Si false, el plugin se instala desactivado hasta que el usuario opte por (v2.1.154)

Tipos de fuentes de complementos

Los complementos se pueden obtener desde varias ubicaciones:

Fuente Sintaxis Ejemplo
Ruta relativa Ruta de cadena "./plugins/my-plugin"
GitHub { "source": "github", "repo": "owner/repo" } { "source": "github", "repo": "acme/lint-plugin", "ref": "v1.0" }
URL de Git { "source": "url", "url": "..." } { "source": "url", "url": "https://git.internal/plugin.git" }
Subdirectorio Git { "source": "git-subdir", "url": "...", "path": "..." } { "source": "git-subdir", "url": "https://github.com/org/monorepo.git", "path": "packages/plugin" }
npm { "source": "npm", "package": "..." } { "source": "npm", "package": "@acme/claude-plugin", "version": "^2.0" }
Archivo (v2.1.224+) { "source": "archive", "url": "..." } { "source": "archive", "url": "https://cdn.example.com/lint-plugin-1.2.0.zip", "sha256": "…" }
Comando (v2.1.229+) { "source": "command", "command": "..." } { "source": "command", "command": "acme-plugin-resolver --print-dir" }

GitHub y git sources admiten opcional ref (sucursal/etiqueta) sha (commit hash) campos para el pinning de versiones.

Nombres de fuentes y metadata.pluginRoot (v2.1.239): un mercado metadata.pluginRoot Ahora tiene efecto — un nombre de fuente de plugin desnudo en el catálogo resuelve a un directorio bajo esa raíz, en lugar de tener que ser deletreado como una ruta relativa completa en cada entrada.

Skills sincronizadas desde claude.ai (v2.1.239): plugins sincronizados desde claude.ai aparecen como name@synced. Diríjase a ellos de esa manera en claude plugin enable <name>@synced y claude plugin disable <name>@synced. Un plugin sincronizado nunca sobreescribe un plugin instalado del mismo nombre — los dos coexisten, distinguido por el @synced Sufijo.

archive fuente (v2.1.224+)

Instalar un complemento desde un zip sobre HTTPS — sin clon git, no instalar npm.

{
  "source": "archive",
  "url": "https://cdn.example.com/lint-plugin-1.2.0.zip",
  "sha256": "3b1f0c2e9a7d4f5b8c6e1a2d3f4b5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b"
}
Campo Requerido Notas
url Sí. Sólo HTTPS. http://Los hosts , loopback, link-local y cloud-metadata son rechazados y re-checked on cada salto de redireccionamiento, por lo que una redirigir no puede contrabandear en un host bloqueado
sha256 No 64 caracteres hexagonales. En el desajuste la instalación falla con Plugin archive integrity check failed

Los archivos están cerrados en 256 MiB. Pin sha256 para cualquier cosa que no te hayas construido a ti mismo, sin ella, quien controle la URL controla el código que se ejecuta en tu sesión.

command fuente (v2.1.229+)

Deje que una herramienta instalada localmente decida dónde vive el plugin. Útil cuando un gestor de paquetes interno ya sabe cómo obtener y presentar sus plugins.

{
  "source": "command",
  "command": "acme-plugin-resolver --print-dir",
  "timeout": 60,
  "mode": "copy"
}

El contrato es estricto: el comando debe imprimir exactamente una línea en stdout y salir con el código 0. Esa línea es la ruta absoluta de un directorio que contiene el complemento completo.

Campo Requerido Predeterminado Notas
command Sí. — La orden a ejecutar
timeout No 60 (segundos) Máximo 600
mode No "copy" "copy" instantáneas del directorio; "link" symlinks, así que las ediciones son en vivo

El comando se re-resuelve cada sesión y el resultado se aplica sin un reinicio. Las organizaciones pueden bloquear este tipo de fuente completamente con disableCommandPluginSources.

Los nombres de mercado reservados ahora incluyen first-party-plugins y healthcare (v2.1.205) — se mantienen para uso oficial y no pueden ser reclamados por un mercado personalizado.

Métodos de distribución

GitHub (recomendado):

# Users add your marketplace
/plugin marketplace add owner/repo-name

Otros servicios git (Requiere URL completa):

/plugin marketplace add https://gitlab.com/org/marketplace-repo.git

Apenas. gitlab.com URLs repo — incluyendo subgrupos anidados — clonan de la misma manera github.com URLs do (v2.1.232). El régimen es obligatorio: desde el v2.1.196 hasta el final gitlab.example.com/team/plugins se rechaza como inválido owner/repo taquicardia, por lo que utilice el https://gitlab.com/company/plugins.git form. v2.1.232 también añadió GitLab token-family secret redaction y dio el glab CLI la misma caja de arena y la misma protección de camino de credencial gh Ya lo he hecho.

Depósitos privados: Soportado a través de ayudantes git credencial o tokens de entorno. Los usuarios deben tener acceso de lectura al repositorio. A través de HTTPS, Claude Code desactiva las indicaciones de git y los programas askpass (incluyendo GIT_ASKPASS), por lo que la credencial ya debe ser almacenado, por ejemplo con gh auth login y gh auth setup-git.

Presentación de directorio: Enviar complementos al directorio de Anthropic para una distribución más amplia desde el portal de desarrolladores en claude.ai/directory/manage. Mercado oficial de Antropía, claude-plugins-official, no acepta envíos a través del portal de directorios.

Gestión de los mercados

# Marketplace CLI commands
claude plugin marketplace add <source>       # Add marketplace (GitHub, URL, local)
claude plugin marketplace update [name]      # Refresh catalog index
claude plugin marketplace remove <name>      # Remove marketplace
claude plugin marketplace list               # List configured marketplaces

Importante: marketplace update sólo actualiza el catálogo de complementos (lo que está disponible para instalar). NO actualiza los complementos instalados. plugin update <name> para actualizar complementos específicos instalados.

Modo estricto

Controlar cómo interactúan las definiciones de mercado con las locales plugin.json archivos:

Ajuste Comportamiento
strict: true (por defecto) Locales plugin.json es autoritativo; la entrada en el mercado lo complementa
strict: false Entrada de mercado es toda la definición de plugin

Restricciones de organización con strictKnownMarketplaces:

Valor Efecto
Sin configurar Sin restricciones — los usuarios pueden añadir cualquier mercado
Array vacío [] Bloqueo: no se permiten mercados
Array de objetos de origen Allowlist — solo se pueden añadir mercados coincidentes
{
  "strictKnownMarketplaces": [
    { "source": "github", "repo": "my-org/*" },
    { "source": "github", "repo": "trusted-vendor/*" }
  ]
}

Aviso: En modo estricto con strictKnownMarketplaces, los usuarios sólo pueden instalar plugins desde mercados con autorización. Esto es útil para entornos empresariales que requieren distribución controlada de plugins.

Instalación de complementos y ciclo de vida

graph LR
    A["Discover"] -->|Browse| B["Marketplace"]
    B -->|Select| C["Página de complemento"]
    C -->|View| D["Components"]
    D -->|Install| E["/plugin install"]
    E -->|Extract| F["Configure"]
    F -->|Activate| G["Use"]
    G -->|Check| H["Update"]
    H -->|Available| G
    G -->|Done| I["Disable"]
    I -->|Later| J["Enable"]
    J -->|Back| G

Comparación de características del complemento

Característica Comando de barra Habilidad Subagente Complemento
Instalación Copia manual Copia manual Configuración manual Un comando
Tiempo de configuración 5 minutos 10 minutos 15 minutos 2 minutos
Agrupar Un solo archivo Un solo archivo Un solo archivo Múltiples
Versión Manual Manual Manual Automático
Intercambio de equipos Copiar archivo Copiar archivo Copiar archivo Id. de instalación
Actualizaciones Manual Manual Manual Auto-disponible
Dependencias Ninguna Ninguna Ninguna Puede incluir
Mercado No No No Sí.
Distribución Depósito Depósito Depósito Mercado

Comandos CLI de complemento

Todas las operaciones de plugin están disponibles como comandos CLI:

claude plugin install <name>@<marketplace>   # Install from a marketplace
claude plugin uninstall <name>               # Remove a plugin
claude plugin update <name>                  # Update installed plugin to latest version
claude plugin list                           # List installed plugins
claude plugin enable <name>                  # Enable a disabled plugin
claude plugin disable <name>                 # Disable a plugin
claude plugin validate <path>                # Validate the plugin structure at <path>
claude plugin tag [path]                     # Create a {name}--v{version} release git tag (v2.1.118+)
claude plugin prune                          # Remove orphaned auto-installed plugin dependencies (v2.1.121+)
claude plugin uninstall <name> --prune       # Uninstall and cascade-clean orphaned dependencies (v2.1.121+)
claude plugin details <name>                 # Show inventory + projected per-turn token cost (v2.1.139+)
claude plugin configure <name>@<marketplace> # Show a plugin's options and which are unset; save values from stdin with --values-stdin (v2.1.285+)
claude plugin init <name>                    # Scaffold a new plugin (alias: claude plugin new)

Alias: claude plugin new para init, remove / rm para uninstall, ls para list, y autoremove para prune.

Banderas que merecen saber:

Comando Bandera Finalidad
plugin init --with <components...> Carpetas de componentes específicas para andamios: skills, agents, hooks, mcp, lsp, output-style, channel
plugin init -f, --force Sobrescribir un existente .claude-plugin/ directorio
plugin install --config <key=value> Establecer un userConfig opción en el momento de instalación; desde v2.1.285, <server>.<key>=<value> establece un paquete .mcpb Configuración del servidor MCP para que comience sin visitar /plugin → Configurar
plugin install -y, --yes Aceptar comandos sin un aviso de confirmación
plugin list --available También lista los complementos disponibles en los mercados (requiere --json)
plugin tag --push Empujar la etiqueta al control remoto después de crearlo
plugin tag --dry-run Imprime lo que se etiquetaría sin crear la etiqueta
plugin validate --strict Tratar las advertencias como errores
plugin validate --json Emite un informe de validación legible por máquina (v2.1.259+)

claude plugin validate también controles .mcp.json y falla cuando outputStyles, themes, monitorso bien lspServers Faltan rutas o puntos fuera del directorio del complemento (v2.1.283+).

Ejemplo claude plugin tag ./my-plugin toma un ruta al plugin (no una cadena de versión). Crea un {name}--v{version} git tag derivado de plugin.json, validando que plugin.json y cualquier entrada de mercado adjunto están de acuerdo, y es la forma recomendada para cortar versiones de plugin para su distribución.

claude plugin prune es útil después de instalar o desinstalar plugins de mercado que se tiraron en sus propias dependencias — elimina cualquier plugins instalados automáticamente cuyo plugin padre ha sido eliminado. plugin uninstall --prune hace la misma cascada en un solo paso.

Ejecución de la dependencia (v2.1.143): claude plugin disable <name> se niega si otro plugin habilitado sigue dependiendo del destino (el gráfico de dependencia se rompería). claude plugin enable <name> Dependencias de tránsito que pueden ser utilizadas por la fuerza después de un único aviso de confirmación en lugar de requerir una habilitación separada para cada uno. claude plugin prune para limpiar dependencias cuyos dependientes fueron retirados más tarde.

claude plugin details <name> (v2.1.139+)

claude plugin details <name> Imprime el inventario completo de componentes del plugin — skills, hooks, servidores MCP, servidores LSP, monitores de fondo, comandos de barra — más un coste previsto por vuelta (y por invocación) token. Utilícelo para dimensionar un plugin antes de adoptarlo, especialmente en modelos con contexto limitado.

Ejemplo de salida (abreviada):

plugin: code-reviewer (1.2.0)
skills:        3      hooks: 2      mcp: 1      lsp: 0      monitors: 0
commands:      /review, /security-review
projected ctx: +1,420 tokens per turn  ·  +9,800 tokens per /review invocation

Los servidores LSP fueron agregados al panel de detalles en v2.1.142. Vea también el costo de contexto proyectado del panel de exploración del mercado (v2.1.143) cubierto en Mercado de complementos.

claude plugin eval (v2.1.269+)

claude plugin eval ejecuta la suite de evaluación de un plugin y los informes anotados, resultados reproducibles, por lo que puede decir si un cambio a una habilidad o agente realmente lo mejoró. Los resultados vuelven como JSON más un informe HTML. Desde v2.1.283, requiere git 2.31 o posterior cuando se instala git.

claude plugin eval            # Run the plugin's eval suite
claude plugin eval --help     # Full option list

--disallow-tools <tools…> y por caso disallowed_tools el campo mantenga las herramientas integradas como Agente fuera de las ejecuciones de valor (v2.1.299).

Salida legible por máquina con --json (v2.1.268+)

--json se acepta el install, uninstall, update, enable, y disable, lo que hace que el script de gestión de plugins en CI. Cada fila de claude plugin list --json también lleva errorDetails y noteDetails, así que un plugin que falla se explica sin un segundo comando.

claude plugin install my-plugin@my-marketplace --json
claude plugin list --json

Aceptando un comando exacto con --accept-command (v2.1.271+)

--accept-command <sha256> el install y update acepta exactamente el comando un anterior --json ejecución exhibida, en lugar de una manta -y.

claude plugin install my-plugin@my-marketplace --accept-command <sha256>

Instalación desde un mercado que no ha añadido (v2.1.275+)

En una sesión, /plugin install <plugin> --marketplace <source> nombre el mercado en línea y se ofrece a añadirlo antes de instalar, por lo que descubrir y agregar un mercado ya no es un paso separado. claude plugin install <plugin> --marketplace <source> hace lo mismo (v2.1.292+): añade el mercado si es necesario, bajo los mismos controles de política que claude plugin marketplace add, a continuación, instala el plugin.

/plugin install code-review --marketplace anthropics/claude-code
claude plugin install code-review --marketplace anthropics/claude-code   # same, from your shell (v2.1.292+)

Métodos de instalación

Desde el Mercado

/plugin install plugin-name
# or from CLI:
claude plugin install plugin-name@marketplace-name

¿Tiene efecto de inmediato? Desde v2.1.221, generalmente sí — leer la última línea del resumen de instalación:

Instalar resumen dice Lo que significa
Plugin is now active. Claude Code activó el plugin como parte de la instalación. Nada más que hacer.
Run /reload-plugins to activate. El plugin está instalado pero no está en vivo todavía — ya sea activando que habría invalidado la memoria caché, o el intento de activación ha fallado.

Antes de v2.1.221, ninguna instalación entró en vigor en la sesión actual hasta que se ejecutó /reload-plugins o reiniciado, por lo que las guías más antiguas describen ese paso como incondicional.

Habilitar / Desactivar (con un alcance autodetectado)

/plugin enable plugin-name
/plugin disable plugin-name

Los /plugin las superficies de interfaz no utilizadas plugins para que pueda limpiarlos (v2.1.187+). Activar/desactivar también funciona cuando un plugin plugin.json name difiere de su nombre de entrada en el mercado (v2.1.195+).

Listado de complementos instalados (v2.1.163)

Confirmar qué complementos están activos en la sesión actual:

/plugin list             # all installed plugins
/plugin list --enabled   # only enabled plugins
/plugin list --disabled  # only disabled plugins

Complemento local (para el desarrollo)

# CLI flag for local testing (repeatable for multiple plugins)
claude --plugin-dir ./path/to/plugin
claude --plugin-dir ./plugin-a --plugin-dir ./plugin-b

# --plugin-dir also accepts a .zip archive path (v2.1.128+)
claude --plugin-dir ./my-plugin.zip

# Fetch a plugin .zip archive from a URL for the current session (v2.1.129+, repeatable)
claude --plugin-url https://example.com/releases/my-plugin-0.3.0.zip

Desde el repositorio Git

/plugin marketplace add username/repo                    # Add the GitHub repo as a marketplace
/plugin install plugin-name@marketplace-name             # Then install a plugin from it
/plugin install plugin-name --marketplace username/repo  # Or both in one step (v2.1.275+)

Auto-actualización

Claude Code puede actualizar automáticamente los mercados y sus plugins instalados al iniciar.

Tipo de mercado Auto-actualización predeterminada Cómo cambiar
Oficial (claude-plugins-official) Activado /plugin → Mercados → Seleccionar
Terceros / Locales • Discapacitados Mismo camino de la interfaz de usuario

Cuando se ejecuta la actualización automática, Claude Code: 1. Actualiza el catálogo del mercado 2. Actualiza los complementos instalados a las últimas versiones 3. Informa el resultado por plugin: Plugin is now active. cuando Claude Code lo haya activado como parte de la actualización, o Run /reload-plugins to activate. cuando no lo hizo

Variables de entorno

Variable Efecto
DISABLE_AUTOUPDATER=1 Desactivar todas las actualizaciones automáticas (Claude Code + plugins)
DISABLE_AUTOUPDATER=1 + FORCE_AUTOUPDATE_PLUGINS=1 Mantenga actualizaciones de complementos, deshabilite las actualizaciones de Claude Code
CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1 (v2.1.141+) Fuerza claude plugin install clonar fuentes de complementos GitHub a través de HTTPS en lugar de SSH, incluso cuando un control remoto SSH está disponible. Usar en corredores o contenedores CI sin claves SSH.
# Disable all auto-updates
export DISABLE_AUTOUPDATER=1

# Keep plugin auto-updates only
export DISABLE_AUTOUPDATER=1
export FORCE_AUTOUPDATE_PLUGINS=1

# CI runner without SSH keys — force HTTPS for plugin installs
export CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1
claude plugin install code-review@claude-code-plugins

Carga de complemento de sesión remota (v2.1.179): El rendimiento de carga de plugins en sesiones remotas se mejoró en v2.1.179, por lo que los plugins estarán disponibles más rápido cuando se conecte a una sesión remota.

Cuándo crear un complemento

graph TD
    A["¿Debo crear un plugin?"]
    A -->|Necesita varios componentes| B{"Múltiples comandos<br/>o subagentes<br/>¿O MCPs?"}
    B -->|Yes| C["• Crear complemento"]
    B -->|No| D["Usar característica individual"]
    A -->|Flujo de trabajo del equipo| E{"Compartir con<br/>¿equipo?"}
    E -->|Yes| C
    E -->|No| F["Mantener como configuración local"]
    A -->|Configuración compleja| G{"Necesita auto<br/>¿Configuración?"}
    G -->|Yes| C
    G -->|No| D

Casos de uso de complementos

Caso de uso Recomendación Por qué
Equipo a bordo • Usar complemento Configuración instantánea, todas las configuraciones
Configuración del marco • Usar complemento Comandos específicos de framework
Normas empresariales • Usar complemento Distribución central, control de versiones
Automatización rápida de tareas • Comando de uso Complejidad de excesos
Experiencia de dominio único • Usar habilidad Demasiado pesado, usa la habilidad en su lugar
Análisis especializado • Usar subagente Crear manualmente o utilizar la habilidad
Acceso a datos en directo • Usar MCP Solo, no lo armes.

Probar un complemento

Antes de publicar, prueba tu plugin localmente usando el --plugin-dir Marca CLI (repetible para múltiples complementos):

claude --plugin-dir ./my-plugin
claude --plugin-dir ./my-plugin --plugin-dir ./another-plugin

# --plugin-dir accepts .zip archives in addition to directories (v2.1.128+)
claude --plugin-dir ./my-plugin.zip

# --plugin-url fetches a plugin .zip from a URL for this session (v2.1.129+, repeatable)
claude --plugin-url https://example.com/releases/my-plugin-0.3.0.zip

Esto lanza Claude Code con su plugin cargado, lo que le permite: - Verificar que todos los comandos de barra están disponibles - Probar la función de subagentes y agentes correctamente - Confirmar servidores MCP conectar correctamente - Validar ejecución de hook - Comprobar configuraciones de servidor LSP - Comprobar si hay errores de configuración

Recarga automática

Los complementos soportan la carga en caliente durante el desarrollo. Cuando modifica archivos de plugin, Claude Code puede detectar cambios automáticamente. También puede forzar una recarga con:

/reload-plugins

Esto relee todos los manifiestos de plugin, comandos, agentes, skills, hooks y configuraciones MCP/LSP sin reiniciar la sesión.

Configuración administrada para complementos

Los administradores pueden controlar el comportamiento del plugin en toda una organización utilizando ajustes administrados:

Ajuste Descripción
enabledPlugins Lista de complementos que están habilitados por defecto
enabledPlugins (configurado a false) Bloquear un complemento: "enabledPlugins": { "<plugin>@<marketplace>": false } en los ajustes gestionados lo bloquea de la instalación en cada alcance y lo esconde del mercado
extraKnownMarketplaces Añadir fuentes de mercado adicionales más allá de los valores predeterminados
strictKnownMarketplaces Restricción de los mercados que los usuarios pueden añadir (solo gestionado; se aplica en cada evento del ciclo de vida del plugin desde v2.1.117)
blockedMarketplaces Blocklist de mercados; se aplica en cada evento del ciclo de vida del plugin desde v2.1.117; soporta hostPattern / pathPattern campos regex desde v2.1.119
allowedChannelPlugins Allowlist de canal plugins que pueden empujar mensajes en sesiones (entra nombre a marketplace y a plugin)
disableCommandPluginSources Bloquear el command Tipo de fuente del complemento org-wide (v2.1.229+)

Alias amistosos (v2.1.232): additionalMarketplaces se acepta como un alias para extraKnownMarketplaces, y allowedMarketplaces para strictKnownMarketplaces. Las listas de referencia de los ajustes oficiales en Alias clave del mercado. Versiones anteriores ignoran los alias, por lo que las teclas canónicas son seguras de seguir usando.

Comodines del propietario (v2.1.223+): a "owner/*" la entrada permite o bloquea cada repo del mercado bajo un propietario de GitHub. Aceptada sólo en strictKnownMarketplaces y blockedMarketplaces. En todas partes un github fuente aparece, incluyendo extraKnownMarketplaces y /plugin marketplace add — los repo valor debe nombrar un único repositorio.

Estos ajustes se pueden aplicar a nivel de organización a través de archivos de configuración gestionados y tienen prioridad sobre los ajustes a nivel de usuario.

Seguridad del complemento

Subagentes de complementos ignorar las siguientes teclas de frontmatter (el agente sigue cargando; las teclas no tienen efecto):

  • hooks -- Los subagentes no pueden registrar manejadores de eventos
  • mcpServers -- Los subagentes no pueden configurar servidores MCP
  • permissionMode -- Los subagentes no pueden anular el modelo de permisos
  • initialPrompt -- Los agentes de complementos no pueden enviar automáticamente un primer prompt

Un archivo de agente no puede agregar hooks o servidores MCP por sí solo; enviarlos como hooks de nivel de plugin y servidores MCP en su lugar. name más de 256 caracteres se ignora también, y el agente lleva el nombre de su archivo.

Publicación de un complemento

Pasos para publicar:

  1. Crear estructura de complementos con todos los componentes
  2. Escribir .claude-plugin/plugin.json manifiesto
  3. Crear README.md con documentación
  4. Prueba local con claude --plugin-dir ./my-plugin
  5. Etiquetar la versión con claude plugin tag ./my-plugin (v2.1.118+) — toma el plugin ruta y crea un {name}--v{version} git tag derivado de plugin.json
  6. Enviar al mercado de complementos
  7. Ser revisado y aprobado
  8. Publicado en el mercado
  9. Los usuarios pueden instalar con un comando

Ejemplo de comunicación:

# PR Review Plugin

## Description
Complete PR review workflow with security, testing, and documentation checks.

## What's Included
- 3 slash commands for different review types
- 3 specialized subagents
- GitHub and CodeQL MCP integration
- Automated security scanning hooks

## Installation
```bash
claude --plugin-dir ./07-plugins/pr-review
```

## Features
✅ Security analysis
✅ Test coverage checking
✅ Documentation verification
✅ Code quality assessment
✅ Performance impact analysis

## Usage
```bash
/review-pr
/check-security
/check-tests
```

## Requirements
- Claude Code 2.1+
- GitHub access
- CodeQL (optional)

Complemento vs Configuración manual

Configuración manual (2+ horas): - Instalar comandos de barra uno por uno - Crear subagentes individualmente - Configurar MCPs por separado - Configurar hooks manualmente - Documentar todo - Compartir con el equipo (esperamos que configuren correctamente)

Con complemento (2 minutos):

claude --plugin-dir ./07-plugins/pr-review
# ✅ Everything installed and configured
# ✅ Ready to use immediately
# ✅ Team can reproduce exact setup

Mejores prácticas

¿Hacer?

  • Usar nombres de plugins claros y descriptivos
  • Incluye README completo
  • Versión de su plugin correctamente (semver)
  • Probar todos los componentes juntos
  • Requisitos de documentación claramente
  • Proporcionar ejemplos de uso
  • Incluir manejo de errores
  • Etiqueta apropiada para el descubrimiento
  • Mantener la compatibilidad hacia atrás
  • Mantenga los complementos enfocados y cohesivos
  • Incluir pruebas completas
  • Documentar todas las dependencias

No lo hagas.

  • No incluyas características no relacionadas
  • No codifique credenciales
  • No te saltes las pruebas.
  • No olvides la documentación.
  • No cree complementos redundantes
  • No ignores la versión
  • No sobrecomplicar dependencias de componentes
  • No te olvides de manejar los errores con gracia

Instrucciones de instalación

Instalación desde Marketplace

  1. Examinar los complementos disponibles (el Descubrir listas de fichas plugins de sus mercados; /plugin list muestra sólo complementos instalados): bash /plugin

  2. Ver detalles del complemento: seleccionar el complemento en la ventana Descubrir para abrir sus detalles. (claude plugin details plugin-name funciona sólo una vez que se carga un complemento: instalado, o pasado con --plugin-dir.)

  3. Instalar un complemento: bash /plugin install plugin-name

Instalación desde la ruta local

# /plugin install needs name@marketplace; a path target reports "marketplace not found"
claude --plugin-dir ./path/to/plugin-directory

Instalación desde GitHub

/plugin marketplace add username/repo                    # Add the GitHub repo as a marketplace
/plugin install plugin-name@marketplace-name             # Then install a plugin from it
/plugin install plugin-name --marketplace username/repo  # Or both in one step (v2.1.275+)

Listado de complementos instalados

/plugin list             # all installed plugins
/plugin list --enabled   # only enabled plugins
/plugin list --disabled  # only disabled plugins

Actualizar un complemento

Usar el formulario CLI — es el que se documenta bajo plugin update y Claude Code en sí mismo le indica cuando una actualización está disponible:

claude plugin update plugin-name

Deshabilitar/Ensamblar un complemento

# Temporarily disable
/plugin disable plugin-name

# Re-enable
/plugin enable plugin-name

Desinstalar un complemento

/plugin uninstall plugin-name

Las siguientes características de Claude Code trabajan junto con plugins:

  • Comandos de barra - Comandos individuales incluidos en complementos
  • Memoria - Contexto persistente para complementos
  • Skills - Experiencia de dominio que se puede envolver en plugins
  • Subagentes - Agentes especializados incluidos como componentes del complemento
  • Servidores MCP - Integraciones de protocolo de contexto modelo agrupadas en complementos
  • Hooks - Controladores de eventos que activan flujos de trabajo de complementos

Flujo de trabajo de ejemplo completo

Complemento de revisión PR Completo flujo de trabajo

1. User: /review-pr

2. Plugin executes:
   ├── pre-review.js hook validates git repo
   ├── GitHub MCP fetches PR data
   ├── security-reviewer subagent analyzes security
   ├── test-checker subagent verifies coverage
   └── performance-analyzer subagent checks performance

3. Results synthesized and presented:
   ✅ Security: No critical issues
   ⚠️  Testing: Coverage 65% (recommend 80%+)
   ✅ Performance: No significant impact
   📝 12 recommendations provided

Solución de problemas

El complemento no se instalará

  • Comprobar la compatibilidad de la versión de Claude Code: claude --version
  • Verificar plugin.json sintaxis con un validador JSON
  • Compruebe la conexión a Internet (para complementos remotos)
  • Permisos de revisión: ls -la plugin/

Componentes no cargados

  • Verificar rutas en plugin.json igualar la estructura real del directorio
  • Compruebe los permisos de archivo: chmod +x scripts/
  • Sintaxis de archivos de componente de revisión
  • Compruebe el inventario de componentes: claude plugin details plugin-name

Falló la conexión MCP

  • Verificar que las variables de entorno se establecen correctamente
  • Comprobar la instalación y salud del servidor MCP
  • Compruebe el estado del servidor MCP con /mcp
  • Revisión de la configuración de MCP en mcp/ directorio

Comandos no disponibles después de instalar

  • Asegúrese de que el complemento se haya instalado correctamente: /plugin list
  • Compruebe si el complemento está activado: /plugin list --enabled
  • Compruebe si está activo todavía — vea la guía de resumen de instalación en Métodos de instalación: Plugin is now active. no necesita ninguna acción, Run /reload-plugins to activate. significa ejecutar ese comando (no se requiere un reinicio)
  • Comprobar si hay conflictos de nombres con comandos existentes

Complemento muestra la versión unknown

Si claude plugin list muestra Version: unknown para un plugin de origen git, actualice Claude Code a v2.1.302+ (claude update), luego correr claude plugin marketplace update <marketplace> y claude plugin update <plugin>@<marketplace>. plugin update reescribe un alcance por ejecución, así que vuelva a ejecutarlo con --scope project (o el otro bloque Scope: valor) para cualquier bloque que todavía se muestra unknown.

Problemas de ejecución del hook

  • Verificar que los archivos de hook tienen permisos correctos
  • Comprobar sintaxis de hook y nombres de eventos
  • Revisar registros de hook para detalles de error
  • Hooks de prueba manualmente, si es posible

Recursos adicionales


Última actualización: 26 de octubre de 2026 Versión de Claude Code: 2.1.310 Fuentes: - https://code.claude.com/docs/en/plugins - https://code.claude.com/docs/en/plugins-reference - https://code.claude.com/docs/en/changelog#2-1-172 - https://code.claude.com/docs/en/changelog - https://code.claude.com/docs/en/commands - https://code.claude.com/docs/en/plugin-marketplaces - https://code.claude.com/docs/en/discover-plugins.md - https://github.com/anthropics/claude-code/releases/tag/v2.1.117 - https://github.com/anthropics/claude-code/releases/tag/v2.1.118 - https://github.com/anthropics/claude-code/releases/tag/v2.1.131 - https://github.com/anthropics/claude-code/releases/tag/v2.1.138 - https://github.com/anthropics/claude-code/releases/tag/v2.1.139 - https://github.com/anthropics/claude-code/releases/tag/v2.1.141 - https://github.com/anthropics/claude-code/releases/tag/v2.1.142 - https://github.com/anthropics/claude-code/releases/tag/v2.1.143 - https://code.claude.com/docs/en/cli-reference - https://code.claude.com/docs/en/model-config - https://github.com/anthropics/claude-code/blob/main/CHANGELOG.md - https://code.claude.com/docs/en/plugins/cli-reference - https://code.claude.com/docs/en/plugin-evals - https://github.com/anthropics/claude-code/releases/tag/v2.1.281 - https://github.com/anthropics/claude-code/releases/tag/v2.1.283 - https://code.claude.com/docs/en/plugins/install - https://github.com/anthropics/claude-code/releases/tag/v2.1.285 - https://code.claude.com/docs/en/plugins/mods/overview - https://code.claude.com/docs/en/plugins/mods/create - https://code.claude.com/docs/en/plugins/mods/reference - https://github.com/anthropics/claude-code/releases/tag/v2.1.287 - https://github.com/anthropics/claude-code/releases/tag/v2.1.292 - https://code.claude.com/docs/en/plugins-reference#monitors - https://code.claude.com/docs/en/changelog#2-1-299 - https://code.claude.com/docs/en/changelog#2-1-300 - https://code.claude.com/docs/en/plugins/manifest-reference - https://code.claude.com/docs/en/plugins/marketplace-reference - https://code.claude.com/docs/en/settings-reference - https://code.claude.com/docs/en/plugins/components - https://code.claude.com/docs/en/plugins/publish - https://code.claude.com/docs/en/plugins/overview - https://code.claude.com/docs/en/changelog#2-1-301 - https://code.claude.com/docs/en/changelog#2-1-302 - https://code.claude.com/docs/en/plugins/components#executables - https://code.claude.com/docs/en/plugins/security - https://code.claude.com/docs/en/changelog#2-1-310 - https://code.claude.com/docs/en/plugins/components#monitors - https://code.claude.com/docs/en/plugins/manifest-reference#monitors - https://code.claude.com/docs/en/settings-reference#what-runs-under-allowmanagedhooksonly - https://code.claude.com/docs/en/plugins/loading#skills-directory-plugins-blocked-by-managed-settings - https://code.claude.com/docs/en/plugins/org#keep-skills-directory-plugins-loading - https://code.claude.com/docs/en/changelog#2-1-304 - https://code.claude.com/docs/en/plugins/mods/events#change-or-refuse-a-settings-read - https://code.claude.com/docs/en/plugins/mods/events#check-whether-a-tool-call-is-read-only - https://code.claude.com/docs/en/plugins/mods/gallery#draw-an-image-inside-tmux - https://code.claude.com/docs/en/plugins/mods/admin#know-what-happens-by-default - https://code.claude.com/docs/en/plugins/create-marketplace#keep-unused-submodules-out-of-the-clone - https://code.claude.com/docs/en/plugins/marketplace-reference#git-submodules-in-the-marketplace-repository - https://code.claude.com/docs/en/plugins/troubleshooting#a-plugin-installed-from-a-git-repository-shows-version-unknown - https://code.claude.com/docs/en/plugins/host-marketplace - https://code.claude.com/docs/en/plugins/components#frontmatter-fields-in-plugin-agents Modelos compatibles: Claude Fable 5, Claude Opus 5, Claude Sonnet 5, Claude Sonnet 4.6, Claude Opus 4.8, Claude Haiku 4.5

Versión en español de Cris Severin. Basado en Claude How To de luongnv89, bajo licencia MIT. Proyecto original