Saltar al contenido principal
Ejecuta comandos de plugins ya sea como claude plugin desde tu shell o un script, o como /plugin y /reload-plugins dentro de una sesión de Claude Code. Esta referencia proporciona las banderas, valores predeterminados, salida y códigos de salida de cada comando, junto con las dos banderas que cargan un plugin para una sesión. Las tablas a continuación enumeran las opciones de uso común de cada subcomando, no todas las opciones. Ejecuta claude plugin --help en tu shell para ver qué subcomandos tiene tu versión, y claude plugin <subcommand> --help para ver la lista completa de opciones de un subcomando.
Estos casos se cubren en otras páginas:

Comandos claude plugin

Ejecuta claude plugin <subcommand> desde tu shell o un script, fuera de una sesión de Claude Code. Estos subcomandos instalan y gestionan plugins sin abrir el panel /plugin. claude plugins es un alias para claude plugin. Cada subcomando comparte estos códigos de salida, argumentos de plugins y valores de alcance:
  • Códigos de salida: 0 en caso de éxito y 1 en caso de fallo. validate añade salida 2 para un error inesperado, y eval añade los códigos listados en su sección.
  • Argumentos de plugins: un argumento <plugin> es un name de plugin o name@marketplace. Cuando dos marketplaces ofrecen el mismo nombre, usa la forma calificada. configure toma solo la forma calificada.
  • Alcances: --scope toma user, project o local, y nombra el archivo de configuración al que escribe el comando. update también toma managed.

plugin init

Crea un nuevo plugin en ~/.claude/skills/<name>/. A menos que tu administrador haya bloqueado los plugins de directorio de skills, se carga en tu próxima sesión como <name>@skills-dir sin necesidad de un paso de instalación. new es un alias para init. Para el flujo de trabajo de crear, probar y editar que comienza con este comando, consulta Crear un plugin.
<name> se convierte en el nombre del directorio bajo ~/.claude/skills/ y el name del plugin en su manifiesto. El comando no tiene una bandera para otra ubicación. Para crear un scaffold dentro de un proyecto, consulta Crear un plugin. Crea un plugin con archivos de skill y hook de inicio:
Claude Code valida lo que escribió e imprime Created plugin "my-helper" at ~/.claude/skills/my-helper, seguido del id con el que se carga y el comando claude plugin disable que lo desactiva. Claude Code sale con 1 sin escribir cuando no puede crear un scaffold de forma segura, y el mensaje nombra la razón. Estas son razones comunes:

plugin install

Instala un plugin desde uno de tus marketplaces. i es un alias para install.
La mayoría de los plugins se instalan sin una solicitud. Para un plugin cuya entrada de marketplace ejecuta un comando para instalarlo o establece un headersHelper para su descarga, Claude Code primero imprime el comando y pregunta Run this command now? [y/N]. Ejecuta claude plugin install --help en tu shell para ver todas las opciones que tu versión soporta. Pasa -y desde tu propia terminal para aceptar el comando mostrado sin la solicitud. Aquí está lo que sucede sin un TTY y cuando Claude ejecuta el comando:
  • stdin o stdout no es un TTY, y no pasas ni -y ni --accept-command: la instalación se rechaza. La salida dice que el comando solo se mostró, y el código de salida es 1
  • Claude ejecuta el comando a través de su herramienta Bash: -y se ignora. Ejecuta el comando desde tu propia terminal en su lugar
Instala un plugin para todos los que clonan el proyecto:
Claude Code imprime Successfully installed plugin: formatter@my-marketplace (scope: project). Cuando nada nuevo se instala, la salida dice por qué:
  • Ya instalado en ese alcance: la salida es Plugin "formatter@my-marketplace" is already installed (scope: project) y el código de salida es 0
  • Rechazas una solicitud de origen de comando: la salida es Aborted. y el código de salida es 1
  • Rechazas una solicitud de headersHelper, o no se puede confirmar sin un TTY: la salida es Aborted — the command was not run. y el código de salida es 1

Formato de resultado JSON

Cuando pasas --json a plugin install, la última línea de stdout es un objeto JSON. Analiza solo esa línea, porque Claude Code imprime cualquier comando que declare el marketplace antes de ella. Tres campos siempre están presentes:
  • command: el subcomando que se ejecutó, como install
  • outcome: ok o failed
  • message: una descripción legible por humanos del resultado
Otros campos, como pluginId, scope y failureCode, aparecen solo cuando aplican. La opción --json en plugin uninstall, plugin update, plugin enable y plugin disable imprime el mismo objeto con los campos propios de ese subcomando. Un error de uso, como un --scope inválido, no imprime ninguna línea de resultado y sale con 1 con la razón en stderr.

Resultado JSON para comandos de marketplace

