Descripción general
Crear y distribuir un marketplace implica:- Crear plugins: construya uno o más plugins con skills, agentes, hooks, servidores MCP o servidores LSP. Esta guía asume que ya tiene plugins para distribuir; consulte Crear plugins para obtener detalles sobre cómo crearlos.
- Crear el archivo de marketplace: defina un
marketplace.jsonque enumere sus plugins y dónde encontrarlos. Consulte Crear el archivo de marketplace. - Alojar el marketplace: envíe a GitHub, GitLab u otro host git. Consulte Alojar y distribuir marketplaces.
- Compartir con usuarios: los usuarios agregan su marketplace con
/plugin marketplace adde instalan plugins individuales. Consulte Descubrir e instalar plugins.
/plugin marketplace update.
Tutorial: crear un marketplace local
Este ejemplo crea un marketplace con un plugin: una skillquality-review para revisiones de código. Creará la estructura de directorios, agregará una skill, creará el manifiesto del plugin y el catálogo del marketplace, luego lo instalará y probará.
1
Crear la estructura de directorios
2
Crear la skill
Cree un archivo
SKILL.md que defina qué hace la skill quality-review.my-marketplace/plugins/quality-review-plugin/skills/quality-review/SKILL.md
3
Crear el manifiesto del plugin
Cree un archivo
plugin.json que describa el plugin. El manifiesto va en el directorio .claude-plugin/.my-marketplace/plugins/quality-review-plugin/.claude-plugin/plugin.json
Establecer
version significa que los usuarios solo reciben actualizaciones cuando cambia este campo, así que incremente la versión en cada lanzamiento. Si omite version y aloja este marketplace en git, cada commit cuenta automáticamente como una nueva versión. Consulte Resolución de versiones para elegir el enfoque correcto.4
Crear el archivo de marketplace
Cree el catálogo de marketplace que enumera su plugin.
my-marketplace/.claude-plugin/marketplace.json
5
Agregar e instalar
Agregue el marketplace e instale el plugin.
6
Pruébelo
Seleccione algo de código en su editor y ejecute su nueva skill. Las skills del plugin tienen un espacio de nombres con el nombre del plugin.
Cómo se instalan los plugins: Cuando los usuarios instalan un plugin, Claude Code copia el directorio del plugin a una ubicación de caché. Esto significa que los plugins no pueden hacer referencia a archivos fuera de su directorio usando rutas como
../shared-utils, porque esos archivos no se copiarán.Si necesita compartir archivos entre plugins, use enlaces simbólicos. Consulte Plugin caching and file resolution para obtener detalles.Crear el archivo de marketplace
Cree.claude-plugin/marketplace.json en la raíz de su repositorio. Este archivo define el nombre de su marketplace, información del propietario y una lista de plugins con sus fuentes.
Cada entrada de plugin necesita como mínimo un name y un source que le indique a Claude Code dónde obtenerlo. Consulte el esquema completo a continuación para todos los campos disponibles.
Esquema de marketplace
Campos requeridos
Nombres reservados: Los siguientes nombres de marketplace están reservados para uso oficial de Anthropic y no pueden ser utilizados por marketplaces de terceros:
claude-code-marketplace, claude-code-plugins, claude-plugins-official, claude-plugins-community, claude-community, anthropic-marketplace, anthropic-plugins, agent-skills, anthropic-agent-skills, knowledge-work-plugins, life-sciences, claude-for-legal, claude-for-financial-services, financial-services-plugins, first-party-plugins, healthcare. Los nombres que se hacen pasar por marketplaces oficiales, como official-claude-plugins o anthropic-plugins-v2, también están bloqueados. Reservar estos nombres evita que un marketplace de terceros se presente como una fuente publicada por Anthropic.Claude Code vuelve a verificar los nombres reservados cada vez que carga un marketplace, no solo cuando agrega uno. Un marketplace que fue registrado bajo uno de estos nombres antes de que el nombre se reservara deja de cargar e informa que está registrado desde una fuente no confiable. Elimine ese marketplace y vuelva a agregarlo desde la fuente oficial de Anthropic. Un marketplace de terceros afectado por un nombre recién reservado se carga nuevamente tan pronto como lo vuelva a agregar bajo un nombre diferente. Antes de v2.1.205, first-party-plugins y healthcare no estaban reservados, y un marketplace ya registrado bajo un nombre reservado seguía cargándose.Campos del propietario
Campos opcionales
description y version también se aceptan bajo metadata para compatibilidad con versiones anteriores.
Entradas de plugins
Cada entrada de plugin en el arrayplugins describe un plugin y dónde encontrarlo. Puede incluir cualquier campo del esquema de manifiesto de plugin, como description, version, author, commands y hooks, más estos campos específicos del marketplace: source, category, tags, strict y relevance.
Campos requeridos
Campos de plugin opcionales
Campos de metadatos estándar:
Campos de configuración de componentes:
Fuentes de plugins
Las fuentes de plugins le indican a Claude Code dónde obtener cada plugin individual listado en su marketplace. Estos se establecen en el camposource de cada entrada de plugin en marketplace.json.
Después de que Claude Code clona o descarga un plugin en la máquina local, lo copia en el caché de plugins versionado local en ~/.claude/plugins/cache.
Fuentes de marketplace vs fuentes de plugins: Estos son conceptos diferentes que controlan cosas diferentes.
- Fuente de marketplace: dónde obtener el catálogo
marketplace.jsonen sí. Se establece cuando los usuarios ejecutan/plugin marketplace addo en la configuraciónextraKnownMarketplaces. Soportaref(rama/etiqueta) pero nosha. - Fuente de plugin: dónde obtener un plugin individual listado en el marketplace. Se establece en el campo
sourcede cada entrada de plugin dentro demarketplace.json. Soporta tantoref(rama/etiqueta) comosha(commit exacto).
acme-corp/plugin-catalog (fuente de marketplace) puede listar un plugin obtenido de acme-corp/code-formatter (fuente de plugin). La fuente de marketplace y la fuente de plugin apuntan a diferentes repositorios y se fijan independientemente.github, url y git-subdir. Cuando tanto ref como sha se establecen en cualquiera de ellos, sha es el pin efectivo. Claude Code obtiene y verifica el commit fijado directamente.
En la mayoría de los hosts de git, incluidos GitHub, GitLab y Bitbucket, esto significa que la instalación tiene éxito incluso si la rama o etiqueta nombrada por ref ha sido eliminada posteriormente, siempre que el commit aún sea alcanzable desde el repositorio. Algunos servidores, como AWS CodeCommit, no soportan la obtención de commits por SHA. En esos servidores, ref aún debe existir y el commit fijado debe ser alcanzable desde él.
Rutas relativas
Para plugins en el mismo repositorio, use una ruta que comience con./:
.claude-plugin/. En el ejemplo anterior, ./plugins/my-plugin apunta a <repo>/plugins/my-plugin, aunque marketplace.json vive en <repo>/.claude-plugin/marketplace.json. No use ../ para hacer referencia a rutas fuera de la raíz del marketplace.
Las rutas relativas se resuelven contra una copia local del marketplace, por lo que funcionan cuando los usuarios agregan su marketplace desde una fuente de git o un directorio local. Si los usuarios agregan su marketplace a través de una URL directa al archivo
marketplace.json, las rutas relativas no se resolverán, porque solo se descarga ese archivo. Para distribución basada en URL, use fuentes de GitHub, npm o URL de git en su lugar. Consulte Solución de problemas para obtener detalles.Repositorios de GitHub
Repositorios de Git
Subdirectorios de Git
Usegit-subdir para apuntar a un plugin que vive dentro de un subdirectorio de un repositorio de git. Claude Code usa un clon parcial y escaso para obtener solo el subdirectorio, minimizando el ancho de banda para monorepos grandes.
url también acepta una abreviatura de GitHub (owner/repo) o URLs SSH (git@github.com:owner/repo.git).
Paquetes npm
Los plugins distribuidos como paquetes npm se instalan usandonpm install. Esto funciona con cualquier paquete en el registro npm público o un registro privado que su equipo aloje.
version:
registry:
Entradas de plugins avanzadas
Este ejemplo muestra una entrada de plugin usando muchos de los campos opcionales, incluidas rutas personalizadas para commands, agents, hooks y MCP servers:commandsyagents: puede especificar múltiples directorios o archivos individuales. Las rutas son relativas a la raíz del plugin.${CLAUDE_PLUGIN_ROOT}: Use esta variable en hooks y configuraciones de MCP server para hacer referencia a archivos dentro del directorio de instalación del plugin. Esto es necesario porque los plugins se copian a una ubicación de caché cuando se instalan.- Consulte la tabla de sustitución para ver qué campos de configuración la sustituyen por tipo de servidor
- Para dependencias o estado que deben sobrevivir a las actualizaciones de plugins, use
${CLAUDE_PLUGIN_DATA}en su lugar
strict: false: dado que esto se establece en false, el plugin no necesita su propioplugin.json. La entrada del marketplace define todo. Consulte Modo estricto a continuación.
skills/ bajo su source. Las rutas listadas en el campo skills se agregan a ese escaneo:
skills/ en la raíz del marketplace (source: "./"), liste subdirectorios específicos en su lugar para que cada entrada cargue solo sus propias skills:
skills/ compartida no se cargan. Listar ./skills/ en sí, o la raíz del plugin, mantiene el escaneo completo. Si ninguna de las rutas listadas existe, se ejecuta el escaneo predeterminado en su lugar.
Modo estricto
El campostrict controla si plugin.json es la autoridad para definiciones de componentes (skills, agents, hooks, MCP servers, estilos de salida).
Cuándo usar cada modo:
strict: true: el plugin tiene su propioplugin.jsony gestiona sus propios componentes. La entrada del marketplace puede agregar skills o hooks adicionales encima. Este es el predeterminado y funciona para la mayoría de los plugins.strict: false: el operador del marketplace quiere control total. El repositorio del plugin proporciona archivos sin procesar, y la entrada del marketplace define cuáles de esos archivos se exponen como skills, agents, hooks, etc. Útil cuando el marketplace reestructura o cura los componentes de un plugin de manera diferente a la que el autor del plugin pretendía.
Alojar y distribuir marketplaces
Alojar en GitHub (recomendado)
GitHub es la forma recomendada para alojar y distribuir un marketplace:- Crear un repositorio: configure un nuevo repositorio para su marketplace
- Agregar archivo de marketplace: cree
.claude-plugin/marketplace.jsoncon sus definiciones de plugins - Compartir con equipos: los usuarios agregan su marketplace con
/plugin marketplace add owner/repo
Alojar en otros servicios de git
Cualquier servicio de alojamiento de git funciona, como GitLab, Bitbucket y servidores autohospedados. Los usuarios agregan con la URL completa del repositorio:Repositorios privados
Claude Code soporta instalar plugins desde repositorios privados. Para instalación manual y actualizaciones, Claude Code usa sus ayudantes de credenciales de git existentes, por lo que el acceso HTTPS a través degh auth login, Keychain de macOS o git-credential-store funciona igual que en su terminal. El acceso SSH funciona siempre que el host ya esté en su archivo known_hosts y la clave esté cargada en ssh-agent, ya que Claude Code suprime los mensajes interactivos de SSH para la huella digital del host y la contraseña de la clave. Los atajos de teclado de GitHub owner/repo clonan sobre SSH de forma predeterminada; establezca CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1 para clonarlos sobre HTTPS en su lugar.
Las actualizaciones automáticas en segundo plano funcionan de manera diferente. De forma predeterminada, la actualización en segundo plano deshabilita los ayudantes de credenciales de git para su git pull, por lo que la extracción no puede autenticarse en repositorios privados sobre HTTPS incluso cuando un ayudante está configurado. Los remotos SSH no se ven afectados: una clave cargada en ssh-agent autentica las extracciones en segundo plano de la misma manera que las operaciones manuales. Cuando la extracción en segundo plano falla, Claude Code vuelve a clonar el marketplace desde cero. El re-clonado sí usa sus credenciales de git almacenadas, pero puede agotar el tiempo de espera en repositorios grandes, por lo que las actualizaciones automáticas de marketplace privado pueden fallar intermitentemente.
Dos configuraciones hacen que los marketplaces privados se comporten de manera predecible:
- Establezca
CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE=1para mantener el clon existente cuando la extracción en segundo plano falla, en lugar de eliminar y re-clonar. Sus plugins siguen funcionando desde el último estado sincronizado, y las actualizaciones manuales con/plugin marketplace updateaún extraen con sus credenciales. - Configure un ayudante de credenciales de git, por ejemplo con
gh auth setup-gitpara GitHub, para que la alternativa de re-clonado pueda autenticarse sin solicitar.
GITHUB_TOKEN en su entorno no habilita por sí solo la autenticación en segundo plano. Los tokens tienen efecto solo a través de un ayudante de credenciales configurado, por ejemplo el ayudante de CLI gh, que lee GH_TOKEN y GITHUB_TOKEN.
Para hacer que la extracción en segundo plano se autentique sobre HTTPS, configure una reescritura de URL de git global. La reescritura incrusta un token en la URL remota, por lo que tiene efecto aunque la extracción en segundo plano deshabilite los ayudantes de credenciales, y una extracción exitosa omite la alternativa de re-clonado. El siguiente ejemplo reescribe la URL del repositorio del marketplace para incluir un token de acceso:
La reescritura almacena el token en texto plano en su gitconfig, por lo que use un token con acceso de solo lectura al repositorio del marketplace.
En entornos de CI/CD, configure un ayudante de credenciales de git antes de instalar plugins desde repositorios privados. En GitHub Actions, exporte un token con acceso de lectura al repositorio del marketplace como
GH_TOKEN, luego ejecute gh auth setup-git. El token de flujo de trabajo predeterminado solo puede acceder al repositorio del flujo de trabajo, por lo que un marketplace privado en otro repositorio necesita un token de acceso personal o token de aplicación. Una reescritura de URL global configurada en la canalización también autentica la extracción en segundo plano directamente.Probar localmente antes de la distribución
Pruebe su marketplace localmente antes de compartirlo:Requerir marketplaces para su equipo
Puede configurar su repositorio para que los miembros del equipo sean automáticamente solicitados para instalar su marketplace cuando confíen en la carpeta del proyecto. Agregue su marketplace a.claude/settings.json:
Si usa una fuente local
directory o file con una ruta relativa, la ruta se resuelve contra el checkout principal de su repositorio. Cuando ejecuta Claude Code desde un git worktree, la ruta aún apunta al checkout principal, por lo que todos los worktrees comparten la misma ubicación de marketplace. El estado del marketplace se almacena una vez por usuario en ~/.claude/plugins/known_marketplaces.json, no por proyecto.Precargar plugins para contenedores
Para imágenes de contenedor y entornos de CI, puede precargar un directorio de plugins en tiempo de compilación para que Claude Code comience con marketplaces y plugins ya disponibles, sin clonar nada en tiempo de ejecución. Establezca la variable de entornoCLAUDE_CODE_PLUGIN_SEED_DIR para apuntar a este directorio.
Para superponer múltiples directorios seed, separe las rutas con : en Unix o ; en Windows. Claude Code busca cada directorio en orden y usa el primer seed que contiene un marketplace o caché de plugin dado.
El directorio seed refleja la estructura de ~/.claude/plugins:
~/.claude/plugins resultante en su imagen y apunte CLAUDE_CODE_PLUGIN_SEED_DIR a él.
Para omitir el paso de copia, establezca CLAUDE_CODE_PLUGIN_CACHE_DIR en su ruta de seed de destino durante la compilación para que los plugins se instalen directamente allí:
CLAUDE_CODE_PLUGIN_SEED_DIR=/opt/claude-seed en el entorno de tiempo de ejecución de su contenedor para que Claude Code lea desde el seed al inicio.
Al inicio, Claude Code registra los marketplaces encontrados en el known_marketplaces.json del seed en la configuración principal, y usa cachés de plugins encontrados bajo cache/ en su lugar sin re-clonar. Esto funciona tanto en modo interactivo como en modo no interactivo con la bandera -p.
Detalles de comportamiento:
- Solo lectura: el directorio seed nunca se escribe. Las actualizaciones automáticas están deshabilitadas para marketplaces seed ya que git pull fallaría en un sistema de archivos de solo lectura.
- Las entradas seed tienen precedencia: los marketplaces declarados en el seed sobrescriben cualquier entrada coincidente en la configuración del usuario en cada inicio. Para optar por no participar en un plugin seed, use
/plugin disableen lugar de eliminar el marketplace. - Resolución de rutas: Claude Code localiza contenido de marketplace sondeando
$CLAUDE_CODE_PLUGIN_SEED_DIR/marketplaces/<name>/en tiempo de ejecución, no confiando en rutas almacenadas dentro del JSON del seed. Esto significa que el seed funciona correctamente incluso cuando se monta en una ruta diferente a donde fue construido. - Se bloquea la mutación: ejecutar
/plugin marketplace removeo/plugin marketplace updatecontra un marketplace administrado por seed falla con orientación para pedir a su administrador que actualice la imagen seed. - Se compone con configuración: si
extraKnownMarketplacesoenabledPluginsdeclaran un marketplace que ya existe en el seed, Claude Code usa la copia del seed en lugar de clonar.
Restricciones de marketplace administrado
Para organizaciones que requieren control estricto sobre las fuentes de plugins, los administradores pueden restringir qué marketplaces de plugins se permite a los usuarios agregar usando la configuraciónstrictKnownMarketplaces en configuración administrada. Para también rechazar las banderas de CLI que cargan plugins, agentes y servidores MCP para una única ejecución, emparéjelo con disableSideloadFlags. Para permitir qué plugins de marketplaces pueden aparecer como sugerencias de instalación contextual, establezca pluginSuggestionMarketplaces.
Cuando strictKnownMarketplaces se configura en configuración administrada, el comportamiento de restricción depende del valor:
Configuraciones comunes
Deshabilitar todas las adiciones de marketplace:".*" como pathPattern para permitir cualquier ruta del sistema de archivos mientras aún controla fuentes de red con hostPattern.
strictKnownMarketplaces restringe lo que los usuarios pueden agregar, pero no registra marketplaces por sí solo. Para hacer que los marketplaces permitidos estén disponibles automáticamente sin que los usuarios ejecuten /plugin marketplace add, emparéjelo con extraKnownMarketplaces en el mismo managed-settings.json. Consulte Usar ambos juntos.Cómo funcionan las restricciones
Las restricciones se validan antes de cualquier operación de red o del sistema de archivos. La verificación se ejecuta al agregar marketplace y al instalar, actualizar, actualizar y auto-actualizar plugins. Si un marketplace se agregó antes de que se configurara la política y su fuente ya no coincide con la lista de permitidos, Claude Code se niega a instalar o actualizar plugins desde él. La misma aplicación se aplica ablockedMarketplaces.
La lista de permitidos usa coincidencia exacta para la mayoría de tipos de fuente. Para que un marketplace sea permitido, todos los campos especificados deben coincidir exactamente:
- Para fuentes de GitHub:
repoes requerido, yrefopathtambién deben coincidir si se especifican en la lista de permitidos - Para fuentes de URL: la URL completa debe coincidir exactamente
- Para fuentes
hostPattern: el host del marketplace se compara contra el patrón regex - Para fuentes
pathPattern: la ruta del sistema de archivos del marketplace se compara contra el patrón regex
.git o forma ssh:// versus https:// se tratan como valores diferentes. Si el marketplace de su organización se puede clonar por más de una forma de URL, prefiera una entrada hostPattern sobre una URL literal para que todas las formas coincidan.
Debido a que strictKnownMarketplaces se establece en configuración administrada, los usuarios individuales y las configuraciones del proyecto no pueden anular estas restricciones.
Para detalles de configuración completos incluyendo todos los tipos de fuente soportados y comparación con extraKnownMarketplaces, consulte la referencia de strictKnownMarketplaces.
Resolución de versiones y canales de lanzamiento
Las versiones de plugins determinan rutas de caché y detección de actualizaciones: si la versión resuelta coincide con lo que un usuario ya tiene,/plugin update y auto-actualización omiten el plugin.
Claude Code resuelve la versión de un plugin desde el primero de estos que esté establecido:
versionen elplugin.jsondel pluginversionen la entrada del marketplace del plugin- El SHA del commit de git de la fuente del plugin
github, url, git-subdir y rutas relativas dentro de un marketplace alojado en git, puede omitir version completamente y cada nuevo commit se trata como una nueva versión. Esta es la configuración más simple para plugins internos o en desarrollo activo.
Configurar canales de lanzamiento
Para soportar canales de lanzamiento “estable” y “último” para sus plugins, puede configurar dos marketplaces que apunten a diferentes refs o SHAs del mismo repositorio. Luego puede asignar los dos marketplaces a diferentes grupos de usuarios a través de configuración administrada.latest-tools en su lugar:
Fijar versiones de dependencias
Un plugin puede restringir sus dependencias a un rango semver para que las actualizaciones de una dependencia no rompan el plugin dependiente. Consulte Restringir versiones de dependencias de plugins para la convención de etiqueta de git{plugin-name}--v{version}, sintaxis de rango y cómo se combinan múltiples restricciones en la misma dependencia.
Renombrar o eliminar un plugin
Elname de un plugin es su identificador estable. Los usuarios lo referencian en enabledPlugins, pluginConfigs y comandos /plugin install, por lo que cambiarlo rompe cada instalación existente. Para cambiar la etiqueta mostrada en la interfaz de usuario sin romper instalaciones, establezca displayName y mantenga name sin cambios.
Si debe cambiar el name de un plugin, o elimina un plugin del array plugins, agregue una entrada de nivel superior renames para que los usuarios existentes migren en lugar de ver un error plugin-not-found. La migración automática requiere Claude Code v2.1.193 o posterior. Asigne cada nombre anterior a su nombre actual, o a null si el plugin ya no existe. El siguiente ejemplo renombra formatter a code-formatter y registra que legacy-linter fue eliminado:
renames:
- Si la entrada apunta a un nuevo nombre, Claude Code carga el plugin bajo su nuevo nombre y muestra un aviso de una línea como
Renamed to "code-formatter" in the "acme-tools" marketplace. Luego reescribe la clave anterior a la nueva clave en los ámbitos de configuración del usuario, proyecto y local paraenabledPluginsypluginConfigs, por lo que el aviso aparece una vez. - Para una entrada
null, Claude Code elimina la clave anterior y el aviso reporta que el plugin fue eliminado del marketplace. - Si el plugin renombrado usa una fuente remota como
githubonpm, Claude Code reportaplugin-cache-missdespués del renombramiento y el usuario debe ejecutar/plugin installuna vez para obtenerlo bajo el nuevo nombre.
renames como historial de solo anexión: mantenga las entradas antiguas en su lugar incluso después de que espere que cada usuario haya migrado. Claude Code sigue cadenas, por lo que si más tarde renombra code-formatter a formatter-pro, agregue una segunda entrada en lugar de editar la primera. Un usuario que aún tiene el formatter original habilitado luego se resuelve a través de ambas entradas a formatter-pro.
Ejecute claude plugin validate . después de editar el mapa; rechaza cualquier entrada cuya cadena forme un ciclo o no termine en null o un nombre listado en plugins.
La configuración administrada y de política es de solo lectura para Claude Code, por lo que los plugins habilitados allí no pueden ser reescritos automáticamente. El plugin renombrado aún se carga cada sesión, pero el aviso de renombramiento recurrirá hasta que un administrador actualice
enabledPlugins en el archivo de configuración administrada para usar el nuevo nombre. Lo mismo se aplica a los plugins habilitados a través de otras fuentes de solo lectura como --add-dir.renames y reportan plugin-not-found para el nombre anterior.
Validación y pruebas
Pruebe su marketplace antes de compartirlo. Valide la sintaxis JSON de su marketplace:Administrar marketplaces desde la CLI
Claude Code proporciona subcomandos no interactivosclaude plugin marketplace para scripting y automatización. Estos son equivalentes a los comandos /plugin marketplace disponibles dentro de una sesión interactiva.
Plugin marketplace add
Agregue un marketplace desde un repositorio de GitHub, URL de git, URL remota o ruta local.<source>: Abreviatura de GitHubowner/repo, URL de git, URL remota a un archivomarketplace.jsono ruta de directorio local. Para fijar a una rama o etiqueta, agregue@refa la abreviatura de GitHub o#refa una URL de git
gitlab.example.com/team/plugins, se rechaza como una abreviatura owner/repo inválida y el error le indica que agregue https:// o use ./ para una ruta local. Las versiones anteriores lo malinterpretaban como una ruta de repositorio de GitHub y fallan en el momento del clon con un error de no encontrado de GitHub.
Opciones:
Agregue un marketplace desde GitHub usando la abreviatura
owner/repo:
@ref:
marketplace.json directamente:
.claude/settings.json:
Plugin marketplace list
Enumere todos los marketplaces configurados.
Con
--json, cada entrada incluye name, source y campos específicos de la fuente: repo para fuentes de GitHub, url para fuentes de git y URL, y path para fuentes locales. Las fuentes de GitHub y git también incluyen un campo ref cuando el marketplace se agregó con una rama o etiqueta fija.
Plugin marketplace remove
Elimine un marketplace configurado. El aliasrm también se acepta.
<name>: nombre del marketplace a eliminar, como se muestra enclaude plugin marketplace list. Este es elnamedemarketplace.json, no la fuente que pasó aadd
Plugin marketplace update
Actualice marketplaces desde sus fuentes para recuperar nuevos plugins y cambios de versión. Un marketplace agregado con una rama o etiquetaref se actualiza a la confirmación más reciente de esa ref, no a la rama predeterminada del repositorio.
[name]: nombre del marketplace a actualizar, como se muestra enclaude plugin marketplace list. Actualiza todos los marketplaces si se omite
remove como update fallan cuando se ejecutan contra un marketplace administrado por seed, que es de solo lectura. Al actualizar todos los marketplaces, las entradas administradas por seed se omiten y otros marketplaces aún se actualizan. Para cambiar plugins proporcionados por seed, pida a su administrador que actualice la imagen seed. Consulte Precargar plugins para contenedores.
Solución de problemas
Marketplace no se carga
Síntomas: No puede agregar marketplace o ver plugins de él Soluciones:- Verifique que la URL del marketplace sea accesible
- Compruebe que
.claude-plugin/marketplace.jsonexiste en la ruta especificada - Asegúrese de que la sintaxis JSON sea válida usando
claude plugin validateo/plugin validate. Para verificar el frontmatter de skill, agente y comando, ejecute el comando contra cada directorio de plugin - Para repositorios privados, confirme que tiene permisos de acceso
Errores de validación de marketplace
Ejecuteclaude plugin validate . o /plugin validate . desde su directorio de marketplace para verificar problemas. Cuando se apunta a un directorio de marketplace, el validador verifica marketplace.json para errores de esquema, nombres de plugins duplicados y traversal de ruta de fuente. Para cada entrada cuya source es una ruta local, también valida el plugin.json de ese plugin y advierte cuando la version de la entrada no coincide con la de plugin.json. Los problemas encontrados en el plugin.json de un plugin tienen el prefijo del índice de entrada, en la forma plugins[2] plugin.json →.
A partir de Claude Code v2.1.196, el pase por entrada también:
- incluye plugins cuya
sourcees. - se ejecuta cuando
marketplace.jsonestá fuera de un directorio.claude-plugin, resolviendo fuentes contra el directorio del archivo en sí - reporta los problemas de cada entrada incluso cuando otra parte del archivo tiene errores de esquema
.claude-plugin/marketplace.json.
Para validar el plugin.json de un plugin individual y sus archivos de skill, agente, comando y hook, ejecute el comando contra el directorio del plugin en sí, por ejemplo claude plugin validate ./plugins/my-plugin. Errores comunes:
Advertencias (no bloqueantes):
Marketplace has no plugins defined: agregue al menos un plugin al arraypluginsNo marketplace description provided: agregue unadescriptionde nivel superior para ayudar a los usuarios a entender su marketplacePlugin name "x" is not kebab-case: el nombre del plugin contiene letras mayúsculas, espacios o caracteres especiales. Renombre a letras minúsculas, dígitos y guiones solamente (por ejemplo,my-plugin). Claude Code acepta otras formas, pero la sincronización del marketplace de claude.ai las rechaza.
Fallos de instalación de plugins
Síntomas: El marketplace aparece pero la instalación del plugin falla Soluciones:- Verifique que las URLs de fuente del plugin sean accesibles
- Compruebe que los directorios de plugins contengan archivos requeridos
- Para fuentes de GitHub, asegúrese de que los repositorios sean públicos o tenga acceso
- Pruebe las fuentes de plugins manualmente clonando/descargando
- Si la fuente fija tanto
refcomosha, una rama o etiqueta ascendente eliminada no bloquea la instalación en la mayoría de los hosts de git, incluyendo GitHub, GitLab y Bitbucket. En servidores que no soportan obtener commits por SHA, como AWS CodeCommit, elrefaún debe existir y el commit fijado debe ser alcanzable desde él. Si la instalación aún falla, confirme que el commit fijado aún existe en el repositorio
La autenticación del repositorio privado falla
Síntomas: Errores de autenticación al instalar plugins desde repositorios privados Soluciones: Para instalación manual y actualizaciones:- Verifique que esté autenticado con su proveedor de git (por ejemplo, ejecute
gh auth statuspara GitHub) - Compruebe que su ayudante de credenciales esté configurado correctamente:
git config --global credential.helper - Intente clonar el repositorio manualmente para verificar que sus credenciales funcionan
- Por defecto, las actualizaciones en segundo plano desactivan los ayudantes de credenciales de git para la extracción, por lo que la extracción no puede autenticarse sobre HTTPS. Los remotos SSH con una clave cargada en
ssh-agentaún se autentican. Una extracción fallida desencadena un re-clonado desde cero, que usa sus credenciales almacenadas pero puede agotar el tiempo de espera en repositorios grandes - Establezca
CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE=1para mantener el clon existente cuando la extracción en segundo plano falla - Configure un ayudante de credenciales de git, por ejemplo
gh auth setup-git, para que el re-clonado fallback pueda autenticarse - Si el re-clonado agota el tiempo de espera en un repositorio grande, aumente el límite con
CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS - Configure una reescritura de URL de git limitada al repositorio del marketplace para que la extracción en segundo plano se autentique directamente
- O actualice marketplaces privados manualmente con
/plugin marketplace update <name>, que usa sus credenciales
Las actualizaciones del marketplace fallan en entornos sin conexión
Síntomas: Elgit pull del marketplace falla en segundo plano y Claude Code intenta repetidamente un re-clonado que no puede tener éxito.
Causa: Por defecto, cuando un git pull falla, Claude Code intenta un re-clonado desde cero. En entornos sin conexión o aislados, el re-clonado falla de la misma manera, y la restauración del caché anterior después es de mejor esfuerzo. La actualización se ejecuta en segundo plano después del inicio, por lo que no retrasa el inicio, pero cada sesión repite los intentos fallidos y cada operación de git puede esperar el tiempo de espera de 120 segundos.
Solución: Establezca CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE=1 para omitir el intento de re-clonado y mantener el uso del caché existente cuando la extracción falla:
git pull y continúa usando el último estado conocido bueno. Para implementaciones completamente sin conexión donde el repositorio nunca será alcanzable, use CLAUDE_CODE_PLUGIN_SEED_DIR para precargar el directorio de plugins en tiempo de compilación en su lugar.
Las operaciones de Git agotan el tiempo de espera
Síntomas: La instalación del plugin o las actualizaciones del marketplace fallan con un error de tiempo de espera como “Git clone timed out after 120s” o “Git pull timed out after 120s”. Causa: Claude Code usa un tiempo de espera de 120 segundos para todas las operaciones de git, incluida la clonación de repositorios de plugins y la extracción de actualizaciones de marketplace. Los repositorios grandes o las conexiones de red lentas pueden exceder este límite. Solución: Aumente el tiempo de espera usando la variable de entornoCLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS. El valor está en milisegundos:
Los plugins con rutas relativas fallan en marketplaces basados en URL
Síntomas: Agregó un marketplace a través de URL (comohttps://example.com/marketplace.json), pero los plugins con fuentes de ruta relativa como "./plugins/my-plugin" fallan al instalar con errores “path not found”.
Causa: Los marketplaces basados en URL solo descargan el archivo marketplace.json en sí. No descargan archivos de plugins del servidor. Las rutas relativas en la entrada del marketplace hacen referencia a archivos en el servidor remoto que no fueron descargados.
Soluciones:
- Use fuentes externas: Cambie las entradas de plugins para usar fuentes de GitHub, npm o URL de git en lugar de rutas relativas:
- Use un marketplace basado en Git: Aloje su marketplace en un repositorio de Git y agréguelo con la URL de git. Los marketplaces basados en Git clonan el repositorio completo, haciendo que las rutas relativas funcionen correctamente.
Archivos no encontrados después de la instalación
Síntomas: El plugin se instala pero las referencias a archivos fallan, especialmente archivos fuera del directorio del plugin Causa: Los plugins se copian a un directorio de caché en lugar de usarse en el lugar. Las rutas que hacen referencia a archivos fuera del directorio del plugin (como../shared-utils) no funcionarán porque esos archivos no se copian.
Soluciones: Consulte Plugin caching and file resolution para soluciones alternativas incluyendo enlaces simbólicos y reestructuración de directorios.
Para herramientas de depuración adicionales y problemas comunes, consulte Debugging and development tools.
Ver también
- Descubrir e instalar plugins precompilados - Instalación de plugins desde marketplaces existentes
- Plugins - Creación de sus propios plugins
- Referencia de plugins - Especificaciones técnicas completas y esquemas
- Configuración de plugins - Opciones de configuración de plugins
- Referencia de strictKnownMarketplaces - Restricciones de marketplace administrado