En plugin marketplace add, plugin marketplace remove y plugin marketplace update, --json imprime un objeto JSON en la última línea de stdout con los campos command, outcome y message. Lo siguiente es el resultado de claude plugin marketplace remove your-marketplace --json:
El valor de command es marketplace-add, marketplace-remove o marketplace-update. Los campos a continuación aparecen solo cuando aplican:
  • marketplace: el nombre del marketplace sobre el que actuó el comando
  • failureCode: un código que indica por qué falló el comando, como invalid_source
plugin marketplace add y plugin marketplace remove pueden no imprimir ninguna línea de resultado cuando el argumento es el nombre reservado anthropic-plugin-directory, así que verifica el código de salida para ese nombre.

Aceptar un comando de instalación mostrado

Cuando una ejecución de --json muestra un comando declarado por el marketplace y no lo ejecuta, el resultado failed también lleva un objeto shownCommand. Sus campos incluyen el comando tal como se mostró, el plugin al que pertenece, y el sha256 del comando. Para aceptar exactamente ese comando, vuelve a ejecutar con ese sha256 como --accept-command desde tu propia terminal, porque la bandera no tiene efecto dentro de una sesión de Claude Code. Requiere Claude Code v2.1.271 o posterior. El sha256 cuenta como aceptación para exactamente ese comando, plugin y catálogo de marketplace. Si alguno de ellos cambió desde que se mostró el comando, Claude Code no acepta el sha256 y muestra el comando nuevamente. Un cambio que la actualización del marketplace de la propia ejecución obtiene también cuenta como tal cambio. Si shownCommand.acceptCommandMatched es false, el sha256 que pasaste no coincide con el comando ahora mostrado. Revisa ese comando antes de volver a ejecutar con su sha256.

plugin uninstall

Elimina un plugin instalado de un alcance. remove y rm son alias para uninstall.
Desinstala un plugin del alcance del proyecto:
Claude Code imprime Successfully uninstalled plugin: formatter (scope: project). Cuando el plugin no está instalado en ese alcance, el comando imprime una línea que comienza con Failed to uninstall plugin "formatter@my-marketplace": y sale con 1. Si la línea de fallo continúa con "formatter" was not uninstalled: y nombra un archivo de configuración, Claude Code no pudo confirmar que la configuración del alcance ya no activa el plugin, por lo que el plugin permanece instalado con todo lo que guardó. Con --json, el resultado lleva failureCode: "settings_still_on". Esta verificación de configuración requiere Claude Code v2.1.282 o posterior.

Qué elimina y qué conserva una desinstalación

Cuando desinstales un plugin del último alcance en el que está instalado, Claude Code también elimina las opciones y secretos almacenados del plugin y su directorio de datos, ~/.claude/plugins/data/<id>/. Hay tres excepciones:
  • Con --keep-data, el directorio de datos permanece
  • Cuando otro plugin instalado usa la misma carpeta, como uno cuyo ID difiere de este solo en mayúsculas, el directorio de datos permanece
  • Cuando Claude Code no puede leer la lista de plugins instalados después de eliminar el plugin de ese alcance, las opciones, secretos y directorio de datos todos permanecen, porque el plugin puede estar aún instalado en otro alcance. La desinstalación aún tiene éxito. El mensaje lista lo que permaneció y cómo eliminarlo, y con --json el resultado lleva savedKept: "install_records_unreadable"
Con --json, keptData reporta si el directorio permaneció, y /plugin muestra · data preserved cuando lo hizo. Para un directorio que permanece sin --keep-data, este reporte requiere Claude Code v2.1.281 o posterior. El campo savedKept requiere Claude Code v2.1.282 o posterior.

plugin enable

Habilita un plugin deshabilitado. Para un plugin sincronizado desde claude.ai, pasa <name>@synced como el plugin.
Sin --scope, el comando verifica tus archivos de configuración en el orden local, proyecto, usuario, y usa el primer alcance que menciona el plugin. Si pasas un --scope donde el plugin no está declarado, el comando escribe una sobrescritura o falla:
  • Un alcance que tiene precedencia sobre el que lo declara: Claude Code escribe una sobrescritura en el alcance que pasaste. Por ejemplo, claude plugin disable formatter --scope local desactiva un plugin habilitado en el proyecto solo para ti
  • Cualquier otro alcance: el comando falla con Plugin "formatter" is installed at project scope, not user. Use --scope project or omit --scope to auto-detect.
Si el plugin ya está habilitado en el alcance resuelto, el comando imprime Plugin "formatter" is already enabled y sale con 1. Con --json, el resultado tiene "failureCode": "already_in_goal_state" y "alreadyInGoalState": true, para que un script pueda tratar ese caso como éxito. Cuando el plugin declara dependencias, Claude Code también las habilita. El comando falla en estos casos:
  • Una dependencia no está instalada: enable falla e imprime el comando claude plugin install para cada dependencia faltante
  • Una dependencia está bloqueada por la política de plugins de tu organización: enable falla y nombra la dependencia bloqueada
  • Una dependencia está establecida en false en un alcance con mayor precedencia que el alcance de destino: enable falla. Habilita la dependencia en ese alcance, o pasa --scope para escribir allí
Vuelve a habilitar un plugin dondequiera que esté declarado:
Claude Code imprime Successfully enabled plugin: formatter (scope: project), nombrando el alcance que detectó.

plugin disable

Deshabilita un plugin sin desinstalarlo. Para un plugin sincronizado desde claude.ai, pasa <name>@synced como el plugin.
Sin --scope, el alcance se auto-detecta en el mismo orden local, proyecto, usuario que plugin enable. Si no pasas ni un nombre de plugin ni --all, Claude Code imprime Please specify a plugin name or use --all to disable all plugins y sale con 1. Deshabilitar un plugin que ya está deshabilitado imprime Plugin "formatter" is already disabled y sale con 1, como plugin enable hace para un plugin ya habilitado. El comando falla para un plugin que aún es requerido:
  • Otro plugin habilitado depende de él: el comando falla y nombra los dependientes a deshabilitar primero
  • Tu organización lo requiere como un plugin sincronizado: el comando falla y no guarda nada
Deshabilita un plugin:
Claude Code imprime Successfully disabled plugin: formatter (scope: project).

plugin update

Actualiza un plugin a la última versión que su marketplace ofrece. La nueva versión se carga en tu próxima sesión, o después de ejecutar /reload-plugins en una en ejecución.
Actualiza un plugin:
Claude Code imprime Checking for updates for plugin "formatter@my-marketplace"…, luego el resultado. Cuando nada es más nuevo, imprime formatter is already at the latest version (1.0.0). y sale con 0, a menos que reintente la instalación de dependencias del plugin y esa instalación falle.

Qué alcance actualiza el comando

Si omites --scope, el comando actualiza el plugin en el alcance más específico en el que está instalado para tu proyecto actual, verificando local, proyecto, usuario, luego managed. Antes de v2.1.281, el comando usaba user cuando omitías --scope, por lo que actualizar un plugin instalado solo en alcance de proyecto o local fallaba con Plugin "<name>" is not installed at scope user. En esas versiones, pasa --scope. managed es el único alcance que puedes actualizar pero no instalar. Para plugins instalados por administrador, consulta Gestionar plugins para tu organización.

Actualizar por nombre simple

Puedes pasar un nombre de plugin simple, que el comando coincide contra tus plugins instalados. Cuando plugins instalados de diferentes marketplaces comparten el nombre, el comando rechaza la actualización y lista los comandos plugin-name@marketplace-name calificados a ejecutar en su lugar. Actualizar por nombre simple requiere Claude Code v2.1.246 o posterior.

Reintentar una instalación de dependencias sin terminar

Cuando el plugin ya está en su última versión, el comando también puede reintentar una instalación de dependencias sin terminar en su copia en caché. Para los casos en que ese reintento se ejecuta o se omite, consulta Los paquetes que lista no están instalados. Si el reintento falla, la salida es Failed to update plugin "formatter@my-marketplace" con la razón y el código de salida es 1. Antes de v2.1.287, el comando reportaba el plugin en su última versión sin reintentar la instalación.

plugin list

Lista plugins instalados con su versión, alcance y estado.
Claude Code agrupa la salida legible por humanos por cómo se carga cada plugin:
  • Installed plugins:: plugins que instalaste desde un marketplace
  • Session-only plugins (--plugin-dir / --plugin-url):: plugins cargados por esas banderas en el mismo comando, como en claude --plugin-dir ./my-plugin plugin list
  • Skills-directory plugins (.claude/skills/*):: plugins que Claude Code encontró en un directorio de skills
  • Synced from claude.ai: plugins sincronizados desde tu cuenta claude.ai
Sin nada en ningún grupo, Claude Code imprime No plugins installed. Use `claude plugin install` to install a plugin.

Salida JSON

Con --json, Claude Code imprime un array con un objeto por instalación. Cada objeto lleva los campos a continuación. id, version, scope, enabled e installPath siempre están presentes, y los otros aparecen solo cuando aplican. Con --json --available, Claude Code imprime un objeto en lugar de un array. Su campo installed contiene el array de objetos de plugin instalado, y su campo available contiene un objeto por plugin de marketplace no instalado con los campos a continuación.

plugin details

Muestra el inventario de componentes de un plugin y su costo de token proyectado. El plugin debe estar cargado: instalado, encontrado en un directorio de skills, o pasado con --plugin-dir o --plugin-url en el mismo comando. El <name> es un name de plugin o name@marketplace.
El comando no toma banderas más allá de --help. Muestra lo que contribuye un plugin instalado:
Claude Code imprime el nombre, versión, descripción y fuente del plugin, luego estas secciones:
  • Component inventory: los skills, agents, hooks, servidores MCP y servidores LSP del plugin
  • Projected token cost: los tokens siempre activos que el plugin añade a cada sesión
  • Per-component (rounded): estimaciones siempre activas y bajo invocación para cada skill, agent y comando. Se omite cuando el plugin no tiene ninguno
Para lo que significan las dos figuras de costo, consulta Medir costo y uso de plugins. Para un plugin que no está cargado, Claude Code imprime este mensaje y sale con 1:
Un ID que termina en @builtin nombra uno de los plugins integrados en Claude Code. Si pasas un ID así y Claude Code no encuentra ese plugin, el mensaje dice en su lugar:

plugin configure

Muestra las opciones userConfig de un plugin instalado y cuáles están establecidas, o guarda valores canalizados en stdin. Requiere Claude Code v2.1.285 o posterior.
Sin banderas, el comando lista cada opción con hasta tres etiquetas: required u optional, luego sensitive para una opción que el manifiesto declara sensible, luego set o not set. No imprime valores guardados. Con --json, la salida incluye los valores guardados de opciones que no son sensibles, y nunca el texto de una sensible. Para guardar valores, escríbelos en un archivo como un objeto JSON que mapea claves de opciones a valores de string, luego pasa el archivo en stdin. Reemplaza formatter@my-marketplace con el id de tu propio plugin como claude plugin list lo muestra. Este ejemplo establece una opción nombrada api_url desde un archivo values.json que contiene {"api_url": "https://example.com"}:
Claude Code valida cada valor contra el tipo declarado de la opción e imprime Configuration saved. Restart Claude Code to apply it. Si pasas una clave que el manifiesto no declara, o un valor que falla la validación, el comando no guarda nada, imprime Failed to save configuration: con la razón, y sale con 1. Con --json, un valor rechazado también imprime un objeto en stdout cuyo campo refused lleva el message y, cuando una opción es culpable, su clave option. Pasa el id completo name@marketplace del plugin, como claude plugin list lo muestra. configure no acepta un name simple. Cuando ningún plugin cargado tiene ese id, el comando imprime No installed plugin has the id "<plugin>". y sale con 1. Para la configuración de un servidor MCP empaquetado, consulta plugin install --config o el elemento Configure en /plugin.

plugin prune

Elimina dependencias auto-instaladas que ningún plugin instalado necesita más. El comando nunca elimina un plugin que instalaste tú mismo. autoremove es un alias para prune.
Previsualiza lo que un prune eliminaría:
Claude Code lista las dependencias huérfanas y termina con (dry run — nothing removed). Sin nada a eliminar, imprime una línea que comienza con Nothing to prune. Sin --dry-run, el comando elimina las dependencias huérfanas solo después de que confirmes en la solicitud o pases -y. El código de salida es 0 sin importar lo que respondas en la solicitud. Lo que prune hace depende de si una terminal está adjunta y si pasas -y:

plugin eval

Ejecuta los casos eval de un plugin e informa resultados puntuados. Requiere Claude Code v2.1.269 o posterior. Cada caso es un prompt más calificadores. Claude Code lo ejecuta varias veces en una sesión aislada con solo el plugin de destino cargado, y por defecto también sin el plugin para que el informe muestre la diferencia. Consulta Probar plugins con evals para el formato de caso, calificadores, resultados y uso de CI.
El target opcional por defecto es el directorio actual y toma cualquiera de estas formas:
  • Un directorio de plugin
  • Un archivo único prompt.md o case.yaml
  • Un plugin instalado como name o name@marketplace
  • name@skills-dir
Pon el target antes de --tag, --allow-tools y --json. Cada una de estas opciones toma las palabras que la siguen como su valor, por lo que un target escrito después de una de ellas se lee como una etiqueta, un nombre de herramienta o la ruta de salida JSON en su lugar del target. Esta tabla lista las opciones que la mayoría de ejecuciones usan. Ejecuta claude plugin eval --help para el conjunto completo, incluyendo --case, --tag, --output-dir, --report, --allow-real-servers, --keep-temp y --verbose. El código de salida informa cómo terminó la ejecución. Para actuar sobre él en un pipeline, consulta Ejecutar evals en CI.

plugin eval init

Crea un conjunto eval para el plugin en el directorio actual. Requiere Claude Code v2.1.269 o posterior. Consulta Crear tu primer conjunto eval.
Ejecuta el comando desde la carpeta raíz del plugin, el directorio que contiene .claude-plugin/plugin.json o el SKILL.md del skill. Para crear el conjunto en otro directorio a propósito, pasa --eval-dir. En una terminal, el comando abre una sesión interactiva de Claude Code para una entrevista de autoría. En la entrevista, Claude hace lo siguiente:
  1. Lee el plugin
  2. Te pregunta qué debería hacer bien
  3. Propone casos y calificadores
  4. Escribe los archivos de caso
  5. Ejecuta los casos y revisa las calificaciones contigo para verificar que los calificadores puntúen de la forma que lo harías
Con --bare, o sin una terminal, el comando escribe una plantilla de caso único en blanco en su lugar. Cuando Claude ejecuta el comando desde dentro de una sesión de Claude Code, el comando imprime las instrucciones de entrevista para que esa sesión siga en su lugar de escribir una plantilla. El name opcional es un nombre de caso. Es requerido con --bare o sin una terminal, porque el comando escribe la plantilla en blanco para ese caso. Un nombre de caso comienza con una letra o dígito y contiene solo letras, dígitos, ., _ y -. En cada plataforma, el comando también rechaza nombres que Windows no puede almacenar, como con o un nombre que termina en .. El comando acepta estas opciones:

plugin tag

Crea una etiqueta git anotada nombrada <name>--v<version> para una versión de plugin. Antes de etiquetar, el comando verifica que el plugin.json del plugin y cualquier entrada de marketplace que lo liste estén de acuerdo en la versión. Para cuándo etiquetar una versión, consulta Publicar un plugin.
El [path] es el directorio del plugin, por defecto el directorio actual. El comando encuentra la entrada de marketplace caminando hacia arriba desde ese directorio a un .claude-plugin/marketplace.json que lista el plugin. Previsualiza la etiqueta para un plugin en un checkout de marketplace:
Claude Code imprime el plan:
  • El nombre del plugin
  • La versión y de qué archivo vino
  • La entrada de marketplace coincidente, cuando hay una
  • El nombre de la etiqueta
  • Los comandos git tag y git push que ejecutaría
Sin --dry-run, Claude Code imprime Created tag formatter--v1.0.0 y ya sea Pushed to origin o el comando push a ejecutar tú mismo. Si el push falla, la etiqueta aún se crea localmente y el comando sale con un error. El comando sale con 1 e imprime la razón cuando no puede etiquetar de forma segura. Las razones comunes son:
  • Sin version en plugin.json o la entrada de marketplace
  • La etiqueta ya existe
  • El árbol de trabajo está sucio

plugin test

Ejecuta las pruebas de un mod, un plugin cuyo código registra manejadores de eventos. El comando no necesita sesión, inicio de sesión ni red. Para saber cómo escribir una prueba, consulta Probar un mod.
El [directory] es el directorio del mod, por defecto el directorio actual. El comando ejecuta cada archivo bajo él cuyo nombre termina en .test.ts o .test.tsx, y sale con estado 1 cuando una prueba falla. Ejecuta las pruebas de un mod en ./first-mod:

plugin validate

Valida un manifiesto de plugin, un manifiesto de marketplace, o los skills, agents y comandos en un directorio, y sale con un código en el que un trabajo de CI puede actuar. Para el flujo de trabajo de crear, probar y editar, consulta Crear un plugin. Para lo que el validador verifica en cada manifiesto, consulta la referencia de manifiesto de plugin y la referencia de marketplace.
Valida un plugin antes de confirmarlo:

Validar un directorio

El <path> es un archivo de manifiesto o un directorio. Dado un directorio, Claude Code elige qué validar por lo que encuentra allí:
  • .claude-plugin/marketplace.json, cuando existe
  • Si no .claude-plugin/plugin.json
  • Si no los archivos de componentes, elegidos por el nombre del directorio. Validar archivos de componentes sin un manifiesto requiere Claude Code v2.1.233 o posterior:
    • Un directorio nombrado skills, agents o commands: los archivos dentro de él
    • Un directorio nombrado .claude: los directorios skills, agents y commands dentro de él
    • Cualquier otro directorio: esos tres directorios bajo su .claude
Cuando el directorio contiene tanto un .claude-plugin/marketplace.json como un .claude-plugin/plugin.json, Claude Code valida el marketplace y también el manifiesto y los archivos de componentes del plugin. Esto requiere Claude Code v2.1.289 o posterior. Claude Code no sigue enlaces simbólicos dentro del directorio que nombras. Lo que hace depende de dónde esté el enlace:
  • Un directorio skills, agents o commands enlazado bajo la raíz del plugin o .claude: Claude Code advierte que nada en él fue leído.
  • Una entrada enlazada dentro de un directorio skills, agents o commands: Claude Code la omite y advierte, por directorio, cuántas entradas omitió que una sesión cargaría.
  • El directorio skills, agents o commands que nombras es en sí mismo un enlace simbólico, o su directorio padre .claude es: Claude Code reporta un error y no verifica nada en él. Nombra el directorio real en su lugar.
Algunos archivos no son leídos por una ejecución de validación:
  • Un SKILL.md en la raíz del plugin: cuando ejecutas claude plugin validate contra un directorio de plugin, Claude Code no verifica un SKILL.md en la raíz del plugin
  • Un CLAUDE.md en la raíz del plugin: en una ejecución de plugin, Claude Code también advierte sobre un CLAUDE.md en la raíz del plugin
  • Archivos de plugin en una ejecución de marketplace: desde un directorio de marketplace, Claude Code no abre los archivos de skill, agent, comando o hook de los plugins que el marketplace lista en otros directorios, ni los archivos de servidor MCP que empaquetan. Para encontrar errores en esos archivos, valida cada directorio de plugin

Validar un archivo de manifiesto

Cuando el archivo no se llama plugin.json ni marketplace.json y no está en un directorio .claude-plugin, Claude Code decide qué es según sus campos. Lo valida como un marketplace en estos casos, y en cualquier otro caso como un manifiesto de plugin:
  • plugins es un array
  • plugins y owner están ambos presentes
  • El archivo tiene un campo que solo define marketplace.json, como owner, y ninguno que solo defina plugin.json, como author
Para elegir las verificaciones tú mismo, nombra el archivo plugin.json o marketplace.json. Claude Code valida cualquier otro archivo en un directorio .claude-plugin como un manifiesto de plugin.

Salida y códigos de salida

Claude Code imprime el archivo que validó, cualquier error y advertencia con sus rutas, y una línea de veredicto. El código de salida sigue el veredicto: Con --json, Claude Code escribe el informe a stdout como un objeto JSON con estos campos de nivel superior:
  • success: el mismo veredicto que el código de salida da
  • strict: si la ejecución trató advertencias como errores
  • target: la ruta resuelta que Claude Code validó
  • manifest: el resultado del propio manifiesto, o null para una ejecución sin manifiesto
  • contents: resultados por archivo, cada uno nombrando su file y llevando arrays errors, warnings y notes. Los archivos sin ningún error, advertencia o nota no reciben entrada, por lo que contents está vacío cuando no hay nada que reportar. Para un directorio con marketplace.json y plugin.json, manifest es el resultado de marketplace.json y los resultados de plugin.json van en contents
    • gatingHooks: si cada hook de mod que puede rechazar una acción, como un hook tool.call, tiene un manejador .catch. Cada elemento da module, pattern, hook y hasCatch. Requiere Claude Code v2.1.290 o posterior
  • advice: los consejos de la ejecución, cada entrada nombrando el README como file y llevando un message y la installLine para pegar. Vacío cuando no hay ninguno. Requiere Claude Code v2.1.295 o posterior
En salida 2, el comando no escribe nada a stdout. El mensaje de error va a stderr.

Consejos sobre el README

Un bloque Advice en la salida de claude plugin validate significa que el README de un plugin no tiene ninguna línea que instale el plugin desde un marketplace, y te da una línea para añadir. Un consejo no es un error ni una advertencia. No cambia la línea de veredicto ni el código de salida, con o sin --strict. Requiere Claude Code v2.1.295 o posterior. Por ejemplo, validar el directorio del marketplace acme-tools imprime este consejo para su plugin deploy-helper:
Para eliminar el consejo, pega la línea sugerida en el README que nombra y luego vuelve a ejecutar claude plugin validate en tu shell. El bloque Advice desaparece. Si la línea sugerida contiene el marcador de posición <owner>/<repo>, pegarla sin cambios no elimina el consejo. Obtén primero el origen real:
  • Validaste el propio directorio del plugin: cuando el marketplace lista el plugin desde un directorio dentro del suyo, valida ese directorio en su lugar. Cuando lo lista desde otro lugar, como un repositorio de GitHub, completa <owner>/<repo> tú mismo
  • Validaste el directorio del marketplace: Claude Code completa el origen a partir del remoto origin del directorio .git en la parte superior de ese directorio. Cuando no puede usar ese remoto, como cuando no existe ninguno, reemplaza <owner>/<repo> con el origen de tu marketplace tú mismo
Una línea de instalación que ya escribiste cuenta cuando plugin install, o su forma corta plugin i, va seguido en la misma línea por cualquiera de estos. Las formas /plugin y claude plugin cuentan ambas:
  • <plugin>@<marketplace>, como /plugin install deploy-helper@acme-tools
  • El nombre del plugin y --marketplace <source>, como /plugin install deploy-helper --marketplace acme/tools

Comandos claude plugin marketplace

Ejecuta claude plugin marketplace <subcommand> desde tu shell para añadir, listar, actualizar y eliminar los marketplaces desde los que instalas plugins.
  • Códigos de salida: estos subcomandos siguen la convención de código de salida de los comandos de plugin
  • Ámbitos: su bandera --scope no tiene forma corta -s
Para qué es un marketplace y cómo Claude Code lo cachea, consulta Referencia de carga de plugins.

plugin marketplace add

Añade un marketplace desde un repositorio de GitHub, una URL de git, un marketplace.json alojado, o una ruta local, y decláralo en un archivo de configuración. Después de añadirlo, Claude Code instala cualquier dependencia que tus plugins instalados estaban perdiendo.
<source> toma cualquiera de las formas en la tabla a continuación, y su forma decide el tipo de fuente y cómo Claude Code obtiene el marketplace. Para el objeto de fuente resultante, consulta la referencia de marketplace. Para un host cuyas URLs de clonación no llevan el sufijo .git, como AWS CodeCommit, añade el marketplace como una entrada de git en extraKnownMarketplaces en su lugar. Claude Code clona una entrada de git sin importar si su URL termina en .git. Claude Code también clona una URL de gitlab.com con subgrupos anidados, como https://gitlab.com/group/subgroup/project. Añade un marketplace y compártelo con el proyecto:
Claude Code imprime Successfully added marketplace: your-marketplace (declared in project settings), usando el name del propio manifiesto del marketplace. Una adición repetida o una fuente inválida imprime uno de estos resultados en su lugar:
  • Marketplace ya en disco: la salida es Marketplace 'your-marketplace' already on disk — declared in project settings y el código de salida es 0
  • Fuente no reconocida: la salida es Invalid marketplace source format. Try: owner/repo, https://..., or ./path y el código de salida es 1
  • Host simple como gitlab.example.com/team/plugins: la adición falla como un atajo owner/repo inválido, y el mensaje te dice que añadas https:// o uses una ruta local
Añade un marketplace alojado en claude.ai por el nombre impreso en la sección From claude.ai: de claude plugin marketplace list:
Con --claudeai, el comando rechaza --scope y --sparse. El marketplace está alojado para tu cuenta, no declarado en un archivo de configuración, por lo que no puedes compartirlo a través del .claude/settings.json de un proyecto.

plugin marketplace list

Lista cada marketplace que has añadido, con su fuente.
Claude Code imprime Configured marketplaces: y una línea Source: por marketplace, o No marketplaces configured. Con --json, Claude Code imprime un array con un objeto por marketplace, llevando los campos a continuación. Cada campo es una string. Un marketplace de claude.ai añadido no tiene un clon local, por lo que su entrada lleva sus identificadores de claude.ai, marketplaceId y organizationUuid, en su lugar de installLocation. También lleva scope cuando uno se registra, y status. Si tus sesiones de terminal sincronizan plugins desde tu cuenta claude.ai, el texto listado termina con una sección From claude.ai:. Esa sección nombra los marketplaces que claude.ai lista para tu cuenta que no has añadido, tanto basados en git como alojados. Requiere Claude Code v2.1.273 o posterior. Para añadir un marketplace de esa sección, consulta Añadir un marketplace desde claude.ai. La salida de --json cubre solo marketplaces configurados y deja la sección fuera.

plugin marketplace remove

Elimina la declaración de un marketplace de tu configuración. rm es un alias para remove.
Cuando eliminas un marketplace del último ámbito que lo declara, Claude Code también elimina su caché y desinstala cada plugin que instalaste desde él. También elimina sus opciones y secretos guardados y datos donde puede.Para actualizar un marketplace sin perder sus plugins, ejecuta plugin marketplace update en su lugar.
El <name> es el nombre del marketplace que plugin marketplace list muestra, no la fuente que pasaste a add. Elimina un marketplace de cada ámbito:
Claude Code imprime Successfully removed marketplace: your-marketplace. Cuando el comando desinstala plugins, la salida los lista bajo una línea como Also uninstalled 2 plugins from this marketplace:. Para usar uno de ellos de nuevo, añade el marketplace de vuelta y reinstala el plugin. Si limitas a un archivo de configuración que no declara el marketplace, el comando falla con Marketplace 'your-marketplace' is not declared in project settings. Omit --scope to remove it from all scopes.

plugin marketplace update

Actualiza un marketplace, o cada marketplace, desde su fuente para obtener nuevos plugins y versiones. Un marketplace añadido con una rama o etiqueta ref se actualiza al último commit de esa ref, no la rama predeterminada del repositorio.
Actualiza un marketplace:
Claude Code imprime Successfully updated marketplace: your-marketplace. Cuando omites el nombre, imprime un recuento como Successfully updated 2 marketplaces.

/plugin en una sesión

Dentro de una sesión interactiva, /plugin abre el panel de plugins. Cada subcomando abre el panel en una pestaña, ejecuta una acción allí o imprime un resultado en línea. /plugins y /marketplace son alias de /plugin. Solo puedes ejecutar estos comandos en una sesión interactiva de la terminal. En una ejecución no interactiva como claude -p, Claude Code responde que /plugin no está disponible en este entorno. Para saber qué superficies tienen /plugin, cómo instalar sin él y qué muestra cada pestaña del panel, consulta Instalar y administrar plugins. Un <plugin> es un name de plugin o name@marketplace. La siguiente tabla enumera todas las formas en sesión. Los subcomandos del shell init, update, details, prune, eval, eval init y test no tienen forma en sesión. Si en /plugin enable, disable, uninstall o configure indicas un plugin que no está instalado en el proyecto actual, Claude Code imprime Plugin "<plugin>" is not installed in this project en lugar de actuar.

/reload-plugins

Aplica cambios de plugins pendientes a la sesión en ejecución sin reiniciarla. Los cambios pendientes son plugins que instalaste, actualizaste, habilitaste, deshabilitaste o editaste en disco desde que comenzó la sesión. Cuando cierras el panel /plugin con cambios pendientes que hiciste en él, Claude Code ejecuta /reload-plugins para ti. Ejecútalo tú mismo después de cambios de plugins que suceden fuera del panel, como un comando claude plugin que ejecutaste en otra terminal.

Resumen de recarga

Claude Code recarga cada plugin activo e imprime una línea de resumen, Reloaded: N plugins · N skills · N agents · N hooks · N plugin MCP servers · N plugin LSP servers, omitiendo el recuento de servidor MCP de plugin en una sesión sin una terminal interactiva. Cuando algún plugin falló, el resumen añade N errors during load. Run /plugin for details. El recuento de skills cubre cada skill que proporciona un plugin, tanto sus entradas de commands/ como sus skills de SKILL.md. El recuento de agents es el número de agents cargados en la sesión, incluyendo los que no vienen de plugins. Cuando las dependencias de un plugin recargado están faltando, Claude Code las instala, recarga de nuevo, y añade (+ N dependencies: <names>) resolved al resumen.

Recargas que cambian herramientas MCP

Cuando la recarga añadiría o eliminaría un servidor MCP de plugin o la herramienta LSP, y ese cambio invalidaría el caché de prompt, Claude Code no aplica la recarga. Imprime una línea como This reload changes MCP tools (<server>) — your next message will re-read the whole conversation instead of using the cache. Run /reload-plugins --force to apply. Pasa --force para aplicarla de todas formas.

Sesiones sin una terminal interactiva

/reload-plugins también se ejecuta en sesiones sin una terminal interactiva, como la aplicación de escritorio, el Agent SDK, y modo no interactivo con -p. Requiere Claude Code v2.1.260 o posterior. En esas sesiones, el comando se ejecuta solo cuando lo escribes en la sesión tú mismo, como en el prompt de -p o la caja de prompt de la aplicación de escritorio. Cuando llega de otra forma, como a través de Remote Control o un mensaje retransmitido desde Slack, el comando responde /reload-plugins isn't available over a remote connection in this session. y no recarga nada. La recarga en esas sesiones no conecta o desconecta servidores MCP de plugins. Esos cambios toman efecto en tu próxima sesión.

Banderas que cargan un plugin para una sesión

Dos banderas de claude cargan un plugin para una sesión solamente, sin instalarlo. Ambas son repetibles. Los autores de plugins las usan para probar un plugin antes de publicarlo. Para el flujo de trabajo de cargar-editar-recargar, consulta Desarrollar sin un marketplace. Un plugin que cualquiera de esas banderas carga es un plugin de solo sesión. claude plugin list lo muestra solo cuando la misma bandera precede al subcomando, como en claude --plugin-dir ./my-plugin plugin list. El plugin aparece como <name>@inline bajo un encabezado que comienza con Session-only plugins, y --json reporta su scope como session. Cuando un plugin de solo sesión comparte un nombre con un plugin instalado, Claude Code carga la copia de solo sesión para esa sesión y omite la instalada. La copia instalada se carga en su lugar si deshabilitaste la copia de solo sesión con claude plugin disable <name>@inline, o si la configuración gestionada bloquea ese nombre de plugin. Para la precedencia, consulta Referencia de carga de plugins. Un administrador puede rechazar ambas banderas, y carpetas nombradas en la variable CLAUDE_CODE_PLUGIN_DIRS, con la configuración gestionada disableSideloadFlags. Claude Code entonces imprime que la bandera está deshabilitada por la configuración gestionada de tu organización y sale con 1 sin iniciar. Desde el Agent SDK, la opción plugins es el equivalente de --plugin-dir.

Próximos pasos