SpyBara
Go Premium

Documentation 2026-09-24 22:57 UTC to 2026-09-25 23:58 UTC

107 files changed +9,083 −5,701. View all changes and history on the product overview
2026
Fri 25 23:58 Thu 24 22:57 Wed 23 23:57 Tue 22 23:59 Mon 21 22:59 Sun 20 23:59 Sat 19 23:57 Fri 18 23:58 Tue 15 23:58 Mon 14 22:58 Sun 13 21:00 Sat 12 03:02 Thu 10 23:00 Wed 9 22:58 Tue 8 20:00 Tue 1 21:02

admin-setup.md +3 −3

Details

94La configuración administrada puede bloquear herramientas, ejecución de sandbox, restringir servidores MCP y fuentes de plugins, y controlar qué hooks se ejecutan. Cada fila es una superficie de control con las claves de configuración que la impulsan.94La configuración administrada puede bloquear herramientas, ejecución de sandbox, restringir servidores MCP y fuentes de plugins, y controlar qué hooks se ejecutan. Cada fila es una superficie de control con las claves de configuración que la impulsan.

95 95 

96| Control | Lo que hace | Configuraciones clave |96| Control | Lo que hace | Configuraciones clave |

97| :------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------- |97| :------------------------------------------------------------------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------- |

98| [Permission rules](/docs/es/permissions) | Permitir, preguntar o denegar herramientas y comandos específicos | `permissions.allow`, `permissions.deny` |98| [Permission rules](/docs/es/permissions) | Permitir, preguntar o denegar herramientas y comandos específicos | `permissions.allow`, `permissions.deny` |

99| [Permission lockdown](/docs/es/permissions#managed-only-settings) | Hacer que la configuración administrada sea la [única fuente de configuración de reglas de permisos](/docs/es/settings-reference#allowmanagedpermissionrulesonly). Deshabilitar `--dangerously-skip-permissions` | `allowManagedPermissionRulesOnly`, `permissions.disableBypassPermissionsMode` |99| [Permission lockdown](/docs/es/permissions#managed-only-settings) | Hacer que la configuración administrada sea la [única fuente de configuración de reglas de permisos](/docs/es/settings-reference#allowmanagedpermissionrulesonly). Deshabilitar `--dangerously-skip-permissions` | `allowManagedPermissionRulesOnly`, `permissions.disableBypassPermissionsMode` |

100| [Starting permission mode](/docs/es/permission-modes#which-mode-a-session-starts-in) | Elegir el modo de permisos en el que comienzan las sesiones de terminal de los desarrolladores en lugar del modo de permisos inicial integrado, o eliminar el modo automático. La extensión de VS Code lee un `defaultMode` que establece solo en planes Pro, Max y Team; [Switch permission modes](/docs/es/permission-modes#switch-permission-modes) enumera lo que lee la extensión | `permissions.defaultMode`, `permissions.disableAutoMode` |100| [Starting permission mode](/docs/es/permission-modes#which-mode-a-session-starts-in) | Elegir el modo de permisos en el que comienzan las sesiones de terminal de los desarrolladores en lugar del modo de permisos inicial integrado, o eliminar el modo automático. La extensión de VS Code lee un `defaultMode` que establece solo en planes Pro, Max y Team; [Switch permission modes](/docs/es/permission-modes#switch-permission-modes) enumera lo que lee la extensión | `permissions.defaultMode`, `permissions.disableAutoMode` |

101| [Sandboxing](/docs/es/sandboxing) | Aislamiento de sistema de archivos y red a nivel del SO con listas de permitidos de dominio | `sandbox.enabled`, `sandbox.network.allowedDomains` |101| [Sandboxing](/docs/es/sandboxing) | Aislamiento de sistema de archivos y red a nivel del SO con listas de permitidos de dominio | `sandbox.enabled`, `sandbox.network.allowedDomains` |

102| [Managed policy CLAUDE.md](/docs/es/memory#deploy-organization-wide-claude-md) | Instrucciones de toda la organización cargadas en cada sesión, no se pueden excluir | Archivo en la ruta de política administrada |102| [Managed policy CLAUDE.md](/docs/es/memory#deploy-organization-wide-claude-md) | Instrucciones de toda la organización cargadas en cada sesión, no se pueden excluir | Archivo en la ruta de política administrada |

103| [MCP server control](/docs/es/managed-mcp) | Restringir qué servidores MCP pueden agregar o conectar los usuarios, implementar un conjunto fijo, o proporcionar servidores remotos a cada usuario junto con los suyos propios | `allowedMcpServers`, `deniedMcpServers`, `allowManagedMcpServersOnly`, `managedMcpServers`, o un archivo `managed-mcp.json` implementado |103| [MCP server control](/docs/es/managed-mcp) | Restringir qué servidores MCP pueden agregar o conectar los usuarios, implementar un conjunto fijo, o proporcionar servidores remotos a cada usuario junto con los suyos propios | `allowedMcpServers`, `deniedMcpServers`, `allowManagedMcpServersOnly`, `managedMcpServers`, o un archivo `managed-mcp.json` implementado |

104| [Plugin marketplace control](/docs/es/plugin-marketplaces#managed-marketplace-restrictions) | Restringir qué fuentes de marketplace pueden agregar e instalar los usuarios, rechazar las banderas CLI que cargan plugins, agents y servidores MCP para una única ejecución, bloquear [fuentes de plugin `command`](/docs/es/plugin-marketplaces#command-sources), y crear una lista de permitidos de qué plugins de marketplaces pueden ser sugeridos | `strictKnownMarketplaces`, `blockedMarketplaces`, `disableSideloadFlags`, `disableCommandPluginSources`, `pluginSuggestionMarketplaces` |104| [Plugin marketplace control](/docs/es/plugins/org#restrict-what-users-can-install) | Restringir qué fuentes de marketplace pueden agregar e instalar los usuarios, rechazar las banderas CLI que cargan plugins, agents y servidores MCP para una única ejecución, bloquear [fuentes de plugin `command`](/docs/es/plugins/marketplace-reference#command-plugin-source), y crear una lista de permitidos de qué plugins de marketplaces pueden ser sugeridos | `strictKnownMarketplaces`, `blockedMarketplaces`, `disableSideloadFlags`, `disableCommandPluginSources`, `pluginSuggestionMarketplaces` |

105| [Customization lockdown](/docs/es/settings-reference#strictpluginonlycustomization) | Bloquear skills, agents, hooks y servidores MCP de fuentes de usuario y proyecto, para que solo provengan de plugins o configuración administrada. Bloquear skills también detiene los [skills que los desarrolladores habilitan en claude.ai](/docs/es/skills#where-synced-skills-load) de sincronizarse | `strictPluginOnlyCustomization` |105| [Customization lockdown](/docs/es/settings-reference#strictpluginonlycustomization) | Bloquear skills, agents, hooks y servidores MCP de fuentes de usuario y proyecto, para que solo provengan de plugins o configuración administrada. Bloquear skills también detiene los [skills que los desarrolladores habilitan en claude.ai](/docs/es/skills#where-synced-skills-load) de sincronizarse | `strictPluginOnlyCustomization` |

106| [Disable claude.ai sync](/docs/es/settings-reference#syncclaudeaiskills) | Evitar que Claude Code cargue los [skills](/docs/es/skills#how-synced-skills-behave) y [plugins](/docs/es/plugins-reference#synced-plugins) que los desarrolladores habilitan en claude.ai. Si desactiva Skills para su organización en claude.ai, Claude Code deja de sincronizar ambos, y en v2.1.273 o posterior también elimina los que ya sincronizó. Para detener uno u otro sin desactivar Skills, establezca su clave en `false` en la configuración administrada | `syncClaudeAiSkills`, `syncClaudeAiPlugins` |106| [Disable claude.ai sync](/docs/es/settings-reference#syncclaudeaiskills) | Evitar que Claude Code cargue los [skills](/docs/es/skills#how-synced-skills-behave) y [plugins](/docs/es/plugins/loading#synced-plugins) que los desarrolladores habilitan en claude.ai. Si desactiva Skills para su organización en claude.ai, Claude Code deja de sincronizar ambos, y en v2.1.273 o posterior también elimina los que ya sincronizó. Para detener uno u otro sin desactivar Skills, establezca su clave en `false` en la configuración administrada | `syncClaudeAiSkills`, `syncClaudeAiPlugins` |

107| [Hook restrictions](/docs/es/settings-reference#allowmanagedhooksonly) | Restringir qué hooks se ejecutan y restringir URLs de hooks HTTP; consulte [lo que se ejecuta bajo `allowManagedHooksOnly`](/docs/es/settings-reference#what-runs-under-allowmanagedhooksonly) para la lista completa de efectos | `allowManagedHooksOnly`, `allowedHttpHookUrls` |107| [Hook restrictions](/docs/es/settings-reference#allowmanagedhooksonly) | Restringir qué hooks se ejecutan y restringir URLs de hooks HTTP; consulte [lo que se ejecuta bajo `allowManagedHooksOnly`](/docs/es/settings-reference#what-runs-under-allowmanagedhooksonly) para la lista completa de efectos | `allowManagedHooksOnly`, `allowedHttpHookUrls` |

108| [Login enforcement](/docs/es/settings-reference#forceloginmethod) | Restringir el inicio de sesión a un método específico u organización de Anthropic. La restricción de método se aplica en la extensión de VS Code, Agent SDK, `claude setup-token` e `/install-github-app`, y la pantalla de inicio de sesión interactivo del terminal, a la que se accede mediante `/login` u onboarding de primera ejecución, preselecciona el método sin aplicarlo; Claude Code verifica la organización para inicios de sesión de cuenta claude.ai en el terminal, extensión de VS Code y Agent SDK, y no la verifica para inicios de sesión de Claude Console o para inicio de sesión de [gateway](/docs/es/claude-apps-gateway). Antes de v2.1.212, solo los inicios de sesión del terminal aplicaban cualquiera de las claves. Cuando se establece, las sesiones autenticadas por `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN` o `apiKeyHelper` se bloquean al inicio; las sesiones del proveedor de nube no se ven afectadas | `forceLoginMethod`, `forceLoginOrgUUID` |108| [Login enforcement](/docs/es/settings-reference#forceloginmethod) | Restringir el inicio de sesión a un método específico u organización de Anthropic. La restricción de método se aplica en la extensión de VS Code, Agent SDK, `claude setup-token` e `/install-github-app`, y la pantalla de inicio de sesión interactivo del terminal, a la que se accede mediante `/login` u onboarding de primera ejecución, preselecciona el método sin aplicarlo; Claude Code verifica la organización para inicios de sesión de cuenta claude.ai en el terminal, extensión de VS Code y Agent SDK, y no la verifica para inicios de sesión de Claude Console o para inicio de sesión de [gateway](/docs/es/claude-apps-gateway). Antes de v2.1.212, solo los inicios de sesión del terminal aplicaban cualquiera de las claves. Cuando se establece, las sesiones autenticadas por `ANTHROPIC_API_KEY`, `ANTHROPIC_AUTH_TOKEN` o `apiKeyHelper` se bloquean al inicio; las sesiones del proveedor de nube no se ven afectadas | `forceLoginMethod`, `forceLoginOrgUUID` |

109| [Disable agent view](/docs/es/agent-view#how-background-sessions-are-hosted) | Desactivar `claude agents`, `--bg`, `/background` y el supervisor bajo demanda | `disableAgentView` |109| [Disable agent view](/docs/es/agent-view#how-background-sessions-are-hosted) | Desactivar `claude agents`, `--bg`, `/background` y el supervisor bajo demanda | `disableAgentView` |

Details

281 Modo omitir permisos (`bypassPermissions`)281 Modo omitir permisos (`bypassPermissions`)

282</h4>282</h4>

283 283 

284Aprueba automáticamente usos de herramientas sin solicitar confirmación, excepto en los casos enumerados en la advertencia a continuación. Los hooks aún se ejecutan y pueden bloquear operaciones si es necesario.284Aprueba automáticamente usos de herramientas sin solicitar confirmación, excepto en los casos enumerados en la advertencia a continuación. Los hooks aún se ejecutan y pueden bloquear operaciones si es necesario. En Linux y macOS, Claude Code se niega a iniciarse en este modo como root o bajo `sudo` fuera de una [zona de pruebas reconocida](/docs/es/permission-modes#skip-all-checks-with-bypasspermissions-mode), y la consulta falla antes del primer turno.

285 285 

286<Warning>286<Warning>

287 Úselo con extrema precaución. Claude tiene acceso completo al sistema en este modo. Úselo solo en entornos controlados donde confíe en todas las operaciones posibles.287 Úselo con extrema precaución. Claude tiene acceso completo al sistema en este modo. Úselo solo en entornos controlados donde confíe en todas las operaciones posibles.

Details

13* **Hooks**: controladores de eventos que responden al uso de herramientas y otros eventos13* **Hooks**: controladores de eventos que responden al uso de herramientas y otros eventos

14* **MCP servers**: integraciones de herramientas externas a través del Model Context Protocol14* **MCP servers**: integraciones de herramientas externas a través del Model Context Protocol

15 15 

16Para obtener información completa sobre la estructura de plugins y cómo crear plugins, consulte [Plugins](/docs/es/plugins).16Para obtener información completa sobre la estructura de plugins y cómo crear plugins, consulte [Plugins](/docs/es/plugins/overview).

17 17 

18<h2 id="loading-plugins">18<h2 id="loading-plugins">

19 Cargando plugins19 Cargando plugins


21 21 

22Cargue plugins proporcionando sus rutas del sistema de archivos local en su configuración de opciones. El campo `type` debe ser `"local"`, el único valor que acepta el SDK. El SDK admite cargar múltiples plugins desde diferentes ubicaciones.22Cargue plugins proporcionando sus rutas del sistema de archivos local en su configuración de opciones. El campo `type` debe ser `"local"`, el único valor que acepta el SDK. El SDK admite cargar múltiples plugins desde diferentes ubicaciones.

23 23 

24Para usar un plugin distribuido a través de un [marketplace](/docs/es/plugin-marketplaces) o repositorio remoto, descárguelo primero y proporcione la ruta del directorio local. Para el diseño del directorio que necesita un plugin, consulte la [referencia de estructura de plugin](#plugin-structure-reference) a continuación.24Para usar un plugin distribuido a través de un [marketplace](/docs/es/plugins/overview) o repositorio remoto, descárguelo primero y proporcione la ruta del directorio local. Para el diseño del directorio que necesita un plugin, consulte la [referencia de estructura de plugin](#plugin-structure-reference) a continuación.

25 25 

26<CodeGroup>26<CodeGroup>

27 ```typescript TypeScript theme={null}27 ```typescript TypeScript theme={null}


138 ```138 ```

139</CodeGroup>139</CodeGroup>

140 140 

141<h2 id="using-plugin-skills">141<h2 id="use-plugin-skills">

142 Usando skills de plugins142 Usar skills de plugins

143</h2>143</h2>

144 144 

145Los skills de los plugins se espacian automáticamente con el nombre del plugin para evitar conflictos. Para invocar uno directamente, envíe `/plugin-name:skill-name` como el prompt.145Los skills de los plugins se espacian automáticamente con el nombre del plugin para evitar conflictos. Para invocar uno directamente, envíe `/plugin-name:skill-name` como el prompt.


352 Ver también352 Ver también

353</h2>353</h2>

354 354 

355* [Plugins](/docs/es/plugins) - Guía completa de desarrollo de plugins355* [Plugins](/docs/es/plugins/overview) - Guía completa de desarrollo de plugins

356* [Plugins reference](/docs/es/plugins-reference) - Especificaciones técnicas356* [Plugins reference](/docs/es/plugins/manifest-reference) - Especificaciones técnicas

357* [Commands](/docs/es/agent-sdk/skills#dispatch-commands-by-name) - Despachando comandos en el SDK357* [Commands](/docs/es/agent-sdk/skills#dispatch-commands-by-name) - Despachando comandos en el SDK

358* [Subagents](/docs/es/agent-sdk/subagents) - Trabajando con agentes especializados358* [Subagents](/docs/es/agent-sdk/subagents) - Trabajando con agentes especializados

359* [Skills](/docs/es/agent-sdk/skills) - Usando Agent Skills359* [Skills](/docs/es/agent-sdk/skills) - Usando Agent Skills

Details

917| `cli_path` | `str \| Path \| None` | `None` | Ruta personalizada al ejecutable CLI de Claude Code |917| `cli_path` | `str \| Path \| None` | `None` | Ruta personalizada al ejecutable CLI de Claude Code |

918| `settings` | `str \| None` | `None` | Ruta a un archivo de configuración o una cadena JSON en línea |918| `settings` | `str \| None` | `None` | Ruta a un archivo de configuración o una cadena JSON en línea |

919| `add_dirs` | `list[str \| Path]` | `[]` | Directorios adicionales a los que Claude puede acceder. El SDK pasa cada entrada a Claude Code como `--add-dir`, por lo que con la fuente de configuración `project` Claude Code también [carga las skills, comandos y subagentes del directorio](/docs/es/permissions#additional-directories-grant-file-access-not-configuration) |919| `add_dirs` | `list[str \| Path]` | `[]` | Directorios adicionales a los que Claude puede acceder. El SDK pasa cada entrada a Claude Code como `--add-dir`, por lo que con la fuente de configuración `project` Claude Code también [carga las skills, comandos y subagentes del directorio](/docs/es/permissions#additional-directories-grant-file-access-not-configuration) |

920| `env` | `dict[str, str]` | `{}` | Variables de entorno fusionadas en la parte superior del entorno de proceso heredado. Consulte [Variables de entorno](/docs/es/env-vars) para variables que lee la CLI subyacente, y [Manejar respuestas API lentas o estancadas](#handle-slow-or-stalled-api-responses) para variables relacionadas con tiempos de espera |920| `env` | `dict[str, str]` | `{}` | Variables de entorno fusionadas en la parte superior del entorno de proceso heredado. Consulte [Variables de entorno](/docs/es/env-vars) para variables que lee la CLI subyacente, y [Manejar respuestas API lentas o estancadas](#handle-slow-or-stalled-api-responses) para variables relacionadas con tiempos de espera. Establezca `CLAUDE_AGENT_SDK_CLIENT_APP` para identificar su aplicación en el encabezado User-Agent |

921| `extra_args` | `dict[str, str \| None]` | `{}` | Argumentos CLI adicionales para pasar directamente a la CLI |921| `extra_args` | `dict[str, str \| None]` | `{}` | Argumentos CLI adicionales para pasar directamente a la CLI |

922| `max_buffer_size` | `int \| None` | `None` | Máximo de bytes al almacenar en búfer la salida estándar de CLI |922| `max_buffer_size` | `int \| None` | `None` | Máximo de bytes al almacenar en búfer la salida estándar de CLI |

923| `debug_stderr` | `Any` | `sys.stderr` | *Obsoleto* - Objeto similar a un archivo para salida de depuración. Utilice la devolución de llamada `stderr` en su lugar |923| `debug_stderr` | `Any` | `sys.stderr` | *Obsoleto* - El SDK ignora este valor. Utilice la devolución de llamada `stderr` para salida de stderr de CLI |

924| `stderr` | `Callable[[str], None] \| None` | `None` | Función de devolución de llamada para salida de stderr desde CLI |924| `stderr` | `Callable[[str], None] \| None` | `None` | Función de devolución de llamada para salida de stderr desde CLI |

925| `can_use_tool` | [`CanUseTool`](#canusetool) ` \| None` | `None` | Devolución de llamada de permiso de herramienta, invocada solo cuando el [flujo de permiso](/docs/es/agent-sdk/permissions#how-permissions-are-evaluated) se transfiere a un indicador. No se invoca para llamadas aprobadas automáticamente por `allowed_tools`, reglas de permiso, o `permission_mode`. Una regla de permiso no aprueba previamente las [acciones que ningún modo aprueba automáticamente](/docs/es/permission-modes#actions-no-mode-auto-approves). Consulte [`CanUseTool`](#canusetool) para detalles |925| `can_use_tool` | [`CanUseTool`](#canusetool) ` \| None` | `None` | Devolución de llamada de permiso de herramienta, invocada solo cuando el [flujo de permiso](/docs/es/agent-sdk/permissions#how-permissions-are-evaluated) se transfiere a un indicador. No se invoca para llamadas aprobadas automáticamente por `allowed_tools`, reglas de permiso, o `permission_mode`. Una regla de permiso no aprueba previamente las [acciones que ningún modo aprueba automáticamente](/docs/es/permission-modes#actions-no-mode-auto-approves). Consulte [`CanUseTool`](#canusetool) para detalles |

926| `hooks` | `dict[HookEvent, list[HookMatcher]] \| None` | `None` | Configuraciones de hooks para interceptar eventos |926| `hooks` | `dict[HookEvent, list[HookMatcher]] \| None` | `None` | Configuraciones de hooks para interceptar eventos |

927| `user` | `str \| None` | `None` | Identificador de usuario |927| `user` | `str \| None` | `None` | En plataformas POSIX, la cuenta de usuario del SO bajo la cual se ejecuta el subproceso de Claude Code. Claude Code mantiene el entorno del proceso padre, incluido `HOME`, y se ejecuta en `cwd` |

928| `include_partial_messages` | `bool` | `False` | Incluir eventos de transmisión de mensajes parciales. Cuando está habilitado, se producen mensajes [`StreamEvent`](#streamevent) |928| `include_partial_messages` | `bool` | `False` | Incluir eventos de transmisión de mensajes parciales. Cuando está habilitado, se producen mensajes [`StreamEvent`](#streamevent) |

929| `include_hook_events` | `bool` | `False` | Incluir eventos del ciclo de vida de hooks en el flujo de mensajes como objetos `HookEventMessage` |929| `include_hook_events` | `bool` | `False` | Incluir eventos del ciclo de vida de hooks en el flujo de mensajes como objetos `HookEventMessage` |

930| `forward_subagent_text` | `bool` | `False` | Reenviar bloques de texto y pensamiento de subagentes en el flujo de mensajes. Sin esta opción, Claude Code emite bloques `tool_use` y `tool_result` de subagentes pero no texto ni pensamiento. Requiere Python Agent SDK 0.2.140 o posterior |930| `forward_subagent_text` | `bool` | `False` | Reenviar bloques de texto y pensamiento de subagentes en el flujo de mensajes. Sin esta opción, Claude Code emite bloques `tool_use` y `tool_result` de subagentes pero no texto ni pensamiento. Requiere Python Agent SDK 0.2.140 o posterior |

Details

275Esto es lo que hace diferente al SDK de Agent: Claude ejecuta herramientas directamente en lugar de pedirle que las implemente.275Esto es lo que hace diferente al SDK de Agent: Claude ejecuta herramientas directamente en lugar de pedirle que las implemente.

276 276 

277<Note>277<Note>

278 Si ve un error de autenticación como `Not logged in` o `Invalid API key`, asegúrese de haber establecido la variable de entorno `ANTHROPIC_API_KEY` en el shell donde ejecuta su agente. El SDK no carga archivos `.env` automáticamente. Consulte la [guía completa de solución de problemas](/docs/es/troubleshooting) para obtener más ayuda.278 Si ve un error de autenticación como `Not logged in` o `Invalid API key`, asegúrese de haber establecido la variable de entorno `ANTHROPIC_API_KEY` en el shell donde ejecuta su agente. El SDK no carga archivos `.env` automáticamente.

279 

280 Para conocer las causas y soluciones detrás de estos y otros errores de autenticación, consulte [Errores de autenticación](/docs/es/errors#authentication-errors) en la referencia de errores.

279</Note>281</Note>

280 282 

281<h3 id="try-other-prompts">283<h3 id="try-other-prompts">


385* **[Servidores MCP](/docs/es/agent-sdk/mcp)**: conéctese a bases de datos, navegadores, API y otros sistemas externos387* **[Servidores MCP](/docs/es/agent-sdk/mcp)**: conéctese a bases de datos, navegadores, API y otros sistemas externos

386* **[Hosting](/docs/es/agent-sdk/hosting)**: implemente agentes en Docker, nube e CI/CD388* **[Hosting](/docs/es/agent-sdk/hosting)**: implemente agentes en Docker, nube e CI/CD

387* **[Agentes de ejemplo](https://github.com/anthropics/claude-agent-sdk-demos)**: vea ejemplos completos: asistente de correo electrónico, agente de investigación y más389* **[Agentes de ejemplo](https://github.com/anthropics/claude-agent-sdk-demos)**: vea ejemplos completos: asistente de correo electrónico, agente de investigación y más

388* **[Solución de problemas](/docs/es/agent-sdk/troubleshooting)**: corrija errores del Agent SDK por el mensaje exacto que ve390* **[Solución de problemas](/docs/es/agent-sdk/troubleshooting)**: corrija errores cuando la CLI no se inicia o se cierra, o un resultado llega sin salida estructurada

Details

4 4 

5# Solucionar problemas del Agent SDK5# Solucionar problemas del Agent SDK

6 6 

7> Corrija los errores del Agent SDK por el mensaje exacto que ve, con la causa y la solución para cada error en los SDK de TypeScript y Python.7> Corrija los errores del Agent SDK cuando la CLI de Claude Code no se inicia, el proceso de CLI se cierra o llega un resultado exitoso sin salida estructurada.

8 8 

9Las entradas en esta página están codificadas según el error que ve. Cada una nombra la causa y qué hacer.9Esta página cubre errores del Agent SDK en el inicio de la CLI, la salida del proceso de CLI y las salidas estructuradas. Las entradas en esta página están codificadas según el error que ve. Cada entrada nombra la causa y qué hacer.

10 

11Los síntomas vinculados a una característica, como un hook que no se dispara o una skill que no se está utilizando, tienen una sección de solución de problemas en la página de esa característica. La tabla nombra la sección o página que cubre cada síntoma:

12 

13| Síntoma | Ir a |

14| :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------ |

15| Skills no encontradas, una skill no se está utilizando, error `Invalid skill name` | [Solución de problemas de skills](/docs/es/agent-sdk/skills#troubleshooting) |

16| El servidor MCP muestra estado `failed`, las herramientas no se están llamando, tiempos de espera de conexión, salida de herramienta que excede el máximo de tokens permitidos | [Solución de problemas de MCP](/docs/es/agent-sdk/mcp#troubleshooting) |

17| Plugin no se carga, las skills del plugin no aparecen | [Solución de problemas de plugins](/docs/es/agent-sdk/plugins#troubleshooting) |

18| Claude no delega a subagentes, los agentes basados en sistema de archivos no se cargan | [Solución de problemas de subagentes](/docs/es/agent-sdk/subagents#troubleshooting) |

19| Las opciones de checkpointing no se reconocen, mensajes de usuario sin UUID, `No file checkpoint found`, `File rewinding is not enabled`, `ProcessTransport is not ready for writing` | [Solución de problemas de checkpointing de archivos](/docs/es/agent-sdk/file-checkpointing#troubleshooting) |

20| Hook no se dispara, el matcher no filtra como se esperaba, tiempo de espera del hook, herramienta bloqueada inesperadamente, entrada modificada no aplicada, hooks de sesión no disponibles en Python, solicitudes de permiso de subagente multiplicándose, bucles de hook recursivos con subagentes, `systemMessage` no aparece en la salida | [Corregir problemas comunes](/docs/es/agent-sdk/hooks#fix-common-issues) en la página de hooks |

21| Un agente que funciona en su máquina falla en un servicio implementado o contenedor | [Solucionar problemas de implementación](/docs/es/agent-sdk/hosting#troubleshoot-deployment-failures) |

22| `Not logged in`, `Invalid API key`, `API Error`, `429`, `There's an issue with the selected model` | [Referencia de errores](/docs/es/errors#find-your-error) |

23| `CLINotFoundError`, `CLIConnectionError`, `ProcessError`, `Claude Code process exited with code N`, `Claude Code returned an error result`, `structured_output` es `None` | [Inicio de CLI](#cli-startup), [Salida del proceso de CLI](#cli-process-exit) y [Salidas estructuradas](#structured-outputs) en esta página |

10 24 

11<h2 id="cli-startup">25<h2 id="cli-startup">

12 Inicio de CLI26 Inicio de CLI

agent-teams.md +1 −1

Details

119 119 

120El valor predeterminado es `"in-process"`. Configure `"auto"` para habilitar paneles divididos cuando ya esté ejecutándose dentro de una sesión tmux, o cuando su terminal sea iTerm2 con la CLI `it2` instalada, retrocediendo a en proceso de lo contrario. La configuración `"tmux"` habilita el modo de panel dividido y detecta automáticamente si usar tmux o iTerm2 según su terminal.120El valor predeterminado es `"in-process"`. Configure `"auto"` para habilitar paneles divididos cuando ya esté ejecutándose dentro de una sesión tmux, o cuando su terminal sea iTerm2 con la CLI `it2` instalada, retrocediendo a en proceso de lo contrario. La configuración `"tmux"` habilita el modo de panel dividido y detecta automáticamente si usar tmux o iTerm2 según su terminal.

121 121 

122A partir de v2.1.186, configure `"iterm2"` para usar explícitamente paneles divididos nativos de iTerm2. Este modo requiere la [CLI `it2`](https://github.com/mkusaka/it2) y muestra un error con el comando de instalación si falta `it2`. El indicador de configuración que ofrece instalar `it2` o cambiar a tmux aparece bajo `"auto"` o `"tmux"` cuando su terminal es iTerm2 y tmux está disponible como alternativa.122Configure `"iterm2"` para usar explícitamente paneles divididos nativos de iTerm2. Este modo requiere la [CLI `it2`](https://github.com/mkusaka/it2) y muestra un error con el comando de instalación si falta `it2`. El indicador de configuración que ofrece instalar `it2` o cambiar a tmux aparece bajo `"auto"` o `"tmux"` cuando su terminal es iTerm2 y tmux está disponible como alternativa.

123 123 

124Para anular el valor predeterminado, configure [`teammateMode`](/docs/es/settings-reference#teammatemode) en `~/.claude/settings.json`:124Para anular el valor predeterminado, configure [`teammateMode`](/docs/es/settings-reference#teammatemode) en `~/.claude/settings.json`:

125 125 

agent-view.md +2 −2

Details

724| :----------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |724| :----------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

725| [`--settings <file-or-json>`](/docs/es/settings) | Anule la configuración para la vista de agentes y las sesiones distribuidas |725| [`--settings <file-or-json>`](/docs/es/settings) | Anule la configuración para la vista de agentes y las sesiones distribuidas |

726| [`--add-dir <path>`](/docs/es/permissions#additional-directories-grant-file-access-not-configuration) | Otorgue acceso a archivos a un directorio adicional |726| [`--add-dir <path>`](/docs/es/permissions#additional-directories-grant-file-access-not-configuration) | Otorgue acceso a archivos a un directorio adicional |

727| [`--plugin-dir <path>`](/docs/es/plugins) | Cargue un plugin desde un directorio local |727| [`--plugin-dir <path>`](/docs/es/plugins/create#load-a-directory-or-archive-for-one-session) | Cargue un plugin desde un directorio local |

728| [`--mcp-config <file-or-json>`](/docs/es/mcp) | Cargue servidores MCP desde un archivo de configuración o cadena JSON |728| [`--mcp-config <file-or-json>`](/docs/es/mcp) | Cargue servidores MCP desde un archivo de configuración o cadena JSON |

729| `--strict-mcp-config` | Use solo los servidores MCP de `--mcp-config`, ignorando otra configuración de MCP. Consulte [Control exclusivo con managed-mcp.json](/docs/es/managed-mcp#exclusive-control-with-managed-mcp-json) para ver qué hace la bandera bajo un archivo MCP administrado |729| `--strict-mcp-config` | Use solo los servidores MCP de `--mcp-config`, ignorando otra configuración de MCP. Consulte [Control exclusivo con managed-mcp.json](/docs/es/managed-mcp#exclusive-control-with-managed-mcp-json) para ver qué hace la bandera bajo un archivo MCP administrado |

730 730 


1062| v2.1.257 | Un prompt guardado con `Ctrl+S` dentro de una sesión de fondo abierta [se mantiene con la sesión](#what-persists-across-restarts), por lo que `Ctrl+S` lo restaura después de que el proceso de la sesión se detiene e inicia nuevamente. Antes de esta versión, el almacenamiento vivía solo en el proceso en ejecución y se perdía cuando la sesión se quedaba inactiva el tiempo suficiente para que su proceso se detuviera, o cuando se detenía y luego se reabriera. |1062| v2.1.257 | Un prompt guardado con `Ctrl+S` dentro de una sesión de fondo abierta [se mantiene con la sesión](#what-persists-across-restarts), por lo que `Ctrl+S` lo restaura después de que el proceso de la sesión se detiene e inicia nuevamente. Antes de esta versión, el almacenamiento vivía solo en el proceso en ejecución y se perdía cuando la sesión se quedaba inactiva el tiempo suficiente para que su proceso se detuviera, o cuando se detenía y luego se reabriera. |

1063| v2.1.251 | En una sesión de fondo que no ha [entrado en un worktree](#how-file-edits-are-isolated), Claude y los subagentes que genera pueden editar archivos dentro de un worktree de git vinculado. |1063| v2.1.251 | En una sesión de fondo que no ha [entrado en un worktree](#how-file-edits-are-isolated), Claude y los subagentes que genera pueden editar archivos dentro de un worktree de git vinculado. |

1064| v2.1.251 | Claude Code reenvía una puerta de enlace de proveedor de nube exportada en el shell desde el que distribuye, como `ANTHROPIC_VERTEX_BASE_URL` o `ANTHROPIC_BEDROCK_BASE_URL` con su bandera de bypass de autenticación, al [worker de la sesión](#llm-gateway) bajo las mismas condiciones que `ANTHROPIC_BASE_URL`. Antes de esta versión, si enviaba al segundo plano o distribuía desde un shell autenticado solo a través de tal puerta de enlace, cada solicitud que la sesión realizaba fallaba, porque el punto final y la bandera se eliminaban de su entorno. |1064| v2.1.251 | Claude Code reenvía una puerta de enlace de proveedor de nube exportada en el shell desde el que distribuye, como `ANTHROPIC_VERTEX_BASE_URL` o `ANTHROPIC_BEDROCK_BASE_URL` con su bandera de bypass de autenticación, al [worker de la sesión](#llm-gateway) bajo las mismas condiciones que `ANTHROPIC_BASE_URL`. Antes de esta versión, si enviaba al segundo plano o distribuía desde un shell autenticado solo a través de tal puerta de enlace, cada solicitud que la sesión realizaba fallaba, porque el punto final y la bandera se eliminaban de su entorno. |

1065| v2.1.251 | Cuando una sesión de fondo se inicia mientras otro proceso de Claude Code está actualizando un [marketplace de plugins](/docs/es/plugin-marketplaces), como una sesión hermana ejecutando la [actualización automática del marketplace](/docs/es/discover-plugins#configure-auto-updates), Claude Code mantiene los plugins de ese marketplace disponibles. Antes de esta versión, tal sesión podría iniciarse sin ninguna de las skills, agentes, hooks y servidores MCP de ese marketplace y permanecer así durante toda su ejecución. |1065| v2.1.251 | Cuando una sesión de fondo se inicia mientras otro proceso de Claude Code está actualizando un [marketplace de plugins](/docs/es/plugins/overview), como una sesión hermana ejecutando la [actualización automática del marketplace](/docs/es/plugins/install#keep-plugins-updated), Claude Code mantiene los plugins de ese marketplace disponibles. Antes de esta versión, tal sesión podría iniciarse sin ninguna de las skills, agentes, hooks y servidores MCP de ese marketplace y permanecer así durante toda su ejecución. |

1066| v2.1.248 | `Shift+Enter` en la [entrada de distribución](#keyboard-shortcuts) inserta una nueva línea, coincidiendo con el prompt principal, y `Ctrl+Enter` distribuye y se adjunta inmediatamente en terminales donde la superposición `?` enumera `ctrl+enter to start and open`. Antes de esta versión, `Shift+Enter` distribuía y se adjuntaba. |1066| v2.1.248 | `Shift+Enter` en la [entrada de distribución](#keyboard-shortcuts) inserta una nueva línea, coincidiendo con el prompt principal, y `Ctrl+Enter` distribuye y se adjunta inmediatamente en terminales donde la superposición `?` enumera `ctrl+enter to start and open`. Antes de esta versión, `Shift+Enter` distribuía y se adjuntaba. |

1067| v2.1.248 | [Eliminar una sesión](#what-deleting-a-session-removes) tiene éxito cuando los commits del worktree ya están en la copia local de la rama predeterminada de su remoto `origin` y su checkout principal tiene esa rama verificada; antes de esta versión, la eliminación se rechazaba con `has commits that are not pushed anywhere`. |1067| v2.1.248 | [Eliminar una sesión](#what-deleting-a-session-removes) tiene éxito cuando los commits del worktree ya están en la copia local de la rama predeterminada de su remoto `origin` y su checkout principal tiene esa rama verificada; antes de esta versión, la eliminación se rechazaba con `has commits that are not pushed anywhere`. |

1068| v2.1.248 | Una sesión enviada al segundo plano con `←` o `/background` mantiene el [`git worktree lock`](/docs/es/worktrees#clean-up-subagent-and-background-session-worktrees) en su worktree mientras se ejecuta; antes de esta versión, enviar al segundo plano liberaba el bloqueo, y la limpieza o `git worktree remove` podría eliminar el worktree bajo la sesión en ejecución. |1068| v2.1.248 | Una sesión enviada al segundo plano con `←` o `/background` mantiene el [`git worktree lock`](/docs/es/worktrees#clean-up-subagent-and-background-session-worktrees) en su worktree mientras se ejecuta; antes de esta versión, enviar al segundo plano liberaba el bloqueo, y la limpieza o `git worktree remove` podría eliminar el worktree bajo la sesión en ejecución. |

agents.md +1 −1

Details

22 22 

23* [Worktrees](/docs/es/worktrees) le dan a cada sesión un checkout de git separado, por lo que las sesiones paralelas nunca editan los mismos archivos. Úselos para sesiones que ejecuta usted mismo. Una sesión que envía desde la vista de agentes [se mueve a su propio worktree antes de editar archivos](/docs/es/agent-view#how-file-edits-are-isolated), y los subagentes que genera pueden obtener uno también.23* [Worktrees](/docs/es/worktrees) le dan a cada sesión un checkout de git separado, por lo que las sesiones paralelas nunca editan los mismos archivos. Úselos para sesiones que ejecuta usted mismo. Una sesión que envía desde la vista de agentes [se mueve a su propio worktree antes de editar archivos](/docs/es/agent-view#how-file-edits-are-isolated), y los subagentes que genera pueden obtener uno también.

24* [Mensajería entre sesiones](/docs/es/cross-session-messaging) permite que Claude enumere y envíe mensajes a sus otras sesiones de Claude Code en esta máquina, en otra máquina, o [en la nube](/docs/es/claude-code-on-the-web), por lo que las sesiones que ejecuta usted mismo pueden pasar hallazgos y estado entre sí.24* [Mensajería entre sesiones](/docs/es/cross-session-messaging) permite que Claude enumere y envíe mensajes a sus otras sesiones de Claude Code en esta máquina, en otra máquina, o [en la nube](/docs/es/claude-code-on-the-web), por lo que las sesiones que ejecuta usted mismo pueden pasar hallazgos y estado entre sí.

25* [`/batch`](/docs/es/commands) es una [skill](/docs/es/skills) que hace que Claude divida un cambio grande en 5 a 30 subagentes aislados en worktree que cada uno abre una solicitud de extracción. Es un uso empaquetado de subagentes y worktrees, no un estilo de coordinación separado.25* [`/batch`](/docs/es/commands) es una [skill](/docs/es/skills) que hace que Claude divida un cambio grande en 5 a 30 subagentes aislados en worktree. Es un uso empaquetado de subagentes y worktrees, no un estilo de coordinación separado.

26 26 

27Algunas otras características ejecutan Claude sin que usted dirija cada paso, pero resuelven un problema diferente al de dividir el trabajo entre agentes:27Algunas otras características ejecutan Claude sin que usted dirija cada paso, pero resuelven un problema diferente al de dividir el trabajo entre agentes:

28 28 

Details

518 Usar el punto final de Mantle518 Usar el punto final de Mantle

519</h2>519</h2>

520 520 

521Mantle es un punto final de Amazon Bedrock que sirve modelos de Claude a través de la forma de API nativa de Anthropic en lugar de la API de Invoke de Amazon Bedrock. Utiliza las mismas [credenciales de AWS](#2-configure-aws-credentials), [permisos de IAM](#iam-configuration), y [configuración de `awsAuthRefresh`](#advanced-credential-configuration).521Mantle es un punto final de Amazon Bedrock que sirve modelos de Claude a través de la forma de API nativa de Anthropic en lugar de la API de Invoke de Amazon Bedrock. Utiliza las mismas [credenciales de AWS](#2-configure-aws-credentials) y [configuración de `awsAuthRefresh`](#advanced-credential-configuration).

522 

523Mantle tiene sus propias acciones de IAM bajo el prefijo `bedrock-mantle:`, por lo que las acciones `bedrock:` en [configuración de IAM](#iam-configuration) no la cubren. Otorgue a su identidad de IAM `bedrock-mantle:CreateInference` para inferencia y `bedrock-mantle:CountTokens` para conteo de tokens. Consulte [Realizar solicitudes de inferencia](https://docs.aws.amazon.com/bedrock/latest/userguide/inference.html) y [Contar tokens](https://docs.aws.amazon.com/bedrock/latest/userguide/count-tokens.html) en la documentación de AWS, y la [referencia de autorización de servicio](https://docs.aws.amazon.com/service-authorization/latest/reference/list_amazonbedrockpoweredbyawsmantle.html) para cada acción de Mantle.

522 524 

523<h3 id="enable-mantle">525<h3 id="enable-mantle">

524 Habilitar Mantle526 Habilitar Mantle


670 672 

671Si `/status` no muestra `Amazon Bedrock (Mantle)` después de establecer `CLAUDE_CODE_USE_MANTLE`, la variable no está llegando al proceso. Confirme que se exporta en el shell donde lanzó `claude`, o establézcala en el bloque `env` de su [archivo de configuración](/docs/es/settings).673Si `/status` no muestra `Amazon Bedrock (Mantle)` después de establecer `CLAUDE_CODE_USE_MANTLE`, la variable no está llegando al proceso. Confirme que se exporta en el shell donde lanzó `claude`, o establézcala en el bloque `env` de su [archivo de configuración](/docs/es/settings).

672 674 

673Un `403` del punto final de Mantle con credenciales válidas significa que su cuenta de AWS no ha sido autorizada para acceder al modelo que solicitó. Póngase en contacto con su equipo de cuenta de AWS para solicitar acceso.675Lo que un `403` del punto final de Mantle significa depende de si el error nombra una acción de IAM:

676 

677* Si el error nombra una acción `bedrock-mantle:`, otorgue esa acción a su identidad de IAM.

678* Si el error no nombra ninguna acción y sus credenciales son válidas, su cuenta de AWS no ha sido autorizada para acceder al modelo que solicitó. Póngase en contacto con su equipo de cuenta de AWS para solicitar acceso.

674 679 

675Un `400` que nombra el ID del modelo significa que ese modelo no se sirve en Mantle. Mantle tiene su propio catálogo de modelos separado del catálogo estándar de Amazon Bedrock, por lo que los IDs de perfil de inferencia como `us.anthropic.claude-sonnet-4-6` no funcionarán. Utilice un ID de formato de Mantle, o habilite [ambos puntos finales](#run-mantle-alongside-the-invoke-api) para que Claude Code enrute cada solicitud al punto final donde el modelo está disponible.680Un `400` que nombra el ID del modelo significa que ese modelo no se sirve en Mantle. Mantle tiene su propio catálogo de modelos separado del catálogo estándar de Amazon Bedrock, por lo que los IDs de perfil de inferencia como `us.anthropic.claude-sonnet-4-6` no funcionarán. Utilice un ID de formato de Mantle, o habilite [ambos puntos finales](#run-mantle-alongside-the-invoke-api) para que Claude Code enrute cada solicitud al punto final donde el modelo está disponible.

676 681 

best-practices.md +49 −49

Details

154***154***

155 155 

156<h2 id="configure-your-environment">156<h2 id="configure-your-environment">

157 Configurar su entorno157 Configura tu entorno

158</h2>158</h2>

159 159 

160Algunos pasos de configuración hacen que Claude Code sea significativamente más efectivo en todas sus sesiones. Para una descripción general completa de las características de extensión y cuándo usar cada una, consulte [Extender Claude Code](/docs/es/features-overview).160Algunos pasos de configuración hacen que Claude Code sea significativamente más efectivo en todas tus sesiones. Para una descripción completa de las características de la extensión y cuándo usar cada una, consulta [Extend Claude Code](/docs/es/features-overview).

161 161 

162<h3 id="write-an-effective-claude-md">162<h3 id="write-an-effective-claude-md">

163 Escriba un CLAUDE.md efectivo163 Escribe un CLAUDE.md efectivo

164</h3>164</h3>

165 165 

166<Tip>166<Tip>

167 Ejecute `/init` para generar un archivo CLAUDE.md inicial basado en la estructura de su proyecto actual, luego refine con el tiempo.167 Ejecuta `/init` para generar un archivo CLAUDE.md inicial basado en la estructura actual de tu proyecto, luego refina con el tiempo.

168</Tip>168</Tip>

169 169 

170CLAUDE.md es un archivo especial que Claude lee al inicio de cada conversación. Incluya comandos Bash, estilo de código y reglas de flujo de trabajo. Esto le da a Claude contexto persistente que no puede inferir solo del código.170CLAUDE.md es un archivo especial que Claude lee al inicio de cada conversación. Incluye comandos Bash, estilo de código y reglas de flujo de trabajo. Esto le da a Claude un contexto persistente que no puede inferir solo del código.

171 171 

172No hay un formato requerido para archivos CLAUDE.md, pero manténgalo corto y legible por humanos. Por ejemplo:172No hay un formato requerido para los archivos CLAUDE.md, pero mantenlos cortos y legibles para humanos. Por ejemplo:

173 173 

174```markdown CLAUDE.md theme={null}174```markdown CLAUDE.md theme={null}

175# Code style175# Code style


181- Prefer running single tests, and not the whole test suite, for performance181- Prefer running single tests, and not the whole test suite, for performance

182```182```

183 183 

184Ejecute `/context` para confirmar que Claude cargó el archivo. CLAUDE.md se carga cada sesión, así que solo incluya cosas que se apliquen ampliamente. Para conocimiento de dominio o flujos de trabajo que solo son relevantes a veces, use [skills](/docs/es/skills) en su lugar. Claude los carga bajo demanda sin inflar cada conversación.184Ejecuta `/context` para confirmar que Claude cargó el archivo. CLAUDE.md se carga en cada sesión, así que solo incluye cosas que se apliquen ampliamente. Para conocimiento de dominio o flujos de trabajo que solo son relevantes a veces, usa [skills](/docs/es/skills) en su lugar. Claude los carga bajo demanda sin saturar cada conversación.

185 185 

186Manténgalo conciso. Para cada línea, pregúntese: *"¿Causaría que Claude cometiera errores si elimino esto?"* Si no, elimínelo. Los archivos CLAUDE.md inflados hacen que Claude ignore sus instrucciones reales.186Mantenlo conciso. Para cada línea, pregúntate: *"¿Causaría que Claude cometa errores si elimino esto?"* Si no, elimínalo. Los archivos CLAUDE.md inflados hacen que Claude ignore tus instrucciones reales.

187 187 

188| ✅ Incluir | ❌ Excluir |188| ✅ Incluir | ❌ Excluir |

189| -------------------------------------------------------------------------- | ---------------------------------------------------------------- |189| -------------------------------------------------------------------------- | ---------------------------------------------------------------- |

190| Comandos Bash que Claude no puede adivinar | Cualquier cosa que Claude pueda descubrir leyendo código |190| Comandos Bash que Claude no puede adivinar | Cualquier cosa que Claude pueda descubrir leyendo código |

191| Reglas de estilo de código que difieren de los valores predeterminados | Convenciones de lenguaje estándar que Claude ya conoce |191| Reglas de estilo de código que difieren de los valores predeterminados | Convenciones de lenguaje estándar que Claude ya conoce |

192| Instrucciones de prueba y ejecutores de prueba preferidos | Documentación detallada de API (enlace a documentos en su lugar) |192| Instrucciones de prueba y ejecutores de prueba preferidos | Documentación detallada de API (enlaza a documentos en su lugar) |

193| Etiqueta del repositorio (nomenclatura de rama, convenciones de PR) | Información que cambia frecuentemente |193| Etiqueta del repositorio (nomenclatura de ramas, convenciones de PR) | Información que cambia frecuentemente |

194| Decisiones arquitectónicas específicas de su proyecto | Explicaciones largas o tutoriales |194| Decisiones arquitectónicas específicas de tu proyecto | Explicaciones largas o tutoriales |

195| Peculiaridades del entorno de desarrollo (variables de entorno requeridas) | Prácticas evidentes por sí solas como "escribir código limpio" |195| Peculiaridades del entorno de desarrollo (variables de entorno requeridas) | Descripciones archivo por archivo de la base de código |

196| Errores comunes o comportamientos no obvios | |196| Errores comunes o comportamientos no obvios | Prácticas evidentes como "escribir código limpio" |

197 197 

198Si Claude sigue haciendo algo que no desea a pesar de tener una regla en su contra, el archivo probablemente sea demasiado largo y la regla se está perdiendo. Si Claude le hace preguntas que se responden en CLAUDE.md, la redacción podría ser ambigua. Trate CLAUDE.md como código: revíselo cuando las cosas salgan mal, elimine regularmente y pruebe cambios observando si el comportamiento de Claude realmente cambia. Para un CLAUDE.md verificado, ejecute [`/doctor`](/docs/es/commands#all-commands) y Claude propone cortes para contenido que puede derivar de la base de código.198Si Claude sigue haciendo algo que no quieres a pesar de tener una regla en contra, el archivo probablemente es demasiado largo y la regla se está perdiendo. Si Claude te hace preguntas que están respondidas en CLAUDE.md, la redacción podría ser ambigua. Trata CLAUDE.md como código: revísalo cuando las cosas salgan mal, pódalo regularmente y prueba cambios observando si el comportamiento de Claude realmente cambia. Para un CLAUDE.md registrado, ejecuta [`/doctor`](/docs/es/commands#all-commands) y Claude propone cortes para contenido que puede derivar de la base de código.

199 199 

200Si Claude sigue omitiendo una instrucción, agregue énfasis como "IMPORTANTE" solo a esa línea. Si enfatiza muchas líneas, ninguna se destaca. Verifique CLAUDE.md en git para que su equipo pueda contribuir. El archivo se compone en valor con el tiempo.200Si Claude sigue omitiendo una instrucción, añade énfasis como "IMPORTANTE" solo a esa línea. Si enfatizas muchas líneas, ninguna destaca. Registra CLAUDE.md en git para que tu equipo pueda contribuir. El archivo aumenta en valor con el tiempo.

201 201 

202Los archivos CLAUDE.md pueden importar archivos adicionales usando la sintaxis `@path/to/import`. Para reglas de importación y dónde pueden vivir los archivos CLAUDE.md, consulte [archivos CLAUDE.md](/docs/es/memory#claude-md-files).202Los archivos CLAUDE.md pueden importar archivos adicionales usando la sintaxis `@path/to/import`. Para reglas de importación y dónde pueden vivir los archivos CLAUDE.md, consulta [CLAUDE.md files](/docs/es/memory#claude-md-files).

203 203 

204<h3 id="configure-permissions">204<h3 id="configure-permissions">

205 Configurar permisos205 Configura permisos

206</h3>206</h3>

207 207 

208<Tip>208<Tip>

209 Para obtener menos indicaciones sin renunciar al control, pre-apruebe las herramientas en las que confía con `/permissions` y deje que los comandos en sandbox se ejecuten sin preguntar con `/sandbox`. Cambie al modo Manual cuando desee aprobar ediciones y comandos usted mismo.209 Para obtener menos solicitudes sin renunciar al control, pre-aprueba las herramientas en las que confías con `/permissions` y deja que los comandos en sandbox se ejecuten sin preguntar con `/sandbox`. Cambia a modo Manual cuando quieras aprobar ediciones y comandos tú mismo.

210</Tip>210</Tip>

211 211 

212En los planes Pro, Max y Team, el modo automático es el [modo de permiso de inicio integrado](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) para sesiones interactivas de terminal y VS Code: un modelo clasificador separado revisa la mayoría de las acciones en lugar de usted y bloquea solo lo que se ve arriesgado, como escalada de alcance, infraestructura desconocida o acciones impulsadas por contenido hostil.212En los planes Pro, Max y Team, el modo automático es el [modo de permiso inicial integrado](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) para sesiones interactivas de terminal y VS Code: un modelo clasificador separado revisa la mayoría de acciones en lugar de ti y bloquea solo lo que parece arriesgado, como escalada de alcance, infraestructura desconocida o acciones impulsadas por contenido hostil.

213 213 

214En el modo Manual, el modo de permiso de inicio integrado en otros planes, Claude Code solicita antes de acciones que podrían modificar su sistema: escrituras de archivo, comandos Bash, herramientas MCP. Eso es seguro pero tedioso. Después de la décima aprobación, está haciendo clic sin revisar realmente. Dos herramientas reducen esas interrupciones en el modo Manual y se aplican también en el modo automático:214En modo Manual, el modo de permiso inicial integrado en otros planes, Claude Code pregunta antes de acciones que podrían modificar tu sistema: escrituras de archivos, comandos Bash, herramientas MCP. Eso es seguro pero tedioso. Después de la décima aprobación estás haciendo clic sin revisar realmente. Dos herramientas reducen esas interrupciones en modo Manual y se aplican también en modo automático:

215 215 

216* **Listas de permisos**: permitir herramientas específicas que sabe que son seguras, como `npm run lint` o `git commit`216* **Listas de permisos**: permiten herramientas específicas que sabes que son seguras, como `npm run lint` o `git commit`

217* **Sandboxing**: habilitar aislamiento a nivel del SO que restrinja el acceso al sistema de archivos y red, permitiendo que Claude trabaje más libremente dentro de límites definidos217* **Sandboxing**: habilita aislamiento a nivel del SO que restringe el acceso al sistema de archivos y red, permitiendo que Claude trabaje más libremente dentro de límites definidos

218 218 

219Lea más sobre [modos de permiso](/docs/es/permission-modes), [reglas de permiso](/docs/es/permissions) y [sandboxing](/docs/es/sandboxing).219Lee más sobre [permission modes](/docs/es/permission-modes), [permission rules](/docs/es/permissions) y [sandboxing](/docs/es/sandboxing).

220 220 

221<h3 id="use-cli-tools">221<h3 id="use-cli-tools">

222 Usar herramientas CLI222 Usa herramientas CLI

223</h3>223</h3>

224 224 

225<Tip>225<Tip>

226 Diga a Claude Code que use herramientas CLI como `gh`, `aws`, `gcloud` y `sentry-cli` cuando interactúe con servicios externos.226 Dile a Claude Code que use herramientas CLI como `gh`, `aws`, `gcloud` y `sentry-cli` cuando interactúe con servicios externos.

227</Tip>227</Tip>

228 228 

229Las herramientas CLI son la forma más eficiente en contexto de interactuar con servicios externos. Si usa GitHub, instale la CLI `gh`. Claude sabe cómo usarla para crear problemas, abrir solicitudes de extracción y leer comentarios. Sin `gh`, Claude aún puede usar la API de GitHub, pero las solicitudes no autenticadas a menudo alcanzan límites de velocidad.229Las herramientas CLI son la forma más eficiente en contexto de interactuar con servicios externos. Si usas GitHub, instala el CLI `gh`. Claude sabe cómo usarlo para crear problemas, abrir solicitudes de extracción y leer comentarios. Sin `gh`, Claude aún puede usar la API de GitHub, pero las solicitudes no autenticadas a menudo alcanzan límites de velocidad.

230 230 

231Claude también es efectivo en aprender herramientas CLI que no conoce. Intente indicaciones como `Use 'foo-cli-tool --help' to learn about foo tool, then use it to solve A, B, C.`231Claude también es efectivo aprendiendo herramientas CLI que no conoce. Intenta solicitudes como `Use 'foo-cli-tool --help' to learn about foo tool, then use it to solve A, B, C.`

232 232 

233<h3 id="connect-mcp-servers">233<h3 id="connect-mcp-servers">

234 Conectar servidores MCP234 Conecta servidores MCP

235</h3>235</h3>

236 236 

237<Tip>237<Tip>

238 Ejecute `claude mcp add` con un nombre de servidor y URL o comando para conectar herramientas externas como Notion, Figma o su base de datos. Por ejemplo: `claude mcp add --transport http notion https://mcp.notion.com/mcp`.238 Ejecuta `claude mcp add` con un nombre de servidor y URL o comando para conectar herramientas externas como Notion, Figma o tu base de datos. Por ejemplo: `claude mcp add --transport http notion https://mcp.notion.com/mcp`.

239</Tip>239</Tip>

240 240 

241Con [servidores MCP](/docs/es/mcp), puede pedir a Claude que implemente características desde rastreadores de problemas, consulte bases de datos, analice datos de monitoreo, integre diseños de Figma y automatice flujos de trabajo.241Con [MCP servers](/docs/es/mcp), puedes pedirle a Claude que implemente características de rastreadores de problemas, consulte bases de datos, analice datos de monitoreo, integre diseños de Figma y automatice flujos de trabajo.

242 242 

243<h3 id="set-up-hooks">243<h3 id="set-up-hooks">

244 Configurar hooks244 Configura hooks

245</h3>245</h3>

246 246 

247<Tip>247<Tip>

248 Use hooks para acciones que deben suceder cada vez sin excepciones.248 Usa hooks para acciones que deben ocurrir cada vez sin excepciones.

249</Tip>249</Tip>

250 250 

251[Hooks](/docs/es/hooks-guide) ejecutan scripts automáticamente en puntos específicos del flujo de trabajo de Claude. A diferencia de las instrucciones CLAUDE.md que son consultivas, los hooks son deterministas y garantizan que la acción suceda.251[Hooks](/docs/es/hooks-guide) ejecutan scripts automáticamente en puntos específicos del flujo de trabajo de Claude. A diferencia de las instrucciones CLAUDE.md que son consultivas, los hooks son deterministas y garantizan que la acción ocurra.

252 252 

253Claude puede escribir hooks para usted. Intente indicaciones como *"Write a hook that runs eslint after every file edit"* o *"Write a hook that blocks writes to the migrations folder."* Edite `.claude/settings.json` directamente para configurar hooks a mano, y ejecute `/hooks` para explorar lo que está configurado.253Claude puede escribir hooks para ti. Intenta solicitudes como *"Write a hook that runs eslint after every file edit"* o *"Write a hook that blocks writes to the migrations folder."* Edita `.claude/settings.json` directamente para configurar hooks manualmente, y ejecuta `/hooks` para explorar lo que está configurado.

254 254 

255<h3 id="create-skills">255<h3 id="create-skills">

256 Crear skills256 Crea skills

257</h3>257</h3>

258 258 

259<Tip>259<Tip>

260 Cree archivos `SKILL.md` en `.claude/skills/` para dar a Claude conocimiento de dominio y flujos de trabajo reutilizables.260 Crea archivos `SKILL.md` en `.claude/skills/` para darle a Claude conocimiento de dominio y flujos de trabajo reutilizables.

261</Tip>261</Tip>

262 262 

263[Skills](/docs/es/skills) extienden el conocimiento de Claude con información específica de su proyecto, equipo o dominio. Claude los aplica automáticamente cuando son relevantes, o puede invocarlos directamente con `/skill-name`.263[Skills](/docs/es/skills) extienden el conocimiento de Claude con información específica de tu proyecto, equipo o dominio. Claude los aplica automáticamente cuando son relevantes, o puedes invocarlos directamente con `/skill-name`.

264 264 

265Cree una skill agregando un directorio con un `SKILL.md` a `.claude/skills/`:265Crea una skill añadiendo un directorio con un `SKILL.md` a `.claude/skills/`:

266 266 

267```markdown .claude/skills/api-conventions/SKILL.md theme={null}267```markdown .claude/skills/api-conventions/SKILL.md theme={null}

268---268---


276- Version APIs in the URL path (/v1/, /v2/)276- Version APIs in the URL path (/v1/, /v2/)

277```277```

278 278 

279Las skills también pueden definir flujos de trabajo repetibles que invoca directamente:279Las skills también pueden definir flujos de trabajo repetibles que invocas directamente:

280 280 

281```markdown .claude/skills/fix-issue/SKILL.md theme={null}281```markdown .claude/skills/fix-issue/SKILL.md theme={null}

282---282---


2968. Push and create a PR2968. Push and create a PR

297```297```

298 298 

299Ejecute `/fix-issue 1234` para invocarlo. Use `disable-model-invocation: true` para flujos de trabajo con efectos secundarios que desea activar manualmente.299Ejecuta `/fix-issue 1234` para invocarlo. Usa `disable-model-invocation: true` para flujos de trabajo con efectos secundarios que quieres activar manualmente.

300 300 

301<h3 id="create-custom-subagents">301<h3 id="create-custom-subagents">

302 Crear subagents personalizados302 Crea subagentes personalizados

303</h3>303</h3>

304 304 

305<Tip>305<Tip>

306 Defina asistentes especializados en `.claude/agents/` que Claude pueda delegar para tareas aisladas.306 Define asistentes especializados en `.claude/agents/` que Claude pueda delegar para tareas aisladas.

307</Tip>307</Tip>

308 308 

309[Subagents](/docs/es/sub-agents) se ejecutan en su propio contexto con su propio conjunto de herramientas permitidas. Son útiles para tareas que leen muchos archivos o necesitan enfoque especializado sin saturar su conversación principal.309[Subagents](/docs/es/sub-agents) se ejecutan en su propio contexto con su propio conjunto de herramientas permitidas. Son útiles para tareas que leen muchos archivos o necesitan enfoque especializado sin saturar tu conversación principal.

310 310 

311```markdown .claude/agents/security-reviewer.md theme={null}311```markdown .claude/agents/security-reviewer.md theme={null}

312---312---


324Provide specific line references and suggested fixes.324Provide specific line references and suggested fixes.

325```325```

326 326 

327Diga a Claude que use subagents explícitamente: *"Use a subagent to review this code for security issues."*327Dile a Claude que use subagentes explícitamente: *"Use a subagent to review this code for security issues."*

328 328 

329<h3 id="install-plugins">329<h3 id="install-plugins">

330 Instalar plugins330 Instala plugins

331</h3>331</h3>

332 332 

333<Tip>333<Tip>

334 Ejecute `/plugin` para explorar el marketplace. Los plugins agregan skills, herramientas e integraciones sin configuración.334 Ejecuta `/plugin` para explorar el marketplace. Los plugins añaden skills, herramientas e integraciones sin configuración.

335</Tip>335</Tip>

336 336 

337[Plugins](/docs/es/plugins) agrupan skills, hooks, subagents y servidores MCP en una única unidad instalable de la comunidad y Anthropic. Si trabaja con un lenguaje tipado, instale un [plugin de inteligencia de código](/docs/es/discover-plugins#code-intelligence) para dar a Claude navegación de símbolos precisa y detección automática de errores después de ediciones.337[Plugins](/docs/es/plugins/overview) agrupan skills, hooks, subagentes y servidores MCP en una única unidad instalable de la comunidad y Anthropic. Si trabajas con un lenguaje tipado, instala un [code intelligence plugin](/docs/es/plugins/code-intelligence) para darle a Claude navegación de símbolos precisa y detección automática de errores después de ediciones.

338 338 

339Para orientación sobre cómo elegir entre skills, subagents, hooks y MCP, consulte [Extender Claude Code](/docs/es/features-overview#match-features-to-your-goal).339Para orientación sobre cómo elegir entre skills, subagentes, hooks y MCP, consulta [Extend Claude Code](/docs/es/features-overview#match-features-to-your-goal).

340 340 

341***341***

342 342 


541 Recorra tareas llamando a `claude -p` para cada una. Use `--allowedTools` para limitar permisos para operaciones por lotes.541 Recorra tareas llamando a `claude -p` para cada una. Use `--allowedTools` para limitar permisos para operaciones por lotes.

542</Tip>542</Tip>

543 543 

544Para migraciones o análisis grandes, puede distribuir el trabajo entre muchas invocaciones paralelas de Claude. En un repositorio de git, ejecute [`/batch <instruction>`](/docs/es/commands#all-commands) para que Claude divida el cambio entre 5 a 30 subagentes. Cada subagente trabaja en su propio worktree y abre una solicitud de extracción. Para impulsar la distribución desde su propio script en su lugar, recorra `claude -p`:544Para migraciones o análisis grandes, puede distribuir el trabajo entre muchas invocaciones paralelas de Claude. Ejecute [`/batch <instruction>`](/docs/es/commands#all-commands) para que Claude divida el cambio entre 5 a 30 subagentes. Cada subagente trabaja en su propio worktree. Para impulsar la distribución desde su propio script en su lugar, recorra `claude -p`:

545 545 

546<Steps>546<Steps>

547 <Step title="Generar una lista de tareas">547 <Step title="Generar una lista de tareas">

channels.md +9 −7

Details

45 Si la instalación falla, haga coincidir el mensaje que Claude Code reporta:45 Si la instalación falla, haga coincidir el mensaje que Claude Code reporta:

46 46 

47 * `Marketplace "claude-plugins-official" not found`: agregue el marketplace con `/plugin marketplace add anthropics/claude-plugins-official`, luego reintente la instalación.47 * `Marketplace "claude-plugins-official" not found`: agregue el marketplace con `/plugin marketplace add anthropics/claude-plugins-official`, luego reintente la instalación.

48 * El plugin [no se encuentra en el marketplace](/docs/es/discover-plugins#install-plugins): verifique el nombre del plugin.48 * El plugin [no se encuentra en el marketplace](/docs/es/plugins/install#install-a-plugin): verifique el nombre del plugin.

49 49 

50 Cuando la instalación solicite un alcance de instalación, elija la opción de alcance de usuario para que el plugin esté disponible en todos sus proyectos. Verifique el resumen de instalación: si reporta `Run /reload-plugins to activate.`, consulte [Aplicar cambios de plugin sin reiniciar](/docs/es/discover-plugins#apply-plugin-changes-without-restarting) para que el comando de configuración del plugin esté disponible.50 Cuando la instalación solicite un alcance de instalación, elija la opción de alcance de usuario para que el plugin esté disponible en todos sus proyectos. Verifique el resumen de instalación: si reporta `Run /reload-plugins to activate.`, consulte [Aplicar cambios de plugin sin reiniciar](/docs/es/plugins/cli-reference#reload-plugins) para que el comando de configuración del plugin esté disponible.

51 </Step>51 </Step>

52 52 

53 <Step title="Configurar su token">53 <Step title="Configurar su token">


123 Si la instalación falla, haga coincidir el mensaje que Claude Code reporta:123 Si la instalación falla, haga coincidir el mensaje que Claude Code reporta:

124 124 

125 * `Marketplace "claude-plugins-official" not found`: agregue el marketplace con `/plugin marketplace add anthropics/claude-plugins-official`, luego reintente la instalación.125 * `Marketplace "claude-plugins-official" not found`: agregue el marketplace con `/plugin marketplace add anthropics/claude-plugins-official`, luego reintente la instalación.

126 * El plugin [no se encuentra en el marketplace](/docs/es/discover-plugins#install-plugins): verifique el nombre del plugin.126 * El plugin [no se encuentra en el marketplace](/docs/es/plugins/install#install-a-plugin): verifique el nombre del plugin.

127 127 

128 Cuando la instalación solicite un alcance de instalación, elija la opción de alcance de usuario para que el plugin esté disponible en todos sus proyectos. Verifique el resumen de instalación: si reporta `Run /reload-plugins to activate.`, consulte [Aplicar cambios de plugin sin reiniciar](/docs/es/discover-plugins#apply-plugin-changes-without-restarting) para que el comando de configuración del plugin esté disponible.128 Cuando la instalación solicite un alcance de instalación, elija la opción de alcance de usuario para que el plugin esté disponible en todos sus proyectos. Verifique el resumen de instalación: si reporta `Run /reload-plugins to activate.`, consulte [Aplicar cambios de plugin sin reiniciar](/docs/es/plugins/cli-reference#reload-plugins) para que el comando de configuración del plugin esté disponible.

129 </Step>129 </Step>

130 130 

131 <Step title="Configurar su token">131 <Step title="Configurar su token">


188 Si la instalación falla, haga coincidir el mensaje que Claude Code reporta:188 Si la instalación falla, haga coincidir el mensaje que Claude Code reporta:

189 189 

190 * `Marketplace "claude-plugins-official" not found`: agregue el marketplace con `/plugin marketplace add anthropics/claude-plugins-official`, luego reintente la instalación.190 * `Marketplace "claude-plugins-official" not found`: agregue el marketplace con `/plugin marketplace add anthropics/claude-plugins-official`, luego reintente la instalación.

191 * El plugin [no se encuentra en el marketplace](/docs/es/discover-plugins#install-plugins): verifique el nombre del plugin.191 * El plugin [no se encuentra en el marketplace](/docs/es/plugins/install#install-a-plugin): verifique el nombre del plugin.

192 192 

193 Cuando la instalación solicite un alcance de instalación, elija la opción de alcance de usuario para que el plugin esté disponible en todos sus proyectos. Si el resumen de instalación reporta `Run /reload-plugins to activate.`, puede omitir eso aquí, porque reiniciar en el siguiente paso recoge el plugin.193 Cuando la instalación solicite un alcance de instalación, elija la opción de alcance de usuario para que el plugin esté disponible en todos sus proyectos.

194 

195 Si el resumen de instalación reporta `Run /reload-plugins to activate.`, no necesita actuar al respecto aquí, porque reiniciar en el siguiente paso recoge el plugin.

194 </Step>196 </Step>

195 197 

196 <Step title="Reiniciar con canales habilitados">198 <Step title="Reiniciar con canales habilitados">


245 Si la instalación falla, haga coincidir el mensaje que Claude Code reporta:247 Si la instalación falla, haga coincidir el mensaje que Claude Code reporta:

246 248 

247 * `Marketplace "claude-plugins-official" not found`: agregue el marketplace con `/plugin marketplace add anthropics/claude-plugins-official`, luego reintente la instalación.249 * `Marketplace "claude-plugins-official" not found`: agregue el marketplace con `/plugin marketplace add anthropics/claude-plugins-official`, luego reintente la instalación.

248 * El plugin [no se encuentra en el marketplace](/docs/es/discover-plugins#install-plugins): verifique el nombre del plugin.250 * El plugin [no se encuentra en el marketplace](/docs/es/plugins/install#install-a-plugin): verifique el nombre del plugin.

249 251 

250 Cuando la instalación solicite un alcance de instalación, elija la opción de alcance de usuario para que el plugin esté disponible en todos sus proyectos.252 Cuando la instalación solicite un alcance de instalación, elija la opción de alcance de usuario para que el plugin esté disponible en todos sus proyectos.

251 253 

Details

191claude --dangerously-load-development-channels server:webhook191claude --dangerously-load-development-channels server:webhook

192```192```

193 193 

194El bypass es por entrada. Combinar esta bandera con `--channels` no extiende el bypass a las entradas `--channels`. Durante la vista previa de investigación, la lista de aprobación es curada por Anthropic, por lo que tu canal permanece en la bandera de desarrollo mientras lo construyes y pruebas.194El bypass es por entrada. Combinar esta bandera con `--channels` no extiende el bypass a las entradas `--channels`. Durante la vista previa de investigación, tu canal no está en la lista de aprobación, por lo que permanece en la bandera de desarrollo mientras lo construyes y pruebas.

195 195 

196<Note>196<Note>

197 Esta bandera omite solo la lista de aprobación. La política de organización `channelsEnabled` aún se aplica. No la uses para ejecutar canales de fuentes no confiables.197 Esta bandera omite solo la lista de aprobación. La política de organización `channelsEnabled` aún se aplica. No la uses para ejecutar canales de fuentes no confiables.


802 Empaquetar como un complemento802 Empaquetar como un complemento

803</h2>803</h2>

804 804 

805Para hacer tu canal instalable y compartible, envuélvelo en un [complemento](/docs/es/plugins) y publícalo en un [mercado](/docs/es/plugin-marketplaces). Los usuarios lo instalan con `/plugin install`, luego lo habilitan por sesión con `--channels plugin:<name>@<marketplace>`.805Para hacer tu canal instalable y compartible, envuélvelo en un [complemento](/docs/es/plugins/overview) y publícalo en un [mercado](/docs/es/plugins/overview). Los usuarios lo instalan con `/plugin install`, luego lo habilitan por sesión con `--channels plugin:<name>@<marketplace>`.

806 806 

807Un canal publicado en tu propio mercado aún necesita `--dangerously-load-development-channels` para ejecutarse, ya que no está en la [lista de aprobación](/docs/es/channels#supported-channels). La lista de aprobación predeterminada es los complementos de canal en `claude-plugins-official`, que Anthropic cura a su discreción. Los [formularios de envío en la aplicación](/docs/es/plugins#submit-your-plugin-to-the-community-marketplace) agregan complementos al mercado comunitario, que no está en la lista de aprobación de canales.807Un canal publicado en tu propio mercado aún necesita `--dangerously-load-development-channels` para ejecutarse, ya que no está en la [lista de aprobación](/docs/es/channels#supported-channels). La lista de aprobación predeterminada es los complementos de canal en `claude-plugins-official`. Los [formularios de envío en la aplicación](/docs/es/plugins/publish#submit-to-the-community-marketplace) agregan complementos al mercado comunitario, que no está en la lista de aprobación de canales.

808 808 

809Si estás trabajando con un contacto de socio de Anthropic, comunícate con ellos para coordinar una lista de mercado oficial. En planes de equipo y empresa, un administrador puede incluir tu complemento en la lista [`allowedChannelPlugins`](/docs/es/channels#restrict-which-channel-plugins-can-run) de la organización, que reemplaza la lista de aprobación predeterminada de Anthropic.809Si estás trabajando con un contacto de socio de Anthropic, comunícate con ellos para coordinar una lista de mercado oficial. En planes de equipo y empresa, un administrador puede incluir tu complemento en la lista [`allowedChannelPlugins`](/docs/es/channels#restrict-which-channel-plugins-can-run) de la organización, que reemplaza la lista de aprobación predeterminada de Anthropic.

810 810 


815* [Canales](/docs/es/channels) para instalar y usar Telegram, Discord, iMessage o la demostración fakechat, y para habilitar canales para una organización de equipo o empresa815* [Canales](/docs/es/channels) para instalar y usar Telegram, Discord, iMessage o la demostración fakechat, y para habilitar canales para una organización de equipo o empresa

816* [Implementaciones de canal de trabajo](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins) para código de servidor completo con flujos de emparejamiento, herramientas de respuesta y archivos adjuntos816* [Implementaciones de canal de trabajo](https://github.com/anthropics/claude-plugins-official/tree/main/external_plugins) para código de servidor completo con flujos de emparejamiento, herramientas de respuesta y archivos adjuntos

817* [MCP](/docs/es/mcp) para el protocolo subyacente que implementan los servidores de canal817* [MCP](/docs/es/mcp) para el protocolo subyacente que implementan los servidores de canal

818* [Plugins](/docs/es/plugins) para empaquetar su canal para que los usuarios puedan instalarlo con `/plugin install`818* [Plugins](/docs/es/plugins/overview) para empaquetar su canal para que los usuarios puedan instalarlo con `/plugin install`

Details

54 Revertir una conversación borrada54 Revertir una conversación borrada

55</h4>55</h4>

56 56 

57Si ejecutó `/clear` anteriormente en el mismo proceso de Claude Code, el menú de rewind muestra una entrada adicional en la parte superior de la lista etiquetada como `/resume <session-id> (sesión anterior)`. Selecciónela para reanudar la conversación que estaba activa antes de que se ejecutara `/clear`. La entrada está disponible hasta que salga de Claude Code o reanude una sesión diferente, y requiere Claude Code v2.1.191 o posterior. En versiones anteriores, ejecute `/resume` y seleccione la sesión anterior de la lista.57Si ejecutó `/clear` anteriormente en el mismo proceso de Claude Code, el menú de rewind muestra una entrada adicional en la parte superior de la lista etiquetada como `/resume <session-id> (sesión anterior)`. Selecciónela para reanudar la conversación que estaba activa antes de que se ejecutara `/clear`. La entrada está disponible hasta que salga de Claude Code o reanude una sesión diferente.

58 58 

59<h4 id="guide-a-summary">59<h4 id="guide-a-summary">

60 Guiar un resumen60 Guiar un resumen

Details

450 Configuración que los bloqueos no cubren450 Configuración que los bloqueos no cubren

451</h4>451</h4>

452 452 

453Cuatro configuraciones suministradas por el principal pasan el filtro incluso con los cinco bloqueos establecidos. Bajo la configuración de primer ganador predeterminada, el valor de administrador que bloquea el del principal es el de la fuente de administrador de mayor prioridad, excepto para `allowedMcpServers` mientras el [bloqueo de servidor MCP](#lock-behavior-across-sources) esté activado. Bajo la opción de participación de fusión `managedSourcesBehavior`, [cómo Claude Code combina fuentes administradas](/docs/es/managed-settings#how-claude-code-combines-managed-sources) dice qué valor de fuente se aplica en su lugar.453Seis configuraciones suministradas por el principal pasan el filtro incluso con los cinco bloqueos establecidos. Bajo la configuración de primer ganador predeterminada, el valor de administrador que bloquea el del principal es el de la fuente de administrador de mayor prioridad, excepto para `allowedMcpServers` mientras el [bloqueo de servidor MCP](#lock-behavior-across-sources) esté activado. Bajo la opción de participación de fusión `managedSourcesBehavior`, [cómo Claude Code combina fuentes administradas](/docs/es/managed-settings#how-claude-code-combines-managed-sources) dice qué valor de fuente se aplica en su lugar.

454 454 

455* **`forceLoginOrgUUID`**: Claude Code honra un valor suministrado por el principal cuando la fuente de administrador de mayor prioridad no establece un UUID de organización. El inicio de sesión de la puerta de enlace no verifica esta clave, por lo que importa solo para flotas que también usan inicios de sesión de Anthropic de primera parte. Un UUID de organización en la fuente de administrador de mayor prioridad bloquea el valor del principal y es el que Claude Code aplica, por lo que establezca `forceLoginOrgUUID` allí.455* **`forceLoginOrgUUID`**: Claude Code honra un valor suministrado por el principal cuando la fuente de administrador de mayor prioridad no establece un UUID de organización. El inicio de sesión de la puerta de enlace no verifica esta clave, por lo que importa solo para flotas que también usan inicios de sesión de Anthropic de primera parte. Un UUID de organización en la fuente de administrador de mayor prioridad bloquea el valor del principal y es el que Claude Code aplica, por lo que establezca `forceLoginOrgUUID` allí.

456* **`allowedMcpServers`**: Claude Code honra una lista de permitidos suministrada por el principal cuando ninguna lista de administrador está en vigor. `allowManagedMcpServersOnly` no la bloquea, porque el bloqueo aplica cualquier lista que gane como el valor administrado, incluida una lista suministrada por el principal cuando ninguna fuente de administrador suministra una. Una lista en la fuente de administrador de mayor prioridad bloquea la del principal y es la lista que Claude Code aplica, por lo que establezca `allowedMcpServers` allí, junto al bloqueo. Antes de v2.1.223, un valor para cualquiera de las claves en cualquier fuente de administrador bloqueaba la del principal.456* **`allowedMcpServers`**: Claude Code honra una lista de permitidos suministrada por el principal cuando ninguna lista de administrador está en vigor. `allowManagedMcpServersOnly` no la bloquea, porque el bloqueo aplica cualquier lista que gane como el valor administrado, incluida una lista suministrada por el principal cuando ninguna fuente de administrador suministra una. Una lista en la fuente de administrador de mayor prioridad bloquea la del principal y es la lista que Claude Code aplica, por lo que establezca `allowedMcpServers` allí, junto al bloqueo. Antes de v2.1.223, un valor para cualquiera de las claves en cualquier fuente de administrador bloqueaba la del principal.

457* **`availableModels`**: Claude Code honra una lista de modelos suministrada por el principal cuando la fuente administrada ganadora no establece una. Si su flota restringe modelos, establezca `availableModels` en la fuente ganadora.457* **`availableModels`**: Claude Code honra una lista de modelos suministrada por el principal cuando la fuente administrada ganadora no establece una. Si su flota restringe modelos, establezca `availableModels` en la fuente ganadora.

458* **`strictKnownMarketplaces`**: Claude Code honra una lista de permitidos de mercado de plugins suministrada por el principal cuando la fuente administrada ganadora no establece una. Si su flota restringe mercados, establezca `strictKnownMarketplaces` en la fuente ganadora. Requiere Claude Code v2.1.282 o posterior.

459* **`blockedMarketplaces`**: una lista de bloqueo de mercado suministrada por el principal pasa y se suma a cualquier lista de bloqueo que una fuente administrada establece, ya que una lista de bloqueo solo puede restringir más. Requiere Claude Code v2.1.282 o posterior.

458* **`strictPluginOnlyCustomization`**: esta clave pasa el filtro independientemente de cualquier bloqueo, y hace que Claude Code ignore la personalización propia del desarrollador, incluidos hooks protectores. Ningún bloqueo la bloquea.460* **`strictPluginOnlyCustomization`**: esta clave pasa el filtro independientemente de cualquier bloqueo, y hace que Claude Code ignore la personalización propia del desarrollador, incluidos hooks protectores. Ningún bloqueo la bloquea.

459 461 

460<h3 id="connect-claude-desktop">462<h3 id="connect-claude-desktop">

Details

37* [`managed`](#managed): políticas de configuración administradas por grupo de IdP37* [`managed`](#managed): políticas de configuración administradas por grupo de IdP

38* [`telemetry`](#telemetry): reenvío OTLP a su pila de observabilidad38* [`telemetry`](#telemetry): reenvío OTLP a su pila de observabilidad

39* [`access_control`, `limits`, `timeouts`, `rate_limits`](#http-tuning): permitir/denegar IP, límites de tamaño de solicitud, tiempo hasta el primer byte del upstream y límites de inicio de sesión por IP39* [`access_control`, `limits`, `timeouts`, `rate_limits`](#http-tuning): permitir/denegar IP, límites de tamaño de solicitud, tiempo hasta el primer byte del upstream y límites de inicio de sesión por IP

40* [`load_test_mode`](#load_test_mode): prueba de carga de la puerta de enlace sin llamar a un proveedor de modelos

40 41 

41<h2 id="secret-expansion">42<h2 id="secret-expansion">

42 Expansión de secretos43 Expansión de secretos


1027 1028 

1028Detrás de tal front end, establezca primero [`listen.trusted_proxies`](#listen) para que el gateway vea direcciones de cliente reales, y mantenga el gateway y todo lo que está frente a él inaccesible desde la internet pública independientemente.1029Detrás de tal front end, establezca primero [`listen.trusted_proxies`](#listen) para que el gateway vea direcciones de cliente reales, y mantenga el gateway y todo lo que está frente a él inaccesible desde la internet pública independientemente.

1029 1030 

1031<h3 id="load_test_mode">

1032 `load_test_mode`

1033</h3>

1034 

1035El bloque `load_test_mode` le permite hacer pruebas de carga en un gateway sin llamar a un proveedor de modelos. Mientras está activado, el gateway construye y firma cada solicitud de proveedor como de costumbre, la descarta en lugar de enviarla, y transmite una respuesta enlatada a través de su ruta de respuesta normal. La respuesta es texto de relleno que comienza con una oración que dice que es enlatada.

1036 

1037Requiere v2.1.283 o posterior. Las versiones anteriores se niegan a iniciar cuando la clave está establecida, por lo que actualice cada réplica antes de agregar el bloque y elimínelo antes de revertir.

1038 

1039El ejemplo a continuación activa el modo con los valores predeterminados, una respuesta de aproximadamente 750 tokens de salida transmitida durante aproximadamente 10 segundos:

1040 

1041```yaml theme={null}

1042load_test_mode:

1043 enabled: true

1044 reply_tokens: 750 # roughly how many tokens of text each canned reply carries

1045 reply_seconds: 9.5 # how long a streamed reply takes

1046```

1047 

1048| Campo | Requerido | Descripción |

1049| --------------- | --------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1050| `enabled` | Sí | `true` activa el modo. `false` mantiene sus números en el archivo con el modo desactivado. El gateway se niega a iniciar si el bloque está presente sin él. |

1051| `reply_tokens` | No | Predeterminado `750`. Aproximadamente cuántos tokens de texto lleva cada respuesta enlatada, un número entero de 1 a 100000. |

1052| `reply_seconds` | No | Predeterminado `9.5`. Cuánto tiempo tarda una respuesta transmitida, de 0 a 600. `0` envía toda la respuesta a la vez. Una respuesta a una solicitud sin transmisión siempre vuelve a la vez. |

1053 

1054Una prueba de carga en este modo cubre el gateway, su Postgres y todo lo que está frente al gateway. No cubre los límites, velocidad o ruta de red del proveedor.

1055 

1056Mientras el modo está activado, una solicitud puede llevar un encabezado `x-load-test-user` que contenga un número entero de hasta siete dígitos, y el gateway cuenta cada número como un desarrollador separado con el correo electrónico y grupos del desarrollador cuyo token vino con la solicitud. Asigne a la implementación de prueba de carga su propia base de datos vacía, porque el gateway se niega a iniciar con el modo activado contra una base de datos en la que algún desarrollador ya ha gastado algo.

1057 

1058<Warning>

1059 Nunca active esto para un gateway que los desarrolladores usan. Cada solicitud obtiene la respuesta enlatada y ningún modelo se llama. El gateway registra una advertencia `load_test_mode is on` al iniciar y marca cada evento de auditoría [`inference`](/docs/es/claude-apps-gateway-deploy#logs) con `load_test: true` mientras el modo está activado.

1060</Warning>

1061 

1030<h2 id="complete-example">1062<h2 id="complete-example">

1031 Ejemplo completo1063 Ejemplo completo

1032</h2>1064</h2>

1033 1065 

1034Esta configuración de referencia completa ejercita cada sección principal; los bloques [ajuste de HTTP](#http-tuning) mantienen sus valores predeterminados. Cópiela, elimine lo que no necesite y complete sus valores. La configuración en el [Inicio rápido](/docs/es/claude-apps-gateway#quickstart) es una versión mínima de esta.1066Esta configuración de referencia completa ejercita cada sección central; los [bloques de ajuste HTTP](#http-tuning) mantienen sus valores predeterminados. Cópiela, elimine lo que no necesite y complete sus valores. La configuración en el [Inicio rápido](/docs/es/claude-apps-gateway#quickstart) es una versión mínima de esta.

1035 1067 

1036```yaml gateway.yaml theme={null}1068```yaml gateway.yaml theme={null}

1037# Ejecutar con:1069# Ejecutar con:


1039#1071#

1040# La verbosidad del registro operativo se controla mediante la variable de entorno1072# La verbosidad del registro operativo se controla mediante la variable de entorno

1041# CLAUDE_GATEWAY_LOG_LEVEL (debug | info | warn | error; predeterminado info). debug1073# CLAUDE_GATEWAY_LOG_LEVEL (debug | info | warn | error; predeterminado info). debug

1042# también registra los nombres de reclamación en cada id_token, para diagnóstico de groups_claim.1074# también registra los nombres de reclamaciones en cada id_token, para diagnóstico de groups_claim.

1043# No afecta eventos de auditoría, que siempre se emiten.1075# No afecta los eventos de auditoría, que siempre se emiten.

1044 1076 

1045listen:1077listen:

1046 host: 0.0.0.01078 host: 0.0.0.0

1047 port: 80801079 port: 8080

1048 public_url: https://claude-gateway.internal.example.com1080 public_url: https://claude-gateway.internal.example.com

1049 # Omita el bloque tls cuando se ejecute detrás de una entrada que termine TLS.1081 # Omita el bloque tls cuando se ejecute detrás de una entrada que termina TLS.

1050 # tls:1082 # tls:

1051 # cert: /certs/gateway.crt1083 # cert: /certs/gateway.crt

1052 # key: /certs/gateway.key1084 # key: /certs/gateway.key


1059 client_secret: ${OIDC_CLIENT_SECRET}1091 client_secret: ${OIDC_CLIENT_SECRET}

1060 allowed_email_domains:1092 allowed_email_domains:

1061 - example.com1093 - example.com

1062 # Requerido cuando el emisor es el servidor org de Okta, cuyos id_tokens1094 # Requerido cuando el emisor es el servidor de la organización Okta, cuyos id_tokens

1063 # pueden omitir correo electrónico y grupos; la puerta de enlace los completa desde /userinfo.1095 # pueden omitir correo electrónico y grupos; la puerta de enlace los completa desde /userinfo.

1064 userinfo_fallback: true1096 userinfo_fallback: true

1065 # allowed_groups: [claude-code-users]1097 # allowed_groups: [claude-code-users]

1066 # Okta emite grupos solo cuando se solicita el alcance `groups` y el1098 # Okta emite grupos solo cuando se solicita el alcance `groups` y el

1067 # filtro de reclamación de grupos de la aplicación los permite. La política de contratistas a continuación1099 # filtro de reclamación de grupos de la aplicación los permite. La política de contratistas a continuación

1068 # coincide en grupos, por lo que el alcance se solicita aquí.1100 # coincide con grupos, por lo que el alcance se solicita aquí.

1069 scopes: [openid, profile, email, offline_access, groups]1101 scopes: [openid, profile, email, offline_access, groups]

1070 # extra_auth_params: { access_type: offline, prompt: consent } # Google1102 # extra_auth_params: { access_type: offline, prompt: consent } # Google

1071 # groups_claim: groups # Roles de aplicación de Entra: use `roles`1103 # groups_claim: groups # Roles de aplicación de Entra: use `roles`


1080 # max_connections: 51112 # max_connections: 5

1081 # connect_timeout_seconds: 51113 # connect_timeout_seconds: 5

1082 1114 

1083# Habilita /v1/organizations/spend_limits (refleja la API de administración de Anthropic)1115# Habilita /v1/organizations/spend_limits (refleja la API de administrador de Anthropic)

1084# y cumplimiento de gasto por desarrollador en /v1/messages. Omita para desactivar.1116# y cumplimiento de gasto por desarrollador en /v1/messages. Omita para deshabilitar.

1085# Los límites en sí se establecen a través de la API de administración, no aquí.1117# Los límites en sí se establecen a través de la API de administrador, no aquí.

1086# admin:1118# admin:

1087# write_keys:1119# write_keys:

1088# - { id: terraform, key: "${GATEWAY_ADMIN_WRITE_KEY_TF}" }1120# - { id: terraform, key: "${GATEWAY_ADMIN_WRITE_KEY_TF}" }


1098# enforcement:1130# enforcement:

1099# fail_closed_on_error: false1131# fail_closed_on_error: false

1100 1132 

1101# Medir a tasas contratadas en lugar del precio de lista USD. Requiere admin: o una1133# Prueba de carga de esta implementación sin llamar a un proveedor de modelo. Nunca en una

1102# política managed:. Con managed:, las mismas tasas también van a clientes con sesión iniciada.1134# puerta de enlace que usen desarrolladores: cada solicitud obtiene una respuesta enlatada.

1135# load_test_mode:

1136# enabled: true

1137# # reply_tokens: 750

1138# # reply_seconds: 9.5

1139 

1140# Medir a tasas contratadas en lugar del precio de lista en USD. Requiere admin: o una

1141# política managed:. Con managed:, las mismas tasas también van a clientes que han iniciado sesión.

1103# Las tasas a continuación son marcadores de posición, no precios de contrato reales.1142# Las tasas a continuación son marcadores de posición, no precios de contrato reales.

1104# pricing:1143# pricing:

1105# multiplier: 0.851144# multiplier: 0.85


1158 # el predeterminado de nivel, para que los contratistas no obtengan un 400 en el predeterminado.1197 # el predeterminado de nivel, para que los contratistas no obtengan un 400 en el predeterminado.

1159 enforceAvailableModels: true1198 enforceAvailableModels: true

1160 # allow aprueba automáticamente estas herramientas; no bloquea el resto.1199 # allow aprueba automáticamente estas herramientas; no bloquea el resto.

1161 # Agregue reglas de denegación para restringir herramientas.1200 # Agregue reglas de negación para restringir herramientas.

1162 permissions: { allow: [Read, Grep] }1201 permissions: { allow: [Read, Grep] }

1163 - match: {}1202 - match: {}

1164 cli:1203 cli:

Details

219* **[Cumplimiento de límite de gasto](/docs/es/claude-apps-gateway-spend-limits#postgres-availability)**: falla abierto de forma predeterminada durante la interrupción, así que la inferencia aún fluye; cámbielo a falla cerrada si preferiría bloquear que ejecutar sin medidor219* **[Cumplimiento de límite de gasto](/docs/es/claude-apps-gateway-spend-limits#postgres-availability)**: falla abierto de forma predeterminada durante la interrupción, así que la inferencia aún fluye; cámbielo a falla cerrada si preferiría bloquear que ejecutar sin medidor

220* **Preparación**: `/readyz` reporta no listo durante la interrupción, así que los orquestadores que cierren tráfico en preparación eliminan cada réplica de rotación a la vez. En esa topología todo el tráfico, incluida la inferencia que la puerta de enlace podría servir, falla en el equilibrador de carga hasta que Postgres se recupere. La sonda de vivacidad en `/healthz` sigue pasando, así que las réplicas no se reinician. Apunte la sonda de preparación a `/healthz` en su lugar si preferiría que los desarrolladores con sesión iniciada sigan trabajando a través de una interrupción de almacén; el costo es que los nuevos inicios de sesión fallan contra una réplica que aún reporta lista.220* **Preparación**: `/readyz` reporta no listo durante la interrupción, así que los orquestadores que cierren tráfico en preparación eliminan cada réplica de rotación a la vez. En esa topología todo el tráfico, incluida la inferencia que la puerta de enlace podría servir, falla en el equilibrador de carga hasta que Postgres se recupere. La sonda de vivacidad en `/healthz` sigue pasando, así que las réplicas no se reinician. Apunte la sonda de preparación a `/healthz` en su lugar si preferiría que los desarrolladores con sesión iniciada sigan trabajando a través de una interrupción de almacén; el costo es que los nuevos inicios de sesión fallan contra una réplica que aún reporta lista.

221 221 

222Si su IdP se cae, las sesiones existentes funcionan hasta `ttl_hours`, y los nuevos inicios de sesión y actualizaciones fallan. Establezca un `ttl_hours` más largo si su IdP tiene ventanas de mantenimiento frecuentes.222Si su IdP se cae, las sesiones existentes funcionan hasta `ttl_hours`, los nuevos inicios de sesión fallan, y una actualización de sesión obtiene una respuesta de reintentar y funciona una vez que el IdP está de vuelta. Establezca un `ttl_hours` más largo si su IdP tiene ventanas de mantenimiento frecuentes.

223 223 

224<h3 id="jwt-secret-rotation">224<h3 id="jwt-secret-rotation">

225 Rotación de secreto JWT225 Rotación de secreto JWT

Details

218Teleport verifica estos requisitos antes de reanudar una sesión. Si algún requisito no se cumple, verá un error o se le pedirá que resuelva el problema.218Teleport verifica estos requisitos antes de reanudar una sesión. Si algún requisito no se cumple, verá un error o se le pedirá que resuelva el problema.

219 219 

220| Requisito | Detalles |220| Requisito | Detalles |

221| -------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |221| -------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

222| Estado de git limpio | Su directorio de trabajo no debe tener cambios sin confirmar. Teleport le pide que guarde los cambios si es necesario. |222| Estado de git limpio | Su directorio de trabajo no debe tener cambios sin confirmar. Teleport le pide que guarde los cambios si es necesario. |

223| Repositorio correcto | Debe ejecutar `--teleport` desde una desprotección del mismo repositorio, no desde una bifurcación. Si lo ejecuta desde una desprotección de un repositorio diferente, Claude Code muestra un error que nombra tanto el repositorio de la sesión como su desprotección. Si Claude Code no puede analizar su remoto en un nombre de host, por ejemplo un alias de host SSH como `git@work:owner/repo.git`, le pide que confirme, y acepta la desprotección cuando el propietario del remoto y el nombre del repositorio coinciden con el repositorio de la sesión. |223| Repositorio correcto | Debe ejecutar `--teleport` desde un checkout del mismo repositorio, no desde una bifurcación. Si lo ejecuta desde un checkout de un repositorio diferente, Claude Code muestra un error que nombra tanto el repositorio de la sesión como el repositorio de su checkout. Antes de v2.1.219, el error no nombraba el repositorio de su checkout. Si Claude Code no puede analizar su remoto en un nombre de host, por ejemplo un alias de host SSH como `git@work:owner/repo.git`, le pide que confirme, y acepta el checkout cuando el propietario del remoto y el nombre del repositorio coinciden con el repositorio de la sesión. |

224| Rama disponible | La rama de la sesión en la nube debe haber sido insertada en el remoto. Teleport la obtiene y verifica automáticamente. |224| Rama disponible | La rama de la sesión en la nube debe haber sido insertada en el remoto. Teleport la obtiene y verifica automáticamente. |

225| Misma cuenta | Debe estar autenticado en la misma cuenta de claude.ai utilizada en la sesión en la nube. |225| Misma cuenta | Debe estar autenticado en la misma cuenta de claude.ai utilizada en la sesión en la nube. |

226 226 

Details

1451El explorador cubre los archivos que usted crea y edita. Algunos archivos relacionados se encuentran en otros lugares:1451El explorador cubre los archivos que usted crea y edita. Algunos archivos relacionados se encuentran en otros lugares:

1452 1452 

1453| Archivo | Ubicación | Propósito |1453| Archivo | Ubicación | Propósito |

1454| ----------------------- | ----------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |1454| ----------------------- | ----------------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1455| `managed-settings.json` | Nivel del sistema, varía según el SO | Configuración impuesta por la empresa que no puede anular, excepto por [excepciones limitadas](/docs/es/settings#security-keys-where-the-stricter-value-applies). Consulte [dónde guardar el archivo](/docs/es/managed-settings#deploy-a-managed-settings-file) y [qué fuente administrada utiliza Claude Code](/docs/es/managed-settings#precedence-within-the-managed-tier). |1455| `managed-settings.json` | Nivel del sistema, varía según el SO | Configuración impuesta por la empresa que no puede anular, excepto por [excepciones limitadas](/docs/es/settings#security-keys-where-the-stricter-value-applies). Consulte [dónde guardar el archivo](/docs/es/managed-settings#deploy-a-managed-settings-file) y [qué fuente administrada utiliza Claude Code](/docs/es/managed-settings#precedence-within-the-managed-tier). |

1456| `CLAUDE.local.md` | Raíz del proyecto | Sus preferencias privadas para este proyecto, cargadas junto con CLAUDE.md. Créelo manualmente y agréguelo a `.gitignore`. |1456| `CLAUDE.local.md` | Raíz del proyecto | Sus preferencias privadas para este proyecto, cargadas junto con CLAUDE.md. Créelo manualmente y agréguelo a `.gitignore`. |

1457| `AGENTS.md` | Raíz del proyecto, `.claude/`, o cualquier directorio | Instrucciones del proyecto que usted escribe para agentes de codificación de IA. Claude Code puede [cargarlo](/docs/es/memory#agents-md) por su cuenta o junto con `CLAUDE.md`. |1457| `AGENTS.md` | Raíz del proyecto, `.claude/`, o cualquier directorio | Instrucciones del proyecto que usted escribe para agentes de codificación de IA. Claude Code puede [cargarlo](/docs/es/memory#agents-md) por su cuenta o junto con `CLAUDE.md`. |

1458| Plugins instalados | `~/.claude/plugins` | Mercados clonados, versiones de plugins instalados, el registro de instalación `installed_plugins.json`, y datos por plugin, administrados por comandos `claude plugin`. Los plugins [sincronizados desde su cuenta claude.ai](/docs/es/plugins-reference#synced-plugins) se descargan en `~/.claude/plugins/synced/`. Para un plugin instalado desde un mercado con fuente [`command`](/docs/es/plugin-marketplaces#command-sources) en modo de enlace, Claude Code almacena enlaces aquí en lugar de una copia, y los archivos del plugin permanecen en el directorio que imprime el comando. Una fuente `command` requiere Claude Code v2.1.229 o posterior. Un plugin listado por ruta relativa en un mercado de directorio local también [se carga en su lugar](/docs/es/plugins-reference#plugin-caching-and-file-resolution) desde su directorio de origen en lugar de desde una copia en caché. Consulte [almacenamiento en caché de plugins](/docs/es/plugins-reference#plugin-caching-and-file-resolution) para saber cómo se limpian las versiones huérfanas. |1458| Plugins instalados | `~/.claude/plugins` | Mercados clonados, versiones de plugins instalados, el registro de instalación `installed_plugins.json`, y datos por plugin, administrados por comandos `claude plugin`. Los plugins [sincronizados desde su cuenta claude.ai](/docs/es/plugins/loading#synced-plugins) se descargan en `~/.claude/plugins/synced/`. Para un plugin instalado desde un mercado con fuente [`command`](/docs/es/plugins/marketplace-reference#command-plugin-source) en modo de enlace, Claude Code almacena enlaces aquí en lugar de una copia, y los archivos del plugin permanecen en el directorio que imprime el comando. Una fuente `command` requiere Claude Code v2.1.229 o posterior. Un plugin listado por ruta relativa en un mercado de directorio local también [se carga en su lugar](/docs/es/plugins/loading#find-plugins-on-disk) desde su directorio de origen en lugar de desde una copia en caché. Consulte [almacenamiento en caché de plugins](/docs/es/plugins/loading#find-plugins-on-disk) para saber cómo se limpian las versiones huérfanas. |

1459 1459 

1460`~/.claude` también contiene datos que Claude Code escribe mientras usted trabaja: transcripciones, historial de indicaciones, instantáneas de archivos, cachés y registros. Consulte [datos de la aplicación](#application-data) a continuación.1460`~/.claude` también contiene datos que Claude Code escribe mientras usted trabaja: transcripciones, historial de indicaciones, instantáneas de archivos, cachés y registros. Consulte [datos de la aplicación](#application-data) a continuación.

1461 1461 


1529| `output-styles/*.md` | `name`, `description`, `keep-coding-instructions`, `force-for-plugin` | [Frontmatter de estilo de salida](/docs/es/output-styles#frontmatter) |1529| `output-styles/*.md` | `name`, `description`, `keep-coding-instructions`, `force-for-plugin` | [Frontmatter de estilo de salida](/docs/es/output-styles#frontmatter) |

1530| `rules/*.md` | `paths` | [Frontmatter de regla](/docs/es/memory#rules-frontmatter-reference) |1530| `rules/*.md` | `paths` | [Frontmatter de regla](/docs/es/memory#rules-frontmatter-reference) |

1531 1531 

1532Los agentes incluidos en un [plugin](/docs/es/plugins-reference#plugin-agent-frontmatter) respetan un subconjunto de los campos de subagente.1532Los agentes incluidos en un [plugin](/docs/es/plugins/components#agents) respetan un subconjunto de los campos de subagente.

1533 1533 

1534<h2 id="troubleshoot-configuration">1534<h2 id="troubleshoot-configuration">

1535 Solucionar problemas de configuración1535 Solucionar problemas de configuración


1568| `feedback-bundles/` | Archivos de transcripción redactados escritos por `/feedback` en proveedores de terceros o cuando no hay credenciales de Anthropic configuradas, para enviar a su equipo de cuenta de Anthropic |1568| `feedback-bundles/` | Archivos de transcripción redactados escritos por `/feedback` en proveedores de terceros o cuando no hay credenciales de Anthropic configuradas, para enviar a su equipo de cuenta de Anthropic |

1569| `feedback/drafts/` | [Comentarios redactados por Claude](/docs/es/tools-reference#sendfeedback-tool-behavior) en cola esperando su revisión en `/feedback`. Se barren después de `cleanupPeriodDays` o 30 días, lo que sea más corto. Cuando la cola está en su límite de 10 borradores, Claude Code elimina el borrador más antiguo para hacer espacio. |1569| `feedback/drafts/` | [Comentarios redactados por Claude](/docs/es/tools-reference#sendfeedback-tool-behavior) en cola esperando su revisión en `/feedback`. Se barren después de `cleanupPeriodDays` o 30 días, lo que sea más corto. Cuando la cola está en su límite de 10 borradores, Claude Code elimina el borrador más antiguo para hacer espacio. |

1570| `usage-data/` | `report.html` y copias de informes con marca de tiempo escritas por [`/insights`](/docs/es/costs#analyze-your-usage-patterns), más datos de análisis en caché por sesión utilizados para construirlos |1570| `usage-data/` | `report.html` y copias de informes con marca de tiempo escritas por [`/insights`](/docs/es/costs#analyze-your-usage-patterns), más datos de análisis en caché por sesión utilizados para construirlos |

1571| `skills/.trash/`, `plugins/.trash/` | [Skills](/docs/es/skills#how-synced-skills-behave) y [plugins](/docs/es/plugins-reference#synced-plugins) que la sincronización de claude.ai eliminó, como después de desactivar uno en claude.ai o dejar de sincronizar. Los archivos permanecen aquí para que pueda recuperarlos hasta que el barrido los elimine |1571| `skills/.trash/`, `plugins/.trash/` | [Skills](/docs/es/skills#how-synced-skills-behave) y [plugins](/docs/es/plugins/loading#synced-plugins) que la sincronización de claude.ai eliminó, como después de desactivar uno en claude.ai o dejar de sincronizar. Los archivos permanecen aquí para que pueda recuperarlos hasta que el barrido los elimine |

1572| `todos/`, `statsig/`, `logs/` | Directorios heredados de versiones anteriores. Ya no se escriben. El barrido elimina su contenido y luego el directorio vacío. |1572| `todos/`, `statsig/`, `logs/` | Directorios heredados de versiones anteriores. Ya no se escriben. El barrido elimina su contenido y luego el directorio vacío. |

1573 1573 

1574Los archivos de sesión en `sessions/`, memoria automática, y transcripciones de Claude Desktop y Cowork cada uno sigue su propia regla de retención:1574Los archivos de sesión en `sessions/`, memoria automática, y transcripciones de Claude Desktop y Cowork cada uno sigue su propia regla de retención:


1678También puede eliminar cualquiera de las rutas de datos de aplicación anteriores manualmente, aparte de los [archivos de estado a mantener](#state-files-to-keep). Las nuevas sesiones no se ven afectadas. La tabla a continuación muestra qué pierde para sesiones pasadas.1678También puede eliminar cualquiera de las rutas de datos de aplicación anteriores manualmente, aparte de los [archivos de estado a mantener](#state-files-to-keep). Las nuevas sesiones no se ven afectadas. La tabla a continuación muestra qué pierde para sesiones pasadas.

1679 1679 

1680| Eliminar | Pierde |1680| Eliminar | Pierde |

1681| -------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |1681| -------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1682| `~/.claude/projects/` | Reanudar, continuar y rebobinar para sesiones pasadas, y memoria automática para cada proyecto |1682| `~/.claude/projects/` | Reanudar, continuar y rebobinar para sesiones pasadas, y memoria automática para cada proyecto |

1683| `~/.claude/history.jsonl` | Recuperación de prompt de flecha hacia arriba, búsqueda de historial `Ctrl+R` y finalización de comando shell `!` |1683| `~/.claude/history.jsonl` | Recuperación de prompt de flecha hacia arriba, búsqueda de historial `Ctrl+R` y finalización de comando shell `!` |

1684| `~/.claude/paste-cache/` | Texto pegado en prompts recordados; vea [pegar contenido grande](/docs/es/terminal-config#paste-large-content) |1684| `~/.claude/paste-cache/` | Texto pegado en prompts recordados; vea [pegar contenido grande](/docs/es/terminal-config#paste-large-content) |


1692| `~/.claude/cache/changelog.md` | Nada. Se actualiza en segundo plano. |1692| `~/.claude/cache/changelog.md` | Nada. Se actualiza en segundo plano. |

1693| `~/.claude/policy-limits.json` | Nada. Se actualiza automáticamente. |1693| `~/.claude/policy-limits.json` | Nada. Se actualiza automáticamente. |

1694| `~/.claude/tasks/` | Listas de tareas que una sesión reanudada recogería |1694| `~/.claude/tasks/` | Listas de tareas que una sesión reanudada recogería |

1695| `~/.claude/skills/.trash/`, `~/.claude/plugins/.trash/` | La oportunidad de recuperar [skills sincronizados](/docs/es/skills#how-synced-skills-behave) y [plugins sincronizados](/docs/es/plugins-reference#synced-plugins) que Claude Code eliminó |1695| `~/.claude/skills/.trash/`, `~/.claude/plugins/.trash/` | La oportunidad de recuperar [skills sincronizados](/docs/es/skills#how-synced-skills-behave) y [plugins sincronizados](/docs/es/plugins/loading#synced-plugins) que Claude Code eliminó |

1696| `~/.claude/debug/`, `~/.claude/plans/`, `~/.claude/session-env/`, `~/.claude/shell-snapshots/`, `~/.claude/backups/` | Nada orientado al usuario |1696| `~/.claude/debug/`, `~/.claude/plans/`, `~/.claude/session-env/`, `~/.claude/shell-snapshots/`, `~/.claude/backups/` | Nada orientado al usuario |

1697| `~/.claude/todos/`, `~/.claude/statsig/`, `~/.claude/logs/`, `~/.claude/image-cache/` | Nada. Directorios heredados no escritos por versiones actuales. |1697| `~/.claude/todos/`, `~/.claude/statsig/`, `~/.claude/logs/`, `~/.claude/image-cache/` | Nada. Directorios heredados no escritos por versiones actuales. |

1698 1698 

Details

242 242 

243Claude Code también ejecuta este comando al inicio cuando no puede validar sus credenciales de AWS existentes, y muestra la salida del comando en un panel de `Authentication` hasta que el inicio de sesión se complete.243Claude Code también ejecuta este comando al inicio cuando no puede validar sus credenciales de AWS existentes, y muestra la salida del comando en un panel de `Authentication` hasta que el inicio de sesión se complete.

244 244 

245Con `awsAuthRefresh` configurado, ejecute `/login`, seleccione **plataforma de terceros**, luego seleccione **Claude Platform on AWS · actualizar credenciales** en **Usando plataformas de terceros**. Claude Code ejecuta el comando configurado y vuelve a leer sus credenciales de AWS sin reiniciar. Esta opción requiere Claude Code v2.1.186 o posterior.245Con `awsAuthRefresh` configurado, ejecute `/login`, seleccione **plataforma de terceros**, luego seleccione **Claude Platform on AWS · actualizar credenciales** en **Usando plataformas de terceros**. Claude Code ejecuta el comando configurado y vuelve a leer sus credenciales de AWS sin reiniciar.

246 246 

247**Opción B: Clave API del espacio de trabajo**247**Opción B: Clave API del espacio de trabajo**

248 248 

claude-projects.md +92 −90

Details

10 Projects está en versión beta pública en los planes Pro y Max y se está implementando gradualmente, comenzando con cuentas que han utilizado [sesiones en la nube](/docs/es/claude-code-on-the-web) y no tienen proyectos existentes en el chat de claude.ai o en Cowork. Aún no está disponible en los planes Team o Enterprise. Si **Projects** no aparece en la barra lateral en [claude.ai/code](https://claude.ai/code) o en la pestaña Code de la [aplicación de escritorio](/docs/es/desktop), el despliegue aún no ha llegado a su cuenta, y puede [unirse a la lista de espera](https://claude.com/form/projects). [Ejecutar agentes en paralelo](/docs/es/agents) enumera lo que puede usar mientras tanto.10 Projects está en versión beta pública en los planes Pro y Max y se está implementando gradualmente, comenzando con cuentas que han utilizado [sesiones en la nube](/docs/es/claude-code-on-the-web) y no tienen proyectos existentes en el chat de claude.ai o en Cowork. Aún no está disponible en los planes Team o Enterprise. Si **Projects** no aparece en la barra lateral en [claude.ai/code](https://claude.ai/code) o en la pestaña Code de la [aplicación de escritorio](/docs/es/desktop), el despliegue aún no ha llegado a su cuenta, y puede [unirse a la lista de espera](https://claude.com/form/projects). [Ejecutar agentes en paralelo](/docs/es/agents) enumera lo que puede usar mientras tanto.

11</Note>11</Note>

12 12 

13Un proyecto es una conversación en curso donde Claude coordina un flujo de trabajo relacionado para usted. Usted le dice qué necesita hacerse y comienza un hilo para cada tarea. Cada hilo es una [sesión en la nube](/docs/es/claude-code-on-the-web): Claude Code ejecutándose en la nube en lugar de en su máquina. Los hilos se ejecutan en paralelo y continúan después de cerrar la computadora portátil, y puede verificarlos y dirigirlos desde su teléfono.13Un proyecto es una conversación en curso donde Claude coordina un flujo de trabajo relacionado para usted. Usted le dice qué necesita hacerse y comienza un hilo para cada tarea.

14 

15Cada hilo es generalmente una [sesión en la nube](/docs/es/claude-code-on-the-web): Claude Code ejecutándose en la nube en lugar de en su máquina. Cuando una tarea necesita algo que solo su computadora tiene, puede pedirle a Claude que ejecute ese hilo en su computadora en su lugar a través de [Remote Control](/docs/es/remote-control). Los hilos se ejecutan en paralelo y puede verificarlos y dirigirlos desde su teléfono. Los hilos en la nube continúan después de cerrar la computadora portátil.

14 16 

15Sin un proyecto, ejecutar varias sesiones significa hacer la coordinación usted mismo: decide en qué trabaja cada una, repite el mismo contexto al inicio de cada una, y verifica cuál terminó o necesita una respuesta. Con un proyecto, en su lugar:17Sin un proyecto, ejecutar varias sesiones significa hacer la coordinación usted mismo: decide en qué trabaja cada una, repite el mismo contexto al inicio de cada una, y verifica cuál terminó o necesita una respuesta. Con un proyecto, en su lugar:

16 18 

17* **Envíe trabajo a un solo lugar**: pegue un informe de error, un seguimiento de pila o una lista de tareas en la conversación cada vez que surja uno. Claude comienza un hilo para cada pieza de trabajo o lo pasa al hilo que ya está trabajando en esa área, y responde preguntas rápidas en su lugar.19* **Envíe trabajo a un solo lugar**: pegue un informe de error, un seguimiento de pila o una lista de tareas en la conversación cada vez que surja uno. Claude comienza un hilo para cada pieza de trabajo o lo pasa al hilo que ya está trabajando en esa área, y responde preguntas rápidas en su lugar.

18* **Establezca el contexto una sola vez**: cada nuevo hilo comienza con los repositorios, instrucciones y memoria del proyecto, por lo que una regla que establezca una sola vez, como qué rama dirigirse, llega a todos ellos.20* **Establezca el contexto una sola vez**: cada nuevo hilo comienza con las instrucciones del proyecto, por lo que una regla que establezca una sola vez, como qué rama dirigirse, llega a todos ellos.

19* **Aléjese y regrese al trabajo terminado**: cuando regrese una hora después o a la mañana siguiente, el panel **Overview** muestra qué hilos terminaron, qué solicitudes de extracción están listas para revisión y qué hilo está esperando su respuesta.21* **Aléjese y regrese al trabajo terminado**: cuando regrese una hora después o a la mañana siguiente, el panel **Overview** muestra qué hilos terminaron, qué solicitudes de extracción están listas para revisión y qué hilo está esperando su respuesta.

20 22 

21Si ya sabe el trabajo que desea que un proyecto ejecute, vaya directamente a [Crear un proyecto](#create-a-project).23Si ya sabe el trabajo que desea que un proyecto ejecute, vaya directamente a [Crear un proyecto](#create-a-project).


37 Cuándo algo más se adapta mejor39 Cuándo algo más se adapta mejor

38</h3>40</h3>

39 41 

40Los hilos funcionan en repositorios de GitHub y en los archivos, carpetas y carpetas de Google Drive que cargues en el proyecto, no en archivos o herramientas que existan solo en tu máquina. Algo más se adapta mejor en estos casos:42Los hilos funcionan en repositorios de GitHub y en los archivos, carpetas y carpetas de Google Drive que cargues en el proyecto, no en archivos o herramientas que existan solo en tu máquina. Si una tarea necesita tu máquina, pídele a Claude que ejecute su hilo allí a través de [Remote Control](/docs/es/remote-control). [Limitaciones](#limitations) enumera lo que eso necesita. Algo más se adapta mejor en estos casos:

41 43 

42* **Una tarea que cabe en una sesión**: "Arreglar la prueba de inicio de sesión inestable." Comienza una [sesión en la nube](/docs/es/claude-code-on-the-web) tú mismo.44* **Una tarea que cabe en una sesión**: "Arreglar la prueba de inicio de sesión inestable." Comienza una [sesión en la nube](/docs/es/claude-code-on-the-web) tú mismo.

43* **Trabajo que necesita herramientas o servicios que solo tu máquina puede alcanzar**: una base de datos local, un emulador de dispositivo, una API detrás de tu VPN. Usa una sesión local, o [vista de agente](/docs/es/agent-view) para ejecutar varias a la vez. Si el trabajo solo necesita archivos locales, cárgalos en el proyecto en su lugar.45* **Trabajo donde cada tarea necesita tu máquina**: una base de datos local, un emulador de dispositivo, o una API detrás de tu VPN. Usa una sesión local, o [vista de agente](/docs/es/agent-view) para ejecutar varias a la vez. Si el trabajo solo necesita archivos locales, cárgalos en el proyecto en su lugar.

44* **Una tarea que se repite en un horario sin conversación alrededor**: "Publicar un informe de dependencias cada lunes." Crea una [rutina](/docs/es/routines) por su cuenta.46* **Una tarea que se repite en un horario sin conversación alrededor**: "Publicar un informe de dependencias cada lunes." Crea una [rutina](/docs/es/routines) por su cuenta.

45* **Varias personas dándole trabajo a Claude y dirigiéndolo juntos en un canal de Slack**: ver [Claude Tag](https://claude.com/docs/claude-tag/overview).47* **Varias personas dándole trabajo a Claude y dirigiéndolo juntos en un canal de Slack**: ver [Claude Tag](https://claude.com/docs/claude-tag/overview).

46 48 


53Un proyecto es una conversación coordinadora con Claude más los hilos que comienza para hacer el trabajo. Estas son sus partes:55Un proyecto es una conversación coordinadora con Claude más los hilos que comienza para hacer el trabajo. Estas son sus partes:

54 56 

55* **La conversación del proyecto**: una sesión de larga duración donde Claude actúa como coordinador. Toma lo que envías, decide qué se convierte en un hilo, y mantiene un registro de cada hilo que comenzó. Ve lo que los hilos reportan, no cada paso que toman.57* **La conversación del proyecto**: una sesión de larga duración donde Claude actúa como coordinador. Toma lo que envías, decide qué se convierte en un hilo, y mantiene un registro de cada hilo que comenzó. Ve lo que los hilos reportan, no cada paso que toman.

56* **Hilos**: los trabajadores. Cada uno es una [sesión en la nube](/docs/es/claude-code-on-the-web) separada con su propia ventana de contexto que hace una pieza de trabajo en su propia rama, abre una solicitud de extracción cuando el trabajo lo requiere, e informa a la conversación cuando termina.58* **Hilos**: los trabajadores. Cada uno es una sesión separada con su propia ventana de contexto que hace una pieza de trabajo e informa a la conversación cuando termina. Un hilo en la nube trabaja en su propia rama y abre una solicitud de extracción cuando el trabajo lo requiere.

57* **Lo que cada hilo comienza con**:59* **Lo que cada hilo en la nube comienza con**:

58 * Los repositorios y archivos del proyecto, más sus [instrucciones y memoria](#give-a-project-standing-context)60 * Los repositorios y archivos del proyecto, más sus [instrucciones y memoria](#give-a-project-standing-context)

59 * El `CLAUDE.md` y skills en [cada uno de los repositorios del proyecto](#what-threads-pick-up-from-your-repositories), y en un proyecto con un repositorio, las reglas de permisos y hooks de ese repositorio también61 * El `CLAUDE.md` y skills en [cada uno de los repositorios del proyecto](#what-threads-pick-up-from-your-repositories), y en un proyecto con un repositorio, las reglas de permisos y hooks de ese repositorio también

60 * Los [conectores](#get-skills-plugins-connectors-and-tools-into-threads) en tu cuenta de claude.ai62 * Los [conectores](#get-skills-plugins-connectors-and-tools-into-threads) en tu cuenta de claude.ai

61 * Un [entorno en la nube](#choose-an-environment-for-threads) que establece su acceso a la red, variables de entorno, credenciales de API, y herramientas instaladas63 * Un [entorno en la nube](#choose-an-environment-for-threads) que establece su acceso a la red, variables de entorno, credenciales de API, y herramientas instaladas

62* **El panel Overview**: donde [ves todos los hilos a la vez](#see-what-needs-you-in-overview) y cuáles de ellos te necesitan. Sus otras pestañas son **Library** para los archivos que agregaste y los archivos que produjeron los hilos, **Pull requests** para los que abrieron los hilos, y **Routines** para el trabajo programado en el proyecto.64* **El panel Overview**: donde [ves todos los hilos a la vez](#see-what-needs-you-in-overview) y cuáles de ellos te necesitan. Sus otras pestañas son **Library** para los archivos que agregaste y los archivos que produjeron los hilos, **Pull requests** para los que abrieron los hilos, y **Routines** para el trabajo programado en el proyecto.

63 65 

64Los hilos no recogen nada de la configuración de Claude Code en tu propia máquina. [Obtener skills, plugins, conectores y herramientas en hilos](#get-skills-plugins-connectors-and-tools-into-threads) cubre cómo darles lo que de otro modo les faltaría.66Los hilos en la nube no recogen nada de la configuración de Claude Code en tu propia máquina. [Obtener skills, plugins, conectores y herramientas en hilos](#get-skills-plugins-connectors-and-tools-into-threads) cubre cómo darles lo que de otro modo les faltaría.

65 67 

66Así es como esas partes se conectan, desde ti a través de la conversación hasta los hilos haciendo el trabajo, con **Overview** rastreando su estado:68Así es como esas partes se conectan, desde ti a través de la conversación hasta los hilos haciendo el trabajo, con **Overview** rastreando su estado:

67 69 

68<Frame>70<Frame>

69 <img src="https://mintcdn.com/claude-code/e8CLbxM17eD7cAiv/images/claude-projects-overview.svg?fit=max&auto=format&n=e8CLbxM17eD7cAiv&q=85&s=dbf446f69f0bbdb9961d21af207cb93b" className="dark:hidden" alt="Diagrama de un proyecto. Escribes en la conversación del proyecto, donde Claude responde o comienza un hilo. Cada hilo es una sesión en la nube trabajando en su propia rama y solicitud de extracción. El panel Overview enumera hilos por estado, como listo para revisión, esperando por ti, y trabajando." width="600" height="250" data-path="images/claude-projects-overview.svg" />71 <img src="https://mintcdn.com/claude-code/e8CLbxM17eD7cAiv/images/claude-projects-overview.svg?fit=max&auto=format&n=e8CLbxM17eD7cAiv&q=85&s=dbf446f69f0bbdb9961d21af207cb93b" className="dark:hidden" alt="Diagrama de un proyecto. Escribes en la conversación del proyecto, donde Claude responde o comienza un hilo. Cada hilo en la nube trabaja en su propia rama y solicitud de extracción. El panel Overview enumera hilos por estado, como listo para revisión, esperando por ti, y trabajando." width="600" height="250" data-path="images/claude-projects-overview.svg" />

70 72 

71 <img src="https://mintcdn.com/claude-code/e8CLbxM17eD7cAiv/images/claude-projects-overview-dark.svg?fit=max&auto=format&n=e8CLbxM17eD7cAiv&q=85&s=549a5ba9fea8433729babc37a1f6e9c8" className="hidden dark:block" alt="Diagrama de un proyecto. Escribes en la conversación del proyecto, donde Claude responde o comienza un hilo. Cada hilo es una sesión en la nube trabajando en su propia rama y solicitud de extracción. El panel Overview enumera hilos por estado, como listo para revisión, esperando por ti, y trabajando." width="600" height="250" data-path="images/claude-projects-overview-dark.svg" />73 <img src="https://mintcdn.com/claude-code/e8CLbxM17eD7cAiv/images/claude-projects-overview-dark.svg?fit=max&auto=format&n=e8CLbxM17eD7cAiv&q=85&s=549a5ba9fea8433729babc37a1f6e9c8" className="hidden dark:block" alt="Diagrama de un proyecto. Escribes en la conversación del proyecto, donde Claude responde o comienza un hilo. Cada hilo en la nube trabaja en su propia rama y solicitud de extracción. El panel Overview enumera hilos por estado, como listo para revisión, esperando por ti, y trabajando." width="600" height="250" data-path="images/claude-projects-overview-dark.svg" />

72</Frame>74</Frame>

73 75 

74<h2 id="create-a-project">76<h2 id="create-a-project">


90 92 

91* **Plan**: estás en Pro o Max y **Projects** aparece en tu barra lateral.93* **Plan**: estás en Pro o Max y **Projects** aparece en tu barra lateral.

92* **GitHub, si el proyecto trabajará en código**: tu código está en github.com en lugar de GitHub Enterprise Server, GitLab o Bitbucket, tu cuenta de GitHub conectada tiene acceso de inserción a él, y la Claude GitHub App está instalada en él. Si conectaste GitHub con [`/web-setup`](/docs/es/web-quickstart#connect-from-your-terminal), ese token permite que tus otras sesiones en la nube accedan a un repositorio pero no es suficiente para hilos de proyecto, que necesitan la Claude GitHub App. [Configurar acceso a GitHub](#set-up-github-access) tiene los pasos.94* **GitHub, si el proyecto trabajará en código**: tu código está en github.com en lugar de GitHub Enterprise Server, GitLab o Bitbucket, tu cuenta de GitHub conectada tiene acceso de inserción a él, y la Claude GitHub App está instalada en él. Si conectaste GitHub con [`/web-setup`](/docs/es/web-quickstart#connect-from-your-terminal), ese token permite que tus otras sesiones en la nube accedan a un repositorio pero no es suficiente para hilos de proyecto, que necesitan la Claude GitHub App. [Configurar acceso a GitHub](#set-up-github-access) tiene los pasos.

93* **Red, credenciales y herramientas**: estos provienen del [entorno en la nube](#choose-an-environment-for-threads) del proyecto. El entorno predeterminado ya alcanza [registros de paquetes comunes](/docs/es/cloud-environments#default-allowed-domains), así que verifica esto solo si el trabajo necesita otros dominios, un secreto, o una herramienta que no esté preinstalada. Si el trabajo necesita un servidor MCP, verifica que aparezca como conectado en tus [conectores de claude.ai](https://claude.ai/customize/connectors).95* **Red, credenciales y herramientas**: para hilos en la nube, estos provienen del [entorno en la nube](#choose-an-environment-for-threads) del proyecto. El entorno predeterminado ya alcanza [registros de paquetes comunes](/docs/es/cloud-environments#default-allowed-domains), así que verifica esto solo si el trabajo necesita otros dominios, un secreto, o una herramienta que no esté preinstalada. Si el trabajo necesita un servidor MCP, verifica que aparezca como conectado en tus [conectores de claude.ai](https://claude.ai/customize/connectors).

94 96 

95<h3 id="start-a-new-project-from-scratch">97<h3 id="start-a-new-project-from-scratch">

96 Comienza un nuevo proyecto desde cero98 Comienza un nuevo proyecto desde cero


157Cuando uno de estos pasos está incompleto, el diálogo **New project** y la página del proyecto nombran el paso faltante y enlazan a donde lo terminas. Termina el paso allí, luego haz clic en **Check again** si el diálogo lo ofrece. Si un repositorio aún falta de la lista después, abre la instalación de la Claude GitHub App en GitHub, en [github.com/settings/installations](https://github.com/settings/installations) para una cuenta personal, y confirma que el repositorio está listado bajo **Repository access**. Para los mensajes de error que un hilo o el proyecto reportan cuando el acceso aún es incorrecto, ver [Errores de acceso al repositorio](#repository-access-errors).159Cuando uno de estos pasos está incompleto, el diálogo **New project** y la página del proyecto nombran el paso faltante y enlazan a donde lo terminas. Termina el paso allí, luego haz clic en **Check again** si el diálogo lo ofrece. Si un repositorio aún falta de la lista después, abre la instalación de la Claude GitHub App en GitHub, en [github.com/settings/installations](https://github.com/settings/installations) para una cuenta personal, y confirma que el repositorio está listado bajo **Repository access**. Para los mensajes de error que un hilo o el proyecto reportan cuando el acceso aún es incorrecto, ver [Errores de acceso al repositorio](#repository-access-errors).

158 160 

159<h2 id="work-in-a-project">161<h2 id="work-in-a-project">

160 Trabaja en un proyecto162 Trabajar en un proyecto

161</h2>163</h2>

162 164 

163Dale trabajo a Claude a través de la conversación del proyecto: tareas una a la vez o varias a la vez, más actualizaciones y pensamientos sueltos a medida que surjan. Claude enruta cada mensaje, y los hilos hacen el trabajo e informan.165Dale trabajo a Claude a través de la conversación del proyecto: tareas una a la vez o varias a la vez, más actualizaciones y pensamientos sueltos conforme surjan. Claude enruta cada mensaje, y los hilos hacen el trabajo e informan.

164 166 

165<h3 id="your-first-batch">167<h3 id="your-first-batch">

166 Tu primer lote168 Su primer lote

167</h3>169</h3>

168 170 

169Antes de enviar a un nuevo proyecto un lote de trabajo, configúralo para que los primeros hilos regresen como deseas:171Antes de enviar a un nuevo proyecto un lote de trabajo, configúrelo para que los primeros hilos regresen de la manera que desea:

170 172 

1711. [Escribe instrucciones del proyecto](#write-project-instructions): el resumen que cada hilo comienza, como qué rama dirigirse, cómo un hilo verifica su trabajo, y qué necesita tu aprobación.1731. [Escribir instrucciones del proyecto](#write-project-instructions): el resumen que cada hilo comienza, como qué rama dirigirse, cómo un hilo verifica su trabajo, y qué necesita su aprobación.

1722. Envía una pequeña pieza del trabajo real, o comienza uno de los hilos que Claude sugirió, y abre el hilo cuando termine para ver cómo informa y qué hizo en su rama. Si asumió algo incorrecto o no pudo alcanzar lo que necesitaba, [Los hilos adivinaron o se estancaron en lugar de preguntar](#threads-guessed-or-stalled-instead-of-asking) cubre dónde arreglarlo.1742. Envíe una pequeña pieza del trabajo real, o inicie uno de los hilos que Claude sugirió si ofreció alguno, y abra el hilo cuando termine para ver cómo informa y qué hizo en su rama. Si asumió algo incorrecto o no pudo alcanzar lo que necesitaba, [Los hilos adivinaron o se estancaron en lugar de preguntar](#threads-guessed-or-stalled-instead-of-asking) cubre dónde arreglarlo.

1733. Verifica **Thread model** y **Thread effort** en **Project settings > General**. Un nuevo proyecto ejecuta cada hilo en Opus con alto esfuerzo, que utiliza tu plan más rápido; [Elige modelos y deja que Claude maneje el contexto](#choose-models-and-let-claude-manage-context) cubre las alternativas.1753. Verifique **Thread model** y **Thread effort** en **Project settings > General**. Un nuevo proyecto ejecuta cada hilo en Opus con esfuerzo alto, que consume su plan más rápidamente; [Elegir modelos y dejar que Claude gestione el contexto](#choose-models-and-let-claude-manage-context) cubre las alternativas.

1744. Pídele a Claude que [proponga hilos antes de comenzarlos y que ejecute algunos a la vez](#tune-how-claude-runs-a-project), y suelta esos límites una vez que algunos hilos regresen como deseas.1764. Pida a Claude que [proponga hilos antes de iniciarlos y ejecute algunos a la vez](#tune-how-claude-runs-a-project), y elimine esos límites una vez que algunos hilos regresen de la manera que desea.

175 177 

176<h3 id="send-work-and-read-results">178<h3 id="send-work-and-read-results">

177 Envía trabajo y lee resultados179 Enviar trabajo y leer resultados

178</h3>180</h3>

179 181 

180Claude decide dónde va cada mensaje que envías en la conversación:182Claude decide dónde va cada mensaje que envía en la conversación:

181 183 

182* Una pregunta rápida generalmente obtiene una respuesta en la conversación.184* Una pregunta rápida generalmente obtiene una respuesta en la conversación.

183* El nuevo trabajo va a un hilo nuevo o a un hilo que ya está trabajando en esa área, y Claude te dice cuál. Cada hilo nuevo aparece bajo tu mensaje como una tarjeta: una caja con el título y estado del hilo, que haces clic para abrir el hilo.185* El trabajo nuevo va a un hilo nuevo o a un hilo que ya está trabajando en esa área, y Claude le dice cuál. Cada hilo nuevo aparece bajo su mensaje como una tarjeta: una caja con el título y estado del hilo, que hace clic para abrir el hilo.

184* Varias tareas no relacionadas en un mensaje se convierten en hilos separados.186* Varias tareas no relacionadas en un mensaje se convierten en hilos separados.

185 187 

186Si Claude enruta algo diferente a lo que querías, dilo. [Ajusta cómo Claude ejecuta un proyecto](#tune-how-claude-runs-a-project) enumera cosas que puedes decirle, como reutilizar un hilo existente para seguimientos o responder en el lugar en lugar de comenzar un hilo.188Si Claude enruta algo diferente a lo que deseaba, dígalo. [Ajustar cómo Claude ejecuta un proyecto](#tune-how-claude-runs-a-project) enumera cosas que puede decirle, como reutilizar un hilo existente para seguimientos o responder en su lugar en lugar de iniciar un hilo.

187 189 

188Los resultados completos de un hilo permanecen en el hilo, y abres su tarjeta en la conversación para leerlos. Los archivos que produjo un hilo también están en la pestaña **Library** en **Overview**.190Los resultados completos de un hilo permanecen en el hilo, y abre su tarjeta en la conversación para leerlos. Los archivos que produjo un hilo también están en la pestaña **Library** en **Overview**.

189 191 

190A veces Claude propone hilos en lugar de comenzarlos, en una lista **Suggested threads**. Haz clic en la flecha en una sugerencia para comenzar ese hilo. Cuando se enumeran varios, un botón debajo de la lista comienza todos ellos.192A veces Claude propone hilos en lugar de iniciarlos, en una lista de **Suggested threads**. Haga clic en la flecha en una sugerencia para iniciar ese hilo. Cuando se enumeran varios, un botón debajo de la lista inicia todos ellos.

191 193 

192<h3 id="review-a-thread’s-pull-request">194<h3 id="review-a-thread’s-pull-request">

193 Revisa la solicitud de extracción de un hilo195 Revisar la solicitud de extracción de un hilo

194</h3>196</h3>

195 197 

196Cuando un hilo cambia código, esto es lo que hace a menos que le digas lo contrario:198Cuando un hilo en la nube cambia código, esto es lo que hace a menos que le diga lo contrario:

197 199 

198* **Branch**: trabaja en una rama nueva, comenzada desde la rama predeterminada del repositorio.200* **Branch**: trabaja en una rama nueva, iniciada desde la rama predeterminada del repositorio.

199* **Pull request**: abre una cuando lo pides, y puede abrir una por su cuenta para una corrección de error u otro cambio concreto.201* **Pull request**: abre uno cuando lo solicita, y puede abrir uno por su cuenta para una corrección de errores u otro cambio concreto.

200* **Después de que se abre**: observa la solicitud de extracción con [auto-fix](/docs/es/claude-code-on-the-web#auto-fix-pull-requests) activado, independientemente de si auto-fix está activado para tus otras sesiones en la nube. Inserta correcciones cuando CI falla, aborda comentarios de revisión, y responde en el hilo cuando las verificaciones pasan y la solicitud de extracción está lista para ti.202* **After it opens**: vigila la solicitud de extracción con [auto-fix](/docs/es/claude-code-on-the-web#auto-fix-pull-requests) activado, independientemente de si auto-fix está activado para sus otras sesiones en la nube. Envía correcciones cuando CI falla, aborda comentarios de revisión, e informa en el hilo cuando las comprobaciones pasan y la solicitud de extracción está lista para usted.

201 203 

202Cuando un hilo ha insertado una rama o abierto una solicitud de extracción, su tarjeta en la conversación puede mostrar un botón para el próximo paso:204Cuando un hilo ha enviado una rama o abierto una solicitud de extracción, su tarjeta en la conversación puede mostrar un botón para el siguiente paso:

203 205 

204* **Resolve conflicts**, **Fix CI**, **Address comments**, y **Merge it** envían esa instrucción al hilo como un mensaje de ti, así que puedes indicar al hilo tú mismo en lugar de esperar a que reaccione a la solicitud de extracción.206* **Resolve conflicts**, **Fix CI**, **Address comments**, y **Merge it** envían esa instrucción al hilo como un mensaje de usted, para que pueda indicar al hilo usted mismo en lugar de esperar a que reaccione a la solicitud de extracción.

205* **Review PR** abre la solicitud de extracción en GitHub.207* **Review PR** abre la solicitud de extracción en GitHub.

206* **Create PR** aparece cuando un hilo inactivo ha insertado una rama pero no ha abierto una solicitud de extracción. Hacerlo clic crea la solicitud de extracción desde esa rama directamente en lugar de enviar al hilo una instrucción para abrir una.208* **Create PR** aparece cuando un hilo inactivo ha enviado una rama pero no ha abierto una solicitud de extracción. Al hacer clic, se crea la solicitud de extracción desde esa rama directamente en lugar de enviar al hilo una instrucción para abrir una.

207 209 

208Para cambiar cuándo los hilos abren solicitudes de extracción, por ejemplo solo cuando lo pides, o qué rama comienzan, dilo en la tarea o en [instrucciones del proyecto](#write-project-instructions).210Para cambiar cuándo los hilos abren solicitudes de extracción, por ejemplo solo cuando lo solicita, o de qué rama comienzan, dígalo en la tarea o en [instrucciones del proyecto](#write-project-instructions).

209 211 

210<h3 id="see-what-needs-you-in-overview">212<h3 id="see-what-needs-you-in-overview">

211 Ve qué te necesita en Overview213 Ver qué lo necesita en Overview

212</h3>214</h3>

213 215 

214El panel **Overview** junto a la conversación rastrea los hilos del proyecto. Ya está abierto la primera vez que abres un nuevo proyecto. El botón **Overview** en el encabezado del proyecto lo cierra y reabre, y muestra un punto cuando un hilo te está esperando.216El panel **Overview** junto a la conversación rastrea los hilos del proyecto. Ya está abierto la primera vez que abre un nuevo proyecto. El botón **Overview** en el encabezado del proyecto lo cierra y reabre, y muestra un punto cuando un hilo lo está esperando.

215 217 

216En la aplicación de escritorio, también obtienes una notificación de escritorio cuando Claude publica en la conversación, un hilo golpea un error, o un hilo necesita tu entrada, así que no tienes que mantener el proyecto abierto para enterarte. Para también obtener uno cada vez que un hilo termina un turno, o para desactivarlos para un proyecto, elige **Notifications** en el menú de la barra lateral del proyecto. Estas notificaciones son solo de escritorio: en un navegador, verifica el punto en el botón **Overview**.218En la aplicación de escritorio, también obtiene una notificación de escritorio cuando Claude publica en la conversación, un hilo alcanza un error, o un hilo necesita su entrada, para que no tenga que mantener el proyecto abierto para enterarse. Para obtener también uno cada vez que un hilo termina un turno, o para desactivarlos para un proyecto, elija **Notifications** en el menú de la barra lateral del proyecto. Estas notificaciones son solo de escritorio: en un navegador, verifique el punto en el botón **Overview**.

217 219 

218La pestaña **Threads** del panel agrupa hilos por estado:220La pestaña **Threads** del panel agrupa hilos por estado:

219 221 

220| Grupo | Qué hay en él |222| Grupo | Qué contiene |

221| :------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |223| :------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

222| **Ready for review** | Hilos cuya solicitud de extracción está abierta y esperando revisión |224| **Ready for review** | Hilos cuya solicitud de extracción está abierta y esperando revisión |

223| **Waiting on you** | Hilos que necesitan tu respuesta o aprobación, o que fallaron |225| **Waiting on you** | Hilos que necesitan su respuesta o aprobación, o que fallaron |

224| **Working** | Hilos aún en ejecución |226| **Working** | Hilos aún en ejecución |

225| **Landing** | Hilos cuya solicitud de extracción está aprobada o en cola para fusionar |227| **Landing** | Hilos cuya solicitud de extracción está aprobada o en cola para fusionar |

226| **Idle** | Hilos que terminaron y no están esperando nada |228| **Idle** | Hilos que terminaron y no están esperando nada |

227| **Resolved** | Hilos marcados como hecho: por ti desde el menú del hilo, por Claude una vez que hayas tomado el último paso, como fusionar su solicitud de extracción, o automáticamente después de una semana sin actividad. Puedes reabrir uno desde el mismo menú |229| **Resolved** | Hilos marcados como completados: por usted desde el menú del hilo, por Claude una vez que ha tomado el último paso, como fusionar su solicitud de extracción, o automáticamente después de una semana sin actividad. Puede reabrir uno desde el mismo menú |

228 230 

229Las otras pestañas del panel son **Library** para los archivos y carpetas que agregaste y los archivos que produjeron los hilos, **Pull requests** una vez que los hilos hayan abierto alguno, y **Routines** para las [rutinas](/docs/es/routines) que Claude configuró desde este proyecto.231Las otras pestañas del panel son **Library** para los archivos y carpetas que agregó y los archivos que produjeron los hilos, **Pull requests** una vez que los hilos han abierto alguno, y **Routines** para las [rutinas](/docs/es/routines) que Claude configuró desde este proyecto.

230 232 

231<h3 id="open-a-thread-when-you-need-control">233<h3 id="open-a-thread-when-you-need-control">

232 Abre un hilo cuando necesites control234 Abrir un hilo cuando necesita control

233</h3>235</h3>

234 236 

235Haz clic en la tarjeta de un hilo en la conversación o su fila en **Overview** para abrir su transcripción en el panel Overview. Desde allí puedes:237Haga clic en la tarjeta de un hilo en la conversación o su fila en **Overview** para abrir su transcripción en el panel Overview. Desde allí puede:

236 238 

237* Leer qué hizo Claude, paso a paso.239* Leer qué hizo Claude, paso a paso.

238* Dirige la tarea escribiendo en el cuadro de mensaje del hilo. Un mensaje allí va directamente a ese hilo, mientras que un seguimiento en la conversación del proyecto lo alcanza solo cuando Claude coincide el seguimiento con ese hilo.240* Dirigir la tarea escribiendo en el cuadro de mensaje del hilo. Un mensaje allí va directamente a ese hilo, mientras que un seguimiento en la conversación del proyecto lo alcanza solo cuando Claude coincide el seguimiento con ese hilo.

239* Responde a un aviso de permiso que el hilo está esperando.241* Responder a un aviso de permiso que el hilo está esperando.

240* Interrumpe el hilo con **Stop**, que reemplaza el botón enviar mientras el hilo está trabajando, o presionando Esc.242* Interrumpir el hilo con **Stop**, que reemplaza el botón enviar mientras el hilo está trabajando, o presionando Esc.

241 243 

242<h3 id="choose-models-and-let-claude-manage-context">244<h3 id="choose-models-and-let-claude-manage-context">

243 Elige modelos y deja que Claude maneje el contexto245 Elegir modelos y dejar que Claude gestione el contexto

244</h3>246</h3>

245 247 

246Establece modelos y esfuerzo en **Project settings > General**. Un nuevo proyecto ejecuta Opus en todas partes, con alto [esfuerzo](/docs/es/model-config#adjust-effort-level) para hilos y bajo esfuerzo para la conversación:248Establezca modelos y esfuerzo en **Project settings > General**. Un nuevo proyecto ejecuta Opus en todas partes, con [esfuerzo](/docs/es/model-config#adjust-effort-level) alto para hilos y esfuerzo bajo para la conversación:

247 249 

248* **Thread model** y **Thread effort** se aplican a los hilos. Para usar un modelo diferente para una tarea, pídelo en la tarea; para un hilo ya en ejecución, usa el selector de modelo de ese hilo.250* **Thread model** y **Thread effort** se aplican a los hilos. Para usar un modelo diferente para una tarea, solicítelo en la tarea; para un hilo ya en ejecución, use el selector de modelo de ese hilo.

249* **Coordinator model** y **Coordinator effort** se aplican a Claude en la conversación del proyecto.251* **Coordinator model** y **Coordinator effort** se aplican a Claude en la conversación del proyecto.

250 252 

251No administras ventanas de contexto en un proyecto. Los hilos se compactan automáticamente, y la conversación funciona a partir de mensajes recientes, hilos recientes, y memoria del proyecto en lugar de su historial completo, así que sigue funcionando mientras el proyecto se ejecute. Pon cualquier cosa que nunca deba descartarse en [memoria del proyecto](#give-a-project-standing-context). Si un hilo crece más allá de su contexto, muestra [Claude ran out of context on this turn](#context-limit).253No gestiona ventanas de contexto en un proyecto. Los hilos se compactan automáticamente, y la conversación funciona a partir de mensajes recientes, hilos recientes, y memoria del proyecto en lugar de su historial completo, para que continúe mientras el proyecto se ejecute. Ponga cualquier cosa que nunca deba descartarse en [memoria del proyecto](#give-a-project-standing-context). Si un hilo crece más que su contexto, muestra [Claude ran out of context on this turn](#context-limit).

252 254 

253<h3 id="tune-how-claude-runs-a-project">255<h3 id="tune-how-claude-runs-a-project">

254 Ajusta cómo Claude ejecuta un proyecto256 Ajustar cómo Claude ejecuta un proyecto

255</h3>257</h3>

256 258 

257Dile a Claude en la conversación cuántos hilos ejecutar a la vez, cuándo publicar actualizaciones, y cuándo abrir solicitudes de extracción. Si Claude está coordinando de una manera que no deseas, dilo. Por ejemplo, puedes decir:259Dígale a Claude en la conversación cuántos hilos ejecutar a la vez, cuándo publicar actualizaciones, y cuándo abrir solicitudes de extracción. Si Claude está coordinando de una manera que no desea, dígalo. Por ejemplo, puede decir:

258 260 

259* "Propón hilos y espera mi aprobación antes de comenzarlos" o "Comienza estos ahora sin pedirme que confirme"261* "Propose threads and wait for my go-ahead before starting them" o "Start these now without asking me to confirm"

260* "Ejecuta como máximo dos hilos a la vez" o "Reutiliza un hilo existente para seguimientos en la misma área"262* "Run at most two threads at a time" o "Reuse an existing thread for follow-ups in the same area"

261* "Publica actualizaciones más cortas" o "Solo publica cuando algo termina o está bloqueado"263* "Post shorter updates" o "Only post when something finishes or is blocked"

262* "Dame una actualización de estado en cada hilo"264* "Give me a status update on every thread"

263* "Haz esta tarea con un modelo más pequeño"265* "Do this task with a smaller model"

264* "No abras una solicitud de extracción hasta que haya visto el plan"266* "Don't open a pull request until I've seen the plan"

265* "Dime qué está mal en estos repositorios y no arregles nada todavía", cuando deseas revisar los hallazgos antes de que cualquiera se convierta en un hilo267* "Tell me what's wrong in these repositories and don't fix anything yet", cuando desea revisar los hallazgos antes de que alguno se convierta en un hilo

266* "Responde eso aquí en lugar de comenzar un hilo", cuando Claude comienza un hilo para algo que quisiste como una pregunta rápida268* "Answer that here instead of starting a thread", cuando Claude inicia un hilo para algo que significaba como una pregunta rápida

267 269 

268Claude guarda preferencias como estas en [memoria del proyecto](#give-a-project-standing-context) por su cuenta y las sigue en hilos posteriores. Son instrucciones que Claude mantiene, no configuraciones aplicadas, así que un límite de hilos que das de esta manera no es un límite duro. Agrega uno a las instrucciones del proyecto cuando deseas que esté redactado exactamente y aplicado a cada hilo desde el inicio.270Claude guarda preferencias como estas en [memoria del proyecto](#give-a-project-standing-context) por su cuenta y las sigue en hilos posteriores. Son instrucciones que Claude mantiene, no configuraciones aplicadas, por lo que un límite de hilos que da de esta manera no es un límite duro. Agregue uno a las instrucciones del proyecto cuando desee que se redacte exactamente y se aplique a cada hilo desde el principio.

269 271 

270<h3 id="unblock-a-thread-waiting-on-approval">272<h3 id="unblock-a-thread-waiting-on-approval">

271 Desbloquea un hilo esperando aprobación273 Desbloquear un hilo esperando aprobación

272</h3>274</h3>

273 275 

274Los hilos se ejecutan en [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) cuando el modelo del hilo lo soporta, así que la mayoría de las llamadas de herramientas se ejecutan sin pedirte. Cuando un hilo necesita tu aprobación, el aviso está dentro de ese hilo y el hilo espera hasta que respondas allí. Decirle a Claude en la conversación del proyecto que adelante no lo alcanza.276Los hilos se ejecutan en [modo automático](/docs/es/permission-modes#eliminate-prompts-with-auto-mode) cuando el modelo del hilo lo admite, por lo que la mayoría de las llamadas de herramientas se ejecutan sin pedirle. Cuando un hilo necesita su aprobación, el aviso está dentro de ese hilo y el hilo espera hasta que responda allí. Decirle a Claude en la conversación del proyecto que continúe no lo alcanza.

275 277 

276Cada aprobación cubre ese aviso, o el resto de ese hilo si eliges la opción más amplia. Para permitir que cada hilo ejecute ciertos comandos sin preguntar, o para bloquear algunos, agrega [reglas de permiso](/docs/es/permissions) al `.claude/settings.json` del repositorio. Los hilos las aplican solo en un proyecto con un repositorio; ver [Lo que los hilos recogen de tus repositorios](#what-threads-pick-up-from-your-repositories).278Cada aprobación cubre ese aviso, o el resto de ese hilo si elige la opción más amplia. Para permitir que cada hilo ejecute ciertos comandos sin preguntar, o para bloquear algunos, agregue [reglas de permiso](/docs/es/permissions) al `.claude/settings.json` del repositorio. Los hilos en la nube las aplican solo en un proyecto con un repositorio; vea [Qué recogen los hilos de sus repositorios](#what-threads-pick-up-from-your-repositories).

277 279 

278<h2 id="give-a-project-standing-context">280<h2 id="give-a-project-standing-context">

279 Proporcione contexto permanente al proyecto281 Proporcione contexto permanente al proyecto

280</h2>282</h2>

281 283 

282La memoria del proyecto, las instrucciones del proyecto y los repositorios, archivos y entorno del proyecto llevan contexto entre hilos. Usted establece cada uno una sola vez y se aplica a cada nuevo hilo.284La memoria del proyecto, las instrucciones del proyecto y los repositorios, archivos y entorno del proyecto llevan contexto entre hilos. Usted establece cada uno una sola vez.

283 285 

284| Contexto | Lo que lleva | Cómo lo establece |286| Contexto | Lo que lleva | Cómo lo establece |

285| :------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |287| :------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

286| Memoria del proyecto | Notas que Claude mantiene sobre el proyecto, como requisitos, decisiones y trampas, almacenadas como archivos. Cada hilo lee el archivo de índice `MEMORY.md` cuando comienza y abre los otros archivos cuando los necesita | Pida a Claude en la conversación del proyecto o en cualquier hilo que recuerde un requisito, una decisión o una trampa, o que olvide uno. Lea, edite y elimine los archivos en **Configuración del proyecto > Memoria** |288| Memoria del proyecto | Notas que Claude mantiene sobre el proyecto, como requisitos, decisiones y trampas, almacenadas como archivos. Cada hilo en la nube lee el archivo de índice `MEMORY.md` cuando comienza y abre los otros archivos cuando los necesita | Pida a Claude en la conversación del proyecto o en cualquier hilo en la nube que recuerde un requisito, una decisión o una trampa, o que olvide uno. Lea, edite y elimine los archivos en **Configuración del proyecto > Memoria** |

287| Instrucciones del proyecto | Texto enviado a cada nuevo hilo y a Claude en la conversación del proyecto, hasta 16.000 caracteres. [Escribir instrucciones del proyecto](#write-project-instructions) cubre qué poner en él | **Configuración del proyecto > Memoria > Instrucciones del proyecto**, o pida a Claude que cambie las instrucciones |289| Instrucciones del proyecto | Texto enviado a cada nuevo hilo y a Claude en la conversación del proyecto, hasta 16.000 caracteres. [Escribir instrucciones del proyecto](#write-project-instructions) cubre qué poner en él | **Configuración del proyecto > Memoria > Instrucciones del proyecto**, o pida a Claude que cambie las instrucciones |

288| Repositorios, archivos y entorno | Los repositorios que cada hilo clona, las carpetas y archivos que cada hilo puede leer en `/mnt/project-files`, y el entorno en la nube en el que se ejecutan los hilos | Repositorios y entorno en **Configuración del proyecto > Entorno**, o pida a Claude en la conversación que agregue un repositorio al proyecto. Archivos y carpetas desde **Agregar** en la pestaña **Biblioteca** en **Descripción general** |290| Repositorios, archivos y entorno | Los repositorios que cada hilo en la nube clona, las carpetas y archivos que puede leer en `/mnt/project-files`, y el entorno en la nube en el que se ejecuta | Repositorios y entorno en **Configuración del proyecto > Entorno**, o pida a Claude en la conversación que agregue un repositorio al proyecto. Archivos y carpetas desde **Agregar** en la pestaña **Biblioteca** en **Descripción general** |

289 291 

290**Configuración del proyecto > Memoria** enumera estos archivos en **Memoria automática**, porque Claude los escribe a sí mismo mientras trabaja en el proyecto. Son separados de la [memoria automática](/docs/es/memory) que Claude Code mantiene en su máquina, aunque ambos usen un índice `MEMORY.md`. La memoria del proyecto también es separada de los archivos `CLAUDE.md` en los repositorios del proyecto. Cada hilo aún lee esos archivos `CLAUDE.md` de su clon cuando comienza, así que ponga instrucciones sobre un repositorio en su `CLAUDE.md` y notas sobre el proyecto en la memoria del proyecto.292**Configuración del proyecto > Memoria** enumera estos archivos en **Memoria automática**, porque Claude los escribe a sí mismo mientras trabaja en el proyecto. Son separados de la [memoria automática](/docs/es/memory) que Claude Code mantiene en su máquina, aunque ambos usen un índice `MEMORY.md`. La memoria del proyecto también es separada de los archivos `CLAUDE.md` en los repositorios del proyecto. Cada hilo en la nube aún lee esos archivos `CLAUDE.md` de su clon cuando comienza, así que ponga instrucciones sobre un repositorio en su `CLAUDE.md` y notas sobre el proyecto en la memoria del proyecto.

291 293 

292<h3 id="write-project-instructions">294<h3 id="write-project-instructions">

293 Escribir instrucciones del proyecto295 Escribir instrucciones del proyecto


312- No fusiones, no hagas push forzado ni cambies la configuración de CI sin preguntarme en el hilo.314- No fusiones, no hagas push forzado ni cambies la configuración de CI sin preguntarme en el hilo.

313```315```

314 316 

315Las reglas sobre un repositorio, como sus comandos de compilación, pertenecen al `CLAUDE.md` de ese repositorio, que cada hilo lee cuando el repositorio es parte del proyecto. Una vez que el trabajo está en marcha, cuando corrija un hilo, también dígale a Claude que recuerde la corrección: va a la [memoria del proyecto](#give-a-project-standing-context) y los hilos posteriores comienzan con ella.317Las reglas sobre un repositorio, como sus comandos de compilación, pertenecen al `CLAUDE.md` de ese repositorio, que cada hilo en la nube lee cuando el repositorio es parte del proyecto. Una vez que el trabajo está en marcha, cuando corrija un hilo, también dígale a Claude que recuerde la corrección: va a la [memoria del proyecto](#give-a-project-standing-context) y los hilos posteriores comienzan con ella.

316 318 

317<h3 id="decide-which-repositories-to-add">319<h3 id="decide-which-repositories-to-add">

318 Decidir qué repositorios agregar320 Decidir qué repositorios agregar

319</h3>321</h3>

320 322 

321Los repositorios que agrega a un proyecto vienen con todo lo que contienen, su código, `CLAUDE.md` y skills, en cada hilo. Los repositorios que no agrega aún están al alcance: un hilo puede agregar uno a sí mismo cuando su tarea lo necesita. La mayoría de los proyectos usan ambos:323Los repositorios que agrega a un proyecto vienen con todo lo que contienen, su código, `CLAUDE.md` y skills, en cada hilo en la nube. Los repositorios que no agrega aún están al alcance: un hilo en la nube puede agregar uno a sí mismo cuando su tarea lo necesita. La mayoría de los proyectos usan ambos:

322 324 

323* **Agréguelo al proyecto**, en el diálogo **Nuevo proyecto**, en **Configuración del proyecto > Entorno**, o pidiendo a Claude en la conversación que lo agregue al proyecto. Cada hilo a partir de entonces lo clona y comienza con su `CLAUDE.md` y skills cargados, independientemente de si la tarea lo toca. Pasar de un repositorio a varios también cambia lo que los hilos toman de cada `settings.json` del repositorio `.claude/`; vea [Lo que los hilos recogen de sus repositorios](#what-threads-pick-up-from-your-repositories).325* **Agréguelo al proyecto**, en el diálogo **Nuevo proyecto**, en **Configuración del proyecto > Entorno**, o pidiendo a Claude en la conversación que lo agregue al proyecto. Cada hilo a partir de entonces lo clona y comienza con su `CLAUDE.md` y skills cargados, independientemente de si la tarea lo toca. Pasar de un repositorio a varios también cambia lo que los hilos toman de cada `.claude/settings.json` del repositorio; vea [Lo que los hilos recogen de sus repositorios](#what-threads-pick-up-from-your-repositories).

324* **Déjelo fuera y deje que los hilos lo agreguen cuando sea necesario.** Un hilo cuya tarea necesita un repositorio que el proyecto no tiene puede agregarlo a sí mismo, y una nota en el hilo dice que fue agregado solo a este hilo. El clon ocurre a mitad de la tarea, por lo que el `CLAUDE.md` y skills de ese repositorio no estaban allí cuando el hilo comenzó. El siguiente hilo comienza sin él de nuevo. Un repositorio que un hilo agrega necesita los mismos [requisitos previos](#check-the-prerequisites) que un repositorio del proyecto: la aplicación GitHub de Claude instalada en él y acceso de push desde su cuenta de GitHub.326* **Déjelo fuera y deje que los hilos lo agreguen cuando sea necesario.** Un hilo en la nube cuya tarea necesita un repositorio que el proyecto no tiene puede agregarlo a sí mismo, y una nota en el hilo dice que fue agregado solo a este hilo. El clon ocurre a mitad de la tarea, por lo que el `CLAUDE.md` y skills de ese repositorio no estaban allí cuando el hilo comenzó. El siguiente hilo comienza sin él. Un repositorio agregado de esta manera necesita los mismos [requisitos previos](#check-the-prerequisites) que un repositorio del proyecto: la aplicación GitHub de Claude instalada en él y acceso de push desde su cuenta de GitHub.

325 327 

326Un proyecto no necesita un repositorio en absoluto. Sus hilos aún pueden investigar, escribir documentos, y escribir y ejecutar código en su propio sandbox, y entregan archivos a la pestaña **Biblioteca**. Un hilo allí también puede agregar un repositorio a sí mismo cuando una tarea lo requiere.328Un proyecto no necesita un repositorio en absoluto. Sus hilos en la nube aún pueden investigar, escribir documentos, y escribir y ejecutar código en su propio sandbox, y entregan archivos a la pestaña **Biblioteca**. Cualquiera de sus hilos en la nube aún puede agregar un repositorio a sí mismo cuando una tarea lo requiere.

327 329 

328Una vez que el proyecto tiene repositorios, Claude solo puede agregar repositorios de un propietario de GitHub que el proyecto ya usa, ya sea que agregue uno al proyecto o un hilo agregue uno a sí mismo. Para traer un repositorio de un propietario diferente, agréguelo al proyecto usted mismo en **Configuración del proyecto > Entorno**.330Una vez que el proyecto tiene repositorios, Claude solo puede agregar repositorios de un propietario de GitHub que el proyecto ya usa, ya sea que agregue uno al proyecto o un hilo agregue uno a sí mismo. Para traer un repositorio de un propietario diferente, agréguelo al proyecto usted mismo en **Configuración del proyecto > Entorno**.

329 331 

330Para un proyecto que abarca muchos repositorios, como una característica con código de servidor, web, móvil y escritorio, agregue uno o dos repositorios que casi todas las tareas tocan y nombre los otros en [instrucciones del proyecto](#write-project-instructions) para que Claude sepa dónde vive el resto del código. Los hilos entonces comienzan pequeños y traen los otros repositorios solo para las tareas que los necesitan.332Para un proyecto que abarca muchos repositorios, como una característica con código de servidor, web, móvil y escritorio, agregue uno o dos repositorios que casi todas las tareas tocan y nombre los otros en [instrucciones del proyecto](#write-project-instructions) para que Claude sepa dónde vive el resto del código. Los hilos en la nube entonces comienzan pequeños y traen los otros repositorios solo para las tareas que los necesitan.

331 333 

332<h3 id="what-threads-pick-up-from-your-repositories">334<h3 id="what-threads-pick-up-from-your-repositories">

333 Lo que los hilos recogen de sus repositorios335 Lo que los hilos recogen de sus repositorios

334</h3>336</h3>

335 337 

336Cada hilo clona cada repositorio en el proyecto y carga `CLAUDE.md` y skills de todos ellos. Las reglas de permisos, hooks y `env` vienen solo del `settings.json` de `.claude/` en el directorio en el que comienza el hilo: dentro del repositorio cuando el proyecto tiene uno, y encima de los clones cuando tiene varios, donde no se lee el archivo de ningún repositorio para ellos.338Cada hilo en la nube clona cada repositorio en el proyecto y carga `CLAUDE.md` y skills de todos ellos. Las reglas de permisos, hooks y `env` vienen solo del `.claude/settings.json` en el directorio en el que comienza el hilo: dentro del repositorio cuando el proyecto tiene uno, y encima de los clones cuando tiene varios, donde no se lee el archivo de ningún repositorio para ellos.

337 339 

338| En cada repositorio | Un repositorio | Varios repositorios |340| En cada repositorio | Un repositorio | Varios repositorios |

339| :--------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------- |341| :--------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------- |


348 Elegir un entorno para los hilos350 Elegir un entorno para los hilos

349</h3>351</h3>

350 352 

351Cada nuevo hilo comienza en el [entorno en la nube](/docs/es/cloud-environments) del proyecto. El entorno establece a qué dominios pueden acceder los hilos, qué variables de entorno tienen, qué credenciales de API se agregan a sus solicitudes, y qué instala el script de configuración antes de que Claude comience. Los hilos usan un entorno predeterminado alojado por Anthropic hasta que elige uno en **Configuración del proyecto > Entorno**.353Cada nuevo hilo en la nube comienza en el [entorno en la nube](/docs/es/cloud-environments) del proyecto. El entorno establece a qué dominios pueden acceder los hilos, qué variables de entorno tienen, qué credenciales de API se agregan a sus solicitudes, y qué instala el script de configuración antes de que Claude comience. Los hilos en la nube usan un entorno predeterminado alojado por Anthropic hasta que elige uno en **Configuración del proyecto > Entorno**.

352 354 

353Si los hilos necesitan acceder a una API interna o a un registro de paquetes privado, o necesitan un token que su máquina normalmente contiene, cambie el entorno en lugar del proyecto: vea [Acceso de red](/docs/es/cloud-environments#network-access), [Agregar credenciales de API](/docs/es/cloud-environments#add-api-credentials) y [Scripts de configuración](/docs/es/cloud-environments#setup-scripts).355Si los hilos en la nube necesitan acceder a una API interna o a un registro de paquetes privado, o necesitan un token que su máquina normalmente contiene, cambie el entorno en lugar del proyecto: vea [Acceso de red](/docs/es/cloud-environments#network-access), [Agregar credenciales de API](/docs/es/cloud-environments#add-api-credentials) y [Scripts de configuración](/docs/es/cloud-environments#setup-scripts).

354 356 

355<h3 id="get-skills-plugins-connectors-and-tools-into-threads">357<h3 id="get-skills-plugins-connectors-and-tools-into-threads">

356 Obtener skills, plugins, conectores y herramientas en los hilos358 Obtener skills, plugins, conectores y herramientas en los hilos

357</h3>359</h3>

358 360 

359Los hilos son sesiones en la nube, por lo que no tienen los skills, servidores MCP, plugins y herramientas instalados solo en su máquina. Para que cada uno de estos esté disponible para los hilos:361Los hilos en la nube no tienen los skills, servidores MCP, plugins y herramientas instalados solo en su máquina. Un hilo que Claude ejecuta en su máquina a través de [Remote Control](/docs/es/remote-control) usa lo que está instalado allí. Para que cada uno de estos esté disponible para los hilos en la nube:

360 362 

361* Skills, subagentes y comandos: confirme que están en un repositorio que agregó al proyecto, por ejemplo un skill en `.claude/skills/<skill-name>/SKILL.md`. Cada hilo clona cada repositorio en el proyecto y carga `.claude/skills/`, `.claude/agents/` y `.claude/commands/` de cada uno de ellos, por lo que un skill confirmado en un repositorio está disponible en cada nuevo hilo. Los hilos también cargan los skills que habilita para su cuenta de claude.ai.363* Skills, subagentes y comandos: confirme que están en un repositorio que agregó al proyecto, por ejemplo un skill en `.claude/skills/<skill-name>/SKILL.md`. Cada hilo en la nube clona cada repositorio en el proyecto y carga `.claude/skills/`, `.claude/agents/` y `.claude/commands/` de cada uno de ellos, por lo que un skill confirmado en un repositorio está disponible en cada hilo en la nube. Los hilos en la nube también cargan los skills que habilita para su cuenta de claude.ai.

362* Plugins: agréguelos en **Configuración del proyecto > Plugins**; se cargan en cada nuevo hilo. Los plugins que un repositorio declara en su `.claude/settings.json` [no se cargan en los hilos](/docs/es/cloud-environments#what-carries-over-from-your-setup), porque los hilos son sesiones en la nube.364* Plugins: agréguelos en **Configuración del proyecto > Plugins**; se cargan en cada nuevo hilo en la nube. Los plugins que un repositorio declara en su `.claude/settings.json` [no se cargan en los hilos en la nube](/docs/es/cloud-environments#what-carries-over-from-your-setup).

363* Servidores MCP: los hilos obtienen sus herramientas MCP de los conectores en su cuenta de claude.ai, que son servidores MCP que conecta una sola vez en [claude.ai/customize/connectors](https://claude.ai/customize/connectors) o a través del enlace **Administrar conectores** en **Configuración del proyecto > Entorno**. Cada hilo puede usar todos ellos sin configuración por proyecto. La conversación del proyecto en sí no tiene conectores, así que envíe el trabajo que necesita uno como una tarea para un hilo. En un proyecto con un repositorio, los hilos también cargan servidores MCP del [`.mcp.json`](/docs/es/cloud-environments#what-carries-over-from-your-setup) de ese repositorio. [Cómo los conectores llegan a Claude Code](/docs/es/mcp#how-connectors-reach-claude-code) enumera las reglas para sesiones en la nube y la configuración que desactiva los conectores.365* Servidores MCP: los hilos en la nube obtienen sus herramientas MCP de los conectores en su cuenta de claude.ai, que son servidores MCP que conecta una sola vez en [claude.ai/customize/connectors](https://claude.ai/customize/connectors) o a través del enlace **Administrar conectores** en **Configuración del proyecto > Entorno**. Cada hilo en la nube puede usar todos ellos sin configuración por proyecto. La conversación del proyecto en sí no tiene conectores, así que envíe el trabajo que necesita uno como una tarea para un hilo en la nube. En un proyecto con un repositorio, los hilos en la nube también cargan servidores MCP del [`.mcp.json`](/docs/es/cloud-environments#what-carries-over-from-your-setup) de ese repositorio. [Cómo los conectores llegan a Claude Code](/docs/es/mcp#how-connectors-reach-claude-code) enumera las reglas para sesiones en la nube y la configuración que desactiva los conectores.

364* Herramientas de línea de comandos y paquetes: instálelos en el [script de configuración](/docs/es/cloud-environments#setup-scripts) del entorno.366* Herramientas de línea de comandos y paquetes: instálelos en el [script de configuración](/docs/es/cloud-environments#setup-scripts) del entorno.

365 367 

366Para ver qué conectores tiene un hilo en ejecución en claude.ai/code, abra el hilo y seleccione **Conectores** en el menú **+** junto a su cuadro de mensaje. Desactivar un conector allí lo elimina de ese hilo y guarda eso como su predeterminado de cuenta, por lo que los nuevos hilos y chats de claude.ai comienzan sin él hasta que lo vuelva a activar. Un hilo recoge un conector que agrega o reconecta después del siguiente mensaje que le envía.368Para ver qué conectores tiene un hilo en la nube en ejecución en claude.ai/code, abra el hilo y seleccione **Conectores** en el menú **+** junto a su cuadro de mensaje. Desactivar un conector allí lo elimina de ese hilo y guarda eso como su predeterminado de cuenta, por lo que los nuevos hilos en la nube y chats de claude.ai comienzan sin él hasta que lo vuelva a activar. Un hilo en la nube recoge un conector que agrega o reconecta después del siguiente mensaje que le envía.

367 369 

368<h2 id="project-settings-reference">370<h2 id="project-settings-reference">

369 Referencia de configuración del proyecto371 Referencia de configuración del proyecto


434 Cómo los proyectos se relacionan con otras características de Claude Code436 Cómo los proyectos se relacionan con otras características de Claude Code

435</h2>437</h2>

436 438 

437Varias características de Claude Code permiten que más de una sesión trabaje al mismo tiempo, así que ejecutar trabajo en paralelo no es por sí solo para qué es un proyecto. En un proyecto, Claude comienza y rastrea las sesiones en lugar de ti, cada una comienza desde los mismos repositorios, instrucciones y memoria, y el trabajo vive en la nube mientras dure. Así es como cada característica vecina se conecta a un proyecto:439Varias características de Claude Code permiten que más de una sesión trabaje al mismo tiempo, así que ejecutar trabajo en paralelo no es por sí solo para qué es un proyecto. En un proyecto, Claude comienza y rastrea las sesiones en lugar de usted, y cada una comienza desde las mismas instrucciones. Así es como cada característica vecina se conecta a un proyecto:

438 440 

439* **Claude Tag**: [Claude Tag](https://claude.com/docs/claude-tag/overview) es Claude en los canales de Slack de tu equipo, en planes Team y Enterprise. Cualquiera en un canal puede darle trabajo, todos en el canal lo ven y lo dirigen, y utiliza conexiones que un administrador configuró para ese canal. Un proyecto es solo tuyo: eres el único que le envía trabajo o ve sus hilos, utiliza tu propio acceso a GitHub y conectores, y está en Pro y Max. [Cómo Claude Tag difiere de Cowork y Claude Code](https://claude.com/docs/claude-tag/concepts/how-it-works#how-claude-tag-differs-from-cowork-and-claude-code) tiene el lado a lado.441* **Claude Tag**: [Claude Tag](https://claude.com/docs/claude-tag/overview) es Claude en los canales de Slack de tu equipo, en planes Team y Enterprise. Cualquiera en un canal puede darle trabajo, todos en el canal lo ven y lo dirigen, y utiliza conexiones que un administrador configuró para ese canal. Un proyecto es solo tuyo: eres el único que le envía trabajo o ve sus hilos, utiliza tu propio acceso a GitHub y conectores, y está en Pro y Max. [Cómo Claude Tag difiere de Cowork y Claude Code](https://claude.com/docs/claude-tag/concepts/how-it-works#how-claude-tag-differs-from-cowork-and-claude-code) tiene el lado a lado.

440* **Sesiones en la nube**: cada hilo es una [sesión en la nube](/docs/es/claude-code-on-the-web), comenzada y rastreada por Claude en lugar de por ti. Una sesión en la nube que comenzaste tú mismo puede convertirse en un proyecto o alimentar uno a través de [**Continue as a project** o **Move to project**](#start-from-an-existing-cloud-session).442* **Cloud sessions**: cada hilo es una [sesión en la nube](/docs/es/claude-code-on-the-web) a menos que pida a Claude que la ejecute en su máquina. De cualquier forma, Claude la comienza y rastrea en lugar de usted. Una sesión en la nube que comenzó usted mismo puede convertirse en un proyecto o alimentar uno a través de [**Continue as a project** o **Move to project**](#start-from-an-existing-cloud-session).

441* **Routines**: cuando pides trabajo programado en un proyecto, Claude crea una [rutina](/docs/es/routines) que se ejecuta como hilos en ese proyecto y aparece en su pestaña **Routines**. Las rutinas que creas fuera de un proyecto siguen funcionando por su cuenta.443* **Routines**: cuando pides trabajo programado en un proyecto, Claude crea una [rutina](/docs/es/routines) que se ejecuta como hilos en ese proyecto y aparece en su pestaña **Routines**. Las rutinas que creas fuera de un proyecto siguen funcionando por su cuenta.

442* **Sesiones locales y vista de agente**: las sesiones en tu terminal, IDE, o el entorno local de la aplicación de escritorio se ejecutan en tu máquina y no pueden ser parte de un proyecto. [Vista de agente](/docs/es/agent-view) es una pantalla para rastrear varias de esas sesiones locales; no tiene coordinador.444* **Local sessions and agent view**: una sesión que comienza usted mismo en su terminal, IDE, o el entorno local de la aplicación de escritorio no puede ser agregada a un proyecto. Un proyecto llega a su máquina solo ejecutando un hilo allí a través de [Remote Control](/docs/es/remote-control). [Agent view](/docs/es/agent-view) es una pantalla para rastrear varias sesiones locales que comenzó usted mismo; no tiene coordinador.

443* **Worktrees**: un [worktree](/docs/es/worktrees) le da a cada sesión local su propia copia de trabajo de un repositorio para que las sesiones paralelas en tu máquina no se sobrescriban entre sí. Los hilos no los necesitan: cada hilo clona sus repositorios en su propia sandbox en la nube y trabaja en su propia rama.445* **Worktrees**: un [worktree](/docs/es/worktrees) le da a cada sesión local su propia copia de trabajo de un repositorio para que las sesiones paralelas en su máquina no se sobrescriban entre sí. Los hilos en la nube no los necesitan: cada uno clona sus repositorios en su propia sandbox en la nube y trabaja en su propia rama.

444* **Equipos de agentes**: un [equipo de agentes](/docs/es/agent-teams) es una sesión que comienza sesiones de compañeros para una sola tarea, en tu máquina o dentro de una sesión en la nube, y termina con esa tarea.446* **Equipos de agentes**: un [equipo de agentes](/docs/es/agent-teams) es una sesión que comienza sesiones de compañeros para una sola tarea, en tu máquina o dentro de una sesión en la nube, y termina con esa tarea.

445* **Projects en claude.ai chat y Cowork**: la [experiencia anterior de Projects](https://support.claude.com/en/articles/9517075-what-are-projects), que agrupa conversaciones y archivos de referencia sin hilos o coordinador. Esos proyectos siguen funcionando como lo hacen hoy hasta que la experiencia rediseñada los alcance.447* **Projects en claude.ai chat y Cowork**: la [experiencia anterior de Projects](https://support.claude.com/en/articles/9517075-what-are-projects), que agrupa conversaciones y archivos de referencia sin hilos o coordinador. Esos proyectos siguen funcionando como lo hacen hoy hasta que la experiencia rediseñada los alcance.

446 448 


451</h2>453</h2>

452 454 

453* Los proyectos están disponibles en claude.ai/code, en la aplicación de escritorio y en la aplicación móvil de Claude, no en el CLI de terminal ni a través de Amazon Bedrock, Google Cloud's Agent Platform o Microsoft Foundry. El comando [`claude project`](/docs/es/cli-reference) del CLI, que administra el estado local de Claude Code para un directorio, no está relacionado.455* Los proyectos están disponibles en claude.ai/code, en la aplicación de escritorio y en la aplicación móvil de Claude, no en el CLI de terminal ni a través de Amazon Bedrock, Google Cloud's Agent Platform o Microsoft Foundry. El comando [`claude project`](/docs/es/cli-reference) del CLI, que administra el estado local de Claude Code para un directorio, no está relacionado.

454* Los hilos del proyecto son [sesiones en la nube](/docs/es/claude-code-on-the-web) con Anthropic como proveedor de modelo. [Seguridad](/docs/es/security) y [Uso de datos](/docs/es/data-usage) cubren cómo se aíslan las sesiones en la nube y qué se retiene.456* Los hilos del proyecto son [sesiones en la nube](/docs/es/claude-code-on-the-web), o sesiones en su propia máquina a través de [Remote Control](/docs/es/remote-control), con Anthropic como proveedor de modelo en ambos casos. [Seguridad](/docs/es/security) y [Uso de datos](/docs/es/data-usage) cubren cómo se aíslan las sesiones en la nube y qué se retiene, y [Connection and security](/docs/es/remote-control#connection-and-security) cubre cómo un hilo en su máquina se conecta y qué se almacena.

455* Una sesión local no puede ser parte de un proyecto.457* No puede agregar una sesión que inició usted mismo en su máquina a un proyecto. Para permitir que un proyecto ejecute un hilo en su máquina, conecte la carpeta en la que debe trabajar a través de [Remote Control](/docs/es/remote-control#requirements): active Remote Control en **Settings > Claude Code** en la aplicación de escritorio de Claude, o ejecute `claude remote-control` en la carpeta y déjela ejecutándose. Esa máquina necesita Claude Code v2.1.280 o posterior. Un proyecto tampoco puede ejecutar un hilo en su máquina mientras **Require trusted devices** esté activado en su configuración de claude.ai.

456* La sandbox de un hilo se pausa entre turnos y se reanuda cuando el hilo continúa. Si la sandbox no se puede reanudar, el hilo continúa desde un clon fresco, así que los cambios no confirmados pueden perderse. En tareas largas, pídele a Claude que confirme e inserte trabajo en progreso.458* La sandbox de un hilo en la nube se pausa entre turnos y se reanuda cuando el hilo continúa. Si la sandbox no se puede reanudar, el hilo continúa desde un clon fresco, así que los cambios no confirmados pueden perderse. En tareas largas, pídele a Claude que confirme e inserte trabajo en progreso.

457* Un proyecto pertenece a un usuario. No puedes compartir un proyecto o sus hilos con otro usuario, y las transcripciones de hilos no tienen la opción de compartir que tienen otras sesiones en la nube. No hay controles a nivel de organización para proyectos durante la beta.459* Un proyecto pertenece a un usuario. No puedes compartir un proyecto o sus hilos con otro usuario, y las transcripciones de hilos no tienen la opción de compartir que tienen otras sesiones en la nube. No hay controles a nivel de organización para proyectos durante la beta.

458* Un hilo pertenece al único proyecto que lo comenzó. No puedes mover o copiar un hilo a otro proyecto, o sacarlo para que esté solo. [**Move to project**](#start-from-an-existing-cloud-session) va solo en la otra dirección: trae el trabajo de una sesión en la nube a un proyecto.460* Un hilo pertenece al único proyecto que lo comenzó. No puedes mover o copiar un hilo a otro proyecto, o sacarlo para que esté solo. [**Move to project**](#start-from-an-existing-cloud-session) va solo en la otra dirección: trae el trabajo de una sesión en la nube a un proyecto.

459 461 

Details

27 Instala el plugin27 Instala el plugin

28</h2>28</h2>

29 29 

30En una sesión de Claude Code, instala desde el [mercado oficial de Anthropic](/docs/es/discover-plugins#official-anthropic-marketplace):30En una sesión de Claude Code, instala desde el [mercado oficial de Anthropic](/docs/es/plugins/anthropic-marketplaces):

31 31 

32```text theme={null}32```text theme={null}

33/plugin install claude-security@claude-plugins-official33/plugin install claude-security@claude-plugins-official

34```34```

35 35 

36El comando abre los detalles del plugin, donde eliges un [alcance de instalación](/docs/es/discover-plugins#install-plugins) para iniciar la instalación.36El comando abre los detalles del plugin, donde eliges un [alcance de instalación](/docs/es/plugins/install#install-a-plugin) para iniciar la instalación.

37 37 

38Si la instalación falla, la solución depende del mensaje que reporte Claude Code:38Si la instalación falla, la solución depende del mensaje que reporte Claude Code:

39 39 

40* Si reporta `Marketplace "claude-plugins-official" not found`, añade el mercado con `/plugin marketplace add anthropics/claude-plugins-official`, luego reintenta la instalación.40* Si reporta `Marketplace "claude-plugins-official" not found`, añade el mercado con `/plugin marketplace add anthropics/claude-plugins-official`, luego reintenta la instalación.

41* Si reporta que no puede [encontrar el plugin en el mercado](/docs/es/discover-plugins#install-plugins), verifica el nombre del plugin para detectar errores tipográficos.41* Si reporta que no puede [encontrar el plugin en el mercado](/docs/es/plugins/install#install-a-plugin), verifica el nombre del plugin para detectar errores tipográficos.

42 42 

43Verifica el resumen de instalación. Si reporta `Run /reload-plugins to activate.`, consulta [Aplicar cambios de plugins sin reiniciar](/docs/es/discover-plugins#apply-plugin-changes-without-restarting) para activar el plugin en tu sesión actual.43Verifica el resumen de instalación. Si reporta `Run /reload-plugins to activate.`, consulta [Aplicar cambios de plugins sin reiniciar](/docs/es/plugins/cli-reference#reload-plugins) para activar el plugin en tu sesión actual.

44 44 

45Una vez que el plugin esté activo, estás listo para [escanear y corregir tu base de código](#scan-and-fix-your-codebase).45Una vez que el plugin esté activo, estás listo para [escanear y corregir tu base de código](#scan-and-fix-your-codebase).

46 46 


168* [Code Review](/docs/es/code-review): configura la revisión multiagente en el momento de la solicitud de extracción168* [Code Review](/docs/es/code-review): configura la revisión multiagente en el momento de la solicitud de extracción

169* [Claude Security](https://claude.com/product/claude-security): el servicio administrado que monitorea repositorios conectados169* [Claude Security](https://claude.com/product/claude-security): el servicio administrado que monitorea repositorios conectados

170* [Seguridad de Claude Code](/docs/es/security): cómo Claude Code aborda la confianza, los permisos y las salvaguardas170* [Seguridad de Claude Code](/docs/es/security): cómo Claude Code aborda la confianza, los permisos y las salvaguardas

171* [Descubre e instala plugins](/docs/es/discover-plugins#official-anthropic-marketplace): explora otros plugins oficiales171* [Instalar y administrar plugins](/docs/es/plugins/install): busca e instala otros plugins del marketplace oficial

claude-tag.md +0 −11 deleted

File Deleted View Diff

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Claude Tag

6 

7> Integra Claude en los canales de Slack de tu equipo con Claude Tag y encuentra su documentación de configuración y uso en claude.com.

8 

9[Claude Tag](https://claude.com/product/tag) es una integración de Slack que ejecuta `@Claude` en los canales de tu equipo como la identidad compartida de tu organización con acceso configurado por administrador. Cualquier persona en un canal puede etiquetar `@Claude` en un hilo y asignarle una tarea. Lee la [documentación de Claude Tag](https://claude.com/docs/claude-tag/overview) en claude.com para configurarlo y comenzar a usarlo.

10 

11Claude Tag está disponible en planes Team y Enterprise, y es distinto del anterior [Claude Code in Slack](/docs/es/slack), que ejecuta cada sesión bajo la cuenta de un usuario individual. En planes Pro y Max, donde Claude Tag no está disponible, Claude Code in Slack sigue siendo la ruta de configuración.

Details

37| `claude import [source]` | Iniciar una sesión interactiva que ejecuta [`/import`](/docs/es/commands#all-commands) para traer configuración de otros agentes de codificación a Claude Code. Acepta las mismas opciones `--dry-run` y `--yes` que el comando. No disponible en Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry o Claude Platform en AWS. También no disponible cuando desactiva [obtención de banderas de características](/docs/es/env-vars#features-that-need-feature-flag-fetching). Requiere Claude Code v2.1.213 o posterior | `claude import codex --dry-run` |37| `claude import [source]` | Iniciar una sesión interactiva que ejecuta [`/import`](/docs/es/commands#all-commands) para traer configuración de otros agentes de codificación a Claude Code. Acepta las mismas opciones `--dry-run` y `--yes` que el comando. No disponible en Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry o Claude Platform en AWS. También no disponible cuando desactiva [obtención de banderas de características](/docs/es/env-vars#features-that-need-feature-flag-fetching). Requiere Claude Code v2.1.213 o posterior | `claude import codex --dry-run` |

38| `claude logs <id>` | Imprimir salida reciente de una [sesión de fondo](/docs/es/agent-view#manage-sessions-from-the-shell) | `claude logs 7c5dcf5d` |38| `claude logs <id>` | Imprimir salida reciente de una [sesión de fondo](/docs/es/agent-view#manage-sessions-from-the-shell) | `claude logs 7c5dcf5d` |

39| `claude mcp` | Configurar servidores Model Context Protocol (MCP) | Consulte la [documentación de Claude Code MCP](/docs/es/mcp). |39| `claude mcp` | Configurar servidores Model Context Protocol (MCP) | Consulte la [documentación de Claude Code MCP](/docs/es/mcp). |

40| `claude mcp login <name>` | Ejecutar el flujo OAuth de un servidor MCP configurado sin abrir el panel interactivo `/mcp`. Funciona para servidores HTTP, SSE y conectores de claude.ai. Agregue `--no-browser` sobre SSH para imprimir la URL de autorización en lugar de abrir un navegador, luego pegue la URL de redirección nuevamente en el indicador. Requiere Claude Code v2.1.186 o posterior. Consulte [Autenticar desde la línea de comandos](/docs/es/mcp#authenticate-from-the-command-line) | `claude mcp login sentry` |40| `claude mcp login <name>` | Ejecutar el flujo OAuth de un servidor MCP configurado sin abrir el panel interactivo `/mcp`. Funciona para servidores HTTP, SSE y conectores de claude.ai. Agregue `--no-browser` sobre SSH para imprimir la URL de autorización en lugar de abrir un navegador, luego pegue la URL de redirección nuevamente en el indicador. Consulte [Autenticar desde la línea de comandos](/docs/es/mcp#authenticate-from-the-command-line) | `claude mcp login sentry` |

41| `claude mcp logout <name>` | Borrar credenciales OAuth almacenadas para un servidor MCP. Requiere Claude Code v2.1.186 o posterior | `claude mcp logout sentry` |41| `claude mcp logout <name>` | Borrar credenciales OAuth almacenadas para un servidor MCP | `claude mcp logout sentry` |

42| `claude plugin` | Administrar Claude Code [plugins](/docs/es/plugins). Alias: `claude plugins`. Consulte [referencia de plugins](/docs/es/plugins-reference#cli-commands-reference) para subcomandos | `claude plugin install code-review@claude-plugins-official` |42| `claude plugin` | Administrar Claude Code [plugins](/docs/es/plugins/overview). Alias: `claude plugins`. Consulte [referencia de plugins](/docs/es/plugins/cli-reference#claude-plugin-commands) para subcomandos | `claude plugin install code-review@claude-plugins-official` |

43| `claude project purge [path]` | Eliminar todo el estado local de Claude Code para un proyecto: transcripciones, listas de tareas, registros de depuración, historial de edición de archivos, líneas de historial de indicaciones y la entrada del proyecto en `~/.claude.json`. Omita `[path]` para elegir de una lista interactiva. Banderas: `--dry-run` para vista previa, `-y`/`--yes` para omitir confirmación, `-i`/`--interactive` para confirmar cada elemento, `--all` para cada proyecto. Consulte [Borrar datos locales](/docs/es/claude-directory#clear-local-data) | `claude project purge ~/work/repo --dry-run` |43| `claude project purge [path]` | Eliminar todo el estado local de Claude Code para un proyecto: transcripciones, listas de tareas, registros de depuración, historial de edición de archivos, líneas de historial de indicaciones y la entrada del proyecto en `~/.claude.json`. Omita `[path]` para elegir de una lista interactiva. Banderas: `--dry-run` para vista previa, `-y`/`--yes` para omitir confirmación, `-i`/`--interactive` para confirmar cada elemento, `--all` para cada proyecto. Consulte [Borrar datos locales](/docs/es/claude-directory#clear-local-data) | `claude project purge ~/work/repo --dry-run` |

44| `claude remote-control` | Iniciar un servidor de [Remote Control](/docs/es/remote-control) para controlar Claude Code desde Claude.ai o la aplicación Claude. Se ejecuta en modo servidor (sin sesión interactiva local). Consulte [Banderas de modo servidor](/docs/es/remote-control#start-a-remote-control-session). Después de detener el servidor, puede recuperar las sesiones que estaba sirviendo. Consulte [Reanudar sesiones después de detener el servidor](/docs/es/remote-control#resume-sessions-after-stopping-the-server) | `claude remote-control --name "My Project"` |44| `claude remote-control` | Iniciar un servidor de [Remote Control](/docs/es/remote-control) para controlar Claude Code desde Claude.ai o la aplicación Claude. Se ejecuta en modo servidor (sin sesión interactiva local). Consulte [Banderas de modo servidor](/docs/es/remote-control#start-a-remote-control-session). Después de detener el servidor, puede recuperar las sesiones que estaba sirviendo. Consulte [Reanudar sesiones después de detener el servidor](/docs/es/remote-control#resume-sessions-after-stopping-the-server) | `claude remote-control --name "My Project"` |

45| `claude respawn <id>` | Reiniciar una [sesión de fondo](/docs/es/agent-view#manage-sessions-from-the-shell), en ejecución o detenida, con su conversación intacta. Use `--all` para reiniciar cada sesión en ejecución, por ejemplo, para recoger un binario de Claude Code actualizado | `claude respawn 7c5dcf5d` |45| `claude respawn <id>` | Reiniciar una [sesión de fondo](/docs/es/agent-view#manage-sessions-from-the-shell), en ejecución o detenida, con su conversación intacta. Use `--all` para reiniciar cada sesión en ejecución, por ejemplo, para recoger un binario de Claude Code actualizado | `claude respawn 7c5dcf5d` |


114| `--permission-mode` | Comienza en un [modo de permisos](/docs/es/permission-modes) especificado. Acepta `default`, `acceptEdits`, `plan`, `auto`, `dontAsk`, `bypassPermissions`, o `manual` como alias para `default`. El alias `manual` selecciona el modo de permisos que la UI etiqueta como Manual y requiere Claude Code v2.1.200 o posterior; `claude --help` lo enumera en lugar de `default`, y ambos valores funcionan. Anula `defaultMode` de archivos de configuración. Sin esta bandera o `--dangerously-skip-permissions`, una nueva sesión comienza en el modo de permisos descrito en [qué modo de permisos comienza una sesión](/docs/es/permission-modes#which-mode-a-session-starts-in). Para `-p`, eso es `default` cuando nada está configurado | `claude --permission-mode plan` |114| `--permission-mode` | Comienza en un [modo de permisos](/docs/es/permission-modes) especificado. Acepta `default`, `acceptEdits`, `plan`, `auto`, `dontAsk`, `bypassPermissions`, o `manual` como alias para `default`. El alias `manual` selecciona el modo de permisos que la UI etiqueta como Manual y requiere Claude Code v2.1.200 o posterior; `claude --help` lo enumera en lugar de `default`, y ambos valores funcionan. Anula `defaultMode` de archivos de configuración. Sin esta bandera o `--dangerously-skip-permissions`, una nueva sesión comienza en el modo de permisos descrito en [qué modo de permisos comienza una sesión](/docs/es/permission-modes#which-mode-a-session-starts-in). Para `-p`, eso es `default` cuando nada está configurado | `claude --permission-mode plan` |

115| `--permission-prompt-tool` | Especifica una herramienta MCP para manejar solicitudes de permiso en modo no interactivo. Claude Code espera a que el servidor MCP de esa herramienta se conecte antes de ejecutar el primer turno, hasta el tiempo de espera de inicio [`MCP_TIMEOUT`](/docs/es/env-vars), 30 segundos por defecto. <br /><br />La herramienta de indicador no puede aprobar una herramienta MCP marcada como [requiriendo interacción del usuario](/docs/es/mcp#require-approval-for-a-specific-tool): Claude Code convierte un resultado `allow` para una en una negación. Esta restricción requiere Claude Code v2.1.199 o posterior | `claude -p --permission-prompt-tool mcp_auth_tool "query"` |115| `--permission-prompt-tool` | Especifica una herramienta MCP para manejar solicitudes de permiso en modo no interactivo. Claude Code espera a que el servidor MCP de esa herramienta se conecte antes de ejecutar el primer turno, hasta el tiempo de espera de inicio [`MCP_TIMEOUT`](/docs/es/env-vars), 30 segundos por defecto. <br /><br />La herramienta de indicador no puede aprobar una herramienta MCP marcada como [requiriendo interacción del usuario](/docs/es/mcp#require-approval-for-a-specific-tool): Claude Code convierte un resultado `allow` para una en una negación. Esta restricción requiere Claude Code v2.1.199 o posterior | `claude -p --permission-prompt-tool mcp_auth_tool "query"` |

116| `--permission-prompts` | Establece quién responde solicitudes de permiso en modo print. Con el `host` predeterminado, Claude Code las envía al host del Agent SDK o a la herramienta `--permission-prompt-tool`. Pasa `none` cuando nadie puede responder, y Claude Code las niega en su lugar. Consulta [Desactivar solicitudes de permiso en ejecuciones desatendidas](/docs/es/headless#turn-off-permission-prompts-in-unattended-runs). Requiere Claude Code v2.1.259 o posterior | `claude -p --permission-prompts none "query"` |116| `--permission-prompts` | Establece quién responde solicitudes de permiso en modo print. Con el `host` predeterminado, Claude Code las envía al host del Agent SDK o a la herramienta `--permission-prompt-tool`. Pasa `none` cuando nadie puede responder, y Claude Code las niega en su lugar. Consulta [Desactivar solicitudes de permiso en ejecuciones desatendidas](/docs/es/headless#turn-off-permission-prompts-in-unattended-runs). Requiere Claude Code v2.1.259 o posterior | `claude -p --permission-prompts none "query"` |

117| `--plugin-dir` | Carga un plugin desde un directorio o archivo `.zip`, o varios desde una [carpeta de plugins](/docs/es/plugins#test-your-plugins-locally), solo para esta sesión. Cada bandera toma una ruta. Repite la bandera para más rutas: `--plugin-dir A --plugin-dir B.zip`. Pasar una carpeta de plugins requiere Claude Code v2.1.265 o posterior | `claude --plugin-dir ./my-plugin` |117| `--plugin-dir` | Carga un plugin desde un directorio o archivo `.zip`, o varios desde una [carpeta de plugins](/docs/es/plugins/create#load-a-directory-or-archive-for-one-session), solo para esta sesión. Cada bandera toma una ruta. Repite la bandera para más rutas: `--plugin-dir A --plugin-dir B.zip`. Pasar una carpeta de plugins requiere Claude Code v2.1.265 o posterior | `claude --plugin-dir ./my-plugin` |

118| `--plugin-url` | Obtén un archivo `.zip` de plugin desde una URL solo para esta sesión. Repite la bandera para múltiples plugins, o pasa URLs separadas por espacios en un valor entrecomillado único | `claude --plugin-url https://example.com/plugin.zip` |118| `--plugin-url` | Obtén un archivo `.zip` de plugin desde una URL solo para esta sesión. Repite la bandera para múltiples plugins, o pasa URLs separadas por espacios en un valor entrecomillado único | `claude --plugin-url https://example.com/plugin.zip` |

119| `--print`, `-p` | Imprime la respuesta sin modo interactivo (consulta la [documentación del Agent SDK](/docs/es/agent-sdk/overview) para detalles de uso programático) | `claude -p "query"` |119| `--print`, `-p` | Imprime la respuesta sin modo interactivo (consulta la [documentación del Agent SDK](/docs/es/agent-sdk/overview) para detalles de uso programático) | `claude -p "query"` |

120| `--prompt-suggestions` | Emite un mensaje `prompt_suggestion` con un indicador de usuario siguiente predicho después de cada turno que genera uno; conversaciones muy cortas pueden no producir ninguno. Requiere `--print`, `--output-format stream-json`, y `--verbose`. Consulta [Sugerencias de indicador](/docs/es/interactive-mode#prompt-suggestions) | `claude -p --prompt-suggestions --output-format stream-json --verbose "query"` |120| `--prompt-suggestions` | Emite un mensaje `prompt_suggestion` con un indicador de usuario siguiente predicho después de cada turno que genera uno; conversaciones muy cortas pueden no producir ninguno. Requiere `--print`, `--output-format stream-json`, y `--verbose`. Consulta [Sugerencias de indicador](/docs/es/interactive-mode#prompt-suggestions) | `claude -p --prompt-suggestions --output-format stream-json --verbose "query"` |


134| `--system-prompt-file` | Carga el indicador del sistema desde un archivo, reemplazando el indicador predeterminado | `claude --system-prompt-file ./custom-prompt.txt` |134| `--system-prompt-file` | Carga el indicador del sistema desde un archivo, reemplazando el indicador predeterminado | `claude --system-prompt-file ./custom-prompt.txt` |

135| `--system-prompt-snapshot` | Pasa `off` para reconstruir el indicador del sistema en cada solicitud en lugar de reutilizar el indicador [registrado en la primera solicitud de la conversación](#system-prompt-flags-in-resumed-conversations), por ejemplo mientras iteras en el texto `--append-system-prompt` entre ejecuciones de `--continue`. Requiere Claude Code v2.1.257 o posterior | `claude --system-prompt-snapshot off` |135| `--system-prompt-snapshot` | Pasa `off` para reconstruir el indicador del sistema en cada solicitud en lugar de reutilizar el indicador [registrado en la primera solicitud de la conversación](#system-prompt-flags-in-resumed-conversations), por ejemplo mientras iteras en el texto `--append-system-prompt` entre ejecuciones de `--continue`. Requiere Claude Code v2.1.257 o posterior | `claude --system-prompt-snapshot off` |

136| `--teleport` | Reanuda una [sesión en la nube](/docs/es/claude-code-on-the-web) en tu terminal local | `claude --teleport` |136| `--teleport` | Reanuda una [sesión en la nube](/docs/es/claude-code-on-the-web) en tu terminal local | `claude --teleport` |

137| `--teammate-mode` | Establece cómo los compañeros de [equipo de agentes](/docs/es/agent-teams) se muestran: `in-process` (predeterminado), `auto`, `tmux`, o `iterm2` (añadido en v2.1.186). Anula la configuración [`teammateMode`](/docs/es/settings-reference#teammatemode) para esta sesión. Consulta [Elige un modo de visualización](/docs/es/agent-teams#choose-a-display-mode) | `claude --teammate-mode auto` |137| `--teammate-mode` | Establece cómo los compañeros de [equipo de agentes](/docs/es/agent-teams) se muestran: `in-process` (predeterminado), `auto`, `tmux`, o `iterm2`. Anula la configuración [`teammateMode`](/docs/es/settings-reference#teammatemode) para esta sesión. Consulta [Elige un modo de visualización](/docs/es/agent-teams#choose-a-display-mode) | `claude --teammate-mode auto` |

138| `--tmux` | Crea una sesión tmux para el worktree. Requiere `--worktree`. Usa paneles nativos de iTerm2 cuando estén disponibles; pasa `--tmux=classic` para tmux tradicional | `claude -w feature-auth --tmux` |138| `--tmux` | Crea una sesión tmux para el worktree. Requiere `--worktree`. Usa paneles nativos de iTerm2 cuando estén disponibles; pasa `--tmux=classic` para tmux tradicional | `claude -w feature-auth --tmux` |

139| `--tools` | Restringe qué herramientas integradas puede usar Claude. Usa `""` para deshabilitar todas, `"default"` para el conjunto predeterminado, o nombres de herramientas como `"Bash,Edit,Read"`. En macOS, Linux y WSL, el conjunto predeterminado deja fuera `Glob` y `Grep`, como se describe en [Comportamiento de la herramienta Glob](/docs/es/tools-reference#glob-tool-behavior). Si nombras una de las [herramientas de seguimiento de tareas](/docs/es/tools-reference#task-tool-availability) aquí, Claude Code también opta por la sesión. La bandera no afecta herramientas MCP; para negar esas también, usa `--disallowedTools "mcp__*"`. Una lista que omite [`EndConversation`](/docs/es/tools-reference#endconversation-tool-behavior) no la elimina; `""` la elimina solo cuando no quedan herramientas MCP | `claude --tools "Bash,Edit,Read"` |139| `--tools` | Restringe qué herramientas integradas puede usar Claude. Usa `""` para deshabilitar todas, `"default"` para el conjunto predeterminado, o nombres de herramientas como `"Bash,Edit,Read"`. En macOS, Linux y WSL, el conjunto predeterminado deja fuera `Glob` y `Grep`, como se describe en [Comportamiento de la herramienta Glob](/docs/es/tools-reference#glob-tool-behavior). Si nombras una de las [herramientas de seguimiento de tareas](/docs/es/tools-reference#task-tool-availability) aquí, Claude Code también opta por la sesión. La bandera no afecta herramientas MCP; para negar esas también, usa `--disallowedTools "mcp__*"`. Una lista que omite [`EndConversation`](/docs/es/tools-reference#endconversation-tool-behavior) no la elimina; `""` la elimina solo cuando no quedan herramientas MCP | `claude --tools "Bash,Edit,Read"` |

140| `--verbose` | Habilita el registro detallado, muestra la salida completa turno por turno. Anula la configuración [`viewMode`](/docs/es/settings-reference#viewmode) para esta sesión | `claude --verbose` |140| `--verbose` | Habilita el registro detallado, muestra la salida completa turno por turno. Anula la configuración [`viewMode`](/docs/es/settings-reference#viewmode) para esta sesión | `claude --verbose` |

Details

300| Sus servidores MCP `.mcp.json` del repositorio | Sí, en una sesión con un repositorio | Parte del clon, encontrado desde el directorio de trabajo de la sesión |300| Sus servidores MCP `.mcp.json` del repositorio | Sí, en una sesión con un repositorio | Parte del clon, encontrado desde el directorio de trabajo de la sesión |

301| Su `.claude/rules/` del repositorio | Sí | Parte del clon |301| Su `.claude/rules/` del repositorio | Sí | Parte del clon |

302| Su `.claude/skills/`, `.claude/agents/`, `.claude/commands/` del repositorio | Sí | Parte del clon |302| Su `.claude/skills/`, `.claude/agents/`, `.claude/commands/` del repositorio | Sí | Parte del clon |

303| Plugins y marketplaces declarados en el `.claude/settings.json` de su repositorio | No | Una sesión en la nube no instala los plugins que un repositorio activa bajo [`enabledPlugins`](/docs/es/settings-reference#enabledplugins), incluidos los de los marketplaces que enumera bajo [`extraKnownMarketplaces`](/docs/es/settings-reference#extraknownmarketplaces). Habilite el plugin para su cuenta claude.ai en su lugar, para que Claude Code lo cargue como un [plugin sincronizado](/docs/es/plugins-reference#synced-plugins) |303| Plugins y marketplaces declarados en el `.claude/settings.json` de su repositorio | No | Una sesión en la nube no instala los plugins que un repositorio activa bajo [`enabledPlugins`](/docs/es/settings-reference#enabledplugins), incluidos los de los marketplaces que enumera bajo [`extraKnownMarketplaces`](/docs/es/settings-reference#extraknownmarketplaces) |

304| La [configuración administrada por servidor](/docs/es/server-managed-settings) de su organización | Sí | Obtenida de los servidores de Anthropic cuando comienza la sesión. Consulte [Cobertura de superficie](/docs/es/model-config#surface-coverage) para ver cómo se aplica `availableModels` en sesiones en la nube. La configuración implementada en su dispositivo a través de MDM o archivos de configuración administrada no se aplica, porque la sesión se ejecuta en una VM administrada por Anthropic; en un [entorno autohospedado](/docs/es/self-hosted-environments), las sesiones también leen el archivo de configuración administrada en la imagen del ejecutor, según [cómo Claude Code combina fuentes administradas](/docs/es/managed-settings#how-claude-code-combines-managed-sources) |304| La [configuración administrada por servidor](/docs/es/server-managed-settings) de su organización | Sí | Obtenida de los servidores de Anthropic cuando comienza la sesión. Consulte [Cobertura de superficie](/docs/es/model-config#surface-coverage) para ver cómo se aplica `availableModels` en sesiones en la nube. La configuración implementada en su dispositivo a través de MDM o archivos de configuración administrada no se aplica, porque la sesión se ejecuta en una VM administrada por Anthropic; en un [entorno autohospedado](/docs/es/self-hosted-environments), las sesiones también leen el archivo de configuración administrada en la imagen del ejecutor, según [cómo Claude Code combina fuentes administradas](/docs/es/managed-settings#how-claude-code-combines-managed-sources) |

305| Su `~/.claude/CLAUDE.md` de usuario | No | Vive en su máquina, no en el repositorio |305| Su `~/.claude/CLAUDE.md` de usuario | No | Vive en su máquina, no en el repositorio |

306| Su `~/.claude/skills/`, `~/.claude/agents/`, `~/.claude/commands/` de usuario | No | Viven en su máquina, no en el repositorio. Confirme los en el directorio `.claude/` del repositorio en su lugar. Las sesiones en la nube cargan automáticamente las skills que habilita en claude.ai |306| Su `~/.claude/skills/`, `~/.claude/agents/`, `~/.claude/commands/` de usuario | No | Viven en su máquina, no en el repositorio. Confirme los en el directorio `.claude/` del repositorio en su lugar. Las sesiones en la nube cargan automáticamente las skills que habilita en claude.ai |

307| Plugins habilitados solo en su configuración de usuario | No | El `enabledPlugins` con alcance de usuario vive en `~/.claude/settings.json` en su máquina. Habilítelos para su cuenta claude.ai en su lugar, para que Claude Code los cargue como [plugins sincronizados](/docs/es/plugins-reference#synced-plugins) |307| Plugins habilitados solo en su configuración de usuario | No | El `enabledPlugins` con alcance de usuario vive en `~/.claude/settings.json` en su máquina |

308| Servidores MCP que agregó con `claude mcp add` en el alcance local predeterminado o el alcance de usuario | No | Esos escriben en `~/.claude.json` en su máquina, no en el repositorio. Agregue el servidor con `claude mcp add --scope project`, que escribe el [`.mcp.json`](/docs/es/mcp#project-scope) del repositorio, y confirme ese archivo. Una sesión con un repositorio lo carga |308| Servidores MCP que agregó con `claude mcp add` en el alcance local predeterminado o el alcance de usuario | No | Esos escriben en `~/.claude.json` en su máquina, no en el repositorio. Agregue el servidor con `claude mcp add --scope project`, que escribe el [`.mcp.json`](/docs/es/mcp#project-scope) del repositorio, y confirme ese archivo. Una sesión con un repositorio lo carga |

309| Variables de transporte en el bloque `env` de `.claude/settings.json` de su repositorio, como `NODE_EXTRA_CA_CERTS` y las [variables de certificado de cliente mTLS](/docs/es/network-config#mtls-authentication) | No | El entorno de alojamiento administra la conexión de API de la sesión, por lo que Claude Code ignora estas claves y anota cada clave ignorada en el registro de depuración de la sesión |309| Variables de transporte en el bloque `env` de `.claude/settings.json` de su repositorio, como `NODE_EXTRA_CA_CERTS` y las [variables de certificado de cliente mTLS](/docs/es/network-config#mtls-authentication) | No | El entorno de alojamiento administra la conexión de API de la sesión, por lo que Claude Code ignora estas claves y anota cada clave ignorada en el registro de depuración de la sesión |

310| Claves de API y tokens para servicios que Claude llama | En planes Pro y Max, como [credenciales de API](#add-api-credentials) | Agrega la clave una vez en el entorno y el proxy del agente la adjunta a las solicitudes de los hosts que enumera. Una clave que el proxy del agente [no puede adjuntar](#requests-that-never-get-the-credential), o cualquier clave en un plan Team o Enterprise, permanece en una variable de entorno |310| Claves de API y tokens para servicios que Claude llama | En planes Pro y Max, como [credenciales de API](#add-api-credentials) | Agrega la clave una vez en el entorno y el proxy del agente la adjunta a las solicitudes de los hosts que enumera. Una clave que el proxy del agente [no puede adjuntar](#requests-that-never-get-the-credential), o cualquier clave en un plan Team o Enterprise, permanece en una variable de entorno |

commands.md +5 −5

Details

61| `/autocompact [auto\|<tokens>]` | Establece la ventana de auto-compactación: qué tan llena se pone la ventana de contexto antes de que Claude Code se compacte automáticamente. Pasa un tamaño como `500k`, o `auto` para volver a la ventana ajustada para tu modelo. Claude Code guarda el valor en la configuración de usuario y lo aplica a la sesión actual. Consulta [Establecer la ventana de auto-compactación](/docs/es/model-config#set-the-auto-compact-window) para ver los valores aceptados y qué lo anula. Sin un argumento, abre un diálogo que muestra la ventana actual. Requiere Claude Code v2.1.221 o posterior |61| `/autocompact [auto\|<tokens>]` | Establece la ventana de auto-compactación: qué tan llena se pone la ventana de contexto antes de que Claude Code se compacte automáticamente. Pasa un tamaño como `500k`, o `auto` para volver a la ventana ajustada para tu modelo. Claude Code guarda el valor en la configuración de usuario y lo aplica a la sesión actual. Consulta [Establecer la ventana de auto-compactación](/docs/es/model-config#set-the-auto-compact-window) para ver los valores aceptados y qué lo anula. Sin un argumento, abre un diálogo que muestra la ventana actual. Requiere Claude Code v2.1.221 o posterior |

62| `/autofix-pr [prompt]` | Genera una sesión de [Claude Code en la web](/docs/es/claude-code-on-the-web#auto-fix-pull-requests) que observa el PR de la rama actual y envía correcciones cuando CI falla o los revisores dejan comentarios. Detecta el PR abierto desde tu rama extraída con `gh pr view`; para observar un PR diferente, primero extrae su rama. De forma predeterminada, se le dice a la sesión en la nube que corrija cada fallo de CI y comentario de revisión; pasa un prompt para darle instrucciones diferentes, por ejemplo `/autofix-pr only fix lint and type errors`. Requiere la CLI `gh` y acceso a [Claude Code en la web](/docs/es/claude-code-on-the-web) |62| `/autofix-pr [prompt]` | Genera una sesión de [Claude Code en la web](/docs/es/claude-code-on-the-web#auto-fix-pull-requests) que observa el PR de la rama actual y envía correcciones cuando CI falla o los revisores dejan comentarios. Detecta el PR abierto desde tu rama extraída con `gh pr view`; para observar un PR diferente, primero extrae su rama. De forma predeterminada, se le dice a la sesión en la nube que corrija cada fallo de CI y comentario de revisión; pasa un prompt para darle instrucciones diferentes, por ejemplo `/autofix-pr only fix lint and type errors`. Requiere la CLI `gh` y acceso a [Claude Code en la web](/docs/es/claude-code-on-the-web) |

63| `/background [prompt]` | Desvincula la sesión actual para ejecutarse como un [agente de fondo](/docs/es/agent-view) y libera esta terminal. Pasa un prompt para enviar una instrucción más antes de desvincularse. Monitorea la sesión con `claude agents`. Para copiar la conversación en una nueva sesión de fondo mientras esta sigue ejecutándose, usa `/fork`. Alias: `/bg` |63| `/background [prompt]` | Desvincula la sesión actual para ejecutarse como un [agente de fondo](/docs/es/agent-view) y libera esta terminal. Pasa un prompt para enviar una instrucción más antes de desvincularse. Monitorea la sesión con `claude agents`. Para copiar la conversación en una nueva sesión de fondo mientras esta sigue ejecutándose, usa `/fork`. Alias: `/bg` |

64| `/batch <instruction>` | **[Skill](/docs/es/skills#bundled-skills).** Orquesta cambios a gran escala en toda una base de código en paralelo. Investiga la base de código, descompone el trabajo en 5 a 30 unidades independientes y presenta un plan. Una vez aprobado, genera un [subagente de fondo](/docs/es/sub-agents#run-subagents-in-foreground-or-background) por unidad en un [git worktree](/docs/es/worktrees) aislado. Cada subagente implementa su unidad, ejecuta pruebas y abre una solicitud de extracción. Requiere un repositorio git. Ejemplo: `/batch migrate src/ from JavaScript to TypeScript` |64| `/batch <instruction>` | **[Skill](/docs/es/skills#bundled-skills).** Orquesta cambios a gran escala en toda una base de código en paralelo. Investiga la base de código, descompone el trabajo en 5 a 30 unidades independientes y presenta un plan. Una vez aprobado, genera un [subagente de fondo](/docs/es/sub-agents#run-subagents-in-foreground-or-background) por unidad en un [worktree](/docs/es/worktrees) aislado. Cada subagente implementa su unidad, ejecuta pruebas y publica su cambio. Requiere un repositorio git o un [hook `WorktreeCreate`](/docs/es/worktrees#non-git-version-control) que cree los worktrees. Fuera de un repositorio git, `/batch` requiere Claude Code v2.1.281 o posterior. Ejemplo: `/batch migrate src/ from JavaScript to TypeScript` |

65| `/branch [name]` | Crea una rama de la conversación actual en este punto, para que puedas probar una dirección diferente sin perder la conversación tal como está. Te cambia a la rama y preserva la original, a la que puedes volver con `/resume`. Para ejecutar una copia como una [sesión de fondo](/docs/es/agent-view) separada en lugar de cambiar a ella, usa `/fork`; para entregar una tarea secundaria a un [subagente](/docs/es/sub-agents) que informe de vuelta a esta conversación, usa `/subtask` |65| `/branch [name]` | Crea una rama de la conversación actual en este punto, para que puedas probar una dirección diferente sin perder la conversación tal como está. Te cambia a la rama y preserva la original, a la que puedes volver con `/resume`. Para ejecutar una copia como una [sesión de fondo](/docs/es/agent-view) separada en lugar de cambiar a ella, usa `/fork`; para entregar una tarea secundaria a un [subagente](/docs/es/sub-agents) que informe de vuelta a esta conversación, usa `/subtask` |

66| `/btw [question]` | Haz una [pregunta secundaria](/docs/es/interactive-mode#side-questions-with-%2Fbtw) sobre la sesión actual sin agregarla a la conversación. Si ejecutas `/btw` sin una pregunta, Claude Code muestra tu pregunta secundaria más reciente para que puedas examinar respuestas anteriores; si aún no has hecho una, Claude Code imprime una línea de uso. Antes de v2.1.212, `/btw` requería una pregunta |66| `/btw [question]` | Haz una [pregunta secundaria](/docs/es/interactive-mode#side-questions-with-%2Fbtw) sobre la sesión actual sin agregarla a la conversación. Si ejecutas `/btw` sin una pregunta, Claude Code muestra tu pregunta secundaria más reciente para que puedas examinar respuestas anteriores; si aún no has hecho una, Claude Code imprime una línea de uso. Antes de v2.1.212, `/btw` requería una pregunta |

67| `/bug [report]` | Reporta un error o comparte tu conversación. Tú eliges cuánto historial de sesión incluir y confirmas en una pantalla de consentimiento antes de que se envíe nada. Cuando has iniciado sesión en Anthropic en una conexión de primera parte, el informe va a Anthropic; en un proveedor de terceros, o sin credenciales de Anthropic, Claude Code escribe el informe en un [archivo local bajo `~/.claude/feedback-bundles/`](/docs/es/data-usage#telemetry-services) que reenvías tú mismo. En la [extensión de VS Code](/docs/es/vs-code#use-the-prompt-box), `/bug` abre el diálogo de comentarios propio de la extensión en su lugar; requiere Claude Code v2.1.229 o posterior. Cuando lo ejecutas mientras Claude está respondiendo, Claude Code abre el diálogo de inmediato. Antes de v2.1.232, Claude Code ponía en cola el comando hasta que el turno terminaba. Alias: `/share`. Antes de v2.1.212, `/bug` y `/share` eran alias de `/feedback` |67| `/bug [report]` | Reporta un error o comparte tu conversación. Tú eliges cuánto historial de sesión incluir y confirmas en una pantalla de consentimiento antes de que se envíe nada. Cuando has iniciado sesión en Anthropic en una conexión de primera parte, el informe va a Anthropic; en un proveedor de terceros, o sin credenciales de Anthropic, Claude Code escribe el informe en un [archivo local bajo `~/.claude/feedback-bundles/`](/docs/es/data-usage#telemetry-services) que reenvías tú mismo. En la [extensión de VS Code](/docs/es/vs-code#use-the-prompt-box), `/bug` abre el diálogo de comentarios propio de la extensión en su lugar; requiere Claude Code v2.1.229 o posterior. Cuando lo ejecutas mientras Claude está respondiendo, Claude Code abre el diálogo de inmediato. Antes de v2.1.232, Claude Code ponía en cola el comando hasta que el turno terminaba. Alias: `/share`. Antes de v2.1.212, `/bug` y `/share` eran alias de `/feedback` |

68| `/cd <path>` | Mueve esta sesión a un nuevo directorio de trabajo, manteniendo la conversación. Escribe una ruta parcial para ver sugerencias de directorios coincidentes; presiona `Tab` para aceptar una. Las sugerencias requieren Claude Code v2.1.206 o posterior. Para ver qué aplica Claude Code desde el nuevo directorio tan pronto como te muevas, y cómo `/cd` difiere de `/add-dir`, consulta [Mover la sesión a otro directorio](/docs/es/permissions#move-the-session-to-another-directory) |68| `/cd <path>` | Mueve esta sesión a un nuevo directorio de trabajo, manteniendo la conversación. Escribe una ruta parcial para ver sugerencias de directorios coincidentes; presiona `Tab` para aceptar una. Las sugerencias requieren Claude Code v2.1.206 o posterior. Para ver qué aplica Claude Code desde el nuevo directorio tan pronto como te muevas, y cómo `/cd` difiere de `/add-dir`, consulta [Mover la sesión a otro directorio](/docs/es/permissions#move-the-session-to-another-directory) |

69| `/chrome` | Configura los ajustes de [Claude en Chrome](/docs/es/chrome) |69| `/chrome` | Configura los ajustes de [Claude en Chrome](/docs/es/chrome) |

70| `/claude-api [migrate\|upgrade\|managed-agents-onboard\|prompt-audit\|cost-optimize\|build-eval\|hillclimb]` | **[Skill](/docs/es/skills#bundled-skills).** Carga material de referencia de [Claude API](https://platform.claude.com/docs/en/api/overview) y [Managed Agents](https://platform.claude.com/docs/en/managed-agents/overview) para el idioma de tu proyecto. También se activa automáticamente cuando tu código importa `anthropic` o `@anthropic-ai/sdk`. Ejecuta `migrate` para actualizar el código existente de Claude API a un modelo más nuevo. Ejecuta `upgrade` para mover la dependencia del SDK de Anthropic de tu proyecto a través de una versión principal, actualmente el paquete `anthropic` de Python de 0.x a 1.x. Ejecuta `managed-agents-onboard` para un tutorial que crea un nuevo Managed Agent. Ejecuta `prompt-audit` para marcar instrucciones escritas para modelos más antiguos en tus prompts, skills y descripciones de herramientas y proponer correcciones como un diff. Ejecuta `cost-optimize` para perfilar dónde va el gasto de Claude API de tu proyecto y proponer ahorros de opciones como almacenamiento en caché de prompts, recorte de tokens de entrada y salida innecesarios, procesamiento por lotes, esfuerzo y elección de modelo, un cambio a la vez. Ejecuta `build-eval` para construir un conjunto de evaluación para tu aplicación impulsada por Claude, e `hillclimb` para mejorar iterativamente la aplicación contra una evaluación existente. El subcomando `prompt-audit` requiere Claude Code v2.1.221 o posterior, `upgrade` requiere v2.1.236 o posterior, `cost-optimize` requiere v2.1.247 o posterior, y `build-eval` e `hillclimb` requieren v2.1.259 o posterior |70| `/claude-api [migrate\|upgrade\|managed-agents-onboard\|prompt-audit\|cost-optimize\|build-eval\|hillclimb]` | **[Skill](/docs/es/skills#bundled-skills).** Carga material de referencia de [Claude API](https://platform.claude.com/docs/en/api/overview) y [Managed Agents](https://platform.claude.com/docs/en/managed-agents/overview) para el idioma de tu proyecto. También se activa automáticamente cuando tu código importa `anthropic` o `@anthropic-ai/sdk`. Ejecuta `migrate` para actualizar el código existente de Claude API a un modelo más nuevo. Ejecuta `upgrade` para mover la dependencia del SDK de Anthropic de tu proyecto a través de una versión principal, actualmente el paquete `anthropic` de Python de 0.x a 1.x. Ejecuta `managed-agents-onboard` para un tutorial que crea un nuevo Managed Agent. Ejecuta `prompt-audit` para marcar instrucciones escritas para modelos más antiguos en tus prompts, skills y descripciones de herramientas y proponer correcciones como un diff. Ejecuta `cost-optimize` para perfilar dónde va el gasto de Claude API de tu proyecto y proponer ahorros de opciones como almacenamiento en caché de prompts, recorte de tokens de entrada y salida innecesarios, procesamiento por lotes, esfuerzo y elección de modelo, un cambio a la vez. Ejecuta `build-eval` para construir un conjunto de evaluación para tu aplicación impulsada por Claude, e `hillclimb` para mejorar iterativamente la aplicación contra una evaluación existente. El subcomando `prompt-audit` requiere Claude Code v2.1.221 o posterior, `upgrade` requiere v2.1.236 o posterior, `cost-optimize` requiere v2.1.247 o posterior, y `build-eval` e `hillclimb` requieren v2.1.259 o posterior |

71| `/clear [name]` | Inicia una nueva conversación con contexto vacío. Pasa un nombre para etiquetar la conversación anterior en el selector `/resume`. Para liberar contexto mientras continúas la misma conversación, usa `/compact` en su lugar. Reanuda la conversación anterior con `/resume`, o, en el mismo proceso de Claude Code, restáurala desde [la entrada de sesión anterior del menú de rebobinado](/docs/es/checkpointing#rewind-past-a-cleared-conversation). La entrada de rebobinado requiere Claude Code v2.1.191 o posterior. Alias: `/reset`, `/new` |71| `/clear [name]` | Inicia una nueva conversación con contexto vacío. Pasa un nombre para etiquetar la conversación anterior en el selector `/resume`. Para liberar contexto mientras continúas la misma conversación, usa `/compact` en su lugar. Reanuda la conversación anterior con `/resume`, o, en el mismo proceso de Claude Code, restáurala desde [la entrada de sesión anterior del menú de rebobinado](/docs/es/checkpointing#rewind-past-a-cleared-conversation). Alias: `/reset`, `/new` |

72| `/code-review [low\|medium\|high\|xhigh\|max\|ultra] [--fix] [--comment] [pr#\|branch\|path]` | **[Skill](/docs/es/skills#bundled-skills).** Revisa el diff actual, o un número de PR, rama o ruta que pases, para detectar errores de corrección. Dependiendo de tu modelo y nivel de esfuerzo, la revisión también cubre oportunidades de limpieza. Pasa `--fix` para aplicar hallazgos, `--comment` para publicarlos en el PR de GitHub o solicitud de fusión de GitLab, o `ultra` para ejecutar una [revisión en la nube](/docs/es/ultrareview) profunda. Publicar en una solicitud de fusión de GitLab requiere Claude Code v2.1.257 o posterior. Con `ultra` en un destino de PR de `github.com`, pasa `--post` para preseleccionar [publicar los hallazgos terminados en el PR](/docs/es/ultrareview#post-findings-to-the-pull-request) en el diálogo de lanzamiento; `--post` requiere Claude Code v2.1.227 o posterior. Consulta [Revisar un diff localmente](/docs/es/code-review#review-a-diff-locally) para los niveles de esfuerzo, orientación y cómo se relaciona con `/simplify`. Alias: `/review` |72| `/code-review [low\|medium\|high\|xhigh\|max\|ultra] [--fix] [--comment] [pr#\|branch\|path]` | **[Skill](/docs/es/skills#bundled-skills).** Revisa el diff actual, o un número de PR, rama o ruta que pases, para detecta lo que sí llega al PR en cuanto a errores de corrección. Dependiendo de tu modelo y nivel de esfuerzo, la revisión también cubre oportunidades de limpieza. Pasa `--fix` para aplicar hallazgos, `--comment` para publicarlos en el PR de GitHub o solicitud de fusión de GitLab, o `ultra` para ejecutar una [revisión en la nube](/docs/es/ultrareview) profunda. Publicar en una solicitud de fusión de GitLab requiere Claude Code v2.1.257 o posterior. Con `ultra` en un destino de PR de `github.com`, pasa `--post` para preseleccionar [publicar los hallazgos terminados en el PR](/docs/es/ultrareview#post-findings-to-the-pull-request) en el diálogo de lanzamiento; `--post` requiere Claude Code v2.1.227 o posterior. Consulta [Revisar un diff localmente](/docs/es/code-review#review-a-diff-locally) para los niveles de esfuerzo, orientación y cómo se relaciona con `/simplify`. Alias: `/review` |

73| `/color [color\|default]` | Establece el color de la barra de prompts para la sesión actual. Colores disponibles: `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink`, `cyan`. Usa `default` para restablecer, o ejecuta sin argumento para elegir un color aleatorio. Cuando [Remote Control](/docs/es/remote-control) está conectado, el color se sincroniza con claude.ai/code. También disponible en modo no interactivo (`-p`); requiere Claude Code v2.1.205 o posterior |73| `/color [color\|default]` | Establece el color de la barra de prompts para la sesión actual. Colores disponibles: `red`, `blue`, `green`, `yellow`, `purple`, `orange`, `pink`, `cyan`. Usa `default` para restablecer, o ejecuta sin argumento para elegir un color aleatorio. Cuando [Remote Control](/docs/es/remote-control) está conectado, el color se sincroniza con claude.ai/code. También disponible en modo no interactivo (`-p`); requiere Claude Code v2.1.205 o posterior |

74| `/compact [instructions]` | Libera contexto resumiendo la conversación hasta ahora. Opcionalmente pasa instrucciones de enfoque para el resumen. Consulta [cómo la compactación maneja reglas, skills y archivos de memoria](/docs/es/context-window#what-survives-compaction) |74| `/compact [instructions]` | Libera contexto resumiendo la conversación hasta ahora. Opcionalmente pasa instrucciones de enfoque para el resumen. Consulta [cómo la compactación maneja reglas, skills y archivos de memoria](/docs/es/context-window#what-survives-compaction) |

75| `/config [key=value ...]` | Abre la interfaz de [Configuración](/docs/es/settings) para ajustar tema, modelo, [estilo de salida](/docs/es/output-styles) y otras preferencias. Pasa uno o más pares `key=value` para establecer una configuración directamente sin abrir la interfaz, por ejemplo `/config thinking=false`, `/config theme=dark`, o `/config model=sonnet`. El formulario `key=value` también funciona en modo no interactivo (`-p`) y desde la aplicación móvil de Claude a través de [Remote Control](/docs/es/remote-control). El formulario `key=value` no puede activar una configuración que necesite tu confirmación en el panel, como [`autoContinueAtUsageLimit`](/docs/es/interactive-mode#turn-automatic-continue-off), aunque puede desactivarla. Ejecuta `/config --help` para enumerar las claves que acepta. Alias: `/settings` |75| `/config [key=value ...]` | Abre la interfaz de [Configuración](/docs/es/settings) para ajustar tema, modelo, [estilo de salida](/docs/es/output-styles) y otras preferencias. Pasa uno o más pares `key=value` para establecer una configuración directamente sin abrir la interfaz, por ejemplo `/config thinking=false`, `/config theme=dark`, o `/config model=sonnet`. El formulario `key=value` también funciona en modo no interactivo (`-p`) y desde la aplicación móvil de Claude a través de [Remote Control](/docs/es/remote-control). El formulario `key=value` no puede activar una configuración que necesite tu confirmación en el panel, como [`autoContinueAtUsageLimit`](/docs/es/interactive-mode#turn-automatic-continue-off), aunque puede desactivarla. Ejecuta `/config --help` para enumerar las claves que acepta. Alias: `/settings` |


116| `/passes` | Comparte una semana gratis de Claude Code con amigos. Solo visible si tu cuenta es elegible |116| `/passes` | Comparte una semana gratis de Claude Code con amigos. Solo visible si tu cuenta es elegible |

117| `/permissions` | Gestiona reglas de permitir, preguntar y denegar para permisos de herramientas. Abre un diálogo interactivo donde puedes ver reglas por alcance, agregar o eliminar reglas, gestionar directorios de trabajo, y revisar [denegaciones automáticas de modo recientes](/docs/es/auto-mode-config#review-denials). También puedes ver y editar [reglas del clasificador de modo automático](/docs/es/auto-mode-config#edit-rules-from-permissions) desde la pestaña **Auto mode** del diálogo. Cuando lo ejecutas mientras Claude está respondiendo, Claude Code abre el diálogo de inmediato y aplica tus cambios comenzando con la siguiente llamada de herramienta de Claude en el mismo turno. Antes de v2.1.234, Claude Code ponía en cola el comando hasta que el turno terminaba. Alias: `/allowed-tools` |117| `/permissions` | Gestiona reglas de permitir, preguntar y denegar para permisos de herramientas. Abre un diálogo interactivo donde puedes ver reglas por alcance, agregar o eliminar reglas, gestionar directorios de trabajo, y revisar [denegaciones automáticas de modo recientes](/docs/es/auto-mode-config#review-denials). También puedes ver y editar [reglas del clasificador de modo automático](/docs/es/auto-mode-config#edit-rules-from-permissions) desde la pestaña **Auto mode** del diálogo. Cuando lo ejecutas mientras Claude está respondiendo, Claude Code abre el diálogo de inmediato y aplica tus cambios comenzando con la siguiente llamada de herramienta de Claude en el mismo turno. Antes de v2.1.234, Claude Code ponía en cola el comando hasta que el turno terminaba. Alias: `/allowed-tools` |

118| `/plan [description]` | Entra en modo plan directamente desde el prompt. Pasa una descripción opcional para entrar en modo plan e inmediatamente comenzar con esa tarea, por ejemplo `/plan fix the auth bug` |118| `/plan [description]` | Entra en modo plan directamente desde el prompt. Pasa una descripción opcional para entrar en modo plan e inmediatamente comenzar con esa tarea, por ejemplo `/plan fix the auth bug` |

119| `/plugin [subcommand]` | Gestiona [plugins](/docs/es/plugins) de Claude Code. Ejecuta sin argumento para abrir el menú de plugins, o pasa un subcomando como `list`, `install`, `enable`, o `disable` para actuar directamente. Claude Code puede activar un plugin durante la instalación; el [resumen de instalación](/docs/es/discover-plugins#install-plugins) te dice si lo hizo o si debes ejecutar `/reload-plugins` |119| `/plugin [subcommand]` | Gestiona [plugins](/docs/es/plugins/overview) de Claude Code. Ejecuta sin argumento para abrir el menú de plugins, o pasa un subcomando como `list`, `install`, `enable`, o `disable` para actuar directamente. Claude Code puede activar un plugin durante la instalación; el [resumen de instalación](/docs/es/plugins/install#install-a-plugin) te dice si lo hizo o si debes ejecutar `/reload-plugins` |

120| `/powerup` | Descubre características de Claude Code a través de lecciones interactivas rápidas con demostraciones animadas |120| `/powerup` | Descubre características de Claude Code a través de lecciones interactivas rápidas con demostraciones animadas |

121| `/pr-comments [PR]` | Eliminado en v2.1.91. Pídele a Claude directamente que vea comentarios de solicitud de extracción en su lugar. En versiones anteriores, obtiene y muestra comentarios de una solicitud de extracción de GitHub; detecta automáticamente el PR para la rama actual, o pasa una URL o número de PR. Requiere la CLI `gh` |121| `/pr-comments [PR]` | Eliminado en v2.1.91. Pídele a Claude directamente que vea comentarios de solicitud de extracción en su lugar. En versiones anteriores, obtiene y muestra comentarios de una solicitud de extracción de GitHub; detecta automáticamente el PR para la rama actual, o pasa una URL o número de PR. Requiere la CLI `gh` |

122| `/privacy-settings` | Ver y actualizar tu configuración de privacidad. Solo disponible para suscriptores de planes Pro y Max |122| `/privacy-settings` | Ver y actualizar tu configuración de privacidad. Solo disponible para suscriptores de planes Pro y Max |


124| `/rate-limit-options` | Muestra formas de seguir trabajando cuando un límite de uso de claude.ai bloquea una solicitud: espera y [continúa automáticamente cuando se restablezca el límite](/docs/es/interactive-mode#wait-for-a-usage-limit-to-reset), agrega [créditos de uso](/docs/es/costs#add-usage-credits-to-your-subscription), o actualiza tu plan. Claude Code también puede abrir este menú por su cuenta cuando alcanzas un límite en tu propia terminal. Consulta [Desactivar continuación automática](/docs/es/interactive-mode#turn-automatic-continue-off). Requiere una suscripción de claude.ai. No aparece en el menú de comandos; escríbelo en su totalidad. Las filas de espera y continuación requieren Claude Code v2.1.234 o posterior |124| `/rate-limit-options` | Muestra formas de seguir trabajando cuando un límite de uso de claude.ai bloquea una solicitud: espera y [continúa automáticamente cuando se restablezca el límite](/docs/es/interactive-mode#wait-for-a-usage-limit-to-reset), agrega [créditos de uso](/docs/es/costs#add-usage-credits-to-your-subscription), o actualiza tu plan. Claude Code también puede abrir este menú por su cuenta cuando alcanzas un límite en tu propia terminal. Consulta [Desactivar continuación automática](/docs/es/interactive-mode#turn-automatic-continue-off). Requiere una suscripción de claude.ai. No aparece en el menú de comandos; escríbelo en su totalidad. Las filas de espera y continuación requieren Claude Code v2.1.234 o posterior |

125| `/recap` | Genera un resumen de una línea de la sesión actual bajo demanda. Consulta [Resumen de sesión](/docs/es/interactive-mode#session-recap) para el resumen automático que aparece después de que hayas estado fuera |125| `/recap` | Genera un resumen de una línea de la sesión actual bajo demanda. Consulta [Resumen de sesión](/docs/es/interactive-mode#session-recap) para el resumen automático que aparece después de que hayas estado fuera |

126| `/release-notes` | Ver el registro de cambios en un selector de versión interactivo. Selecciona una versión específica para ver sus notas de lanzamiento, o elige mostrar todas las versiones. Las notas aparecen en tu transcripción sin entrar en la conversación que Claude ve |126| `/release-notes` | Ver el registro de cambios en un selector de versión interactivo. Selecciona una versión específica para ver sus notas de lanzamiento, o elige mostrar todas las versiones. Las notas aparecen en tu transcripción sin entrar en la conversación que Claude ve |

127| `/reload-plugins [--force]` | Recarga todos los [plugins](/docs/es/plugins) activos para aplicar cambios pendientes sin reiniciar. Reporta conteos para cada componente recargado e indica cualquier error de carga. Cuando la recarga cambiaría qué herramientas MCP se cargan e invalidaría el caché de prompts, el comando advierte y omite a menos que pases `--force`. También disponible en modo no interactivo (`-p`), el SDK del Agente y la aplicación de escritorio, donde se ejecuta solo en entrada escrita directamente en la sesión y no aplica cambios de servidor MCP de plugins; requiere Claude Code v2.1.260 o posterior. Consulta [Aplicar cambios de plugins sin reiniciar](/docs/es/discover-plugins#apply-plugin-changes-without-restarting) |127| `/reload-plugins [--force]` | Recarga todos los [plugins](/docs/es/plugins/overview) activos para aplicar cambios pendientes sin reiniciar. Reporta conteos para cada componente recargado e indica cualquier error de carga. Cuando la recarga cambiaría qué herramientas MCP se cargan e invalidaría el caché de prompts, el comando advierte y omite a menos que pases `--force`. También disponible en modo no interactivo (`-p`), el SDK del Agente y la aplicación de escritorio, donde se ejecuta solo en entrada escrita directamente en la sesión y no aplica cambios de servidor MCP de plugins; requiere Claude Code v2.1.260 o posterior. Consulta [Aplicar cambios de plugins sin reiniciar](/docs/es/plugins/cli-reference#reload-plugins) |

128| `/reload-skills` | Vuelve a escanear directorios de [skill](/docs/es/skills) y comandos para que las skills agregadas o cambiadas en el disco durante la sesión estén disponibles sin reiniciar. Reporta cuántas skills están disponibles y cuántas se agregaron o eliminaron |128| `/reload-skills` | Vuelve a escanear directorios de [skill](/docs/es/skills) y comandos para que las skills agregadas o cambiadas en el disco durante la sesión estén disponibles sin reiniciar. Reporta cuántas skills están disponibles y cuántas se agregaron o eliminaron |

129| `/remote-control` | Hace que esta sesión esté disponible para [Remote Control](/docs/es/remote-control) desde claude.ai. Ejecutarlo mientras no has iniciado sesión imprime que Remote Control requiere una suscripción de claude.ai y te dice cómo iniciar sesión; antes de v2.1.206 reportaba `Unknown command: /remote-control`. Alias: `/rc` |129| `/remote-control` | Hace que esta sesión esté disponible para [Remote Control](/docs/es/remote-control) desde claude.ai. Ejecutarlo mientras no has iniciado sesión imprime que Remote Control requiere una suscripción de claude.ai y te dice cómo iniciar sesión; antes de v2.1.206 reportaba `Unknown command: /remote-control`. Alias: `/rc` |

130| `/remote-env` | Elige el entorno predeterminado para [sesiones en la nube](/docs/es/cloud-environments#select-an-environment-from-the-cli) que inicias desde la CLI |130| `/remote-env` | Elige el entorno predeterminado para [sesiones en la nube](/docs/es/cloud-environments#select-an-environment-from-the-cli) que inicias desde la CLI |

Details

110 110 

111 * Sea específico sobre lo que está buscando111 * Sea específico sobre lo que está buscando

112 * Utilice el lenguaje del dominio del proyecto112 * Utilice el lenguaje del dominio del proyecto

113 * Instale un [plugin de inteligencia de código](/docs/es/discover-plugins#code-intelligence) para su lenguaje para dar a Claude una navegación precisa de "ir a definición" y "buscar referencias"113 * Instale un [plugin de inteligencia de código](/docs/es/plugins/code-intelligence) para su lenguaje para dar a Claude una navegación precisa de "ir a definición" y "buscar referencias"

114</Tip>114</Tip>

115 115 

116***116***

costs.md +1 −1

Details

290 Instale plugins de inteligencia de código para lenguajes tipados290 Instale plugins de inteligencia de código para lenguajes tipados

291</h3>291</h3>

292 292 

293[Los plugins de inteligencia de código](/docs/es/discover-plugins#code-intelligence) le dan a Claude navegación de símbolos precisa en lugar de búsqueda basada en texto, reduciendo lecturas de archivos innecesarias al explorar código desconocido. Una única llamada "ir a definición" reemplaza lo que de otro modo sería un grep seguido de lectura de múltiples archivos candidatos. Los servidores de lenguaje instalados también reportan errores de tipo automáticamente después de ediciones, por lo que Claude detecta errores sin ejecutar un compilador.293[Los plugins de inteligencia de código](/docs/es/plugins/code-intelligence) le dan a Claude navegación de símbolos precisa en lugar de búsqueda basada en texto, reduciendo lecturas de archivos innecesarias al explorar código desconocido. Una única llamada "ir a definición" reemplaza lo que de otro modo sería un grep seguido de lectura de múltiples archivos candidatos. Los servidores de lenguaje instalados también reportan errores de tipo automáticamente después de ediciones, por lo que Claude detecta errores sin ejecutar un compilador.

294 294 

295<h3 id="offload-processing-to-hooks-and-skills">295<h3 id="offload-processing-to-hooks-and-skills">

296 Descargue el procesamiento en hooks y skills296 Descargue el procesamiento en hooks y skills

Details

109| Hook nunca se dispara | `matcher` es una matriz JSON en lugar de una cadena | Use una cadena única con `\|` para coincidir con múltiples herramientas, por ejemplo `"Edit\|Write"`. Consulte [patrones de matcher](/docs/es/hooks#matcher-patterns). |109| Hook nunca se dispara | `matcher` es una matriz JSON en lugar de una cadena | Use una cadena única con `\|` para coincidir con múltiples herramientas, por ejemplo `"Edit\|Write"`. Consulte [patrones de matcher](/docs/es/hooks#matcher-patterns). |

110| Hook nunca se dispara | `matcher` usa `,` como separador en una versión anterior a v2.1.191 | Claude Code v2.1.191 o posterior trata `,` como un separador de lista como `\|`. Las versiones anteriores evalúan una coma como un carácter literal, por lo que `"Edit,Write"` no coincide con nada. Use `\|` en su lugar, o actualice Claude Code. |110| Hook nunca se dispara | `matcher` usa `,` como separador en una versión anterior a v2.1.191 | Claude Code v2.1.191 o posterior trata `,` como un separador de lista como `\|`. Las versiones anteriores evalúan una coma como un carácter literal, por lo que `"Edit,Write"` no coincide con nada. Use `\|` en su lugar, o actualice Claude Code. |

111| Hook nunca se dispara | El valor `matcher` está en minúsculas, por ejemplo `"bash"` | La coincidencia distingue mayúsculas de minúsculas. Los nombres de herramientas están capitalizados: `Bash`, `Edit`, `Write`, `Read`. |111| Hook nunca se dispara | El valor `matcher` está en minúsculas, por ejemplo `"bash"` | La coincidencia distingue mayúsculas de minúsculas. Los nombres de herramientas están capitalizados: `Bash`, `Edit`, `Write`, `Read`. |

112| Hook nunca se dispara | Los hooks están definidos en un archivo independiente en lugar de en `settings.json` | No hay archivo de hooks independiente para la configuración del proyecto o del usuario. Defina hooks bajo la clave `"hooks"` en `settings.json`. Solo los [plugins](/docs/es/plugins-reference#hooks) cargan un archivo `hooks/hooks.json` separado. Consulte [configuración de hook](/docs/es/hooks). |112| Hook nunca se dispara | Los hooks están definidos en un archivo independiente en lugar de en `settings.json` | No hay archivo de hooks independiente para la configuración del proyecto o del usuario. Defina hooks bajo la clave `"hooks"` en `settings.json`. Solo los [plugins](/docs/es/plugins/components#hooks) cargan un archivo `hooks/hooks.json` separado. Consulte [configuración de hook](/docs/es/hooks). |

113| Los permisos, hooks o env establecidos globalmente se ignoran | La configuración se agregó a `~/.claude.json` | `~/.claude.json` contiene el estado de la aplicación y los cambios de interfaz de usuario. `permissions`, `hooks` y `env` pertenecen a `~/.claude/settings.json`. Estos son dos archivos diferentes. |113| Los permisos, hooks o env establecidos globalmente se ignoran | La configuración se agregó a `~/.claude.json` | `~/.claude.json` contiene el estado de la aplicación y los cambios de interfaz de usuario. `permissions`, `hooks` y `env` pertenecen a `~/.claude/settings.json`. Estos son dos archivos diferentes. |

114| Un valor `settings.json` parece ignorado | La misma clave se establece en `settings.local.json` | `settings.local.json` anula `settings.json`, y ambos anulan `~/.claude/settings.json`. Consulte [precedencia de configuración](/docs/es/settings#settings-precedence). |114| Un valor `settings.json` parece ignorado | La misma clave se establece en `settings.local.json` | `settings.local.json` anula `settings.json`, y ambos anulan `~/.claude/settings.json`. Consulte [precedencia de configuración](/docs/es/settings#settings-precedence). |

115| Skill no aparece en `/skills` | El archivo de skill está en `.claude/skills/name.md` en lugar de en una carpeta | Use una carpeta con `SKILL.md` dentro: `.claude/skills/name/SKILL.md`. |115| Skill no aparece en `/skills` | El archivo de skill está en `.claude/skills/name.md` en lugar de en una carpeta | Use una carpeta con `SKILL.md` dentro: `.claude/skills/name/SKILL.md`. |

desktop.md +6 −6

Details

472 472 

473Conecte servicios externos, agregue flujos de trabajo reutilizables, personalice el comportamiento de Claude y configure servidores de vista previa. Para administrar conectores, skills y plugins en un solo lugar, haga clic en **Customize** en la barra lateral. La pestaña [Cowork](https://claude.com/product/cowork) en la aplicación de escritorio obtiene sus skills, plugins y conectores de esta configuración de Customize, que se sincroniza a través de su cuenta de claude.ai, no desde el directorio `~/.claude` de la CLI.473Conecte servicios externos, agregue flujos de trabajo reutilizables, personalice el comportamiento de Claude y configure servidores de vista previa. Para administrar conectores, skills y plugins en un solo lugar, haga clic en **Customize** en la barra lateral. La pestaña [Cowork](https://claude.com/product/cowork) en la aplicación de escritorio obtiene sus skills, plugins y conectores de esta configuración de Customize, que se sincroniza a través de su cuenta de claude.ai, no desde el directorio `~/.claude` de la CLI.

474 474 

475Claude Code también carga los skills y plugins habilitados para su cuenta de claude.ai en sesiones de terminal donde inicia sesión con la misma cuenta. Consulte [Skills sincronizados desde claude.ai](/docs/es/skills#how-synced-skills-behave) y [Plugins sincronizados desde claude.ai](/docs/es/plugins-reference#synced-plugins).475Claude Code también carga los skills y plugins habilitados para su cuenta de claude.ai en sesiones de terminal donde inicia sesión con la misma cuenta. Consulte [Skills sincronizados desde claude.ai](/docs/es/skills#how-synced-skills-behave) y [Plugins sincronizados desde claude.ai](/docs/es/plugins/loading#synced-plugins).

476 476 

477<h3 id="connect-external-tools">477<h3 id="connect-external-tools">

478 Conectar herramientas externas478 Conectar herramientas externas


490 Usar skills490 Usar skills

491</h3>491</h3>

492 492 

493[Skills](/docs/es/skills) extienden lo que Claude puede hacer. Claude los carga automáticamente cuando son relevantes, o puede invocar uno directamente: escriba `/` en el cuadro de solicitud o haga clic en el botón **+** y seleccione **Slash commands** para ver lo que está disponible. Esto incluye [comandos integrados](/docs/es/commands), sus [skills personalizados](/docs/es/skills#create-your-first-skill), skills del proyecto desde su base de código y skills de cualquier [plugin instalado](/docs/es/plugins). Seleccione uno y aparecerá resaltado en el campo de entrada. Escriba su tarea después de él y envíe como de costumbre.493[Skills](/docs/es/skills) extienden lo que Claude puede hacer. Claude los carga automáticamente cuando son relevantes, o puede invocar uno directamente: escriba `/` en el cuadro de solicitud o haga clic en el botón **+** y seleccione **Slash commands** para ver lo que está disponible. Esto incluye [comandos integrados](/docs/es/commands), sus [skills personalizados](/docs/es/skills#create-your-first-skill), skills del proyecto desde su base de código y skills de cualquier [plugin instalado](/docs/es/plugins/install). Seleccione uno y aparecerá resaltado en el campo de entrada. Escriba su tarea después de él y envíe como de costumbre.

494 494 

495Puede enviar un comando mientras Claude está trabajando, igual que cualquier otro mensaje, y la sesión vuelve a estar inactiva una vez que se completa el turno. Antes de v2.1.206, un comando enviado a mitad de turno podría dejar la sesión mostrándose como en ejecución y los mensajes que envió después no se entregaban.495Puede enviar un comando mientras Claude está trabajando, igual que cualquier otro mensaje, y la sesión vuelve a estar inactiva una vez que se completa el turno. Antes de v2.1.206, un comando enviado a mitad de turno podría dejar la sesión mostrándose como en ejecución y los mensajes que envió después no se entregaban.

496 496 


502 Instalar plugins502 Instalar plugins

503</h3>503</h3>

504 504 

505[Plugins](/docs/es/plugins) son paquetes reutilizables que agregan skills, agentes, hooks, MCP servers y configuraciones LSP a Claude Code. Puede instalar plugins desde la aplicación de escritorio sin usar la terminal.505[Plugins](/docs/es/plugins/overview) son paquetes reutilizables que agregan skills, agentes, hooks, MCP servers y configuraciones LSP a Claude Code. Puede instalar plugins desde la aplicación de escritorio sin usar la terminal.

506 506 

507Para sesiones locales y [SSH](#ssh-sessions), haga clic en el botón **+** junto al cuadro de solicitud y seleccione **Plugins** para ver sus plugins instalados y sus skills. Para agregar un plugin, seleccione **Add plugin** del submenú para abrir el navegador de plugins, que muestra plugins disponibles desde sus [marketplaces](/docs/es/plugin-marketplaces) configurados incluyendo el marketplace oficial de Anthropic. Seleccione **Manage plugins** para habilitar, deshabilitar o desinstalar plugins.507Para sesiones locales y [SSH](#ssh-sessions), haga clic en el botón **+** junto al cuadro de solicitud y seleccione **Plugins** para ver sus plugins instalados y sus skills. Para agregar un plugin, seleccione **Add plugin** del submenú para abrir el navegador de plugins, que muestra plugins disponibles desde sus [marketplaces](/docs/es/plugins/overview) configurados incluyendo el marketplace oficial de Anthropic. Seleccione **Manage plugins** para habilitar, deshabilitar o desinstalar plugins.

508 508 

509Puede limitar plugins a su cuenta de usuario, un proyecto específico o solo locales. Si su organización gestiona plugins centralmente, esos plugins están disponibles en sesiones de escritorio de la misma manera que en la CLI.509Puede limitar plugins a su cuenta de usuario, un proyecto específico o solo locales. Si su organización gestiona plugins centralmente, esos plugins están disponibles en sesiones de escritorio de la misma manera que en la CLI.

510 510 

511El navegador de plugins no está disponible en sesiones en la nube, y los plugins que instale desde la aplicación de escritorio no están disponibles para sesiones en la nube. Una sesión en la nube tampoco instala plugins que el archivo `.claude/settings.json` del repositorio declara, como explica [Lo que se transfiere de su configuración](/docs/es/cloud-environments#what-carries-over-from-your-setup). Para usar un plugin en una sesión en la nube, habilítelo para su cuenta de claude.ai para que Claude Code lo cargue como un [plugin sincronizado](/docs/es/plugins-reference#synced-plugins). Los plugins no están disponibles en sesiones WSL. Para la referencia completa de plugins incluyendo crear sus propios plugins, consulte [plugins](/docs/es/plugins).511El navegador de plugins no está disponible en sesiones en la nube, y los plugins que instale desde la aplicación de escritorio no están disponibles para sesiones en la nube. Una sesión en la nube tampoco instala plugins que el archivo `.claude/settings.json` del repositorio declara, como explica [Lo que se transfiere de su configuración](/docs/es/cloud-environments#what-carries-over-from-your-setup). Los plugins no están disponibles en sesiones WSL. Para la referencia completa de plugins incluyendo crear sus propios plugins, consulte [plugins](/docs/es/plugins/overview).

512 512 

513<h3 id="configure-preview-servers">513<h3 id="configure-preview-servers">

514 Configurar servidores de vista previa514 Configurar servidores de vista previa


1023| Modos de permisos | Todos los modos incluyendo `dontAsk` | Manual, Aceptar ediciones, Plan y Auto. Bypass permissions aparece en el selector de modo una vez habilitado: a través del botón de alternancia de Configuración en planes Pro y Max, o a través de la política de la organización en planes Team y Enterprise |1023| Modos de permisos | Todos los modos incluyendo `dontAsk` | Manual, Aceptar ediciones, Plan y Auto. Bypass permissions aparece en el selector de modo una vez habilitado: a través del botón de alternancia de Configuración en planes Pro y Max, o a través de la política de la organización en planes Team y Enterprise |

1024| [Proveedores de terceros](/docs/es/third-party-integrations) | Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry | API de Anthropic de forma predeterminada. Para enrutamiento de puerta de enlace, consulte [conectar la aplicación de escritorio a una puerta de enlace](/docs/es/llm-gateway-connect#desktop-app). Para ejecutar la pestaña Code en Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry o una puerta de enlace LLM autohospedada, consulte [Claude Desktop en 3P](https://claude.com/docs/third-party/claude-desktop/overview). |1024| [Proveedores de terceros](/docs/es/third-party-integrations) | Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry | API de Anthropic de forma predeterminada. Para enrutamiento de puerta de enlace, consulte [conectar la aplicación de escritorio a una puerta de enlace](/docs/es/llm-gateway-connect#desktop-app). Para ejecutar la pestaña Code en Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry o una puerta de enlace LLM autohospedada, consulte [Claude Desktop en 3P](https://claude.com/docs/third-party/claude-desktop/overview). |

1025| [MCP servers](/docs/es/mcp) | Configurar en archivos de configuración | UI de Connectors para sesiones locales y SSH, o archivos de configuración |1025| [MCP servers](/docs/es/mcp) | Configurar en archivos de configuración | UI de Connectors para sesiones locales y SSH, o archivos de configuración |

1026| [Plugins](/docs/es/plugins) | Comando `/plugin` | UI del administrador de plugins |1026| [Plugins](/docs/es/plugins/overview) | Comando `/plugin` | UI del administrador de plugins |

1027| Archivos @mention | Basado en texto | Con autocompletado; sesiones locales y SSH solamente |1027| Archivos @mention | Basado en texto | Con autocompletado; sesiones locales y SSH solamente |

1028| Archivos adjuntos | No disponible | Imágenes, PDF |1028| Archivos adjuntos | No disponible | Imágenes, PDF |

1029| Aislamiento de sesión | Bandera [`--worktree`](/docs/es/cli-reference) | Opción **worktree** al iniciar una sesión |1029| Aislamiento de sesión | Bandera [`--worktree`](/docs/es/cli-reference) | Opción **worktree** al iniciar una sesión |

discover-plugins.md +0 −651 deleted

File Deleted View Diff

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Descubra e instale plugins pregenerados a través de mercados

6 

7> Encuentre e instale plugins de mercados para extender Claude Code con nuevas skills, agentes y capacidades.

8 

9Los plugins extienden Claude Code con skills, agentes, hooks y servidores MCP. Los mercados de plugins son catálogos que le ayudan a descubrir e instalar estas extensiones sin construirlas usted mismo.

10 

11También puede habilitar plugins en claude.ai, para usted mismo o a través de su organización. Claude Code sincroniza los que están en sus sesiones sin una instalación de mercado, como describe [Plugins sincronizados desde claude.ai](/docs/es/plugins-reference#synced-plugins).

12 

13¿Busca crear y distribuir su propio mercado? Consulte [Crear y distribuir un mercado de plugins](/docs/es/plugin-marketplaces).

14 

15<h2 id="how-marketplaces-work">

16 Cómo funcionan los mercados

17</h2>

18 

19Un mercado es un catálogo de plugins que alguien más ha creado y compartido. Usar un mercado es un proceso de dos pasos:

20 

21<Steps>

22 <Step title="Agregar el mercado">

23 Esto registra el catálogo con Claude Code para que pueda explorar lo que está disponible. Aún no se instalan plugins.

24 </Step>

25 

26 <Step title="Instalar plugins individuales">

27 Explore el catálogo e instale los plugins que desee.

28 </Step>

29</Steps>

30 

31<h2 id="official-anthropic-marketplace">

32 Mercado oficial de Anthropic

33</h2>

34 

35Claude Code agrega automáticamente el mercado oficial de Anthropic (`claude-plugins-official`) la primera vez que lo inicia de forma interactiva. Si Claude Code no puede agregarlo, por ejemplo porque su red bloquea la descarga o una [política de mercado](/docs/es/plugin-marketplaces#managed-marketplace-restrictions) bloqueó un intento anterior, agréguelo usted mismo con `/plugin marketplace add anthropics/claude-plugins-official`.

36 

37Para explorar lo que está disponible, ejecute `/plugin` y vaya a la pestaña **Discover**, o vea el catálogo en [claude.com/plugins](https://claude.com/plugins).

38 

39Para instalar un plugin del mercado oficial, use `/plugin install <name>@claude-plugins-official`. Por ejemplo, para instalar la integración de GitHub:

40 

41```shell theme={null}

42/plugin install github@claude-plugins-official

43```

44 

45`/plugin` abre un panel interactivo en la CLI del terminal. Si Claude responde que `/plugin` no está disponible en este entorno, instale el plugin de otra manera:

46 

47* **Aplicación de escritorio de Claude**: use el [navegador de plugins](/docs/es/desktop#install-plugins).

48* **Extensión de VS Code**: instale desde el [diálogo **Manage plugins**](/docs/es/vs-code#manage-plugins).

49* **Sesiones en la nube**: habilite el plugin para su cuenta de claude.ai para que Claude Code lo cargue como un [plugin sincronizado](/docs/es/plugins-reference#synced-plugins).

50 

51Si la instalación falla, haga coincidir el mensaje que Claude Code reporta:

52 

53* `Marketplace "claude-plugins-official" not found`: agregue el mercado con `/plugin marketplace add anthropics/claude-plugins-official`, luego reintente la instalación.

54* El plugin [no se encuentra en el mercado](#install-plugins): verifique el nombre del plugin.

55 

56<Note>

57 El mercado oficial es curado por Anthropic, y la inclusión está a discreción de Anthropic. Los formularios de envío en la aplicación agregan plugins al [mercado comunitario](#community-marketplace), no al oficial. Para distribuir plugins de forma independiente, [cree su propio mercado](/docs/es/plugin-marketplaces) y compártalo con los usuarios.

58</Note>

59 

60El mercado oficial incluye varias categorías de plugins:

61 

62<h3 id="code-intelligence">

63 Code intelligence

64</h3>

65 

66Los plugins de code intelligence habilitan la herramienta LSP integrada de Claude Code, dándole a Claude la capacidad de saltar a definiciones, encontrar referencias y ver errores de tipo inmediatamente después de ediciones. Estos plugins configuran conexiones de [Language Server Protocol](https://microsoft.github.io/language-server-protocol/), la misma tecnología que potencia la inteligencia de código de VS Code. En [sesiones en la nube](/docs/es/claude-code-on-the-web), Claude Code no inicia servidores de lenguaje de plugins, por lo que Claude no obtiene la herramienta LSP allí.

67 

68Instale el binario del servidor de lenguaje de la tabla a continuación antes de usar estos plugins; el plugin no lo instala por usted. Si ya tiene un servidor de lenguaje instalado, Claude puede solicitarle que instale el plugin correspondiente cuando abra un proyecto.

69 

70| Lenguaje | Plugin | Binario requerido |

71| :--------- | :------------------ | :--------------------------- |

72| C/C++ | `clangd-lsp` | `clangd` |

73| C# | `csharp-lsp` | `csharp-ls` |

74| Go | `gopls-lsp` | `gopls` |

75| Java | `jdtls-lsp` | `jdtls` |

76| Kotlin | `kotlin-lsp` | `kotlin-language-server` |

77| Lua | `lua-lsp` | `lua-language-server` |

78| PHP | `php-lsp` | `intelephense` |

79| Python | `pyright-lsp` | `pyright-langserver` |

80| Rust | `rust-analyzer-lsp` | `rust-analyzer` |

81| Swift | `swift-lsp` | `sourcekit-lsp` |

82| TypeScript | `typescript-lsp` | `typescript-language-server` |

83 

84También puede [crear su propio plugin LSP](/docs/es/plugins-reference#lsp-servers) para otros lenguajes.

85 

86<Note>

87 Si ve `Executable not found in $PATH` en la pestaña Errors de `/plugin` después de instalar un plugin, instale el binario que la tabla de [code intelligence](#code-intelligence) lista para ese plugin.

88</Note>

89 

90<h4 id="what-claude-gains-from-code-intelligence-plugins">

91 Lo que Claude gana con los plugins de code intelligence

92</h4>

93 

94Una vez que se instala un plugin de code intelligence y su binario de servidor de lenguaje está disponible, Claude gana dos capacidades:

95 

96* **Diagnósticos automáticos**: después de cada edición de archivo que Claude realiza, el servidor de lenguaje reporta errores y advertencias, por lo que Claude ve errores de tipo, importaciones faltantes y problemas de sintaxis sin ejecutar un compilador o linter. Si Claude introduce un error, lo nota y lo corrige en el mismo turno.

97* **Navegación de código**: Claude puede usar el servidor de lenguaje para saltar a definiciones, encontrar referencias, obtener información de tipo al pasar el ratón, listar símbolos, encontrar implementaciones y rastrear jerarquías de llamadas. Estas operaciones dan a Claude una navegación más precisa que la búsqueda basada en grep, aunque la disponibilidad puede variar según el lenguaje y el entorno.

98 

99No necesita configurar diagnósticos más allá de instalar el plugin. Para leerlos usted mismo, presione **Ctrl+O** cuando Claude Code muestre un indicador como **Found 3 new diagnostic issues in 2 files**.

100 

101Si encuentra problemas, consulte [Solución de problemas de code intelligence](#code-intelligence-issues).

102 

103<h3 id="external-integrations">

104 External integrations

105</h3>

106 

107Estos plugins incluyen [servidores MCP](/docs/es/mcp) preconfigurados para que pueda conectar Claude a servicios externos sin configuración manual:

108 

109* **Source control**: `github`, `gitlab`

110* **Project management**: `atlassian` (Jira/Confluence), `asana`, `linear`, `notion`

111* **Design**: `figma`

112* **Infrastructure**: `vercel`, `firebase`, `supabase`

113* **Communication**: `slack`

114* **Monitoring**: `sentry`

115 

116<h3 id="automatic-security-review">

117 Automatic security review

118</h3>

119 

120El plugin `security-guidance` revisa cada cambio que Claude realiza en busca de vulnerabilidades comunes e instruye a Claude para que corrija lo que encuentra en la misma sesión. Consulte [Detectar problemas de seguridad mientras Claude escribe código](/docs/es/security-guidance) para ver qué verifica y cómo agregar reglas específicas del proyecto.

121 

122<h3 id="development-workflows">

123 Development workflows

124</h3>

125 

126Plugins que agregan skills y agentes para tareas de desarrollo comunes:

127 

128* **commit-commands**: Flujos de trabajo de confirmación de Git incluyendo confirmación, push y creación de PR

129* **pr-review-toolkit**: Agentes especializados para revisar solicitudes de extracción

130* **agent-sdk-dev**: Herramientas para construir con el Claude Agent SDK

131* **plugin-dev**: Kit de herramientas para crear sus propios plugins

132 

133<h3 id="output-styles">

134 Output styles

135</h3>

136 

137Personalice cómo responde Claude:

138 

139* **explanatory-output-style**: Información educativa sobre opciones de implementación

140* **learning-output-style**: Modo de aprendizaje interactivo para construcción de skills

141 

142<h2 id="community-marketplace">

143 Community marketplace

144</h2>

145 

146El mercado comunitario en [`anthropics/claude-plugins-community`](https://github.com/anthropics/claude-plugins-community) aloja plugins de terceros que han pasado la validación automatizada de Anthropic y el análisis de seguridad. Cada plugin está fijado a un SHA de confirmación específico en el catálogo. A diferencia del mercado oficial, lo agrega manualmente:

147 

148```shell theme={null}

149/plugin marketplace add anthropics/claude-plugins-community

150```

151 

152Luego instale plugins desde él usando el nombre de mercado `claude-community`:

153 

154```shell theme={null}

155/plugin install <plugin-name>@claude-community

156```

157 

158Para enviar su propio plugin al mercado comunitario, consulte [Enviar su plugin al mercado comunitario](/docs/es/plugins#submit-your-plugin-to-the-community-marketplace) en la guía de creación de plugins.

159 

160<h2 id="try-it-add-the-demo-marketplace">

161 Pruébelo: agregue el mercado de demostración

162</h2>

163 

164Anthropic también mantiene un [mercado de plugins de demostración](https://github.com/anthropics/claude-code/tree/main/plugins) (`claude-code-plugins`) con plugins de ejemplo que muestran lo que es posible con el sistema de plugins. A diferencia del mercado oficial, debe agregar este manualmente.

165 

166<Steps>

167 <Step title="Agregar el mercado">

168 Desde dentro de Claude Code, ejecute el comando `plugin marketplace add` para el mercado `anthropics/claude-code`:

169 

170 ```shell theme={null}

171 /plugin marketplace add anthropics/claude-code

172 ```

173 

174 Esto descarga el catálogo del mercado y pone sus plugins a su disposición.

175 </Step>

176 

177 <Step title="Explorar plugins disponibles">

178 Ejecute `/plugin` para abrir el administrador de plugins. Esto abre una interfaz con pestañas que puede recorrer usando **Tab**, o **Shift+Tab** para ir hacia atrás:

179 

180 * **Discover**: explore plugins disponibles de todos sus mercados

181 * **Installed**: vea y administre sus plugins instalados

182 * **Marketplaces**: agregue, elimine o actualice sus mercados agregados

183 * **Errors**: vea cualquier error de carga de plugins

184 * **Stats**: vea [cuánto cuesta cada una de sus skills en contexto y con qué frecuencia se utiliza](/docs/es/skills#find-unused-skills), en sesiones donde `/skill-doctor` está disponible

185 

186 Vaya a la pestaña **Discover** para ver plugins del mercado que acaba de agregar. Cuando su administrador ha incluido en la lista blanca el mercado a través de la configuración administrada [`pluginSuggestionMarketplaces`](/docs/es/settings-reference#pluginsuggestionmarketplaces), los plugins marcados como relevantes para su directorio de trabajo actual se fijan en la parte superior con una etiqueta **suggested for this directory**.

187 </Step>

188 

189 <Step title="Instalar un plugin">

190 Seleccione un plugin para ver sus detalles. El panel de detalles muestra lo que contiene el plugin y cuánto cuesta:

191 

192 * Una estimación de **Context cost** para que pueda ver cuántos tokens el plugin agregará a su [ventana de contexto](/docs/es/features-overview#understand-context-costs) en cada turno

193 * La fecha de **Last updated** del plugin

194 * Una sección **Will install** que enumera los comandos, agentes, skills, hooks y servidores MCP y LSP del plugin, para que pueda revisar exactamente qué agrega antes de instalar

195 

196 No todos los plugins proporcionan los datos detrás de estos campos. Para plugins de mercados locales o personalizados, es posible que no vea las filas **Context cost** y **Last updated**, y la sección **Will install** puede mostrar **Components will be discovered at installation** en su lugar.

197 

198 Elija un alcance de instalación:

199 

200 * **User scope**: instale para usted en todos los proyectos

201 * **Project scope**: instale para todos los colaboradores en este repositorio

202 * **Local scope**: instale para usted en este repositorio solamente

203 

204 Por ejemplo, seleccione **commit-commands**, un plugin que agrega skills de flujo de trabajo de git, e instálelo en su alcance de usuario.

205 

206 También puede iniciar la instalación desde la línea de comandos:

207 

208 ```shell theme={null}

209 /plugin install commit-commands@claude-code-plugins

210 ```

211 

212 Consulte [Settings files](/docs/es/settings#where-settings-live) para obtener más información sobre alcances.

213 </Step>

214 

215 <Step title="Usar su nuevo plugin">

216 Si el resumen de instalación informa `Run /reload-plugins to activate.`, Claude Code ejecuta esa recarga automáticamente. Si la recarga advierte que su próximo mensaje volvería a leer la conversación, ejecute `/reload-plugins --force` para activar el plugin.

217 

218 Las skills de plugin tienen espacios de nombres por el nombre del plugin, por lo que **commit-commands** proporciona skills como `/commit-commands:commit`.

219 

220 Pruébelo haciendo un cambio en un archivo y ejecutando:

221 

222 ```shell theme={null}

223 /commit-commands:commit

224 ```

225 

226 Esto prepara sus cambios, genera un mensaje de confirmación y crea la confirmación.

227 

228 Cada plugin funciona de manera diferente. Consulte los detalles del plugin en la pestaña **Discover** para ver los comandos y skills que proporciona, o visite su página de inicio para obtener orientación sobre el uso.

229 </Step>

230</Steps>

231 

232<h2 id="add-marketplaces">

233 Agregar mercados

234</h2>

235 

236Use el comando `/plugin marketplace add` para agregar mercados de diferentes fuentes.

237 

238<Tip>

239 **Atajos**: Puede usar `/plugin market` en lugar de `/plugin marketplace`, y `rm` en lugar de `remove`.

240</Tip>

241 

242* **Repositorios de GitHub**: formato `owner/repo` (por ejemplo, `anthropics/claude-code`)

243* **URLs de Git**: cualquier URL de repositorio de git, incluyendo GitLab, Bitbucket y servidores auto-hospedados

244* **Rutas locales**: directorios o rutas directas a archivos `marketplace.json`

245* **URLs remotas**: URLs directas a archivos `marketplace.json` hospedados

246* **claude.ai**: mercados hospedados en claude.ai para su cuenta, como la biblioteca de plugins de su organización, que [agrega por nombre desde la pestaña **Marketplaces** o su shell](#add-from-claude-ai) en lugar de por fuente

247 

248<h3 id="add-from-github">

249 Agregar desde GitHub

250</h3>

251 

252Agregue un repositorio de GitHub que contenga un archivo `.claude-plugin/marketplace.json` usando el formato `owner/repo`, donde `owner` es el nombre de usuario o la organización de GitHub y `repo` es el nombre del repositorio.

253 

254Por ejemplo, `anthropics/claude-code` se refiere al repositorio `claude-code` propiedad de `anthropics`:

255 

256```shell theme={null}

257/plugin marketplace add anthropics/claude-code

258```

259 

260<h3 id="add-from-other-git-hosts">

261 Agregar desde otros hosts de Git

262</h3>

263 

264Agregue un repositorio de git de mercado proporcionando su URL completa. Para una URL `https://`, si incluir el sufijo `.git` depende del host:

265 

266* **`github.com` y `gitlab.com`**: Claude Code reconoce una URL de repositorio con o sin el sufijo `.git` y la clona. Agregar una URL de `gitlab.com` sin el sufijo requiere Claude Code v2.1.232 o posterior. Antes de v2.1.232, Claude Code la trataba como un enlace directo a un archivo `marketplace.json` hospedado.

267* **Azure DevOps**: omita el sufijo. Claude Code clona cualquier URL cuya ruta contenga `/_git/`. Si agrega `.git` a una ruta `/_git/`, la clonación falla.

268* **Todos los demás hosts, incluyendo servidores GitLab auto-gestionados**: incluya el sufijo `.git` para que Claude Code clone el repositorio en lugar de tratar la URL como un enlace directo a un archivo `marketplace.json` hospedado. Para un host cuyas URLs de clonación no llevan el sufijo, como AWS CodeCommit, agregue el mercado como una entrada de git en [`extraKnownMarketplaces`](/docs/es/settings-reference#extraknownmarketplaces) en su lugar. Claude Code clona una entrada de git independientemente de si su URL termina en `.git`.

269 

270Claude Code también clona una URL de `gitlab.com` con subgrupos anidados, como `https://gitlab.com/group/subgroup/project`.

271 

272Incluya el prefijo `https://`. Claude Code v2.1.196 y versiones posteriores rechazan un host escrito sin él, como `gitlab.com/company/plugins.git`, como un atajo `owner/repo` de GitHub inválido, y el error le indica que agregue el prefijo. Las versiones anteriores lo malinterpretaron como una ruta de repositorio de GitHub y fallan en el momento de la clonación.

273 

274Usando HTTPS:

275 

276```shell theme={null}

277/plugin marketplace add https://gitlab.com/company/plugins.git

278```

279 

280Usando SSH:

281 

282```shell theme={null}

283/plugin marketplace add git@gitlab.com:company/plugins.git

284```

285 

286Claude Code clona una dirección SSH independientemente de si termina en `.git`.

287 

288Para agregar una rama o etiqueta específica, agregue `#` seguido de la ref:

289 

290```shell theme={null}

291/plugin marketplace add https://gitlab.com/company/plugins.git#v1.0.0

292```

293 

294<h3 id="add-from-local-paths">

295 Agregar desde rutas locales

296</h3>

297 

298Agregue un directorio local que contenga un archivo `.claude-plugin/marketplace.json`:

299 

300```shell theme={null}

301/plugin marketplace add ./my-marketplace

302```

303 

304También puede agregar una ruta directa a un archivo `marketplace.json`:

305 

306```shell theme={null}

307/plugin marketplace add ./path/to/marketplace.json

308```

309 

310<h3 id="add-from-remote-urls">

311 Agregar desde URLs remotas

312</h3>

313 

314Agregue un archivo `marketplace.json` remoto a través de URL:

315 

316```shell theme={null}

317/plugin marketplace add https://example.com/marketplace.json

318```

319 

320<Note>

321 Los mercados basados en URL tienen algunas limitaciones en comparación con los mercados basados en Git. Si encuentra errores al instalar plugins desde un mercado basado en URL, consulte [Troubleshooting](/docs/es/plugin-marketplaces#plugins-with-relative-paths-fail-in-url-based-marketplaces).

322</Note>

323 

324<h3 id="add-from-claude-ai">

325 Agregar desde claude.ai

326</h3>

327 

328En sesiones de terminal donde [los plugins se sincronizan desde su cuenta de claude.ai](/docs/es/plugins-reference#synced-plugins), claude.ai también puede listar mercados para usted, como la biblioteca de plugins de su organización y sus propias cargas en claude.ai. `claude plugin marketplace list` los imprime en una sección `From claude.ai:`, y la pestaña **Marketplaces** de `/plugin` los lista. Seleccione uno allí para agregarlo. Agregar un mercado desde claude.ai requiere Claude Code v2.1.273 o posterior.

329 

330Para agregar uno desde su shell, ejecute `claude plugin marketplace add` con la bandera `--claudeai` y el nombre que se muestra en la lista:

331 

332```bash theme={null}

333claude plugin marketplace add --claudeai claudeai-organization-library

334```

335 

336Claude Code registra el mercado bajo un nombre local que comienza con `claudeai-`, derivado del nombre que claude.ai lo lista: un mercado listado como "Organization library" se registra como `claudeai-organization-library`. Instale sus plugins por ese nombre, por ejemplo con `claude plugin install <plugin>@claudeai-organization-library`.

337 

338Si cierra sesión o inicia sesión con una cuenta diferente, el mercado permanece configurado pero no muestra plugins, y los plugins que ya instaló desde él continúan cargándose.

339 

340La sección `From claude.ai:` también puede listar mercados basados en git compartidos a través de claude.ai. Agrega esos con el comando `marketplace add` ordinario, usando la fuente que la lista imprime.

341 

342<h2 id="install-plugins">

343 Instalar plugins

344</h2>

345 

346Una vez que haya agregado mercados, puede instalar un plugin por nombre. Para un mercado que aún no ha agregado, puede en su lugar [agregarlo e instalarlo en un comando](#add-a-marketplace-and-install-in-one-command).

347 

348Para instalar por nombre:

349 

350```shell theme={null}

351/plugin install plugin-name@marketplace-name

352```

353 

354El comando abre los detalles de ese plugin, donde elige un [alcance de instalación](/docs/es/settings#where-settings-live). Verá las mismas opciones cuando ejecute `/plugin`, vaya a la pestaña **Discover** y presione **Enter** en un plugin:

355 

356* **User scope**: instale para usted en todos los proyectos

357* **Project scope**: instale para todos los colaboradores en este repositorio, lo que agrega el plugin a `.claude/settings.json`

358* **Local scope**: instale para usted en este repositorio solamente, no compartido con colaboradores

359 

360Para instalar sin un paso interactivo, use el comando shell [`claude plugin install`](/docs/es/plugins-reference#plugin-install), que instala en alcance de usuario a menos que pase `--scope`. Para un plugin con una [fuente `command`](/docs/es/plugin-marketplaces#how-users-accept-the-command), pase `--yes` para aceptar el comando que muestra.

361 

362También puede ver plugins con alcance **managed**. Estos se instalan por administradores a través de [managed settings](/docs/es/managed-settings) y no pueden ser modificados.

363 

364Claude Code busca el plugin en su copia local del catálogo del mercado. La forma en que nombre el plugin controla si Claude Code actualiza esa copia primero:

365 

366* **Con un nombre de mercado**: cuando instala `plugin-name@marketplace-name`, en una sesión o con `claude plugin install`, Claude Code actualiza ese mercado antes de la búsqueda. Claude Code ejecuta la actualización incluso si desactivó [auto-update](#configure-auto-updates) para el mercado o estableció `DISABLE_AUTOUPDATER`. Antes de v2.1.232, Claude Code no actualizaba el mercado antes de la búsqueda. Claude Code omite esta actualización cuando:

367 * El mercado no fue [agregado desde GitHub, otro host de Git, una URL remota](#add-marketplaces), o [claude.ai](#add-from-claude-ai).

368 * Un [directorio seed](/docs/es/plugin-marketplaces#pre-populate-plugins-for-containers) proporciona el mercado.

369 * Claude Code actualizó el mercado en los últimos 30 segundos.

370 * Estableció [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](/docs/es/env-vars).

371 * [Managed settings](/docs/es/plugin-marketplaces#managed-marketplace-restrictions) bloquean el mercado, en cuyo caso Claude Code también rechaza la instalación.

372* **Solo nombre del plugin**: cuando ejecuta `/plugin install plugin-name` en una sesión, Claude Code actualiza solo los mercados que también [actualiza en segundo plano](#configure-auto-updates), y solo después de que la búsqueda falla. Cuando ejecuta `claude plugin install plugin-name`, Claude Code lee los catálogos en caché sin actualizar. Para instalar un plugin que se publicó después de su última actualización, ejecute `/plugin marketplace update <marketplace-name>` en una sesión o [`claude plugin marketplace update <marketplace-name>`](/docs/es/plugin-marketplaces#plugin-marketplace-update) en su shell, luego reintente la instalación.

373 

374Si la actualización antes de una instalación nombrada falla, por ejemplo porque está sin conexión, Claude Code busca el plugin en el catálogo en caché de todas formas. `claude plugin install` reporta `marketplace not refreshed` en su mensaje de éxito, y `/plugin install` muestra el fallo encima de los detalles del plugin o en su mensaje de no encontrado.

375 

376Cuando instala desde la interfaz `/plugin`, el resumen de instalación le dice si el plugin está activo en su sesión actual:

377 

378* `Plugin is now active.`: Claude Code activó el plugin como parte de la instalación.

379* `Run /reload-plugins to activate.`: el plugin aún no está activo, porque activarlo [invalidaría el prompt cache](/docs/es/prompt-caching#enabling-or-disabling-a-plugin) o porque el intento de activación falló. Claude Code luego ejecuta `/reload-plugins` para usted. Si esa recarga advierte sobre el prompt cache, ejecute `/reload-plugins --force` para [activar el plugin de todas formas](#apply-plugin-changes-without-restarting).

380* Si el plugin falla al cargar, el resumen reporta el fallo y la pestaña **Errors** de `/plugin` muestra el detalle.

381 

382Antes de v2.1.221, ninguna instalación tenía efecto en la sesión actual hasta que ejecutara `/reload-plugins` o reiniciara.

383 

384El comando shell `claude plugin install` no se ejecuta en una sesión, por lo que Claude Code carga los plugins que instala la próxima vez que inicia Claude Code, o cuando ejecuta `/reload-plugins` en una sesión que ya está abierta.

385 

386<Warning>

387 Asegúrese de confiar en un plugin antes de instalarlo. Anthropic no controla qué servidores MCP, archivos u otro software se incluyen en los plugins y no puede verificar que funcionen como se pretende. Consulte la página de inicio de cada plugin para obtener más información.

388</Warning>

389 

390<h3 id="add-a-marketplace-and-install-in-one-command">

391 Agregar un mercado e instalar en un comando

392</h3>

393 

394Para instalar un plugin desde un mercado que aún no ha agregado, nombre la fuente del mercado con `--marketplace`. Requiere Claude Code v2.1.275 o posterior.

395 

396```shell theme={null}

397/plugin install quality-review-plugin --marketplace your-org/plugins

398```

399 

400La fuente toma [las mismas formas que `/plugin marketplace add`](#add-marketplaces), como GitHub `owner/repo`, una URL de git o una ruta local, excepto que no puede contener espacios. Dé el nombre del plugin sin un sufijo `@marketplace`.

401 

402Claude Code muestra la fuente que resolvió y le pide que confirme antes de agregar el mercado. Rechazar cancela la instalación y no agrega nada. Una vez que se agrega el mercado, los detalles del plugin se abren y elige un [alcance de instalación](/docs/es/settings#where-settings-live). Si la fuente coincide con un mercado que ya ha agregado, Claude Code omite la confirmación y abre los detalles del plugin en ese mercado.

403 

404<h2 id="manage-installed-plugins">

405 Administrar plugins instalados

406</h2>

407 

408Ejecute `/plugin` y vaya a la pestaña **Installed** para ver, habilitar, deshabilitar o desinstalar sus plugins. La lista se agrupa por alcance y se ordena para que vea problemas primero: los plugins con errores de carga o dependencias no resueltas aparecen en la parte superior, seguidos de sus favoritos, con plugins deshabilitados plegados detrás de un encabezado colapsado en la parte inferior.

409 

410Desde la lista puede:

411 

412* presionar `f` para marcar como favorito o desmarcar como favorito el plugin seleccionado

413* escribir para filtrar por nombre o descripción del plugin

414* presionar Enter para abrir la vista de detalles de un plugin y habilitarlo, deshabilitarlo o desinstalarlo

415 

416Claude Code también enumera los [plugins sincronizados desde su cuenta de claude.ai](/docs/es/plugins-reference#synced-plugins) en la pestaña **Installed**, con `synced` como su origen. Puede habilitar o deshabilitar uno allí a menos que su organización lo haya marcado como requerido. Para eliminar uno, apáguelo en claude.ai. Los plugins sincronizados aparecen en sesiones de terminal en Claude Code v2.1.273 o posterior.

417 

418Cuando desinstala un plugin que el `.claude/settings.json` de un proyecto habilita, Claude Code pregunta qué alcance quiere decir: deshabilitarlo solo para usted, lo que escribe una anulación en su `.claude/settings.local.json` y deja el plugin instalado para el proyecto, o desinstalarlo para todos, lo que lo elimina del `.claude/settings.json` compartido.

419 

420La vista de detalles muestra los componentes que contribuye el plugin: comandos, skills, agentes, hooks, servidores MCP y servidores LSP. El mismo inventario está disponible desde la línea de comandos con `claude plugin details`.

421 

422Claude Code también enumera plugins del marketplace que instaló usted mismo pero que no ha usado en al menos dos semanas, en un período de al menos 10 sesiones, bajo un encabezado **Not used recently** en la pestaña **Installed**. La vista de detalles muestra una línea **Last used** para cada plugin. Utilice estos para encontrar plugins que aún añaden costo de inicio y contexto aunque ya no los use, luego deshabilítelos o desinstálelos.

423 

424Dos tipos de plugins nunca se enumeran como no utilizados:

425 

426* plugins que su organización administra o que carga con `--plugin-dir`

427* plugins que contribuyen un tema, estilo de salida, monitor o flujo de trabajo, ya que proporcionan valor sin una invocación para rastrear

428 

429El encabezado **Not used recently** y la línea **Last used** se ocultan cuando su organización restringe los marketplaces con [`strictKnownMarketplaces`](/docs/es/settings-reference#strictknownmarketplaces).

430 

431Un [servidor de lenguaje](/docs/es/plugins#add-lsp-servers-to-your-plugin) de un plugin se cuenta como usado cuando entrega diagnósticos o responde a una solicitud de navegación de código, por lo que un plugin LSP cuyo servidor está activo en sus sesiones no se enumera como no utilizado. Antes de v2.1.203, la actividad del servidor de lenguaje no se podía contar como uso, por lo que los plugins que contribuyen un servidor LSP estaban exentos del grupo completamente, de la misma manera que los plugins de tema y estilo de salida aún lo están.

432 

433La primera sesión en una versión que cuenta la actividad del servidor de lenguaje también restablece el registro de uso de cada plugin LSP que aún no había registrado ningún uso, por lo que Claude Code no juzga un plugin que instaló anteriormente como no utilizado basándose en datos registrados antes de que se rastreara la actividad de su servidor.

434 

435Cuando instala un plugin que declara dependencias, la salida de instalación enumera qué dependencias se instalaron automáticamente junto con él.

436 

437También puede administrar plugins con comandos directos:

438 

439* Cuando ejecuta `/plugin disable`, `/plugin enable` o `/plugin uninstall`, Claude Code abre el panel de plugins para aplicar el cambio y lo deja abierto. Presione **Esc** para cerrar el panel antes de escribir otro comando. [Aplicar cambios de plugins sin reiniciar](#apply-plugin-changes-without-restarting) describe cuándo el cambio toma efecto en su sesión.

440* Para scripting, use los comandos shell `claude plugin` en su lugar, que no abren el panel.

441 

442Enumere los plugins instalados sin abrir el menú:

443 

444```shell theme={null}

445/plugin list

446```

447 

448Pase `--enabled` o `--disabled` para mostrar solo los plugins en ese estado.

449 

450Deshabilite un plugin sin desinstalarlo:

451 

452```shell theme={null}

453/plugin disable plugin-name@marketplace-name

454```

455 

456Vuelva a habilitar un plugin deshabilitado:

457 

458```shell theme={null}

459/plugin enable plugin-name@marketplace-name

460```

461 

462En estos identificadores, `plugin-name` es el `name` del plugin en la [entrada del marketplace](/docs/es/plugin-marketplaces#plugin-entries), que puede diferir del `name` en el `plugin.json` del plugin.

463 

464A partir de Claude Code v2.1.195, **Enable** y **Disable** en la interfaz `/plugin` funcionan para plugins cuyos dos nombres difieren, y `/plugin enable` y `/plugin disable` aceptan cualquiera de los nombres. Cuando deshabilita tal plugin en una versión anterior, Claude Code reporta `already disabled` y lo deja habilitado.

465 

466Elimine completamente un plugin:

467 

468```shell theme={null}

469/plugin uninstall plugin-name@marketplace-name

470```

471 

472La opción `--scope` le permite dirigirse a un alcance específico con comandos CLI:

473 

474```shell theme={null}

475claude plugin install formatter@your-org --scope project

476claude plugin uninstall formatter@your-org --scope project

477```

478 

479<h3 id="apply-plugin-changes-without-restarting">

480 Aplicar cambios de plugins sin reiniciar

481</h3>

482 

483Cuando cierra el menú `/plugin`, Claude Code ejecuta `/reload-plugins` para usted para aplicar los cambios que realizó en él, como instalar, habilitar, deshabilitar y desinstalar plugins. Si la recarga invalidaría la [caché de prompts](/docs/es/prompt-caching#enabling-or-disabling-a-plugin), advierte y deja los cambios pendientes en su lugar; ejecute `/reload-plugins --force` para aplicarlos de todas formas. Si Claude aún está respondiendo cuando cierra el menú, la recarga se ejecuta después de que finalice la respuesta.

484 

485Para cambios de plugins que ocurren fuera del menú, ejecute `/reload-plugins` usted mismo. Estos cambios incluyen:

486 

487* Un comando `claude plugin` que ejecutó en otra terminal

488* Ediciones a un plugin que cargó con [`--plugin-dir`](/docs/es/plugins#test-your-plugins-locally) mientras lo desarrolla

489* Un plugin [actualización automática](#configure-auto-updates) cuya notificación le pide que recargue

490* Una [sincronización desde su cuenta de claude.ai](/docs/es/plugins-reference#synced-plugins) que agregó, actualizó o eliminó un plugin y mostró una notificación pidiéndole que recargue

491* Un cambio en una carpeta [`--plugin-dir`](/docs/es/plugins#test-your-plugins-locally) que Claude Code mantuvo porque aplicarlo invalidaría la caché de prompts

492 

493Antes de v2.1.268, los plugins que habilitó, deshabilitó o desinstaló en el menú, e instalaciones que no se activaron durante la instalación, permanecían pendientes hasta que ejecutaba `/reload-plugins`.

494 

495`/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](/docs/es/headless) con `-p`. Requiere Claude Code v2.1.260 o posterior. Se aplican dos límites en esas sesiones:

496 

497* El comando se ejecuta solo cuando lo escribe directamente en la sesión, como en el indicador `-p` o en el cuadro de indicador de la aplicación de escritorio. Cuando lo envía a través de una conexión remota en su lugar, como [Control Remoto](/docs/es/remote-control) o un mensaje de chat retransmitido, el comando rechaza sin recargar nada.

498* La recarga no conecta ni desconecta servidores MCP de plugins. Esos cambios toman efecto en su próxima sesión.

499 

500Claude Code recarga todos los plugins activos y muestra conteos para plugins, skills, agentes, hooks, servidores MCP de plugins y servidores LSP de plugins, omitiendo el conteo de servidores MCP de plugins en una sesión sin una terminal interactiva. En el conteo de skills, Claude Code incluye cada skill que proporciona un plugin: tanto sus entradas `commands/` como sus skills `SKILL.md`. Antes de v2.1.246, Claude Code contaba solo las entradas `commands/`, por lo que podía recargar los skills `SKILL.md` de un plugin y aún reportar `0 skills` en el resumen.

501 

502La recarga tiene un costo de tokens en la siguiente solicitud: los componentes recién cargados se anuncian a sí mismos en el contenido añadido a la conversación, mientras que el historial existente aún se lee desde la caché de prompts. Un plugin que proporciona servidores MCP cuesta más cuando sus herramientas no se difieren por [búsqueda de herramientas](/docs/es/mcp#scale-with-mcp-tool-search): el cambio invalida la caché y la siguiente solicitud vuelve a leer toda la conversación. Consulte [habilitar o deshabilitar un plugin](/docs/es/prompt-caching#enabling-or-disabling-a-plugin) para obtener más detalles.

503 

504<h2 id="manage-marketplaces">

505 Administrar mercados

506</h2>

507 

508Puede administrar mercados a través de la interfaz interactiva `/plugin` o con comandos CLI.

509 

510<h3 id="use-the-interactive-interface">

511 Usar la interfaz interactiva

512</h3>

513 

514Ejecute `/plugin` y vaya a la pestaña **Marketplaces** para:

515 

516* Ver todos sus mercados agregados con sus fuentes y estado

517* Agregar nuevos mercados

518* Actualizar listados de mercados para obtener los últimos plugins

519* Eliminar mercados que ya no necesita

520 

521<h3 id="use-cli-commands">

522 Usar comandos CLI

523</h3>

524 

525También puede administrar mercados con comandos directos.

526 

527Enumere todos los mercados configurados:

528 

529```shell theme={null}

530/plugin marketplace list

531```

532 

533Actualice listados de plugins de un mercado:

534 

535```shell theme={null}

536/plugin marketplace update marketplace-name

537```

538 

539Elimine un mercado:

540 

541```shell theme={null}

542/plugin marketplace remove marketplace-name

543```

544 

545<Warning>

546 Eliminar un mercado desinstalará cualquier plugin que haya instalado desde él.

547</Warning>

548 

549<h3 id="configure-auto-updates">

550 Configurar actualizaciones automáticas

551</h3>

552 

553Claude Code puede actualizar automáticamente mercados y sus plugins instalados en segundo plano después del inicio. Cuando la actualización automática está habilitada para un mercado, Claude Code actualiza los datos del mercado e actualiza los plugins instalados a sus versiones más recientes en disco.

554 

555Claude Code verifica si hay actualizaciones de mercado y plugins después de que inicia su sesión, con un retraso aleatorio de hasta diez minutos, por lo que la sesión en ejecución sigue utilizando las versiones que cargó al inicio. Si se actualizaron plugins, verá una notificación pidiéndole que ejecute `/reload-plugins`, o las nuevas versiones se cargan en su próximo inicio.

556 

557La actualización automática también excluye un plugin cuya entrada de mercado declara un `headersHelper`: Claude Code [ni ejecuta el comando ni descarga el archivo](/docs/es/plugin-marketplaces#installs-and-updates-that-refuse-the-command-instead-of-asking) en esa ruta; esa sección dice cuándo Claude Code enumera el plugin en la pestaña Errores de `/plugin` para que pueda actualizarlo desde su propia vista.

558 

559Claude Code actualiza plugins que tienen una [fuente `command`](/docs/es/plugin-marketplaces#command-sources) en un ciclo separado de la configuración de actualización automática del mercado y de `DISABLE_AUTOUPDATER`. En su lugar, [vuelve a ejecutar el comando una vez por sesión](/docs/es/plugin-marketplaces#when-claude-code-re-runs-the-command) e instala la salida como una nueva versión de plugin cuando su [hash](/docs/es/plugins-reference#version-management) ha cambiado.

560 

561Alterne la actualización automática para mercados individuales a través de la interfaz:

562 

5631. Ejecute `/plugin` para abrir el administrador de plugins

5642. Seleccione **Marketplaces**

5653. Elija un mercado de la lista

5664. Seleccione **Enable auto-update** o **Disable auto-update**

567 

568`claude-plugins-official`, la mayoría de otros mercados oficiales de Anthropic, y [mercados agregados desde claude.ai](#add-from-claude-ai) tienen la actualización automática habilitada por defecto. Otros mercados de terceros y mercados de desarrollo local tienen la actualización automática deshabilitada por defecto.

569 

570Los administradores también pueden establecer `"autoUpdate": true` en cada entrada [`extraKnownMarketplaces`](/docs/es/settings-reference#extraknownmarketplaces) en la configuración administrada para habilitar la actualización automática para un mercado de la organización sin requerir que cada usuario la active.

571 

572Para deshabilitar las actualizaciones automáticas para Claude Code y para plugins obtenidos de mercados, establezca la variable de entorno `DISABLE_AUTOUPDATER`. Los plugins con una [fuente `command`](/docs/es/plugin-marketplaces#command-sources) siguen su propia re-resolución una vez por sesión. Consulte [Auto updates](/docs/es/setup#auto-updates) para obtener detalles.

573 

574Para mantener las actualizaciones automáticas de plugins habilitadas mientras se deshabilitan las actualizaciones automáticas de Claude Code, establezca `FORCE_AUTOUPDATE_PLUGINS=1` junto con `DISABLE_AUTOUPDATER`:

575 

576```bash theme={null}

577export DISABLE_AUTOUPDATER=1

578export FORCE_AUTOUPDATE_PLUGINS=1

579```

580 

581<h2 id="configure-team-marketplaces">

582 Configurar mercados de equipo

583</h2>

584 

585Los administradores de equipo pueden configurar la instalación automática de mercados para proyectos agregando configuración de mercado a `.claude/settings.json`. Una vez que un miembro del equipo [confía en la carpeta del repositorio](/docs/es/permissions#what-runs-before-you-trust-a-folder), Claude Code agrega estos mercados sin un aviso adicional.

586 

587A partir de Claude Code v2.1.195, agregar el mercado no instala plugins que provienen de una fuente externa, en ninguna ruta que carga plugins. Un plugin que solo el `.claude/settings.json` del proyecto habilita, y que proviene de una fuente externa como un repositorio de GitHub o un paquete npm, no se carga hasta que el miembro del equipo lo instale. Hasta entonces, Claude Code reporta el plugin como no instalado y muestra el comando `claude plugin install` para ejecutar.

588 

589Agregue `extraKnownMarketplaces` a su `.claude/settings.json` del proyecto:

590 

591```json theme={null}

592{

593 "extraKnownMarketplaces": {

594 "my-team-tools": {

595 "source": {

596 "source": "github",

597 "repo": "your-org/claude-plugins"

598 }

599 }

600 }

601}

602```

603 

604Para opciones de configuración completas incluyendo `extraKnownMarketplaces` y `enabledPlugins`, consulte [Plugin settings](/docs/es/settings-reference#plugin-settings).

605 

606<h2 id="security">

607 Seguridad

608</h2>

609 

610Los plugins y mercados son componentes altamente confiables que pueden ejecutar código arbitrario en su máquina con sus privilegios de usuario. Solo instale plugins y agregue mercados de fuentes en las que confíe. Las organizaciones pueden restringir qué mercados se permite a los usuarios agregar usando [restricciones de mercado administrado](/docs/es/plugin-marketplaces#managed-marketplace-restrictions).

611 

612<h2 id="troubleshooting">

613 Troubleshooting

614</h2>

615 

616<h3 id="/plugin-command-not-recognized">

617 /plugin command not recognized

618</h3>

619 

620Si ve "unknown command" o el comando `/plugin` no aparece:

621 

6221. **Verifique su versión**: Ejecute `claude --version` para ver qué está instalado.

6232. **Actualice Claude Code**:

624 * **Homebrew**: `brew upgrade claude-code`, o `brew upgrade claude-code@latest` si instaló ese cask

625 * **npm**: `npm install -g @anthropic-ai/claude-code@latest`

626 * **Native installer**: Vuelva a ejecutar el comando de instalación desde [Setup](/docs/es/setup)

6273. **Reinicie Claude Code**: Después de actualizar, reinicie su terminal y ejecute `claude` nuevamente.

628 

629<h3 id="common-issues">

630 Common issues

631</h3>

632 

633Si las skills de plugins no aparecen, limpie el caché con `rm -rf ~/.claude/plugins/cache`, reinicie Claude Code e reinstale el plugin.

634 

635Para solución de problemas detallada con soluciones, consulte [Troubleshooting](/docs/es/plugin-marketplaces#troubleshooting) en la guía de mercados. Para herramientas de depuración, consulte [Debugging and development tools](/docs/es/plugins-reference#debugging-and-development-tools).

636 

637<h3 id="code-intelligence-issues">

638 Code intelligence issues

639</h3>

640 

641* **Language server not starting**: Verifique que el binario esté instalado y disponible en su `$PATH`. Consulte la pestaña Errors de `/plugin` para obtener detalles.

642* **High memory usage**: Los servidores de lenguaje como `rust-analyzer` y `pyright` pueden consumir memoria significativa en proyectos grandes. Si experimenta problemas de memoria, deshabilite el plugin con `/plugin disable <plugin-name>` y confíe en las herramientas de búsqueda integradas de Claude en su lugar.

643* **False positive diagnostics in monorepos**: Los servidores de lenguaje pueden reportar errores de importación no resuelta para paquetes internos si el espacio de trabajo no está configurado correctamente. Estos no afectan la capacidad de Claude para editar código.

644 

645<h2 id="next-steps">

646 Próximos pasos

647</h2>

648 

649* **Cree sus propios plugins**: Consulte [Plugins](/docs/es/plugins) para crear skills, agentes y hooks

650* **Cree un marketplace**: Consulte [Cree un marketplace de plugins](/docs/es/plugin-marketplaces) para distribuir plugins a su equipo o comunidad

651* **Referencia técnica**: Consulte [Referencia de Plugins](/docs/es/plugins-reference) para especificaciones completas

env-vars.md +1 −1

Details

223| `CLAUDE_CODE_AUTO_BACKGROUND_WORKER_CHECKIN_SECONDS` | Cuando `CLAUDE_AUTO_BACKGROUND_TASKS` está habilitado, segundos entre recordatorios a Claude para verificar [subagentes de fondo](/docs/es/sub-agents#run-subagents-in-foreground-or-background) que aún se están ejecutando. Solo acepta un entero simple de `1` a `86400`; cualquier otro valor o deletreo se lee como no establecido. Cuando no se establece, no hay recordatorios de verificación. Requiere Claude Code v2.1.248 o posterior |223| `CLAUDE_CODE_AUTO_BACKGROUND_WORKER_CHECKIN_SECONDS` | Cuando `CLAUDE_AUTO_BACKGROUND_TASKS` está habilitado, segundos entre recordatorios a Claude para verificar [subagentes de fondo](/docs/es/sub-agents#run-subagents-in-foreground-or-background) que aún se están ejecutando. Solo acepta un entero simple de `1` a `86400`; cualquier otro valor o deletreo se lee como no establecido. Cuando no se establece, no hay recordatorios de verificación. Requiere Claude Code v2.1.248 o posterior |

224| `CLAUDE_CODE_AUTO_COMPACT_WINDOW` | Establezca la [ventana de auto-compactación](/docs/es/model-config#set-the-auto-compact-window) en tokens, de `100000` a `1000000`. Solo acepta un entero simple como `500000`: un valor como `500k` se lee como `500` y se fija al mínimo de 100K. La ventana efectiva también se limita a la ventana de contexto del modelo. Tiene precedencia sobre el comando `/autocompact`, la bandera `--autocompact` y la configuración `autoCompactWindow`. La `used_percentage` de la línea de estado siempre mide contra la ventana de contexto completa del modelo, por lo que una vez que se establece esta variable, ese porcentaje ya no indica cuándo se ejecutará la compactación |224| `CLAUDE_CODE_AUTO_COMPACT_WINDOW` | Establezca la [ventana de auto-compactación](/docs/es/model-config#set-the-auto-compact-window) en tokens, de `100000` a `1000000`. Solo acepta un entero simple como `500000`: un valor como `500k` se lee como `500` y se fija al mínimo de 100K. La ventana efectiva también se limita a la ventana de contexto del modelo. Tiene precedencia sobre el comando `/autocompact`, la bandera `--autocompact` y la configuración `autoCompactWindow`. La `used_percentage` de la línea de estado siempre mide contra la ventana de contexto completa del modelo, por lo que una vez que se establece esta variable, ese porcentaje ya no indica cuándo se ejecutará la compactación |

225| `CLAUDE_CODE_AUTO_CONNECT_IDE` | Anule la [conexión IDE](/docs/es/vs-code) automática. De forma predeterminada, Claude Code se conecta automáticamente cuando se inicia dentro de un terminal integrado de IDE compatible. Establezca en `false` para evitar esto. Establezca en `true` para forzar un intento de conexión cuando la auto-detección falla, como cuando tmux oscurece la terminal padre. Tiene precedencia sobre la configuración global [`autoConnectIde`](/docs/es/settings-reference#autoconnectide) |225| `CLAUDE_CODE_AUTO_CONNECT_IDE` | Anule la [conexión IDE](/docs/es/vs-code) automática. De forma predeterminada, Claude Code se conecta automáticamente cuando se inicia dentro de un terminal integrado de IDE compatible. Establezca en `false` para evitar esto. Establezca en `true` para forzar un intento de conexión cuando la auto-detección falla, como cuando tmux oscurece la terminal padre. Tiene precedencia sobre la configuración global [`autoConnectIde`](/docs/es/settings-reference#autoconnectide) |

226| `CLAUDE_CODE_AUTO_MODE_SERVER` | Controla si Claude Code le pide al servidor que [revise acciones de modo automático](/docs/es/permission-modes#server-side-classifier-review). Cuando no se establece, Claude Code le pide al servidor en Amazon Bedrock, Google Cloud's Agent Platform, Microsoft Foundry, y Claude Platform on AWS, y cuando apunta `ANTHROPIC_BASE_URL` a una puerta de enlace LLM o proxy. Establezca en `0` para usar las solicitudes de clasificador propias de Claude Code en su lugar. No se lee en una conexión directa a la API de Anthropic. Requiere Claude Code v2.1.271 o posterior; pedirle al servidor de forma predeterminada requiere v2.1.278 o posterior |226| `CLAUDE_CODE_AUTO_MODE_SERVER` | Controla si Claude Code le pide al servidor que [revise acciones de modo automático](/docs/es/permission-modes#server-side-classifier-review). Establezca en `0` para usar las solicitudes de clasificador propias de Claude Code en su lugar. En una conexión directa a la API de Anthropic, requiere v2.1.281 o posterior. La sección vinculada enumera qué sesiones le piden al servidor cuando la variable no se establece, y desde qué versión. Requiere Claude Code v2.1.271 o posterior |

227| `CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS` | Tiempo en milisegundos que Claude Code espera a que la cadena de proveedores de credenciales predeterminada de AWS produzca credenciales antes de que la solicitud falle con [`AWS default-chain credential resolve timed out`](/docs/es/errors#aws-default-chain-credential-resolve-timed-out) (predeterminado: `60000`). Aumente cuando un paso en su cadena legítimamente necesita más tiempo, como un inicio de sesión SSO basado en navegador con MFA a través de un contenedor como `aws-vault`. Se aplica dondequiera que Claude Code firme con la cadena predeterminada: [Amazon Bedrock](/docs/es/amazon-bedrock#credential-caching-and-resolution-timeout), [Claude Platform on AWS](/docs/es/claude-platform-on-aws), y el [punto de conexión Mantle](/docs/es/amazon-bedrock#use-the-mantle-endpoint). Requiere Claude Code v2.1.207 o posterior |227| `CLAUDE_CODE_AWS_CHAIN_RESOLVE_TIMEOUT_MS` | Tiempo en milisegundos que Claude Code espera a que la cadena de proveedores de credenciales predeterminada de AWS produzca credenciales antes de que la solicitud falle con [`AWS default-chain credential resolve timed out`](/docs/es/errors#aws-default-chain-credential-resolve-timed-out) (predeterminado: `60000`). Aumente cuando un paso en su cadena legítimamente necesita más tiempo, como un inicio de sesión SSO basado en navegador con MFA a través de un contenedor como `aws-vault`. Se aplica dondequiera que Claude Code firme con la cadena predeterminada: [Amazon Bedrock](/docs/es/amazon-bedrock#credential-caching-and-resolution-timeout), [Claude Platform on AWS](/docs/es/claude-platform-on-aws), y el [punto de conexión Mantle](/docs/es/amazon-bedrock#use-the-mantle-endpoint). Requiere Claude Code v2.1.207 o posterior |

228| `CLAUDE_CODE_BASH_EDIT_DIFF` | Establezca en `0` para desactivar la [diferencia de los archivos que cambió un comando Bash](/docs/es/hooks#bash), o `1` para registrarlo en cada modo de permiso. Tiene precedencia sobre la configuración [`bashEditDiffEnabled`](/docs/es/settings-reference#basheditdiffenabled). Requiere Claude Code v2.1.269 o posterior |228| `CLAUDE_CODE_BASH_EDIT_DIFF` | Establezca en `0` para desactivar la [diferencia de los archivos que cambió un comando Bash](/docs/es/hooks#bash), o `1` para registrarlo en cada modo de permiso. Tiene precedencia sobre la configuración [`bashEditDiffEnabled`](/docs/es/settings-reference#basheditdiffenabled). Requiere Claude Code v2.1.269 o posterior |

229| `CLAUDE_CODE_BG_TASKS_REPORT_RUNNING` | Establezca en `0` para hacer que una sesión no interactiva informe un estado inactivo a su host en cada final de turno, incluso mientras el trabajo de fondo aún se está ejecutando. De forma predeterminada, la sesión continúa informando un estado de ejecución después del final del turno mientras el trabajo de fondo como un agente de fondo o una ejecución de [flujo de trabajo](/docs/es/workflows) aún está activo. Esto mantiene un host que observa el estado, como una lista de sesión remota, de anunciar que Claude está esperando su entrada a mitad del trabajo. Los comandos de shell de fondo, como un servidor de desarrollo, no mantienen el estado de ejecución. El predeterminado de estado de ejecución y el opt-out de `0` requieren Claude Code v2.1.269 o posterior; en versiones anteriores, establezca `1` para mantener el estado de ejecución |229| `CLAUDE_CODE_BG_TASKS_REPORT_RUNNING` | Establezca en `0` para hacer que una sesión no interactiva informe un estado inactivo a su host en cada final de turno, incluso mientras el trabajo de fondo aún se está ejecutando. De forma predeterminada, la sesión continúa informando un estado de ejecución después del final del turno mientras el trabajo de fondo como un agente de fondo o una ejecución de [flujo de trabajo](/docs/es/workflows) aún está activo. Esto mantiene un host que observa el estado, como una lista de sesión remota, de anunciar que Claude está esperando su entrada a mitad del trabajo. Los comandos de shell de fondo, como un servidor de desarrollo, no mantienen el estado de ejecución. El predeterminado de estado de ejecución y el opt-out de `0` requieren Claude Code v2.1.269 o posterior; en versiones anteriores, establezca `1` para mantener el estado de ejecución |

errors.md +144 −15

Details

36| `Auto mode could not evaluate this action and is blocking it for safety` | [Errores del servidor](#auto-mode-cannot-determine-the-safety-of-an-action) |36| `Auto mode could not evaluate this action and is blocking it for safety` | [Errores del servidor](#auto-mode-cannot-determine-the-safety-of-an-action) |

37| `Auto mode classifier transcript exceeded context window` | [Errores del servidor](#auto-mode-cannot-determine-the-safety-of-an-action) |37| `Auto mode classifier transcript exceeded context window` | [Errores del servidor](#auto-mode-cannot-determine-the-safety-of-an-action) |

38| `Agent aborted: auto mode classifier request refused by the safety safeguard` | [Errores del servidor](#auto-mode-cannot-determine-the-safety-of-an-action) |38| `Agent aborted: auto mode classifier request refused by the safety safeguard` | [Errores del servidor](#auto-mode-cannot-determine-the-safety-of-an-action) |

39| `The server-side auto mode classifier gave no verdict` | [Errores del servidor](#the-server-returned-no-safety-verdict) |

40| `Auto mode is unavailable — the server returned no safety verdict for the last 10 responses` | [Errores del servidor](#the-server-returned-no-safety-verdict) |

39| `Agent terminated early due to an API error` | [Errores del servidor](#agent-terminated-early-due-to-an-api-error) |41| `Agent terminated early due to an API error` | [Errores del servidor](#agent-terminated-early-due-to-an-api-error) |

40| `You've hit your session limit` / `You've hit your weekly limit` / `You've hit your Opus limit` / `You've hit your Sonnet limit` | [Límites de uso](#youve-hit-your-session-limit) |42| `You've hit your session limit` / `You've hit your weekly limit` / `You've hit your Opus limit` / `You've hit your Sonnet limit` | [Límites de uso](#youve-hit-your-session-limit) |

41| `Usage credits required for 1M context` | [Límites de uso](#usage-credits-required-for-1m-context) |43| `Usage credits required for 1M context` | [Límites de uso](#usage-credits-required-for-1m-context) |


154| `API Error: 400 orphaned tool_result in conversation history` | [Errores de solicitud](#tool-use-or-thinking-block-mismatch) |156| `API Error: 400 orphaned tool_result in conversation history` | [Errores de solicitud](#tool-use-or-thinking-block-mismatch) |

155| `API Error: 400 duplicate tool_use ID in conversation history` | [Errores de solicitud](#tool-use-or-thinking-block-mismatch) |157| `API Error: 400 duplicate tool_use ID in conversation history` | [Errores de solicitud](#tool-use-or-thinking-block-mismatch) |

156| `[Unsupported tool content removed]` | [Errores de solicitud](#unsupported-tool-content-removed) |158| `[Unsupported tool content removed]` | [Errores de solicitud](#unsupported-tool-content-removed) |

159| `role 'system' must precede an 'assistant' message` | [Errores de solicitud](#role-system-must-precede-an-assistant-message) |

160| `Invalid encrypted_content in search_result block` / `Invalid encrypted_index in text block` / `Failed to decrypt web search result content` | [Errores de solicitud](#invalid-encrypted-content-in-search-result-block) |

157| `server_tool_use.name: Input should be` on every turn of a resumed session | [Errores de solicitud](#unsupported-tool-content-removed) |161| `server_tool_use.name: Input should be` on every turn of a resumed session | [Errores de solicitud](#unsupported-tool-content-removed) |

158| `<model> can't help with this. Start a new session to continue` | [Errores de solicitud](#usage-policy-refusal) |162| `<model> can't help with this. Start a new session to continue` | [Errores de solicitud](#usage-policy-refusal) |

159| `Claude Code is unable to respond to this request, which appears to violate our Usage Policy` | [Errores de solicitud](#usage-policy-refusal) |163| `Claude Code is unable to respond to this request, which appears to violate our Usage Policy` | [Errores de solicitud](#usage-policy-refusal) |


171| `Error: Invalid --agents configuration:` | [Errores de línea de comandos](#invalid-agents-configuration) |175| `Error: Invalid --agents configuration:` | [Errores de línea de comandos](#invalid-agents-configuration) |

172| `Error: Settings file exceeds the 2MiB limit` | [Errores de línea de comandos](#settings-file-exceeds-the-2mib-limit) |176| `Error: Settings file exceeds the 2MiB limit` | [Errores de línea de comandos](#settings-file-exceeds-the-2mib-limit) |

173| `The current directory no longer exists (it was deleted or moved)` / `Can't read the current directory` | [Errores de línea de comandos](#the-current-directory-no-longer-exists) |177| `The current directory no longer exists (it was deleted or moved)` / `Can't read the current directory` | [Errores de línea de comandos](#the-current-directory-no-longer-exists) |

178| `Temp directory <dir> ... Refusing to use it` / `ENOSPC: no space left on device, mkdir '<dir>'` | [Errores de línea de comandos](#temp-directory-refused-or-cannot-be-created) |

174| `couldn't be resolved to a real location, so its skills, commands, and agents weren't loaded` | [Errores de línea de comandos](#directory-couldnt-be-resolved-to-a-real-location) |179| `couldn't be resolved to a real location, so its skills, commands, and agents weren't loaded` | [Errores de línea de comandos](#directory-couldnt-be-resolved-to-a-real-location) |

175| `Error: Workspace not trusted` when starting Remote Control | [Errores de línea de comandos](#workspace-not-trusted-when-starting-remote-control) |180| `Error: Workspace not trusted` when starting Remote Control | [Errores de línea de comandos](#workspace-not-trusted-when-starting-remote-control) |

176| `` `<flag>` before `remote-control` is not carried over to the sessions Remote Control starts `` | [Errores de línea de comandos](#not-carried-over-to-the-sessions-remote-control-starts) |181| `` `<flag>` before `remote-control` is not carried over to the sessions Remote Control starts `` | [Errores de línea de comandos](#not-carried-over-to-the-sessions-remote-control-starts) |


214| `` `plugin eval` is currently in early access `` / `` `plugin eval` is currently unavailable `` | [Errores de plugins](#plugin-eval-is-currently-in-early-access) |219| `` `plugin eval` is currently in early access `` / `` `plugin eval` is currently unavailable `` | [Errores de plugins](#plugin-eval-is-currently-in-early-access) |

215| `Marketplace "<name>" is registered from an untrusted source` | [Errores de plugins](#marketplace-is-registered-from-an-untrusted-source) |220| `Marketplace "<name>" is registered from an untrusted source` | [Errores de plugins](#marketplace-is-registered-from-an-untrusted-source) |

216| `Marketplace "<name>" is already added from a different source` | [Errores de plugins](#marketplace-is-already-added-from-a-different-source) |221| `Marketplace "<name>" is already added from a different source` | [Errores de plugins](#marketplace-is-already-added-from-a-different-source) |

222| `"<name>" is another spelling of "<reserved>", a reserved marketplace name` | [Errores de plugins](#marketplace-name-is-another-spelling-of-a-reserved-name) |

217| `references ${user_config.*} in a shell-form command` | [Errores de plugins](#plugin-command-references-user-config) |223| `references ${user_config.*} in a shell-form command` | [Errores de plugins](#plugin-command-references-user-config) |

218| `Monitor "<name>" from plugin <plugin> references ${user_config.*} in its command` | [Errores de plugins](#plugin-command-references-user-config) |224| `Monitor "<name>" from plugin <plugin> references ${user_config.*} in its command` | [Errores de plugins](#plugin-command-references-user-config) |

219| `headersHelper for MCP server '<name>' references ${user_config.*}` | [Errores de plugins](#plugin-command-references-user-config) |225| `headersHelper for MCP server '<name>' references ${user_config.*}` | [Errores de plugins](#plugin-command-references-user-config) |


566* En una sesión interactiva, apruebe o niegue la acción en el prompt que aparece572* En una sesión interactiva, apruebe o niegue la acción en el prompt que aparece

567* En una sesión interactiva, ejecute `/compact` para reducir el tamaño de la conversación para que las acciones posteriores se ajusten nuevamente dentro de la ventana del clasificador573* En una sesión interactiva, ejecute `/compact` para reducir el tamaño de la conversación para que las acciones posteriores se ajusten nuevamente dentro de la ventana del clasificador

568 574 

575<h3 id="the-server-returned-no-safety-verdict">

576 The server returned no safety verdict

577</h3>

578 

579Bajo [server-side classifier review](/docs/es/permission-modes#server-side-classifier-review), auto mode niega una acción cuando el servidor no da un veredicto para ella. La denegación nombra una categoría entre paréntesis cuando Claude Code puede determinar una, como `(timed out)`:

580 

581```text theme={null}

582The server-side auto mode classifier gave no verdict (timed out), so auto mode cannot determine the safety of <tool>.

583```

584 

585El resto del mensaje le dice a Claude si un reintento puede ayudar. Antes de algunas de estas denegaciones, Claude Code espera para que el siguiente intento de Claude no siga de inmediato. Durante la espera en una sesión interactiva, el spinner muestra `Auto mode check unavailable` con una cuenta regresiva, y presionar `Esc` interrumpe el turno.

586 

587Después de diez respuestas seguidas sin veredicto, auto mode detiene el turno:

588 

589```text theme={null}

590Auto mode is unavailable — the server returned no safety verdict for the last 10 responses, so Claude stopped. Send a message to try again, or switch out of auto mode.

591```

592 

593El mensaje de parada aparece en un lugar diferente en cada tipo de sesión:

594 

595* En una sesión interactiva, el mensaje aparece como una advertencia en la transcripción y el turno termina

596* En una ejecución `-p` [non-interactive](/docs/es/headless), la ejecución termina e informa un error de ejecución. Con la salida de texto predeterminada, el mensaje se imprime en stderr.

597* Cuando un [subagent](/docs/es/sub-agents) alcanzó el límite, el subagente se detiene antes de terminar, y Claude recibe lo que produjo con una nota de que auto mode lo detuvo

598 

599**Qué hacer:**

600 

601* Envíe otro mensaje para que Claude intente de nuevo. El recuento de respuestas comienza de nuevo.

602* Si la parada se repite y sus solicitudes pasan a través de una [LLM gateway or proxy](/docs/es/llm-gateway), verifique si corta respuestas de transmisión o las reescribe. [Server-side classifier review](/docs/es/permission-modes#server-side-classifier-review) dice qué comportamiento de puerta de enlace causa denegaciones, y la [gateway compatibility guide](/docs/es/llm-gateway-protocol#feature-pass-through) enumera qué pasar sin cambios.

603* Establezca `CLAUDE_CODE_AUTO_MODE_SERVER=0` antes de iniciar Claude Code para usar sus propias solicitudes de clasificador en su lugar. Antes de v2.1.281, Claude Code no leía la variable en una conexión directa a la API de Anthropic.

604* Para aprobar las acciones usted mismo en su lugar, [switch out of auto mode](/docs/es/permission-modes#switch-permission-modes)

605 

606Antes de v2.1.280, Claude Code negaba cada acción de una respuesta sin veredicto de inmediato y nunca detenía el turno.

607 

569<h3 id="agent-terminated-early-due-to-an-api-error">608<h3 id="agent-terminated-early-due-to-an-api-error">

570 Agent terminated early due to an API error609 Agent terminated early due to an API error

571</h3>610</h3>


2391* Ninguno necesario cuando ve la línea de marcador de posición. La sesión continúa sin el contenido eliminado.2430* Ninguno necesario cuando ve la línea de marcador de posición. La sesión continúa sin el contenido eliminado.

2392* Si cada turno de una sesión reanudada falla con el error 400 en su lugar, ejecute `claude update` y reanude la sesión de nuevo. Las versiones anteriores a v2.1.246 no eliminan el contenido.2431* Si cada turno de una sesión reanudada falla con el error 400 en su lugar, ejecute `claude update` y reanude la sesión de nuevo. Las versiones anteriores a v2.1.246 no eliminan el contenido.

2393 2432 

2433<h3 id="role-system-must-precede-an-assistant-message">

2434 role 'system' debe preceder a un mensaje 'assistant'

2435</h3>

2436 

2437La API rechazó la solicitud con un 400 porque un mensaje del sistema se encuentra en una posición en la conversación que no acepta:

2438 

2439```text theme={null}

2440API Error: 400 messages.6: role 'system' must precede an 'assistant' message or end the array; ...

2441```

2442 

2443Claude Code envía parte de su texto de recordatorio y adjuntos como mensajes del sistema dentro de la conversación. Cuando la API rechaza la posición de uno, Claude Code reintenta la solicitud una vez con ese texto enviado como mensajes de usuario ordinarios en su lugar. Las redacciones hermanas de la API, como `use the top-level 'system' parameter for the initial system prompt`, obtienen la misma recuperación.

2444 

2445Cuando el error aparece, el mensaje del sistema rechazado no es uno que Claude Code pueda eliminar. Eso generalmente significa que un proxy o [puerta de enlace LLM](/docs/es/llm-gateway) entre Claude Code y la API agregó un mensaje del sistema propio o reordenó la conversación.

2446 

2447**Qué hacer:**

2448 

2449* Ejecute `/clear` para comenzar una conversación nueva. Si el error regresa allí también, la causa está en la ruta de solicitud, no en la conversación guardada.

2450* Si el error se repite en cada turno detrás de un proxy o puerta de enlace configurada a través de [`ANTHROPIC_BASE_URL`](/docs/es/env-vars), conéctese sin el proxy para confirmar la fuente, e informe el error a quien lo opera

2451 

2452Antes de v2.1.280, Claude Code no reconocía esta redacción, por lo que el error también aparecía cuando el mensaje del sistema rechazado era uno que Claude Code en sí envió, y cada turno posterior de la conversación fallaba de la misma manera.

2453 

2454<h3 id="invalid-encrypted-content-in-search-result-block">

2455 Contenido\_encriptado inválido en bloque search\_result

2456</h3>

2457 

2458La API rechazó la solicitud con un 400 porque el historial de conversación contiene contenido de búsqueda web alojado que no puede descifrar. La redacción nombra el campo que no puede leer:

2459 

2460```text theme={null}

2461API Error: 400 messages.21.content.0: Invalid `encrypted_content` in `search_result` block

2462API Error: 400 messages.21.content.3.citations.0: Invalid `encrypted_index` in `text` block

2463API Error: 400 Failed to decrypt web search result content

2464```

2465 

2466Los resultados de la [herramienta de búsqueda web](/docs/es/tools-reference#websearch-tool-behavior) alojada de la API llevan campos encriptados que solo la API puede leer. La API rechaza una solicitud que reproduce contenido que no puede descifrar, como contenido producido para una organización diferente.

2467 

2468La propia [herramienta WebSearch](/docs/es/tools-reference#websearch-tool-behavior) de Claude Code registra los resultados de búsqueda como texto sin formato, por lo que estos bloques generalmente llegan a una conversación a través de un proxy o [puerta de enlace LLM](/docs/es/llm-gateway) que ejecutó búsqueda web alojada en sí.

2469 

2470Los bloques rechazados permanecen en el historial de conversación, por lo que cada turno posterior y `/compact` fallan de la misma manera.

2471 

2472**Qué hacer:**

2473 

2474* Ejecute `/clear` o comience una nueva sesión; la nueva conversación no lleva los bloques rechazados

2475* Si ejecuta Claude Code detrás de un proxy o puerta de enlace, informe el error a quien lo opera

2476 

2394<h3 id="usage-policy-refusal">2477<h3 id="usage-policy-refusal">

2395 Rechazo de política de uso2478 Rechazo de política de uso

2396</h3>2479</h3>


2627* Si el directorio fue recreado en la misma ruta, su shell aún mantiene el eliminado. Ejecute `cd "$PWD"` o salga y vuelva a ingresar al directorio, luego ejecute `claude` nuevamente2710* Si el directorio fue recreado en la misma ruta, su shell aún mantiene el eliminado. Ejecute `cd "$PWD"` o salga y vuelva a ingresar al directorio, luego ejecute `claude` nuevamente

2628* Para `EPERM` en macOS, cierre su aplicación de terminal con Cmd+Q, ábrala nuevamente, regrese a esa carpeta y ejecute `claude`. Si `ls` en esa carpeta aún falla, abra **System Settings > Privacy & Security > Files and Folders**, active la carpeta para su aplicación de terminal, luego reabre la terminal2711* Para `EPERM` en macOS, cierre su aplicación de terminal con Cmd+Q, ábrala nuevamente, regrese a esa carpeta y ejecute `claude`. Si `ls` en esa carpeta aún falla, abra **System Settings > Privacy & Security > Files and Folders**, active la carpeta para su aplicación de terminal, luego reabre la terminal

2629 2712 

2713<h3 id="temp-directory-refused-or-cannot-be-created">

2714 El directorio temporal fue rechazado o no se puede crear

2715</h3>

2716 

2717En macOS y Linux, Claude Code crea un directorio temporal privado al inicio, `claude-<uid>` bajo el directorio temporal del sistema o la anulación [`CLAUDE_CODE_TMPDIR`](/docs/es/env-vars). Cuando el directorio no se puede crear, o una entrada ya en esa ruta falla las verificaciones de seguridad, Claude Code imprime el fallo en stderr y sale con código 1 en lugar de iniciar la sesión:

2718 

2719```text wrap theme={null}

2720ENOSPC: no space left on device, mkdir '/tmp/claude-501'

2721 

2722Temp directory /tmp/claude-501 is not a directory (may be an attacker-planted symlink). Refusing to use it. Set CLAUDE_CODE_TMPDIR to a directory you control, or ask an administrator to remove it.

2723 

2724Temp directory /tmp/claude-501 is owned by uid 502, expected 501. Refusing to use it — another user may have pre-created it. Set CLAUDE_CODE_TMPDIR to a directory you control, or ask an administrator to remove it.

2725 

2726Temp directory /tmp/claude-501 is not readable (its mode may have been altered, or a path component denies search). Refusing to use it — restore its permissions (chmod 0700) or remove it. Set CLAUDE_CODE_TMPDIR to a directory you control, or ask an administrator to remove it.

2727```

2728 

2729**Qué hacer:**

2730 

2731* Para `ENOSPC`, libere espacio en disco en el volumen que contiene el directorio temporal

2732* Para las formas `Refusing to use it`, elimine la entrada nombrada en sí, no lo que apunta un enlace, e inicie Claude Code nuevamente; para la forma `owned by uid`, solo un administrador o ese usuario puede eliminarlo

2733* Para `is not readable`, ejecute `chmod 0700` en el directorio nombrado, o elimínelo e inicie nuevamente

2734* En cualquiera de estos casos, establezca [`CLAUDE_CODE_TMPDIR`](/docs/es/env-vars) en un directorio que controle e inicie Claude Code nuevamente, dejando la ruta rechazada sola

2735 

2630<h3 id="directory-couldnt-be-resolved-to-a-real-location">2736<h3 id="directory-couldnt-be-resolved-to-a-real-location">

2631 El directorio no se pudo resolver a una ubicación real2737 El directorio no se pudo resolver a una ubicación real

2632</h3>2738</h3>


2952 3058 

2953* Un error tipográfico, como `/hepl` para `/help`. [Cómo el menú de comandos coincide con lo que escribe](/docs/es/commands#how-the-command-menu-matches-what-you-type) cubre elegir una coincidencia cercana antes de enviar3059* Un error tipográfico, como `/hepl` para `/help`. [Cómo el menú de comandos coincide con lo que escribe](/docs/es/commands#how-the-command-menu-matches-what-you-type) cubre elegir una coincidencia cercana antes de enviar

2954* Un comando que existe pero no está disponible en esta sesión porque no se cumple un requisito, como su plataforma, plan o método de autenticación. Las entradas de solución de problemas para [`/web-setup`](/docs/es/web-quickstart#web-setup-shows-no-commands-match-or-unknown-command) y [`/schedule`](/docs/es/routines#schedule-returns-unknown-command) recorren dos casos comunes. Algunos comandos responden con su propio mensaje cuando la política de su organización los desactiva, como [`Cloud sessions are disabled by your organization's policy`](#cloud-sessions-are-disabled-by-your-organizations-policy)3060* Un comando que existe pero no está disponible en esta sesión porque no se cumple un requisito, como su plataforma, plan o método de autenticación. Las entradas de solución de problemas para [`/web-setup`](/docs/es/web-quickstart#web-setup-shows-no-commands-match-or-unknown-command) y [`/schedule`](/docs/es/routines#schedule-returns-unknown-command) recorren dos casos comunes. Algunos comandos responden con su propio mensaje cuando la política de su organización los desactiva, como [`Cloud sessions are disabled by your organization's policy`](#cloud-sessions-are-disabled-by-your-organizations-policy)

2955* Un comando de un [plugin](/docs/es/plugins) o [servidor MCP](/docs/es/mcp#use-mcp-prompts-as-commands) que no está instalado o conectado en esta sesión3061* Un comando de un [plugin](/docs/es/plugins/overview) o [servidor MCP](/docs/es/mcp#use-mcp-prompts-as-commands) que no está instalado o conectado en esta sesión

2956 3062 

2957Claude Code responde a un nombre `/` que no coincide con ningún comando de esta manera solo en una sesión de terminal interactiva. En todas las otras sesiones, envía el símbolo del sistema a Claude como un mensaje normal en su lugar, con una nota de que el comando no se ejecutó y una lista de comandos que Claude puede ejecutar en la sesión. Esas sesiones incluyen:3063Claude Code responde a un nombre `/` que no coincide con ningún comando de esta manera solo en una sesión de terminal interactiva. En todas las otras sesiones, envía el símbolo del sistema a Claude como un mensaje normal en su lugar, con una nota de que el comando no se ejecutó y una lista de comandos que Claude puede ejecutar en la sesión. Esas sesiones incluyen:

2958 3064 


3282 Errores de plugins3388 Errores de plugins

3283</h2>3389</h2>

3284 3390 

3285Estos errores provienen de la configuración de [plugins](/docs/es/plugins) y [marketplace](/docs/es/plugin-marketplaces). Para problemas de plugins que no producen uno de los mensajes en esta página, como una URL de marketplace que no carga o un plugin que se instala pero no aparece, consulte [Solución de problemas de plugins](/docs/es/discover-plugins#troubleshooting).3391Estos errores provienen de la configuración de [plugins](/docs/es/plugins/overview) y [marketplace](/docs/es/plugins/overview). Para problemas de plugins que no producen uno de los mensajes en esta página, como una URL de marketplace que no carga o un plugin que se instala pero no aparece, consulte [Solución de problemas de plugins](/docs/es/plugins/troubleshooting).

3286 3392 

3287<h3 id="plugin-eval-is-currently-in-early-access">3393<h3 id="plugin-eval-is-currently-in-early-access">

3288 plugin eval is currently in early access3394 plugin eval is currently in early access


3309 Marketplace is registered from an untrusted source3415 Marketplace is registered from an untrusted source

3310</h3>3416</h3>

3311 3417 

3312El marketplace está registrado bajo un nombre que está [reservado para marketplaces oficiales de Anthropic](/docs/es/plugin-marketplaces#marketplace-schema), pero su fuente registrada no es un repositorio de GitHub de `anthropics`. Claude Code vuelve a verificar los nombres reservados cada vez que carga o actualiza un marketplace, por lo que el marketplace y los plugins instalados desde él dejan de cargarse. Antes de v2.1.205, el nombre se verificaba solo cuando se agregaba el marketplace, por lo que una entrada registrada antes de que su nombre se reservara seguía cargándose.3418El marketplace está registrado bajo un nombre que está [reservado para marketplaces oficiales de Anthropic](/docs/es/plugins/marketplace-reference#marketplace-file), pero su fuente registrada no es un repositorio de GitHub de `anthropics`. Claude Code vuelve a verificar los nombres reservados cada vez que carga o actualiza un marketplace, por lo que el marketplace y los plugins instalados desde él dejan de cargarse. Antes de v2.1.205, el nombre se verificaba solo cuando se agregaba el marketplace, por lo que una entrada registrada antes de que su nombre se reservara seguía cargándose.

3313 3419 

3314```text theme={null}3420```text theme={null}

3315Marketplace "claude-community" is registered from an untrusted source: The name 'claude-community' is reserved for official Anthropic marketplaces. Only repositories from 'github.com/anthropics/' can use this name. To fix it, remove the marketplace and re-add it from the official source.3421Marketplace "claude-community" is registered from an untrusted source: The name 'claude-community' is reserved for official Anthropic marketplaces. Only repositories from 'github.com/anthropics/' can use this name. To fix it, remove the marketplace and re-add it from the official source.


3321 3427 

3322* Si el marketplace ya está registrado, ejecute `claude plugin marketplace remove <name>`, luego agréguelo nuevamente desde el repositorio oficial `github.com/anthropics`3428* Si el marketplace ya está registrado, ejecute `claude plugin marketplace remove <name>`, luego agréguelo nuevamente desde el repositorio oficial `github.com/anthropics`

3323* Si publica un marketplace de terceros que utilizó el nombre antes de que se reservara, cámbielo de nombre y pida a los usuarios que lo vuelvan a agregar desde su fuente3429* Si publica un marketplace de terceros que utilizó el nombre antes de que se reservara, cámbielo de nombre y pida a los usuarios que lo vuelvan a agregar desde su fuente

3324* Consulte la lista de nombres reservados en [Marketplace schema](/docs/es/plugin-marketplaces#marketplace-schema)3430* Consulte la lista de nombres reservados en [Marketplace schema](/docs/es/plugins/marketplace-reference#marketplace-file)

3431 

3432<h3 id="marketplace-name-is-another-spelling-of-a-reserved-name">

3433 Marketplace name is another spelling of a reserved name

3434</h3>

3435 

3436El nombre del marketplace no es en sí mismo un nombre reservado, pero Claude Code lo trata como otra ortografía de uno. [Reserved names](/docs/es/plugins/marketplace-reference#reserved-name-spellings) enumera qué ortografías cuentan como un nombre reservado. Claude Code rechaza tal nombre cuando agrega el marketplace:

3437 

3438```text theme={null}

3439Failed to add marketplace: "claude.code.plugins" is another spelling of "claude-code-plugins", a reserved marketplace name.

3440```

3441 

3442Cuando un marketplace ya está registrado bajo tal nombre, su entrada deja de cargarse, y `/plugin`, `claude plugin install`, y `claude plugin update` advierten:

3443 

3444```text wrap theme={null}

3445known_marketplaces.json has an entry named "claude.code.plugins", another spelling of the reserved marketplace name "claude-code-plugins", so it is ignored. Remove it with: claude plugin marketplace remove claude.code.plugins

3446```

3447 

3448Cuando el nombre requeriría entrecomillado de shell, la negativa en tiempo de adición dice `This marketplace's name is another spelling of "<reserved>", a reserved marketplace name. It is not exactly the reserved name it appears to be.`

3449 

3450**Qué hacer:**

3451 

3452* Cambie el nombre del marketplace a un nombre que no deletree un nombre reservado y agréguelo nuevamente

3453* Para la advertencia de entrada ignorada, ejecute el comando `claude plugin marketplace remove` que proporciona, o elimine la entrada de `~/.claude/plugins/known_marketplaces.json`

3325 3454 

3326<h3 id="marketplace-is-already-added-from-a-different-source">3455<h3 id="marketplace-is-already-added-from-a-different-source">

3327 Marketplace is already added from a different source3456 Marketplace is already added from a different source

3328</h3>3457</h3>

3329 3458 

3330Confirmó agregar un marketplace a través de [`/plugin install <plugin> --marketplace <source>`](/docs/es/discover-plugins#add-a-marketplace-and-install-in-one-command), y el catálogo que Claude Code obtuvo de esa fuente se llama a sí mismo igual que un marketplace que ya agregó desde una fuente diferente. Claude Code mantiene el marketplace existente en lugar de reemplazarlo, y el plugin no se instala.3459Confirmó agregar un marketplace a través de [`/plugin install <plugin> --marketplace <source>`](/docs/es/plugins/install#add-a-marketplace-and-install-in-one-command), y el catálogo que Claude Code obtuvo de esa fuente se llama a sí mismo igual que un marketplace que ya agregó desde una fuente diferente. Claude Code mantiene el marketplace existente en lugar de reemplazarlo, y el plugin no se instala.

3331 3460 

3332```text theme={null}3461```text theme={null}

3333Marketplace "acme-tools" is already added from a different source (github:acme/plugins). To use this source instead, remove that marketplace first with /plugin marketplace remove acme-tools.3462Marketplace "acme-tools" is already added from a different source (github:acme/plugins). To use this source instead, remove that marketplace first with /plugin marketplace remove acme-tools.


3342 Plugin command references user\_config in a shell command3471 Plugin command references user\_config in a shell command

3343</h3>3472</h3>

3344 3473 

3345Un hook de plugin, [monitor](/docs/es/plugins-reference#monitors), o comando MCP [`headersHelper`](/docs/es/mcp#use-dynamic-headers-for-custom-authentication) hace referencia a una [opción de plugin](/docs/es/plugins-reference#user-configuration) `${user_config.KEY}`, y la cadena sustituida se pasaría a un shell. Un valor configurado que contenga `$(...)`, comillas invertidas o `;` se ejecutaría como código allí, por lo que Claude Code se niega a iniciar el componente en lugar de sustituir el valor. La verificación se ejecuta en la plantilla de comando, por lo que el error aparece incluso cuando aún no se ha configurado ningún valor. Antes de v2.1.207, el valor se sustituía en el comando del shell.3474Un hook de plugin, [monitor](/docs/es/plugins/components#monitors), o comando MCP [`headersHelper`](/docs/es/mcp#use-dynamic-headers-for-custom-authentication) hace referencia a una [opción de plugin](/docs/es/plugins/manifest-reference#user-configuration) `${user_config.KEY}`, y la cadena sustituida se pasaría a un shell. Un valor configurado que contenga `$(...)`, comillas invertidas o `;` se ejecutaría como código allí, por lo que Claude Code se niega a iniciar el componente en lugar de sustituir el valor. La verificación se ejecuta en la plantilla de comando, por lo que el error aparece incluso cuando aún no se ha configurado ningún valor. Antes de v2.1.207, el valor se sustituía en el comando del shell.

3346 3475 

3347La redacción depende de qué superficie hizo referencia a la opción. Un hook de forma de shell informa:3476La redacción depende de qué superficie hizo referencia a la opción. Un hook de forma de shell informa:

3348 3477 


3372 Plugin archive integrity check failed3501 Plugin archive integrity check failed

3373</h3>3502</h3>

3374 3503 

3375La entrada del marketplace del plugin utiliza una [fuente `archive`](/docs/es/plugin-marketplaces#zip-archives) con un pin `sha256`, y el resumen del archivo descargado no coincide con el pin. Claude Code rechaza la instalación, por lo que nada cambia en la caché de plugins. La falta de coincidencia tiene tres causas posibles:3504La entrada del marketplace del plugin utiliza una [fuente `archive`](/docs/es/plugins/marketplace-reference#archive-plugin-source) con un pin `sha256`, y el resumen del archivo descargado no coincide con el pin. Claude Code rechaza la instalación, por lo que nada cambia en la caché de plugins. La falta de coincidencia tiene tres causas posibles:

3376 3505 

3377* El archivo en la URL cambió después de que el autor calculó el pin3506* El archivo en la URL cambió después de que el autor calculó el pin

3378* El autor ingresó el resumen incorrecto en la entrada del marketplace3507* El autor ingresó el resumen incorrecto en la entrada del marketplace


3392 Path escapes plugin directory3521 Path escapes plugin directory

3393</h3>3522</h3>

3394 3523 

3395Una ruta de componente de plugin, declarada en el `plugin.json` del plugin o en su [entrada de marketplace](/docs/es/plugin-marketplaces#plugin-entries), se resuelve fuera del directorio del plugin. Claude Code descarta esa ruta y carga el resto del plugin. El nombre del componente en el mensaje, como `commands` o `hooks`, nombra el campo que declaró la ruta.3524Una ruta de componente de plugin, declarada en el `plugin.json` del plugin o en su [entrada de marketplace](/docs/es/plugins/marketplace-reference#plugin-entries), se resuelve fuera del directorio del plugin. Claude Code descarta esa ruta y carga el resto del plugin. El nombre del componente en el mensaje, como `commands` o `hooks`, nombra el campo que declaró la ruta.

3396 3525 

3397```text theme={null}3526```text theme={null}

3398commands path escapes plugin directory: ./../shared.md3527commands path escapes plugin directory: ./../shared.md


3400 3529 

3401En la salida del comando `claude plugin`, el mismo error dice `Path escapes plugin directory: ./../shared.md (commands)`.3530En la salida del comando `claude plugin`, el mismo error dice `Path escapes plugin directory: ./../shared.md (commands)`.

3402 3531 

3403Claude Code rechaza tanto una ruta que apunta fuera del plugin tal como está escrita, como `../shared-utils`, como un enlace simbólico que conduce fuera del plugin y no es uno que las [reglas de enlace simbólico del marketplace](/docs/es/plugins-reference#share-files-within-a-marketplace-with-symlinks) permitan. Para un enlace simbólico, el mensaje también dice dónde se resuelve la ruta:3532Claude Code rechaza tanto una ruta que apunta fuera del plugin tal como está escrita, como `../shared-utils`, como un enlace simbólico que conduce fuera del plugin y no es uno que las [reglas de enlace simbólico del marketplace](/docs/es/plugins/host-marketplace#share-files-within-a-marketplace-with-symlinks) permitan. Para un enlace simbólico, el mensaje también dice dónde se resuelve la ruta:

3404 3533 

3405```text theme={null}3534```text theme={null}

3406commands path escapes plugin directory: ./commands/deploy.md — it resolves to /home/user/shared/deploy.md, outside the plugin directory3535commands path escapes plugin directory: ./commands/deploy.md — it resolves to /home/user/shared/deploy.md, outside the plugin directory


3421* Mueva el archivo referenciado dentro del directorio del plugin y apunte la ruta a él con una ruta relativa `./`3550* Mueva el archivo referenciado dentro del directorio del plugin y apunte la ruta a él con una ruta relativa `./`

3422* Si la ruta es un enlace simbólico a un archivo fuera del plugin, reemplace el enlace simbólico con una copia del archivo3551* Si la ruta es un enlace simbólico a un archivo fuera del plugin, reemplace el enlace simbólico con una copia del archivo

3423* Si el mensaje dice que la ruta contiene una barra invertida, escriba la ruta con barras diagonales, por ejemplo `./commands/deploy.md`3552* Si el mensaje dice que la ruta contiene una barra invertida, escriba la ruta con barras diagonales, por ejemplo `./commands/deploy.md`

3424* Para compartir archivos con otros plugins en el mismo marketplace, vincúlelos con un enlace simbólico dentro del directorio del plugin, siguiendo las [reglas de enlace simbólico](/docs/es/plugins-reference#share-files-within-a-marketplace-with-symlinks)3553* Para compartir archivos con otros plugins en el mismo marketplace, vincúlelos con un enlace simbólico dentro del directorio del plugin, siguiendo las [reglas de enlace simbólico](/docs/es/plugins/host-marketplace#share-files-within-a-marketplace-with-symlinks)

3425 3554 

3426<h3 id="path-could-not-be-checked">3555<h3 id="path-could-not-be-checked">

3427 Path could not be checked3556 Path could not be checked


3429 3558 

3430Claude Code le preguntó al sistema operativo si existe una ruta de plugin y obtuvo un error que no sea "no encontrado", por lo que no carga lo que la ruta nombra. Cuánto del plugin se carga depende de qué ruta falló:3559Claude Code le preguntó al sistema operativo si existe una ruta de plugin y obtuvo un error que no sea "no encontrado", por lo que no carga lo que la ruta nombra. Cuánto del plugin se carga depende de qué ruta falló:

3431 3560 

3432* Una de las [carpetas de componentes predeterminadas](/docs/es/plugins-reference#file-locations-reference) de un plugin, como la carpeta `skills/`, el archivo `monitors/monitors.json`, o un [`SKILL.md` en la raíz del plugin](/docs/es/plugins-reference#skills): los otros componentes del plugin aún se cargan3561* Una de las [ubicaciones de componentes predeterminadas](/docs/es/plugins/manifest-reference#standard-layout) de un plugin, como la carpeta `skills/`, el archivo `monitors/monitors.json`, o un [`SKILL.md` en la raíz del plugin](/docs/es/plugins/components#skills): los otros componentes del plugin aún se cargan

3433* El directorio del plugin en sí: nada de ese plugin se carga3562* El directorio del plugin en sí: nada de ese plugin se carga

3434 3563 

3435No ve este error para una ruta que no existe en absoluto. En `/plugin`, el error aparece bajo el plugin y nombra la ruta y el código que devolvió el sistema operativo:3564No ve este error para una ruta que no existe en absoluto. En `/plugin`, el error aparece bajo el plugin y nombra la ruta y el código que devolvió el sistema operativo:


3459 Marketplace entry path does not stay inside the marketplace directory3588 Marketplace entry path does not stay inside the marketplace directory

3460</h3>3589</h3>

3461 3590 

3462La [entrada de marketplace](/docs/es/plugin-marketplaces#plugin-entries) del plugin declara una ruta de fuente que Claude Code no puede resolver a una ubicación dentro del directorio del marketplace en sí, por lo que el plugin no se instala ni se carga. La negativa cubre:3591La [entrada de marketplace](/docs/es/plugins/marketplace-reference#plugin-entries) del plugin declara una ruta de fuente que Claude Code no puede resolver a una ubicación dentro del directorio del marketplace en sí, por lo que el plugin no se instala ni se carga. La negativa cubre:

3463 3592 

3464* Una ruta de entrada que es absoluta, sube fuera del marketplace con `..`, o está escrita como una ruta de red3593* Una ruta de entrada que es absoluta, sube fuera del marketplace con `..`, o está escrita como una ruta de red

3465* En macOS y Linux, una ruta de entrada que contiene una barra invertida en cualquier lugar después del `./` inicial3594* En macOS y Linux, una ruta de entrada que contiene una barra invertida en cualquier lugar después del `./` inicial

3466* Una entrada en un marketplace obtenido de una fuente remota, como git o una URL, que alcanza su destino a través de un enlace simbólico que se resuelve fuera del directorio del marketplace3595* Una entrada en un marketplace obtenido de una fuente remota, como git o una URL, que alcanza su destino a través de un enlace simbólico que se resuelve fuera del directorio del marketplace

3467* Una entrada relativa en un marketplace agregado desde una URL directa a su `marketplace.json`: Claude Code descarga solo ese archivo, por lo que no existen archivos de plugin locales para que la ruta nombre. Consulte [Plugins with relative paths fail in URL-based marketplaces](/docs/es/plugin-marketplaces#plugins-with-relative-paths-fail-in-url-based-marketplaces)3596* Una entrada relativa en un marketplace agregado desde una URL directa a su `marketplace.json`: Claude Code descarga solo ese archivo, por lo que no existen archivos de plugin locales para que la ruta nombre. Consulte [Plugins with relative paths fail in URL-based marketplaces](/docs/es/plugins/troubleshooting#plugins-with-relative-paths-fail-in-url-based-marketplaces)

3468 3597 

3469`claude plugin install` informa la negativa así:3598`claude plugin install` informa la negativa así:

3470 3599 


3481**Qué hacer:**3610**Qué hacer:**

3482 3611 

3483* Si mantiene el marketplace, escriba la `source` de la entrada como una ruta relativa simple con barras diagonales, como `./plugins/my-plugin`, y mantenga cualquier enlace simbólico que cruce apuntado dentro del directorio del marketplace3612* Si mantiene el marketplace, escriba la `source` de la entrada como una ruta relativa simple con barras diagonales, como `./plugins/my-plugin`, y mantenga cualquier enlace simbólico que cruce apuntado dentro del directorio del marketplace

3484* Si agregó el marketplace desde una URL directa, las entradas relativas no pueden resolverse. Pida al autor del marketplace que use [otra fuente de plugin](/docs/es/plugin-marketplaces#plugin-sources), o agregue el marketplace desde su repositorio de git en su lugar3613* Si agregó el marketplace desde una URL directa, las entradas relativas no pueden resolverse. Pida al autor del marketplace que use [otra fuente de plugin](/docs/es/plugins/marketplace-reference#plugin-sources), o agregue el marketplace desde su repositorio de git en su lugar

3485 3614 

3486<h3 id="failed-to-load-marketplace-configuration">3615<h3 id="failed-to-load-marketplace-configuration">

3487 Failed to load marketplace configuration3616 Failed to load marketplace configuration


3511 Plugin is required by your organization3640 Plugin is required by your organization

3512</h3>3641</h3>

3513 3642 

3514Ejecutó `claude plugin disable`, o utilizó la pestaña **Installed** de `/plugin`, para desactivar un [plugin sincronizado desde claude.ai](/docs/es/plugins-reference#synced-plugins) que su organización marca como requerido:3643Ejecutó `claude plugin disable`, o utilizó la pestaña **Installed** de `/plugin`, para desactivar un [plugin sincronizado desde claude.ai](/docs/es/plugins/loading#synced-plugins) que su organización marca como requerido:

3515 3644 

3516```text theme={null}3645```text theme={null}

3517Plugin "<name>@synced" is required by your organization and can't be disabled here. Contact your admin to change it.3646Plugin "<name>@synced" is required by your organization and can't be disabled here. Contact your admin to change it.

Details

32* [CLI](/docs/es/quickstart) y [Agent SDK](/docs/es/agent-sdk/overview)32* [CLI](/docs/es/quickstart) y [Agent SDK](/docs/es/agent-sdk/overview)

33* Extensiones de [VS Code](/docs/es/vs-code) y [JetBrains](/docs/es/jetbrains)33* Extensiones de [VS Code](/docs/es/vs-code) y [JetBrains](/docs/es/jetbrains)

34* [Subagentes](/docs/es/sub-agents), [hooks](/docs/es/hooks-guide), [comandos](/docs/es/commands) y [skills](/docs/es/skills)34* [Subagentes](/docs/es/sub-agents), [hooks](/docs/es/hooks-guide), [comandos](/docs/es/commands) y [skills](/docs/es/skills)

35* Memoria [CLAUDE.md](/docs/es/memory), [plugins](/docs/es/plugins) y [servidores MCP](/docs/es/mcp)35* Memoria [CLAUDE.md](/docs/es/memory), [plugins](/docs/es/plugins/overview) y [servidores MCP](/docs/es/mcp)

36* [Checkpoints](/docs/es/checkpointing), [sandboxing](/docs/es/sandboxing) y [Workflows](/docs/es/workflows)36* [Checkpoints](/docs/es/checkpointing), [sandboxing](/docs/es/sandboxing) y [Workflows](/docs/es/workflows)

37* Métricas [OpenTelemetry](/docs/es/monitoring-usage) y el [archivo de configuración administrado](/docs/es/managed-settings#delivery-mechanisms)37* Métricas [OpenTelemetry](/docs/es/monitoring-usage) y el [archivo de configuración administrado](/docs/es/managed-settings#delivery-mechanisms)

38 38 

Details

29* **[Dynamic workflows](/docs/es/workflows)** ejecutan muchos subagentes desde un script que Claude escribe, devolviendo un resultado29* **[Dynamic workflows](/docs/es/workflows)** ejecutan muchos subagentes desde un script que Claude escribe, devolviendo un resultado

30* **[Cross-session messaging](/docs/es/cross-session-messaging)** permite que Claude pase un mensaje de una de sus sesiones a otra30* **[Cross-session messaging](/docs/es/cross-session-messaging)** permite que Claude pase un mensaje de una de sus sesiones a otra

31* **[Hooks](/docs/es/hooks-guide)** ejecutan su script, solicitud HTTP, llamada a herramienta MCP, prompt o subagente cuando Claude Code alcanza un evento del ciclo de vida31* **[Hooks](/docs/es/hooks-guide)** ejecutan su script, solicitud HTTP, llamada a herramienta MCP, prompt o subagente cuando Claude Code alcanza un evento del ciclo de vida

32* **[Plugins](/docs/es/plugins)** y **[marketplaces](/docs/es/plugin-marketplaces)** empaquetan y distribuyen estas características32* **[Plugins](/docs/es/plugins/overview)** y **[marketplaces](/docs/es/plugins/overview)** empaquetan y distribuyen estas características

33 33 

34[Skills](/docs/es/skills) son la extensión más flexible. Una skill es un archivo markdown que contiene conocimiento, flujos de trabajo o instrucciones. Puede invocar skills con un comando como `/deploy`, o Claude puede cargarlas automáticamente cuando sea relevante. Las skills pueden ejecutarse en su conversación actual o en un contexto aislado a través de subagents.34[Skills](/docs/es/skills) son la extensión más flexible. Una skill es un archivo markdown que contiene conocimiento, flujos de trabajo o instrucciones. Puede invocar skills con un comando como `/deploy`, o Claude puede cargarlas automáticamente cuando sea relevante. Las skills pueden ejecutarse en su conversación actual o en un contexto aislado a través de subagents.

35 35 


52| **Hook** | Script, solicitud HTTP, llamada a herramienta MCP, prompt o subagent desencadenado por eventos | Automatización que debe ejecutarse en cada evento coincidente | Ejecutar ESLint después de cada edición de archivo |52| **Hook** | Script, solicitud HTTP, llamada a herramienta MCP, prompt o subagent desencadenado por eventos | Automatización que debe ejecutarse en cada evento coincidente | Ejecutar ESLint después de cada edición de archivo |

53| **[Artifact](/docs/es/artifacts)** | Publicar salida de sesión como una página web privada e interactiva | Salida que desea ver o compartir visualmente en lugar de como texto de terminal | Una línea de tiempo de incidentes que se actualiza mientras Claude investiga |53| **[Artifact](/docs/es/artifacts)** | Publicar salida de sesión como una página web privada e interactiva | Salida que desea ver o compartir visualmente en lugar de como texto de terminal | Una línea de tiempo de incidentes que se actualiza mientras Claude investiga |

54 54 

55**[Plugins](/docs/es/plugins)** son la capa de empaquetamiento. Un plugin agrupa skills, hooks, subagents y servidores MCP en una única unidad instalable. Las skills de plugin tienen espacios de nombres (como `/my-plugin:review`) para que múltiples plugins puedan coexistir. Use plugins cuando desee reutilizar la misma configuración en múltiples repositorios o distribuir a otros a través de un **[marketplace](/docs/es/plugin-marketplaces)**.55**[Plugins](/docs/es/plugins/overview)** son la capa de empaquetamiento. Un plugin agrupa skills, hooks, subagents y servidores MCP en una única unidad instalable. Las skills de plugin tienen espacios de nombres (como `/my-plugin:review`) para que múltiples plugins puedan coexistir. Use plugins cuando desee reutilizar la misma configuración en múltiples repositorios o distribuir a otros a través de un **[marketplace](/docs/es/plugins/overview)**.

56 56 

57<h3 id="build-your-setup-over-time">57<h3 id="build-your-setup-over-time">

58 Construir su configuración con el tiempo58 Construir su configuración con el tiempo


61No necesita configurar todo de antemano. Cada característica tiene un desencadenante reconocible, y la mayoría de los equipos las agregan en aproximadamente este orden:61No necesita configurar todo de antemano. Cada característica tiene un desencadenante reconocible, y la mayoría de los equipos las agregan en aproximadamente este orden:

62 62 

63| Desencadenante | Agregar |63| Desencadenante | Agregar |

64| :---------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------ |64| :---------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------- |

65| Claude se equivoca en una convención o comando dos veces | Agréguelo a [CLAUDE.md](/docs/es/memory) |65| Claude se equivoca en una convención o comando dos veces | Agréguelo a [CLAUDE.md](/docs/es/memory) |

66| Sigue pidiendo a Claude que sea más breve, que explique más, o que responda en el mismo formato | Establezca un [output style](/docs/es/output-styles) |66| Sigue pidiendo a Claude que sea más breve, que explique más, o que responda en el mismo formato | Establezca un [output style](/docs/es/output-styles) |

67| Sigue escribiendo el mismo prompt para iniciar una tarea | Guárdelo como una [skill](/docs/es/skills) invocable por el usuario |67| Sigue escribiendo el mismo prompt para iniciar una tarea | Guárdelo como una [skill](/docs/es/skills) invocable por el usuario |

68| Pega el mismo manual o procedimiento de varios pasos en el chat por tercera vez | Capturarlo como una [skill](/docs/es/skills) |68| Pega el mismo manual o procedimiento de varios pasos en el chat por tercera vez | Capturarlo como una [skill](/docs/es/skills) |

69| Sigue copiando datos de una pestaña del navegador que Claude no puede ver | Conecte ese sistema como un [servidor MCP](/docs/es/mcp) |69| Sigue copiando datos de una pestaña del navegador que Claude no puede ver | Conecte ese sistema como un [servidor MCP](/docs/es/mcp) |

70| Claude lee muchos archivos para encontrar dónde se define o usa un símbolo | Instale un [plugin de code intelligence](/docs/es/discover-plugins#code-intelligence) para su lenguaje |70| Claude lee muchos archivos para encontrar dónde se define o usa un símbolo | Instale un [plugin de code intelligence](/docs/es/plugins/code-intelligence) para su lenguaje |

71| Una tarea secundaria inunda su conversación con salida que no volverá a consultar | Enrutarlo a través de un [subagent](/docs/es/sub-agents) |71| Una tarea secundaria inunda su conversación con salida que no volverá a consultar | Enrutarlo a través de un [subagent](/docs/es/sub-agents) |

72| Desea que algo suceda cada vez sin preguntar | Escriba un [hook](/docs/es/hooks-guide) |72| Desea que algo suceda cada vez sin preguntar | Escriba un [hook](/docs/es/hooks-guide) |

73| Un segundo repositorio necesita la misma configuración | Empaquételo como un [plugin](/docs/es/plugins) |73| Un segundo repositorio necesita la misma configuración | Empaquételo como un [plugin](/docs/es/plugins/overview) |

74 74 

75Los mismos desencadenantes le dicen cuándo actualizar lo que ya tiene. Un error repetido o un comentario de revisión recurrente es una edición de CLAUDE.md, no una corrección única en el chat. Un flujo de trabajo que sigue ajustando manualmente es una skill que necesita otra revisión.75Los mismos desencadenantes le dicen cuándo actualizar lo que ya tiene. Un error repetido o un comentario de revisión recurrente es una edición de CLAUDE.md, no una corrección única en el chat. Un flujo de trabajo que sigue ajustando manualmente es una skill que necesita otra revisión.

76 76 


207Las características se pueden definir en múltiples niveles: en todo el usuario, por proyecto, a través de plugins o mediante políticas administradas. También puede anidar archivos CLAUDE.md en subdirectorios o colocar skills en paquetes específicos de un monorepo. Cuando la misma característica existe en múltiples niveles, así es como se superponen:207Las características se pueden definir en múltiples niveles: en todo el usuario, por proyecto, a través de plugins o mediante políticas administradas. También puede anidar archivos CLAUDE.md en subdirectorios o colocar skills en paquetes específicos de un monorepo. Cuando la misma característica existe en múltiples niveles, así es como se superponen:

208 208 

209* **Los archivos CLAUDE.md** son aditivos: todos los niveles contribuyen contenido al contexto de Claude simultáneamente. Los archivos de su directorio de trabajo y superior se cargan al iniciar; los subdirectorios se cargan mientras trabaja en ellos. Cuando las instrucciones entran en conflicto, Claude usa el juicio para reconciliarlas. Consulte [cómo se cargan los archivos CLAUDE.md](/docs/es/memory#how-claude-md-files-load).209* **Los archivos CLAUDE.md** son aditivos: todos los niveles contribuyen contenido al contexto de Claude simultáneamente. Los archivos de su directorio de trabajo y superior se cargan al iniciar; los subdirectorios se cargan mientras trabaja en ellos. Cuando las instrucciones entran en conflicto, Claude usa el juicio para reconciliarlas. Consulte [cómo se cargan los archivos CLAUDE.md](/docs/es/memory#how-claude-md-files-load).

210* **Las skills y subagents** se anulan por nombre: cuando el mismo nombre existe en múltiples niveles, una definición gana según la prioridad (administrado > usuario > proyecto para skills; administrado > bandera CLI > proyecto > usuario > plugin para subagents). Las skills de plugin tienen [espacios de nombres](/docs/es/plugins#add-skills-to-your-plugin) para evitar conflictos. Consulte [descubrimiento de skills](/docs/es/skills#resolve-skills-that-share-a-name) y [alcance de subagent](/docs/es/sub-agents#choose-the-subagent-scope).210* **Las skills y subagents** se anulan por nombre: cuando el mismo nombre existe en múltiples niveles, una definición gana según la prioridad (administrado > usuario > proyecto para skills; administrado > bandera CLI > proyecto > usuario > plugin para subagents). Las skills de plugin tienen [espacios de nombres](/docs/es/plugins/components#skills) para evitar conflictos. Consulte [descubrimiento de skills](/docs/es/skills#resolve-skills-that-share-a-name) y [alcance de subagent](/docs/es/sub-agents#choose-the-subagent-scope).

211* **Los servidores MCP** se anulan por nombre: local > proyecto > usuario. Consulte [alcance de MCP](/docs/es/mcp#scope-hierarchy-and-precedence).211* **Los servidores MCP** se anulan por nombre: local > proyecto > usuario. Consulte [alcance de MCP](/docs/es/mcp#scope-hierarchy-and-precedence).

212* **Los hooks** se fusionan: todos los hooks registrados se disparan para sus eventos coincidentes independientemente de la fuente. Consulte [hooks](/docs/es/hooks).212* **Los hooks** se fusionan: todos los hooks registrados se disparan para sus eventos coincidentes independientemente de la fuente. Consulte [hooks](/docs/es/hooks).

213 213 


304 304 

305 **Costo de contexto:** Bajo. Las búsquedas de símbolos a menudo reemplazan lecturas amplias de archivos, por lo que el uso neto de contexto puede disminuir.305 **Costo de contexto:** Bajo. Las búsquedas de símbolos a menudo reemplazan lecturas amplias de archivos, por lo que el uso neto de contexto puede disminuir.

306 306 

307 <Tip>La herramienta LSP está inactiva hasta que instale un [plugin de inteligencia de código](/docs/es/discover-plugins#code-intelligence) para su lenguaje.</Tip>307 <Tip>La herramienta LSP está inactiva hasta que instale un [plugin de inteligencia de código](/docs/es/plugins/code-intelligence) para su lenguaje.</Tip>

308 </Tab>308 </Tab>

309 309 

310 <Tab title="Subagents">310 <Tab title="Subagents">


370 Automatizar acciones con hooks370 Automatizar acciones con hooks

371 </Card>371 </Card>

372 372 

373 <Card title="Plugins" icon="puzzle-piece" href="/docs/es/plugins">373 <Card title="Plugins" icon="puzzle-piece" href="/docs/es/plugins/overview">

374 Empaquetar y compartir conjuntos de características374 Empaquetar y compartir conjuntos de características

375 </Card>375 </Card>

376 376 

377 <Card title="Marketplaces" icon="store" href="/docs/es/plugin-marketplaces">377 <Card title="Marketplaces" icon="store" href="/docs/es/plugins/create-marketplace">

378 Alojar y distribuir colecciones de plugins378 Alojar y distribuir colecciones de plugins

379 </Card>379 </Card>

380</CardGroup>380</CardGroup>

fullscreen.md +2 −1

Details

100 100 

101* **Haga clic en la entrada de solicitud** para posicionar su cursor en cualquier lugar del texto que está escribiendo.101* **Haga clic en la entrada de solicitud** para posicionar su cursor en cualquier lugar del texto que está escribiendo.

102* **Haga clic en una sugerencia en la lista de comandos `/` o archivos `@`** para aceptarla. Pasar el ratón resalta la fila bajo su cursor.102* **Haga clic en una sugerencia en la lista de comandos `/` o archivos `@`** para aceptarla. Pasar el ratón resalta la fila bajo su cursor.

103* **Haga clic en una opción en un menú de selección** para elegirla. Esto cubre solicitudes de permisos, `/model`, `/config` y otros diálogos que muestran una lista de opciones. Pasar el ratón muestra un puntero en la fila bajo su cursor. Requiere Claude Code v2.1.187 o posterior.103* **Haga clic en una opción en un menú de selección** para elegirla. Esto cubre solicitudes de permisos, `/model`, `/config` y otros diálogos que muestran una lista de opciones. Pasar el ratón muestra un puntero en la fila bajo su cursor.

104* **Haga clic en una opción en un menú de selección múltiple** para alternarla, y haga clic en el botón de envío para confirmar sus opciones. Hacer clic en una fila de texto libre, como la fila `Other` en una pregunta de opción múltiple, enfoca su campo de entrada para que pueda escribir una respuesta. Requiere Claude Code v2.1.208 o posterior.104* **Haga clic en una opción en un menú de selección múltiple** para alternarla, y haga clic en el botón de envío para confirmar sus opciones. Hacer clic en una fila de texto libre, como la fila `Other` en una pregunta de opción múltiple, enfoca su campo de entrada para que pueda escribir una respuesta. Requiere Claude Code v2.1.208 o posterior.

105* **Haga clic en un valor de configuración en el panel `/config`** para cambiarlo, y desplácese por la lista de configuración con la rueda del ratón. Requiere Claude Code v2.1.271 o posterior.105* **Haga clic en un valor de configuración en el panel `/config`** para cambiarlo, y desplácese por la lista de configuración con la rueda del ratón. Requiere Claude Code v2.1.271 o posterior.

106* **Desplace un menú de selección o selección múltiple con la rueda del ratón** cuando tenga más opciones de las que muestra a la vez, como la lista `/model` en una ventana de terminal corta. La rueda desplaza la lista mientras el puntero está sobre sus opciones. Requiere Claude Code v2.1.280 o posterior.

106* **Haga clic en un resultado de herramienta contraído** para expandirlo y ver la salida completa. Haga clic de nuevo para contraerlo. La llamada de herramienta y su resultado se expanden juntos. Solo los mensajes que tienen más para mostrar son clicables.107* **Haga clic en un resultado de herramienta contraído** para expandirlo y ver la salida completa. Haga clic de nuevo para contraerlo. La llamada de herramienta y su resultado se expanden juntos. Solo los mensajes que tienen más para mostrar son clicables.

107 * Hacer clic también expande la salida de un comando shell `!`, ya sea un resultado truncado anterior o la fila de progreso en vivo mientras se ejecuta el comando. Requiere Claude Code v2.1.257 o posterior.108 * Hacer clic también expande la salida de un comando shell `!`, ya sea un resultado truncado anterior o la fila de progreso en vivo mientras se ejecuta el comando. Requiere Claude Code v2.1.257 o posterior.

108* **Mantenga presionado `Cmd` en macOS, o `Ctrl` en Linux y Windows, y haga clic en una URL o ruta de archivo** para abrirla. Las URLs simples `http://` y `https://` se abren en su navegador, y las rutas de archivo en la salida de herramientas, como las que se imprimen después de un Edit o Write, se abren en su aplicación predeterminada. Un clic simple sin el modificador no abre enlaces, coincidiendo con el comportamiento de terminal nativo.109* **Mantenga presionado `Cmd` en macOS, o `Ctrl` en Linux y Windows, y haga clic en una URL o ruta de archivo** para abrirla. Las URLs simples `http://` y `https://` se abren en su navegador, y las rutas de archivo en la salida de herramientas, como las que se imprimen después de un Edit o Write, se abren en su aplicación predeterminada. Un clic simple sin el modificador no abre enlaces, coincidiendo con el comportamiento de terminal nativo.

Details

50* Ejecute `/install-github-app` nuevamente. Cuando el repositorio ya tiene un `claude.yml`, seleccione **Actualizar archivo de flujo de trabajo con la última versión**. Claude Code inserta copias nuevas de los archivos de flujo de trabajo en una rama nueva y abre la solicitud de extracción, igual que una primera instalación.50* Ejecute `/install-github-app` nuevamente. Cuando el repositorio ya tiene un `claude.yml`, seleccione **Actualizar archivo de flujo de trabajo con la última versión**. Claude Code inserta copias nuevas de los archivos de flujo de trabajo en una rama nueva y abre la solicitud de extracción, igual que una primera instalación.

51* Agregue el argumento `--comment` y la línea `claude_args` del [ejemplo de flujo de trabajo de revisión](#run-a-skill) al archivo registrado usted mismo, lo que mantiene cualquier otra edición que haya realizado.51* Agregue el argumento `--comment` y la línea `claude_args` del [ejemplo de flujo de trabajo de revisión](#run-a-skill) al archivo registrado usted mismo, lo que mantiene cualquier otra edición que haya realizado.

52 52 

53Después de instalar la GitHub App, Claude Code pregunta si desea continuar con la configuración de GitHub Actions. Elija **Omitir por ahora** para detener solo con la GitHub App instalada. Ejecute `/install-github-app` nuevamente más tarde para terminar los pasos de flujo de trabajo y secreto. Antes de v2.1.187, Claude Code procedía directamente a la selección de flujo de trabajo.53Después de instalar la GitHub App, Claude Code pregunta si desea continuar con la configuración de GitHub Actions. Elija **Omitir por ahora** para detener solo con la GitHub App instalada. Ejecute `/install-github-app` nuevamente más tarde para terminar los pasos de flujo de trabajo y secreto.

54 54 

55<Note>55<Note>

56 * Cuando instala la GitHub App, le otorga varios permisos. Consulte [Permisos de GitHub App](#github-app-permissions) para el conjunto completo56 * Cuando instala la GitHub App, le otorga varios permisos. Consulte [Permisos de GitHub App](#github-app-permissions) para el conjunto completo


237La entrada `prompt` acepta una invocación de [skill](/docs/es/skills) así como texto sin formato:237La entrada `prompt` acepta una invocación de [skill](/docs/es/skills) así como texto sin formato:

238 238 

239* Para una skill en el directorio `.claude/skills/` de su repositorio, ejecute `actions/checkout` antes del paso `anthropics/claude-code-action` para que los archivos de skill estén disponibles en el ejecutor, luego pase `/skill-name` como `prompt`.239* Para una skill en el directorio `.claude/skills/` de su repositorio, ejecute `actions/checkout` antes del paso `anthropics/claude-code-action` para que los archivos de skill estén disponibles en el ejecutor, luego pase `/skill-name` como `prompt`.

240* Para una skill empaquetada en un [plugin](/docs/es/plugins), instale el plugin con las entradas `plugin_marketplaces` y `plugins`, luego pase el `/plugin-name:skill-name` con espacio de nombres como `prompt`. La entrada `plugins` toma `plugin-name@marketplace-name`, donde el nombre del marketplace viene del manifiesto propio del marketplace en lugar de su URL de repositorio.240* Para una skill empaquetada en un [plugin](/docs/es/plugins/overview), instale el plugin con las entradas `plugin_marketplaces` y `plugins`, luego pase el `/plugin-name:skill-name` con espacio de nombres como `prompt`. La entrada `plugins` toma `plugin-name@marketplace-name`, donde el nombre del marketplace viene del manifiesto propio del marketplace en lugar de su URL de repositorio.

241 241 

242El siguiente flujo de trabajo instala el plugin `code-review` y ejecuta su skill cuando se abre, actualiza, reabre o marca una solicitud de extracción como lista para revisión. Ejecuta el mismo plugin que el flujo de trabajo de revisión de la configuración rápida. Use un flujo de trabajo como este cuando desee controlar el mensaje, el modelo y los disparadores usted mismo. Para revisiones automáticas sin mantener un archivo de flujo de trabajo, consulte [Code Review](/docs/es/code-review). En repositorios públicos, GitHub retiene secretos de ejecuciones desencadenadas por solicitudes de extracción de bifurcación, por lo que la revisión se ejecuta solo en solicitudes de extracción de ramas en el mismo repositorio.242El siguiente flujo de trabajo instala el plugin `code-review` y ejecuta su skill cuando se abre, actualiza, reabre o marca una solicitud de extracción como lista para revisión. Ejecuta el mismo plugin que el flujo de trabajo de revisión de la configuración rápida. Use un flujo de trabajo como este cuando desee controlar el mensaje, el modelo y los disparadores usted mismo. Para revisiones automáticas sin mantener un archivo de flujo de trabajo, consulte [Code Review](/docs/es/code-review). En repositorios públicos, GitHub retiene secretos de ejecuciones desencadenadas por solicitudes de extracción de bifurcación, por lo que la revisión se ejecuta solo en solicitudes de extracción de ramas en el mismo repositorio.

243 243 

Details

68El manifiesto configura la GitHub App con los permisos y eventos de webhook que se muestran a continuación, que en conjunto cubren sesiones web, Revisión de código, Claude Security, mercados de plugins y métricas de contribución:68El manifiesto configura la GitHub App con los permisos y eventos de webhook que se muestran a continuación, que en conjunto cubren sesiones web, Revisión de código, Claude Security, mercados de plugins y métricas de contribución:

69 69 

70| Permiso | Acceso | Usado para |70| Permiso | Acceso | Usado para |

71| :------------------- | :------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |71| :------------------- | :------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

72| Contents | Lectura y escritura | Clonar repositorios e insertar ramas |72| Contents | Lectura y escritura | Clonar repositorios e insertar ramas |

73| Pull requests | Lectura y escritura | Crear PR y publicar comentarios de revisión |73| Pull requests | Lectura y escritura | Crear PR y publicar comentarios de revisión |

74| Issues | Lectura y escritura | Responder a menciones de problemas |74| Issues | Lectura y escritura | Responder a menciones de problemas |

75| Checks | Lectura y escritura | Publicar ejecuciones de verificación de Revisión de código |75| Checks | Lectura y escritura | Publicar ejecuciones de verificación de Revisión de código |

76| Actions | Lectura | Leer estado de CI para corrección automática |76| Actions | Lectura | Leer estado de CI para corrección automática |

77| Commit statuses | Lectura | Leer estado de CI de proveedores que reportan estados de confirmación en lugar de ejecuciones de verificación |77| Commit statuses | Lectura | Leer estado de CI de proveedores que reportan estados de confirmación en lugar de ejecuciones de verificación |

78| Repository hooks | Lectura y escritura | Crear un webhook en un repositorio de mercado de plugins cuando **Sincronizar automáticamente** está activado para un mercado en [Configuración de la organización > Plugins](https://claude.ai/admin-settings/plugins) |78| Repository hooks | Lectura y escritura | Crear un webhook en un repositorio de mercado de plugins cuando **Sincronizar automáticamente** está activado para un mercado en [**Configuración de la organización > Plugins & skills**](https://claude.ai/admin-settings/skills?tab=marketplaces) |

79| Metadata | Lectura | Requerido por GitHub para todas las aplicaciones |79| Metadata | Lectura | Requerido por GitHub para todas las aplicaciones |

80| Organization members | Lectura | Coincidencia de la GitHub App de Claude en github.com, que la usa para verificar el rol de organización de un usuario que se conecta al vincular una instalación |80| Organization members | Lectura | Coincidencia de la GitHub App de Claude en github.com, que la usa para verificar el rol de organización de un usuario que se conecta al vincular una instalación |

81 81 


160 160 

161Claude Code ejecuta git de forma no interactiva y rechaza las conexiones SSH a hosts que no están en el archivo `known_hosts` de la máquina. Una URL de HTTPS con un asistente de credenciales de git evita el requisito de `known_hosts`.161Claude Code ejecuta git de forma no interactiva y rechaza las conexiones SSH a hosts que no están en el archivo `known_hosts` de la máquina. Una URL de HTTPS con un asistente de credenciales de git evita el requisito de `known_hosts`.

162 162 

163Consulte [Crear y distribuir un mercado de plugins](/docs/es/plugin-marketplaces) para la guía completa sobre cómo construir mercados.163Consulte [Crear y distribuir un mercado de plugins](/docs/es/plugins/create-marketplace) para la guía completa sobre cómo construir mercados.

164 164 

165<h3 id="pre-register-ghes-marketplaces-with-managed-settings">165<h3 id="pre-register-ghes-marketplaces-with-managed-settings">

166 Preregistrar mercados de GHES con configuración administrada166 Preregistrar mercados de GHES con configuración administrada


262 262 

263* [Claude Code en la web](/docs/es/claude-code-on-the-web): ejecutar sesiones de Claude Code en infraestructura en la nube263* [Claude Code en la web](/docs/es/claude-code-on-the-web): ejecutar sesiones de Claude Code en infraestructura en la nube

264* [Revisión de código](/docs/es/code-review): revisiones automatizadas de PR264* [Revisión de código](/docs/es/code-review): revisiones automatizadas de PR

265* [Mercados de plugins](/docs/es/plugin-marketplaces): construir y distribuir catálogos de plugins265* [Mercados de plugins](/docs/es/plugins/host-marketplace): construir y distribuir catálogos de plugins

266* [Analytics](/docs/es/analytics): rastrear uso y métricas de contribución266* [Analytics](/docs/es/analytics): rastrear uso y métricas de contribución

267* [Configuración administrada](/docs/es/settings): configuración de política en toda la organización267* [Configuración administrada](/docs/es/settings): configuración de política en toda la organización

268* [Configuración de red](/docs/es/network-config): requisitos de firewall y lista blanca de IP268* [Configuración de red](/docs/es/network-config): requisitos de firewall y lista blanca de IP

glossary.md +2 −2

Details

332 Plugin332 Plugin

333</h3>333</h3>

334 334 

335Un paquete de skills, hooks, subagents y servidores MCP empaquetados como una unidad instalable única. Las skills de plugin se espacian de nombres como `plugin-name:skill-name` para que múltiples plugins coexistan. Distribuya plugins en equipos a través de un [marketplace](/docs/es/plugin-marketplaces).335Un paquete de skills, hooks, subagentes y servidores MCP empaquetados como una unidad instalable única. Las skills de plugin se espacian de nombres como `plugin-name:skill-name` para que múltiples plugins coexistan. Distribuya plugins en equipos a través de un [marketplace](/docs/es/plugins/overview).

336 336 

337Más información: [Plugins](/docs/es/plugins)337Más información: [Plugins](/docs/es/plugins/overview)

338 338 

339<h3 id="project-trust">339<h3 id="project-trust">

340 Project trust340 Project trust

headless.md +1 −1

Details

38 Comenzar más rápido con modo bare38 Comenzar más rápido con modo bare

39</h3>39</h3>

40 40 

41Agregue `--bare` para reducir el tiempo de inicio omitiendo el descubrimiento automático de hooks, skills, comandos personalizados, [subagentes](/docs/es/sub-agents), plugins, servidores MCP, memoria automática y CLAUDE.md. Sin él, `claude -p` carga el mismo [contexto](/docs/es/how-claude-code-works#the-context-window) que una sesión interactiva, incluyendo cualquier cosa configurada en el directorio de trabajo o `~/.claude`.41Agregue `--bare` para reducir el tiempo de inicio omitiendo el descubrimiento automático de hooks, skills, comandos personalizados, [subagentes](/docs/es/sub-agents), plugins instalados, servidores MCP, memoria automática y CLAUDE.md. Sin él, `claude -p` carga el mismo [contexto](/docs/es/how-claude-code-works#the-context-window) que una sesión interactiva, incluyendo cualquier cosa configurada en el directorio de trabajo o `~/.claude`.

42 42 

43El modo bare es útil para CI y scripts donde necesita el mismo resultado en cada máquina. Un hook en el `~/.claude` de un compañero de equipo o un servidor MCP en el `.mcp.json` del proyecto no se ejecutarán, porque el modo bare nunca los lee. Un directorio que nombre con `--add-dir` es una excepción parcial: el modo bare carga skills de su carpeta `.claude/skills/`, pero aún omite sus carpetas `.claude/commands/` y `.claude/agents/`. [Skills de directorios adicionales](/docs/es/skills#skills-from-additional-directories) cubre qué se carga y qué no.43El modo bare es útil para CI y scripts donde necesita el mismo resultado en cada máquina. Un hook en el `~/.claude` de un compañero de equipo o un servidor MCP en el `.mcp.json` del proyecto no se ejecutarán, porque el modo bare nunca los lee. Un directorio que nombre con `--add-dir` es una excepción parcial: el modo bare carga skills de su carpeta `.claude/skills/`, pero aún omite sus carpetas `.claude/commands/` y `.claude/agents/`. [Skills de directorios adicionales](/docs/es/skills#skills-from-additional-directories) cubre qué se carga y qué no.

44 44 

hooks.md +10 −12

Details

259Dónde definas un hook determina su alcance:259Dónde definas un hook determina su alcance:

260 260 

261| Ubicación | Alcance | Compartible |261| Ubicación | Alcance | Compartible |

262| :--------------------------------------- | :---------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------- |262| :------------------------------------------------ | :---------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------- |

263| `~/.claude/settings.json` | Todos tus proyectos | No, local en tu máquina |263| `~/.claude/settings.json` | Todos tus proyectos | No, local en tu máquina |

264| `.claude/settings.json` | Proyecto único | Sí, puede confirmarse en el repositorio |264| `.claude/settings.json` | Proyecto único | Sí, puede confirmarse en el repositorio |

265| `.claude/settings.local.json` | Proyecto único | No, ignorado por git cuando Claude Code guarda una configuración en él |265| `.claude/settings.local.json` | Proyecto único | No, ignorado por git cuando Claude Code guarda una configuración en él |

266| Configuración de política administrada | Toda la organización | Sí, controlado por administrador |266| Configuración de política administrada | Toda la organización | Sí, controlado por administrador |

267| [Plugin](/docs/es/plugins) `hooks/hooks.json` | Cuando el plugin está habilitado | Sí, incluido con el plugin |267| [Plugin](/docs/es/plugins/overview) `hooks/hooks.json` | Cuando el plugin está habilitado | Sí, incluido con el plugin |

268| [Skill](/docs/es/skills) frontmatter | El resto de la sesión una vez que se invoca la skill. Consulta [Hooks en skills y agentes](#hooks-in-skills-and-agents) | Sí, definido en el archivo de skill |268| [Skill](/docs/es/skills) frontmatter | El resto de la sesión una vez que se invoca la skill. Consulta [Hooks en skills y agentes](#hooks-in-skills-and-agents) | Sí, definido en el archivo de skill |

269| [Subagente](/docs/es/sub-agents) frontmatter | Mientras ese subagente se está ejecutando | Sí, definido en el archivo del subagente |269| [Subagente](/docs/es/sub-agents) frontmatter | Mientras ese subagente se está ejecutando | Sí, definido en el archivo del subagente |

270 270 

271Las [sesiones en la nube](/docs/es/claude-code-on-the-web) no leen tu `~/.claude/settings.json` local; los hooks allí provienen del repositorio `.claude/settings.json` en una sesión con un repositorio, de los plugins [sincronizados desde tu cuenta claude.ai](/docs/es/plugins-reference#synced-plugins), y de la configuración administrada por servidor de tu organización. En un [entorno autohospedado](/docs/es/self-hosted-environments-configuration#permissions-and-tool-approval), Claude Code también ejecuta los hooks que el operador sembró desde `~/.claude/` del host del ejecutor, y ejecuta los hooks en el archivo de configuración administrada de la imagen del ejecutor cuando ese archivo está entre las [fuentes administradas que Claude Code aplica](/docs/es/managed-settings#how-claude-code-combines-managed-sources), lo que por defecto significa solo cuando ni la configuración administrada por servidor ni una política de Claude Code entregada por MDM suministran el nivel administrado. Consulta [qué se transfiere de tu configuración](/docs/es/cloud-environments#what-carries-over-from-your-setup) para saber qué archivos llegan a una sesión en la nube.271Las [sesiones en la nube](/docs/es/claude-code-on-the-web) no leen tu `~/.claude/settings.json` local. En un [entorno autohospedado](/docs/es/self-hosted-environments-configuration#permissions-and-tool-approval), Claude Code también ejecuta los hooks que el operador sembró desde `~/.claude/` del host del ejecutor, y ejecuta los hooks en el archivo de configuración administrada de la imagen del ejecutor cuando ese archivo está entre las [fuentes administradas que Claude Code aplica](/docs/es/managed-settings#how-claude-code-combines-managed-sources), lo que por defecto significa solo cuando ni la configuración administrada por servidor ni una política de Claude Code entregada por MDM suministran el nivel administrado. Consulta [qué se transfiere de tu configuración](/docs/es/cloud-environments#what-carries-over-from-your-setup) para saber qué archivos de configuración y plugins, y por lo tanto qué hooks, llegan a una sesión en la nube.

272 272 

273Para obtener detalles sobre la resolución de archivos de configuración, consulta [configuración](/docs/es/settings).273Para obtener detalles sobre la resolución de archivos de configuración, consulta [configuración](/docs/es/settings).

274 274 


278 278 

279* Tus hooks de usuario, proyecto, local y plugin están bloqueados. Los hooks de plugins forzados a habilitarse en la configuración administrada `enabledPlugins` están exentos279* Tus hooks de usuario, proyecto, local y plugin están bloqueados. Los hooks de plugins forzados a habilitarse en la configuración administrada `enabledPlugins` están exentos

280* Claude Code también reduce tu configuración [`statusLine`](/docs/es/statusline), [`fileSuggestion`](/docs/es/settings-reference#filesuggestion) y [`subagentStatusLine`](/docs/es/statusline#subagent-status-lines) a la configuración administrada280* Claude Code también reduce tu configuración [`statusLine`](/docs/es/statusline), [`fileSuggestion`](/docs/es/settings-reference#filesuggestion) y [`subagentStatusLine`](/docs/es/statusline#subagent-status-lines) a la configuración administrada

281* Claude Code también deshabilita plugins con una [fuente `command`](/docs/es/plugin-marketplaces#command-sources), incluidos los plugins forzados a habilitarse en la configuración administrada `enabledPlugins`, a menos que [`disableCommandPluginSources`](/docs/es/settings-reference#disablecommandpluginsources) esté explícitamente establecido en `false`. Las fuentes `command` requieren Claude Code v2.1.229 o posterior281* Claude Code también deshabilita plugins con una [fuente `command`](/docs/es/plugins/marketplace-reference#command-plugin-source), incluidos los plugins forzados a habilitarse en la configuración administrada `enabledPlugins`, a menos que [`disableCommandPluginSources`](/docs/es/settings-reference#disablecommandpluginsources) esté explícitamente establecido en `false`. Las fuentes `command` requieren Claude Code v2.1.229 o posterior

282* Claude Code también bloquea los comandos [`headersHelper`](/docs/es/plugin-marketplaces#authenticate-archive-downloads) del marketplace a menos que [`disableCommandPluginSources`](/docs/es/settings-reference#disablecommandpluginsources) esté explícitamente establecido en `false`, excepto para un marketplace que la propia configuración administrada declare282* Claude Code también bloquea los comandos [`headersHelper`](/docs/es/plugins/host-marketplace#authenticate-archive-downloads) del marketplace a menos que [`disableCommandPluginSources`](/docs/es/settings-reference#disablecommandpluginsources) esté explícitamente establecido en `false`, excepto para un marketplace que la propia configuración administrada declare

283 283 

284Consulta [qué se ejecuta bajo `allowManagedHooksOnly`](/docs/es/settings-reference#what-runs-under-allowmanagedhooksonly).284Consulta [qué se ejecuta bajo `allowManagedHooksOnly`](/docs/es/settings-reference#what-runs-under-allowmanagedhooksonly).

285 285 


304 304 

305Un matcher en la ruta de expresión regular se prueba con `RegExp.prototype.test` de JavaScript, que tiene éxito en una coincidencia en cualquier lugar del valor. `Edit.*` coincide tanto con `Edit` como con `NotebookEdit`; envuelve el patrón en `^` y `$`, como en `^Edit$`, cuando necesites una coincidencia de cadena completa.305Un matcher en la ruta de expresión regular se prueba con `RegExp.prototype.test` de JavaScript, que tiene éxito en una coincidencia en cualquier lugar del valor. `Edit.*` coincide tanto con `Edit` como con `NotebookEdit`; envuelve el patrón en `^` y `$`, como en `^Edit$`, cuando necesites una coincidencia de cadena completa.

306 306 

307Los separadores de coma y la tolerancia de espacios en blanco circundantes requieren Claude Code v2.1.191 o posterior.

308 

309Los guiones en el conjunto de coincidencia exacta requieren Claude Code v2.1.195 o posterior. En versiones anteriores, un nombre con guiones como `code-reviewer` se evalúa como una expresión regular sin anclar, por lo que también se activa para `senior-code-reviewer`; anclalo como `^code-reviewer$` en esas versiones para coincidir solo con ese nombre.307Los guiones en el conjunto de coincidencia exacta requieren Claude Code v2.1.195 o posterior. En versiones anteriores, un nombre con guiones como `code-reviewer` se evalúa como una expresión regular sin anclar, por lo que también se activa para `senior-code-reviewer`; anclalo como `^code-reviewer$` en esas versiones para coincidir solo con ese nombre.

310 308 

311`FileChanged` y `StopFailure` utilizan un conjunto de coincidencia exacta más estrecho de solo letras, dígitos, `_` y `|`. Un guión, espacio o coma en un matcher para esos dos eventos lo mantiene en la ruta de expresión regular, y solo `|` separa alternativas. Todos los demás eventos con soporte de matcher en la tabla que sigue aceptan `|` o `,`.309`FileChanged` y `StopFailure` utilizan un conjunto de coincidencia exacta más estrecho de solo letras, dígitos, `_` y `|`. Un guión, espacio o coma en un matcher para esos dos eventos lo mantiene en la ruta de expresión regular, y solo `|` separa alternativas. Todos los demás eventos con soporte de matcher en la tabla que sigue aceptan `|` o `,`.


516 514 

517Ambas formas soportan los mismos [marcadores de posición de ruta](#reference-scripts-by-path), y ambas los exportan como variables de entorno `CLAUDE_PROJECT_DIR`, `CLAUDE_PLUGIN_ROOT` y `CLAUDE_PLUGIN_DATA` en el proceso generado, por lo que un script puede leer `process.env.CLAUDE_PLUGIN_ROOT` independientemente de cómo se haya lanzado.515Ambas formas soportan los mismos [marcadores de posición de ruta](#reference-scripts-by-path), y ambas los exportan como variables de entorno `CLAUDE_PROJECT_DIR`, `CLAUDE_PLUGIN_ROOT` y `CLAUDE_PLUGIN_DATA` en el proceso generado, por lo que un script puede leer `process.env.CLAUDE_PLUGIN_ROOT` independientemente de cómo se haya lanzado.

518 516 

519Los hooks de plugin además sustituyen valores [`${user_config.*}`](/docs/es/plugins-reference#user-configuration), solo en forma exec: el valor se sustituye en `command` y en cada elemento de `args` como una cadena simple, por lo que ningún shell lo re-analiza.517Los hooks de plugin además sustituyen valores [`${user_config.*}`](/docs/es/plugins/manifest-reference#user-configuration), solo en forma exec: el valor se sustituye en `command` y en cada elemento de `args` como una cadena simple, por lo que ningún shell lo re-analiza.

520 518 

521Un hook de plugin en forma shell cuyo `command` hace referencia a `${user_config.*}` falla con un [error](/docs/es/errors#plugin-command-references-user-config) en lugar de ejecutarse. Para usar un valor de opción de un hook en forma shell, lee la variable de entorno `$CLAUDE_PLUGIN_OPTION_<KEY>`, como `$CLAUDE_PLUGIN_OPTION_WEBHOOK_URL` para una opción `webhook_url`, o establece `args` para cambiar el hook a forma exec. Antes de v2.1.207, los comandos de hook de plugin en forma shell también sustituían `${user_config.*}`.519Un hook de plugin en forma shell cuyo `command` hace referencia a `${user_config.*}` falla con un [error](/docs/es/errors#plugin-command-references-user-config) en lugar de ejecutarse. Para usar un valor de opción de un hook en forma shell, lee la variable de entorno `$CLAUDE_PLUGIN_OPTION_<KEY>`, como `$CLAUDE_PLUGIN_OPTION_WEBHOOK_URL` para una opción `webhook_url`, o establece `args` para cambiar el hook a forma exec. Antes de v2.1.207, los comandos de hook de plugin en forma shell también sustituían `${user_config.*}`.

522 520 


647Utiliza estos marcadores de posición para hacer referencia a scripts de hook relativos a la raíz del proyecto o plugin, independientemente del directorio de trabajo cuando se ejecuta el hook:645Utiliza estos marcadores de posición para hacer referencia a scripts de hook relativos a la raíz del proyecto o plugin, independientemente del directorio de trabajo cuando se ejecuta el hook:

648 646 

649* `${CLAUDE_PROJECT_DIR}`: la raíz del proyecto donde comenzó la sesión. Claude Code también establece esta variable en el entorno de [servidores MCP stdio](/docs/es/mcp#option-3-add-a-local-stdio-server) y servidores LSP de plugin.647* `${CLAUDE_PROJECT_DIR}`: la raíz del proyecto donde comenzó la sesión. Claude Code también establece esta variable en el entorno de [servidores MCP stdio](/docs/es/mcp#option-3-add-a-local-stdio-server) y servidores LSP de plugin.

650* `${CLAUDE_PLUGIN_ROOT}`: el directorio de instalación del plugin, para scripts incluidos con un [plugin](/docs/es/plugins). Consulta [variables de entorno de plugin](/docs/es/plugins-reference#environment-variables) para saber cómo se comporta la ruta entre actualizaciones.648* `${CLAUDE_PLUGIN_ROOT}`: el directorio de instalación del plugin, para scripts incluidos con un [plugin](/docs/es/plugins/overview). Consulta [variables de entorno de plugin](/docs/es/plugins/manifest-reference#environment-variables) para saber cómo se comporta la ruta entre actualizaciones.

651* `${CLAUDE_PLUGIN_DATA}`: el [directorio de datos persistentes](/docs/es/plugins-reference#persistent-data-directory) del plugin, para dependencias y estado que deben sobrevivir a las actualizaciones del plugin.649* `${CLAUDE_PLUGIN_DATA}`: el [directorio de datos persistentes](/docs/es/plugins/components#path-variables-and-persistent-data) del plugin, para dependencias y estado que deben sobrevivir a las actualizaciones del plugin.

652 650 

653<Note>651<Note>

654 **Los worktrees son diferentes.** Si Claude entra en un [worktree](/docs/es/worktrees) durante la sesión, Claude Code mantiene `${CLAUDE_PROJECT_DIR}` donde estaba y pasa la ruta del worktree a tus hooks de una manera diferente:652 **Los worktrees son diferentes.** Si Claude entra en un [worktree](/docs/es/worktrees) durante la sesión, Claude Code mantiene `${CLAUDE_PROJECT_DIR}` donde estaba y pasa la ruta del worktree a tus hooks de una manera diferente:


709 }707 }

710 ```708 ```

711 709 

712 Consulta la [referencia de componentes de plugin](/docs/es/plugins-reference#hooks) para obtener detalles sobre cómo crear hooks de plugin.710 Consulta la [referencia de componentes de plugin](/docs/es/plugins/components#hooks) para obtener detalles sobre cómo crear hooks de plugin.

713 </Tab>711 </Tab>

714</Tabs>712</Tabs>

715 713 


1351 1349 

1352En caso de éxito, `--init-only` no imprime nada en la terminal. Para confirmar que los hooks se ejecutaron, comience con `claude --debug-file <path> --init-only`, reemplazando `<path>` con una ubicación de archivo de registro, y verifique el registro para las entradas de hook Setup y SessionStart.1350En caso de éxito, `--init-only` no imprime nada en la terminal. Para confirmar que los hooks se ejecutaron, comience con `claude --debug-file <path> --init-only`, reemplazando `<path>` con una ubicación de archivo de registro, y verifique el registro para las entradas de hook Setup y SessionStart.

1353 1351 

1354Debido a que Setup no se dispara en cada inicio, un plugin que necesita una dependencia instalada no puede confiar solo en Setup. El patrón práctico es verificar la dependencia en el primer uso e instalar si falta, por ejemplo un hook o skill que prueba `${CLAUDE_PLUGIN_DATA}/node_modules` y ejecuta `npm install` si está ausente. Consulte el [directorio de datos persistentes](/docs/es/plugins-reference#persistent-data-directory) para saber dónde almacenar las dependencias instaladas. Si distribuye su plugin a través de un marketplace, es posible que no necesite este patrón: Claude Code [instala automáticamente las dependencias del paquete Node.js elegibles](/docs/es/plugins-reference#node-js-package-dependencies) cuando almacena en caché el plugin.1352Debido a que Setup no se dispara en cada inicio, un plugin que necesita una dependencia instalada no puede confiar solo en Setup. El patrón práctico es verificar la dependencia en el primer uso e instalar si falta, por ejemplo un hook o skill que prueba `${CLAUDE_PLUGIN_DATA}/node_modules` y ejecuta `npm install` si está ausente. Consulte el [directorio de datos persistentes](/docs/es/plugins/components#path-variables-and-persistent-data) para saber dónde almacenar las dependencias instaladas. Si distribuye su plugin a través de un marketplace, es posible que no necesite este patrón: Claude Code [instala automáticamente las dependencias del paquete Node.js elegibles](/docs/es/plugins/loading#node-js-package-dependencies) cuando almacena en caché el plugin.

1355 1353 

1356<h4 id="setup-input">1354<h4 id="setup-input">

1357 Entrada de Setup1355 Entrada de Setup

hooks-guide.md +4 −4

Details

10 10 

11Para decisiones que requieren criterio en lugar de reglas deterministas, también puedes usar [hooks basados en prompts](#prompt-based-hooks) o [hooks basados en agentes](#agent-based-hooks) que utilizan un modelo Claude para evaluar condiciones.11Para decisiones que requieren criterio en lugar de reglas deterministas, también puedes usar [hooks basados en prompts](#prompt-based-hooks) o [hooks basados en agentes](#agent-based-hooks) que utilizan un modelo Claude para evaluar condiciones.

12 12 

13Para otras formas de extender Claude Code, consulta [skills](/docs/es/skills) para dar a Claude instrucciones adicionales y comandos ejecutables, [subagents](/docs/es/sub-agents) para ejecutar tareas en contextos aislados, y [plugins](/docs/es/plugins) para empaquetar extensiones para compartir entre proyectos.13Para otras formas de extender Claude Code, consulte [skills](/docs/es/skills) para dar a Claude instrucciones adicionales y comandos ejecutables, [subagents](/docs/es/sub-agents) para ejecutar tareas en contextos aislados, y [plugins](/docs/es/plugins/overview) para empaquetar extensiones para compartir entre proyectos.

14 14 

15<Tip>15<Tip>

16 Esta guía cubre casos de uso comunes y cómo comenzar. Para esquemas de eventos completos, formatos de entrada/salida JSON y características avanzadas como hooks asincronos y hooks de herramientas MCP, consulta la [referencia de Hooks](/docs/es/hooks).16 Esta guía cubre casos de uso comunes y cómo comenzar. Para esquemas de eventos completos, formatos de entrada/salida JSON y características avanzadas como hooks asincronos y hooks de herramientas MCP, consulta la [referencia de Hooks](/docs/es/hooks).


710}710}

711```711```

712 712 

713El matcher `"Edit|Write"` se activa solo cuando Claude usa la herramienta `Edit` o `Write`, no cuando usa `Bash`, `Read`, u otra herramienta. En Claude Code v2.1.191 o posterior, una coma separa alternativas de la misma manera, por lo que `"Edit, Write"` es equivalente. Consulta [Matcher patterns](/docs/es/hooks#matcher-patterns) para cómo se evalúan los nombres simples y las expresiones regulares.713El matcher `"Edit|Write"` se activa solo cuando Claude usa la herramienta `Edit` o `Write`, no cuando usa `Bash`, `Read`, u otra herramienta. Una coma separa alternativas de la misma manera, por lo que `"Edit, Write"` es equivalente. Consulta [Matcher patterns](/docs/es/hooks#matcher-patterns) para cómo se evalúan los nombres simples y las expresiones regulares.

714 714 

715<Note>715<Note>

716 Claude también puede crear o modificar archivos ejecutando comandos de shell. Si tu hook debe ver cada cambio de archivo, como para escaneo de cumplimiento o registro de auditoría, añade un hook [`Stop`](/docs/es/hooks#stop) que escanee el árbol de trabajo una vez por turno. Para cobertura por llamada en su lugar, también coincide con `Bash|PowerShell` y haz que tu script liste archivos modificados y sin seguimiento con `git status --porcelain`. La sección [Entrada del hook PowerShell](/docs/es/hooks#powershell) explica por qué coincidir solo con `Bash` no es suficiente. Para ejecutar un hook cuando un archivo específico cambia en disco, sin importar qué lo escribió, usa un hook [FileChanged](/docs/es/hooks#filechanged).716 Claude también puede crear o modificar archivos ejecutando comandos de shell. Si tu hook debe ver cada cambio de archivo, como para escaneo de cumplimiento o registro de auditoría, añade un hook [`Stop`](/docs/es/hooks#stop) que escanee el árbol de trabajo una vez por turno. Para cobertura por llamada en su lugar, también coincide con `Bash|PowerShell` y haz que tu script liste archivos modificados y sin seguimiento con `git status --porcelain`. La sección [Entrada del hook PowerShell](/docs/es/hooks#powershell) explica por qué coincidir solo con `Bash` no es suficiente. Para ejecutar un hook cuando un archivo específico cambia en disco, sin importar qué lo escribió, usa un hook [FileChanged](/docs/es/hooks#filechanged).


861Dónde añadas un hook determina su ámbito:861Dónde añadas un hook determina su ámbito:

862 862 

863| Ubicación | Ámbito | Compartible |863| Ubicación | Ámbito | Compartible |

864| :--------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------- |864| :------------------------------------------------ | :-------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------- |

865| `~/.claude/settings.json` | Todos tus proyectos | No, local a tu máquina |865| `~/.claude/settings.json` | Todos tus proyectos | No, local a tu máquina |

866| `.claude/settings.json` | Proyecto único | Sí, puede ser confirmado en el repositorio |866| `.claude/settings.json` | Proyecto único | Sí, puede ser confirmado en el repositorio |

867| `.claude/settings.local.json` | Proyecto único | No, gitignored cuando Claude Code guarda una configuración en él |867| `.claude/settings.local.json` | Proyecto único | No, gitignored cuando Claude Code guarda una configuración en él |

868| Configuración de política gestionada | Organización completa | Sí, controlado por administrador |868| Configuración de política gestionada | Organización completa | Sí, controlado por administrador |

869| [Plugin](/docs/es/plugins) `hooks/hooks.json` | Cuando el plugin está habilitado | Sí, incluido con el plugin |869| [Plugin](/docs/es/plugins/overview) `hooks/hooks.json` | Cuando el plugin está habilitado | Sí, incluido con el plugin |

870| [Skill](/docs/es/skills) frontmatter | El resto de la sesión una vez que el skill se invoca. Consulta [Hooks in skills and agents](/docs/es/hooks#hooks-in-skills-and-agents) | Sí, definido en el archivo del skill |870| [Skill](/docs/es/skills) frontmatter | El resto de la sesión una vez que el skill se invoca. Consulta [Hooks in skills and agents](/docs/es/hooks#hooks-in-skills-and-agents) | Sí, definido en el archivo del skill |

871| [Subagent](/docs/es/sub-agents) frontmatter | Mientras ese subagente está ejecutándose | Sí, definido en el archivo del subagente |871| [Subagent](/docs/es/sub-agents) frontmatter | Mientras ese subagente está ejecutándose | Sí, definido en el archivo del subagente |

872 872 

Details

45Las herramientas integradas generalmente se dividen en cinco categorías, cada una representando un tipo diferente de agencia.45Las herramientas integradas generalmente se dividen en cinco categorías, cada una representando un tipo diferente de agencia.

46 46 

47| Categoría | Lo que Claude puede hacer |47| Categoría | Lo que Claude puede hacer |

48| -------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |48| -------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

49| **Operaciones de archivo** | Leer archivos, editar código, crear nuevos archivos, renombrar y reorganizar |49| **Operaciones de archivo** | Leer archivos, editar código, crear nuevos archivos, renombrar y reorganizar |

50| **Búsqueda** | Encontrar archivos por patrón, buscar contenido con regex, explorar bases de código |50| **Búsqueda** | Encontrar archivos por patrón, buscar contenido con regex, explorar bases de código |

51| **Ejecución** | Ejecutar comandos de shell, iniciar servidores, ejecutar pruebas, usar git |51| **Ejecución** | Ejecutar comandos de shell, iniciar servidores, ejecutar pruebas, usar git |

52| **Web** | Buscar en la web, obtener documentación, buscar mensajes de error |52| **Web** | Buscar en la web, obtener documentación, buscar mensajes de error |

53| **Inteligencia de código** | Ver errores de tipo y advertencias después de ediciones, saltar a definiciones, encontrar referencias (requiere [plugins de inteligencia de código](/docs/es/discover-plugins#code-intelligence)) |53| **Inteligencia de código** | Ver errores de tipo y advertencias después de ediciones, saltar a definiciones, encontrar referencias (requiere [plugins de inteligencia de código](/docs/es/plugins/code-intelligence)) |

54 54 

55Estas son las capacidades principales. Claude también tiene herramientas para generar subagentes, hacerle preguntas y otras tareas de orquestación. Consulte [Herramientas disponibles para Claude](/docs/es/tools-reference) para la lista completa.55Estas son las capacidades principales. Claude también tiene herramientas para generar subagentes, hacerle preguntas y otras tareas de orquestación. Consulte [Herramientas disponibles para Claude](/docs/es/tools-reference) para la lista completa.

56 56 

Details

32| `Ctrl+V` o `Cmd+V` (iTerm2) o `Alt+V` (Windows y WSL) | Pegar imagen desde el portapapeles | Inserta un chip `[Image #N]` en el cursor para que pueda hacer referencia a él posicionalmente en su símbolo del sistema. En WSL, tanto `Ctrl+V` como `Alt+V` están vinculados; use `Alt+V` si su terminal intercepta `Ctrl+V` |32| `Ctrl+V` o `Cmd+V` (iTerm2) o `Alt+V` (Windows y WSL) | Pegar imagen desde el portapapeles | Inserta un chip `[Image #N]` en el cursor para que pueda hacer referencia a él posicionalmente en su símbolo del sistema. En WSL, tanto `Ctrl+V` como `Alt+V` están vinculados; use `Alt+V` si su terminal intercepta `Ctrl+V` |

33| `Ctrl+B` | Tareas en ejecución en segundo plano | Coloca en segundo plano comandos Bash y agentes. Los usuarios de Tmux presionan dos veces |33| `Ctrl+B` | Tareas en ejecución en segundo plano | Coloca en segundo plano comandos Bash y agentes. Los usuarios de Tmux presionan dos veces |

34| `Ctrl+T` | Alternar lista de tareas de Claude | Mostrar u ocultar [lista de tareas pendientes de Claude](#task-list) en el área de estado. Esta no es la vista de tareas en segundo plano; use [`/tasks`](/docs/es/commands) para ver shells y subagentes en ejecución |34| `Ctrl+T` | Alternar lista de tareas de Claude | Mostrar u ocultar [lista de tareas pendientes de Claude](#task-list) en el área de estado. Esta no es la vista de tareas en segundo plano; use [`/tasks`](/docs/es/commands) para ver shells y subagentes en ejecución |

35| `Ctrl+S` | Guardar o restaurar símbolo del sistema | Con texto en la entrada, lo guarda y borra el símbolo del sistema. Presionado nuevamente en un símbolo del sistema vacío, restaura el texto guardado, la posición del cursor y el contenido pegado |35| `Ctrl+S` | Guardar o restaurar símbolo del sistema | Con texto en la entrada, lo guarda y borra el símbolo del sistema. Presionado nuevamente en un símbolo del sistema vacío, restaura el texto guardado, la posición del cursor, el contenido pegado y el modo de entrada, por lo que un `!` guardado [comando shell](#shell-mode-with-prefix) vuelve en modo shell |

36| `Ctrl+Z` | Suspender Claude Code | Solo Unix. Suspende el proceso a su shell; ejecute `fg` para reanudar |36| `Ctrl+Z` | Suspender Claude Code | Solo Unix. Suspende el proceso a su shell; ejecute `fg` para reanudar |

37| `Flechas izquierda/derecha` | Ciclar a través de pestañas de diálogo | Navegue entre pestañas en diálogos de permisos y menús |37| `Flechas izquierda/derecha` | Ciclar a través de pestañas de diálogo | Navegue entre pestañas en diálogos de permisos y menús |

38| `Tab` | Aceptar una sugerencia de autocompletado o agregar un comentario a una respuesta de permiso | Mientras se muestran sugerencias de autocompletado en la entrada del símbolo del sistema, acepta la sugerencia seleccionada. En la mayoría de los avisos de permiso, con **Sí** o **No** enfocado, abre un campo de comentario en esa opción, y presionarlo nuevamente cierra el campo. Consulte [agregar un comentario cuando responde a un aviso de permiso](/docs/es/permissions#add-a-comment-when-you-answer-a-permission-prompt) |38| `Tab` | Aceptar una sugerencia de autocompletado o agregar un comentario a una respuesta de permiso | Mientras se muestran sugerencias de autocompletado en la entrada del símbolo del sistema, acepta la sugerencia seleccionada. En la mayoría de los avisos de permiso, con **Sí** o **No** enfocado, abre un campo de comentario en esa opción, y presionarlo nuevamente cierra el campo. Consulte [agregar un comentario cuando responde a un aviso de permiso](/docs/es/permissions#add-a-comment-when-you-answer-a-permission-prompt) |

39| `Flechas arriba/abajo` o `Ctrl+P`/`Ctrl+N` | Mover cursor o navegar por el historial de comandos | Cuando la entrada abarca más de una fila visual, ya sea envuelta o multilínea, primero mueve el cursor dentro del símbolo del sistema. Una vez que el cursor está en la primera o última fila visual, presionar nuevamente navega por el historial de comandos. Mientras tiene mensajes en cola, `Arriba` desde la primera fila en su lugar [los retira](#take-back-what-you-queued) |39| `Flechas arriba/abajo` o `Ctrl+P`/`Ctrl+N` | Mover cursor o navegar por el historial de comandos | Cuando la entrada abarca más de una fila visual, ya sea envuelta o multilínea, primero mueve el cursor dentro del símbolo del sistema. Una vez que el cursor está en la primera o última fila visual, presionar nuevamente navega por el historial de comandos. Mientras tiene mensajes en cola, `Arriba` desde la primera fila en su lugar [los retira](#take-back-what-you-queued) |

40| `Esc` | Interrumpir Claude o cerrar un diálogo | Detiene la respuesta actual o la llamada de herramienta a mitad de turno para que pueda redirigir. Claude mantiene el trabajo realizado hasta ahora. Si tiene [mensajes en cola](#queue-messages-while-claude-works), Claude Code los envía a continuación. Cuando un diálogo está abierto, `Esc` cierra el diálogo. En un aviso de permiso, `Esc` rechaza la acción, lo mismo que [**No** sin un comentario](/docs/es/permissions#add-a-comment-when-you-answer-a-permission-prompt) |40| `Esc` | Interrumpir Claude o cerrar un diálogo | Detiene la respuesta actual o la llamada de herramienta a mitad de turno para que pueda redirigir. Claude mantiene el trabajo realizado hasta ahora. Si tiene [mensajes en cola](#queue-messages-while-claude-works), Claude Code los envía a continuación. Cuando un diálogo está abierto, `Esc` cierra el diálogo. En un aviso de permiso, `Esc` rechaza la acción, lo mismo que [**No** sin un comentario](/docs/es/permissions#add-a-comment-when-you-answer-a-permission-prompt) |

41| `Esc` + `Esc` | Borrar borrador de entrada o rebobinar | Cuando la entrada del símbolo del sistema contiene texto, doble `Esc` lo borra y guarda el borrador en el historial para que `Arriba` lo recupere. Cuando la entrada está vacía, doble `Esc` abre el [menú de rebobinado](/docs/es/checkpointing) para restaurar o resumir código y conversación desde un punto anterior |41| `Esc` + `Esc` | Borrar borrador de entrada o rebobinar | Cuando la entrada del símbolo del sistema contiene texto, doble `Esc` lo borra y guarda el borrador en el historial para que `Arriba` lo recupere. Cuando la entrada está vacía, doble `Esc` abre el [menú de rebobinado](/docs/es/checkpointing) para restaurar o resumir código y conversación desde un punto anterior |

42| `Ctrl+Enter` o `Ctrl+X Ctrl+S` | Enviar mensajes en cola ahora | Interrumpe el turno actual para que sus [mensajes en cola](#queue-messages-while-claude-works) y su borrador con ellos se envíen de inmediato en lugar de cuando termina el turno. En [modo shell](#shell-mode-with-prefix), la tecla pone en cola su comando sin interrumpir. En terminales que no reportan teclas extendidas, `Ctrl+Enter` llega como `Enter` simple; `Ctrl+X Ctrl+S` funciona en cualquier terminal. Requiere Claude Code v2.1.275 o posterior |42| `Ctrl+Enter` o `Ctrl+X Ctrl+S` | Enviar mensajes en cola ahora | Envía sus [mensajes en cola](#queue-messages-while-claude-works) y su borrador con ellos de inmediato. [Cuando Claude Code envía lo que puso en cola](#when-claude-code-sends-what-you-queued) cubre lo que sucede con el turno en el que Claude está trabajando. En [modo shell](#shell-mode-with-prefix), la tecla solo pone en cola su comando. En terminales que no reportan teclas extendidas, `Ctrl+Enter` llega como `Enter` simple; `Ctrl+X Ctrl+S` funciona en cualquier terminal. Requiere Claude Code v2.1.275 o posterior |

43| `Shift+Tab`, o `Alt+M` en Windows cuando el tiempo de ejecución de Node o Bun no habilita el modo de entrada VT | Ciclar modos de permiso | Cicle a través de `default` (etiquetado como Manual en el indicador de modo), `acceptEdits`, `plan` y, cuando esté disponible, `bypassPermissions` y luego `auto`. Desde `auto`, la primera pulsación cambia a `default`. Consulte [modos de permiso](/docs/es/permission-modes). En un aviso de permiso de archivo, la misma tecla cierra un [campo de comentario](/docs/es/permissions#add-a-comment-when-you-answer-a-permission-prompt) abierto. Sin campo abierto, selecciona la opción que permite la acción para el resto de la sesión, cuando el aviso ofrece esa opción |43| `Shift+Tab`, o `Alt+M` en Windows cuando el tiempo de ejecución de Node o Bun no habilita el modo de entrada VT | Ciclar modos de permiso | Cicle a través de `default` (etiquetado como Manual en el indicador de modo), `acceptEdits`, `plan` y, cuando esté disponible, `bypassPermissions` y luego `auto`. Desde `auto`, la primera pulsación cambia a `default`. Consulte [modos de permiso](/docs/es/permission-modes). En un aviso de permiso de archivo, la misma tecla cierra un [campo de comentario](/docs/es/permissions#add-a-comment-when-you-answer-a-permission-prompt) abierto. Sin campo abierto, selecciona la opción que permite la acción para el resto de la sesión, cuando el aviso ofrece esa opción |

44| `Option+P` (macOS) o `Alt+P` (Windows/Linux) | Cambiar modelo | Cambie modelos sin borrar su símbolo del sistema |44| `Option+P` (macOS) o `Alt+P` (Windows/Linux) | Cambiar modelo | Cambie modelos sin borrar su símbolo del sistema |

45| `Option+T` (macOS) o `Alt+T` (Windows/Linux) | Alternar pensamiento extendido | Habilitar o deshabilitar el modo de pensamiento extendido. No tiene efecto en Opus 5.5 o los modelos Fable, que siempre utilizan pensamiento extendido. Funciona en macOS sin configurar Option como Meta |45| `Option+T` (macOS) o `Alt+T` (Windows/Linux) | Alternar pensamiento extendido | Habilitar o deshabilitar el modo de pensamiento extendido. No tiene efecto en Opus 5.5 o los modelos Fable, que siempre utilizan pensamiento extendido. Funciona en macOS sin configurar Option como Meta |


136 Comandos136 Comandos

137</h2>137</h2>

138 138 

139Escriba `/` en Claude Code para ver los comandos disponibles, o escriba `/` seguido de cualquier letra para filtrar. El menú `/` enumera comandos integrados, [skills](/docs/es/skills) agrupadas y creadas por usuarios, y comandos contribuidos por [plugins](/docs/es/plugins) y [servidores MCP](/docs/es/mcp#use-mcp-prompts-as-commands). No todos los comandos integrados son visibles para todos los usuarios, ya que algunos dependen de su plataforma o plan, y [algunos comandos disponibles están ocultos en el menú por diseño](/docs/es/commands#how-the-command-menu-matches-what-you-type) y se ejecutan cuando escribe su nombre completo.139Escriba `/` en Claude Code para ver los comandos disponibles, o escriba `/` seguido de cualquier letra para filtrar. El menú `/` enumera comandos integrados, [skills](/docs/es/skills) agrupadas y creadas por usuarios, y comandos contribuidos por [plugins](/docs/es/plugins/overview) y [servidores MCP](/docs/es/mcp#use-mcp-prompts-as-commands). No todos los comandos integrados son visibles para todos los usuarios, ya que algunos dependen de su plataforma o plan, y [algunos comandos disponibles están ocultos en el menú por diseño](/docs/es/commands#how-the-command-menu-matches-what-you-type) y se ejecutan cuando escribe su nombre completo.

140 140 

141En [renderizado a pantalla completa](/docs/es/fullscreen#use-the-mouse), el comando `/` y las listas de sugerencias de archivos `@` también responden al ratón: pasar el cursor destaca una fila y hacer clic la acepta.141En [renderizado a pantalla completa](/docs/es/fullscreen#use-the-mouse), el comando `/` y las listas de sugerencias de archivos `@` también responden al ratón: pasar el cursor destaca una fila y hacer clic la acepta.

142 142 


408* Mensajes: si encola un mensaje mientras Claude está ejecutando llamadas de herramientas, Claude Code lo pasa a Claude tan pronto como esas llamadas de herramientas terminen, dentro del mismo turno. Cuando el turno termina con mensajes aún encolados, salen sin otra pulsación de tecla, en el orden en que los escribió408* Mensajes: si encola un mensaje mientras Claude está ejecutando llamadas de herramientas, Claude Code lo pasa a Claude tan pronto como esas llamadas de herramientas terminen, dentro del mismo turno. Cuando el turno termina con mensajes aún encolados, salen sin otra pulsación de tecla, en el orden en que los escribió

409* Comandos y comandos shell: Claude Code los retiene hasta que el turno termina, luego los ejecuta uno a la vez, manteniendo el orden en que los encoló409* Comandos y comandos shell: Claude Code los retiene hasta que el turno termina, luego los ejecuta uno a la vez, manteniendo el orden en que los encoló

410 410 

411Para enviar lo que encoló sin esperar a que el turno termine, presione `Ctrl+Enter`. Claude Code interrumpe el turno, y sus mensajes encolados salen de inmediato, con su borrador encolado detrás si había escrito uno. En [modo shell](#shell-mode-with-prefix), la tecla encola su comando sin interrumpir el turno. Requiere Claude Code v2.1.275 o posterior.411Para enviar lo que encoló sin esperar, presione `Ctrl+Enter`. Sus mensajes encolados salen de inmediato, con su borrador encolado detrás si había escrito uno. Requiere Claude Code v2.1.275 o posterior.

412 412 

413En terminales que no reportan teclas extendidas, `Ctrl+Enter` llega como `Enter` simple y encola el borrador en su lugar; `Ctrl+X Ctrl+S` funciona en cualquier terminal. Ambas teclas son vinculaciones de la [acción `chat:sendNow`](/docs/es/keybindings#chat-actions).413Si encoló un comando shell `!` antes de sus mensajes, la tecla interrumpe el turno. De lo contrario, lo que sucede con el turno depende de lo que Claude esté haciendo cuando presione la tecla:

414 

415* Ejecutando comandos shell, subagentes u otro trabajo que pueda moverse al [fondo](#background-bash-commands): ese trabajo se mueve al fondo y sigue ejecutándose, y Claude lee sus mensajes en el mismo turno

416* Solo escribiendo una respuesta, o ejecutando algo que no pueda moverse al fondo: Claude Code interrumpe el turno y envía sus mensajes a continuación. Antes de v2.1.281, la tecla interrumpía el turno en ambos casos

417 

418En [modo shell](#shell-mode-with-prefix), la tecla solo encola su comando. En terminales que no reportan teclas extendidas, `Ctrl+Enter` llega como `Enter` simple y encola el borrador en su lugar; `Ctrl+X Ctrl+S` funciona en cualquier terminal. Ambas teclas son vinculaciones de la [acción `chat:sendNow`](/docs/es/keybindings#chat-actions).

414 419 

415Presione `Esc` para interrumpir el turno sin enviar su borrador. Claude Code mantiene lo que encoló y lo envía de inmediato.420Presione `Esc` para interrumpir el turno sin enviar su borrador. Claude Code mantiene lo que encoló y lo envía de inmediato.

416 421 

keybindings.md +18 −2

Details

112Acciones disponibles en el contexto `Chat`:112Acciones disponibles en el contexto `Chat`:

113 113 

114| Acción | Predeterminado | Descripción |114| Acción | Predeterminado | Descripción |

115| :-------------------- | :------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |115| :-------------------- | :------------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

116| `chat:cancel` | Escape | Cancelar entrada actual |116| `chat:cancel` | Escape | Cancelar entrada actual |

117| `chat:clearInput` | Ctrl+L | Forzar un redibujado de pantalla completa, preservando la entrada y la conversación |117| `chat:clearInput` | Ctrl+L | Forzar un redibujado de pantalla completa, preservando la entrada y la conversación |

118| `chat:clearScreen` | Cmd+K | Igual que `chat:clearInput`. Consulte [Limpiar la conversación](/docs/es/fullscreen#clear-the-conversation) para ver cómo se comporta Cmd+K en iTerm2 y Terminal.app |118| `chat:clearScreen` | Cmd+K | Igual que `chat:clearInput`. Consulte [Limpiar la conversación](/docs/es/fullscreen#clear-the-conversation) para ver cómo se comporta Cmd+K en iTerm2 y Terminal.app |


123| `chat:thinkingToggle` | Meta+T | Alternar pensamiento extendido |123| `chat:thinkingToggle` | Meta+T | Alternar pensamiento extendido |

124| `chat:submit` | Enter | Enviar mensaje |124| `chat:submit` | Enter | Enviar mensaje |

125| `chat:queueSubmit` | Ctrl+X Enter | Enviar el mensaje, marcado para esperar su turno: mientras Claude está trabajando, Claude Code [lo pone en cola](/docs/es/interactive-mode#queue-messages-while-claude-works) y nunca interrumpe el turno. A diferencia de `chat:submit`, envía el borrador incluso mientras se resalta una sugerencia de autocompletado. Requiere v2.1.247 o posterior |125| `chat:queueSubmit` | Ctrl+X Enter | Enviar el mensaje, marcado para esperar su turno: mientras Claude está trabajando, Claude Code [lo pone en cola](/docs/es/interactive-mode#queue-messages-while-claude-works) y nunca interrumpe el turno. A diferencia de `chat:submit`, envía el borrador incluso mientras se resalta una sugerencia de autocompletado. Requiere v2.1.247 o posterior |

126| `chat:sendNow` | Ctrl+Enter, Ctrl+X Ctrl+S | Interrumpir el turno en ejecución para que sus [mensajes en cola](/docs/es/interactive-mode#queue-messages-while-claude-works) y su borrador con ellos se envíen de inmediato. Cuando nada se está ejecutando, envía el borrador, y en [modo shell](/docs/es/interactive-mode#shell-mode-with-prefix) pone en cola el comando sin interrumpir. Las terminales que no informan de teclas extendidas entregan `Ctrl+Enter` como `Enter` simple, por lo que `Ctrl+X Ctrl+S` es el atajo que funciona en cualquier terminal. Requiere v2.1.275 o posterior |126| `chat:sendNow` | Ctrl+Enter, Ctrl+X Ctrl+S | Enviar sus [mensajes en cola](/docs/es/interactive-mode#queue-messages-while-claude-works), y su borrador con ellos, de inmediato. [Cuando Claude Code envía lo que puso en cola](/docs/es/interactive-mode#when-claude-code-sends-what-you-queued) cubre lo que sucede con el turno en el que Claude está trabajando. Cuando nada se está ejecutando, la tecla envía el borrador, y en [modo shell](/docs/es/interactive-mode#shell-mode-with-prefix) solo pone en cola el comando. Las terminales que no informan de teclas extendidas entregan `Ctrl+Enter` como `Enter` simple, por lo que `Ctrl+X Ctrl+S` es el atajo que funciona en cualquier terminal. Requiere v2.1.275 o posterior |

127| `chat:newline` | Ctrl+J | Insertar una nueva línea sin enviar |127| `chat:newline` | Ctrl+J | Insertar una nueva línea sin enviar |

128| `chat:undo` | Ctrl+\_, Ctrl+Shift+- | Deshacer última acción |128| `chat:undo` | Ctrl+\_, Ctrl+Shift+- | Deshacer última acción |

129| `chat:externalEditor` | Ctrl+G, Ctrl+X Ctrl+E | Abrir en editor externo. El [envío de entrada de vista de agente](/docs/es/agent-view#keyboard-shortcuts) también sigue los atajos de teclado de una sola pulsación de esta acción |129| `chat:externalEditor` | Ctrl+G, Ctrl+X Ctrl+E | Abrir en editor externo. El [envío de entrada de vista de agente](/docs/es/agent-view#keyboard-shortcuts) también sigue los atajos de teclado de una sola pulsación de esta acción |


184}184}

185```185```

186 186 

187Con estos atajos de teclado, `y` y `n` aún escriben como letras mientras un [campo de texto](#text-fields) tiene el foco.

188 

187Antes de v2.1.280, `y` también estaba vinculado a `confirm:yes` y `n` a `confirm:no` de forma predeterminada. Si creó su `keybindings.json` con `/keybindings` antes de v2.1.280, el archivo enumera ambas vinculaciones y permanecen en vigor hasta que elimine esas dos líneas.189Antes de v2.1.280, `y` también estaba vinculado a `confirm:yes` y `n` a `confirm:no` de forma predeterminada. Si creó su `keybindings.json` con `/keybindings` antes de v2.1.280, el archivo enumera ambas vinculaciones y permanecen en vigor hasta que elimine esas dos líneas.

188 190 

189<h3 id="permission-actions">191<h3 id="permission-actions">


634| Ctrl+A | Prefijo de GNU screen |636| Ctrl+A | Prefijo de GNU screen |

635| Ctrl+Z | Suspensión de proceso Unix (SIGTSTP) |637| Ctrl+Z | Suspensión de proceso Unix (SIGTSTP) |

636 638 

639<h2 id="text-fields">

640 Campos de texto

641</h2>

642 

643Si vincula una letra, dígito o espacio sin modificadores, aún puede escribir ese carácter en un campo de texto dentro de un diálogo o panel. Uno de esos campos es la respuesta `Otro` a una pregunta que Claude le hace. Mientras el campo tiene el enfoque, una tecla imprimible que presiona sin Ctrl, Alt o Cmd va al campo, y Claude Code no la compara con sus atajos de teclado.

644 

645Estas teclas aún ejecutan sus atajos de teclado mientras el campo tiene el enfoque:

646 

647* Teclas que no escriben un carácter, como Enter, Escape, Tab y las teclas de flecha

648* Cualquier tecla presionada con Ctrl, Alt o Cmd

649* El segundo pulsación de una [combinación](#chords) ya en progreso

650 

651En el símbolo del sistema principal, Claude Code compara cada tecla con los contextos activos, como `Chat`, y escribe la tecla solo cuando ningún atajo de teclado la toma.

652 

637<h2 id="vim-mode-interaction">653<h2 id="vim-mode-interaction">

638 Interacción del modo Vim654 Interacción del modo Vim

639</h2>655</h2>

Details

202 Reducir lecturas de archivos con inteligencia de código202 Reducir lecturas de archivos con inteligencia de código

203</h3>203</h3>

204 204 

205En un codebase grande, encontrar dónde se define o usa un símbolo puede costar muchas lecturas de archivos y llamadas grep. Los [plugins de inteligencia de código](/docs/es/discover-plugins#code-intelligence) conectan Claude a un servidor de lenguaje para que pueda saltar a definiciones, encontrar referencias y mostrar errores de tipo directamente en lugar de escanear el árbol.205En un codebase grande, encontrar dónde se define o usa un símbolo puede costar muchas lecturas de archivos y llamadas grep. Los [plugins de inteligencia de código](/docs/es/plugins/code-intelligence) conectan Claude a un servidor de lenguaje para que pueda saltar a definiciones, encontrar referencias y mostrar errores de tipo directamente en lugar de escanear el árbol.

206 206 

207El marketplace oficial tiene plugins para TypeScript, Python, Go, Rust y otros lenguajes comunes. Ejecute el comando a continuación dentro de una sesión Claude Code para instalar el plugin de TypeScript:207El marketplace oficial tiene plugins para TypeScript, Python, Go, Rust y otros lenguajes comunes. Ejecute el comando a continuación dentro de una sesión Claude Code para instalar el plugin de TypeScript:

208 208 


213Si la instalación falla, haga coincidir el mensaje que Claude Code reporta:213Si la instalación falla, haga coincidir el mensaje que Claude Code reporta:

214 214 

215* `Marketplace "claude-plugins-official" not found`: agregue el marketplace con `/plugin marketplace add anthropics/claude-plugins-official`, luego reintente la instalación.215* `Marketplace "claude-plugins-official" not found`: agregue el marketplace con `/plugin marketplace add anthropics/claude-plugins-official`, luego reintente la instalación.

216* El plugin [no se encuentra en el marketplace](/docs/es/discover-plugins#install-plugins): verifique el nombre del plugin.216* El plugin [no se encuentra en el marketplace](/docs/es/plugins/install#install-a-plugin): verifique el nombre del plugin.

217 217 

218Para habilitar un plugin para todos en el repositorio en lugar de instalarlo usted mismo, agréguelo a la configuración de proyecto [`enabledPlugins`](/docs/es/settings-reference#plugin-settings).218Para habilitar un plugin para todos en el repositorio en lugar de instalarlo usted mismo, agréguelo a la configuración de proyecto [`enabledPlugins`](/docs/es/settings-reference#plugin-settings).

219 219 

220Los plugins de inteligencia de código requieren el binario del servidor de lenguaje del lenguaje en la máquina de cada desarrollador. Consulte [qué binario requiere cada lenguaje](/docs/es/discover-plugins#code-intelligence). La instalación desde el marketplace oficial requiere acceso de red a GitHub, donde se aloja el marketplace. En una red restringida, [agregue el marketplace desde un host Git interno o ruta local](/docs/es/discover-plugins#add-from-other-git-hosts) en su lugar.220Los plugins de inteligencia de código requieren el binario del servidor de lenguaje del lenguaje en la máquina de cada desarrollador. Consulte [qué binario requiere cada lenguaje](/docs/es/plugins/code-intelligence). La instalación desde el marketplace oficial requiere acceso de red a GitHub, donde se aloja el marketplace. En una red restringida, [agregue el marketplace desde un host Git interno o ruta local](/docs/es/plugins/install#add-a-marketplace) en su lugar.

221 221 

222Esto se empareja bien con `claudeMdExcludes` y las reglas de negación `Read` anteriores. Esos mantienen contenido irrelevante fuera del contexto, e inteligencia de código mantiene a Claude de leer a través de lo que queda para ubicar una definición.222Esto se empareja bien con `claudeMdExcludes` y las reglas de negación `Read` anteriores. Esos mantienen contenido irrelevante fuera del contexto, e inteligencia de código mantiene a Claude de leer a través de lo que queda para ubicar una definición.

223 223 


395 395 

396Los nombres siempre se cargan, pero [cuando hay muchos, algunas descripciones de skills se acortan completamente](/docs/es/skills#skill-descriptions-are-cut-short), lo que puede eliminar las palabras clave que Claude usa para decidir si un skill se aplica. Mantenga las descripciones cortas y comience con palabras que una solicitud contendría, como "escribir o modificar pruebas en `packages/api/`".396Los nombres siempre se cargan, pero [cuando hay muchos, algunas descripciones de skills se acortan completamente](/docs/es/skills#skill-descriptions-are-cut-short), lo que puede eliminar las palabras clave que Claude usa para decidir si un skill se aplica. Mantenga las descripciones cortas y comience con palabras que una solicitud contendría, como "escribir o modificar pruebas en `packages/api/`".

397 397 

398Para skills que muchos directorios comparten, como convenciones de PR o una lista de verificación de implementación, colóquelos en el `.claude/skills/` de la raíz del repositorio para que se carguen desde cualquier directorio de inicio. Cuando los skills compartidos necesitan su propio historial de versiones o deben funcionar entre repositorios, empaquételos como un [plugin](/docs/es/plugins) en su lugar. Los skills de plugin usan un espacio de nombres `plugin-name:skill-name`, por lo que nunca chocan con skills por directorio. Un equipo de plataforma puede versionarlos y actualizarlos en un lugar.398Para skills que muchos directorios comparten, como convenciones de PR o una lista de verificación de implementación, colóquelos en el `.claude/skills/` de la raíz del repositorio para que se carguen desde cualquier directorio de inicio. Cuando los skills compartidos necesitan su propio historial de versiones o deben funcionar entre repositorios, empaquételos como un [plugin](/docs/es/plugins/overview) en su lugar. Los skills de plugin usan un espacio de nombres `plugin-name:skill-name`, por lo que nunca chocan con skills por directorio. Un equipo de plataforma puede versionarlos y actualizarlos en un lugar.

399 399 

400Para encontrar qué skills no se usan, habilite el exportador de OpenTelemetry [logs](/docs/es/monitoring-usage) y establezca `OTEL_LOG_TOOL_DETAILS=1` para que los nombres de skills se registren textualmente en lugar de redactarse. El evento [`skill_activated`](/docs/es/monitoring-usage#skill-activated-event) registra cada invocación en su atributo `skill.name`, e `invocation_trigger` registra si un comando, Claude o un skill anidado lo invocó, lo que le dice qué consolidar o retirar.400Para encontrar qué skills no se usan, habilite el exportador de OpenTelemetry [logs](/docs/es/monitoring-usage) y establezca `OTEL_LOG_TOOL_DETAILS=1` para que los nombres de skills se registren textualmente en lugar de redactarse. El evento [`skill_activated`](/docs/es/monitoring-usage#skill-activated-event) registra cada invocación en su atributo `skill.name`, e `invocation_trigger` registra si un comando, Claude o un skill anidado lo invocó, lo que le dice qué consolidar o retirar.

401 401 


408Mueva convenciones y contenido de referencia fuera de CLAUDE.md siempre cargado y hacia mecanismos que se cargan bajo demanda:408Mueva convenciones y contenido de referencia fuera de CLAUDE.md siempre cargado y hacia mecanismos que se cargan bajo demanda:

409 409 

410* [Skills](/docs/es/skills): material de referencia que Claude carga solo cuando es relevante para la tarea410* [Skills](/docs/es/skills): material de referencia que Claude carga solo cuando es relevante para la tarea

411* [Plugins](/docs/es/plugins): paquetes versionados de skills, hooks y comandos que un equipo de plataforma posee centralmente411* [Plugins](/docs/es/plugins/overview): paquetes versionados de skills, hooks y comandos que un equipo de plataforma posee centralmente

412* [Servidores MCP](/docs/es/mcp): si su organización ya ejecuta una búsqueda de código o índice RAG sobre el repositorio, expóngalo como una herramienta MCP para que Claude lo consulte en lugar de leer archivos directamente412* [Servidores MCP](/docs/es/mcp): si su organización ya ejecuta una búsqueda de código o índice RAG sobre el repositorio, expóngalo como una herramienta MCP para que Claude lo consulte en lugar de leer archivos directamente

413 413 

414Consulte [configuraciones administradas por servidor o punto final](/docs/es/server-managed-settings#choose-between-server-managed-and-endpoint-managed-settings) para cómo los equipos de plataforma pueden aplicar esto centralmente.414Consulte [configuraciones administradas por servidor o punto final](/docs/es/server-managed-settings#choose-between-server-managed-and-endpoint-managed-settings) para cómo los equipos de plataforma pueden aplicar esto centralmente.

managed-mcp.md +1 −1

Details

41| **Sin restricciones** | Los usuarios agregan cualquier cosa | No implemente ninguna configuración MCP administrada |41| **Sin restricciones** | Los usuarios agregan cualquier cosa | No implemente ninguna configuración MCP administrada |

42 42 

43<Note>43<Note>

44 Claude Code no tiene un registro de servidores MCP integrado que los usuarios puedan examinar e instalar. Para el patrón de catálogo aprobado, comparta la lista aprobada y sus comandos `claude mcp add` en algún lugar donde sus usuarios los encuentren, como un wiki interno, o distribuya los servidores como plugins a través de un [mercado de plugins administrado](/docs/es/plugin-marketplaces#managed-marketplace-restrictions) para que los usuarios puedan examinarlos e instalarlos desde `/plugin`.44 Claude Code no tiene un registro de servidores MCP integrado que los usuarios puedan examinar e instalar. Para el patrón de catálogo aprobado, comparta la lista aprobada y sus comandos `claude mcp add` en algún lugar donde sus usuarios los encuentren, como un wiki interno, o distribuya los servidores como plugins a través de un [mercado de plugins administrado](/docs/es/plugins/org#restrict-what-users-can-install) para que los usuarios puedan examinarlos e instalarlos desde `/plugin`.

45</Note>45</Note>

46 46 

47<h2 id="exclusive-control-with-managed-mcp-json">47<h2 id="exclusive-control-with-managed-mcp-json">

Details

95 * **En un sandbox de VM completa**: cuando su configuración administrada de Claude Desktop establece [`requireCoworkFullVmSandbox`](https://claude.com/docs/third-party/claude-desktop/configuration#requirecoworkfullvmsandbox), Claude Code se ejecuta dentro de una máquina virtual donde la política MDM del dispositivo y el archivo de configuración administrada no están presentes.95 * **En un sandbox de VM completa**: cuando su configuración administrada de Claude Desktop establece [`requireCoworkFullVmSandbox`](https://claude.com/docs/third-party/claude-desktop/configuration#requirecoworkfullvmsandbox), Claude Code se ejecuta dentro de una máquina virtual donde la política MDM del dispositivo y el archivo de configuración administrada no están presentes.

96 * **Sesiones remotas de Cowork**: se ejecutan en máquinas virtuales administradas por Anthropic, donde Claude Code no tiene política de dispositivo para leer.96 * **Sesiones remotas de Cowork**: se ejecutan en máquinas virtuales administradas por Anthropic, donde Claude Code no tiene política de dispositivo para leer.

97 97 

98 Dondequiera que se ejecute la sesión, claude.ai aplica las listas [`strictKnownMarketplaces`](/docs/es/settings-reference#strictknownmarketplaces) y [`blockedMarketplaces`](/docs/es/settings-reference#blockedmarketplaces) de la consola de administración cuando alguien agrega un marketplace desde un repositorio de git en claude.ai o desde **Personalizar** en la pestaña Cowork. [Cómo funcionan las restricciones](/docs/es/plugin-marketplaces#how-restrictions-work) describe esa verificación. La tabla [cobertura de superficie](/docs/es/model-config#surface-coverage) compara Cowork con las otras superficies.98 Dondequiera que se ejecute la sesión, claude.ai aplica las listas [`strictKnownMarketplaces`](/docs/es/settings-reference#strictknownmarketplaces) y [`blockedMarketplaces`](/docs/es/settings-reference#blockedmarketplaces) de la consola de administración cuando alguien agrega un marketplace desde un repositorio de git en claude.ai o desde **Personalizar** en la pestaña Cowork. [Cómo funcionan las restricciones](/docs/es/plugins/org#restrict-what-users-can-install) describe esa verificación. La tabla [cobertura de superficie](/docs/es/model-config#surface-coverage) compara Cowork con las otras superficies.

99* **Sesiones en ejecución**: la mayoría de los cambios llegan a una sesión en ejecución en el cronograma de la [tabla de mecanismo de entrega](#choose-a-delivery-mechanism), sin un reinicio.99* **Sesiones en ejecución**: la mayoría de los cambios llegan a una sesión en ejecución en el cronograma de la [tabla de mecanismo de entrega](#choose-a-delivery-mechanism), sin un reinicio.

100 * Los cambios a [`forceRemoteSettingsRefresh`](/docs/es/settings-reference#forceremotesettingsrefresh), [`requiredMinimumVersion`](/docs/es/settings-reference#requiredminimumversion) y [algunas claves editables por el usuario](/docs/es/settings#when-edits-take-effect) surten efecto en el próximo inicio de sesión.100 * Los cambios a [`forceRemoteSettingsRefresh`](/docs/es/settings-reference#forceremotesettingsrefresh), [`requiredMinimumVersion`](/docs/es/settings-reference#requiredminimumversion) y [algunas claves editables por el usuario](/docs/es/settings#when-edits-take-effect) surten efecto en el próximo inicio de sesión.

101 * Una entrada [`policyHelper`](/docs/es/settings-reference#policyhelper) nueva o cambiada surte efecto en el próximo lanzamiento. Si la configuración administrada por servidor sombrea el asistente en ese lanzamiento, el asistente se ejecuta tan pronto como una obtención informa que esa configuración se ha eliminado.101 * Una entrada [`policyHelper`](/docs/es/settings-reference#policyhelper) nueva o cambiada surte efecto en el próximo lanzamiento. Si la configuración administrada por servidor sombrea el asistente en ese lanzamiento, el asistente se ejecuta tan pronto como una obtención informa que esa configuración se ha eliminado.


256 256 

257 En Claude Code v2.1.273 o posterior, mientras `allowManagedMcpServersOnly` está activo, la lista `allowedMcpServers` de la fuente de administrador de mayor rango que establece una se aplica y bloquea la del principal, como una [clave entre fuentes](#keys-read-from-every-admin-source). La lista del principal se aplica solo cuando ninguna fuente de administrador establece una. La entrada [`managedSourcesBehavior`](/docs/es/settings-reference#managedsourcesbehavior) dice qué fuente suministra cada clave bajo `"merge"`. Antes de v2.1.223, un valor en cualquier fuente de administrador bloqueaba el del principal257 En Claude Code v2.1.273 o posterior, mientras `allowManagedMcpServersOnly` está activo, la lista `allowedMcpServers` de la fuente de administrador de mayor rango que establece una se aplica y bloquea la del principal, como una [clave entre fuentes](#keys-read-from-every-admin-source). La lista del principal se aplica solo cuando ninguna fuente de administrador establece una. La entrada [`managedSourcesBehavior`](/docs/es/settings-reference#managedsourcesbehavior) dice qué fuente suministra cada clave bajo `"merge"`. Antes de v2.1.223, un valor en cualquier fuente de administrador bloqueaba el del principal

258* Para `availableModels`, Claude Code aplica el valor en la configuración administrada que aplica y bloquea una lista suministrada por el principal258* Para `availableModels`, Claude Code aplica el valor en la configuración administrada que aplica y bloquea una lista suministrada por el principal

259* Para `strictKnownMarketplaces`, Claude Code asimismo aplica la lista en la configuración administrada que aplica y bloquea una suministrada por el principal. La lista del principal se aplica solo cuando ninguna fuente administrada aplicada establece una. Requiere Claude Code v2.1.282 o posterior

260* Un `blockedMarketplaces` suministrado por el principal se aplica además de cualquier lista de denegación que una fuente administrada establece. Requiere Claude Code v2.1.282 o posterior

259 261 

260<h4 id="keep-cowork-folder-access-when-only-managed-rules-apply">262<h4 id="keep-cowork-folder-access-when-only-managed-rules-apply">

261 Mantener el acceso a la carpeta Cowork cuando solo se aplican reglas administradas263 Mantener el acceso a la carpeta Cowork cuando solo se aplican reglas administradas


361Algunas claves de aplicación no se descartan cuando son inválidas. Claude Code aplica una reserva más restrictiva hasta que se corrija el valor; la tabla muestra qué aplica para cada clave:363Algunas claves de aplicación no se descartan cuando son inválidas. Claude Code aplica una reserva más restrictiva hasta que se corrija el valor; la tabla muestra qué aplica para cada clave:

362 364 

363| Campo | Comportamiento cuando está presente pero es inválido |365| Campo | Comportamiento cuando está presente pero es inválido |

364| :---------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |366| :---------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

365| `allowedMcpServers` | Se aplica como una lista de permitidos vacía hasta que se corrija el valor, por lo que ningún servidor MCP que los usuarios agreguen se admite. Los servidores que su organización entrega a través de [`managedMcpServers`](/docs/es/settings-reference#managedmcpservers) aún se cargan, y los servidores `managed-mcp.json` se cargan según [Cómo se evalúa un servidor](/docs/es/managed-mcp#how-a-server-is-evaluated). Una entrada individual inválida se elimina y el subconjunto válido se aplica. |367| `allowedMcpServers` | Se aplica como una lista de permitidos vacía hasta que se corrija el valor, por lo que ningún servidor MCP que los usuarios agreguen se admite. Los servidores que su organización entrega a través de [`managedMcpServers`](/docs/es/settings-reference#managedmcpservers) aún se cargan, y los servidores `managed-mcp.json` se cargan según [Cómo se evalúa un servidor](/docs/es/managed-mcp#how-a-server-is-evaluated). Una entrada individual inválida se elimina y el subconjunto válido se aplica. |

366| `allowedHttpHookUrls` | Claude Code aplica una [lista de permitidos](/docs/es/settings-reference#allowedhttphookurls) administrada vacía hasta que corrija el valor, por lo que un hook HTTP se ejecuta solo si otro archivo de configuración enumera su URL. Si solo una entrada individual es inválida, Claude Code elimina esa entrada y aplica el resto. |368| `allowedHttpHookUrls` | Claude Code aplica una [lista de permitidos](/docs/es/settings-reference#allowedhttphookurls) administrada vacía hasta que corrija el valor, por lo que un hook HTTP se ejecuta solo si otro archivo de configuración enumera su URL. Si solo una entrada individual es inválida, Claude Code elimina esa entrada y aplica el resto. |

367| `httpHookAllowedEnvVars` | Claude Code aplica una [lista de permitidos](/docs/es/settings-reference#httphookallowedenvvars) administrada vacía hasta que corrija el valor, por lo que una variable de encabezado se interpola solo si otro archivo de configuración la nombra. Si solo una entrada individual es inválida, Claude Code elimina esa entrada y aplica el resto. |369| `httpHookAllowedEnvVars` | Claude Code aplica una [lista de permitidos](/docs/es/settings-reference#httphookallowedenvvars) administrada vacía hasta que corrija el valor, por lo que una variable de encabezado se interpola solo si otro archivo de configuración la nombra. Si solo una entrada individual es inválida, Claude Code elimina esa entrada y aplica el resto. |

368| `allowedChannelPlugins` | Claude Code aplica una lista de permitidos vacía hasta que corrija el valor, por lo que ningún plugin de canal pasado a `--channels` se admite. Si solo una entrada individual es inválida, elimina esa entrada y aplica el resto. |370| `allowedChannelPlugins` | Claude Code aplica una lista de permitidos vacía hasta que corrija el valor, por lo que ningún plugin de canal pasado a `--channels` se admite. Si solo una entrada individual es inválida, elimina esa entrada y aplica el resto. |

369| `strictKnownMarketplaces` | Se aplica como una lista de permitidos vacía hasta que se corrija el valor, por lo que ninguna [fuente de marketplace](/docs/es/plugin-marketplaces#managed-marketplace-restrictions) se admite. Una entrada individual que es inválida o no se puede aplicar, como una expresión regular `hostPattern` que no se compila, se elimina y el subconjunto válido se aplica. |371| `strictKnownMarketplaces` | Se aplica como una lista de permitidos vacía hasta que se corrija el valor, por lo que ninguna [fuente de marketplace](/docs/es/plugins/org#restrict-what-users-can-install) se admite. Una entrada individual que es inválida o no se puede aplicar, como una expresión regular `hostPattern` que no se compila, se elimina y el subconjunto válido se aplica. |

370| `allowManagedHooksOnly` | Se trata como `true` hasta que se corrija: se aplican las [restricciones de hook](/docs/es/settings-reference#allowmanagedhooksonly) y, a menos que `disableCommandPluginSources` sea explícitamente `false`, los plugins de origen de comando se desactivan. |372| `allowManagedHooksOnly` | Se trata como `true` hasta que se corrija: se aplican las [restricciones de hook](/docs/es/settings-reference#allowmanagedhooksonly) y, a menos que `disableCommandPluginSources` sea explícitamente `false`, los plugins de origen de comando se desactivan. |

371| `allowManagedMcpServersOnly` | Se trata como `true`. |373| `allowManagedMcpServersOnly` | Se trata como `true`. |

372| `disableCommandPluginSources` | Se trata como `true`, por lo que los plugins de origen de comando permanecen desactivados hasta que se corrija el valor. |374| `disableCommandPluginSources` | Se trata como `true`, por lo que los plugins de origen de comando permanecen desactivados hasta que se corrija el valor. |


378| `gatewayInternalNetworks` | Cuando el valor inválido proviene de la fuente administrada más alta en la máquina, `/login` rechaza cada nuevo inicio de sesión de [puerta de enlace en la nube](/docs/es/claude-apps-gateway#allow-a-gateway-on-public-address-space-you-own) en esa máquina hasta que se corrija el valor. |380| `gatewayInternalNetworks` | Cuando el valor inválido proviene de la fuente administrada más alta en la máquina, `/login` rechaza cada nuevo inicio de sesión de [puerta de enlace en la nube](/docs/es/claude-apps-gateway#allow-a-gateway-on-public-address-space-you-own) en esa máquina hasta que se corrija el valor. |

379| `crossSessionInbound` | Se trata como `refuse`, el valor más restrictivo, por lo que los [mensajes entre sesiones](/docs/es/cross-session-messaging#control-inbound-messages) entrantes se rechazan hasta que se corrija el valor. El desarrollador ve [una advertencia](/docs/es/errors#crosssessioninbound-must-be-one-of-accept-hold-refuse). |381| `crossSessionInbound` | Se trata como `refuse`, el valor más restrictivo, por lo que los [mensajes entre sesiones](/docs/es/cross-session-messaging#control-inbound-messages) entrantes se rechazan hasta que se corrija el valor. El desarrollador ve [una advertencia](/docs/es/errors#crosssessioninbound-must-be-one-of-accept-hold-refuse). |

380| `deniedMcpServers` | Una entrada individual inválida se elimina y el subconjunto válido se aplica. Un valor completamente inválido se descarta con una advertencia, ya que negar cada servidor bloquearía servidores que la política nunca nombró. |382| `deniedMcpServers` | Una entrada individual inválida se elimina y el subconjunto válido se aplica. Un valor completamente inválido se descarta con una advertencia, ya que negar cada servidor bloquearía servidores que la política nunca nombró. |

381| `blockedMarketplaces` | Una entrada individual inválida se elimina y el subconjunto válido se aplica. Una entrada que se analiza pero nunca puede coincidir, como una expresión regular `hostPattern` que no se compila, se mantiene con una advertencia. No bloquea nada hasta que se corrija, pero las [restricciones de marketplace](/docs/es/plugin-marketplaces#managed-marketplace-restrictions) permanecen activas. Un valor completamente inválido se descarta con una advertencia, ya que bloquear cada marketplace bloquearía fuentes que la política nunca nombró. |383| `blockedMarketplaces` | Una entrada individual inválida se elimina y el subconjunto válido se aplica. Una entrada que se analiza pero nunca puede coincidir, como una expresión regular `hostPattern` que no se compila, se mantiene con una advertencia. No bloquea nada hasta que se corrija, pero las [restricciones de marketplace](/docs/es/plugins/org#restrict-what-users-can-install) permanecen activas. Un valor completamente inválido se descarta con una advertencia, ya que bloquear cada marketplace bloquearía fuentes que la política nunca nombró. |

382| `sandbox.credentials` | Una entrada inválida recuperable se degrada a `mode: "deny"` con una advertencia; una irrecuperable se elimina; las entradas válidas permanecen aplicadas. Consulte [entradas de credenciales inválidas](/docs/es/settings-reference#invalid-credential-entries-in-managed-settings) |384| `sandbox.credentials` | Una entrada inválida recuperable se degrada a `mode: "deny"` con una advertencia; una irrecuperable se elimina; las entradas válidas permanecen aplicadas. Consulte [entradas de credenciales inválidas](/docs/es/settings-reference#invalid-credential-entries-in-managed-settings) |

383 385 

384`allowedHttpHookUrls` y `httpHookAllowedEnvVars` se fusionan en archivos de configuración, por lo que las entradas en su configuración de usuario, proyecto o local aún se aplican mientras la lista administrada está vacía. Las reservas para esas dos claves y para `allowedChannelPlugins` requieren Claude Code v2.1.267 o posterior; las versiones anteriores descartan la clave completa cuando su valor o cualquier entrada es inválida. Las reservas para `strictKnownMarketplaces`, `blockedMarketplaces` y `disableSideloadFlags` requieren Claude Code v2.1.277 o posterior; las versiones anteriores descartan la clave completa cuando su valor o cualquier entrada es inválida.386`allowedHttpHookUrls` y `httpHookAllowedEnvVars` se fusionan en archivos de configuración, por lo que las entradas en su configuración de usuario, proyecto o local aún se aplican mientras la lista administrada está vacía.

387 

388Las reservas para esas dos claves y para `allowedChannelPlugins` requieren Claude Code v2.1.267 o posterior; las versiones anteriores descartan la clave completa cuando su valor o cualquier entrada es inválida. Las reservas para `strictKnownMarketplaces`, `blockedMarketplaces` y `disableSideloadFlags` requieren Claude Code v2.1.277 o posterior; las versiones anteriores descartan la clave completa cuando su valor o cualquier entrada es inválida.

385 389 

386`requiredMinimumVersion` y `requiredMaximumVersion` fallan abiertos por diseño: un valor inválido se descarta en lugar de aplicarse.390`requiredMinimumVersion` y `requiredMaximumVersion` fallan abiertos por diseño: un valor inválido se descarta en lugar de aplicarse.

387 391 


400La tabla cubre los controles de permisos, plugins y entrega. Para cualquier clave no enumerada aquí, la columna Scope de la [referencia de configuración](/docs/es/settings-reference#all-settings) dice si es solo administrada; las claves solo administradas restantes allí incluyen la URL de inicio de sesión de puerta de enlace, versión, navegador, simulador móvil, host SSH, sesión local de Desktop, ruta binaria de sandbox, precios de modelo y controles CLAUDE.md.404La tabla cubre los controles de permisos, plugins y entrega. Para cualquier clave no enumerada aquí, la columna Scope de la [referencia de configuración](/docs/es/settings-reference#all-settings) dice si es solo administrada; las claves solo administradas restantes allí incluyen la URL de inicio de sesión de puerta de enlace, versión, navegador, simulador móvil, host SSH, sesión local de Desktop, ruta binaria de sandbox, precios de modelo y controles CLAUDE.md.

401 405 

402| Configuración | Descripción |406| Configuración | Descripción |

403| :-------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |407| :-------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

404| [`allowAllClaudeAiMcps`](/docs/es/settings-reference#allowallclaudeaimcps) | Cargue los conectores de claude.ai que Claude Code obtiene a sí mismo junto con un `managed-mcp.json` implementado en lugar de suprimirlos |408| [`allowAllClaudeAiMcps`](/docs/es/settings-reference#allowallclaudeaimcps) | Cargue los conectores de claude.ai que Claude Code obtiene a sí mismo junto con un `managed-mcp.json` implementado en lugar de suprimirlos |

405| [`allowedChannelPlugins`](/docs/es/settings-reference#allowedchannelplugins) | Lista de permitidos de plugins de canal que pueden enviar mensajes. Reemplaza la lista de permitidos predeterminada de Anthropic cuando se establece. Requiere `channelsEnabled: true`. Consulte [Restringir qué plugins de canal pueden ejecutarse](/docs/es/channels#restrict-which-channel-plugins-can-run) |409| [`allowedChannelPlugins`](/docs/es/settings-reference#allowedchannelplugins) | Lista de permitidos de plugins de canal que pueden enviar mensajes. Reemplaza la lista de permitidos predeterminada de Anthropic cuando se establece. Requiere `channelsEnabled: true`. Consulte [Restringir qué plugins de canal pueden ejecutarse](/docs/es/channels#restrict-which-channel-plugins-can-run) |

406| [`allowManagedHooksOnly`](/docs/es/settings-reference#allowmanagedhooksonly) | Cuando es `true`, restringe qué hooks se ejecutan; consulte [qué se ejecuta bajo `allowManagedHooksOnly`](/docs/es/settings-reference#what-runs-under-allowmanagedhooksonly) para la lista de efectos completa |410| [`allowManagedHooksOnly`](/docs/es/settings-reference#allowmanagedhooksonly) | Cuando es `true`, restringe qué hooks se ejecutan; consulte [qué se ejecuta bajo `allowManagedHooksOnly`](/docs/es/settings-reference#what-runs-under-allowmanagedhooksonly) para la lista de efectos completa |

407| [`allowManagedMcpServersOnly`](/docs/es/settings-reference#allowmanagedmcpserversonly) | Cuando es `true`, solo se respetan `allowedMcpServers` de la configuración administrada. `deniedMcpServers` aún se fusiona de todas las fuentes. Consulte [Claves leídas de cada fuente de administrador](#keys-read-from-every-admin-source) para saber qué fuentes administradas pueden establecerla, y [Configuración MCP administrada](/docs/es/managed-mcp) |411| [`allowManagedMcpServersOnly`](/docs/es/settings-reference#allowmanagedmcpserversonly) | Cuando es `true`, solo se respetan `allowedMcpServers` de la configuración administrada. `deniedMcpServers` aún se fusiona de todas las fuentes. Consulte [Claves leídas de cada fuente de administrador](#keys-read-from-every-admin-source) para saber qué fuentes administradas pueden establecerla, y [Configuración MCP administrada](/docs/es/managed-mcp) |

408| [`allowManagedPermissionRulesOnly`](/docs/es/settings-reference#allowmanagedpermissionrulesonly) | Hace que la configuración administrada sea la única fuente de configuración de reglas de permisos. La entrada enumera cada fuente que ignora |412| [`allowManagedPermissionRulesOnly`](/docs/es/settings-reference#allowmanagedpermissionrulesonly) | Hace que la configuración administrada sea la única fuente de configuración de reglas de permisos. La entrada enumera cada fuente que ignora |

409| [`blockedMarketplaces`](/docs/es/settings-reference#blockedmarketplaces) | Lista de bloqueo de fuentes de mercado. Las fuentes bloqueadas se verifican antes de descargar, por lo que nunca tocan el sistema de archivos. Consulte [restricciones de mercado administradas](/docs/es/plugin-marketplaces#managed-marketplace-restrictions) |413| [`blockedMarketplaces`](/docs/es/settings-reference#blockedmarketplaces) | Lista de bloqueo de fuentes de mercado. Las fuentes bloqueadas se verifican antes de descargar, por lo que nunca tocan el sistema de archivos. Consulte [restricciones de mercado administradas](/docs/es/plugins/org#restrict-what-users-can-install) |

410| [`channelsEnabled`](/docs/es/settings-reference#channelsenabled) | Permitir [canales](/docs/es/channels) para la organización. Consulte [controles empresariales](/docs/es/channels#enterprise-controls) para el predeterminado en cada plan |414| [`channelsEnabled`](/docs/es/settings-reference#channelsenabled) | Permitir [canales](/docs/es/channels) para la organización. Consulte [controles empresariales](/docs/es/channels#enterprise-controls) para el predeterminado en cada plan |

411| [`disableCommandPluginSources`](/docs/es/settings-reference#disablecommandpluginsources) | Cuando es `true`, bloquea completamente las [fuentes de plugins de `command`](/docs/es/plugin-marketplaces#command-sources), por lo que el comando declarado por el mercado nunca se ejecuta. También bloquea los comandos [`headersHelper`](/docs/es/plugin-marketplaces#authenticate-archive-downloads) del mercado, excepto para un mercado que la configuración administrada declara a sí misma. Cuando no se establece, sigue `allowManagedHooksOnly`. Requiere Claude Code v2.1.229 o posterior, y el bloque `headersHelper` requiere v2.1.238 o posterior |415| [`disableCommandPluginSources`](/docs/es/settings-reference#disablecommandpluginsources) | Cuando es `true`, bloquea completamente las [fuentes de plugins de `command`](/docs/es/plugins/marketplace-reference#command-plugin-source), por lo que el comando declarado por el mercado nunca se ejecuta. También bloquea los comandos [`headersHelper`](/docs/es/plugins/host-marketplace#authenticate-archive-downloads) del mercado, excepto para un mercado que la configuración administrada declara a sí misma. Cuando no se establece, sigue `allowManagedHooksOnly`. Requiere Claude Code v2.1.229 o posterior, y el bloque `headersHelper` requiere v2.1.238 o posterior |

412| [`disableSideloadFlags`](/docs/es/settings-reference#disablesideloadflags) | Rechace los indicadores `--plugin-dir`, `--plugin-url`, `--agents` y `--mcp-config` al inicio. En sesiones en la nube, Claude Code descarta los servidores MCP que el servidor entregó a través de `--mcp-config`, que no sean entradas `type: "sdk"` en proceso, e inicia la sesión. Requiere Claude Code v2.1.193 o posterior |416| [`disableSideloadFlags`](/docs/es/settings-reference#disablesideloadflags) | Rechace los indicadores `--plugin-dir`, `--plugin-url`, `--agents` y `--mcp-config` al inicio. En sesiones en la nube, Claude Code descarta los servidores MCP que el servidor entregó a través de `--mcp-config`, que no sean entradas `type: "sdk"` en proceso, e inicia la sesión. Requiere Claude Code v2.1.193 o posterior |

413| [`forceRemoteSettingsRefresh`](/docs/es/settings-reference#forceremotesettingsrefresh) | Cuando es `true`, bloquea el inicio de CLI hasta que la configuración administrada remota se obtenga recientemente y sale si la obtención falla. Consulte [aplicación de inicio cerrado](/docs/es/server-managed-settings#enforce-fail-closed-startup) |417| [`forceRemoteSettingsRefresh`](/docs/es/settings-reference#forceremotesettingsrefresh) | Cuando es `true`, bloquea el inicio de CLI hasta que la configuración administrada remota se obtenga recientemente y sale si la obtención falla. Consulte [aplicación de inicio cerrado](/docs/es/server-managed-settings#enforce-fail-closed-startup) |

414| [`managedMcpServers`](/docs/es/settings-reference#managedmcpservers) | Servidores MCP remotos proporcionados a cada usuario junto con los suyos propios. Proporciona servidores en lugar de bloquear nada. Consulte [Proporcionar servidores a través de configuración administrada](/docs/es/managed-mcp#provide-servers-through-managed-settings). Requiere Claude Code v2.1.259 o posterior |418| [`managedMcpServers`](/docs/es/settings-reference#managedmcpservers) | Servidores MCP remotos proporcionados a cada usuario junto con los suyos propios. Proporciona servidores en lugar de bloquear nada. Consulte [Proporcionar servidores a través de configuración administrada](/docs/es/managed-mcp#provide-servers-through-managed-settings). Requiere Claude Code v2.1.259 o posterior |


419| [`policyHelper`](/docs/es/settings-reference#policyhelper) | Ejecutable que calcula la configuración administrada al inicio; consulte [Calcular configuración administrada con un auxiliar de política](/docs/es/settings-reference#policyhelper) |423| [`policyHelper`](/docs/es/settings-reference#policyhelper) | Ejecutable que calcula la configuración administrada al inicio; consulte [Calcular configuración administrada con un auxiliar de política](/docs/es/settings-reference#policyhelper) |

420| [`sandbox.filesystem.allowManagedReadPathsOnly`](/docs/es/settings-reference#sandbox-filesystem-allowmanagedreadpathsonly) | Cuando es `true`, solo se respetan las rutas `filesystem.allowRead` de la configuración administrada. `denyRead` aún se fusiona de todas las fuentes |424| [`sandbox.filesystem.allowManagedReadPathsOnly`](/docs/es/settings-reference#sandbox-filesystem-allowmanagedreadpathsonly) | Cuando es `true`, solo se respetan las rutas `filesystem.allowRead` de la configuración administrada. `denyRead` aún se fusiona de todas las fuentes |

421| [`sandbox.network.allowManagedDomainsOnly`](/docs/es/settings-reference#sandbox-network-allowmanageddomainsonly) | Honre solo los dominios `allowedDomains` administrados y las reglas de permitidos `WebFetch(domain:...)`; bloquee otros dominios sin preguntar |425| [`sandbox.network.allowManagedDomainsOnly`](/docs/es/settings-reference#sandbox-network-allowmanageddomainsonly) | Honre solo los dominios `allowedDomains` administrados y las reglas de permitidos `WebFetch(domain:...)`; bloquee otros dominios sin preguntar |

422| [`strictKnownMarketplaces`](/docs/es/settings-reference#strictknownmarketplaces) | Controla qué fuentes de mercado de plugins pueden agregar los usuarios e instalar plugins. Consulte [restricciones de mercado administradas](/docs/es/plugin-marketplaces#managed-marketplace-restrictions) |426| [`strictKnownMarketplaces`](/docs/es/settings-reference#strictknownmarketplaces) | Controla qué fuentes de mercado de plugins pueden agregar los usuarios e instalar plugins. Consulte [restricciones de mercado administradas](/docs/es/plugins/org#restrict-what-users-can-install) |

423| [`strictPluginOnlyCustomization`](/docs/es/settings-reference#strictpluginonlycustomization) | Bloquee skills, agentes, hooks y servidores MCP de fuentes de usuario y proyecto; `true` bloquea los cuatro, una matriz nombra cuál |427| [`strictPluginOnlyCustomization`](/docs/es/settings-reference#strictpluginonlycustomization) | Bloquee skills, agentes, hooks y servidores MCP de fuentes de usuario y proyecto; `true` bloquea los cuatro, una matriz nombra cuál |

424| [`wslInheritsWindowsSettings`](/docs/es/settings-reference#wslinheritswindowssettings) | Cuando se establece en el registro HKLM o un archivo bajo `C:\Program Files\ClaudeCode`, haga que WSL lea la cadena de política de Windows, y lea `/etc/claude-code` solo cuando ningún archivo de configuración administrada o complemento bajo ese directorio entregue una [clave de política](#how-claude-code-combines-managed-sources); la entrada da el orden |428| [`wslInheritsWindowsSettings`](/docs/es/settings-reference#wslinheritswindowssettings) | Cuando se establece en el registro HKLM o un archivo bajo `C:\Program Files\ClaudeCode`, haga que WSL lea la cadena de política de Windows, y lea `/etc/claude-code` solo cuando ningún archivo de configuración administrada o complemento bajo ese directorio entregue una [clave de política](#how-claude-code-combines-managed-sources); la entrada da el orden |

425 429 

mcp.md +16 −16

Details

50 Si la instalación falla, haga coincidir el mensaje que Claude Code reporta:50 Si la instalación falla, haga coincidir el mensaje que Claude Code reporta:

51 51 

52 * `Marketplace "claude-plugins-official" not found`: agregue el marketplace con `/plugin marketplace add anthropics/claude-plugins-official`, luego reintente la instalación.52 * `Marketplace "claude-plugins-official" not found`: agregue el marketplace con `/plugin marketplace add anthropics/claude-plugins-official`, luego reintente la instalación.

53 * El plugin [no se encuentra en el marketplace](/docs/es/discover-plugins#install-plugins): verifique el nombre del plugin.53 * El plugin [no se encuentra en el marketplace](/docs/es/plugins/install#install-a-plugin): verifique el nombre del plugin.

54 54 

55 Si el resumen de instalación reporta `Run /reload-plugins to activate.`, Claude Code ejecuta ese recarga para usted. Si la recarga advierte que su próximo mensaje volvería a leer la conversación, ejecute `/reload-plugins --force`.55 Si el resumen de instalación reporta `Run /reload-plugins to activate.`, Claude Code ejecuta ese recarga para usted. Si la recarga advierte que su próximo mensaje volvería a leer la conversación, ejecute `/reload-plugins --force`.

56 </Step>56 </Step>


293 Detalle del estado del servidor293 Detalle del estado del servidor

294</h4>294</h4>

295 295 

296En `/mcp`, incluido el menú de un servidor allí, y en el administrador [`/plugin`](/docs/es/plugins), un servidor HTTP o SSE remoto que ha utilizado antes puede mostrar un estado `cached` como `cached 2h ago · connects on first use · 5 tools`. Claude Code cargó la lista de herramientas del servidor desde su caché de descubrimiento, guardado en una sesión anterior, en lugar de conectarse al inicio, y Claude Code conecta el servidor la primera vez que Claude llama a una de las herramientas del servidor. Las herramientas están disponibles desde su primer mensaje, por lo que no necesita hacer nada. El caché de descubrimiento y su estado `cached` requieren Claude Code v2.1.221 o posterior.296En `/mcp`, incluido el menú de un servidor allí, y en el administrador [`/plugin`](/docs/es/plugins/install), un servidor HTTP o SSE remoto que ha utilizado antes puede mostrar un estado `cached` como `cached 2h ago · connects on first use · 5 tools`. Claude Code cargó la lista de herramientas del servidor desde su caché de descubrimiento, guardado en una sesión anterior, en lugar de conectarse al inicio, y Claude Code conecta el servidor la primera vez que Claude llama a una de las herramientas del servidor. Las herramientas están disponibles desde su primer mensaje, por lo que no necesita hacer nada. El caché de descubrimiento y su estado `cached` requieren Claude Code v2.1.221 o posterior.

297 297 

298El caché de descubrimiento está desactivado de forma predeterminada a menos que un lanzamiento gradual lo haya habilitado para su cuenta. Establezca [`MCP_DISCOVERY_CACHE=1`](/docs/es/env-vars) para activarlo, o `0` para mantenerlo desactivado incluso cuando el lanzamiento lo haya habilitado. Antes de v2.1.238, el caché estaba activado de forma predeterminada.298El caché de descubrimiento está desactivado de forma predeterminada a menos que un lanzamiento gradual lo haya habilitado para su cuenta. Establezca [`MCP_DISCOVERY_CACHE=1`](/docs/es/env-vars) para activarlo, o `0` para mantenerlo desactivado incluso cuando el lanzamiento lo haya habilitado. Antes de v2.1.238, el caché estaba activado de forma predeterminada.

299 299 


312* Para un servidor en el [alcance](#mcp-installation-scopes) local, de proyecto o de usuario o en configuración MCP administrada, el origen muestra el host tal como está escrito en esa configuración, por lo que una referencia `${VAR}` en el host no se expande en el mensaje.312* Para un servidor en el [alcance](#mcp-installation-scopes) local, de proyecto o de usuario o en configuración MCP administrada, el origen muestra el host tal como está escrito en esa configuración, por lo que una referencia `${VAR}` en el host no se expande en el mensaje.

313* Para una falla sin código de estado o de error, Claude Code muestra el texto de error sin el origen.313* Para una falla sin código de estado o de error, Claude Code muestra el texto de error sin el origen.

314 314 

315Un servidor remoto cuya configuración tiene una `url` vacía se muestra como `not configured` en `/mcp`, en `claude mcp list`, y en el administrador [`/plugin`](/docs/es/plugins), y Claude Code no intenta conectarse a él. Un plugin puede incluir una entrada de marcador de posición como esta para un conector que configura más tarde, por lo que Claude Code no lo informa como un error o un problema de configuración. La vista de detalle del servidor en `/mcp` lee `No URL configured for this server`; establezca la `url` de la entrada para conectarla. Antes de v2.1.208, Claude Code informaba una `url` vacía como un problema de configuración con un aviso para reconectar.315Un servidor remoto cuya configuración tiene una `url` vacía se muestra como `not configured` en `/mcp`, en `claude mcp list`, y en el administrador [`/plugin`](/docs/es/plugins/install), y Claude Code no intenta conectarse a él. Un plugin puede incluir una entrada de marcador de posición como esta para un conector que configura más tarde, por lo que Claude Code no lo informa como un error o un problema de configuración. La vista de detalle del servidor en `/mcp` lee `No URL configured for this server`; establezca la `url` de la entrada para conectarla. Antes de v2.1.208, Claude Code informaba una `url` vacía como un problema de configuración con un aviso para reconectar.

316 316 

317<h4 id="configuration-warnings">317<h4 id="configuration-warnings">

318 Advertencias de configuración318 Advertencias de configuración


466 466 

467Un `timeout` por servidor de al menos 1000 también actúa como un piso en el tiempo de espera de inactividad descrito a continuación: Claude Code nunca aborta las llamadas de herramienta de ese servidor por inactividad más pronto que el `timeout` por servidor. Requiere Claude Code v2.1.203 o posterior.467Un `timeout` por servidor de al menos 1000 también actúa como un piso en el tiempo de espera de inactividad descrito a continuación: Claude Code nunca aborta las llamadas de herramienta de ese servidor por inactividad más pronto que el `timeout` por servidor. Requiere Claude Code v2.1.203 o posterior.

468 468 

469Una llamada de herramienta a un servidor MCP que no envía respuesta y ninguna notificación de progreso para la ventana de inactividad aborta con un error en lugar de esperar el límite de reloj de pared. El tiempo de espera de inactividad requiere Claude Code v2.1.187 o posterior. Se aplica a todos los tipos de servidor excepto servidores IDE y servidores en proceso del SDK. La ventana de inactividad tiene un valor predeterminado de cinco minutos para servidores HTTP, SSE, WebSocket, y [conector claude.ai](#use-mcp-servers-from-claude-ai), y de 30 minutos para servidores stdio. Antes de v2.1.203, los servidores stdio estaban exentos del tiempo de espera de inactividad.469Una llamada de herramienta a un servidor MCP que no envía respuesta y ninguna notificación de progreso para la ventana de inactividad aborta con un error en lugar de esperar el límite de reloj de pared. Se aplica a todos los tipos de servidor excepto servidores IDE y servidores en proceso del SDK. La ventana de inactividad tiene un valor predeterminado de cinco minutos para servidores HTTP, SSE, WebSocket, y [conector claude.ai](#use-mcp-servers-from-claude-ai), y de 30 minutos para servidores stdio. Antes de v2.1.203, los servidores stdio estaban exentos del tiempo de espera de inactividad.

470 470 

471Establezca la variable de entorno [`CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT`](/docs/es/env-vars) en milisegundos para cambiar la ventana de inactividad, o establézcala en `0` para deshabilitar la verificación.471Establezca la variable de entorno [`CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT`](/docs/es/env-vars) en milisegundos para cambiar la ventana de inactividad, o establézcala en `0` para deshabilitar la verificación.

472 472 


494 Servidores MCP proporcionados por plugins494 Servidores MCP proporcionados por plugins

495</h3>495</h3>

496 496 

497[Los plugins](/docs/es/plugins) pueden agrupar servidores MCP que proporcionan herramientas e integraciones cuando habilita el plugin. Los servidores MCP de plugins funcionan de manera idéntica a los servidores configurados por el usuario.497[Los plugins](/docs/es/plugins/overview) pueden agrupar servidores MCP que proporcionan herramientas e integraciones cuando habilita el plugin. Los servidores MCP de plugins funcionan de manera idéntica a los servidores configurados por el usuario.

498 498 

499**Cómo funcionan los servidores MCP de plugins**:499**Cómo funcionan los servidores MCP de plugins**:

500 500 


539 539 

540* **Ciclo de vida automático**: los servidores se conectan y desconectan en estos puntos:540* **Ciclo de vida automático**: los servidores se conectan y desconectan en estos puntos:

541 * Al inicio de la sesión, Claude Code conecta automáticamente los servidores de plugins habilitados. En `/mcp`, un servidor de plugin remoto (HTTP o SSE) que ha utilizado antes puede mostrar el estado [`cached`](#server-status-detail) en su lugar; Claude Code lo conecta cuando Claude llama por primera vez a una de sus herramientas541 * Al inicio de la sesión, Claude Code conecta automáticamente los servidores de plugins habilitados. En `/mcp`, un servidor de plugin remoto (HTTP o SSE) que ha utilizado antes puede mostrar el estado [`cached`](#server-status-detail) en su lugar; Claude Code lo conecta cuando Claude llama por primera vez a una de sus herramientas

542 * Si habilita o deshabilita un plugin durante una sesión, Claude Code conecta o desconecta sus servidores MCP cuando el cambio se aplica. [Aplicar cambios de plugins sin reiniciar](/docs/es/discover-plugins#apply-plugin-changes-without-restarting) describe cuándo es eso. En una sesión sin terminal interactiva, `/reload-plugins` no conecta o desconecta servidores MCP de plugins; esos cambios tienen efecto en su próxima sesión542 * Si habilita o deshabilita un plugin durante una sesión, Claude Code conecta o desconecta sus servidores MCP cuando el cambio se aplica. [Aplicar cambios de plugins sin reiniciar](/docs/es/plugins/cli-reference#reload-plugins) describe cuándo es eso. En una sesión sin terminal interactiva, `/reload-plugins` no conecta o desconecta servidores MCP de plugins; esos cambios tienen efecto en su próxima sesión

543 * Cuando recarga, Claude Code mantiene las conexiones activas de servidores de plugins cuya configuración no ha cambiado, y hace lo mismo cuando [reemplaza la lista de servidores MCP de la sesión](/docs/es/agent-sdk/typescript#mcpsetserversresult) desde el Agent SDK sin nombrarlos543 * Cuando recarga, Claude Code mantiene las conexiones activas de servidores de plugins cuya configuración no ha cambiado, y hace lo mismo cuando [reemplaza la lista de servidores MCP de la sesión](/docs/es/agent-sdk/typescript#mcpsetserversresult) desde el Agent SDK sin nombrarlos

544 * Cuando [mueve la sesión con `/cd`](/docs/es/permissions#move-the-session-to-another-directory) en v2.1.246 o posterior, Claude Code conecta los servidores de plugins que la configuración del nuevo directorio habilita y desconecta los servidores de plugins que ya no están habilitados, por lo que no necesita ejecutar `/reload-plugins` después del movimiento544 * Cuando [mueve la sesión con `/cd`](/docs/es/permissions#move-the-session-to-another-directory) en v2.1.246 o posterior, Claude Code conecta los servidores de plugins que la configuración del nuevo directorio habilita y desconecta los servidores de plugins que ya no están habilitados, por lo que no necesita ejecutar `/reload-plugins` después del movimiento

545 * En [sesiones en la nube](/docs/es/claude-code-on-the-web), una llamada MCP a un servidor de plugin que aún no está conectado, como justo después de que una sesión inactiva se despierte, inicia el servidor bajo demanda y espera a que se conecte545 * En [sesiones en la nube](/docs/es/claude-code-on-the-web), una llamada MCP a un servidor de plugin que aún no está conectado, como justo después de que una sesión inactiva se despierte, inicia el servidor bajo demanda y espera a que se conecte

546* **Marcadores de posición de ruta**: `${CLAUDE_PLUGIN_ROOT}` se resuelve al directorio de instalación del plugin, `${CLAUDE_PLUGIN_DATA}` a su directorio de [estado persistente](/docs/es/plugins-reference#persistent-data-directory), y `${CLAUDE_PROJECT_DIR}` a la raíz del proyecto estable. La sustitución se aplica a:546* **Marcadores de posición de ruta**: `${CLAUDE_PLUGIN_ROOT}` se resuelve al directorio de instalación del plugin, `${CLAUDE_PLUGIN_DATA}` a su directorio de [estado persistente](/docs/es/plugins/components#path-variables-and-persistent-data), y `${CLAUDE_PROJECT_DIR}` a la raíz del proyecto estable. La sustitución se aplica a:

547 * servidores `stdio`: `command`, `args`, `env`547 * servidores `stdio`: `command`, `args`, `env`

548 * servidores `http`, `sse`, y `ws`: `url`, `headers`, y `headersHelper`. Antes de v2.1.195, `headersHelper` pasaba el marcador de posición como una cadena literal548 * servidores `http`, `sse`, y `ws`: `url`, `headers`, y `headersHelper`. Antes de v2.1.195, `headersHelper` pasaba el marcador de posición como una cadena literal

549* **Acceso al entorno del usuario**: acceso a las mismas variables de entorno que los servidores configurados manualmente549* **Acceso al entorno del usuario**: acceso a las mismas variables de entorno que los servidores configurados manualmente


563 563 

564El servidor mismo se registra bajo el nombre con alcance `plugin:<plugin-name>:<server-name>`, como `plugin:my-plugin:database-tools`. Utilice ese nombre donde se espera un nombre de servidor configurado, como el [campo `server` de un hook `mcp_tool`](/docs/es/hooks#mcp-tool-hook-fields).564El servidor mismo se registra bajo el nombre con alcance `plugin:<plugin-name>:<server-name>`, como `plugin:my-plugin:database-tools`. Utilice ese nombre donde se espera un nombre de servidor configurado, como el [campo `server` de un hook `mcp_tool`](/docs/es/hooks#mcp-tool-hook-fields).

565 565 

566Consulte la [referencia de componentes de plugins](/docs/es/plugins-reference#mcp-servers) para obtener detalles sobre cómo agrupar servidores MCP con plugins.566Consulte la [referencia de componentes de plugins](/docs/es/plugins/components#mcp-servers) para obtener detalles sobre cómo agrupar servidores MCP con plugins.

567 567 

568<h2 id="mcp-installation-scopes">568<h2 id="mcp-installation-scopes">

569 Alcances de instalación de MCP569 Alcances de instalación de MCP


6661. Alcance local6661. Alcance local

6672. Alcance de proyecto6672. Alcance de proyecto

6683. Alcance de usuario6683. Alcance de usuario

6694. [Servidores proporcionados por plugins](/docs/es/plugins)6694. [Servidores proporcionados por plugins](/docs/es/plugins/components#mcp-servers)

6705. [Conectores de claude.ai](#use-mcp-servers-from-claude-ai)6705. [Conectores de claude.ai](#use-mcp-servers-from-claude-ai)

671 671 

672Los tres alcances coinciden duplicados por nombre. Los plugins y conectores coinciden por punto final, por lo que uno que apunta a la misma URL o comando que un servidor anterior se trata como un duplicado.672Los tres alcances coinciden duplicados por nombre. Los plugins y conectores coinciden por punto final, por lo que uno que apunta a la misma URL o comando que un servidor anterior se trata como un duplicado.


876 Autenticarse desde la línea de comandos876 Autenticarse desde la línea de comandos

877</h3>877</h3>

878 878 

879A partir de v2.1.186, `claude mcp login <name>` ejecuta el flujo de OAuth de un servidor configurado directamente desde su shell, por lo que no necesita abrir el panel `/mcp` dentro de una sesión.879El comando `claude mcp login <name>` ejecuta el flujo de OAuth de un servidor configurado directamente desde su shell, por lo que no necesita abrir el panel `/mcp` dentro de una sesión.

880 880 

881```bash theme={null}881```bash theme={null}

882claude mcp login sentry882claude mcp login sentry


884 884 

885Para borrar las credenciales almacenadas más tarde, ejecute `claude mcp logout <name>`.885Para borrar las credenciales almacenadas más tarde, ejecute `claude mcp logout <name>`.

886 886 

887A partir de v2.1.191, el comando detecta cuando no hay navegador local disponible, como durante una sesión SSH o en Linux sin un servidor de pantalla, e imprime la URL de autorización en lugar de intentar abrir un navegador. Abra la URL en su máquina local, luego pegue la URL de redireccionamiento completa de la barra de direcciones de su navegador nuevamente en el indicador. El comando necesita una terminal interactiva para el paso de pegado, así que conéctese con `ssh -t`. Pase `--no-browser` para forzar el indicador de URL incluso cuando se detecta un navegador local.887`claude mcp login` detecta cuando no hay navegador local disponible, como durante una sesión SSH o en Linux sin un servidor de pantalla, e imprime la URL de autorización en lugar de intentar abrir un navegador. Abra la URL en su máquina local, luego pegue la URL de redireccionamiento completa de la barra de direcciones de su navegador nuevamente en el indicador. El comando necesita una terminal interactiva para el paso de pegado, así que conéctese con `ssh -t`. Pase `--no-browser` para forzar el indicador de URL incluso cuando se detecta un navegador local.

888 888 

889```bash theme={null}889```bash theme={null}

890claude mcp login sentry --no-browser890claude mcp login sentry --no-browser


1085Claude Code establece estas variables de entorno al ejecutar el ayudante:1085Claude Code establece estas variables de entorno al ejecutar el ayudante:

1086 1086 

1087| Variable | Valor |1087| Variable | Valor |

1088| :---------------------------- | :----------------------------------------------------------------------------------------------------------------------------- |1088| :---------------------------- | :------------------------------------------------------------------------------------------------------------------------------ |

1089| `CLAUDE_CODE_MCP_SERVER_NAME` | el nombre del servidor MCP |1089| `CLAUDE_CODE_MCP_SERVER_NAME` | el nombre del servidor MCP |

1090| `CLAUDE_CODE_MCP_SERVER_URL` | la URL del servidor MCP |1090| `CLAUDE_CODE_MCP_SERVER_URL` | la URL del servidor MCP |

1091| `CLAUDE_PLUGIN_ROOT` | el directorio raíz del plugin. Se establece solo cuando un [plugin](/docs/es/plugins-reference#mcp-servers) proporciona el servidor |1091| `CLAUDE_PLUGIN_ROOT` | el directorio raíz del plugin. Se establece solo cuando un [plugin](/docs/es/plugins/components#mcp-servers) proporciona el servidor |

1092 1092 

1093Use estas para escribir un único script de ayudante que sirva múltiples servidores MCP.1093Use estas para escribir un único script de ayudante que sirva múltiples servidores MCP.

1094 1094 

1095Un `headersHelper` proporcionado por un plugin no puede hacer referencia a los valores [`${user_config.*}`](/docs/es/plugins-reference#user-configuration) del plugin, porque el comando se ejecuta a través de un shell. Claude Code reporta el servidor como mal configurado con un [error](/docs/es/errors#plugin-command-references-user-config) y no sustituye el valor. Ponga `${user_config.KEY}` en el campo `headers` del servidor en su lugar, que no se analiza como shell, o haga que el script de ayudante lea el valor de un archivo de configuración. Antes de v2.1.207, `headersHelper` sustituía valores `${user_config.*}`.1095Un `headersHelper` proporcionado por un plugin no puede hacer referencia a los valores [`${user_config.*}`](/docs/es/plugins/manifest-reference#user-configuration) del plugin, porque el comando se ejecuta a través de un shell. Claude Code reporta el servidor como mal configurado con un [error](/docs/es/errors#plugin-command-references-user-config) y no sustituye el valor. Ponga `${user_config.KEY}` en el campo `headers` del servidor en su lugar, que no se analiza como shell, o haga que el script de ayudante lea el valor de un archivo de configuración. Antes de v2.1.207, `headersHelper` sustituía valores `${user_config.*}`.

1096 1096 

1097<h4 id="where-the-helper-runs">1097<h4 id="where-the-helper-runs">

1098 Dónde se ejecuta el ayudante1098 Dónde se ejecuta el ayudante


1102 1102 

1103| Dónde configuró el servidor | Directorio de trabajo |1103| Dónde configuró el servidor | Directorio de trabajo |

1104| :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------- |1104| :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------- |

1105| Un [plugin](/docs/es/plugins-reference#mcp-servers) | El directorio raíz del plugin. Requiere Claude Code v2.1.195 o posterior |1105| Un [plugin](/docs/es/plugins/components#mcp-servers) | El directorio raíz del plugin. Requiere Claude Code v2.1.195 o posterior |

1106| Un `.mcp.json` de proyecto o un servidor de [alcance local](#local-scope) | El directorio del proyecto donde se declara el servidor |1106| Un `.mcp.json` de proyecto o un servidor de [alcance local](#local-scope) | El directorio del proyecto donde se declara el servidor |

1107| Un archivo de agente en su proyecto, un servidor de la opción `mcpServers` del SDK o el método `setMcpServers()`, o [`--mcp-config`](/docs/es/cli-reference) | El [directorio de trabajo principal](/docs/es/permissions#working-directories) de la sesión |1107| Un archivo de agente en su proyecto, un servidor de la opción `mcpServers` del SDK o el método `setMcpServers()`, o [`--mcp-config`](/docs/es/cli-reference) | El [directorio de trabajo principal](/docs/es/permissions#working-directories) de la sesión |

1108| [Alcance de usuario](#user-scope), [MCP administrado](/docs/es/managed-mcp), un [conector de claude.ai](#use-mcp-servers-from-claude-ai), o un archivo de agente de fuera de su proyecto, incluido uno de un directorio `--add-dir` | Su directorio de configuración, `~/.claude` a menos que establezca [`CLAUDE_CONFIG_DIR`](/docs/es/env-vars) |1108| [Alcance de usuario](#user-scope), [MCP administrado](/docs/es/managed-mcp), un [conector de claude.ai](#use-mcp-servers-from-claude-ai), o un archivo de agente de fuera de su proyecto, incluido uno de un directorio `--add-dir` | Su directorio de configuración, `~/.claude` a menos que establezca [`CLAUDE_CONFIG_DIR`](/docs/es/env-vars) |


1235 </Step>1235 </Step>

1236</Steps>1236</Steps>

1237 1237 

1238Claude Code marca un conector como `managed` en `/mcp` y en el gestor de [`/plugin`](/docs/es/plugins) cuando su organización gestiona su autenticación en claude.ai. El estado managed no cambia cómo Claude Code se conecta al conector ni aplica los [controles de herramientas](#organization-controls-on-connector-tools) de su organización.1238Claude Code marca un conector como `managed` en `/mcp` y en el gestor de [`/plugin`](/docs/es/plugins/install) cuando su organización gestiona su autenticación en claude.ai. El estado managed no cambia cómo Claude Code se conecta al conector ni aplica los [controles de herramientas](#organization-controls-on-connector-tools) de su organización.

1239 1239 

1240Los conectores a los que nunca ha iniciado sesión se contraen detrás de una fila `Show unused connectors` al final de la sección de claude.ai, por lo que una lista provisionada por la organización no llena el panel. Seleccione la fila para expandirlos. Un conector en el que inició sesión antes permanece visible incluso cuando actualmente necesita reautenticación.1240Los conectores a los que nunca ha iniciado sesión se contraen detrás de una fila `Show unused connectors` al final de la sección de claude.ai, por lo que una lista provisionada por la organización no llena el panel. Seleccione la fila para expandirlos. Un conector en el que inició sesión antes permanece visible incluso cuando actualmente necesita reautenticación.

1241 1241 

Details

64}64}

65```65```

66 66 

67Claude Code ignora las [variables del exportador de OpenTelemetry](/docs/es/settings-reference#variables-claude-code-ignores-in-env) en el `.claude/settings.json` y `.claude/settings.local.json` de un repositorio, por lo que un repositorio no puede usarlas para activar la telemetría, elegir dónde va, o capturar contenido. Establécelas en los ajustes administrados, o haz que cada desarrollador las establezca en su shell o `~/.claude/settings.json`. Un repositorio aún puede desactivar una señal estableciendo su selector de exportador, como `OTEL_LOGS_EXPORTER`, en `none`, a menos que los ajustes administrados, un archivo `--settings`, o el entorno desde el que inicias Claude Code establezca esa variable.

68 

67Claude Code no pasa variables de entorno `OTEL_*` a los subprocesos que genera, incluyendo la herramienta Bash, hooks, servidores MCP, y servidores de lenguaje. Una aplicación instrumentada con OpenTelemetry que ejecutes a través de la herramienta Bash no hereda el punto final del exportador de Claude Code ni los encabezados, así que establece esas variables directamente en el comando si esa aplicación necesita exportar su propia telemetría.69Claude Code no pasa variables de entorno `OTEL_*` a los subprocesos que genera, incluyendo la herramienta Bash, hooks, servidores MCP, y servidores de lenguaje. Una aplicación instrumentada con OpenTelemetry que ejecutes a través de la herramienta Bash no hereda el punto final del exportador de Claude Code ni los encabezados, así que establece esas variables directamente en el comando si esa aplicación necesita exportar su propia telemetría.

68 70 

69<h3 id="how-managed-settings-lock-the-otlp-destination">71<h3 id="how-managed-settings-lock-the-otlp-destination">


101 Variables de configuración comunes103 Variables de configuración comunes

102</h3>104</h3>

103 105 

104Estas variables configuran exportadores, puntos finales y comportamiento de exportación para todas las implementaciones. Si estableces una variable de punto final o protocolo por señal, como `OTEL_EXPORTER_OTLP_METRICS_ENDPOINT`, Claude Code la utiliza en lugar de la variable genérica para esa señal. Si estableces una variable de encabezados por señal, como `OTEL_EXPORTER_OTLP_METRICS_HEADERS`, Claude Code la fusiona con la genérica `OTEL_EXPORTER_OTLP_HEADERS` para esa señal. En máquinas con configuración administrada, consulta [Cómo la configuración administrada bloquea el destino OTLP](#how-managed-settings-lock-the-otlp-destination) para ver qué elimina Claude Code.106Estas variables configuran exportadores, puntos finales y comportamiento de exportación para todas las implementaciones.

107 

108Si estableces una variable de punto final o protocolo por señal, como `OTEL_EXPORTER_OTLP_METRICS_ENDPOINT`, Claude Code la utiliza en lugar de la variable genérica para esa señal. Si estableces una variable de encabezados por señal, como `OTEL_EXPORTER_OTLP_METRICS_HEADERS`, Claude Code la fusiona con la genérica `OTEL_EXPORTER_OTLP_HEADERS` para esa señal.

109 

110En máquinas con configuración administrada, consulta [Cómo la configuración administrada bloquea el destino OTLP](#how-managed-settings-lock-the-otlp-destination) para ver qué elimina Claude Code.

105 111 

106| Variable de Entorno | Descripción | Valores de Ejemplo |112| Variable de Entorno | Descripción | Valores de Ejemplo |

107| --------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |113| --------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |


651* `query_source`: Categoría del subsistema que emitió la solicitud. Uno de `"main"`, `"subagent"`, o `"auxiliary"`657* `query_source`: Categoría del subsistema que emitió la solicitud. Uno de `"main"`, `"subagent"`, o `"auxiliary"`

652* `speed`: `"fast"` cuando la solicitud utilizó modo rápido. Ausente de lo contrario658* `speed`: `"fast"` cuando la solicitud utilizó modo rápido. Ausente de lo contrario

653* `effort`: [Nivel de esfuerzo](/docs/es/model-config#adjust-effort-level) aplicado a la solicitud: `"low"`, `"medium"`, `"high"`, `"xhigh"`, o `"max"`. Ausente cuando Claude Code no envía un nivel de esfuerzo, por ejemplo en un modelo que no admite esfuerzo.659* `effort`: [Nivel de esfuerzo](/docs/es/model-config#adjust-effort-level) aplicado a la solicitud: `"low"`, `"medium"`, `"high"`, `"xhigh"`, o `"max"`. Ausente cuando Claude Code no envía un nivel de esfuerzo, por ejemplo en un modelo que no admite esfuerzo.

654* `agent.name`: Tipo de subagente que emitió la solicitud. Los nombres de agentes integrados y los agentes de plugins del mercado oficial aparecen literalmente. Otros nombres de agentes definidos por el usuario se reemplazan con `"custom"`. Ausente cuando la solicitud no fue emitida por un tipo de subagente nombrado.660* `agent.name`: Tipo de subagente que emitió la solicitud. Los nombres de agentes integrados y los agentes de plugins del mercado oficial aparecen literalmente. Otros nombres de agentes definidos por el usuario se reemplazan con `"custom"` a menos que se establezca `OTEL_LOG_TOOL_DETAILS=1`. Ausente cuando la solicitud no fue emitida por un tipo de subagente nombrado.

655* `skill.name`: Habilidad activa para la solicitud, establecida por la herramienta Skill, un comando `/`, o heredada por un subagente generado. Los nombres de habilidades integradas, agrupadas, definidas por el usuario y del plugin del mercado oficial aparecen literalmente. Los nombres de habilidades de plugins de terceros se reemplazan con `"third-party"`. Ausente cuando no hay habilidad activa.661* `skill.name`: Habilidad activa para la solicitud, establecida por la herramienta Skill, un comando `/`, o heredada por un subagente generado. Los nombres de habilidades integradas, agrupadas, definidas por el usuario y del plugin del mercado oficial aparecen literalmente. Los nombres de habilidades de plugins de terceros se reemplazan con `"third-party"` a menos que se establezca `OTEL_LOG_TOOL_DETAILS=1`. Ausente cuando no hay habilidad activa.

656* `plugin.name`: Plugin propietario cuando la habilidad activa o subagente es proporcionado por un plugin. Los nombres de plugins del mercado oficial aparecen literalmente. Los nombres de plugins de terceros se reemplazan con `"third-party"`. Ausente cuando ni la habilidad ni el subagente tienen un plugin propietario.662* `plugin.name`: Plugin propietario cuando la habilidad activa o subagente es proporcionado por un plugin. Los nombres de plugins del mercado oficial aparecen literalmente. Los nombres de plugins de terceros se reemplazan con `"third-party"` a menos que se establezca `OTEL_LOG_TOOL_DETAILS=1`. Ausente cuando ni la habilidad ni el subagente tienen un plugin propietario.

657* `marketplace.name`: Mercado desde el cual se instaló el plugin propietario. Solo se emite para plugins del mercado oficial. Ausente de lo contrario.663* `marketplace.name`: Mercado desde el cual se instaló el plugin propietario. Solo se emite para plugins del mercado oficial. Ausente de lo contrario.

658* `mcp_server.name`: Servidor MCP cuyo resultado de herramienta consumió esta solicitud. Los nombres de servidores integrados, proxificados por claude.ai, y del registro oficial aparecen literalmente. Los nombres de servidores configurados por el usuario se reemplazan con `"custom"`. Ausente cuando la solicitud no consumió ningún resultado de herramienta MCP. Antes de v2.1.222, Claude Code establecía este atributo en cada solicitud después de una llamada de herramienta MCP, no solo en solicitudes que consumieron un resultado de herramienta, por lo que los paneles de control que lo agregan muestran una caída después de actualizar.664* `mcp_server.name`: Servidor MCP cuyo resultado de herramienta consumió esta solicitud. Los nombres de servidores integrados, proxificados por claude.ai, y del registro oficial aparecen literalmente. Los nombres de servidores configurados por el usuario se reemplazan con `"custom"` a menos que se establezca `OTEL_LOG_TOOL_DETAILS=1`. Ausente cuando la solicitud no consumió ningún resultado de herramienta MCP. Antes de v2.1.222, Claude Code establecía este atributo en cada solicitud después de una llamada de herramienta MCP, no solo en solicitudes que consumieron un resultado de herramienta, por lo que los paneles de control que lo agregan muestran una caída después de actualizar.

659* `mcp_tool.name`: Herramienta MCP cuyo resultado consumió esta solicitud, con el mismo comportamiento de redacción y versión que `mcp_server.name`. Ausente cuando la solicitud no consumió ningún resultado de herramienta MCP.665* `mcp_tool.name`: Herramienta MCP cuyo resultado consumió esta solicitud, con el mismo comportamiento de redacción y versión que `mcp_server.name`. Ausente cuando la solicitud no consumió ningún resultado de herramienta MCP.

660 666 

661<h4 id="token-counter">667<h4 id="token-counter">


1086* `marketplace.name`: mercado desde el cual se instaló el plugin, cuando se conoce. Redactado a `"third-party"` bajo la misma condición que `plugin.name`1092* `marketplace.name`: mercado desde el cual se instaló el plugin, cuando se conoce. Redactado a `"third-party"` bajo la misma condición que `plugin.name`

1087* `plugin.version`: versión del manifiesto del plugin. Se incluye solo cuando el nombre no está redactado y el manifiesto declara una versión1093* `plugin.version`: versión del manifiesto del plugin. Se incluye solo cuando el nombre no está redactado y el manifiesto declara una versión

1088* `plugin.scope`: categoría de procedencia del plugin: `"official"`, `"community"`, `"org"`, `"user-local"`, o `"default-bundle"`1094* `plugin.scope`: categoría de procedencia del plugin: `"official"`, `"community"`, `"org"`, `"user-local"`, o `"default-bundle"`

1089* `enabled_via`: cómo el plugin llegó a estar habilitado: `"default-enable"`, `"org-policy"`, `"admin-install"`, `"seed-mount"`, o `"user-install"`. El valor `"admin-install"` significa que el plugin está configurado como requerido o instalación automática para su organización en [**Configuración de la organización > Plugins**](https://claude.ai/admin-settings/plugins). Antes de v2.1.246, Claude Code reportaba estos plugins como `"user-install"` o `"seed-mount"`1095* `enabled_via`: cómo el plugin llegó a estar habilitado: `"default-enable"`, `"org-policy"`, `"admin-install"`, `"seed-mount"`, o `"user-install"`. El valor `"admin-install"` significa que el plugin está configurado como requerido o instalación automática para su organización en [**Configuración de la organización > Plugins y habilidades**](https://claude.ai/admin-settings/skills?tab=inventory). Antes de v2.1.246, Claude Code reportaba estos plugins como `"user-install"` o `"seed-mount"`

1090* `plugin_id_hash`: hash determinista del nombre del plugin y mercado, enviado solo a su exportador configurado. Le permite contar los plugins de terceros distintos cargados en su flota sin registrar sus nombres. Para [plugins sincronizados desde claude.ai](/docs/es/plugins-reference#synced-plugins), Claude Code codifica el nombre del plugin con el nombre del mercado que claude.ai reporta para el plugin, o con `synced` de lo contrario. Antes de v2.1.246, Claude Code no usaba el nombre del mercado que claude.ai reporta en el hash1096* `plugin_id_hash`: hash determinista del nombre del plugin y mercado, enviado solo a su exportador configurado. Le permite contar los plugins de terceros distintos cargados en su flota sin registrar sus nombres. Para [plugins sincronizados desde claude.ai](/docs/es/plugins/loading#synced-plugins), Claude Code codifica el nombre del plugin con el nombre del mercado que claude.ai reporta para el plugin, o con `synced` de lo contrario. Antes de v2.1.246, Claude Code no usaba el nombre del mercado que claude.ai reporta en el hash

1091* `has_hooks`: si el plugin contribuye hooks1097* `has_hooks`: si el plugin contribuye hooks

1092* `has_mcp`: si el plugin contribuye servidores MCP1098* `has_mcp`: si el plugin contribuye servidores MCP

1093* `host_owned_mcp`: `true` cuando el host del SDK gestiona las conexiones MCP de este plugin y Claude Code omitió leer la configuración del servidor MCP del plugin, `false` de lo contrario. Requiere Claude Code v2.1.172 o posterior1099* `host_owned_mcp`: `true` cuando el host del SDK gestiona las conexiones MCP de este plugin y Claude Code omitió leer la configuración del servidor MCP del plugin, `false` de lo contrario. Requiere Claude Code v2.1.172 o posterior


1363* Establézcalo en el bloque `env` de configuración gestionada, configuración del usuario, o `--settings`, o en el entorno con el que inicia Claude Code. Un valor en configuración de proyecto o local no lo activa, porque un repositorio clonado puede escribirlos.1369* Establézcalo en el bloque `env` de configuración gestionada, configuración del usuario, o `--settings`, o en el entorno con el que inicia Claude Code. Un valor en configuración de proyecto o local no lo activa, porque un repositorio clonado puede escribirlos.

1364* La configuración gestionada por servidor puede establecerlo sin mostrar el [diálogo de aprobación de seguridad](/docs/es/server-managed-settings#security-approval-dialogs), porque la variable solo agrega su propia política redactada de la organización a un evento que su organización ya recibe.1370* La configuración gestionada por servidor puede establecerlo sin mostrar el [diálogo de aprobación de seguridad](/docs/es/server-managed-settings#security-approval-dialogs), porque la variable solo agrega su propia política redactada de la organización a un evento que su organización ya recibe.

1365 1371 

1366En una sesión interactiva en una carpeta que no ha [confiado](/docs/es/permissions#what-runs-before-you-trust-a-folder), Claude Code no exporta el evento de rechazo, porque la configuración de proyecto y local podría apuntar la exportación a un recopilador diferente antes de confiar.1372En una sesión interactiva en una carpeta que no ha [confiado](/docs/es/permissions#what-runs-before-you-trust-a-folder), Claude Code no exporta el evento de rechazo.

1367 1373 

1368**Nombre del evento**: `claude_code.managed_settings_resolved`1374**Nombre del evento**: `claude_code.managed_settings_resolved`

1369 1375 

Details

245| `registry.npmjs.org` | Instalaciones de plugins (obtención de paquetes de plugins de origen npm e instalación de dependencias de paquetes Node.js de plugins), servidores MCP lanzados con `npx` y el registro de paquetes para instalaciones de npm y bun de Claude Code en sí |245| `registry.npmjs.org` | Instalaciones de plugins (obtención de paquetes de plugins de origen npm e instalación de dependencias de paquetes Node.js de plugins), servidores MCP lanzados con `npx` y el registro de paquetes para instalaciones de npm y bun de Claude Code en sí |

246| `bridge.claudeusercontent.com` | Puente WebSocket de extensión [Claude en Chrome](/docs/es/chrome) |246| `bridge.claudeusercontent.com` | Puente WebSocket de extensión [Claude en Chrome](/docs/es/chrome) |

247| `*.frame.claudeusercontent.com` | Lecturas de contenido de [Artifact](/docs/es/artifacts). La CLI obtiene los archivos de un artefacto de este host cuando Claude abre uno, y solo cuando la herramienta Artifact está [disponible](/docs/es/artifacts#availability) para su cuenta. Para desactivar la herramienta y eliminar este requisito, establezca [`"enableArtifact": false`](/docs/es/settings-reference#enableartifact) o [`CLAUDE_CODE_DISABLE_ARTIFACT=1`](/docs/es/env-vars); Claude Code también respeta la configuración [`disableArtifact`](/docs/es/settings-reference#disableartifact) obsoleta. Consulte [Deshabilitar artefactos](/docs/es/artifacts#disable-artifacts) para ver cómo interactúan estas configuraciones |247| `*.frame.claudeusercontent.com` | Lecturas de contenido de [Artifact](/docs/es/artifacts). La CLI obtiene los archivos de un artefacto de este host cuando Claude abre uno, y solo cuando la herramienta Artifact está [disponible](/docs/es/artifacts#availability) para su cuenta. Para desactivar la herramienta y eliminar este requisito, establezca [`"enableArtifact": false`](/docs/es/settings-reference#enableartifact) o [`CLAUDE_CODE_DISABLE_ARTIFACT=1`](/docs/es/env-vars); Claude Code también respeta la configuración [`disableArtifact`](/docs/es/settings-reference#disableartifact) obsoleta. Consulte [Deshabilitar artefactos](/docs/es/artifacts#disable-artifacts) para ver cómo interactúan estas configuraciones |

248| `github.com` | Clonación de [marketplaces de plugins](/docs/es/plugin-marketplaces) y plugins alojados en GitHub, incluido el marketplace oficial de Anthropic, sobre HTTPS o SSH. Para clonar fuentes de GitHub `owner/repo` solo sobre HTTPS, establezca [`CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1`](/docs/es/env-vars) |248| `github.com` | Clonación de [marketplaces de plugins](/docs/es/plugins/overview) y plugins alojados en GitHub, incluido el marketplace oficial de Anthropic, sobre HTTPS o SSH. Para clonar fuentes de GitHub `owner/repo` solo sobre HTTPS, establezca [`CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1`](/docs/es/env-vars) |

249| `raw.githubusercontent.com` | Fuente de registro de cambios para [`/release-notes`](/docs/es/commands). En sesiones interactivas, Claude Code también la obtiene en segundo plano al inicio cuando su registro de cambios en caché aún no cubre la versión en ejecución, como el primer inicio después de una actualización; las sesiones no interactivas y en la nube nunca la obtienen |249| `raw.githubusercontent.com` | Fuente de registro de cambios para [`/release-notes`](/docs/es/commands). En sesiones interactivas, Claude Code también la obtiene en segundo plano al inicio cuando su registro de cambios en caché aún no cubre la versión en ejecución, como el primer inicio después de una actualización; las sesiones no interactivas y en la nube nunca la obtienen |

250| `*-review.googlesource.com` | Búsqueda de cambios de Gerrit en checkouts de `googlesource.com`. Cuando una sesión de pestaña de Claude Desktop Code se inicia o se reanuda en un checkout [confiable](/docs/es/permissions#project-allow-rules-and-workspace-trust) cuyo `origin` es un host `googlesource.com`, Claude Code pregunta anónimamente al servidor `-review` de ese host por el cambio abierto que coincida con el `Change-Id` de HEAD, una vez por inicio o reanudación. Otros tipos de sesión omiten la búsqueda, y no se contacta a ningún otro host de Gerrit. Opcional: deshabilitar con [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](/docs/es/env-vars) |250| `*-review.googlesource.com` | Búsqueda de cambios de Gerrit en checkouts de `googlesource.com`. Cuando una sesión de pestaña de Claude Desktop Code se inicia o se reanuda en un checkout [confiable](/docs/es/permissions#project-allow-rules-and-workspace-trust) cuyo `origin` es un host `googlesource.com`, Claude Code pregunta anónimamente al servidor `-review` de ese host por el cambio abierto que coincida con el `Change-Id` de HEAD, una vez por inicio o reanudación. Otros tipos de sesión omiten la búsqueda, y no se contacta a ningún otro host de Gerrit. Opcional: deshabilitar con [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](/docs/es/env-vars) |

251| `http-intake.logs.us5.datadoghq.com` | Eventos de telemetría operativa, enviados solo cuando la CLI usa la API de Anthropic directamente, nunca para Amazon Bedrock, Agent Platform de Google Cloud o Microsoft Foundry. Opcional: deshabilitar con [`DISABLE_TELEMETRY`](/docs/es/data-usage#telemetry-services) o `DO_NOT_TRACK` |251| `http-intake.logs.us5.datadoghq.com` | Eventos de telemetría operativa, enviados solo cuando la CLI usa la API de Anthropic directamente, nunca para Amazon Bedrock, Agent Platform de Google Cloud o Microsoft Foundry. Opcional: deshabilitar con [`DISABLE_TELEMETRY`](/docs/es/data-usage#telemetry-services) o `DO_NOT_TRACK` |

Details

171 </Step>171 </Step>

172</Steps>172</Steps>

173 173 

174[Plugins](/docs/es/plugins-reference) también pueden enviar estilos de salida en un directorio `output-styles/`.174[Plugins](/docs/es/plugins/manifest-reference) también pueden enviar estilos de salida en un directorio `output-styles/`.

175 175 

176<h3 id="frontmatter">176<h3 id="frontmatter">

177 Referencia de frontmatter177 Referencia de frontmatter


228 228 

229* [Settings](/docs/es/settings): donde vive el campo `outputStyle` y cómo funciona la precedencia de configuración229* [Settings](/docs/es/settings): donde vive el campo `outputStyle` y cómo funciona la precedencia de configuración

230* [Permission modes](/docs/es/permission-modes): cómo el estilo Proactive se compara con el modo automático230* [Permission modes](/docs/es/permission-modes): cómo el estilo Proactive se compara con el modo automático

231* [Plugins](/docs/es/plugins): empaquete y distribuya estilos de salida junto con skills, hooks y agents231* [Plugins](/docs/es/plugins/overview): empaquete y distribuya estilos de salida junto con skills, hooks y agents

232* [Debug your configuration](/docs/es/debug-your-config): diagnostique por qué un estilo de salida no está surtiendo efecto232* [Debug your configuration](/docs/es/debug-your-config): diagnostique por qué un estilo de salida no está surtiendo efecto

Details

295 295 

296El clasificador también revisa y aprueba o bloquea las eliminaciones `rm` y `rmdir` dirigidas a una [ruta crítica](#critical-paths), como `rm -rf /` y `rm -rf ~`, incluso cuando la eliminación está dentro de sustitución de comandos o procesos.296El clasificador también revisa y aprueba o bloquea las eliminaciones `rm` y `rmdir` dirigidas a una [ruta crítica](#critical-paths), como `rm -rf /` y `rm -rf ~`, incluso cuando la eliminación está dentro de sustitución de comandos o procesos.

297 297 

298El modo automático también anima a Claude a seguir trabajando sin detenerse para hacer preguntas aclaratorias, aunque Claude aún pregunta cuando su solicitud o una habilidad depende explícitamente de ello. Para un comportamiento más autónomo en un modo que aún le solicita, establezca el [estilo de salida proactivo](/docs/es/output-styles) en su lugar.298El modo automático también anima a Claude a seguir trabajando sin detenerse para hacer preguntas aclaratorias, aunque Claude aún pregunta cuando su solicitud o una skill depende explícitamente de ello. Para un comportamiento más autónomo en un modo que aún le solicita, establezca el [estilo de salida proactivo](/docs/es/output-styles) en su lugar.

299 299 

300<Warning>300<Warning>

301 El modo automático reduce las solicitudes de permiso pero no garantiza seguridad. Úselo para tareas donde confía en la dirección general, no como reemplazo de revisión en operaciones sensibles.301 El modo automático reduce las solicitudes de permiso pero no garantiza seguridad. Úselo para tareas donde confía en la dirección general, no como reemplazo de revisión en operaciones sensibles.


332 Revisión del clasificador del lado del servidor332 Revisión del clasificador del lado del servidor

333</h3>333</h3>

334 334 

335En planes Enterprise y cuentas que usan la API de Claude, en [Claude Platform en AWS](/docs/es/claude-platform-on-aws), Amazon Bedrock, Google Cloud's Agent Platform y Microsoft Foundry, y siempre que apunte `ANTHROPIC_BASE_URL` a una [puerta de enlace LLM o proxy](/docs/es/llm-gateway), Claude Code en modo automático solicita al servidor que revise [las acciones que van al clasificador](#how-the-classifier-evaluates-actions) como parte de las solicitudes del modelo de la sesión. Donde el servidor las revisa, sus veredictos deciden esas acciones. Donde no lo hace, típicamente porque una puerta de enlace LLM o proxy interfiere con el tráfico, o porque la plataforma, región o credencial aún no tiene verificaciones del lado del servidor, Claude Code retrocede a sus propias solicitudes del clasificador, y una vez que ese retroceso se mantiene para el resto de la sesión muestra un [aviso sobre cargos de solicitud del clasificador](/docs/es/auto-mode-classifier-billing) en cuentas donde esas solicitudes se facturan. Para omitir preguntar al servidor y siempre usar las propias solicitudes del clasificador de Claude Code, establezca [`CLAUDE_CODE_AUTO_MODE_SERVER=0`](/docs/es/env-vars). La variable no se lee en una conexión directa a la API de Anthropic. Si establece `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1` y deja `CLAUDE_CODE_AUTO_MODE_SERVER` sin establecer, Claude Code también deja de preguntar al servidor.335En modo automático, Claude Code puede solicitar al servidor que revise las acciones que [el orden de decisión](#how-the-classifier-evaluates-actions) envía para revisión, como parte de las solicitudes del modelo de la sesión, en lugar de enviar sus propias solicitudes del clasificador. Estas sesiones solicitan:

336 336 

337Preguntar al servidor de forma predeterminada requiere Claude Code v2.1.278 o posterior.337* **Una conexión directa a la API de Anthropic**: en una sesión de terminal interactiva, en todos los planes de claude.ai y en cuentas que usan la API de Claude, a medida que Anthropic lo implementa. Requiere Claude Code v2.1.271 o posterior en planes Pro, Max y Team, y v2.1.278 o posterior en planes Enterprise y cuentas de API de Claude. Desde v2.1.282, una sesión que [no obtiene banderas de características](/docs/es/env-vars#features-that-need-feature-flag-fetching), por ejemplo porque desactivó la telemetría, solicita al servidor de forma predeterminada en cualquier tipo de sesión.

338* **Un proveedor de nube, o una puerta de enlace LLM o proxy**: en [Claude Platform en AWS](/docs/es/claude-platform-on-aws), Amazon Bedrock, Google Cloud's Agent Platform y Microsoft Foundry, y siempre que apunte `ANTHROPIC_BASE_URL` a una [puerta de enlace LLM o proxy](/docs/es/llm-gateway), sea cual sea su plan. Solicitar de forma predeterminada requiere Claude Code v2.1.278 o posterior.

339* **Una sesión de [puerta de enlace de aplicaciones Claude](/docs/es/claude-apps-gateway) con sesión iniciada**: requiere Claude Code v2.1.280 o posterior

340 

341Donde el servidor revisa las acciones, sus veredictos las deciden. Otros dos resultados son posibles:

342 

343* **El servidor no revisa la sesión**: una respuesta se completa sin resultados de revisión, o el servidor responde que no revisa esta sesión. Las causas más comunes son una puerta de enlace LLM o proxy que descarta la solicitud de revisión o los resultados, y una plataforma, región o credencial que aún no tiene verificaciones del lado del servidor. Claude Code retrocede a sus propias solicitudes del clasificador. Una vez que ese retroceso se mantiene para el resto de la sesión, muestra un [aviso sobre cargos de solicitud del clasificador](/docs/es/auto-mode-classifier-billing) en cuentas donde esas solicitudes se facturan.

344* **El servidor no da veredicto para una acción**: Claude Code niega la acción en lugar de ejecutarla sin revisar. En cualquier conexión, esto sucede cuando la respuesta termina antes de que lleguen los resultados de revisión o los resultados llegan en una forma que Claude Code no puede leer. Una puerta de enlace LLM o proxy que corta respuestas o reescribe los resultados puede causar cualquiera de los dos. En una conexión directa a la API de Anthropic, también sucede cuando la verificación del servidor falla para la acción, por ejemplo al agotarse el tiempo. [El servidor no devolvió veredicto de seguridad](/docs/es/errors#the-server-returned-no-safety-verdict) cubre el mensaje de denegación, qué sucede cuando las denegaciones se repiten y qué hacer.

345 

346Para omitir solicitar al servidor y siempre usar las propias solicitudes del clasificador de Claude Code, establezca [`CLAUDE_CODE_AUTO_MODE_SERVER=0`](/docs/es/env-vars). En una conexión directa a la API de Anthropic, la variable requiere Claude Code v2.1.281 o posterior. Establecerlo en `1` allí activa la revisión del servidor en una sesión que no la tiene aún, como una sesión `-p` o Agent SDK, a menos que también haya establecido `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1`. Si establece `CLAUDE_CODE_DISABLE_EXPERIMENTAL_BETAS=1` y deja `CLAUDE_CODE_AUTO_MODE_SERVER` sin establecer, Claude Code también deja de solicitar al servidor.

338 347 

339<h3 id="what-the-classifier-blocks-by-default">348<h3 id="what-the-classifier-blocks-by-default">

340 Qué bloquea el clasificador de forma predeterminada349 Qué bloquea el clasificador de forma predeterminada


476* **Una acción bloqueada**: Claude Code muestra una notificación y enumera la acción en `/permissions` bajo la pestaña **Recently denied**, donde puede presionar `r` para reintentar con una aprobación manual. Cuando el clasificador produce [sin veredicto en la acción](/docs/es/errors#auto-mode-cannot-determine-the-safety-of-an-action), porque una verificación de seguridad separada del modo automático rechazó la solicitud propia del clasificador o su respuesta no se analizó, Claude Code niega la acción sin la notificación o la entrada **Recently denied**.485* **Una acción bloqueada**: Claude Code muestra una notificación y enumera la acción en `/permissions` bajo la pestaña **Recently denied**, donde puede presionar `r` para reintentar con una aprobación manual. Cuando el clasificador produce [sin veredicto en la acción](/docs/es/errors#auto-mode-cannot-determine-the-safety-of-an-action), porque una verificación de seguridad separada del modo automático rechazó la solicitud propia del clasificador o su respuesta no se analizó, Claude Code niega la acción sin la notificación o la entrada **Recently denied**.

477* **Bloqueos repetidos**: si el clasificador bloquea una acción 3 veces seguidas o 20 veces en total, el modo automático se pausa y Claude Code reanuda la solicitud. Aprobar la acción solicitada reanuda el modo automático. Estos umbrales no son configurables. Cualquier acción permitida reinicia el contador consecutivo, mientras que el contador total persiste para la sesión y se reinicia solo cuando su propio límite desencadena un retroceso. Claude Code no cuenta una denegación hacia ninguno de los umbrales cuando [una verificación de seguridad separada del modo automático rechaza la solicitud propia del clasificador](/docs/es/errors#auto-mode-cannot-determine-the-safety-of-an-action); la entrada vinculada cubre cómo Claude Code maneja esas denegaciones.486* **Bloqueos repetidos**: si el clasificador bloquea una acción 3 veces seguidas o 20 veces en total, el modo automático se pausa y Claude Code reanuda la solicitud. Aprobar la acción solicitada reanuda el modo automático. Estos umbrales no son configurables. Cualquier acción permitida reinicia el contador consecutivo, mientras que el contador total persiste para la sesión y se reinicia solo cuando su propio límite desencadena un retroceso. Claude Code no cuenta una denegación hacia ninguno de los umbrales cuando [una verificación de seguridad separada del modo automático rechaza la solicitud propia del clasificador](/docs/es/errors#auto-mode-cannot-determine-the-safety-of-an-action); la entrada vinculada cubre cómo Claude Code maneja esas denegaciones.

478* **Sesiones que no pueden solicitar**: una ejecución `-p` [no interactiva](/docs/es/headless) sin un [`--permission-prompt-tool`](/docs/es/cli-reference#cli-flags) no tiene solicitud a la que retroceder. Cuando los bloqueos repetidos alcanzan un umbral, la acción no se ejecuta y Claude sigue trabajando. Lo mismo se aplica cuando [una verificación de seguridad separada del modo automático rechaza la solicitud del clasificador](/docs/es/errors#auto-mode-cannot-determine-the-safety-of-an-action). Claude Code no detiene la ejecución en ninguno de los casos.487* **Sesiones que no pueden solicitar**: una ejecución `-p` [no interactiva](/docs/es/headless) sin un [`--permission-prompt-tool`](/docs/es/cli-reference#cli-flags) no tiene solicitud a la que retroceder. Cuando los bloqueos repetidos alcanzan un umbral, la acción no se ejecuta y Claude sigue trabajando. Lo mismo se aplica cuando [una verificación de seguridad separada del modo automático rechaza la solicitud del clasificador](/docs/es/errors#auto-mode-cannot-determine-the-safety-of-an-action). Claude Code no detiene la ejecución en ninguno de los casos.

488* **No hay veredicto del servidor**: bajo [revisión del clasificador del lado del servidor](#server-side-classifier-review), Claude Code niega una acción para la que el servidor no da veredicto, y detiene el turno después de diez respuestas seguidas sin veredicto. Consulte [El servidor no devolvió veredicto de seguridad](/docs/es/errors#the-server-returned-no-safety-verdict).

479* **Un cambio de modo durante una verificación**: si cambia modos de permiso mientras una verificación del clasificador está pendiente, Claude Code descarta un veredicto que el nuevo modo no habría solicitado en lugar de aplicarlo: se le solicita aprobación en su lugar, o la acción se niega automáticamente en [modo `dontAsk`](#allow-only-pre-approved-tools-with-dontask-mode).489* **Un cambio de modo durante una verificación**: si cambia modos de permiso mientras una verificación del clasificador está pendiente, Claude Code descarta un veredicto que el nuevo modo no habría solicitado en lugar de aplicarlo: se le solicita aprobación en su lugar, o la acción se niega automáticamente en [modo `dontAsk`](#allow-only-pre-approved-tools-with-dontask-mode).

480 490 

481Los bloqueos repetidos generalmente significan que el clasificador carece de contexto sobre su infraestructura. Use `/feedback` para reportar falsos positivos, o haga que un administrador [configure infraestructura de confianza](/docs/es/auto-mode-config).491Los bloqueos repetidos generalmente significan que el clasificador carece de contexto sobre su infraestructura. Use `/feedback` para reportar falsos positivos, o haga que un administrador [configure infraestructura de confianza](/docs/es/auto-mode-config).


492 * Un comando de shell que lleva [dominios permitidos por comando](/docs/es/sandboxing#per-command-allowed-domains-in-auto-mode) también se enruta al clasificador incluso cuando una regla de permitir coincide, porque una regla aprueba el comando, no sus hosts502 * Un comando de shell que lleva [dominios permitidos por comando](/docs/es/sandboxing#per-command-allowed-domains-in-auto-mode) también se enruta al clasificador incluso cuando una regla de permitir coincide, porque una regla aprueba el comando, no sus hosts

493 * Las reglas de solicitud que coinciden en el contenido de un comando, como `Bash(git push *)`, retroceden a una solicitud de permiso503 * Las reglas de solicitud que coinciden en el contenido de un comando, como `Bash(git push *)`, retroceden a una solicitud de permiso

494 2. Las acciones de solo lectura y ediciones de archivo en su directorio de trabajo se aprueban automáticamente, excepto escrituras en [rutas protegidas](#protected-paths) y [la primera lectura fuera de los directorios de trabajo](#first-read-outside-the-working-directories), que le solicita504 2. Las acciones de solo lectura y ediciones de archivo en su directorio de trabajo se aprueban automáticamente, excepto escrituras en [rutas protegidas](#protected-paths) y [la primera lectura fuera de los directorios de trabajo](#first-read-outside-the-working-directories), que le solicita

505 * En una sesión con [revisión del clasificador del lado del servidor](#server-side-classifier-review), las acciones de solo lectura y comandos de shell [en sandbox](/docs/es/sandboxing#sandbox-modes) esperan esa revisión y se bloquean si la marcan

495 3. Todo lo demás va al clasificador. Las herramientas de conector y herramientas MCP `requiresUserInteraction` que le solicitan directamente en el paso 1 nunca llegan al clasificador, por lo que ni una aprobación requerida por la organización ni un paso de consentimiento se aprueban automáticamente506 3. Todo lo demás va al clasificador. Las herramientas de conector y herramientas MCP `requiresUserInteraction` que le solicitan directamente en el paso 1 nunca llegan al clasificador, por lo que ni una aprobación requerida por la organización ni un paso de consentimiento se aprueban automáticamente

496 4. Si el clasificador bloquea, Claude recibe la razón e intenta una alternativa. En la mayoría de las sesiones la razón nombra la regla con la que coincidió el clasificador, como `[Data Exfiltration]`, en lugar de dar una explicación escrita; consulte [Revisar denegaciones](/docs/es/auto-mode-config#review-denials)507 4. Si el clasificador bloquea, Claude recibe la razón e intenta una alternativa. En la mayoría de las sesiones la razón nombra la regla con la que coincidió el clasificador, como `[Data Exfiltration]`, en lugar de dar una explicación escrita; consulte [Revisar denegaciones](/docs/es/auto-mode-config#review-denials)

497 508 

permissions.md +5 −5

Details

278 Comandos de solo lectura278 Comandos de solo lectura

279</h4>279</h4>

280 280 

281Claude Code reconoce un conjunto integrado de comandos de Bash como de solo lectura y los ejecuta sin una solicitud de permiso en todos los modos, excepto para una ruta que [`permissions.blockReadsOutsideWorkingDirectories`](/docs/es/settings-reference#permissions-blockreadsoutsideworkingdirectories) cierra. El conjunto incluye `ls`, `cat`, `echo`, `pwd`, `head`, `tail`, `grep`, `find`, `wc`, `which`, `diff`, `stat`, `du`, `cd` y formas de solo lectura de `git`. El conjunto no es configurable; para requerir una solicitud para uno de estos comandos, agregue una regla `ask` o `deny` para él.281Claude Code reconoce un conjunto integrado de comandos de Bash como de solo lectura y los ejecuta sin una solicitud de permiso en todos los modos, excepto para una ruta que [`permissions.blockReadsOutsideWorkingDirectories`](/docs/es/settings-reference#permissions-blockreadsoutsideworkingdirectories) cierra. El conjunto incluye `ls`, `cat`, `echo`, `pwd`, `head`, `tail`, `grep`, `find`, `wc`, `which`, `diff`, `stat`, `du`, `cd` y formas de solo lectura de `git`. El conjunto no es configurable; para requerir una solicitud para uno de estos comandos, agregue una regla `ask` o `deny` para él. En modo automático, estos comandos también pueden esperar la revisión del clasificador; vea [cómo el clasificador evalúa acciones](/docs/es/permission-modes#how-the-classifier-evaluates-actions).

282 282 

283Una redirección como `ls > out.txt` agrega una verificación en el destino. Vea [Redirections](#redirections).283Una redirección como `ls > out.txt` agrega una verificación en el destino. Vea [Redirections](#redirections).

284 284 


605 605 

606* Su configuración de proyecto, incluidas sus reglas de permisos y [hooks](/docs/es/hooks)606* Su configuración de proyecto, incluidas sus reglas de permisos y [hooks](/docs/es/hooks)

607* Sus servidores [`.mcp.json`](/docs/es/mcp#project-scope), sujetos a la misma [aprobación de servidor](/docs/es/mcp#project-server-approvals-and-workspace-trust) que al iniciar, y los servidores MCP de [alcance local](/docs/es/mcp#local-scope) que registró en él607* Sus servidores [`.mcp.json`](/docs/es/mcp#project-scope), sujetos a la misma [aprobación de servidor](/docs/es/mcp#project-server-approvals-and-workspace-trust) que al iniciar, y los servidores MCP de [alcance local](/docs/es/mcp#local-scope) que registró en él

608* Los [plugins](/docs/es/plugins) que su configuración habilita, sus [skills](/docs/es/skills#discovery-from-parent-and-nested-directories), y sus [subagentes](/docs/es/sub-agents)608* Los [plugins](/docs/es/plugins/overview) que su configuración habilita, sus [skills](/docs/es/skills#discovery-from-parent-and-nested-directories), y sus [subagentes](/docs/es/sub-agents)

609* Sus valores [`env`](/docs/es/settings-reference#env), aplicados sobre las variables de entorno de la configuración del directorio anterior, que permanecen en vigor609* Sus valores [`env`](/docs/es/settings-reference#env), aplicados sobre las variables de entorno de la configuración del directorio anterior, que permanecen en vigor

610 610 

611Claude Code también desconecta los servidores MCP del proyecto del directorio anterior y de [alcance local](/docs/es/mcp#local-scope), y los servidores de [plugins](/docs/es/mcp#plugin-provided-mcp-servers) que ya no están habilitados después del movimiento. Toma [directorios adicionales](#working-directories) de la configuración del nuevo directorio en lugar del anterior, y mantiene los directorios que agregó con `--add-dir` o `/add-dir`. Los hooks que el movimiento activa aún reciben [`${CLAUDE_PROJECT_DIR}`](/docs/es/hooks#reference-scripts-by-path) establecido en la raíz del proyecto donde comenzó la sesión.611Claude Code también desconecta los servidores MCP del proyecto del directorio anterior y de [alcance local](/docs/es/mcp#local-scope), y los servidores de [plugins](/docs/es/mcp#plugin-provided-mcp-servers) que ya no están habilitados después del movimiento. Toma [directorios adicionales](#working-directories) de la configuración del nuevo directorio en lugar del anterior, y mantiene los directorios que agregó con `--add-dir` o `/add-dir`. Los hooks que el movimiento activa aún reciben [`${CLAUDE_PROJECT_DIR}`](/docs/es/hooks#reference-scripts-by-path) establecido en la raíz del proyecto donde comenzó la sesión.


641Para compartir esa configuración entre proyectos, use uno de estos enfoques:641Para compartir esa configuración entre proyectos, use uno de estos enfoques:

642 642 

643* **Configuración a nivel de usuario**: coloque archivos en `~/.claude/agents/`, `~/.claude/output-styles/`, o `~/.claude/settings.json` para hacerlos disponibles en cada proyecto643* **Configuración a nivel de usuario**: coloque archivos en `~/.claude/agents/`, `~/.claude/output-styles/`, o `~/.claude/settings.json` para hacerlos disponibles en cada proyecto

644* **Plugins**: empaquete y distribuya configuración como un [plugin](/docs/es/plugins) que los equipos pueden instalar644* **Plugins**: empaquete y distribuya configuración como un [plugin](/docs/es/plugins/overview) que los equipos pueden instalar

645* **Lanzar desde el directorio de configuración**: ejecute Claude Code desde el directorio que contiene la configuración `.claude/` que desea645* **Lanzar desde el directorio de configuración**: ejecute Claude Code desde el directorio que contiene la configuración `.claude/` que desea

646 646 

647<h2 id="how-permissions-interact-with-sandboxing">647<h2 id="how-permissions-interact-with-sandboxing">


729Cada fila es un tipo de contenido que un repositorio puede proporcionar. Las columnas son las dos situaciones en las que no ha confiado en la carpeta misma: confió solo en una carpeta principal, o ejecutó `claude -p` o el SDK allí, que nunca muestra el diálogo de confianza. La columna de carpeta principal no se aplica dentro de un [repositorio anidado](#project-allow-rules-and-workspace-trust): en una sesión interactiva Claude Code muestra el diálogo de confianza para ella, y una ejecución `claude -p` o SDK allí sigue la columna `claude -p`.729Cada fila es un tipo de contenido que un repositorio puede proporcionar. Las columnas son las dos situaciones en las que no ha confiado en la carpeta misma: confió solo en una carpeta principal, o ejecutó `claude -p` o el SDK allí, que nunca muestra el diálogo de confianza. La columna de carpeta principal no se aplica dentro de un [repositorio anidado](#project-allow-rules-and-workspace-trust): en una sesión interactiva Claude Code muestra el diálogo de confianza para ella, y una ejecución `claude -p` o SDK allí sigue la columna `claude -p`.

730 730 

731| Lo que proporciona el repositorio | Confió solo en una carpeta principal | `claude -p` o el SDK, carpeta nunca confiada |731| Lo que proporciona el repositorio | Confió solo en una carpeta principal | `claude -p` o el SDK, carpeta nunca confiada |

732| :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |732| :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

733| [Hooks](/docs/es/hooks) en archivos de configuración, el bloque [`env`](/docs/es/settings-reference#env) y comandos auxiliares como [`apiKeyHelper`](/docs/es/settings-reference#apikeyhelper), y los [hooks](/docs/es/hooks#hooks-in-skills-and-agents) de una skill del proyecto y [`allowed-tools`](/docs/es/skills#pre-approve-tools-for-a-skill) | Utilizado | Utilizado. La confianza del espacio de trabajo nunca bloquea `allowed-tools` de una skill en ninguna sesión |733| [Hooks](/docs/es/hooks) en archivos de configuración, el bloque [`env`](/docs/es/settings-reference#env) y comandos auxiliares como [`apiKeyHelper`](/docs/es/settings-reference#apikeyhelper), y los [hooks](/docs/es/hooks#hooks-in-skills-and-agents) de una skill del proyecto y [`allowed-tools`](/docs/es/skills#pre-approve-tools-for-a-skill) | Utilizado | Utilizado. La confianza del espacio de trabajo nunca bloquea `allowed-tools` de una skill en ninguna sesión |

734| Reglas `permissions.allow` y `additionalDirectories` en `.claude/settings.json` | No se utiliza hasta que acepte el diálogo de confianza, que aparece nuevamente enumerándolas | No se utiliza. Claude Code imprime una advertencia [`this workspace has not been trusted`](/docs/es/errors#workspace-has-not-been-trusted) a stderr |734| Reglas `permissions.allow` y `additionalDirectories` en `.claude/settings.json` | No se utiliza hasta que acepte el diálogo de confianza, que aparece nuevamente enumerándolas | No se utiliza. Claude Code imprime una advertencia [`this workspace has not been trusted`](/docs/es/errors#workspace-has-not-been-trusted) a stderr |

735| Hooks de frontmatter en un [subagente](/docs/es/sub-agents#hooks-in-subagent-frontmatter) del proyecto, un plugin [`@skills-dir`](/docs/es/plugins-reference#skills-directory-plugins) del proyecto, y entradas [`extraKnownMarketplaces`](/docs/es/settings-reference#extraknownmarketplaces) del repositorio o un directorio `--add-dir` | No se utiliza, y no se ofrece diálogo | No se utiliza |735| Hooks de frontmatter en un [subagente](/docs/es/sub-agents#hooks-in-subagent-frontmatter) del proyecto, un plugin [`@skills-dir`](/docs/es/plugins/loading#plugins-shared-through-a-repository) del proyecto, y entradas [`extraKnownMarketplaces`](/docs/es/settings-reference#extraknownmarketplaces) del repositorio o un directorio `--add-dir` | No se utiliza, y no se ofrece diálogo | No se utiliza |

736| [`mcpServers`](/docs/es/sub-agents#scope-mcp-servers-to-a-subagent) en línea en el frontmatter de un subagente del repositorio o un directorio `--add-dir`. Antes de v2.1.238, Claude Code cargaba estos servidores en ambas situaciones | No se utiliza, y no se ofrece diálogo | No se utiliza |736| [`mcpServers`](/docs/es/sub-agents#scope-mcp-servers-to-a-subagent) en línea en el frontmatter de un subagente del repositorio o un directorio `--add-dir`. Antes de v2.1.238, Claude Code cargaba estos servidores en ambas situaciones | No se utiliza, y no se ofrece diálogo | No se utiliza |

737| Servidores en `.mcp.json`, incluidos los que el repositorio [aprueba en su propia configuración](/docs/es/mcp#project-server-approvals-and-workspace-trust) | Claude Code le pregunta antes de conectarlos. Las aprobaciones propias del repositorio no cuentan | Conectado sin preguntar, aprobado o no. El SDK los carga solo cuando `settingSources` incluye configuración del proyecto. `claude mcp list` en la misma carpeta aún reporta tal servidor como pendiente |737| Servidores en `.mcp.json`, incluidos los que el repositorio [aprueba en su propia configuración](/docs/es/mcp#project-server-approvals-and-workspace-trust) | Claude Code le pregunta antes de conectarlos. Las aprobaciones propias del repositorio no cuentan | Conectado sin preguntar, aprobado o no. El SDK los carga solo cuando `settingSources` incluye configuración del proyecto. `claude mcp list` en la misma carpeta aún reporta tal servidor como pendiente |

738| Un [`headersHelper`](/docs/es/mcp#trust-a-folder-before-its-headershelper-runs) en un servidor en `.mcp.json`. Antes de v2.1.238, Claude Code ejecutaba el auxiliar en ambas situaciones | No se ejecuta hasta que acepte el diálogo de confianza, que aparece nuevamente nombrando dónde se declara el auxiliar. Claude Code conecta el servidor solo con sus `headers` estáticos hasta entonces | No se ejecuta. Claude Code conecta el servidor con sus `headers` estáticos y imprime una línea [`headersHelper not run`](/docs/es/errors#headershelper-not-run) por servidor a stderr |738| Un [`headersHelper`](/docs/es/mcp#trust-a-folder-before-its-headershelper-runs) en un servidor en `.mcp.json`. Antes de v2.1.238, Claude Code ejecutaba el auxiliar en ambas situaciones | No se ejecuta hasta que acepte el diálogo de confianza, que aparece nuevamente nombrando dónde se declara el auxiliar. Claude Code conecta el servidor solo con sus `headers` estáticos hasta entonces | No se ejecuta. Claude Code conecta el servidor con sus `headers` estáticos y imprime una línea [`headersHelper not run`](/docs/es/errors#headershelper-not-run) por servidor a stderr |

platforms.md +3 −3

Details

34Las integraciones permiten que Claude trabaje con servicios fuera de su base de código.34Las integraciones permiten que Claude trabaje con servicios fuera de su base de código.

35 35 

36| Integración | Qué hace | Úselo para |36| Integración | Qué hace | Úselo para |

37| :----------------------------------- | :------------------------------------------------------------------------------------------------------------ | :-------------------------------------------------------------------------------------------------- |37| :----------------------------------------------- | :------------------------------------------------------------------------------------------------------------ | :-------------------------------------------------------------------------------------------------- |

38| [Chrome](/docs/es/chrome) | Controla su navegador con sus sesiones iniciadas | Prueba de aplicaciones web, rellenar formularios, automatizar sitios sin una API |38| [Chrome](/docs/es/chrome) | Controla su navegador con sus sesiones iniciadas | Prueba de aplicaciones web, rellenar formularios, automatizar sitios sin una API |

39| [GitHub Actions](/docs/es/github-actions) | Ejecuta Claude en su canalización de CI | Revisiones automáticas de PR, clasificación de problemas, mantenimiento programado |39| [GitHub Actions](/docs/es/github-actions) | Ejecuta Claude en su canalización de CI | Revisiones automáticas de PR, clasificación de problemas, mantenimiento programado |

40| [GitLab CI/CD](/docs/es/gitlab-ci-cd) | Lo mismo que GitHub Actions para GitLab | Automatización impulsada por CI en GitLab |40| [GitLab CI/CD](/docs/es/gitlab-ci-cd) | Lo mismo que GitHub Actions para GitLab | Automatización impulsada por CI en GitLab |

41| [Code Review](/docs/es/code-review) | Revisa automáticamente cada PR | Detectar errores antes de la revisión humana |41| [Code Review](/docs/es/code-review) | Revisa automáticamente cada PR | Detectar errores antes de la revisión humana |

42| [Slack](/docs/es/slack) | Responde a menciones de `@Claude` en sus canales | Convertir informes de errores en solicitudes de extracción desde el chat del equipo |42| [Slack](/docs/es/slack) | Responde a menciones de `@Claude` en sus canales | Convertir informes de errores en solicitudes de extracción desde el chat del equipo |

43| [Claude Tag](/docs/es/claude-tag) | Ejecuta `@Claude` como la identidad compartida de su organización con acceso configurado por el administrador | Acceso compartido del equipo en planes Team y Enterprise, en lugar de sesiones de Slack por usuario |43| [Claude Tag](https://claude.com/docs/claude-tag) | Ejecuta `@Claude` como la identidad compartida de su organización con acceso configurado por el administrador | Acceso compartido del equipo en planes Team y Enterprise, en lugar de sesiones de Slack por usuario |

44 44 

45Para integraciones no listadas aquí, [servidores MCP](/docs/es/mcp) y [conectores](/docs/es/desktop#connect-external-tools) le permiten conectar casi cualquier cosa: Linear, Notion, Google Drive o sus propias API internas.45Para integraciones no listadas aquí, [servidores MCP](/docs/es/mcp) y [conectores](/docs/es/desktop#connect-external-tools) le permiten conectar casi cualquier cosa: Linear, Notion, Google Drive o sus propias API internas.

46 46 


87* [GitLab CI/CD](/docs/es/gitlab-ci-cd): lo mismo para GitLab87* [GitLab CI/CD](/docs/es/gitlab-ci-cd): lo mismo para GitLab

88* [Code Review](/docs/es/code-review): revisión automática en cada solicitud de extracción88* [Code Review](/docs/es/code-review): revisión automática en cada solicitud de extracción

89* [Slack](/docs/es/slack): envíe tareas desde el chat del equipo, obtenga PR de vuelta89* [Slack](/docs/es/slack): envíe tareas desde el chat del equipo, obtenga PR de vuelta

90* [Claude Tag](/docs/es/claude-tag): ejecute `@Claude` como la identidad compartida de su organización en planes Team y Enterprise90* [Claude Tag](https://claude.com/docs/claude-tag): ejecute `@Claude` como la identidad compartida de su organización en planes Team y Enterprise

91 91 

92<h3 id="remote-access">92<h3 id="remote-access">

93 Acceso remoto93 Acceso remoto

plugin-dependencies.md +0 −267 deleted

File Deleted View Diff

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Restringir versiones de dependencias de plugins

6 

7> Declare restricciones de versión en las dependencias de plugins e incluya un conjunto de plugins curado detrás de una única instalación.

8 

9Un plugin puede depender de otros plugins listándolos en `plugin.json` o en su entrada de marketplace. De forma predeterminada, una dependencia rastrea la versión más reciente disponible, por lo que un lanzamiento ascendente puede cambiar la dependencia bajo su plugin sin previo aviso. Las restricciones de versión le permiten mantener una dependencia en un rango de versión probado hasta que elija cambiar.

10 

11Cuando instala un plugin que declara dependencias, Claude Code resuelve e instala automáticamente, excepto una dependencia cuya entrada de marketplace tiene una [`command` source](/docs/es/plugin-marketplaces#how-users-accept-the-command) o una [`headersHelper`](/docs/es/plugin-marketplaces#how-users-accept-a-headershelper-command), que instala usted mismo primero. Más tarde, `/reload-plugins`, la actualización automática del marketplace del plugin dependiente, volver a ejecutar `claude plugin install` en el plugin dependiente, y `claude plugin marketplace add` cada uno instala cualquier dependencia declarada que no esté instalada aún, bajo las mismas reglas; si una permanece sin resolver, consulte [Resolver errores de dependencia](#resolve-dependency-errors).

12 

13Esta guía es para autores de plugins que declaran dependencias en `plugin.json` y para mantenedores de marketplace que etiquetan lanzamientos. Las dependencias aquí son otros plugins; para los paquetes npm y Bun que usa el plugin en sí, consulte [Dependencias de paquetes Node.js](/docs/es/plugins-reference#node-js-package-dependencies). Para instalar plugins que tienen dependencias, consulte [Descubrir e instalar plugins](/docs/es/discover-plugins). Para el esquema de manifiesto completo, consulte la [referencia de Plugins](/docs/es/plugins-reference).

14 

15<h2 id="why-constrain-dependency-versions">

16 Por qué restringir versiones de dependencias

17</h2>

18 

19Considere un marketplace interno donde dos equipos publican plugins. El equipo de plataforma mantiene `secrets-vault`, un servidor MCP que envuelve un backend de secretos. El equipo de implementación mantiene `deploy-kit`, que llama a `secrets-vault` para obtener credenciales durante las implementaciones.

20 

21`deploy-kit` se prueba contra `secrets-vault` v2.1.0. Sin una restricción de versión, la próxima vez que el equipo de plataforma etiquete un lanzamiento que renombre una herramienta MCP, la actualización automática mueve `secrets-vault` de cada ingeniero a la nueva versión y `deploy-kit` se rompe.

22 

23Con una restricción de versión, `deploy-kit` declara que necesita `secrets-vault` en el rango `~2.1.0`. Los ingenieros con `deploy-kit` instalado permanecen en el parche `2.1.x` más alto que coincida. El equipo de implementación se actualiza en su propio cronograma publicando una nueva versión de `deploy-kit` con una restricción más amplia.

24 

25<h2 id="declare-a-dependency-with-a-version-constraint">

26 Declarar una dependencia con una restricción de versión

27</h2>

28 

29Liste las dependencias en el array `dependencies` del `plugin.json` de su plugin.

30 

31El siguiente manifiesto declara una dependencia sin versión y una dependencia restringida:

32 

33```json .claude-plugin/plugin.json theme={null}

34{

35 "name": "deploy-kit",

36 "version": "3.1.0",

37 "dependencies": [

38 "audit-logger",

39 { "name": "secrets-vault", "version": "~2.1.0" }

40 ]

41}

42```

43 

44Una entrada puede ser una cadena simple con solo el nombre del plugin, como `"audit-logger"` en el manifiesto `deploy-kit`, que depende de cualquier versión que proporcione el marketplace de ese plugin. Para más control, use un objeto con estos campos:

45 

46| Field | Type | Description |

47| :------------ | :----- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

48| `name` | string | Nombre del plugin. Se resuelve dentro del mismo marketplace que el plugin declarante. Requerido. |

49| `version` | string | Un [rango semver](https://github.com/npm/node-semver#ranges) como `~2.1.0`, `^2.0`, `>=1.4`, o `=2.1.0`. La dependencia se obtiene en la versión etiquetada más alta que satisface este rango. |

50| `marketplace` | string | Un marketplace diferente para resolver `name` en. Las dependencias entre marketplaces están bloqueadas a menos que el marketplace de destino esté listado en [`allowCrossMarketplaceDependenciesOn`](#depend-on-a-plugin-from-another-marketplace) en el `marketplace.json` del marketplace raíz. |

51 

52Las versiones previas al lanzamiento como `2.0.0-beta.1` se excluyen a menos que su rango opte por un sufijo previo al lanzamiento como `^2.0.0-0`.

53 

54<h2 id="bundle-plugins-for-a-team">

55 Agrupar plugins para un equipo

56</h2>

57 

58Además del `name` requerido, un manifiesto de plugin puede consistir únicamente en un array `dependencies`. Instalarlo extrae todas las dependencias, lo que lo convierte en una forma de empaquetar un conjunto de plugins curado detrás de una única instalación.

59 

60Por ejemplo, un equipo de plataforma puede publicar paquetes específicos de roles en un marketplace interno para que los ingenieros ejecuten un único `claude plugin install` en lugar de instalar cada herramienta por separado:

61 

62```json .claude-plugin/plugin.json theme={null}

63{

64 "name": "backend-standard",

65 "version": "1.0.0",

66 "description": "Standard plugin set for backend engineers",

67 "dependencies": [

68 "secrets-vault",

69 "deploy-kit",

70 { "name": "db-migrate", "version": "^3.0" },

71 "oncall-runbook"

72 ]

73}

74```

75 

76Instalar `backend-standard` resuelve e instala las cuatro dependencias.

77 

78Para agregar una herramienta al conjunto estándar más adelante, publique una nueva versión de `backend-standard` con la dependencia adicional. A menos que el marketplace [actualice automáticamente](/docs/es/discover-plugins#configure-auto-updates), los ingenieros adoptan la nueva versión de una de dos formas:

79 

80* Habilite la actualización automática para el marketplace en `/plugin`. La siguiente actualización automática mueve el paquete a la nueva versión e instala cualquier dependencia que agregue.

81* Ejecute `claude plugin update backend-standard`, luego `/reload-plugins` para instalar las dependencias recién agregadas.

82 

83Para implementar paquetes en toda una organización, agregue el plugin de paquete a `enabledPlugins` en [configuración administrada](/docs/es/settings-reference#enabledplugins).

84 

85<h2 id="depend-on-a-plugin-from-another-marketplace">

86 Depender de un plugin de otro marketplace

87</h2>

88 

89De forma predeterminada, Claude Code se niega a instalar automáticamente una dependencia que vive en un marketplace diferente al del plugin que la declara. Esto evita que un marketplace extraiga silenciosamente plugins de una fuente que no ha revisado.

90 

91Para permitirlo, el mantenedor del marketplace raíz agrega el nombre del marketplace de destino a `allowCrossMarketplaceDependenciesOn` en `marketplace.json`. El marketplace raíz es el que aloja el plugin que el usuario está instalando; solo se consulta su lista de permitidos, por lo que la confianza no se encadena a través de marketplaces intermedios.

92 

93El siguiente `marketplace.json` permite que `deploy-kit` dependa de un plugin de `acme-shared`:

94 

95```json .claude-plugin/marketplace.json theme={null}

96{

97 "name": "acme-tools",

98 "owner": { "name": "Acme" },

99 "allowCrossMarketplaceDependenciesOn": ["acme-shared"],

100 "plugins": [

101 {

102 "name": "deploy-kit",

103 "source": "./deploy-kit",

104 "dependencies": [

105 { "name": "audit-logger", "marketplace": "acme-shared" }

106 ]

107 }

108 ]

109}

110```

111 

112Si el campo falta o no incluye el marketplace de destino, la instalación falla con un error `cross-marketplace` que nombra el campo a establecer. Los usuarios aún pueden instalar la dependencia manualmente primero, lo que satisface la restricción sin cambiar la lista de permitidos.

113 

114<h2 id="test-a-plugin-and-its-dependency-locally">

115 Pruebe un plugin y su dependencia localmente

116</h2>

117 

118Si está desarrollando un plugin y el plugin del que depende al mismo tiempo, cargue ambos con `--plugin-dir`:

119 

120```bash theme={null}

121claude --plugin-dir ./my-dependency --plugin-dir ./my-plugin

122```

123 

124La copia local de la dependencia satisface la entrada de dependencia de su plugin, incluso cuando la entrada nombra un marketplace, por lo que no necesita instalar la dependencia desde su marketplace. Claude Code no verifica una [restricción de versión](#declare-a-dependency-with-a-version-constraint) contra una copia local, por lo que el `plugin.json` local no necesita una `version`. Antes de v2.1.242, una entrada de dependencia que nombraba un marketplace nunca coincidía con la copia local, y Claude Code deshabilitaba su plugin al cargar.

125 

126Cuando ambos plugins se encuentran en una carpeta padre común, puede pasar esa carpeta a `--plugin-dir` una sola vez. Si la carpeta no es en sí misma un plugin, Claude Code carga cada carpeta secundaria que tenga un `.claude-plugin/plugin.json`. Requiere Claude Code v2.1.265 o posterior.

127 

128Si no ha instalado la dependencia desde su marketplace, su plugin deja de cargar cuando la copia local desaparece:

129 

130* **Deshabilitó la copia local**: Claude Code deshabilita su plugin en la siguiente carga de plugin. Para una entrada de dependencia que nombra un marketplace, Claude Code reporta `Dependency "<name>@inline" is disabled — enable it or remove the dependency`; para una entrada de nombre simple, lo reporta por su nombre simple. `<name>@inline` es cómo Claude Code identifica cada plugin `--plugin-dir` y `--plugin-url`.

131* **Inició una sesión sin la bandera `--plugin-dir` de la dependencia**: Claude Code reporta la dependencia como no instalada. Pase la bandera nuevamente, o instale la dependencia desde su marketplace.

132 

133<h2 id="tag-plugin-releases-for-version-resolution">

134 Etiquetar lanzamientos de plugins para la resolución de versiones

135</h2>

136 

137Claude Code resuelve restricciones de versión contra etiquetas de git en el repositorio que aloja la dependencia: el repositorio propio del plugin para fuentes de plugin `github`, `url` y `git-subdir` [plugin sources](/docs/es/plugin-marketplaces#plugin-sources), o el repositorio del marketplace para un plugin al que el marketplace hace referencia mediante una ruta relativa. Para que Claude Code encuentre las versiones disponibles de una dependencia, los lanzamientos del plugin ascendente deben etiquetarse utilizando una convención de nomenclatura específica.

138 

139Etiquete cada lanzamiento como `{plugin-name}--v{version}`, donde `{version}` coincide con el campo `version` en el `plugin.json` de ese commit. Desde el directorio del plugin, ejecute:

140 

141```bash theme={null}

142claude plugin tag --push

143```

144 

145El comando `claude plugin tag` deriva el nombre de la etiqueta del manifiesto del plugin y de la entrada del marketplace que lo contiene. Antes de crear la etiqueta, valida el contenido del plugin, verifica que `plugin.json` y la entrada del marketplace coincidan en la versión, requiere un árbol de trabajo limpio bajo el directorio del plugin y se niega si la etiqueta ya existe.

146 

147* `--push` envía la etiqueta al remoto `origin`, por lo que el repositorio necesita un remoto `origin` configurado. Pase `--remote` para enviar a uno diferente.

148* Si el envío falla, la etiqueta se crea localmente de todas formas y el comando sale con un error.

149* Con `--push`, una ejecución exitosa termina con `Created tag secrets-vault--v2.1.0` y `Pushed to origin`, donde la última línea nombra el remoto al que se envió. Sin `--push`, el comando imprime el comando `git push` a ejecutar en su lugar.

150* `--dry-run` imprime lo que se etiquetaría sin crearlo.

151 

152Ejecutar `git tag secrets-vault--v2.1.0` directamente es equivalente si mantiene `plugin.json` y la entrada del marketplace sincronizados usted mismo.

153 

154El prefijo del nombre del plugin permite que un repositorio de marketplace aloje múltiples plugins con líneas de versión independientes. El separador `--v` se analiza como una coincidencia de prefijo en el nombre completo del plugin, por lo que los nombres de plugin que contienen guiones se manejan correctamente.

155 

156Cuando instala un plugin que declara `{ "name": "secrets-vault", "version": "~2.1.0" }`, Claude Code enumera las etiquetas en el repositorio que aloja `secrets-vault`, filtra las que comienzan con `secrets-vault--v` y obtiene la versión más alta que satisface `~2.1.0`. Si ninguna etiqueta en el repositorio propio del plugin satisface el rango, la instalación falla con `Dependency "secrets-vault@acme-tools" has no git tag satisfying ~2.1.0`, que nombra la dependencia junto con su marketplace. Para un plugin de ruta relativa sin etiqueta coincidente, Claude Code instala la copia actual del marketplace en su lugar y verifica la restricción cuando se carga el plugin.

157 

158Para un plugin al que el marketplace hace referencia mediante una ruta relativa, un marketplace agregado como una ruta de carpeta local resuelve etiquetas de la misma manera cuando la carpeta es un repositorio de git. Esto requiere Claude Code v2.1.196 o posterior. En dos casos Claude Code instala la dependencia desde el contenido actual de la carpeta en su lugar:

159 

160* Las versiones anteriores no leen etiquetas de un marketplace de carpeta local, por lo que una dependencia restringida se carga solo si esa copia satisface el rango.

161* Una carpeta local que no es un repositorio de git no tiene etiquetas, independientemente de la versión.

162 

163El semver de la etiqueta resuelta se registra por separado del `version` de `plugin.json`, por lo que las comprobaciones de restricción utilizan la etiqueta que se obtuvo realmente incluso si el `plugin.json` en ese commit tiene un valor obsoleto. El nombre del directorio de caché para una instalación resuelta por etiqueta incluye un sufijo SHA de commit de 12 caracteres, por lo que si un mantenedor mueve forzadamente una etiqueta a un commit diferente, la siguiente instalación obtiene un directorio de caché nuevo en lugar de reutilizar contenido obsoleto.

164 

165<Note>

166 Para dependencias con una fuente de plugin `npm`, `archive` o `command` [plugin source](/docs/es/plugin-marketplaces#plugin-sources), la restricción no controla qué versión se obtiene, ya que la resolución basada en etiquetas se aplica solo a fuentes respaldadas por git. La restricción se verifica en tiempo de carga, y el plugin dependiente se deshabilita con `dependency-version-unsatisfied` si la versión instalada no la satisface. Para una fuente `command`, Claude Code verifica la versión en el `plugin.json` de la dependencia e ignora el sufijo de hash de contenido; una dependencia cuyo `plugin.json` no establece una versión no satisface ninguna restricción, por lo que establezca una antes de restringirla.

167 

168 Claude Code nunca instala una dependencia con una fuente `command` en sí misma, por lo que los usuarios [la instalan primero](/docs/es/plugin-marketplaces#how-users-accept-the-command). Claude Code nunca ejecuta el `headersHelper` en una entrada de marketplace de dependencia tampoco, por lo que los usuarios [instalan ese plugin primero](/docs/es/plugin-marketplaces#how-users-accept-a-headershelper-command).

169</Note>

170 

171<h2 id="how-constraints-interact">

172 Cómo interactúan las restricciones

173</h2>

174 

175Cuando varios plugins instalados restringen la misma dependencia, Claude Code intersecta sus rangos y resuelve la dependencia a la versión más alta que satisface todos ellos. La tabla a continuación muestra cómo se resuelven las combinaciones comunes.

176 

177| Plugin A requiere | Plugin B requiere | Resultado |

178| :---------------- | :---------------- | :------------------------------------------------------------------------------------------------------------------------------- |

179| `^2.0` | `>=2.1` | Una instalación en la etiqueta `2.x` más alta en o por encima de `2.1.0`. Ambos plugins se cargan. |

180| `~2.1` | `~3.0` | La instalación del plugin B falla con `range-conflict`. El plugin A y la dependencia permanecen como estaban. |

181| `=2.1.0` | ninguno | La dependencia permanece en `2.1.0`. La actualización automática omite versiones más nuevas mientras el plugin A está instalado. |

182 

183La actualización automática obtiene una dependencia restringida en la etiqueta git más alta que satisface el rango de cada plugin instalado, en lugar de obtenerla en la versión más reciente del marketplace, por lo que la dependencia continúa recibiendo actualizaciones dentro de su rango permitido. Si ninguna etiqueta satisface todos los rangos, la actualización automática omite esa dependencia y enumera la omisión en la pestaña Errores de `/plugin`, nombrando el plugin que la restringe.

184 

185Cuando desinstala el último plugin que restringe una dependencia, la dependencia ya no se mantiene y reanuda el seguimiento de su entrada de marketplace en la próxima actualización.

186 

187<h2 id="enable-or-disable-a-plugin-with-dependencies">

188 Habilitar o deshabilitar un plugin con dependencias

189</h2>

190 

191Esta sección cubre plugins instalados desde un marketplace. Para una copia que cargó con `--plugin-dir`, consulte [Probar un plugin y su dependencia localmente](#test-a-plugin-and-its-dependency-locally).

192 

193Habilitar un plugin también habilita los plugins de los que depende, y deshabilitar un plugin se bloquea si otro plugin habilitado aún lo necesita.

194 

195Cuando habilita un plugin, Claude Code también habilita sus dependencias en el mismo ámbito. Si una dependencia tiene sus propias dependencias, Claude Code también las habilita. El mensaje de éxito lista qué más se habilitó junto con el plugin que nombró. Si una dependencia no se puede habilitar, el comando se rechaza y le dice qué está bloqueando y cómo solucionarlo:

196 

197| Condición | Resultado |

198| :-------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------- |

199| Una dependencia no está instalada | La habilitación falla e imprime el comando `claude plugin install` para cada dependencia faltante. |

200| Una dependencia está bloqueada por la política de plugins de su organización | La habilitación falla y nombra la dependencia bloqueada. |

201| Una dependencia se establece en `false` en un ámbito con mayor precedencia que el ámbito de destino | La habilitación falla. Habilite la dependencia en ese ámbito, o pase `--scope` para escribir allí. |

202| Todas las dependencias están instaladas y permitidas | La habilitación tiene éxito y escribe `true` para el plugin y cada dependencia que no estaba ya habilitada en el ámbito de destino. |

203 

204Esto se mantiene incluso cuando una dependencia establece [`defaultEnabled: false`](/docs/es/plugins-reference#default-enablement) en su manifiesto, porque Claude Code escribe un `true` explícito para ella. Lo mismo se aplica en la instalación: una dependencia extraída para satisfacer un plugin activo se instala con `true` independientemente de su propio valor predeterminado.

205 

206Cuando deshabilita un plugin, Claude Code se rechaza si otro plugin habilitado aún depende de él. El error nombra los plugins que dependen de él y le da un comando encadenado que los deshabilita en el orden correcto, terminando con el que pidió.

207 

208Por ejemplo, si `deploy-kit` depende de `secrets-vault`, deshabilitar `secrets-vault` solo falla con una salida similar a la siguiente:

209 

210```text theme={null}

211secrets-vault is still required by deploy-kit. Disable that plugin first, or

212disable everything together: claude plugin disable deploy-kit@acme-tools && claude plugin disable secrets-vault@acme-tools

213```

214 

215Copie el comando encadenado del error para deshabilitar el conjunto completo en un paso.

216 

217<h2 id="remove-orphaned-auto-installed-dependencies">

218 Eliminar dependencias auto-instaladas huérfanas

219</h2>

220 

221Las dependencias auto-instaladas permanecen en el disco después de que se desinstalan los plugins que las instalaron, en caso de que desee reinstalar un plugin dependiente o desee seguir usando la dependencia directamente. Para limpiarlas, ejecute `claude plugin prune` para listar las dependencias auto-instaladas que ya no tienen ningún plugin instalado que las requiera y eliminarlas después de un mensaje de confirmación.

222 

223```bash theme={null}

224claude plugin prune

225```

226 

227Si nada califica para su eliminación, el comando imprime `Nothing to prune` con la razón y sale. Esta es la salida esperada en una instalación nueva, no un error.

228 

229De forma predeterminada, prune opera en el ámbito del usuario y solicita confirmación antes de eliminar cualquier cosa:

230 

231* `--scope project` o `--scope local` se dirige a un ámbito diferente.

232* `--dry-run` lista qué se eliminaría sin cambiar nada.

233* `-y` omite el mensaje de confirmación. Cuando stdin o stdout no es una terminal, prune lista los huérfanos y sale sin eliminarlos a menos que se pase `-y`.

234 

235Para prune como parte de una desinstalación, pase `--prune` a `claude plugin uninstall`. Después de eliminar el plugin nombrado, Claude Code escanea y elimina cualquier dependencia auto-instalada que ahora esté huérfana. Los plugins que instaló usted mismo nunca se podan, solo los instalados automáticamente a través del array `dependencies` de otro plugin.

236 

237El mismo comportamiento de confirmación se aplica. Cuando stdin o stdout no es una terminal, la desinstalación se completa, pero el paso prune lista los huérfanos y no elimina nada a menos que se pase `-y`.

238 

239Por ejemplo, para desinstalar `deploy-kit` y limpiar las dependencias que deja atrás:

240 

241```bash theme={null}

242claude plugin uninstall deploy-kit --prune

243```

244 

245<h2 id="resolve-dependency-errors">

246 Resolver errores de dependencia

247</h2>

248 

249Los problemas de dependencia aparecen en `claude plugin list` y en la interfaz `/plugin`, como mensajes de error descriptivos en lugar de los códigos literales en esta tabla. Claude Code deshabilita el plugin afectado hasta que resuelva el error. La tabla a continuación enumera los errores más comunes y cómo resolverlos.

250 

251| Error | Significado | Cómo resolver |

252| :------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

253| `dependency-unsatisfied` | Una dependencia declarada no está instalada, o está instalada pero deshabilitada. | Ejecute el comando `claude plugin install` que se muestra en el mensaje de error. Si el marketplace de la dependencia aún no está configurado, agréguelo con `claude plugin marketplace add` y Claude Code resuelve la dependencia automáticamente. Si la dependencia está deshabilitada, habilítela. |

254| `range-conflict` | Los requisitos de versión para una dependencia no se pueden combinar. El mensaje de error nombra la causa: ninguna versión satisface todos los rangos, un rango no es una sintaxis semver válida, o los rangos combinados son demasiado complejos para intersectar. | Desinstale o actualice uno de los plugins en conflicto, corrija cualquier cadena `version` inválida, simplifique cadenas `\|\|` largas, o pida al autor ascendente que amplíe su restricción. |

255| `dependency-version-unsatisfied` | La versión de la dependencia instalada está fuera del rango declarado de este plugin. | Ejecute `claude plugin install <dependency>@<marketplace>` para re-resolver la dependencia contra todas las restricciones actuales. |

256| `no-matching-tag` | El repositorio de la dependencia no tiene una etiqueta `{name}--v*` que satisfaga el rango. | Verifique que el ascendente haya etiquetado lanzamientos usando la convención anterior, o relaje su rango. |

257 

258Para verificar estos errores mediante programación, ejecute `claude plugin list --json`. Los plugins con problemas incluyen un campo `errors` que los enumera. Los plugins que se cargaron correctamente omiten el campo.

259 

260<h2 id="see-also">

261 Ver también

262</h2>

263 

264* [Crear plugins](/docs/es/plugins): construir plugins con skills, agentes y hooks

265* [Crear y distribuir un marketplace de plugins](/docs/es/plugin-marketplaces): alojar plugins para su equipo

266* [Referencia de Plugins](/docs/es/plugins-reference#plugin-manifest-schema): el esquema completo de `plugin.json`

267* [Gestión de versiones](/docs/es/plugins-reference#version-management): cómo se resuelve la versión propia de un plugin y se utiliza como clave de caché

plugin-evals.md +94 −39

Details

6 6 

7> Escriba casos de eval para su plugin de Claude Code, ejecútelos con claude plugin eval, califique los resultados, compare con una línea base sin plugin y controle CI en la puntuación.7> Escriba casos de eval para su plugin de Claude Code, ejecútelos con claude plugin eval, califique los resultados, compare con una línea base sin plugin y controle CI en la puntuación.

8 8 

9`claude plugin eval` ejecuta su [plugin](/docs/es/plugins) contra un conjunto de casos de prueba y califica los resultados. Cada caso es un prompt realista más uno o más calificadores. Un calificador es una verificación de aprobación/fallo sobre lo que Claude produjo, como una expresión regular sobre la respuesta, si se llamó a una herramienta particular, o una rúbrica que un segundo modelo juzga sobre la respuesta.9El comando shell `claude plugin eval` ejecuta su [plugin](/docs/es/plugins/overview) contra un conjunto de casos de prueba y califica los resultados. Cada caso es un prompt realista más uno o más calificadores. Un calificador es una verificación de aprobación/fallo sobre lo que Claude produjo, como una expresión regular sobre la respuesta, si se llamó a una herramienta particular, o una rúbrica que un segundo modelo juzga sobre la respuesta.

10 10 

11No tiene que escribir el conjunto a mano; `claude plugin eval init` le pregunta sobre su plugin, propone los casos y calificadores, los prueba, y escribe los archivos, y puede pedirle a Claude que haga lo mismo desde una sesión que ya tiene abierta.11No tiene que escribir el conjunto a mano; `claude plugin eval init` le pregunta sobre su plugin, propone los casos y calificadores, los prueba, y escribe los archivos, y puede pedirle a Claude que haga lo mismo desde una sesión que ya tiene abierta.

12 12 

13Use evals para medir qué tan confiablemente su plugin dirige a Claude hacia el resultado correcto, para detectar regresiones cuando cambia el plugin o se lanza un nuevo modelo, y para ver qué contribuye el plugin en comparación con ningún plugin en absoluto.13Use evals para:

14 14 

15Esta página es para autores de plugins y skills que tienen un plugin funcional y desean probar su comportamiento, y para equipos que controlan cambios de plugins en CI. Su formato de caso es separado del archivo `evals/evals.json` que usa el [plugin skill-creator](/docs/es/skills#run-evals-with-skill-creator). Para crear un plugin, consulte [Crear plugins](/docs/es/plugins); para verificar los archivos de un plugin en busca de errores de sintaxis y esquema en lugar de su comportamiento, use [`claude plugin validate`](/docs/es/plugins-reference#plugin-validate).15* Medir qué tan confiablemente su plugin dirige a Claude a producir el resultado correcto

16* Detectar regresiones cuando cambia el plugin o se lanza un nuevo modelo

17* Ver qué contribuye el plugin en comparación con ningún plugin

18 

19Esta página es para autores de plugins y skills que tienen un plugin funcional y desean probar su comportamiento, y para equipos que controlan cambios de plugins en CI. Su formato de caso es separado del archivo `evals/evals.json` que usa el [plugin skill-creator](/docs/es/skills#run-evals-with-skill-creator). Para crear un plugin, consulte [Crear un plugin](/docs/es/plugins/create); para verificar los archivos de un plugin en busca de errores de sintaxis y esquema en lugar de su comportamiento, use [`claude plugin validate`](/docs/es/plugins/cli-reference#plugin-validate).

16 20 

17<Note>21<Note>

18 Cada ejecución de eval y cada calificador de juez es una llamada de modelo real en su cuenta, contada contra el uso de su plan o su factura de API, así que verifique los [requisitos](#requirements) primero. Luego [cree su primer conjunto de eval](#create-your-first-eval-suite), o vaya a [Ejecutar evals en CI](#run-evals-in-ci) si ya tiene uno.22 Cada ejecución de eval y cada calificador de juez es una llamada de modelo real en su cuenta, contada contra el uso de su plan o su factura de API, así que verifique los [requisitos](#requirements) primero. Luego [cree su primer conjunto de eval](#create-your-first-eval-suite), o vaya a [Ejecutar evals en CI](#run-evals-in-ci) si ya tiene uno.


25Para ejecutar evals de plugins necesita:29Para ejecutar evals de plugins necesita:

26 30 

27* Claude Code v2.1.269 o posterior. Ejecute `claude --version` para verificar y `claude update` para actualizar.31* Claude Code v2.1.269 o posterior. Ejecute `claude --version` para verificar y `claude update` para actualizar.

28* Un directorio de plugin con un manifiesto `plugin.json` o `.claude-plugin/plugin.json`, o un [plugin de directorio de skills](/docs/es/plugins-reference#skills-directory-plugins).32* Un directorio de plugin con un manifiesto `plugin.json` o `.claude-plugin/plugin.json`, o un [plugin de directorio de skills](/docs/es/plugins/loading#plugins-shared-through-a-repository).

29* La misma autenticación y proveedor de modelo que usan sus sesiones normales de Claude Code. Las ejecuciones de eval, los calificadores puntuados por juez, y `claude plugin eval init` llaman al modelo con sus credenciales, por lo que cuentan contra sus límites de uso del plan o su factura de API. Cuando el comando reporta un costo, la cifra es una [estimación de precio de lista](/docs/es/costs) de esas llamadas.33* La misma autenticación y proveedor de modelo que usan sus sesiones normales de Claude Code. Las ejecuciones de eval, los calificadores puntuados por juez, y `claude plugin eval init` llaman al modelo con sus credenciales, por lo que cuentan contra sus límites de uso del plan o su factura de API. Cuando el comando reporta un costo, la cifra es una [estimación de precio de lista](/docs/es/costs) de esas llamadas.

30 34 

31<h2 id="how-an-eval-run-works">35<h2 id="how-an-eval-run-works">


44 Cómo se califica un caso48 Cómo se califica un caso

45</h3>49</h3>

46 50 

47Una ejecución de un agente no determinista le dice poco, así que cada caso se ejecuta tres veces por defecto. La puntuación de una ejecución es la fracción de sus calificadores que aprobaron, ponderada si establece pesos, y la puntuación del caso es el promedio en sus ejecuciones. Un caso aprueba cuando su puntuación cumple con el [`--threshold`](#command-options), `1.0` por defecto. En llamadas de modelo, un conjunto hace aproximadamente casos × ejecuciones ejecuciones de agentes con el plugin y tantas más para la [línea base sin plugin](#the-no-plugin-baseline), más tres llamadas cortas de juez por calificador `llm` o `baseline` por ejecución.51Una ejecución de un agente no determinista le dice poco, así que cada caso se ejecuta tres veces por defecto. La puntuación de una ejecución es la fracción de sus calificadores que aprobaron, ponderada si establece pesos, y la puntuación del caso es el promedio en sus ejecuciones. Un caso aprueba cuando su puntuación cumple con el [`--threshold`](#command-options), `1.0` por defecto.

52 

53En llamadas de modelo, un conjunto hace aproximadamente casos × ejecuciones ejecuciones de agentes con el plugin y tantas más para la [línea base sin plugin](#the-no-plugin-baseline), más tres llamadas cortas de juez por calificador `llm` o `baseline` por ejecución.

48 54 

49<h3 id="the-no-plugin-baseline">55<h3 id="the-no-plugin-baseline">

50 La línea base sin plugin56 La línea base sin plugin

51</h3>57</h3>

52 58 

53Una puntuación alta por sí sola no le dice que el plugin ayudó, porque Claude podría hacerlo igual sin él. Para separar los dos, las ejecuciones de cada caso se repiten sin plugin cargado por defecto, y obtiene dos puntuaciones, `WITH` y `W/OUT`. Su diferencia, `Δ`, es lo que el plugin contribuyó. Si un caso puntúa 1.0 tanto con como sin el plugin, el plugin no es lo que lo hizo pasar. Los dos conjuntos de ejecuciones se llaman el brazo con y el brazo sin; [Comparar con una línea base sin plugin](#compare-against-a-no-plugin-baseline) cubre cómo se califican los calificadores en ambos brazos y cómo desactivar la línea base.59Una puntuación alta por sí sola no le dice que el plugin ayudó, porque Claude podría hacerlo igual sin él. Para separar los dos, las ejecuciones de cada caso se repiten sin plugin cargado por defecto, y obtiene dos puntuaciones, `WITH` y `W/OUT`. Su diferencia, `Δ`, es lo que el plugin contribuyó. Si un caso puntúa 1.0 tanto con como sin el plugin, el plugin no es lo que lo hizo pasar.

60 

61Los dos conjuntos de ejecuciones se llaman el brazo con y el brazo sin; [Comparar con una línea base sin plugin](#compare-against-a-no-plugin-baseline) cubre cómo se califican los calificadores en ambos brazos y cómo desactivar la línea base.

54 62 

55<h2 id="create-your-first-eval-suite">63<h2 id="create-your-first-eval-suite">

56 Cree su primer conjunto de eval64 Cree su primer conjunto de eval


70 claude plugin eval init78 claude plugin eval init

71 ```79 ```

72 80 

73 Si Claude Code aún no confía en este directorio, primero pregunta `Trust this plugin directory?`; responda `y`. Luego se abre una sesión interactiva de Claude Code. Claude lee su plugin y le pregunta qué se vería bien, propone prompts que deberían y no deberían activar el plugin, diseña calificadores para cada uno, los prueba una vez para verificar que se comportan, y escribe un directorio de caso por prompt bajo `evals/`, cada uno nombrado según su prompt. Cuando Claude le dice que el conjunto está listo, salga de esa sesión con `/exit` o Ctrl+D para volver a su shell.81 Si Claude Code aún no confía en este directorio, primero pregunta `Trust this plugin directory?`; responda `y`.

82 

83 Luego se abre una sesión interactiva de Claude Code. Claude lee su plugin y le pregunta qué se vería bien, propone prompts que deberían y no deberían activar el plugin, diseña calificadores para cada uno, los prueba una vez para verificar que se comportan, y escribe un directorio de caso por prompt bajo `evals/`, cada uno nombrado según su prompt. Cuando Claude le dice que el conjunto está listo, salga de esa sesión con `/exit` o Ctrl+D para volver a su shell.

74 84 

75 Si ya tiene una sesión de Claude Code abierta en la raíz del plugin, puede pedirle a Claude que ejecute `claude plugin eval init`. Claude ejecuta el comando y luego le hace las mismas preguntas en esa conversación.85 Si ya tiene una sesión de Claude Code abierta en la raíz del plugin, puede pedirle a Claude que ejecute `claude plugin eval init`. Claude ejecuta el comando y luego le hace las mismas preguntas en esa conversación.

76 86 


171Write me a commit message for this change: I renamed getUser to fetchUser and updated the three call sites.181Write me a commit message for this change: I renamed getUser to fetchUser and updated the three call sites.

172```182```

173 183 

174Cada ejecución comienza en un directorio de trabajo vacío, así que ponga lo que la tarea necesita en el prompt mismo, o [configure el espacio de trabajo](#add-setup-or-history-with-case-yaml) primero. La [lista completa de campos de frontmatter](#prompt-md-fields) cubre el modelo, timeout, tags, y variables de entorno.184Cada ejecución comienza en un directorio de trabajo vacío, así que ponga lo que la tarea necesita en el prompt mismo, o [configure el espacio de trabajo](#add-setup-or-history-with-case-yaml) primero.

185 

186La [lista completa de campos de frontmatter](#prompt-md-fields) cubre el modelo, timeout, tags, y variables de entorno.

175 187 

176Cada archivo bajo `graders/` es una verificación aplicada después de la ejecución. Abra `evals/first-case/graders/criteria.md` y reemplace el marcador de posición con una rúbrica para el modelo de juez, escrita como condiciones PASS y FAIL concretas:188Cada archivo bajo `graders/` es una verificación aplicada después de la ejecución. Abra `evals/first-case/graders/criteria.md` y reemplace el marcador de posición con una rúbrica para el modelo de juez, escrita como condiciones PASS y FAIL concretas:

177 189 


184FAIL if <what a wrong or missing response looks like>.196FAIL if <what a wrong or missing response looks like>.

185```197```

186 198 

187Luego agregue un segundo calificador que verifique si su skill es lo que produjo la respuesta. Cree `evals/first-case/graders/skill-fired.md`, reemplazando `your-skill-name` con el `name` del `SKILL.md` de su skill:199Luego agregue un segundo calificador que verifique si su skill es lo que produjo la respuesta. Cree `evals/first-case/graders/skill-fired.md`, reemplazando `your-skill-name` con el nombre del directorio del skill bajo `skills/`, que es el nombre por el que Claude lo invoca:

188 200 

189```markdown theme={null}201```markdown theme={null}

190---202---


194---206---

195```207```

196 208 

197Esto aprueba cuando Claude invocó ese skill al menos una vez durante la ejecución, incluyendo por su forma `plugin-name:skill-name` con espacio de nombres. [Tipos de calificadores](#grader-types) enumera las otras verificaciones disponibles, como coincidir una expresión regular o confirmar que se creó un archivo.209Esto aprueba cuando Claude invocó ese skill al menos una vez durante la ejecución, incluyendo por su forma `plugin-name:skill-name` con espacio de nombres.

210 

211[Tipos de calificadores](#grader-types) enumera las otras verificaciones disponibles, como coincidir una expresión regular o confirmar que se creó un archivo.

198 212 

199Con ambos archivos guardados, ejecute el caso de la manera que el [inicio rápido](#create-your-first-eval-suite) hace, con `claude plugin eval .` desde la raíz del plugin.213Con ambos archivos guardados, ejecute el caso de la manera que el [inicio rápido](#create-your-first-eval-suite) hace, con `claude plugin eval .` desde la raíz del plugin.

200 214 


202 Establecer límites de ejecución y herramientas en prompt.md216 Establecer límites de ejecución y herramientas en prompt.md

203</h3>217</h3>

204 218 

205Establezca `max_turns`, `timeout_seconds`, `model`, `tags`, y las `allowed_tools` que puede usar en el frontmatter de `prompt.md`; la referencia [frontmatter de prompt.md](#prompt-md-fields) enumera cada campo y su predeterminado. Claude recibe el cuerpo exactamente como lo escribió. Las menciones `@path` en él no se expanden en archivos adjuntos, así que si Claude necesita leer un archivo, otorgue una herramienta para él en `allowed_tools`.219Establezca `max_turns`, `timeout_seconds`, `model`, `tags`, y las `allowed_tools` que puede usar en el frontmatter de `prompt.md`; la referencia [frontmatter de prompt.md](#prompt-md-fields) enumera cada campo y su predeterminado.

220 

221Claude recibe el cuerpo exactamente como lo escribió. Las menciones `@path` en él no se expanden en archivos adjuntos, así que si Claude necesita leer un archivo, otorgue una herramienta para él en `allowed_tools`.

206 222 

207<h3 id="grade-the-result">223<h3 id="grade-the-result">

208 Elegir y ponderar calificadores224 Elegir y ponderar calificadores


210 226 

211El frontmatter de un calificador establece su `type`, y opcionalmente un `weight` que lo hace contar para más de la puntuación de la ejecución y un [`arm`](#compare-against-a-no-plugin-baseline) que controla cómo se califica contra la línea base. De los seis tipos, `regex`, `tool_used`, `tool_order`, y `file_exists` se calculan a partir de la transcripción y archivos y no cuestan nada, mientras que `llm` y `baseline` llaman a un modelo de juez y se suman al costo de la ejecución.227El frontmatter de un calificador establece su `type`, y opcionalmente un `weight` que lo hace contar para más de la puntuación de la ejecución y un [`arm`](#compare-against-a-no-plugin-baseline) que controla cómo se califica contra la línea base. De los seis tipos, `regex`, `tool_used`, `tool_order`, y `file_exists` se calculan a partir de la transcripción y archivos y no cuestan nada, mientras que `llm` y `baseline` llaman a un modelo de juez y se suman al costo de la ejecución.

212 228 

213No hay calificadores de código personalizado. [Tipos de calificadores](#grader-types) enumera las opciones de cada tipo y la condición de aprobación, y [lo que un calificador puede ver](#what-a-grader-can-look-at) enumera los valores que `target` y `focus` aceptan.229No hay calificadores de código personalizado.

230 

231[Tipos de calificadores](#grader-types) enumera las opciones de cada tipo y la condición de aprobación, y [lo que un calificador puede ver](#what-a-grader-can-look-at) enumera los valores que `target` y `focus` aceptan.

214 232 

215El juez para calificadores `llm` y `baseline` es un modelo pequeño y rápido por defecto. Pase `--judge-model sonnet` o un ID de modelo completo para usar uno más fuerte para rúbricas matizadas.233El juez para calificadores `llm` y `baseline` es un modelo pequeño y rápido por defecto. Pase `--judge-model sonnet` o un ID de modelo completo para usar uno más fuerte para rúbricas matizadas.

216 234 


221Un calificador `llm` pide a un modelo un veredicto, así que su respuesta puede diferir entre ejecuciones, y difiere más cuanto más largo sea el texto que tiene que leer. Estos hábitos mantienen las puntuaciones de un conjunto lo suficientemente estables para confiar:239Un calificador `llm` pide a un modelo un veredicto, así que su respuesta puede diferir entre ejecuciones, y difiere más cuanto más largo sea el texto que tiene que leer. Estos hábitos mantienen las puntuaciones de un conjunto lo suficientemente estables para confiar:

222 240 

223* Para salida larga como un archivo generado, califíquelo con un calificador `regex` sobre el contenido del archivo, que verifica el archivo completo de la misma manera cada vez. Mantenga calificadores `llm` para salidas cortas, con rúbricas escritas como condiciones PASS y FAIL concretas.241* Para salida larga como un archivo generado, califíquelo con un calificador `regex` sobre el contenido del archivo, que verifica el archivo completo de la misma manera cada vez. Mantenga calificadores `llm` para salidas cortas, con rúbricas escritas como condiciones PASS y FAIL concretas.

224* Dé a cada caso un calificador sobre el resultado, como el mensaje final o un archivo producido, y uno sobre cómo Claude llegó allí, como `tool_used` o `tool_order`. Juntos le dicen tanto si la respuesta fue correcta como si su plugin la produjo.242* Dé a cada caso un calificador sobre el resultado, como el mensaje final o un archivo producido, y uno sobre los pasos que Claude tomó para producirlo, como `tool_used` o `tool_order`. Juntos le dicen tanto si la respuesta fue correcta como si su plugin la produjo.

225* Si un calificador `tool_used: Skill` de un caso aprueba pero `Δ` es negativo, sospeche del juez antes que del plugin. Un modelo de juez pequeño puede marcar una respuesta correcta como incorrecta porque está formateada diferente de lo que la rúbrica describe. Re-ejecute con `--judge-model sonnet`, y ajuste la rúbrica para que el formato no decida el veredicto.243* Si un calificador `tool_used: Skill` de un caso aprueba pero `Δ` es negativo, sospeche del juez antes que del plugin. Un modelo de juez pequeño puede marcar una respuesta correcta como incorrecta porque está formateada diferente de lo que la rúbrica describe. Re-ejecute con `--judge-model sonnet`, y ajuste la rúbrica para que el formato no decida el veredicto.

226* Para verificar que una compilación o prueba pasó dentro de la ejecución, pida a Claude que la ejecute y escriba el resultado en un archivo, califique ese archivo, y afirme que el comando se ejecutó con un calificador `tool_used` cuyo `input_match` nombra el comando.244* Para verificar que una compilación o prueba pasó dentro de la ejecución, pida a Claude que la ejecute y escriba el resultado en un archivo, califique ese archivo, y afirme que el comando se ejecutó con un calificador `tool_used` cuyo `input_match` nombra el comando.

227 245 


229 Calificar contra la línea base sin plugin247 Calificar contra la línea base sin plugin

230</h3>248</h3>

231 249 

232Cuando un plugin está bajo prueba, cada caso se ejecuta en dos brazos por defecto. El brazo con es sus ejecuciones con el plugin cargado, y el brazo sin es el mismo número de ejecuciones sin plugin en absoluto. El resumen e informe muestran ambas puntuaciones y `Δ`, la puntuación del brazo con menos la puntuación del brazo sin. Pase `--ablation none` para ejecutar solo el brazo con, lo que reduce a la mitad el costo cuando no necesita la comparación, como mientras itera en calificadores.250Cuando un plugin está bajo prueba, cada caso se ejecuta en dos brazos por defecto. El brazo con es sus ejecuciones con el plugin cargado, y el brazo sin es el mismo número de ejecuciones sin plugin en absoluto. El resumen e informe muestran ambas puntuaciones y `Δ`, la puntuación del brazo con menos la puntuación del brazo sin.

251 

252Pase `--ablation none` para ejecutar solo el brazo con, lo que reduce a la mitad el costo cuando no necesita la comparación, como mientras itera en calificadores.

233 253 

234En una ejecución de dos brazos, algunos calificadores se reportan con `scored: false`. Una verificación como "el skill fue invocado" nunca puede pasar sin el plugin, así que contarla empujaría el brazo sin hacia cero e inflaría `Δ`. Para mantener los dos brazos comparables, Claude Code excluye tales calificadores de la puntuación en ambos brazos y los reporta en el brazo con como indicadores de aprobación/fallo solo. Eso incluye:254En una ejecución de dos brazos, algunos calificadores se reportan con `scored: false`. Una verificación como "el skill fue invocado" nunca puede pasar sin el plugin, así que contarla empujaría el brazo sin hacia cero e inflaría `Δ`. Para mantener los dos brazos comparables, Claude Code excluye tales calificadores de la puntuación en ambos brazos y los reporta en el brazo con como indicadores de aprobación/fallo solo. Eso incluye:

235 255 

236* Cada calificador `tool_used` cuya `tool` es `Skill`256* Cada calificador `tool_used` cuya `tool` es `Skill`

257* Cada calificador `regex` con `target: mock_calls` y cada calificador `llm` con `focus: mock_calls`, cuando cada [servidor simulado](#mock-mcp-servers) en el caso es uno que su plugin declara

237* Cualquier calificador que marque `arm: with-only`258* Cualquier calificador que marque `arm: with-only`

238 259 

239Si cada calificador en un caso es uno de estos, se califican normalmente en su lugar, ya que no habría nada más que calificar. Establezca `arm: both` en un calificador para calificarlo en ambos brazos independientemente, que es lo que desea para una verificación "no debe invocar el skill" con `min: 0` y `max: 0`. Bajo `--ablation none` nada se excluye, así que el mismo conjunto puede producir una puntuación absoluta diferente en los dos modos.260Tres configuraciones cambian esa exclusión:

261 

262* **Cada calificador excluido**: si cada calificador en un caso está en el conjunto excluido, se califican normalmente en su lugar, ya que no habría nada más que calificar.

263* **`arm: both`**: establezca `arm: both` en un calificador para calificarlo en ambos brazos independientemente, que es lo que desea para una verificación "no debe invocar el skill" con `min: 0` y `max: 0`.

264* **`--ablation none`**: bajo `--ablation none` nada se excluye, así que el mismo conjunto puede producir una puntuación absoluta diferente en los dos modos.

240 265 

241<h3 id="use-a-different-eval-directory">266<h3 id="use-a-different-eval-directory">

242 Usar un directorio de eval diferente267 Usar un directorio de eval diferente


253 Configurar fixtures y mocks278 Configurar fixtures y mocks

254</h2>279</h2>

255 280 

256Un caso puede necesitar más que un prompt: archivos o un repositorio git en el espacio de trabajo, una conversación anterior para continuar, o respuestas de los servidores MCP con los que su plugin habla. Cada uno de esos se configura junto al caso para que las ejecuciones permanezcan repetibles.281Un caso puede necesitar más que un prompt: archivos o un repositorio git en el espacio de trabajo, una conversación anterior para continuar, o respuestas de los servidores MCP con los que su plugin se conecta. Cada uno de esos se configura junto al caso para que las ejecuciones permanezcan repetibles.

257 282 

258<h3 id="add-setup-or-history-with-case-yaml">283<h3 id="add-setup-or-history-with-case-yaml">

259 Sembrar el espacio de trabajo o conversación284 Sembrar el espacio de trabajo o conversación

260</h3>285</h3>

261 286 

262Cada ejecución comienza en un espacio de trabajo vacío. Cuando un caso necesita más que el prompt, agregue un `case.yaml` junto a `prompt.md` con un bloque `context`.287Cada ejecución comienza en un espacio de trabajo vacío. Cuando un caso necesita más que el prompt, agregue un `case.yaml` junto a `prompt.md` con un bloque `context`:

263 288 

264Para crear archivos de fixture o un repositorio git primero, escriba un script Bash en el directorio del caso y nómbrelo en `context.scaffold_script`. El script se ejecuta como usted, fuera del sandbox del agente, y solo cuando pasa `--scaffold`, así que pase esa bandera solo para conjuntos que usted u su organización escribieron. Para continuar una conversación anterior, guarde la transcripción como un archivo `.jsonl` y nómbrelo en `context.history_file`, y el prompt del caso se convierte en el siguiente turno del usuario. Para permitir que Claude lea directorios de fixture durante la ejecución, enumérelos en `context.add_dirs`.289* **Archivos de fixture o un repositorio git**: escriba un script Bash en el directorio del caso y nómbrelo en `context.scaffold_script`. El script se ejecuta como usted, fuera del sandbox del agente, y solo cuando pasa `--scaffold`, así que pase esa bandera solo para conjuntos que usted u su organización escribieron.

290* **Una conversación anterior para continuar**: guarde la transcripción como un archivo `.jsonl` y nómbrelo en `context.history_file`, y el prompt del caso se convierte en el siguiente turno del usuario.

291* **Directorios de fixture que Claude puede leer durante la ejecución**: enumérelos en `context.add_dirs`.

265 292 

266Un `case.yaml` también necesita `schema_version: "1.1"` y `name`; la referencia [campos de case.yaml](#case-yaml-fields) tiene la lista completa.293Un `case.yaml` también necesita `schema_version: "1.1"` y `name`; la referencia [campos de case.yaml](#case-yaml-fields) tiene la lista completa.

267 294 


280 Mock MCP servers307 Mock MCP servers

281</h3>308</h3>

282 309 

283Puede evaluar un plugin cuyos skills llaman a herramientas MCP sin el servicio real detrás de ellas. Ponga un archivo Markdown por herramienta bajo `evals/mocks/<server>/<tool>.md` para todo el conjunto, o bajo un directorio `mocks/` propio de un caso para un caso, donde `<server>` es el nombre del servidor en la [configuración MCP](/docs/es/plugins-reference#mcp-servers) de su plugin.310Puede evaluar un plugin cuyos skills llaman a herramientas MCP sin el servicio real detrás de ellas. Ponga un archivo Markdown por herramienta bajo `evals/mocks/<server>/<tool>.md` para todo el conjunto, o bajo un directorio `mocks/` propio de un caso para un caso, donde `<server>` es el nombre del servidor en la [configuración MCP](/docs/es/plugins/components#mcp-servers) de su plugin.

284 311 

285Una ejecución nunca inicia los servidores MCP reales de su plugin a menos que lo pida. Claude Code registra un sustituto bajo el nombre propio de cada servidor. Las herramientas con un archivo mock responden desde él y se permiten sin una concesión `--allow-tools`, y una herramienta sin archivo mock no está disponible para Claude. Un servidor sin mocks en absoluto aparece en la línea de progreso `mocked:` del caso como `plugin_<plugin>_<server>[not started: no mock]`.312Una ejecución nunca inicia los servidores MCP reales de su plugin a menos que lo pida. Claude Code registra un sustituto bajo el nombre propio de cada servidor. Las herramientas con un archivo mock responden desde él y se permiten sin una concesión `--allow-tools`, y una herramienta sin archivo mock no está disponible para Claude. Un servidor sin mocks en absoluto aparece en la línea de progreso `mocked:` del caso como `plugin_<plugin>_<server>[not started: no mock]`.

286 313 


296Created issue #4821: {{input.title}}323Created issue #4821: {{input.title}}

297```324```

298 325 

299Inserte campos de la entrada de la llamada con `{{input.<field>}}`, y el contenido de un archivo de fixture junto al mock con `{{file:fixtures/{input.<field>}.json}}`. El bloque `expect:` protege la entrada. Si una llamada lo viola, la ejecución se detiene con puntuación 0 y registra por qué, así que un caso puede afirmar qué pidió su plugin al servidor. Establezca `error: true` para devolver el cuerpo como un error de herramienta en su lugar, o `type: agent` para que un modelo pequeño responda como el servidor desde instrucciones en el cuerpo. La [referencia de archivo mock](#mock-files) enumera cada clave y los archivos `_server.md` y `_tools.json`.326El cuerpo y frontmatter de un archivo mock aceptan estas opciones:

327 

328* **Sustituciones**: inserte campos de la entrada de la llamada con `{{input.<field>}}`, y el contenido de un archivo de fixture junto al mock con `{{file:fixtures/{input.<field>}.json}}`.

329* **`expect:`**: el bloque `expect:` protege la entrada. Si una llamada lo viola, la ejecución se detiene con puntuación 0 y registra por qué, así que un caso puede afirmar qué pidió su plugin al servidor.

330* **`error: true`**: establezca `error: true` para devolver el cuerpo como un error de herramienta en su lugar.

331* **`type: agent`**: establezca `type: agent` para que un modelo pequeño responda como el servidor desde instrucciones en el cuerpo.

332 

333La [referencia de archivo mock](#mock-files) enumera cada clave y los archivos `_server.md` y `_tools.json`.

300 334 

301Para calificar las llamadas mismas, apunte un calificador a `target: mock_calls`.335Para calificar las llamadas mismas, apunte un calificador a `target: mock_calls`.

302 336 


330| Un directorio raíz de plugin, como `.` | Cada caso bajo su directorio de eval, con ese plugin cargado |364| Un directorio raíz de plugin, como `.` | Cada caso bajo su directorio de eval, con ese plugin cargado |

331| Un archivo `prompt.md` o `case.yaml` único | Ese caso, con su plugin envolvente cargado |365| Un archivo `prompt.md` o `case.yaml` único | Ese caso, con su plugin envolvente cargado |

332| Un plugin instalado por nombre, `name` o `name@marketplace` | Los casos en el directorio de eval de la copia instalada, con la copia instalada cargada. Los resultados se escriben bajo `./evals/results/` en su directorio actual, o `./<dir>/results/` con `--eval-dir` |366| Un plugin instalado por nombre, `name` o `name@marketplace` | Los casos en el directorio de eval de la copia instalada, con la copia instalada cargada. Los resultados se escriben bajo `./evals/results/` en su directorio actual, o `./<dir>/results/` con `--eval-dir` |

333| `name@skills-dir` | Lo mismo, para un [plugin de directorio de skills](/docs/es/plugins-reference#skills-directory-plugins) |367| `name@skills-dir` | Lo mismo, para un [plugin de directorio de skills](/docs/es/plugins/loading#plugins-shared-through-a-repository) |

334| Omitido | El directorio actual como una ruta |368| Omitido | El directorio actual como una ruta |

335 369 

336Agregue `--case <glob>` para filtrar por nombre de caso y `--tag <tag>` para mantener casos con cualquiera de los tags dados. Ponga el destino antes de `--tag`, `--allow-tools`, y `--json`. Los primeros dos toman una lista y `--json` toma una ruta opcional, así que cada uno de ellos lee un destino que sigue como su propio valor.370Agregue `--case <glob>` para filtrar por nombre de caso y `--tag <tag>` para mantener casos con cualquiera de los tags dados.

371 

372Ponga el destino antes de `--tag`, `--allow-tools`, y `--json`. Los primeros dos toman una lista y `--json` toma una ruta opcional, así que cada uno de ellos lee un destino que sigue como su propio valor.

337 373 

338<h3 id="grant-tools">374<h3 id="grant-tools">

339 Otorgar herramientas375 Otorgar herramientas


341 377 

342Las ejecuciones nunca se detienen para pedir permiso. Las herramientas integradas que necesitan una concesión que no otorgó, como `Bash`, `Write`, `Edit`, `WebFetch`, y `WebSearch`, se eliminan de la sesión, así que Claude no puede llamarlas en absoluto.378Las ejecuciones nunca se detienen para pedir permiso. Las herramientas integradas que necesitan una concesión que no otorgó, como `Bash`, `Write`, `Edit`, `WebFetch`, y `WebSearch`, se eliminan de la sesión, así que Claude no puede llamarlas en absoluto.

343 379 

344La lista de permitidos es las herramientas de solo lectura que el caso enumera en `allowed_tools`, de `Read`, `Glob`, `Grep`, `NotebookRead`, `Skill`, `Agent`, `TodoWrite`, y las herramientas de tarea `TaskCreate`, `TaskGet`, `TaskList`, `TaskUpdate`, y `TaskStop`, más lo que otorgue con `--allow-tools`. Esa concesión se aplica a cada caso en la ejecución. Para permitir que los casos usen `Bash`, `Write`, `Edit`, `WebFetch`, o `WebSearch`, otórguelos usted mismo:380Una ejecución permite solo las herramientas de solo lectura que el caso enumera en `allowed_tools`, de `Read`, `Glob`, `Grep`, `NotebookRead`, `Skill`, `AskUserQuestion`, `Agent`, `TodoWrite`, y las herramientas de tarea `TaskCreate`, `TaskGet`, `TaskList`, `TaskUpdate`, y `TaskStop`, más lo que otorgue con `--allow-tools`. Esa concesión se aplica a cada caso en la ejecución. Para permitir que los casos usen `Bash`, `Write`, `Edit`, `WebFetch`, o `WebSearch`, otórguelos usted mismo:

345 381 

346```bash theme={null}382```bash theme={null}

347claude plugin eval . --allow-tools Write Edit "Bash(npm test *)"383claude plugin eval . --allow-tools Write Edit "Bash(npm test *)"

348```384```

349 385 

350Cuando un caso pidió una herramienta que no otorgó, la ejecución la enumera en stderr como `not granted`. Las herramientas en un servidor MCP [simulado](#mock-mcp-servers) no necesitan concesión. Las herramientas en un servidor MCP de plugin real necesitan tanto el servidor iniciado, con `--allow-real-servers` o `--mocks off`, como una concesión por nombre, como `--allow-tools "mcp__plugin_my-plugin_github__*"`; las herramientas MCP de un plugin se nombran `mcp__plugin_<plugin>_<server>__<tool>`.386Cuando un caso pidió una herramienta que no otorgó, la salida de progreso la enumera como `not granted`. Las herramientas en un servidor MCP [simulado](#mock-mcp-servers) no necesitan concesión. Las herramientas en un servidor MCP de plugin real necesitan tanto el servidor iniciado, con `--allow-real-servers` o `--mocks off`, como una concesión por nombre, como `--allow-tools "mcp__plugin_my-plugin_github__*"`; las herramientas MCP de un plugin se nombran `mcp__plugin_<plugin>_<server>__<tool>`.

351 387 

352Cuando otorga `Bash` en cualquier forma, cada comando se ejecuta bajo el [sandbox a nivel de SO](/docs/es/sandboxing) de Claude Code. Las escrituras se limitan al espacio de trabajo de la ejecución, su directorio de inicio y la configuración de Claude Code son ilegibles, y el acceso a la red se limita a dominios que otorga con `--allow-tools "WebFetch(domain:example.com)"`. Si otorga Bash o PowerShell en una máquina sin backend de sandbox, Claude Code rechaza cada ejecución en lugar de ejecutarla sin confinar, y el caso muestra un error de ejecución y generalmente puntúa 0. Windows nativo no tiene backend, así que ejecute conjuntos que otorguen shell bajo WSL2; en Linux, instale `bubblewrap` y `socat` primero. Vea los [requisitos previos de sandboxing](/docs/es/sandboxing).388Cuando otorga `Bash` en cualquier forma, cada comando se ejecuta bajo el [sandbox a nivel de SO](/docs/es/sandboxing) de Claude Code. Las escrituras se limitan al espacio de trabajo de la ejecución, su directorio de inicio y la configuración de Claude Code son ilegibles, y el acceso a la red se limita a dominios que otorga con `--allow-tools "WebFetch(domain:example.com)"`. Si otorga Bash o PowerShell en una máquina sin backend de sandbox, Claude Code rechaza cada ejecución en lugar de ejecutarla sin confinar, y el caso muestra un error de ejecución y generalmente puntúa 0. Windows nativo no tiene backend, así que ejecute conjuntos que otorguen shell bajo WSL2; en Linux, instale `bubblewrap` y `socat` primero. Vea los [requisitos previos de sandboxing](/docs/es/sandboxing).

353 389 


404| 130 | Interrumpido. Los resultados parciales se escriben |440| 130 | Interrumpido. Los resultados parciales se escriben |

405| 143 | Terminado, como por un timeout de CI |441| 143 | Terminado, como por un timeout de CI |

406 442 

407Los problemas al escribir o publicar el informe HTML nunca cambian el código de salida. Para ver por qué un caso puntuó bajo, ejecute localmente sin `--json` para que se impriman las líneas de progreso por ejecución y del calificador.443Los problemas al escribir o publicar el informe HTML nunca cambian el código de salida.

444 

445Para ver por qué un caso puntuó bajo, ejecute localmente sin `--json` para que se impriman las líneas de progreso por ejecución y del calificador.

446 

447Un ejecutor de CI también necesita estos en su lugar:

408 448 

409Un ejecutor de CI necesita una instalación de Claude Code y [credenciales en el entorno](/docs/es/authentication) como `ANTHROPIC_API_KEY`. Sin `--trust-plugin`, un trabajo cuyo directorio de checkout Claude Code aún no confía se rechaza con salida 1 cuando no tiene terminal, o espera en el aviso cuando el ejecutor asigna uno. `claude plugin eval init` necesita una terminal para hacerle sus preguntas; en CI, ejecute `claude plugin eval init --bare <name>` para obtener la plantilla en blanco.449* **Instalar y credenciales**: un ejecutor de CI necesita una instalación de Claude Code y [credenciales en el entorno](/docs/es/authentication) como `ANTHROPIC_API_KEY`.

450* **Confianza**: sin `--trust-plugin`, un trabajo cuyo directorio de checkout Claude Code aún no confía necesita el [primer aviso de confianza](#trust-the-plugin-directory), y una ejecución que no puede preguntar es rechazada con salida 1.

451* **`init` en CI**: `claude plugin eval init` necesita una terminal para hacerle sus preguntas; en CI, ejecute `claude plugin eval init --bare <name>` para obtener la plantilla en blanco.

410 452 

411Para mantener los costos predecibles, dé a cada cambio rápido conjuntos solo con calificadores que no llamen a un juez, use `--ablation none` donde no necesite `Δ`, y deje documentos `partial: true` y ejecuciones con `skippedPaidGraders` fuera de cualquier tendencia que grafique.453Para mantener los costos predecibles, dé a cada cambio rápido conjuntos solo con calificadores que no llamen a un juez, use `--ablation none` donde no necesite `Δ`, y deje documentos `partial: true` y ejecuciones con `skippedPaidGraders` fuera de cualquier tendencia que grafique.

412 454 


461 Lo que una ejecución puede acceder503 Lo que una ejecución puede acceder

462</h2>504</h2>

463 505 

464`claude plugin eval` carga los skills, hooks y agentes del plugin de destino y ejecuta su conjunto de eval en su máquina, como usted. Apuntarlo a un plugin es la misma decisión de confianza que `claude --plugin-dir`, así que solo evalúe plugins en los que confía. El aislamiento descrito en esta sección limita lo que el agente bajo prueba puede alcanzar; no es un límite contra el código del plugin mismo, y un conjunto que aprueba no dice nada sobre si el plugin es seguro.506`claude plugin eval` carga los skills, hooks y agentes del plugin de destino y ejecuta su conjunto de eval en su máquina, como usted. Apuntarlo a un plugin es la misma decisión de confianza que `claude --plugin-dir`, así que solo evalúe plugins en los que confía.

507 

508El aislamiento descrito en esta sección limita lo que el agente bajo prueba puede alcanzar; no es un límite contra el código del plugin mismo, y un conjunto que aprueba no dice nada sobre si el plugin es seguro.

465 509 

466<h3 id="trust-the-plugin-directory">510<h3 id="trust-the-plugin-directory">

467 Confiar en el directorio del plugin511 Confiar en el directorio del plugin

468</h3>512</h3>

469 513 

470La primera vez que ejecuta `claude plugin eval` contra un directorio, Claude Code pregunta `Trust this plugin directory?` antes de cargar nada de él, a menos que ya aceptara el aviso de confianza allí en una sesión interactiva de `claude`. Dentro de un repositorio git, responder sí confía en todo el repositorio, para sesiones interactivas también. Cuando stdin o stdout no es una terminal, o bajo `--json`, la ejecución no puede preguntar y se rechaza con salida 1; pase `--trust-plugin` para afirmar la confianza usted mismo, solo para un plugin que ejecutaría en su propia máquina. Un destino que nombra en lugar de dar como ruta, significando un plugin instalado o un plugin de directorio de skills, omite el aviso.514La primera vez que ejecuta `claude plugin eval` contra un directorio, Claude Code pregunta `Trust this plugin directory?` antes de cargar nada de él, a menos que ya aceptara el aviso de confianza allí en una sesión interactiva de `claude`. Dentro de un repositorio git, responder sí confía en todo el repositorio, para sesiones interactivas también. Cuando stdin o stdout no es una terminal, bajo `--json`, o cuando la variable de entorno `CI` se establece en un valor verdadero como `true`, la ejecución no puede preguntar y se rechaza con salida 1; pase `--trust-plugin` para afirmar la confianza usted mismo, solo para un plugin que ejecutaría en su propia máquina. Un destino que nombra en lugar de dar como ruta, significando un plugin instalado o un plugin de directorio de skills, omite el aviso.

515 

516Algunas partes del plugin y conjunto se ejecutan solo cuando pasa su bandera para esa ejecución:

517 

518* El [`scaffold_script`](#add-setup-or-history-with-case-yaml) de un caso con `--scaffold`

519* [Herramientas más allá del conjunto de solo lectura](#grant-tools) con `--allow-tools`

520* Los [servidores MCP reales](#mock-mcp-servers) del plugin con `--allow-real-servers` o `--mocks off`

521 

522Las `allowed_tools` de un caso y el frontmatter `allowed-tools` propio de un skill no pueden ampliar ninguno de ellos.

471 523 

472Algunas partes del plugin y conjunto se ejecutan solo cuando pasa su bandera para esa ejecución: el [`scaffold_script`](#add-setup-or-history-with-case-yaml) de un caso con `--scaffold`, [herramientas más allá del conjunto de solo lectura](#grant-tools) con `--allow-tools`, y los [servidores MCP reales](#mock-mcp-servers) del plugin con `--allow-real-servers` o `--mocks off`. Las `allowed_tools` de un caso y el frontmatter `allowed-tools` propio de un skill no pueden ampliar ninguno de ellos. Cuando el plugin envía hooks que no escribió, o inicia sus servidores MCP reales, trate sus puntuaciones como consultivas a menos que las ejecutara en un entorno aislado como un contenedor o ejecutor de CI, ya que los hooks y servidores se ejecutan fuera del sandbox del agente y podrían tocar los archivos que los calificadores leen.524Cuando el plugin incluye hooks que no escribió, o inicia sus servidores MCP reales, trate sus puntuaciones como consultivas a menos que las ejecutara en un entorno aislado como un contenedor o ejecutor de CI, ya que los hooks y servidores se ejecutan fuera del sandbox del agente y podrían modificar los archivos que los calificadores leen.

473 525 

474<h3 id="how-runs-are-isolated">526<h3 id="how-runs-are-isolated">

475 Cómo se aíslan las ejecuciones527 Cómo se aíslan las ejecuciones

476</h3>528</h3>

477 529 

478Cada ejecución obtiene un directorio de inicio desechable, directorio de trabajo, y configuración de Claude Code, y el agente bajo prueba se ejecuta allí como un proceso hijo `claude -p` con solo su plugin cargado. Tenga en cuenta estas consecuencias cuando escriba casos:530Cada ejecución obtiene un directorio de inicio temporal, directorio de trabajo, y configuración de Claude Code, y el agente bajo prueba se ejecuta allí como un proceso hijo `claude -p` con solo su plugin cargado. Tenga en cuenta estas consecuencias cuando escriba casos:

479 531 

480* **Nada personal o a nivel de proyecto carga.** Sus configuraciones de usuario, hooks, archivos `CLAUDE.md`, servidores MCP, otros plugins instalados, memoria, y skills están ausentes, y ningún `.claude/` o `.mcp.json` a nivel de proyecto por encima del sandbox se lee. La mayoría de su entorno de shell también se retiene; solo una [lista de permitidos](#prompt-md-fields) y variables `EVAL_*` llegan a la ejecución. Si el plugin necesita configuración, envíela en el plugin, créela en un `scaffold_script`, o pase variables `EVAL_*`.532* **Nada personal o a nivel de proyecto carga.** Sus configuraciones de usuario, hooks, archivos `CLAUDE.md`, servidores MCP, otros plugins instalados, memoria, y skills están ausentes, y ningún `.claude/` o `.mcp.json` a nivel de proyecto por encima del sandbox se lee. La mayoría de su entorno de shell también se retiene; solo una [lista de permitidos](#prompt-md-fields) y variables `EVAL_*` llegan a la ejecución. Si el plugin necesita configuración, envíela en el plugin, créela en un `scaffold_script`, o pase variables `EVAL_*`.

481* **La política administrada aún puede restringir una ejecución.** Las restricciones en [configuración administrada](/docs/es/managed-settings) que un administrador implementó en la máquina se aplican dentro de una ejecución, así que los resultados en una máquina administrada pueden diferir de una no administrada por esa política.533* **La política administrada aún puede restringir una ejecución.** Las restricciones en [configuración administrada](/docs/es/managed-settings) que un administrador implementó en la máquina se aplican dentro de una ejecución, así que los resultados en una máquina administrada pueden diferir de una no administrada por esa política.


537 Campos de case.yaml589 Campos de case.yaml

538</h3>590</h3>

539 591 

540`case.yaml` describe el mismo caso en YAML y agrega los campos que apuntan a otros archivos. Requiere `schema_version: "1.1"` y `name`. Los campos `description`, `tags`, `plugins`, `runs`, y `expected_outcome` de `prompt.md` van en el nivel superior; `model`, `max_turns`, `timeout_seconds`, `allowed_tools`, `append_system_prompt`, y `env` van bajo `execution:`. Cuando ambos archivos existen, el frontmatter de `prompt.md` anula los campos coincidentes de `case.yaml`, el cuerpo de `prompt.md` es el prompt, y `graders/*.md` se agregan después de cualquier calificador enumerado en `case.yaml`.592`case.yaml` es una alternativa o complemento a `prompt.md`: describe un caso en YAML y agrega los campos que apuntan a otros archivos. Requiere `schema_version: "1.1"` y `name`. Los campos `description`, `tags`, `plugins`, `runs`, y `expected_outcome` de `prompt.md` van en el nivel superior; `model`, `max_turns`, `timeout_seconds`, `allowed_tools`, `append_system_prompt`, y `env` van bajo `execution:`. Cuando ambos archivos existen, el frontmatter de `prompt.md` anula los campos coincidentes de `case.yaml`, el cuerpo de `prompt.md` es el prompt, y `graders/*.md` se agregan después de cualquier calificador enumerado en `case.yaml`.

541 593 

542Estos campos existen solo en `case.yaml`:594Estos campos existen solo en `case.yaml`:

543 595 


556Cada archivo de calificador bajo `graders/` toma estas claves en frontmatter, más las opciones para su tipo. El nombre del calificador es el nombre de archivo sin `.md`:608Cada archivo de calificador bajo `graders/` toma estas claves en frontmatter, más las opciones para su tipo. El nombre del calificador es el nombre de archivo sin `.md`:

557 609 

558| Clave | Predeterminado | Propósito |610| Clave | Predeterminado | Propósito |

559| :------- | :------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |611| :------- | :------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

560| `type` | requerido | Uno de los [tipos de calificador](#grader-types) |612| `type` | requerido | Uno de los [tipos de calificador](#grader-types) |

561| `weight` | `1` | Peso relativo en la puntuación de la ejecución. Cualquier número positivo |613| `weight` | `1` | Peso relativo en la puntuación de la ejecución. Cualquier número positivo |

562| `arm` | sin establecer | `with-only` excluye el calificador de la puntuación en una [ejecución de dos brazos](#compare-against-a-no-plugin-baseline); `both` fuerza un calificador `tool_used: Skill` a ser puntuado en ambos brazos |614| `arm` | sin establecer | `with-only` excluye el calificador de la puntuación en una [ejecución de dos brazos](#compare-against-a-no-plugin-baseline); `both` fuerza un calificador que Claude Code de otro modo excluiría a ser puntuado en ambos brazos |

563 615 

564<h4 id="what-a-grader-can-look-at">616<h4 id="what-a-grader-can-look-at">

565 Lo que un calificador puede ver617 Lo que un calificador puede ver


632 "is not a trusted plugin directory, and this run cannot stop to ask you about it"684 "is not a trusted plugin directory, and this run cannot stop to ask you about it"

633</h3>685</h3>

634 686 

635Esta es la primera ejecución contra un directorio que Claude Code aún no confía, y no puede preguntar porque stdin o stdout no es una terminal o pasó `--json`. Ejecute `claude plugin eval <dir>` una vez en una terminal y responda el aviso, o pase `--trust-plugin` si confía en el código y conjunto del plugin. Vea [Lo que una ejecución puede acceder](#security).687Esta es la primera ejecución contra un directorio que Claude Code aún no confía, y no puede preguntar porque stdin o stdout no es una terminal, pasó `--json`, o la variable de entorno `CI` está establecida en un valor verdadero como `true`. Ejecute `claude plugin eval <dir>` una vez en una terminal y responda el aviso, o pase `--trust-plugin` si confía en el código y conjunto del plugin. Vea [Lo que una ejecución puede acceder](#security).

636 688 

637<h3 id="no-eval-cases-found">689<h3 id="no-eval-cases-found">

638 "No eval cases found"690 "No eval cases found"


668 Una expresión regular sobre la traza no coincide con texto que puedo ver720 Una expresión regular sobre la traza no coincide con texto que puedo ver

669</h3>721</h3>

670 722 

671El `target` predeterminado es `last_message`, no la traza. Cuando apunta a `trace`, es JSON por línea, así que las comillas aparecen como `\"`. Las expresiones regulares usan sintaxis de JavaScript, así que ponga `i` en `flags` en lugar de escribir `(?i)`.723* **Destino incorrecto**: el `target` predeterminado es `last_message`, no la traza.

724* **Escape JSON**: cuando apunta a `trace`, es JSON por línea, así que las comillas aparecen como `\"`.

725* **Sintaxis de expresión regular**: las expresiones regulares usan sintaxis de JavaScript, así que ponga `i` en `flags` en lugar de escribir `(?i)`.

672 726 

673<h3 id="tools-are-denied-mcp-tools-are-missing-or-bash-won’t-run">727<h3 id="tools-are-denied-mcp-tools-are-missing-or-bash-won’t-run">

674 Las herramientas se deniegan, las herramientas MCP faltan, o Bash no se ejecutará728 Las herramientas se deniegan, las herramientas MCP faltan, o Bash no se ejecutará


680 La ejecución sale 1 pero los resultados se ven bien734 La ejecución sale 1 pero los resultados se ven bien

681</h3>735</h3>

682 736 

683El `--threshold` predeterminado es 1.0, así que el comando sale 1 cuando cualquier caso puntúa por debajo de perfecto. Establezca un umbral que coincida con su estándar. La salida 1 también cubre un archivo de caso que falló al cargar, que se reporta en stderr por encima de la tabla.737El `--threshold` predeterminado es 1.0, así que el comando sale 1 cuando cualquier caso puntúa por debajo de perfecto. Establezca un umbral que coincida con la puntuación que requiere. La salida 1 también cubre un archivo de caso que falló al cargar, que se reporta en stderr por encima de la tabla.

684 738 

685<h3 id="json-output-path-must-end-in-json">739<h3 id="json-output-path-must-end-in-json">

686 "--json output path must end in .json"740 "--json output path must end in .json"


710 Ver también764 Ver también

711</h2>765</h2>

712 766 

713* [Crear plugins](/docs/es/plugins): construya el plugin que está probando, y cárguelo con `--plugin-dir` durante el desarrollo767* [Crear un plugin](/docs/es/plugins/create): construya el plugin que está probando, y cárguelo con `--plugin-dir` durante el desarrollo

714* [Referencia de plugins](/docs/es/plugins-reference#plugin-eval): las entradas de comando `plugin eval` y `plugin eval init` y la clave `experimental.evals` del manifiesto768* [Referencia de comandos de plugins](/docs/es/plugins/cli-reference#plugin-eval): las entradas de comando `plugin eval` y `plugin eval init`. La clave [`experimental.evals`](/docs/es/plugins/manifest-reference#fields) del manifiesto está en la referencia del manifiesto

715* [Skills](/docs/es/skills): cómo la descripción de un skill decide cuándo Claude lo invoca, que es lo que un caso que verifica si el skill se activa está midiendo769* [Skills](/docs/es/skills): cómo la descripción de un skill decide cuándo Claude lo invoca, que es lo que un caso que verifica si el skill se activa está midiendo

716* [Sandboxing](/docs/es/sandboxing): el sandbox a nivel de SO que se aplica cuando otorga Bash a una ejecución770* [Sandboxing](/docs/es/sandboxing): el sandbox a nivel de SO que se aplica cuando otorga Bash a una ejecución

717* [Crear y distribuir un marketplace de plugins](/docs/es/plugin-marketplaces): publique el plugin una vez que su conjunto apruebe771* [Publicar un plugin](/docs/es/plugins/publish): publique el plugin una vez que su conjunto apruebe

772* [Medir el costo y uso del plugin](/docs/es/plugins/measure): lo que el plugin añade al contexto de cada sesión y si la gente aún lo usa

plugin-hints.md +0 −172 deleted

File Deleted View Diff

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Recomienda tu plugin desde tu CLI

6 

7> Emite un marcador de una línea desde tu CLI para que Claude Code solicite a los usuarios instalar tu plugin oficial.

8 

9Si mantienes una CLI o SDK y tienes un plugin en el marketplace oficial de Anthropic, tu herramienta puede solicitar a los usuarios de Claude Code que instalen ese plugin. Tu CLI escribe un marcador de una línea en stderr cuando detecta que se está ejecutando dentro de Claude Code. Claude Code lee el marcador, lo elimina de la salida y muestra al usuario un mensaje de instalación de una sola vez.

10 

11El protocolo no requiere comandos adicionales y no cambia lo que tu CLI imprime para usuarios fuera de Claude Code.

12 

13Esta página es para mantenedores de CLI y SDK. Si buscas instalar plugins, consulta [Descubre e instala plugins](/docs/es/discover-plugins).

14 

15<h2 id="how-it-works">

16 Cómo funciona

17</h2>

18 

19Claude Code establece la variable de entorno [`CLAUDECODE`](/docs/es/env-vars) en `1` para cada comando que ejecuta a través de las herramientas Bash y PowerShell, y para comandos de [hook](/docs/es/hooks). A partir de v2.1.172 también establece [`CLAUDE_CODE_CHILD_SESSION`](/docs/es/env-vars) en `1` en esos mismos subprocesos. Cuando tu CLI ve una de estas variables, escribe una etiqueta `<claude-code-hint />` que se cierra automáticamente en stderr. En comandos hook la etiqueta de sugerencia se elimina e ignora. Solo la salida de las herramientas Bash y PowerShell activa el mensaje de instalación.

20 

21Cuando Claude Code recibe la salida del comando, hace lo siguiente:

22 

231. Busca líneas de sugerencia y las elimina antes de que la salida llegue al modelo

242. Verifica que la sugerencia apunte a un plugin en un marketplace oficial de Anthropic

253. Verifica que el plugin no esté ya instalado y no haya sido sugerido antes

264. Muestra al usuario un mensaje de instalación que nombra el comando que emitió la sugerencia

27 

28Claude Code nunca instala un plugin automáticamente. El usuario siempre confirma.

29 

30<h2 id="emit-the-hint">

31 Emite la sugerencia

32</h2>

33 

34Las sugerencias solo se activan para plugins listados en el marketplace oficial de Anthropic. Consulta [Obtén tu plugin en el marketplace oficial](#get-your-plugin-into-the-official-marketplace) antes de enviar la integración.

35 

36Condiciona la emisión en una variable de entorno para que el marcador sea poco probable que aparezca cuando un usuario humano ejecute tu CLI directamente, luego escribe la etiqueta en stderr en su propia línea. Elige qué variable verificar:

37 

38* `CLAUDECODE`: se establece en cada versión de Claude Code, por lo que llega a la mayoría de sesiones. También se establece en sesiones de tmux y subprocesos del servidor MCP de stdio que Claude Code inicia, y las extensiones de IDE la establecen en sus terminales integradas, donde un usuario humano puede estar ejecutando tu CLI directamente.

39* `CLAUDE_CODE_CHILD_SESSION`: se establece solo en subprocesos que el propio Claude Code genera, como llamadas de herramientas, comandos de hook y comandos de [línea de estado](/docs/es/statusline), por lo que la etiqueta normalmente no llega a una terminal humana. Un proceso de larga duración que se inició dentro de una sesión, como un servidor tmux, captura la variable, por lo que los shells lanzados posteriormente desde ese proceso aún muestran la etiqueta sin procesar.

40 

41Los siguientes ejemplos condicionan `CLAUDECODE` para máximo alcance y emiten una sugerencia para un plugin llamado `example-cli` en el marketplace oficial:

42 

43<CodeGroup>

44 ```javascript Node.js theme={null}

45 if (process.env.CLAUDECODE) {

46 process.stderr.write(

47 '<claude-code-hint v="1" type="plugin" value="example-cli@claude-plugins-official" />\n',

48 )

49 }

50 ```

51 

52 ```python Python theme={null}

53 import os, sys

54 

55 if os.environ.get("CLAUDECODE"):

56 print(

57 '<claude-code-hint v="1" type="plugin" value="example-cli@claude-plugins-official" />',

58 file=sys.stderr,

59 )

60 ```

61 

62 ```go Go theme={null}

63 if os.Getenv("CLAUDECODE") != "" {

64 fmt.Fprintln(os.Stderr,

65 `<claude-code-hint v="1" type="plugin" value="example-cli@claude-plugins-official" />`)

66 }

67 ```

68 

69 ```shell Shell theme={null}

70 if [ -n "$CLAUDECODE" ]; then

71 printf '%s\n' '<claude-code-hint v="1" type="plugin" value="example-cli@claude-plugins-official" />' >&2

72 fi

73 ```

74</CodeGroup>

75 

76Reemplaza `example-cli` con el nombre de tu plugin en el marketplace oficial.

77 

78<h2 id="choose-where-to-emit">

79 Elige dónde emitir

80</h2>

81 

82Controlas qué rutas de código emiten la sugerencia. Claude Code deduplica por plugin, por lo que emitir en cada invocación no tiene desventajas. Los puntos de contacto que funcionan bien incluyen:

83 

84| Ubicación | Por qué funciona |

85| :----------------------------------------- | :--------------------------------------------------------------- |

86| Salida de `--help` | Claude a menudo ejecuta help al explorar una CLI desconocida |

87| Errores de subcomando desconocido | Llega al momento en que Claude está confundido sobre tu interfaz |

88| Éxito de inicio de sesión o autenticación | El usuario ya está en una mentalidad de configuración |

89| Mensaje de bienvenida de primera ejecución | Un momento natural de incorporación |

90 

91<h2 id="what-the-user-sees">

92 Lo que ve el usuario

93</h2>

94 

95Cuando la sugerencia pasa todas las verificaciones, Claude Code muestra un mensaje como el siguiente:

96 

97```text theme={null}

98─────────────────────────────────────────────────────────────

99 Recomendación de Plugin

100 

101 El comando example-cli sugiere instalar un plugin.

102 

103 Plugin: example-cli

104 Marketplace: claude-plugins-official

105 Integración oficial para implementaciones de example-cli

106 

107 ¿Te gustaría instalarlo?

108 ❯ 1. Sí, instalar example-cli

109 2. No

110 3. No, y no mostrar sugerencias de instalación de plugins nuevamente

111 

112─────────────────────────────────────────────────────────────

113```

114 

115El mensaje nombra el comando que produjo la sugerencia para que los usuarios puedan detectar una discrepancia entre la herramienta y el plugin que recomienda. Si el usuario no responde dentro de 30 segundos, Claude Code descarta el mensaje como **No**.

116 

117La frecuencia del mensaje está limitada, y algunas sesiones nunca muestran el mensaje:

118 

119* **Una vez por plugin**: después de que se muestre el mensaje, Claude Code registra el plugin y nunca vuelve a solicitar para él, independientemente de la respuesta del usuario.

120* **Una vez por sesión**: en todas las CLI de la máquina, como máximo aparece un mensaje de sugerencia por sesión de Claude Code.

121* **Solo en la sesión interactiva principal**: Claude Code muestra el mensaje solo en la sesión de terminal en la que el usuario está escribiendo. Claude Code nunca solicita un comando que ejecuta un [subagente](/docs/es/sub-agents), y nunca solicita cuando el usuario ejecuta Claude Code en [modo no interactivo](/docs/es/headless) con la bandera `-p` o a través del [Agent SDK](/docs/es/agent-sdk/overview). Claude Code aún elimina la línea de sugerencia de la salida del comando en todos estos casos.

122* **Exclusiones de telemetría**: las sesiones donde el análisis está deshabilitado nunca muestran mensajes de sugerencia. Esto incluye sesiones con `DISABLE_TELEMETRY` o `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` establecidas, y sesiones en proveedores de terceros como Amazon Bedrock o Google Cloud's Agent Platform donde se aplica la [exclusión automática de telemetría](/docs/es/data-usage#default-behaviors-by-api-provider).

123 

124Seleccionar **Sí** instala el plugin en el ámbito del usuario. Seleccionar **No, y no mostrar sugerencias de instalación de plugins nuevamente** desactiva todos los mensajes de sugerencia futuros para el usuario.

125 

126<h2 id="hint-format">

127 Formato de sugerencia

128</h2>

129 

130La sugerencia es una etiqueta que se cierra automáticamente con tres atributos requeridos.

131 

132```text theme={null}

133<claude-code-hint v="1" type="plugin" value="example-cli@claude-plugins-official" />

134```

135 

136| Atributo | Requerido | Descripción |

137| :------- | :-------- | :------------------------------------------------------- |

138| `v` | Sí | Versión del protocolo. `1` es el único valor soportado |

139| `type` | Sí | Tipo de sugerencia. `plugin` es el único valor soportado |

140| `value` | Sí | Identificador del plugin en forma `name@marketplace` |

141 

142Los valores de atributo pueden estar entrecomillados con comillas dobles o dejarse sin comillas. Los valores sin comillas no pueden contener espacios en blanco. Las secuencias de escape no son compatibles.

143 

144<h2 id="requirements">

145 Requisitos

146</h2>

147 

148Claude Code aplica dos condiciones antes de actuar sobre una sugerencia. Las sugerencias que fallan en cualquiera de las verificaciones se descartan:

149 

150* **Línea propia**: la etiqueta debe ocupar su propia línea. Una etiqueta incrustada a mitad de línea, por ejemplo dentro de una declaración de registro, se ignora. Se permite espacios en blanco al principio y al final de la línea.

151* **Marketplace oficial**: el `value` debe hacer referencia a un plugin en un marketplace controlado por Anthropic como `claude-plugins-official`. Las sugerencias que apuntan a otros marketplaces se descartan silenciosamente.

152 

153La línea de sugerencia siempre se elimina de la salida antes de que llegue al modelo, incluso cuando la versión o el tipo no se reconocen, por lo que el marcador nunca se cuenta hacia el uso de tokens.

154 

155La orientación restante se recomienda pero no se aplica. Claude Code no puede observar si tu CLI la sigue:

156 

157* **Escribe en stderr**: stderr mantiene la etiqueta fuera de tuberías de shell como `example-cli deploy | jq`. Claude Code escanea ambas secuencias, por lo que stdout también funciona.

158* **Condiciona en una variable de entorno**: solo emite cuando `CLAUDECODE` o `CLAUDE_CODE_CHILD_SESSION` está establecida. Consulta [Emitir la sugerencia](#emit-the-hint) para saber cómo difieren las dos variables.

159 

160<h2 id="get-your-plugin-into-the-official-marketplace">

161 Obtén tu plugin en el marketplace oficial

162</h2>

163 

164El protocolo de sugerencia solo tiene efecto para plugins que se enumeran en el marketplace oficial de Anthropic, `claude-plugins-official`. Anthropic cura ese marketplace a su discreción, y los formularios de envío en la aplicación agregan plugins al [marketplace de la comunidad](/docs/es/plugins#submit-your-plugin-to-the-community-marketplace) en su lugar, que el protocolo de sugerencia no verifica. Si trabajas con un contacto de socio de Anthropic, comunícate con ellos para coordinar una enumeración en el marketplace oficial.

165 

166<h2 id="see-also">

167 Ver también

168</h2>

169 

170* [Crea plugins](/docs/es/plugins): construye el plugin que tu CLI recomienda

171* [Crea y distribuye un marketplace de plugins](/docs/es/plugin-marketplaces): aloja plugins fuera del marketplace oficial

172* [Variables de entorno](/docs/es/env-vars): referencia completa para `CLAUDECODE` y variables relacionadas

plugin-marketplaces.md +0 −1688 deleted

File Deleted View Diff

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Crear y distribuir un marketplace de plugins

6 

7> Cree y aloje marketplaces de plugins para distribuir extensiones de Claude Code en equipos y comunidades.

8 

9Un **marketplace de plugins** es un catálogo que le permite distribuir plugins a otros. Los marketplaces proporcionan descubrimiento centralizado, seguimiento de versiones, actualizaciones automáticas y soporte para múltiples tipos de fuentes, incluyendo repositorios git y rutas locales. Esta guía le muestra cómo crear su propio marketplace para compartir plugins con su equipo o comunidad.

10 

11¿Busca instalar plugins desde un marketplace existente? Consulte [Descubrir e instalar plugins precompilados](/docs/es/discover-plugins).

12 

13<h2 id="overview">

14 Descripción general

15</h2>

16 

17Crear y distribuir un marketplace implica:

18 

191. **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](/docs/es/plugins) para obtener detalles sobre cómo crearlos.

202. **Crear el archivo de marketplace**: defina un `marketplace.json` que enumere sus plugins y dónde encontrarlos. Consulte [Crear el archivo de marketplace](#create-the-marketplace-file).

213. **Alojar el marketplace**: envíe a GitHub, GitLab u otro host git. Consulte [Alojar y distribuir marketplaces](#host-and-distribute-marketplaces).

224. **Compartir con usuarios**: los usuarios agregan su marketplace con `/plugin marketplace add` e instalan plugins individuales. Consulte [Descubrir e instalar plugins](/docs/es/discover-plugins).

23 

24Una vez que su marketplace esté activo, puede actualizarlo enviando cambios a su repositorio. Los usuarios actualizan su copia local con `/plugin marketplace update`.

25 

26<h2 id="walkthrough-create-a-local-marketplace">

27 Tutorial: crear un marketplace local

28</h2>

29 

30Este ejemplo crea un marketplace con un plugin: una skill `quality-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á.

31 

32<Steps>

33 <Step title="Crear la estructura de directorios">

34 ```bash theme={null}

35 mkdir -p my-marketplace/.claude-plugin

36 mkdir -p my-marketplace/plugins/quality-review-plugin/.claude-plugin

37 mkdir -p my-marketplace/plugins/quality-review-plugin/skills/quality-review

38 ```

39 </Step>

40 

41 <Step title="Crear la skill">

42 Cree un archivo `SKILL.md` que defina qué hace la skill `quality-review`.

43 

44 ```markdown my-marketplace/plugins/quality-review-plugin/skills/quality-review/SKILL.md theme={null}

45 ---

46 description: Review code for bugs, security, and performance

47 ---

48 

49 Review the code I've selected or the recent changes for:

50 - Potential bugs or edge cases

51 - Security concerns

52 - Performance issues

53 - Readability improvements

54 

55 Be concise and actionable.

56 ```

57 </Step>

58 

59 <Step title="Crear el manifiesto del plugin">

60 Cree un archivo `plugin.json` que describa el plugin. El manifiesto va en el directorio `.claude-plugin/`.

61 

62 ```json my-marketplace/plugins/quality-review-plugin/.claude-plugin/plugin.json theme={null}

63 {

64 "name": "quality-review-plugin",

65 "description": "Adds a quality-review skill for quick code reviews",

66 "version": "1.0.0",

67 "author": {

68 "name": "Your Name"

69 }

70 }

71 ```

72 

73 <Note>

74 Establecer `version` significa que los usuarios solo reciben actualizaciones cuando cambia este campo, así que incremente la versión en cada lanzamiento. Un plugin con una [fuente `command`](#command-sources) no está fijado por este campo. Tampoco lo está un plugin [cargado en su lugar](/docs/es/plugins-reference#plugin-caching-and-file-resolution) desde un marketplace agregado como directorio local. Si omite `version`, la versión proviene de la siguiente fuente en [gestión de versiones](/docs/es/plugins-reference#version-management).

75 </Note>

76 </Step>

77 

78 <Step title="Crear el archivo de marketplace">

79 Cree el catálogo de marketplace que enumera su plugin.

80 

81 ```json my-marketplace/.claude-plugin/marketplace.json theme={null}

82 {

83 "name": "my-plugins",

84 "owner": {

85 "name": "Your Name"

86 },

87 "plugins": [

88 {

89 "name": "quality-review-plugin",

90 "source": "./plugins/quality-review-plugin",

91 "description": "Adds a quality-review skill for quick code reviews"

92 }

93 ]

94 }

95 ```

96 </Step>

97 

98 <Step title="Agregar e instalar">

99 Desde el directorio que contiene `my-marketplace`, inicie Claude Code y ejecute los siguientes comandos. El comando install abre una vista de detalles del plugin donde selecciona un alcance de instalación para confirmar la instalación. Verifique el resumen de instalación: si informa `Run /reload-plugins to activate.`, consulte [Aplicar cambios de plugin sin reiniciar](/docs/es/discover-plugins#apply-plugin-changes-without-restarting).

100 

101 ```shell theme={null}

102 /plugin marketplace add ./my-marketplace

103 /plugin install quality-review-plugin@my-plugins

104 ```

105 </Step>

106 

107 <Step title="Pruébelo">

108 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.

109 

110 ```shell theme={null}

111 /quality-review-plugin:quality-review

112 ```

113 </Step>

114</Steps>

115 

116Para obtener más información sobre lo que los plugins pueden hacer, incluidos hooks, agentes, servidores MCP y servidores LSP, consulte [Plugins](/docs/es/plugins).

117 

118<Note>

119 **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é, a menos que el plugin se cargue en su lugar. Una [fuente `command` en modo de enlace](#copy-mode-and-link-mode) se carga en su lugar, y también lo hace una [fuente de ruta relativa](#relative-paths) en un marketplace agregado desde un directorio local. Los plugins copiados no pueden hacer referencia a archivos fuera de su directorio usando rutas como `../shared-utils`, porque esos archivos no se copiarán.

120 

121 Si necesita compartir archivos entre plugins, use enlaces simbólicos. Consulte [Plugin caching and file resolution](/docs/es/plugins-reference#plugin-caching-and-file-resolution) para obtener detalles.

122</Note>

123 

124<h2 id="create-the-marketplace-file">

125 Crear el archivo de marketplace

126</h2>

127 

128Cree `.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.

129 

130Cada 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](#marketplace-schema) a continuación para todos los campos disponibles.

131 

132```json theme={null}

133{

134 "name": "company-tools",

135 "owner": {

136 "name": "DevTools Team",

137 "email": "devtools@example.com"

138 },

139 "plugins": [

140 {

141 "name": "code-formatter",

142 "source": "./plugins/formatter",

143 "description": "Automatic code formatting on save",

144 "version": "2.1.0",

145 "author": {

146 "name": "DevTools Team"

147 }

148 },

149 {

150 "name": "deployment-tools",

151 "source": {

152 "source": "github",

153 "repo": "company/deploy-plugin"

154 },

155 "description": "Deployment automation tools"

156 }

157 ]

158}

159```

160 

161<h2 id="marketplace-schema">

162 Esquema de marketplace

163</h2>

164 

165<h3 id="required-fields">

166 Campos requeridos

167</h3>

168 

169| Campo | Tipo | Descripción | Ejemplo |

170| :-------- | :----- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------- |

171| `name` | string | Identificador de marketplace en kebab-case, sin espacios, caracteres de control o caracteres de formato bidireccional. Esto es público: los usuarios lo ven al instalar plugins (por ejemplo, `/plugin install my-tool@your-marketplace`). Cada usuario puede registrar solo un marketplace por nombre: cuando agregan un segundo marketplace con el mismo nombre, Claude Code reemplaza el primero. Para publicar múltiples plugins bajo un nombre de marketplace, enumérelos todos en un único [`marketplace.json`](#create-the-marketplace-file). | `"acme-tools"` |

172| `owner` | object | Información del mantenedor del marketplace. Consulte [Campos del propietario](#owner-fields) | |

173| `plugins` | array | Lista de plugins disponibles | Ver [Entradas de plugins](#plugin-entries) |

174 

175<Note>

176 **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`, `claude-tag-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.

177 

178 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](/docs/es/errors#marketplace-is-registered-from-an-untrusted-source). 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. Antes de v2.1.265, `claude-tag-plugins` no estaba reservado.

179 

180 Tampoco puede nombrar un marketplace `npm`, `pip`, `uv`, `cargo`, `github`, o `gh`, en cualquier combinación de mayúsculas y minúsculas. Esta verificación requiere Claude Code v2.1.275 o posterior.

181</Note>

182 

183<h3 id="owner-fields">

184 Campos del propietario

185</h3>

186 

187| Campo | Tipo | Requerido | Descripción |

188| :------ | :----- | :-------- | :------------------------------------------------ |

189| `name` | string | Sí | Nombre del mantenedor o equipo |

190| `email` | string | No | Correo electrónico de contacto del mantenedor |

191| `url` | string | No | Sitio web, perfil de GitHub u URL de organización |

192 

193<h3 id="optional-fields">

194 Campos opcionales

195</h3>

196 

197| Campo | Tipo | Descripción |

198| :------------------------------------ | :----- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

199| `$schema` | string | URL del esquema JSON para autocompletado y validación del editor. Claude Code ignora este campo al cargar. |

200| `description` | string | Descripción breve del marketplace |

201| `version` | string | Versión del manifiesto del marketplace |

202| `metadata.pluginRoot` | string | Directorio que Claude Code resuelve bajo nombres de fuente de plugin sin ruta. Consulte [Rutas relativas](#relative-paths). Requiere Claude Code v2.1.239 o posterior. |

203| `allowCrossMarketplaceDependenciesOn` | array | Otros marketplaces en los que los plugins en este marketplace pueden depender. Las dependencias de un marketplace no listado aquí se bloquean en la instalación. Consulte [Depender de un plugin de otro marketplace](/docs/es/plugin-dependencies#depend-on-a-plugin-from-another-marketplace). |

204| `renames` | object | Mapa del anterior `name` de un plugin a su nombre actual, o a `null` si el plugin fue eliminado. Permite que los usuarios existentes migren automáticamente cuando cambia el nombre o elimina una entrada en `plugins`. Consulte [Renombrar o eliminar un plugin](#rename-or-remove-a-plugin). Requiere Claude Code v2.1.193 o posterior. |

205 

206`description` y `version` también se aceptan bajo `metadata` para compatibilidad con versiones anteriores.

207 

208<h2 id="plugin-entries">

209 Entradas de plugins

210</h2>

211 

212Cada entrada de plugin en el array `plugins` describe un plugin y dónde encontrarlo. Puede incluir cualquier campo del [esquema de manifiesto de plugin](/docs/es/plugins-reference#plugin-manifest-schema), como `description`, `version`, `author`, `commands` y `hooks`, más estos campos específicos del marketplace: `source`, `category`, `tags`, `strict`, `relevance`, `headers` y `headersHelper`.

213 

214<h3 id="required-fields-2">

215 Campos requeridos

216</h3>

217 

218| Campo | Tipo | Descripción |

219| :------- | :------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

220| `name` | string | Identificador de plugin en kebab-case, sin espacios, caracteres de control ni caracteres de formato bidireccional. Esto es público: los usuarios lo ven al instalar (por ejemplo, `/plugin install my-plugin@marketplace`). |

221| `source` | string\|object | Dónde obtener el plugin (consulte [Fuentes de plugins](#plugin-sources) a continuación) |

222 

223<h3 id="optional-plugin-fields">

224 Campos de plugin opcionales

225</h3>

226 

227**Campos de metadatos estándar:**

228 

229| Campo | Tipo | Descripción |

230| :--------------- | :------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

231| `displayName` | string | Nombre legible mostrado en superficies de interfaz de usuario. Cuando ni la entrada ni el `plugin.json` del plugin establece uno, los usuarios ven el `name` del plugin. Puede contener espacios y cualquier capitalización. No se utiliza para espacios de nombres o búsqueda. |

232| `description` | string | Descripción breve del plugin |

233| `version` | string | Versión del plugin. Si se establece (aquí o en `plugin.json`), el plugin se fija a esta cadena y los usuarios solo reciben actualizaciones cuando cambia. Un plugin con una fuente [`command`](#command-sources) no se fija por ninguno de los campos. Tampoco un plugin [cargado en su lugar](/docs/es/plugins-reference#plugin-caching-and-file-resolution) desde un marketplace agregado como directorio local. Si no se establece en ningún lugar, la versión proviene de la siguiente fuente en [gestión de versiones](/docs/es/plugins-reference#version-management). |

234| `author` | object | Información del autor del plugin (`name` requerido; `email` y `url` opcionales) |

235| `homepage` | string | URL de página de inicio o documentación del plugin |

236| `repository` | string | URL del repositorio de código fuente |

237| `license` | string | Identificador de licencia SPDX (por ejemplo, MIT, Apache-2.0) |

238| `keywords` | array | Etiquetas para descubrimiento y categorización de plugins |

239| `metadata` | object | Objeto de forma libre para sus propios campos, como datos de derechos o catálogo. Claude Code no lo lee. Antes de v2.1.222, `claude plugin validate` reportaba la clave como un campo no reconocido. |

240| `category` | string | Categoría del plugin para organización |

241| `tags` | array | Etiquetas para búsqueda |

242| `strict` | boolean | Controla si `plugin.json` es la autoridad para definiciones de componentes (predeterminado: true). Consulte [Modo estricto](#strict-mode) a continuación. |

243| `relevance` | object | Señales que indican a Claude Code cuándo sugerir este plugin a los usuarios. Solo tiene efecto para marketplaces que un administrador incluye en la lista de permitidos en la configuración administrada. Consulte [Recomendar plugins para su organización](/docs/es/plugin-relevance). |

244| `defaultEnabled` | boolean | Si el plugin está habilitado después de la instalación (predeterminado: true). Establezca en `false` para instalar el plugin deshabilitado hasta que el usuario opte por participar. Tiene prioridad sobre el mismo campo en el `plugin.json` del plugin. Consulte [Habilitación predeterminada](/docs/es/plugins-reference#default-enablement). |

245 

246Tanto la entrada como el `plugin.json` del plugin pueden establecer los campos de visualización `displayName`, `description`, `author`, `homepage`, `repository`, `license` y `keywords`. En listados y detalles de plugins, antes y después de la instalación:

247 

248* Para un campo que establece en la entrada, los usuarios ven el valor de la entrada, incluso cuando `plugin.json` establece uno diferente.

249* Para un campo que la entrada deja sin establecer, los usuarios ven el valor de `plugin.json`.

250 

251Antes de la instalación, Claude Code solo puede leer `plugin.json` para entradas con una [fuente de ruta relativa](#relative-paths), cuyos archivos de plugin viven dentro del marketplace. Para una entrada con cualquier otro tipo de fuente, los usuarios ven solo los campos de la entrada hasta que instalen el plugin.

252 

253**Campos de configuración de componentes:**

254 

255| Campo | Tipo | Descripción |

256| :----------- | :------------- | :--------------------------------------------------------------------------- |

257| `skills` | string\|array | Rutas personalizadas a directorios de skills que contienen `<name>/SKILL.md` |

258| `commands` | string\|array | Rutas personalizadas a archivos de skills planos o directorios |

259| `agents` | string\|array | Rutas personalizadas a archivos de agentes |

260| `hooks` | string\|object | Configuración de hooks personalizada o ruta a archivo de hooks |

261| `mcpServers` | string\|object | Configuraciones de servidor MCP o ruta a configuración de MCP |

262| `lspServers` | string\|object | Configuraciones de servidor LSP o ruta a configuración de LSP |

263 

264**Campos de autenticación de archivo:**

265 

266Establezca estos cuando la entrada tenga una fuente [`archive`](#zip-archives) en un servidor que requiera credenciales.

267 

268| Campo | Tipo | Descripción |

269| :-------------- | :----- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

270| `headers` | object | Encabezados HTTP que Claude Code envía cuando descarga el archivo de esta entrada. Anula los encabezados del marketplace con el mismo nombre. Requiere Claude Code v2.1.238 o posterior. |

271| `headersHelper` | string | Comando que imprime los encabezados HTTP para la descarga del archivo de esta entrada como un objeto JSON, para una credencial que expira. Consulte [Autenticar descargas de archivo](#authenticate-archive-downloads). La entrada también debe establecer [`"strict": false`](#strict-mode). Requiere Claude Code v2.1.238 o posterior. |

272 

273<h2 id="plugin-sources">

274 Fuentes de plugins

275</h2>

276 

277Las fuentes de plugins le indican a Claude Code dónde obtener cada plugin individual listado en su marketplace. Estos se establecen en el campo `source` de cada entrada de plugin en `marketplace.json`.

278 

279Claude Code copia cada plugin instalado en el caché de plugins versionado local en `~/.claude/plugins/cache`, a menos que el plugin se cargue en su lugar. Una [fuente `command` en modo link](#copy-mode-and-link-mode) se carga en su lugar, y también lo hace una [fuente de ruta relativa](#relative-paths) en un marketplace agregado desde un directorio local. Claude Code también [instala las dependencias de paquetes Node.js elegibles del plugin](/docs/es/plugins-reference#node-js-package-dependencies) en la copia en caché. Consulte [Plugin caching and file resolution](/docs/es/plugins-reference#plugin-caching-and-file-resolution) para ver cómo un plugin cargado en su lugar desde un marketplace de directorio local recoge sus ediciones.

280 

281| Fuente | Tipo | Campos | Notas |

282| ------------- | --------------------------------- | ---------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

283| Ruta relativa | `string` (p. ej. `"./my-plugin"`) | ninguno | Directorio local dentro del repositorio de marketplace. Debe comenzar con `./`, a menos que escriba un [nombre simple bajo `metadata.pluginRoot`](#relative-paths). Claude Code resuelve la ruta relativa a la raíz del marketplace, no al directorio `.claude-plugin/` |

284| `github` | object | `repo`, `ref?`, `sha?` | |

285| `url` | object | `url`, `ref?`, `sha?` | Fuente de URL de Git |

286| `git-subdir` | object | `url`, `path`, `ref?`, `sha?` | Subdirectorio dentro de un repositorio git. Clona escasamente para minimizar el ancho de banda para monorepos |

287| `npm` | object | `package`, `version?`, `registry?` | Paquete npm, obtenido con su cliente npm y desempaquetado sin ejecutar scripts de instalación |

288| `archive` | object | `url`, `sha256?` | Archivo zip descargado sobre HTTPS. Funciona sin git o npm en la máquina del usuario. Requiere Claude Code v2.1.224 o posterior |

289| `command` | object | `command`, `timeout?`, `mode?` | Directorio de plugin producido al ejecutar un comando local, se vuelve a ejecutar una vez por sesión para recoger cambios. Requiere Claude Code v2.1.229 o posterior |

290 

291<Note>

292 **Fuentes de marketplace vs fuentes de plugins**: Estos son conceptos diferentes que controlan cosas diferentes.

293 

294 * **Fuente de marketplace**: dónde obtener el catálogo `marketplace.json` en sí. Se establece cuando los usuarios ejecutan `/plugin marketplace add` o en la configuración `extraKnownMarketplaces`. Las fuentes de marketplace basadas en Git soportan `ref` (rama/etiqueta) pero no `sha`.

295 * **Fuente de plugin**: dónde obtener un plugin individual listado en el marketplace. Se establece en el campo `source` de cada entrada de plugin dentro de `marketplace.json`. Las fuentes de plugin basadas en Git soportan tanto `ref` (rama/etiqueta) como `sha` (commit exacto).

296 

297 Por ejemplo, un marketplace alojado en `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.

298</Note>

299 

300Los tipos de fuente basados en git que se muestran a continuación son `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.

301 

302En 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.

303 

304Si distribuye plugins a través de **Configuración de organización > Plugins**, solo se permiten algunos tipos de fuente. Consulte [Distribuir a través de la configuración de organización](#distribute-through-organization-settings).

305 

306<h3 id="relative-paths">

307 Rutas relativas

308</h3>

309 

310Para plugins en el mismo repositorio, use una ruta que comience con `./`:

311 

312```json theme={null}

313{

314 "name": "my-plugin",

315 "source": "./plugins/my-plugin"

316}

317```

318 

319Las rutas se resuelven relativas a la raíz del marketplace, que es el directorio que contiene `.claude-plugin/`. La fuente `./plugins/my-plugin` por lo tanto 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. En macOS y Linux, Claude Code rechaza una ruta de entrada con una barra invertida en cualquier lugar después del `./` inicial, así que escriba los separadores como `/` en todas las plataformas.

320 

321Un nombre simple es un nombre de directorio único sin `/`, como `"formatter"`. Para escribir nombres simples en lugar de rutas `./`, establezca [`metadata.pluginRoot`](#optional-fields) en el directorio bajo el cual se resuelven. Con `"pluginRoot": "./plugins"`, Claude Code resuelve `"source": "formatter"` a `./plugins/formatter`. Requiere Claude Code v2.1.239 o posterior.

322 

323`metadata.pluginRoot` debe ser en sí mismo una ruta relativa dentro del marketplace. Claude Code lo ignora para una fuente que ya comienza con `./`. Una fuente que contiene un `/`, como `team-a/formatter`, no es un nombre simple y aún necesita el prefijo `./`, incluso cuando `metadata.pluginRoot` está establecido.

324 

325<Note>

326 Claude Code resuelve rutas relativas 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 Claude Code descarga solo ese archivo. Para distribución basada en URL, use cualquier otra [fuente de plugin](#plugin-sources) en su lugar. Consulte [Solución de problemas](#plugins-with-relative-paths-fail-in-url-based-marketplaces) para obtener detalles.

327</Note>

328 

329<h3 id="github-repositories">

330 Repositorios de GitHub

331</h3>

332 

333```json theme={null}

334{

335 "name": "github-plugin",

336 "source": {

337 "source": "github",

338 "repo": "owner/plugin-repo"

339 }

340}

341```

342 

343Puede fijar a una rama, etiqueta o commit específico:

344 

345```json theme={null}

346{

347 "name": "github-plugin",

348 "source": {

349 "source": "github",

350 "repo": "owner/plugin-repo",

351 "ref": "v2.0.0",

352 "sha": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0"

353 }

354}

355```

356 

357| Campo | Tipo | Descripción |

358| :----- | :----- | :--------------------------------------------------------------------------------------- |

359| `repo` | string | Requerido. Repositorio de GitHub en formato `owner/repo` |

360| `ref` | string | Opcional. Rama o etiqueta de Git (por defecto es la rama predeterminada del repositorio) |

361| `sha` | string | Opcional. SHA de commit de git completo de 40 caracteres para fijar a una versión exacta |

362 

363<h3 id="git-repositories">

364 Repositorios de Git

365</h3>

366 

367```json theme={null}

368{

369 "name": "git-plugin",

370 "source": {

371 "source": "url",

372 "url": "https://gitlab.com/team/plugin.git"

373 }

374}

375```

376 

377Puede fijar a una rama, etiqueta o commit específico:

378 

379```json theme={null}

380{

381 "name": "git-plugin",

382 "source": {

383 "source": "url",

384 "url": "https://gitlab.com/team/plugin.git",

385 "ref": "main",

386 "sha": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0"

387 }

388}

389```

390 

391| Campo | Tipo | Descripción |

392| :---- | :----- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

393| `url` | string | Requerido. URL completa del repositorio de git (`https://` o `git@`). El sufijo `.git` es opcional, por lo que las URLs de Azure DevOps y AWS CodeCommit sin el sufijo funcionan |

394| `ref` | string | Opcional. Rama o etiqueta de Git (por defecto es la rama predeterminada del repositorio) |

395| `sha` | string | Opcional. SHA de commit de git completo de 40 caracteres para fijar a una versión exacta |

396 

397<h3 id="git-subdirectories">

398 Subdirectorios de Git

399</h3>

400 

401Use `git-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.

402 

403```json theme={null}

404{

405 "name": "my-plugin",

406 "source": {

407 "source": "git-subdir",

408 "url": "https://github.com/acme-corp/monorepo.git",

409 "path": "tools/claude-plugin"

410 }

411}

412```

413 

414Puede fijar a una rama, etiqueta o commit específico:

415 

416```json theme={null}

417{

418 "name": "my-plugin",

419 "source": {

420 "source": "git-subdir",

421 "url": "https://github.com/acme-corp/monorepo.git",

422 "path": "tools/claude-plugin",

423 "ref": "v2.0.0",

424 "sha": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0"

425 }

426}

427```

428 

429El campo `url` también acepta una abreviatura de GitHub (`owner/repo`) o URLs SSH (`git@github.com:owner/repo.git`).

430 

431| Campo | Tipo | Descripción |

432| :----- | :----- | :--------------------------------------------------------------------------------------------------------------------- |

433| `url` | string | Requerido. URL del repositorio de Git, abreviatura de GitHub `owner/repo` o URL SSH |

434| `path` | string | Requerido. Ruta del subdirectorio dentro del repositorio que contiene el plugin (por ejemplo, `"tools/claude-plugin"`) |

435| `ref` | string | Opcional. Rama o etiqueta de Git (por defecto es la rama predeterminada del repositorio) |

436| `sha` | string | Opcional. SHA de commit de git completo de 40 caracteres para fijar a una versión exacta |

437 

438<h3 id="npm-packages">

439 Paquetes npm

440</h3>

441 

442Una fuente npm puede nombrar cualquier paquete en el registro npm público o en un registro privado que su equipo aloje. Claude Code resuelve el paquete con su cliente npm, descarga el tarball y lo desempaqueta en el caché de plugins.

443 

444Los scripts de instalación del paquete, como `preinstall` o `postinstall`, nunca se ejecutan, y sus dependencias no se instalan durante la obtención.

445 

446Si el paquete envía un archivo de bloqueo compatible junto a su `package.json`, Claude Code instala esas [dependencias de paquetes Node.js](/docs/es/plugins-reference#node-js-package-dependencies) en un paso separado, también con scripts deshabilitados. De lo contrario, publique el plugin con todo lo que necesita ya construido. Un servidor MCP que necesita otros paquetes puede lanzarse a través de `npx`, que los instala en la primera ejecución.

447 

448```json theme={null}

449{

450 "name": "my-npm-plugin",

451 "source": {

452 "source": "npm",

453 "package": "@acme/claude-plugin"

454 }

455}

456```

457 

458Para fijar a una versión específica, agregue el campo `version`:

459 

460```json theme={null}

461{

462 "name": "my-npm-plugin",

463 "source": {

464 "source": "npm",

465 "package": "@acme/claude-plugin",

466 "version": "2.1.0"

467 }

468}

469```

470 

471Para instalar desde un registro privado o interno, agregue el campo `registry`:

472 

473```json theme={null}

474{

475 "name": "my-npm-plugin",

476 "source": {

477 "source": "npm",

478 "package": "@acme/claude-plugin",

479 "version": "^2.0.0",

480 "registry": "https://npm.example.com"

481 }

482}

483```

484 

485| Campo | Tipo | Descripción |

486| :--------- | :----- | :-------------------------------------------------------------------------------------------------------------- |

487| `package` | string | Requerido. Nombre del paquete o paquete con alcance (por ejemplo, `@org/plugin`) |

488| `version` | string | Opcional. Versión o rango de versión (por ejemplo, `2.1.0`, `^2.0.0`, `~1.5.0`) |

489| `registry` | string | Opcional. URL de registro npm personalizado. Por defecto es el registro npm del sistema (típicamente npmjs.org) |

490 

491<h3 id="zip-archives">

492 Archivos zip

493</h3>

494 

495Use `archive` para distribuir un plugin como un archivo zip que Claude Code descarga sobre HTTPS, para que las instalaciones funcionen sin git o npm en la máquina del usuario. Aloje el archivo en cualquier servidor de archivos estático o repositorio de artefactos, como un bucket de S3, un repositorio genérico de Artifactory o nginx. Requiere Claude Code v2.1.224 o posterior. En las versiones v2.1.120 a v2.1.223, la instalación del plugin falla con `This plugin uses a source type your Claude Code version does not support. Update Claude Code and try again.`; en versiones más antiguas, un marketplace que contiene una entrada `archive` falla al cargar completamente.

496 

497Esta entrada instala el plugin desde un archivo zip en un servidor de artefactos:

498 

499```json theme={null}

500{

501 "name": "my-plugin",

502 "source": {

503 "source": "archive",

504 "url": "https://artifacts.example.com/claude-plugins/my-plugin-2.1.0.zip"

505 }

506}

507```

508 

509Cuando construye el zip, puede comprimir el contenido del plugin directamente o comprimir la carpeta del plugin en sí. Claude Code busca `.claude-plugin/` en la parte superior del archivo, luego dentro de una única carpeta de nivel superior, por lo que ambos diseños se instalan:

510 

511```text theme={null}

512my-plugin.zip my-plugin.zip

513├── .claude-plugin/ └── my-plugin/

514│ └── plugin.json ├── .claude-plugin/

515└── commands/ │ └── plugin.json

516 └── commands/

517```

518 

519Claude Code no busca más profundo que una carpeta, por lo que un plugin anidado más abajo falla al instalar. Claude Code rechaza archivos más grandes que 256 MiB.

520 

521Para fijar el archivo exacto, agregue un campo `sha256` con el resumen del archivo:

522 

523```json theme={null}

524{

525 "name": "my-plugin",

526 "source": {

527 "source": "archive",

528 "url": "https://artifacts.example.com/claude-plugins/my-plugin-2.1.0.zip",

529 "sha256": "6bfa50e3d2e00c052b46abe51fff89346ac803e45771f76dcf6df1ab74cca5e1"

530 }

531}

532```

533 

534Si el archivo descargado no coincide con el pin, Claude Code rechaza la instalación e informa [`Plugin archive integrity check failed`](/docs/es/errors#plugin-archive-integrity-check-failed).

535 

536Las fuentes de archivo aceptan estos campos:

537 

538| Campo | Tipo | Descripción |

539| :------- | :----- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

540| `url` | string | Requerido. URL HTTPS del archivo zip. Claude Code rechaza URLs `http://`, junto con hosts de loopback, link-local y cloud-metadata. Cada salto de redirección debe satisfacer las mismas reglas, o Claude Code rechaza la descarga |

541| `sha256` | string | Opcional. Resumen SHA-256 del archivo como 64 caracteres hexadecimales, mayúsculas o minúsculas. Claude Code verifica cada descarga contra él y rechaza la instalación en caso de discrepancia |

542 

543El resumen `sha256` también sirve como la versión del plugin cuando ni `plugin.json` ni la entrada del marketplace declaran una. Consulte [Gestión de versiones](/docs/es/plugins-reference#version-management). Si declara una `version`, esa cadena de versión es la señal de actualización, por lo que después de cambiar el zip y su resumen, también aumente la versión, o los usuarios mantienen la copia en caché.

544 

545<h4 id="authenticate-archive-downloads">

546 Autenticar descargas de archivos

547</h4>

548 

549Para autenticar una descarga de archivo, como una descarga de un registro privado, establezca los encabezados HTTP que Claude Code envía con ella. Establezca `headers` en la fuente `url` desde la que registró el marketplace, como una entrada [`extraKnownMarketplaces`](/docs/es/settings-reference#extraknownmarketplaces). En Claude Code v2.1.238 o posterior, puede establecerlo en la entrada del plugin en su lugar, junto a `source`.

550 

551Si el valor que pondría en `headers` es de corta duración, como un token que su registro acuña bajo demanda, establezca un comando `headersHelper` en el mismo lugar en su lugar. Claude Code ejecuta el comando y envía el objeto JSON que imprime como los encabezados de ese lugar. Requiere Claude Code v2.1.238 o posterior.

552 

553El lugar que elija decide qué descargas obtienen los encabezados y cuándo Claude Code ejecuta el comando:

554 

555| Lugar | Descargas que obtienen los encabezados | Cuándo Claude Code ejecuta un `headersHelper` establecido allí |

556| :--------------------------- | :------------------------------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

557| Fuente `url` del marketplace | Descargas de archivo en el origen de la URL del marketplace, lo que significa el mismo esquema, host y puerto | Antes de cada obtención del `marketplace.json` del marketplace y antes de cada descarga de archivo en ese origen. Claude Code reutiliza la salida de una ejecución durante hasta 60 segundos |

558| Entrada de plugin | Solo la descarga de esa entrada | Solo cuando un usuario instala o actualiza ese único plugin por sí solo y [acepta el comando](#how-users-accept-a-headershelper-command) |

559 

560Donde ambos lugares establecen un encabezado del mismo nombre, Claude Code envía el valor de la entrada. Dentro de un lugar, un encabezado que el comando imprime anula un encabezado del mismo nombre listado en `headers`.

561 

562<h5 id="add-a-headershelper-to-a-plugin-entry">

563 Agregar un headersHelper a una entrada de plugin

564</h5>

565 

566Esta entrada establece `headersHelper` junto a `source`. También establece `"strict": false`, que Claude Code requiere de una entrada `marketplace.json` que establezca `headersHelper`. Con [`"strict": false`](#strict-mode), la entrada del marketplace es la definición completa del plugin, por lo que un usuario puede revisar qué contiene el plugin antes de aceptar el comando:

567 

568```json theme={null}

569{

570 "name": "my-plugin",

571 "description": "Formatting commands for internal services",

572 "strict": false,

573 "commands": "./commands",

574 "source": {

575 "source": "archive",

576 "url": "https://registry.example.com/plugins/my-plugin-2.1.0.zip"

577 },

578 "headersHelper": "/opt/bin/mint-registry-token.sh"

579}

580```

581 

582Para verificar la entrada, ejecute `claude plugin install my-plugin@your-marketplace`. Claude Code le muestra el comando y la URL del archivo, y descarga el zip después de que acepte.

583 

584Antes de v2.1.238, Claude Code descargaba el archivo de una entrada sin sus `headers` o `headersHelper`, por lo que una instalación que dependía de ellos fallaba con `HTTP 401 while downloading plugin archive from`, seguido de la URL, con el código de estado del registro en lugar de 401.

585 

586<h4 id="write-the-headershelper-command">

587 Escribir el comando headersHelper

588</h4>

589 

590Ya sea que establezca `headersHelper` en una fuente `url` del marketplace o en una entrada de plugin, escriba el comando para cumplir con estos requisitos:

591 

592* **Texto del comando**: como máximo 500 caracteres de ASCII imprimible, sin una ejecución de cuatro o más espacios.

593* **Salida**: imprima un objeto JSON de nombres de encabezados y valores de cadena en stdout, luego salga 0 dentro de 10 segundos.

594* **Shell y directorio de trabajo**: Claude Code ejecuta el comando a través de `sh`, o `cmd.exe` en Windows, desde el directorio de configuración, `~/.claude` o [`CLAUDE_CONFIG_DIR`](/docs/es/env-vars#variables). Proporcione una ruta absoluta o un comando en `PATH`, porque una ruta relativa se resuelve contra ese directorio, no el proyecto del usuario.

595* **Variables que Claude Code elimina**: del entorno de un comando establecido en una entrada `marketplace.json` o en `.claude/settings.json` o `.claude/settings.local.json` de un proyecto, Claude Code elimina cada variable cuyo nombre contiene una palabra como `TOKEN`, `SECRET`, `KEY` o `AUTH`, incluida `ANTHROPIC_API_KEY`. Claude Code no aplica esta eliminación a un comando establecido en la configuración del usuario, un archivo `--settings` o configuración administrada.

596* **Variables que Claude Code establece**: `CLAUDE_CODE_MARKETPLACE_URL` y `CLAUDE_CODE_MARKETPLACE_NAME` para el comando de una fuente `url`, y `CLAUDE_CODE_PLUGIN_NAME` y `CLAUDE_CODE_PLUGIN_ARCHIVE_URL` para el comando de una entrada. `CLAUDE_CODE_MARKETPLACE_NAME` no está establecido en la primera obtención después de que un usuario agregue un marketplace por URL, porque esa obtención es lo que proporciona el nombre.

597 

598Un comando que acuña un token de portador imprime un objeto como este:

599 

600```json theme={null}

601{"Authorization": "Bearer eyJhbGciOiJSUzI1NiJ9"}

602```

603 

604<h4 id="when-claude-code-skips-a-headershelper-command-or-drops-its-output">

605 Cuándo Claude Code omite un comando headersHelper o descarta su salida

606</h4>

607 

608Claude Code no ejecuta un comando `headersHelper`, o descarta encabezados que vinieron de `headers` o de la salida del comando, en estas situaciones:

609 

610* **El comando falla**: si el comando sale con código distinto de cero, se ejecuta más de 10 segundos, o imprime algo que no sea un objeto JSON de valores de cadena, Claude Code no realiza la obtención o descarga para la que ejecutó el comando.

611* **La URL del marketplace no comienza con `https://`**: Claude Code no ejecuta el comando de esa fuente `url` y envía solo los encabezados listados en su campo `headers`.

612* **La redirección deja el origen**: cuando una descarga se redirige fuera del origen de la URL del archivo, Claude Code descarta los valores de `headers` y la salida del comando tanto de la fuente `url` del marketplace como de la entrada del plugin.

613* **La entrada establece un encabezado de enrutamiento o identidad**: Claude Code descarta nombres de enrutamiento de solicitud e identidad de cliente como `Host`, `Cookie` y `X-Forwarded-*` de los `headers` de una entrada y la salida del comando, y mantiene nombres de autenticación como `Authorization`. Claude Code filtra cada entrada `marketplace.json` de esta manera, y una [entrada de configuración en línea](/docs/es/settings-reference#extraknownmarketplaces) dependiendo de qué archivo la declare.

614* **El comando se establece en la configuración de un directorio `--add-dir`**: Claude Code lo ignora, en una fuente `url` y en una [entrada de plugin en línea](/docs/es/settings-reference#extraknownmarketplaces) por igual, y envía solo los `headers` de ese archivo.

615* **La configuración administrada bloquea el comando**: establecer [`disableCommandPluginSources`](/docs/es/settings-reference#disablecommandpluginsources) en `true` bloquea comandos `headersHelper`, y [`allowManagedHooksOnly`](/docs/es/settings-reference#allowmanagedhooksonly) también los bloquea a menos que `disableCommandPluginSources` sea explícitamente `false`. Bajo cualquiera de estos bloqueos, Claude Code aún ejecuta el comando para un marketplace que la configuración administrada declara por sí misma.

616 

617<h4 id="how-users-accept-a-headershelper-command">

618 Cómo los usuarios aceptan un comando headersHelper

619</h4>

620 

621Un usuario acepta el comando de una entrada de plugin cada vez que instala o actualiza ese único plugin por sí solo, desde la vista propia del plugin en `/plugin` o con `claude plugin install` o `claude plugin update`. Claude Code muestra el comando y la URL del archivo, y ejecuta el comando solo después de que el usuario acepta.

622 

623En un shell no interactivo, pase [`--yes`](/docs/es/plugins-reference#plugin-install) para aceptar el comando que imprime. Para aceptar solo el comando que una ejecución anterior de `--json` mostró, pase [`--accept-command`](/docs/es/plugins-reference#plugin-install) con el `sha256` que la ejecución reportó.

624 

625Claude Code ejecuta solo el comando que mostró, para la URL del archivo que mostró. Si el comando o la URL del archivo de la entrada cambiaron en el medio, Claude Code rechaza la instalación o actualización. Un cambio solo en la cadena de consulta no cuenta.

626 

627<h5 id="installs-and-updates-that-refuse-the-command-instead-of-asking">

628 Instalaciones y actualizaciones que rechazan el comando en lugar de preguntar

629</h5>

630 

631En cualquier operación que no sea una instalación o actualización de un único plugin, Claude Code ni ejecuta el comando de una entrada ni descarga su archivo, por lo que el plugin permanece en su versión instalada o permanece desinstalado. Lo que el usuario ve depende de la operación:

632 

633* **Instalar varios plugins a la vez, desde una sugerencia de plugin, o como dependencia de otro plugin**: Claude Code rechaza el plugin que tiene el comando y señala al usuario la vista propia de ese plugin en `/plugin`. Los otros plugins en una instalación masiva aún se instalan. Un plugin que depende del plugin rechazado falla al instalar hasta que el usuario instale el plugin rechazado por sí solo.

634* **Actualización automática en segundo plano, o inicio de sesión para un plugin cuyo archivo nunca fue descargado**: Claude Code enumera el plugin en la pestaña `/plugin` Errores para que el usuario sepa instalarlo o actualizarlo manualmente. Una actualización automática que encuentra la entrada aún anuncia la versión instalada sin listar nada.

635 

636<h5 id="when-a-marketplace-url-source’s-command-runs">

637 Cuándo se ejecuta el comando headersHelper de una fuente `url` del marketplace

638</h5>

639 

640Un `headersHelper` de fuente `url` del marketplace se declara en un archivo de configuración, como una entrada [`extraKnownMarketplaces`](/docs/es/settings-reference#extraknownmarketplaces), en lugar de en el catálogo que publica el marketplace, por lo que Claude Code no le pide al usuario que lo acepte en cada instalación o actualización. El archivo de configuración que lo declara decide cuándo Claude Code lo ejecuta:

641 

642| Archivo de configuración | Cuándo Claude Code ejecuta el comando |

643| :---------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

644| Configuración del usuario, un archivo `--settings` o un archivo de configuración administrada en la máquina | Sin preguntar, incluida durante una actualización de marketplace en segundo plano |

645| `.claude/settings.json` o `.claude/settings.local.json` de un proyecto | Solo después de que el usuario acepte el [diálogo de confianza del espacio de trabajo](/docs/es/permissions#what-runs-before-you-trust-a-folder) para esa carpeta en sí. Una sesión `-p` o SDK no cuenta como aceptarlo, ni tampoco la confianza otorgada a una carpeta padre |

646| Configuración administrada por servidor | Solo después de que el usuario apruebe la configuración entregada en el [diálogo de aprobación de seguridad](/docs/es/server-managed-settings#security-approval-dialogs) |

647 

648En una sesión `-p` o SDK, Claude Code no puede mostrar el diálogo de aprobación de seguridad. Aplica la otra configuración entregada, pero la obtención del marketplace, y cualquier descarga de archivo que necesite el comando, falla hasta que un usuario haya aprobado en una sesión interactiva.

649 

650Para una [entrada de plugin en línea](/docs/es/settings-reference#extraknownmarketplaces) en uno de estos archivos, Claude Code requiere la misma confianza de carpeta o aprobación de configuración que para un comando a nivel de marketplace en ese archivo, y el usuario también acepta el comando de la entrada en cada instalación o actualización.

651 

652<h3 id="command-sources">

653 Fuentes de comando

654</h3>

655 

656Use `command` cuando una herramienta instalada localmente produce el directorio del plugin, como un IDE que renderiza su plugin para la cadena de herramientas seleccionada actualmente. Claude Code ejecuta el comando cuando el usuario instala el plugin y lo vuelve a ejecutar en segundo plano una vez por sesión, por lo que sus usuarios recogen la salida cambiada de la herramienta sin reinstalar. Requiere Claude Code v2.1.229 o posterior. En v2.1.120 a v2.1.228, la instalación del plugin falla con `This plugin uses a source type your Claude Code version does not support. Update Claude Code and try again.`, y en versiones más antiguas el marketplace completo falla al cargar.

657 

658Esta entrada instala el plugin desde cualquier directorio que la herramienta imprime:

659 

660```json theme={null}

661{

662 "name": "my-plugin",

663 "source": {

664 "source": "command",

665 "command": "my-tool claude-plugin-path"

666 }

667}

668```

669 

670Claude Code ejecuta el comando a través del shell de la plataforma, `sh` en macOS y Linux o `cmd.exe` en Windows, desde el directorio de inicio del usuario. El comando debe imprimir exactamente una línea en stdout y salir con código 0. Esa línea es la ruta absoluta de un directorio que contiene el plugin completo en el momento en que el comando sale, y la ruta puede cambiar entre ejecuciones.

671 

672Claude Code detiene un comando que se ejecuta más de `timeout` segundos, y la instalación o actualización falla. Claude Code también rechaza la ruta impresa en estos casos, y la instalación o actualización falla de la misma manera:

673 

674* El directorio no tiene contenido de plugin en su nivel superior, como un directorio `.claude-plugin/` o un directorio `skills/`, `commands/`, `agents/` o `hooks/`

675* El directorio es el en el que Claude Code fue iniciado, o uno de sus padres

676* En Windows, la ruta es una ruta UNC

677 

678Las fuentes de comando aceptan estos campos:

679 

680| Campo | Tipo | Descripción |

681| :-------- | :----- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

682| `command` | string | Requerido. Comando shell que imprime la ruta absoluta del directorio del plugin como una única línea en stdout y sale 0. Debe ser ASCII imprimible, como máximo 500 caracteres, sin ejecuciones de cuatro o más espacios, para que los usuarios puedan revisar el comando completo que se les pide que acepten |

683| `timeout` | number | Opcional. Número entero de segundos para esperar el comando antes de rendirse (predeterminado: 60, máximo: 600) |

684| `mode` | string | Opcional. `"copy"` (predeterminado) copia el directorio impreso en el caché de plugins. `"link"` usa el directorio impreso en su lugar. Consulte [Modo de copia y modo de enlace](#copy-mode-and-link-mode) |

685 

686<h4 id="copy-mode-and-link-mode">

687 Modo de copia y modo de enlace

688</h4>

689 

690Con el `"mode": "copy"` predeterminado, Claude Code copia el directorio impreso en el caché de plugins versionado y deriva la [versión del plugin](/docs/es/plugins-reference#version-management) de un hash del contenido del directorio. Su herramienta puede eliminar o reescribir el directorio después de que el comando sale, y una re-ejecución que produce contenido idéntico cuenta como actualizado. Claude Code rechaza instalar un directorio más grande que 256 MiB o que contenga más de 20,000 entradas.

691 

692Establezca `"mode": "link"` para directorios de plugins grandes que no deben copiarse, como una exportación de SDK renderizada. Claude Code llena la entrada de caché del plugin con un enlace a cada entrada de nivel superior del directorio impreso y usa los archivos en su lugar, por lo que nada se copia, los contenidos de los archivos no se codifican, y los límites de tamaño no se aplican. La instalación falla si una entrada de nivel superior es un enlace simbólico que apunta fuera del directorio impreso. Claude Code también omite la [instalación de dependencias de paquetes Node.js](/docs/es/plugins-reference#node-js-package-dependencies) para un plugin en modo de enlace, por lo que imprima un directorio que ya contenga cualquier `node_modules` que el plugin necesite.

693 

694Mantenga el directorio impreso en su lugar mientras el plugin permanezca instalado, porque Claude Code carga el plugin a través de esos enlaces en cada inicio. Claude Code deriva la [versión del plugin](/docs/es/plugins-reference#version-management) de la ruta real del directorio impreso y sus entradas de nivel superior, no los archivos dentro, por lo que imprima una ruta diferente para señalar contenido nuevo. En una sesión iniciada en el directorio impreso o en cualquier lugar debajo de él, Claude Code no carga el plugin en absoluto.

695 

696Claude Code no soporta modo de enlace en Windows y rechaza instalar un plugin en modo de enlace allí. Declare `"mode": "copy"` en su lugar.

697 

698<h4 id="how-users-accept-the-command">

699 Cómo los usuarios aceptan el comando

700</h4>

701 

702Claude Code ejecuta su comando en la máquina del usuario, por lo que vincula cada ejecución a la aceptación explícita del usuario:

703 

704* Cuando los usuarios instalan el plugin desde su pantalla de detalles en `/plugin`, o lo instalan o actualizan con `claude plugin install` o `claude plugin update` en un terminal interactivo, Claude Code les muestra la cadena de comando exacta primero y registra el comando aceptado para esa instalación. Una `claude plugin update` que puede proceder en la aceptación registrada del mismo comando no muestra nada.

705* En un shell no interactivo, como un script de aprovisionamiento, pase `--yes` a `claude plugin install` o `claude plugin update` para aceptar el comando que imprime. Para aceptar solo el comando que una ejecución anterior de `--json` mostró, pase [`--accept-command`](/docs/es/plugins-reference#plugin-install) con el `sha256` que la ejecución reportó.

706* Cada otra ruta ejecuta solo el comando que el usuario ya aceptó. Esto incluye actualizaciones iniciadas desde `/plugin` y las ejecuciones en segundo plano descritas en [Cuándo Claude Code vuelve a ejecutar el comando](#when-claude-code-re-runs-the-command). Cuando ninguno fue aceptado, Claude Code rechaza ejecutar el comando y le dice al usuario cómo revisarlo. Claude Code nunca instala un plugin de origen de comando como dependencia de otro plugin, por lo que los usuarios lo instalan por sí solos primero.

707* Si cambia el `command` de la entrada, o cambia su `mode`, los usuarios mantienen la versión que ya tienen y Claude Code deja de volver a ejecutar el comando. En sesiones interactivas, la pestaña `/plugin` Errores muestra el nuevo comando hasta que el usuario lo revise y acepte ejecutando `claude plugin update <plugin>@<marketplace>`.

708 

709Los administradores pueden bloquear fuentes de comando en toda una organización con la configuración administrada [`disableCommandPluginSources`](/docs/es/settings-reference#disablecommandpluginsources). Si una organización establece [`allowManagedHooksOnly`](/docs/es/settings-reference#allowmanagedhooksonly), Claude Code bloquea fuentes de comando de forma predeterminada.

710 

711<h4 id="when-claude-code-re-runs-the-command">

712 Cuándo Claude Code vuelve a ejecutar el comando

713</h4>

714 

715El directorio impreso refleja el estado de la herramienta en el momento en que se ejecutó el comando, por lo que Claude Code ejecuta el comando nuevamente en estos momentos:

716 

717* Cada vez que el usuario instala o actualiza el plugin

718* Una vez por sesión para cada plugin de origen de comando habilitado, en segundo plano, poco después de que la sesión comience. Esta ejecución no pasa por la actualización automática del marketplace, por lo que no depende de la [configuración de actualización automática](/docs/es/discover-plugins#configure-auto-updates) del marketplace

719* Al inicio o en `/reload-plugins`, cuando la versión instalada de un plugin habilitado falta en el caché de plugins

720 

721Claude Code omite las dos ejecuciones en segundo plano cuando el usuario establece [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](/docs/es/env-vars). Las instalaciones y actualizaciones explícitas aún ejecutan el comando con esa variable establecida.

722 

723Cuando la salida codificada del comando ha cambiado, Claude Code instala el resultado como una nueva versión y lo recarga en la sesión interactiva en ejecución, cambiando [los mismos componentes que `/reload-plugins` cambia](/docs/es/plugins-reference#environment-variables). El usuario ve una notificación de que el plugin fue recargado. Si recargar en su lugar invalidaría el caché de solicitud de la sesión, Claude Code en su lugar le pide al usuario que ejecute `/reload-plugins`, que [advierte sobre el costo del caché y se aplica cuando se vuelve a ejecutar con `--force`](/docs/es/prompt-caching#enabling-or-disabling-a-plugin).

724 

725<h3 id="advanced-plugin-entries">

726 Entradas de plugins avanzadas

727</h3>

728 

729Este ejemplo muestra una entrada de plugin usando muchos de los campos opcionales, incluidas rutas personalizadas para commands, agents, hooks y MCP servers:

730 

731```json theme={null}

732{

733 "name": "enterprise-tools",

734 "source": {

735 "source": "github",

736 "repo": "company/enterprise-plugin"

737 },

738 "description": "Enterprise workflow automation tools",

739 "version": "2.1.0",

740 "author": {

741 "name": "Enterprise Team",

742 "email": "enterprise@example.com"

743 },

744 "homepage": "https://docs.example.com/plugins/enterprise-tools",

745 "repository": "https://github.com/company/enterprise-plugin",

746 "license": "MIT",

747 "keywords": ["enterprise", "workflow", "automation"],

748 "category": "productivity",

749 "commands": [

750 "./commands/core/",

751 "./commands/enterprise/",

752 "./commands/experimental/preview.md"

753 ],

754 "agents": ["./agents/security-reviewer.md", "./agents/compliance-checker.md"],

755 "hooks": {

756 "PostToolUse": [

757 {

758 "matcher": "Write|Edit",

759 "hooks": [

760 {

761 "type": "command",

762 "command": "${CLAUDE_PLUGIN_ROOT}/scripts/validate.sh"

763 }

764 ]

765 }

766 ]

767 },

768 "mcpServers": {

769 "enterprise-db": {

770 "command": "${CLAUDE_PLUGIN_ROOT}/servers/db-server",

771 "args": ["--config", "${CLAUDE_PLUGIN_ROOT}/config.json"]

772 }

773 },

774 "strict": false

775}

776```

777 

778Cosas clave a notar:

779 

780* **`commands` y `agents`**: puede especificar múltiples directorios o archivos individuales. Las rutas son relativas a la raíz del plugin y deben permanecer dentro de ella.

781 * Claude Code rechaza una ruta que se resuelve fuera del directorio del plugin, como `./../shared.md`, con un error [`path escapes plugin directory`](/docs/es/errors#path-escapes-plugin-directory), y aún carga el plugin sin ese componente

782* **`${CLAUDE_PLUGIN_ROOT}`**: use esta variable en comandos de hooks y configuraciones de MCP server para hacer referencia a archivos dentro del directorio de instalación del plugin.

783 * Consulte la [tabla de sustitución](/docs/es/plugins-reference#environment-variables) para ver qué campos de configuración la sustituyen por tipo de servidor

784 * Para dependencias o estado que deben sobrevivir a las actualizaciones de plugins, use [`${CLAUDE_PLUGIN_DATA}`](/docs/es/plugins-reference#persistent-data-directory) en su lugar

785* **`strict: false`**: dado que esto se establece en false, el plugin no necesita su propio `plugin.json`. La entrada del marketplace define todo. Consulte [Modo estricto](#strict-mode) a continuación.

786 

787Por defecto, las skills de un plugin se cargan desde el directorio `skills/` bajo su `source`. Las rutas listadas en el campo `skills` se agregan a ese escaneo:

788 

789```json theme={null}

790"skills": ["./skills/", "./extra-skills/"]

791```

792 

793Cuando varias entradas de plugin comparten una carpeta `skills/` en la raíz del marketplace (`source: "./"`), liste subdirectorios específicos en su lugar para que cada entrada cargue solo sus propias skills:

794 

795```json theme={null}

796"source": "./",

797"skills": ["./skills/code-review", "./skills/docs"]

798```

799 

800Con una fuente de raíz de marketplace, las rutas listadas son el conjunto completo para esa entrada, y otros directorios en la carpeta `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.

801 

802<h3 id="strict-mode">

803 Modo estricto

804</h3>

805 

806El campo `strict` controla si `plugin.json` es la autoridad para definiciones de componentes (skills, agents, hooks, MCP servers, estilos de salida).

807 

808| Valor | Comportamiento |

809| :---------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

810| `true` (predeterminado) | `plugin.json` es la autoridad. La entrada del marketplace puede complementarla con componentes adicionales, y ambas fuentes se fusionan. |

811| `false` | La entrada del marketplace es la definición completa. Si el plugin también tiene un `plugin.json` que declara componentes, eso es un conflicto y el plugin falla al cargar. |

812 

813**Cuándo usar cada modo:**

814 

815* **`strict: true`**: el plugin tiene su propio `plugin.json` y 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.

816* **`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.

817 

818<h2 id="host-and-distribute-marketplaces">

819 Alojar y distribuir marketplaces

820</h2>

821 

822Cuando los usuarios agregan un marketplace alojado en un repositorio de git, o instalan un plugin basado en git que enumera, Claude Code clona ese repositorio de marketplace o plugin en su máquina. El clon nunca descarga contenido de [Git LFS](https://git-lfs.com), por lo que los archivos rastreados por LFS llegan como archivos de puntero. Mantenga los archivos que sus plugins necesitan fuera de LFS.

823 

824<h3 id="host-on-github-recommended">

825 Alojar en GitHub (recomendado)

826</h3>

827 

828GitHub es la forma recomendada para alojar y distribuir un marketplace:

829 

8301. **Crear un repositorio**: configure un nuevo repositorio para su marketplace

8312. **Agregar archivo de marketplace**: cree `.claude-plugin/marketplace.json` con sus definiciones de plugins

8323. **Compartir con equipos**: los usuarios agregan su marketplace con `/plugin marketplace add owner/repo`

833 

834**Beneficios**: control de versiones integrado, seguimiento de problemas y características de colaboración en equipo.

835 

836<h3 id="host-on-other-git-services">

837 Alojar en otros servicios de git

838</h3>

839 

840Cualquier servicio de alojamiento de git funciona, como GitLab, Bitbucket y servidores autohospedados. Los usuarios agregan con la URL completa del repositorio:

841 

842```shell theme={null}

843/plugin marketplace add https://gitlab.com/company/plugins.git

844```

845 

846<h3 id="private-repositories">

847 Repositorios privados

848</h3>

849 

850Claude Code soporta instalar plugins desde repositorios privados. Si distribuye su marketplace a través de [**Configuración de la organización > Plugins**](https://claude.ai/admin-settings/plugins) en su lugar, sus credenciales de git no están involucradas: la sincronización de la organización lee el repositorio del marketplace a través de la conexión GitHub o GitLab de su organización en claude.ai. Consulte [Distribuir a través de la configuración de la organización](#distribute-through-organization-settings) para saber qué fuentes de plugins pueden ser privadas.

851 

852<h4 id="commands-you-run">

853 Comandos que ejecuta

854</h4>

855 

856Cuando ejecuta `/plugin marketplace add`, `/plugin install`, `/plugin update` o `/plugin marketplace update`, Claude Code usa sus ayudantes de credenciales de git existentes, por lo que el acceso HTTPS a través de `gh 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`](/docs/es/env-vars#variables) para clonarlos sobre HTTPS en su lugar.

857 

858<h4 id="background-auto-updates">

859 Actualizaciones automáticas en segundo plano

860</h4>

861 

862La verificación de actualización en segundo plano comprueba el remoto del marketplace para nuevos commits con sus ayudantes de credenciales de git configurados, igual que los comandos que ejecuta. Para remotos SSH, una clave cargada en `ssh-agent` autentica la verificación. Claude Code ejecuta la verificación de forma no interactiva: desactiva los mensajes de terminal de git y los programas askpass, e indica a los ayudantes de credenciales que no soliciten. Si la verificación puede autenticarse en un repositorio privado sobre HTTPS depende de su ayudante:

863 

864* Un ayudante que puede suministrar una credencial almacenada sin solicitar autentica la verificación. Git Credential Manager, el ayudante de Keychain de macOS y `git-credential-store` funcionan de esta manera una vez que tienen una credencial para el host.

865* Un ayudante que necesita solicitarle no puede responder en segundo plano. La actualización falla silenciosamente y el checkout existente permanece en su lugar, por lo que sus plugins siguen funcionando desde el último estado sincronizado. Ejecute `/plugin marketplace update <name>` para actualizar el marketplace con sus credenciales.

866 

867Cuando la verificación encuentra el checkout actualizado, Claude Code lo deja como está. Cuando la verificación encuentra nuevos commits, o falla porque no puede alcanzar o autenticarse en el remoto, Claude Code clona el marketplace nuevamente e intercambia el nuevo clon. Si ese clon falla, el checkout existente permanece en su lugar. El re-clonado puede [agotar el tiempo de espera en repositorios grandes](#git-operations-time-out).

868 

869Dos configuraciones hacen que los marketplaces privados se comporten de manera predecible:

870 

871* Establezca `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE=1` para mantener el checkout existente sin intentar el re-clonado cuando la verificación en segundo plano no puede alcanzar o autenticarse en el remoto. Sus plugins siguen funcionando desde el último estado sincronizado, y las actualizaciones manuales con `/plugin marketplace update` aún se autentican con sus credenciales.

872* Configure un ayudante de credenciales de git, por ejemplo con `gh auth setup-git` para GitHub, para que la verificación en segundo plano y el re-clonado puedan autenticarse sin solicitar.

873 

874Establecer un token de proveedor como `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`.

875 

876<Note>

877 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.

878</Note>

879 

880<h3 id="distribute-through-organization-settings">

881 Distribuir a través de la configuración de la organización

882</h3>

883 

884Si distribuye plugins a través de [**Configuración de la organización > Plugins**](https://claude.ai/admin-settings/plugins) en un plan de Equipo o Empresa, se aplican estas reglas de fuente:

885 

886* En github.com y gitlab.com, el repositorio del marketplace debe ser privado o interno. La sincronización de la organización lo lee a través de la conexión que coincide con su host:

887 * **github.com**: la Aplicación GitHub de Claude

888 * **Su host de GitHub Enterprise Server**: su [Aplicación GitHub Enterprise](/docs/es/github-enterprise-server#admin-setup) de la organización

889 * **gitlab.com o su instancia de GitLab autogestionada**: el token de acceso en su [configuración de GitLab](#sync-a-gitlab-hosted-marketplace) de la organización para ese host

890* Cada fuente de plugin debe ser de tipo `github`, `url` o `git-subdir`, o una [ruta relativa](#relative-paths) que comience con `./`. Si enumera un plugin por nombre simple bajo `metadata.pluginRoot`, la sincronización de la organización lo rechaza como una fuente no soportada, así que escriba la ruta, como `./plugins/deploy-tools`.

891* Una fuente de plugin puede ser privada en tres casos:

892 * Una fuente github.com que comparta el propietario del repositorio del marketplace

893 * Una fuente en el host GitHub Enterprise de su organización con la Aplicación GHE instalada en el repositorio

894 * Una fuente `url` o `git-subdir` en el mismo host de GitLab que el repositorio del marketplace. En gitlab.com, la fuente también debe estar bajo el mismo grupo de nivel superior o espacio de nombres de usuario que el repositorio del marketplace.

895* Cualquier otra fuente de plugin debe ser un repositorio público en github.com, gitlab.com o bitbucket.org, que la sincronización de la organización obtiene sin credenciales. La sincronización de la organización rechaza fuentes de plugins en hosts que estas reglas no cubren.

896 

897Consulte [Administrar plugins para su organización](https://support.claude.com/en/articles/13837433) para el flujo de trabajo del administrador.

898 

899Para incluir plugins privados, coloque las carpetas de plugins dentro del repositorio del marketplace y haga referencia a ellas con una [ruta relativa](#relative-paths). La sincronización de la organización empaqueta cada plugin durante la distribución, por lo que los usuarios nunca necesitan acceso a un repositorio de fuente separado.

900 

901Por ejemplo, esta entrada de plugin `marketplace.json` hace referencia a un plugin que confirmó en `plugins/deploy-tools` en el repositorio del marketplace:

902 

903```json theme={null}

904{

905 "name": "deploy-tools",

906 "source": "./plugins/deploy-tools"

907}

908```

909 

910<h4 id="sync-a-gitlab-hosted-marketplace">

911 Sincronizar un marketplace alojado en GitLab

912</h4>

913 

914Para sincronizar un marketplace desde gitlab.com o una instancia de GitLab autogestionada, un [Propietario](/docs/es/server-managed-settings#access-control) primero agrega una configuración de GitLab para ese host en [**Configuración de la organización > Claude Code**](https://claude.ai/admin-settings/claude-code). Las configuraciones de GitLab están en beta pública y se aplican solo a la sincronización del marketplace de plugins. Agregar una no hace que los repositorios de GitLab estén disponibles en [Claude Code en la web](/docs/es/claude-code-on-the-web#limitations). Consulte [Administrar plugins para su organización](https://support.claude.com/en/articles/13837433) para los pasos de configuración.

915 

916Cuando agrega el marketplace, ingrese la URL HTTPS del proyecto, como `https://gitlab.example.com/platform/claude-plugins`. Los proyectos en subgrupos anidados funcionan. La sincronización de la organización lee la rama predeterminada del proyecto. Si activa **Sincronizar automáticamente**, solo los envíos a la rama predeterminada inician una sincronización.

917 

918<h4 id="keep-executables-out-of-the-top-level-bin-directory">

919 Mantener ejecutables fuera del directorio bin de nivel superior

920</h4>

921 

922No incluya un directorio `bin/` de nivel superior en ningún plugin que distribuya a través de la configuración de la organización. claude.ai rechaza un plugin que tenga uno, ya sea que el plugin llegue por sincronización del marketplace o por carga directa:

923 

924* **Sincronización del marketplace**: la sincronización de la organización rechaza ese plugin y sincroniza el resto del marketplace. El mensaje de error comienza con `Plugin contains a top-level bin/ directory`.

925* **Carga directa**: si carga el plugin en [**Configuración de la organización > Plugins**](https://claude.ai/admin-settings/plugins) en su lugar, claude.ai rechaza la carga con el mismo mensaje.

926 

927Mantenga los ejecutables en otro directorio, como `scripts/`, y haga referencia a ellos como `${CLAUDE_PLUGIN_ROOT}/scripts/<name>` desde su [configuración de skills, hooks o servidor MCP](/docs/es/plugins-reference#environment-variables).

928 

929<h3 id="require-marketplaces-for-your-team">

930 Requerir marketplaces para su equipo

931</h3>

932 

933Puede configurar su repositorio para que Claude Code agregue su marketplace para los miembros del equipo una vez que [confíen en la carpeta del proyecto](/docs/es/permissions#what-runs-before-you-trust-a-folder), sin solicitud separada. Agregue su marketplace a `.claude/settings.json`:

934 

935```json theme={null}

936{

937 "extraKnownMarketplaces": {

938 "company-tools": {

939 "source": {

940 "source": "github",

941 "repo": "your-org/claude-plugins"

942 }

943 }

944 }

945}

946```

947 

948También puede especificar qué plugins deben estar habilitados de forma predeterminada:

949 

950```json theme={null}

951{

952 "enabledPlugins": {

953 "code-formatter@company-tools": true,

954 "deployment-tools@company-tools": true

955 }

956}

957```

958 

959Para opciones de configuración completas, consulte [Configuración de plugins](/docs/es/settings-reference#plugin-settings).

960 

961<Note>

962 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.

963</Note>

964 

965<h3 id="pre-populate-plugins-for-containers">

966 Precargar plugins para contenedores

967</h3>

968 

969Para 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 entorno `CLAUDE_CODE_PLUGIN_SEED_DIR` para apuntar a este directorio.

970 

971Para 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.

972 

973El directorio seed refleja la estructura de `~/.claude/plugins`:

974 

975```

976$CLAUDE_CODE_PLUGIN_SEED_DIR/

977 known_marketplaces.json

978 marketplaces/<name>/...

979 cache/<marketplace>/<plugin>/<version>/...

980```

981 

982Para construir un directorio seed, ejecute Claude Code una vez durante la compilación de la imagen, instale los plugins que necesita, luego copie el directorio `~/.claude/plugins` resultante en su imagen y apunte `CLAUDE_CODE_PLUGIN_SEED_DIR` a él.

983 

984Para 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í:

985 

986```bash theme={null}

987CLAUDE_CODE_PLUGIN_CACHE_DIR=/opt/claude-seed claude plugin marketplace add your-org/plugins

988CLAUDE_CODE_PLUGIN_CACHE_DIR=/opt/claude-seed claude plugin install my-tool@your-plugins

989```

990 

991Luego establezca `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.

992 

993Al 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`.

994 

995Detalles de comportamiento:

996 

997* **Solo lectura**: Claude Code nunca escribe en el directorio seed.

998* **Actualizaciones automáticas deshabilitadas**: los marketplaces seed no se actualizan automáticamente.

999* **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 disable` en lugar de eliminar el marketplace.

1000* **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.

1001* **Se bloquea la mutación**: ejecutar `/plugin marketplace remove` o `/plugin marketplace update` contra un marketplace administrado por seed falla con orientación para pedir a su administrador que actualice la imagen seed.

1002* **Se compone con configuración**: si `extraKnownMarketplaces` o `enabledPlugins` declaran un marketplace que ya existe en el seed, Claude Code usa la copia del seed en lugar de clonar.

1003 

1004<h3 id="managed-marketplace-restrictions">

1005 Restricciones de marketplace administrado

1006</h3>

1007 

1008Para 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ón [`strictKnownMarketplaces`](/docs/es/settings-reference#strictknownmarketplaces) 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`](/docs/es/settings-reference#disablesideloadflags). Para permitir qué plugins de marketplaces pueden aparecer como sugerencias de instalación contextual, establezca [`pluginSuggestionMarketplaces`](/docs/es/settings-reference#pluginsuggestionmarketplaces).

1009 

1010`strictKnownMarketplaces` coincide con el marketplace del que proviene un plugin, no con las entradas dentro de él, por lo que los usuarios aún pueden instalar un plugin con una [fuente `command`](#command-sources) desde un marketplace permitido. Para bloquear también las fuentes de comando, establezca [`disableCommandPluginSources`](/docs/es/settings-reference#disablecommandpluginsources).

1011 

1012Cuando `strictKnownMarketplaces` se configura en configuración administrada, el comportamiento de restricción depende del valor:

1013 

1014| Valor | Comportamiento |

1015| --------------------------- | --------------------------------------------------------------------------------------------------------- |

1016| Indefinido (predeterminado) | Sin restricciones. Los usuarios pueden agregar cualquier marketplace |

1017| Array vacío `[]` | Bloqueo completo. Bloquea cada fuente de marketplace, incluido el marketplace oficial de Anthropic |

1018| Lista de fuentes | Lista de permitidos aplicada. Los usuarios solo pueden agregar marketplaces que coincidan con una entrada |

1019 

1020<h4 id="common-configurations">

1021 Configuraciones comunes

1022</h4>

1023 

1024Deshabilitar todas las adiciones de marketplace, incluido el marketplace oficial de Anthropic:

1025 

1026```json theme={null}

1027{

1028 "strictKnownMarketplaces": []

1029}

1030```

1031 

1032Claude Code descarga los plugins [sincronizados desde claude.ai](/docs/es/plugins-reference#synced-plugins) desde su cuenta en lugar de desde un marketplace, por lo que este bloqueo no los cubre. Para detener también esos, establezca [`syncClaudeAiPlugins`](/docs/es/settings-reference#syncclaudeaiplugins) en `false` en configuración administrada, o desactive Skills para su organización en claude.ai.

1033 

1034Permitir solo el marketplace oficial de Anthropic. La coincidencia para una entrada de repositorio único es exacta, por lo que esta entrada no cubre variantes `ref` o `path` del mismo repositorio:

1035 

1036```json theme={null}

1037{

1038 "strictKnownMarketplaces": [

1039 {

1040 "source": "github",

1041 "repo": "anthropics/claude-plugins-official"

1042 }

1043 ]

1044}

1045```

1046 

1047Con esta entrada, Claude Code mantiene un marketplace oficial ya registrado disponible y, en una máquina nueva, registra el marketplace automáticamente la primera vez que inicia Claude Code interactivamente.

1048 

1049El registro automático no cubre todas las máquinas. Más comúnmente falta:

1050 

1051* Entornos no interactivos que se ejecutan antes del primer lanzamiento interactivo de la máquina.

1052* Máquinas donde Claude Code ya se ejecutó interactivamente bajo una política que bloqueó el marketplace, como el bloqueo de array vacío. Claude Code registra el intento bloqueado y no reintenta después de que cambia la política.

1053 

1054En estas máquinas, agregue el marketplace a [`extraKnownMarketplaces`](/docs/es/settings-reference#extraknownmarketplaces) en el mismo `managed-settings.json` para que Claude Code lo registre automáticamente, o ejecute `claude plugin marketplace add anthropics/claude-plugins-official`.

1055 

1056Permitir solo marketplaces específicos:

1057 

1058```json theme={null}

1059{

1060 "strictKnownMarketplaces": [

1061 {

1062 "source": "github",

1063 "repo": "acme-corp/approved-plugins"

1064 },

1065 {

1066 "source": "github",

1067 "repo": "acme-corp/security-tools",

1068 "ref": "v2.0"

1069 },

1070 {

1071 "source": "url",

1072 "url": "https://plugins.example.com/marketplace.json"

1073 }

1074 ]

1075}

1076```

1077 

1078Permitir cada repositorio de marketplace bajo una organización de GitHub con una entrada [owner-wildcard](/docs/es/settings-reference#owner-wildcards). Los owner wildcards requieren Claude Code v2.1.223 o posterior.

1079 

1080```json theme={null}

1081{

1082 "strictKnownMarketplaces": [

1083 {

1084 "source": "github",

1085 "repo": "acme-corp/*"

1086 }

1087 ]

1088}

1089```

1090 

1091Permitir todos los marketplaces desde un servidor git interno usando coincidencia de patrón regex en el host. Este es el enfoque recomendado para [GitHub Enterprise Server](/docs/es/github-enterprise-server#plugin-marketplaces-on-ghes) o instancias de GitLab autohospedadas:

1092 

1093```json theme={null}

1094{

1095 "strictKnownMarketplaces": [

1096 {

1097 "source": "hostPattern",

1098 "hostPattern": "^github\\.example\\.com$"

1099 }

1100 ]

1101}

1102```

1103 

1104Permitir marketplaces basados en sistema de archivos desde un directorio específico usando coincidencia de patrón regex en la ruta:

1105 

1106```json theme={null}

1107{

1108 "strictKnownMarketplaces": [

1109 {

1110 "source": "pathPattern",

1111 "pathPattern": "^/opt/approved/"

1112 }

1113 ]

1114}

1115```

1116 

1117Use `".*"` como `pathPattern` para permitir cualquier ruta del sistema de archivos mientras aún controla fuentes de red con `hostPattern`.

1118 

1119<Note>

1120 `strictKnownMarketplaces` restringe lo que los usuarios pueden agregar, pero no registra marketplaces por sí solo. Para registrar un marketplace permitido para los usuarios automáticamente, agréguelo a [`extraKnownMarketplaces`](/docs/es/settings-reference#extraknownmarketplaces) en el mismo `managed-settings.json`.

1121 

1122 El marketplace oficial de Anthropic es el único que Claude Code registra por sí solo, y solo cuando la lista de permitidos lo permite. El registro automático también falta en algunas máquinas, como entornos no interactivos y máquinas donde una política anterior lo bloqueó. Para cubrir esas máquinas, agregue también el marketplace oficial a `extraKnownMarketplaces`. Para los dos ajustes lado a lado, consulte la [referencia de `strictKnownMarketplaces`](/docs/es/settings-reference#strictknownmarketplaces).

1123</Note>

1124 

1125<h4 id="how-restrictions-work">

1126 Cómo funcionan las restricciones

1127</h4>

1128 

1129Las 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 a `blockedMarketplaces`.

1130 

1131Dónde se aplican las dos listas depende de dónde las establezca:

1132 

1133* **La consola de administración de claude.ai**: Claude Code aplica ambas listas en las sesiones que [leen configuración administrada gestionada por servidor](/docs/es/managed-settings#where-and-when-a-policy-applies). claude.ai también las verifica cuando alguien en su organización agrega un nuevo marketplace desde un repositorio de git en claude.ai, o desde **Personalizar** en la aplicación Claude Desktop fuera de su pestaña Code. Eso cubre un marketplace que un miembro agrega para su propia cuenta y uno agregado para toda la organización bajo [**Configuración de la organización > Plugins**](https://claude.ai/admin-settings/plugins). claude.ai rechaza un repositorio que la lista de permitidos no admite o que la lista de bloqueo nombra. No vuelve a verificar un marketplace que se agregó en cualquiera de los lugares antes de que establezca las listas, y no verifica plugins cargados.

1134* **Un archivo de configuración administrada, política de nivel de SO u otra fuente administrada**: Claude Code aplica ambas listas donde lee esa fuente. claude.ai no la lee.

1135 

1136Para bloquear cada repositorio de marketplace bajo un propietario de GitHub, use la forma owner-wildcard en una entrada `blockedMarketplaces`: `{ "source": "github", "repo": "untrusted-org/*" }`. Requiere Claude Code v2.1.223 o posterior. Para las reglas de coincidencia, que difieren entre la lista de bloqueo y la lista de permitidos, consulte [Owner wildcards](/docs/es/settings-reference#owner-wildcards).

1137 

1138Cuando un usuario agrega una URL de repositorio `https://` que Claude Code [clona en lugar de obtener](/docs/es/discover-plugins#add-from-other-git-hosts), como una URL de repositorio `github.com` o `gitlab.com` simple, Claude Code también la verifica contra las entradas `url` en `blockedMarketplaces`. Claude Code bloquea la adición si una entrada nombra la misma URL. En esa comparación, Claude Code ignora el sufijo `.git` y cualquier ref que el usuario agregue después de `#`. Requiere Claude Code v2.1.232 o posterior. Antes de v2.1.232, Claude Code coincidía una entrada `url` solo contra una URL que obtenía como un archivo `marketplace.json` alojado.

1139 

1140La lista de permitidos usa coincidencia exacta para la mayoría de tipos de fuente, aparte de entradas `github` con owner-wildcard. Para que un marketplace sea permitido, todos los campos especificados deben coincidir:

1141 

1142* Para fuentes de GitHub: `repo` es requerido, ya sea nombrando un repositorio o usando la forma owner-wildcard `owner/*` para cubrir cada repositorio bajo ese propietario. Para cómo las entradas wildcard coinciden, incluido el caso de reglas, consulte [Owner wildcards](/docs/es/settings-reference#owner-wildcards). Para entradas de repositorio único, `ref` debe coincidir exactamente o estar ausente tanto de la fuente del marketplace como de la entrada de la lista de permitidos, y la misma regla se aplica a `path`

1143* Para fuentes de URL: la URL completa debe coincidir exactamente

1144* Para fuentes `hostPattern`: el host del marketplace se compara contra el patrón regex

1145* Para fuentes `pathPattern`: la ruta del sistema de archivos del marketplace se compara contra el patrón regex

1146 

1147La coincidencia exacta de la lista de permitidos trata URLs que difieren solo por una barra diagonal final, un sufijo `.git` o el esquema `ssh://` versus `https://` 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 `https://`, `ssh://` y `user@host:path` coincidan.

1148 

1149Un [marketplace alojado en claude.ai](/docs/es/discover-plugins#add-from-claude-ai) se compara por host: una entrada `hostPattern` que coincida con `claude.ai` lo rige, en `strictKnownMarketplaces` y en `blockedMarketplaces`. En la lista de permitidos, tal entrada no admite las cargas personales de claude.ai de un miembro. Requiere Claude Code v2.1.273 o posterior.

1150 

1151Debido a que `strictKnownMarketplaces` se establece en [configuración administrada](/docs/es/managed-settings), los usuarios individuales y las configuraciones del proyecto no pueden anular estas restricciones.

1152 

1153Para detalles de configuración completos incluyendo todos los tipos de fuente soportados y comparación con `extraKnownMarketplaces`, consulte la [referencia de strictKnownMarketplaces](/docs/es/settings-reference#strictknownmarketplaces).

1154 

1155<h3 id="version-resolution-and-release-channels">

1156 Resolución de versiones y canales de lanzamiento

1157</h3>

1158 

1159Las 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. Para fuentes basadas en git, si omite `version`, Claude Code usa el SHA del commit resuelto de la fuente, por lo que los usuarios obtienen una actualización cada vez que ese commit cambia; esta es la configuración más simple para plugins internos o en desarrollo activo. Consulte [Gestión de versiones](/docs/es/plugins-reference#version-management) para el orden de resolución completo, incluidas fuentes `archive`.

1160 

1161<Warning>

1162 Establecer `version` fija el plugin para cada tipo de fuente excepto [`command`](#command-sources), cuya versión siempre incluye un hash de lo que el comando produjo. Un plugin [cargado en su lugar](/docs/es/plugins-reference#plugin-caching-and-file-resolution) desde un marketplace agregado como directorio local tampoco está fijado. Si declara `"version": "1.0.0"` en `plugin.json` e inserta nuevos commits sin cambiar esa cadena, los usuarios existentes de esas fuentes mantienen la copia en caché, porque Claude Code ve la misma versión. Aumente el campo en cada lanzamiento, u omítalo para recurrir a la versión resuelta.

1163 

1164 Evite establecer `version` en ambos `plugin.json` y la entrada del marketplace. El valor de `plugin.json` siempre gana silenciosamente, por lo que una versión de manifiesto obsoleta puede enmascarar una versión que estableció en `marketplace.json`.

1165</Warning>

1166 

1167<h4 id="set-up-release-channels">

1168 Configurar canales de lanzamiento

1169</h4>

1170 

1171Para 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 cada grupo de usuarios su propio marketplace a través de configuración administrada de una de dos maneras:

1172 

1173* Implemente [configuración administrada gestionada por endpoint](/docs/es/managed-settings#delivery-mechanisms) separada, como un archivo de configuración administrada o un perfil MDM, en los dispositivos de cada grupo. [Cómo Claude Code combina fuentes administradas](/docs/es/managed-settings#precedence-within-the-managed-tier) dice si el archivo o perfil por grupo se aplica en un dispositivo que también tiene una fuente de toda la organización.

1174* Defina una [política de puerta de enlace de aplicaciones Claude](/docs/es/claude-apps-gateway-config#managed) por grupo. La puerta de enlace aplica la primera política cuya regla de coincidencia se ajusta a un usuario, por lo que ordene las políticas para que cada usuario llegue a la política de su grupo. La `extraKnownMarketplaces` de una política de grupo reemplaza el mapa de política de captura general en lugar de fusionarse con él, por lo que enumere cada marketplace que el grupo necesita en la política del grupo, no solo su marketplace de canal.

1175 

1176La configuración administrada gestionada por servidor [se aplica a cada usuario en su organización](/docs/es/server-managed-settings#current-limitations), por lo que no pueden llevar una asignación por grupo.

1177 

1178<Warning>

1179 Cada canal debe resolver a una versión diferente. Si usa versiones explícitas, `plugin.json` debe declarar una `version` diferente en cada ref fijado. Si omite `version`, los SHAs de commit distintos ya distinguen los canales. Si dos refs resuelven a la misma cadena de versión, Claude Code los trata como idénticos y omite la actualización.

1180</Warning>

1181 

1182<h5 id="example">

1183 Ejemplo

1184</h5>

1185 

1186```json theme={null}

1187{

1188 "name": "stable-tools",

1189 "plugins": [

1190 {

1191 "name": "code-formatter",

1192 "source": {

1193 "source": "github",

1194 "repo": "acme-corp/code-formatter",

1195 "ref": "stable"

1196 }

1197 }

1198 ]

1199}

1200```

1201 

1202```json theme={null}

1203{

1204 "name": "latest-tools",

1205 "plugins": [

1206 {

1207 "name": "code-formatter",

1208 "source": {

1209 "source": "github",

1210 "repo": "acme-corp/code-formatter",

1211 "ref": "latest"

1212 }

1213 }

1214 ]

1215}

1216```

1217 

1218<h5 id="assign-channels-to-user-groups">

1219 Asignar canales a grupos de usuarios

1220</h5>

1221 

1222Asigne cada marketplace a su grupo de usuarios a través de la configuración administrada gestionada por endpoint o política de puerta de enlace descrita bajo [Configurar canales de lanzamiento](#set-up-release-channels). Por ejemplo, el grupo estable recibe:

1223 

1224```json theme={null}

1225{

1226 "extraKnownMarketplaces": {

1227 "stable-tools": {

1228 "source": {

1229 "source": "github",

1230 "repo": "acme-corp/stable-tools"

1231 }

1232 }

1233 }

1234}

1235```

1236 

1237El grupo de acceso temprano recibe `latest-tools` en su lugar:

1238 

1239```json theme={null}

1240{

1241 "extraKnownMarketplaces": {

1242 "latest-tools": {

1243 "source": {

1244 "source": "github",

1245 "repo": "acme-corp/latest-tools"

1246 }

1247 }

1248 }

1249}

1250```

1251 

1252<h4 id="pin-dependency-versions">

1253 Fijar versiones de dependencias

1254</h4>

1255 

1256Un 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](/docs/es/plugin-dependencies) 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.

1257 

1258<h3 id="rename-or-remove-a-plugin">

1259 Renombrar o eliminar un plugin

1260</h3>

1261 

1262El `name` 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`](#optional-plugin-fields) y mantenga `name` sin cambios.

1263 

1264Si 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:

1265 

1266```json theme={null}

1267{

1268 "name": "acme-tools",

1269 "owner": { "name": "Acme" },

1270 "plugins": [

1271 { "name": "code-formatter", "source": "./plugins/code-formatter" }

1272 ],

1273 "renames": {

1274 "formatter": "code-formatter",

1275 "legacy-linter": null

1276 }

1277}

1278```

1279 

1280Cuando un usuario inicia Claude Code con el nombre anterior aún en su configuración, Claude Code sigue el mapa `renames`:

1281 

1282* 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 para `enabledPlugins` y `pluginConfigs`, por lo que el aviso aparece una vez.

1283* Para una entrada `null`, Claude Code elimina la clave anterior y el aviso reporta que el plugin fue eliminado del marketplace.

1284* Si el plugin renombrado usa una fuente remota como `github` o `npm`, Claude Code reporta `plugin-cache-miss` después del renombramiento y el usuario debe ejecutar `/plugin install` una vez para obtenerlo bajo el nuevo nombre.

1285 

1286Trate `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`.

1287 

1288Ejecute `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`.

1289 

1290<Note>

1291 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`.

1292</Note>

1293 

1294Las versiones anteriores de Claude Code ignoran el campo `renames` y reportan `plugin-not-found` para el nombre anterior.

1295 

1296<h2 id="validation-and-testing">

1297 Validación y pruebas

1298</h2>

1299 

1300Pruebe su marketplace antes de compartirlo. La validación verifica la estructura de archivos; para probar si un plugin cambia lo que Claude hace en indicaciones realistas, ejecute su suite de evaluación con [`claude plugin eval`](/docs/es/plugin-evals) antes de publicar una nueva versión.

1301 

1302Desde su directorio de marketplace, valide la sintaxis JSON:

1303 

1304```bash theme={null}

1305claude plugin validate .

1306```

1307 

1308O desde dentro de Claude Code:

1309 

1310```shell theme={null}

1311/plugin validate .

1312```

1313 

1314Agregue el marketplace para pruebas:

1315 

1316```shell theme={null}

1317/plugin marketplace add ./path/to/marketplace

1318```

1319 

1320Instale un plugin de prueba para verificar que todo funciona:

1321 

1322```shell theme={null}

1323/plugin install test-plugin@marketplace-name

1324```

1325 

1326Para flujos de trabajo completos de prueba de plugins, consulte [Pruebe sus plugins localmente](/docs/es/plugins#test-your-plugins-locally). Para solución de problemas técnicos, consulte [Referencia de plugins](/docs/es/plugins-reference).

1327 

1328<h2 id="manage-marketplaces-from-the-cli">

1329 Administrar marketplaces desde la CLI

1330</h2>

1331 

1332Claude Code proporciona subcomandos no interactivos `claude plugin marketplace` para scripting y automatización. Estos son equivalentes a los comandos `/plugin marketplace` disponibles dentro de una sesión interactiva.

1333 

1334<h3 id="plugin-marketplace-add">

1335 Plugin marketplace add

1336</h3>

1337 

1338Agregue un marketplace desde un repositorio de GitHub, URL de git, URL remota o ruta local.

1339 

1340```bash theme={null}

1341claude plugin marketplace add <source> [options]

1342```

1343 

1344**Argumentos:**

1345 

1346* `<source>`: Abreviatura de GitHub `owner/repo`, URL de git, URL remota a un archivo `marketplace.json` o ruta de directorio local. Para fijar a una rama o etiqueta, agregue `@ref` a la abreviatura de GitHub o `#ref` a una URL de git

1347 

1348Una URL debe incluir su esquema. A partir de Claude Code v2.1.196, un host escrito sin uno, como `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.

1349 

1350**Opciones:**

1351 

1352| Opción | Descripción | Predeterminado |

1353| :-------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------- |

1354| `--scope <scope>` | Dónde declarar el marketplace: `user`, `project` o `local`. Consulte [Plugin installation scopes](/docs/es/plugins-reference#plugin-installation-scopes) | `user` |

1355| `--sparse <paths...>` | Limitar el checkout a directorios específicos a través de git sparse-checkout. Útil para monorepos | |

1356| `--claudeai` | Lea el argumento como el nombre de un [marketplace alojado en claude.ai](/docs/es/discover-plugins#add-from-claude-ai) en lugar de una fuente. Requiere Claude Code v2.1.273 o posterior | |

1357 

1358Agregue un marketplace desde GitHub usando la abreviatura `owner/repo`:

1359 

1360```bash theme={null}

1361claude plugin marketplace add acme-corp/claude-plugins

1362```

1363 

1364Fije a una rama o etiqueta específica con `@ref`:

1365 

1366```bash theme={null}

1367claude plugin marketplace add acme-corp/claude-plugins@v2.0

1368```

1369 

1370Agregue desde una URL de git en un host que no sea GitHub:

1371 

1372```bash theme={null}

1373claude plugin marketplace add https://gitlab.example.com/team/plugins.git

1374```

1375 

1376Agregue desde una URL remota que sirva el archivo `marketplace.json` directamente:

1377 

1378```bash theme={null}

1379claude plugin marketplace add https://example.com/marketplace.json

1380```

1381 

1382Agregue desde un directorio local para pruebas:

1383 

1384```bash theme={null}

1385claude plugin marketplace add ./my-marketplace

1386```

1387 

1388Declare el marketplace en alcance de proyecto para que se comparta con su equipo a través de `.claude/settings.json`:

1389 

1390```bash theme={null}

1391claude plugin marketplace add acme-corp/claude-plugins --scope project

1392```

1393 

1394Para un monorepo, limite el checkout a los directorios que contienen contenido de plugins:

1395 

1396```bash theme={null}

1397claude plugin marketplace add acme-corp/monorepo --sparse .claude-plugin plugins

1398```

1399 

1400Agregue un [marketplace alojado en claude.ai](/docs/es/discover-plugins#add-from-claude-ai) por el nombre impreso en la sección `From claude.ai:` de `claude plugin marketplace list`:

1401 

1402```bash theme={null}

1403claude plugin marketplace add --claudeai claudeai-organization-library

1404```

1405 

1406Con `--claudeai`, el comando rechaza `--scope` y `--sparse`. El marketplace se aloja para su cuenta, no se declara en un archivo de configuración, por lo que no puede compartirlo a través del `.claude/settings.json` de un proyecto.

1407 

1408<h3 id="plugin-marketplace-list">

1409 Plugin marketplace list

1410</h3>

1411 

1412Enumere todos los marketplaces configurados.

1413 

1414```bash theme={null}

1415claude plugin marketplace list [options]

1416```

1417 

1418**Opciones:**

1419 

1420| Opción | Descripción |

1421| :------- | :--------------- |

1422| `--json` | Salida como JSON |

1423 

1424Con `--json`, cada entrada incluye `name`, `source`, un campo `installLocation` con la ruta de caché local donde se almacena el marketplace, 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.

1425 

1426Un marketplace de [claude.ai](/docs/es/discover-plugins#add-from-claude-ai) agregado no tiene un clon local, por lo que su entrada lleva sus identificadores de claude.ai, `marketplaceId` y `organizationUuid`, en lugar de `installLocation`.

1427 

1428En sesiones de terminal donde [los plugins se sincronizan desde su cuenta de claude.ai](/docs/es/plugins-reference#synced-plugins), el listado de texto termina con una sección `From claude.ai:` que nombra lo que claude.ai lista para su cuenta más allá de los marketplaces que ha agregado. Para agregar uno de ellos, consulte [Agregar desde claude.ai](/docs/es/discover-plugins#add-from-claude-ai). La salida `--json` cubre solo los marketplaces configurados y deja esa sección fuera. Requiere Claude Code v2.1.273 o posterior.

1429 

1430<h3 id="plugin-marketplace-remove">

1431 Plugin marketplace remove

1432</h3>

1433 

1434Elimine un marketplace configurado. El alias `rm` también se acepta.

1435 

1436```bash theme={null}

1437claude plugin marketplace remove <name> [options]

1438```

1439 

1440**Argumentos:**

1441 

1442* `<name>`: nombre del marketplace a eliminar, como se muestra en `claude plugin marketplace list`. Este es el `name` de `marketplace.json`, no la fuente que pasó a `add`

1443 

1444**Opciones:**

1445 

1446| Opción | Descripción | Predeterminado |

1447| :---------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------- |

1448| `--scope <scope>` | Restringir la eliminación a un único alcance de configuración: `user`, `project` o `local`. Consulte [Plugin installation scopes](/docs/es/plugins-reference#plugin-installation-scopes). Cuando se omite, la declaración se elimina de cada alcance editable. Cuando se proporciona, solo se elimina la declaración de ese alcance; el estado compartido, la caché y los datos de plugins instalados se conservan cuando el marketplace aún se declara en otro alcance | (todos los alcances) |

1449 

1450<Warning>

1451 Eliminar un marketplace de su último alcance restante también desinstala cualquier plugin que haya instalado desde él. Para actualizar un marketplace sin perder plugins instalados, use `claude plugin marketplace update` en su lugar.

1452</Warning>

1453 

1454<h3 id="plugin-marketplace-update">

1455 Plugin marketplace update

1456</h3>

1457 

1458Actualice marketplaces desde sus fuentes para recuperar nuevos plugins y cambios de versión. Un marketplace agregado con una rama o etiqueta `ref` se actualiza a la confirmación más reciente de esa ref, no a la rama predeterminada del repositorio.

1459 

1460```bash theme={null}

1461claude plugin marketplace update [name]

1462```

1463 

1464**Argumentos:**

1465 

1466* `[name]`: nombre del marketplace a actualizar, como se muestra en `claude plugin marketplace list`. Actualiza todos los marketplaces si se omite

1467 

1468Tanto `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](#pre-populate-plugins-for-containers).

1469 

1470<h2 id="troubleshooting">

1471 Solución de problemas

1472</h2>

1473 

1474<h3 id="marketplace-not-loading">

1475 Marketplace no se carga

1476</h3>

1477 

1478**Síntomas**: No puede agregar marketplace o ver plugins de él

1479 

1480**Soluciones**:

1481 

1482* Verifique que la URL del marketplace sea accesible

1483* Compruebe que `.claude-plugin/marketplace.json` existe en la ruta especificada

1484* Asegúrese de que la sintaxis JSON sea válida usando `claude plugin validate .` o `/plugin validate .` desde el directorio del marketplace. Para verificar el frontmatter de skill, agente y comando, consulte [Validate a plugin or a directory without a manifest](#validate-a-plugin-or-a-directory-without-a-manifest)

1485* Para repositorios privados, confirme que tiene permisos de acceso

1486 

1487<h3 id="marketplace-validation-errors">

1488 Errores de validación de marketplace

1489</h3>

1490 

1491Ejecute `claude 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 →`.

1492 

1493A partir de Claude Code v2.1.196, el pase por entrada también:

1494 

1495* incluye plugins cuya `source` es `.`

1496* se ejecuta cuando `marketplace.json` está fuera de un directorio `.claude-plugin`, resolviendo fuentes contra el directorio del archivo en sí

1497* reporta los problemas de cada entrada incluso cuando otra parte del archivo tiene errores de esquema

1498 

1499Las versiones anteriores omiten plugins en la raíz del marketplace y solo descienden desde un `.claude-plugin/marketplace.json`.

1500 

1501Desde un directorio de marketplace, Claude Code no abre los archivos de skill, agente, comando o hook de los plugins. Para encontrar errores en esos archivos, consulte [Validate a plugin or a directory without a manifest](#validate-a-plugin-or-a-directory-without-a-manifest). La tabla a continuación enumera los errores más comunes desde un directorio de marketplace, con la causa y solución para cada uno:

1502 

1503| Error | Causa | Solución |

1504| :------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1505| `No manifest found in directory. Expected .claude-plugin/marketplace.json or .claude-plugin/plugin.json` | El directorio que nombró no tiene `.claude-plugin/marketplace.json` o `plugin.json`, y no tiene archivos de skill, agente o comando para verificar | Ejecute desde la raíz del marketplace, o cree `.claude-plugin/marketplace.json` con los campos requeridos |

1506| `Invalid JSON syntax: Unexpected token...` | Error de sintaxis JSON en marketplace.json | Verifique comas faltantes, comas extra o cadenas sin comillas |

1507| `Duplicate plugin name "x" found in marketplace` | Dos plugins comparten el mismo nombre | Dé a cada plugin un valor `name` único |

1508| `plugins[0].source: Path contains ".."` | Un segmento de la ruta de fuente es `..` | Use rutas relativas a la raíz del marketplace sin segmentos `..`. Consulte [Rutas relativas](#relative-paths) |

1509| `Marketplace name cannot contain control or bidirectional-formatting characters` | El `name` del marketplace contiene un carácter de formato bidireccional Unicode o un carácter de control, como un escape o una nueva línea | Elimine el carácter del nombre. Antes de v2.1.247, estos caracteres producían el error `Marketplace name impersonates an official Anthropic/Claude marketplace` |

1510| `Plugin name cannot contain control or bidirectional-formatting characters` | Un `name` de plugin contiene un carácter de formato bidireccional Unicode o un carácter de control, como un escape o una nueva línea | Elimine el carácter del nombre. Antes de v2.1.247, Claude Code no ejecutaba esta verificación |

1511 

1512**Advertencias** (no bloqueantes):

1513 

1514* `Marketplace has no plugins defined`: agregue al menos un plugin al array `plugins`

1515* `No marketplace description provided`: agregue una `description` de nivel superior para ayudar a los usuarios a entender su marketplace

1516* `Plugin name "x" is not kebab-case`: 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.

1517* `Marketplace name "x" is reserved in Claude Desktop`: el marketplace se llama `org`, `org-provisioned` u `unknown`, en cualquier combinación de mayúsculas y minúsculas. Claude Code acepta estos nombres, pero la sincronización de marketplace administrada de Claude Desktop rechaza todo el marketplace. Renombre el marketplace. Antes de v2.1.221, `claude plugin validate` no ejecutaba esta verificación.

1518* `Marketplace name "x" is not accepted by Claude Desktop` o `Plugin name "x" is not accepted by Claude Desktop`: Claude Desktop acepta nombres de hasta 128 caracteres compuestos de letras, dígitos, `.`, `_` y `-`, comenzando con una letra o dígito. Claude Code acepta otras formas, pero la sincronización de marketplace administrada de Claude Desktop rechaza un marketplace cuyo nombre falla la verificación y silenciosamente descarta una entrada de plugin cuyo nombre lo hace. Renombre el marketplace o plugin. Antes de v2.1.221, `claude plugin validate` no ejecutaba estas verificaciones.

1519 

1520<h4 id="validate-a-plugin-or-a-directory-without-a-manifest">

1521 Validate a plugin or a directory without a manifest

1522</h4>

1523 

1524Para encontrar archivos de skill, agente y comando cuyo frontmatter no se analiza, ejecute `claude plugin validate` y nombre el directorio que los contiene. Claude Code no busca fuera del directorio que nombra. Cada ejecución excepto una contra un plugin que tiene un `plugin.json` requiere Claude Code v2.1.233 o posterior.

1525 

1526<h5 id="pick-the-directory-to-name">

1527 Pick the directory to name

1528</h5>

1529 

1530Claude Code verifica diferentes archivos dependiendo de qué directorio nombre. Encuentre lo que desea verificar en la primera columna y ejecute el comando de esa fila:

1531 

1532| To check | Run | Claude Code checks |

1533| :------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

1534| A plugin that has a `plugin.json` | `claude plugin validate ./plugins/my-plugin` | `plugin.json`, `hooks/hooks.json`, y los directorios `skills`, `agents` y `commands` en la raíz del plugin |

1535| One directory of skills, agents, or commands, such as a plugin that has no `plugin.json` yet | `claude plugin validate .claude/skills`, `~/.claude/agents`, o `./my-plugin/agents` | Cada archivo de skill, agente o comando en ese directorio |

1536| A folder whose skill is its root `SKILL.md` | `claude plugin validate ./skills`, nombrando el directorio `skills` que contiene la carpeta | El `SKILL.md` raíz de cada carpeta. El directorio contenedor debe llamarse `skills`; una carpeta bajo otro nombre, como `plugins/`, no tiene una ejecución que verifique su `SKILL.md` raíz |

1537| A project's three directories at once | `claude plugin validate .claude`, o la raíz del proyecto cuando no tiene un manifiesto `.claude-plugin/` | `.claude/skills`, `.claude/agents` y `.claude/commands` |

1538| Your user-level directories | `claude plugin validate ~/.claude` | `~/.claude/skills`, `~/.claude/agents` y `~/.claude/commands` |

1539 

1540<h5 id="check-a-plugin-whose-skill-is-its-root-skill-md">

1541 Check a plugin whose skill is its root `SKILL.md`

1542</h5>

1543 

1544Cuando ejecuta `claude plugin validate` contra un directorio de plugin, Claude Code no verifica un `SKILL.md` en la raíz del plugin. Cuando el plugin se encuentra en un directorio llamado `skills`, ejecute el comando dos veces:

1545 

1546* Nombre ese directorio `skills` para verificar el `SKILL.md` raíz del plugin.

1547* Nombre el directorio del plugin para verificar el resto.

1548 

1549Cuando el plugin se encuentra bajo otro nombre, como `plugins/`, la ejecución del directorio `skills` no está disponible, y ninguna ejecución verifica su `SKILL.md` raíz.

1550 

1551<h5 id="check-files-behind-symlinks">

1552 Check files behind symlinks

1553</h5>

1554 

1555Cuando ejecuta `claude plugin validate`, Claude Code no sigue enlaces simbólicos dentro del directorio que nombra. Lo que hace depende de dónde esté el enlace:

1556 

1557* **Un directorio `skills`, `agents` o `commands` vinculado bajo la raíz del plugin o `.claude`**: Claude Code advierte que nada en él fue leído.

1558* **Una entrada vinculada 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.

1559* **El directorio `skills`, `agents` o `commands` que nombra 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. Nombre el directorio real en su lugar.

1560 

1561En dos casos de skills, la ejecución pasa con advertencias. Para verificar los archivos vinculados, ejecute nuevamente y nombre un directorio que los contenga directamente:

1562 

1563* **Un plugin cuyo directorio `skills` [vincula a los skills de un plugin hermano](/docs/es/plugins-reference#share-files-within-a-marketplace-with-symlinks)**: nombre el directorio del plugin hermano.

1564* **Una [entrada de skill vinculada](/docs/es/skills#where-skills-live) en `~/.claude/skills` o `.claude/skills`**: Claude Code sigue la entrada en una sesión. Para verificarla, nombre un directorio llamado `skills` que contenga la carpeta real.

1565 

1566<h5 id="read-the-validation-results">

1567 Read the validation results

1568</h5>

1569 

1570Una ejecución limpia termina con `Validation passed`.

1571 

1572`No manifest found in directory` significa que Claude Code no encontró `plugin.json` o `marketplace.json` allí, y ningún archivo de skill, agente o comando en los directorios que sondea bajo él. Nombre el directorio `skills`, `agents` o `commands` que contiene sus archivos en su lugar.

1573 

1574Dos de los errores que Claude Code reporta de estas ejecuciones, con la solución para cada uno:

1575 

1576* `YAML frontmatter failed to parse: ...`: corrija el YAML en el bloque frontmatter del archivo de skill, agente o comando. Hasta que lo haga, una sesión no lee campos frontmatter del archivo

1577* `Invalid JSON syntax: ...` en `hooks/hooks.json`: corrija la sintaxis JSON. Hasta que lo haga, una sesión carga el plugin sin los hooks en ese archivo. Claude Code reporta este error solo en una ejecución de plugin

1578 

1579En una ejecución de plugin, Claude Code también advierte sobre un `CLAUDE.md` en la raíz del plugin. Para rutas que establece a través de los [component path fields](/docs/es/plugins-reference#component-path-fields) en `plugin.json`, Claude Code verifica que cada ruta exista pero no lee los archivos allí.

1580 

1581<h3 id="plugin-installation-failures">

1582 Fallos de instalación de plugins

1583</h3>

1584 

1585**Síntomas**: El marketplace aparece pero la instalación del plugin falla

1586 

1587**Soluciones**:

1588 

1589* Verifique que las URLs de fuente del plugin sean accesibles

1590* Compruebe que los directorios de plugins contengan archivos requeridos

1591* Para fuentes de GitHub, asegúrese de que los repositorios sean públicos o tenga acceso

1592* Pruebe las fuentes de plugins manualmente clonando/descargando

1593* Si la fuente fija tanto `ref` como `sha`, 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, el `ref` aú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

1594 

1595<h3 id="private-repository-authentication-fails">

1596 La autenticación del repositorio privado falla

1597</h3>

1598 

1599**Síntomas**: Errores de autenticación al instalar plugins desde repositorios privados

1600 

1601**Soluciones**:

1602 

1603Para instalación manual y actualizaciones:

1604 

1605* Verifique que esté autenticado con su proveedor de git (por ejemplo, ejecute `gh auth status` para GitHub)

1606* Compruebe que su ayudante de credenciales esté configurado: `git config --global credential.helper`

1607* Ejecute `git ls-remote <marketplace-url>` para probar si git puede autenticarse por sí solo. Si git solicita un nombre de usuario o contraseña, almacene la credencial primero: para GitHub sobre HTTPS, ejecute `gh auth setup-git`, y para remotos SSH, cargue su clave en `ssh-agent`

1608 

1609Para actualizaciones automáticas en segundo plano:

1610 

1611* La verificación en segundo plano utiliza sus ayudantes de credenciales de git configurados pero nunca solicita, por lo que su ayudante debe poder responder con una credencial almacenada. Los remotos SSH con una clave cargada en `ssh-agent` también se autentican

1612* Si su ayudante necesita solicitarle, la actualización en segundo plano falla silenciosamente y el clon existente permanece en su lugar. Inicie sesión en su ayudante primero para que contenga una credencial para el host. Para GitHub, ejecute `gh auth login`, luego `gh auth setup-git`

1613* Cuando la verificación encuentra nuevos commits, o no puede alcanzar o autenticarse al remoto, Claude Code re-clona el marketplace con las mismas credenciales. El re-clonado puede agotar el tiempo de espera en repositorios grandes

1614* Establezca `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE=1` para mantener el clon existente sin intentar el re-clonado cuando la verificación en segundo plano no puede alcanzar o autenticarse al remoto

1615* Si el re-clonado agota el tiempo de espera en un repositorio grande, aumente el límite con [`CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS`](#git-operations-time-out)

1616* O actualice marketplaces privados manualmente con `/plugin marketplace update <name>`, que usa sus credenciales

1617 

1618Antes de v2.1.280, la verificación en segundo plano se ejecutaba sin sus ayudantes de credenciales y no podía autenticarse en repositorios privados sobre HTTPS.

1619 

1620<h3 id="marketplace-updates-fail-in-offline-environments">

1621 Las actualizaciones del marketplace fallan en entornos sin conexión

1622</h3>

1623 

1624**Síntomas**: En un entorno sin conexión o aislado, la actualización de marketplace en segundo plano no puede alcanzar el remoto y Claude Code intenta repetidamente un re-clonado que no puede tener éxito.

1625 

1626**Causa**: La actualización en segundo plano verifica el remoto del marketplace para nuevos commits, y cuando la verificación no puede alcanzar el remoto, Claude Code intenta clonar el marketplace nuevamente. Sin conexión, el clonado falla de la misma manera y el clon existente permanece en su lugar. Antes de v2.1.274, la actualización ejecutaba `git pull` en el clon existente, movía el clon a un lado para re-clonar cuando el pull fallaba, y lo restauraba después en una base de mejor esfuerzo.

1627 

1628La actualización se ejecuta en segundo plano después del inicio, por lo que no retrasa el inicio. Cada sesión aún repite el intento fallido, y cada operación de git puede esperar el [tiempo de espera de 120 segundos](#git-operations-time-out).

1629 

1630**Solución**: Establezca `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE=1` para omitir el intento de re-clonado y mantener el uso del clon existente cuando la verificación no puede alcanzar el remoto:

1631 

1632```bash theme={null}

1633export CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE=1

1634```

1635 

1636Para implementaciones completamente sin conexión donde el repositorio nunca será alcanzable, use [`CLAUDE_CODE_PLUGIN_SEED_DIR`](#pre-populate-plugins-for-containers) para precargar el directorio de plugins en tiempo de compilación en su lugar.

1637 

1638<h3 id="git-operations-time-out">

1639 Las operaciones de Git agotan el tiempo de espera

1640</h3>

1641 

1642**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`.

1643 

1644**Causa**: Claude Code usa un tiempo de espera de 120 segundos para todas las operaciones de git, incluyendo clonación de repositorios de plugins y re-clonación de un marketplace para actualizarlo. Los repositorios grandes o las conexiones de red lentas pueden exceder este límite.

1645 

1646**Solución**: Aumente el tiempo de espera usando la variable de entorno `CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS`. El valor está en milisegundos:

1647 

1648```bash theme={null}

1649export CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS=300000 # 5 minutos

1650```

1651 

1652<h3 id="plugins-with-relative-paths-fail-in-url-based-marketplaces">

1653 Los plugins con rutas relativas fallan en marketplaces basados en URL

1654</h3>

1655 

1656**Síntomas**: Agregó un marketplace a través de una URL como `https://example.com/marketplace.json`, pero plugins con fuentes de ruta relativa como `"./plugins/my-plugin"` fallan al instalar con `its marketplace entry path does not stay inside the marketplace directory`. Los plugins ya instalados fallan al cargar con `Plugin source path refused`. Ambos mensajes tienen una [entrada de referencia de error](/docs/es/errors#marketplace-entry-path-does-not-stay-inside-the-marketplace-directory).

1657 

1658**Causa**: Agregar un marketplace basado en URL descarga solo el archivo `marketplace.json` en sí, y Claude Code no obtiene archivos de plugins por ruta relativa desde ese servidor. Las rutas relativas en la entrada del marketplace hacen referencia a archivos en el servidor remoto que no fueron descargados.

1659 

1660**Soluciones**:

1661 

1662* **Use fuentes externas**: cambie las entradas de plugins a cualquier [plugin source](#plugin-sources) que no sea una ruta relativa:

1663 ```json theme={null}

1664 { "name": "my-plugin", "source": { "source": "github", "repo": "owner/repo" } }

1665 ```

1666* **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.

1667 

1668<h3 id="files-not-found-after-installation">

1669 Archivos no encontrados después de la instalación

1670</h3>

1671 

1672**Síntomas**: El plugin se instala pero las referencias a archivos fallan, especialmente archivos fuera del directorio del plugin

1673 

1674**Causa**: Claude Code copia plugins instalados a un directorio de caché, a menos que el plugin se cargue en el lugar. Una [`command` source in link mode](#copy-mode-and-link-mode) se carga en el lugar, y también lo hace una [relative path source](#relative-paths) en un marketplace agregado desde un directorio local. Las rutas que hacen referencia a archivos fuera del directorio del plugin copiado (como `../shared-utils`) no funcionarán porque esos archivos no se copian.

1675 

1676**Soluciones**: Consulte [Plugin caching and file resolution](/docs/es/plugins-reference#plugin-caching-and-file-resolution) para soluciones alternativas incluyendo enlaces simbólicos y reestructuración de directorios.

1677 

1678Para herramientas de depuración adicionales y problemas comunes, consulte [Debugging and development tools](/docs/es/plugins-reference#debugging-and-development-tools).

1679 

1680<h2 id="see-also">

1681 Ver también

1682</h2>

1683 

1684* [Descubrir e instalar plugins precompilados](/docs/es/discover-plugins) - Instalación de plugins desde marketplaces existentes

1685* [Plugins](/docs/es/plugins) - Creación de sus propios plugins

1686* [Referencia de plugins](/docs/es/plugins-reference) - Especificaciones técnicas completas y esquemas

1687* [Configuración de plugins](/docs/es/settings-reference#plugin-settings) - Opciones de configuración de plugins

1688* [Referencia de strictKnownMarketplaces](/docs/es/settings-reference#strictknownmarketplaces) - Restricciones de marketplace administrado

plugin-relevance.md +0 −188 deleted

File Deleted View Diff

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Recomendar plugins para su organización

6 

7> Agregue un bloque de relevancia a las entradas de plugins del marketplace para que Claude Code los sugiera cuando el trabajo de un usuario coincida.

8 

9Si opera un marketplace de plugins para su organización, puede hacer que Claude Code sugiera plugins específicos a los usuarios en función de lo que están haciendo. Agregue un bloque `relevance` a la entrada de un plugin en `marketplace.json`, luego incluya el marketplace en la lista de permitidos en la configuración administrada. Cuando la sesión de un usuario coincide con una de las señales declaradas, Claude Code muestra una sugerencia de instalación para ese plugin.

10 

11Las sugerencias declaradas por el marketplace son opcionales por marketplace a través de [configuración administrada](/docs/es/managed-settings). Ninguna declaración de `relevance` del marketplace produce sugerencias hasta que un administrador la agregue a la lista de permitidos, incluido el marketplace oficial de Anthropic. Claude Code también incluye una sugerencia integrada que es independiente de esta lista de permitidos; esa sugerencia y todas las sugerencias declaradas por el marketplace se deshabilitan cuando [`spinnerTipsEnabled`](/docs/es/settings-reference#spinnertipsenabled) se establece en `false`.

12 

13Esta página es para operadores de marketplace y administradores empresariales. Si está buscando instalar plugins, consulte [Descubrir e instalar plugins](/docs/es/discover-plugins).

14 

15<h2 id="how-it-works">

16 Cómo funciona

17</h2>

18 

19Cada entrada de plugin en `marketplace.json` puede llevar un objeto `relevance`. El objeto nombra un tema y una o más señales. Una señal es un patrón que Claude Code prueba contra la sesión actual, como el directorio de trabajo o los archivos que Claude ha leído.

20 

21La coincidencia de señales ocurre localmente en la máquina del usuario. La coincidencia no agrega tráfico de red y no reporta qué señales coincidieron, o sus valores, a Anthropic o al operador del marketplace.

22 

23Cuando una señal coincide y el plugin aún no está instalado, Claude Code muestra el plugin en tres lugares:

24 

25* **Sugerencia de spinner**: un mensaje "¿Trabajando con *tema*? Instale el plugin *plugin*" con el comando `/plugin install` aparece debajo del spinner mientras Claude está respondiendo.

26* **Sugerencia de inicio de sesión**: si la señal `cwd` coincide con el directorio de trabajo, aparece una notificación de una línea `plugin suggestion: <name>@<marketplace> · /plugin` antes del primer turno.

27* **Pestaña Discover de `/plugin`**: el plugin se fija en la parte superior de la lista Discover con una anotación como "sugerido para este directorio" o "sugerido para comandos stripe".

28 

29La sugerencia de spinner y la notificación de inicio de sesión son parte del sistema de sugerencias de spinner. Claude Code deshabilita ambas cuando `spinnerTipsEnabled` se resuelve a `false` en todos sus archivos de configuración, o cuando `excludeDefault` se resuelve a `true` en todas las claves [`spinnerTipsOverride`](/docs/es/settings-reference#spinnertipsoverride) en la configuración de usuario, `--settings` y configuración administrada, y esas claves configuran al menos una sugerencia o un `tipsFile`.

30 

31El pin de la pestaña Discover es independiente de la configuración de sugerencias.

32 

33Claude Code nunca instala un plugin automáticamente. El usuario siempre confirma.

34 

35<h2 id="add-relevance-to-a-plugin-entry">

36 Agregar relevancia a una entrada de plugin

37</h2>

38 

39Agregue un objeto `relevance` a la entrada del plugin en su `marketplace.json`. El siguiente ejemplo declara que el plugin `terraform-helpers` es relevante cuando Claude lee un archivo `.tf` o cuando Claude ejecuta `terraform`:

40 

41```json theme={null}

42{

43 "name": "acme-corp-plugins",

44 "owner": { "name": "Acme Platform Team" },

45 "plugins": [

46 {

47 "name": "terraform-helpers",

48 "source": "./plugins/terraform-helpers",

49 "description": "Acme conventions and helpers for Terraform",

50 "relevance": {

51 "topic": "Terraform",

52 "signals": {

53 "cli": ["terraform"],

54 "filesRead": ["**/*.tf"]

55 }

56 }

57 }

58 ]

59}

60```

61 

62Un plugin con un bloque `relevance` pero sin una señal coincidente se comporta como cualquier otra entrada del marketplace. Aparece en la lista Discover en su posición normal y nunca aparece como una sugerencia de spinner.

63 

64<h2 id="field-reference">

65 Referencia de campos

66</h2>

67 

68<h3 id="relevance">

69 `relevance`

70</h3>

71 

72| Campo | Tipo | Descripción |

73| :-------- | :----- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

74| `topic` | string | Opcional. La frase que completa "¿Trabajando con *tema*?" en la sugerencia de spinner. A menudo el nombre del producto, por ejemplo `Stripe`. Use un dominio como `design` cuando el nombre del plugin no se lee naturalmente como un tema. Por defecto, el nombre del plugin con cada segmento de guión en mayúsculas. La notificación de inicio de sesión no utiliza este valor. Máximo 64 caracteres. |

75| `signals` | object | Coincidencias que determinan cuándo el plugin es relevante. Se requiere al menos una señal para que el plugin sea sugerible. Consulte la tabla a continuación. |

76 

77<h3 id="relevance-signals">

78 `relevance.signals`

79</h3>

80 

81| Campo | Tipo | Descripción |

82| :------------- | :--------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

83| `cwd` | array of strings | Patrones Glob coincididos contra el directorio de trabajo de la sesión. Coincidido como una ruta absoluta y, cuando está dentro de un repositorio git, como una ruta relativa a la raíz del repositorio. Normalizado con barra diagonal y sin distinción de mayúsculas y minúsculas. Cada patrón coincide con el directorio en sí y todo lo que hay debajo, por lo que `infra`, `infra/`, e `infra/**` se comportan de manera idéntica. Esta es la única señal que puede coincidir al inicio de la sesión, antes del primer turno. Máximo 10 patrones de 256 caracteres cada uno. |

84| `cli` | array of strings | Nombres de comandos de comandos de shell que Claude ha ejecutado en esta sesión, por ejemplo `["stripe"]`. Se aplica en todas las plataformas: los comandos ejecutados en Windows a través de PowerShell o Git Bash se registran de la misma manera. Claude Code registra un nombre de comando por invocación de herramienta de shell: el primer token después de cualquier asignación de variable de entorno inicial y `sudo`. Los comandos compuestos contribuyen solo con su comando inicial, por lo que `cd infra && terraform plan` registra `cd`, no `terraform`. Coincidencia exacta. Máximo 10 entradas de 64 caracteres cada una. |

85| `hosts` | array of strings | Nombres de host vistos en URLs `http://` o `https://` en comandos Bash en esta sesión, por ejemplo `["api.stripe.com"]`. Solo nombre de host en minúsculas: sin esquema, puerto o ruta. Coincidencia exacta sin distinción de mayúsculas y minúsculas. Máximo 20 entradas de 128 caracteres cada una. |

86| `filesRead` | array of strings | Patrones Glob coincididos contra las rutas de archivos que Claude ha leído en esta sesión, por ejemplo `["**/*.tf"]`. Normalizado con barra diagonal y sin distinción de mayúsculas y minúsculas. Máximo 10 patrones de 256 caracteres cada uno. |

87| `manifestDeps` | array of objects | Dependencias declaradas en manifiestos de paquetes que Claude ha leído en esta sesión. Cada entrada es `{ "file": "...", "pattern": "..." }`, donde `file` es una expresión regular coincidida contra la ruta del archivo de manifiesto tal como se registra en el estado de la sesión, típicamente una ruta absoluta, y `pattern` es una expresión regular coincidida contra el contenido de ese archivo. Ancle `file` al final, por ejemplo `[/\\\\]package\\.json$` en forma escapada en JSON, porque un patrón anclado al inicio nunca coincide con una ruta absoluta. Las rutas no se normalizan de separador para esta señal, por lo que las rutas de Windows usan barras invertidas. Los archivos de manifiesto más grandes de 512 KB se omiten. Ambos valores son cadenas de fuente `RegExp` de JavaScript de como máximo 256 caracteres. `file` coincide sin distinción de mayúsculas y minúsculas. `pattern` distingue mayúsculas y minúsculas. Máximo 10 entradas. |

88 

89Las señales `cli`, `hosts`, `filesRead` y `manifestDeps` necesitan historial de sesión, por lo que solo pueden coincidir en la sugerencia de spinner y la pestaña Discover.

90 

91Las señales `filesRead` y `manifestDeps` prueban el estado de archivo registrado de la sesión, que también incluye archivos que Claude ha escrito o editado y archivos de memoria `CLAUDE.md` cargados automáticamente. Para estas dos señales, Claude Code omite rutas bajo su propio [directorio de configuración](/docs/es/claude-directory) y sus directorios temporales.

92 

93El siguiente ejemplo usa `manifestDeps` para sugerir un plugin de Stripe una vez que Claude ha leído un `package.json` que depende de `stripe`. El patrón `file` usa `[/\\\\]` para que coincida tanto con separadores de barra diagonal como de barra invertida, y `\\.` para que el punto sea literal. En JSON, cada barra invertida en la expresión regular se escribe dos veces.

94 

95```json theme={null}

96{

97 "name": "stripe-helpers",

98 "source": "./plugins/stripe-helpers",

99 "relevance": {

100 "topic": "Stripe",

101 "signals": {

102 "manifestDeps": [

103 {

104 "file": "[/\\\\]package\\.json$",

105 "pattern": "\"stripe\"\\s*:"

106 }

107 ]

108 }

109 }

110}

111```

112 

113<Note>

114 Claude Code ignora campos desconocidos bajo `relevance` y `relevance.signals` en el tiempo de carga, por lo que los clientes más antiguos continúan cargando su marketplace.

115</Note>

116 

117<h2 id="enable-suggestions-in-managed-settings">

118 Habilitar sugerencias en la configuración administrada

119</h2>

120 

121Declarar `relevance` en `marketplace.json` no es suficiente por sí solo. Un administrador debe incluir el marketplace en la lista de permitidos en [configuración administrada](/docs/es/managed-settings) antes de que sus sugerencias aparezcan a los usuarios.

122 

123Agregue el nombre del marketplace a `pluginSuggestionMarketplaces`. Para cualquier marketplace que no sea el marketplace oficial de Anthropic, también declare la fuente del marketplace en la misma configuración administrada, ya sea como entrada de ese nombre en `extraKnownMarketplaces` o como entrada en `strictKnownMarketplaces`. El nombre incluido en la lista de permitidos se ignora si el marketplace registrado en la máquina proviene de una fuente diferente. Esto evita que una fuente no relacionada se registre bajo un nombre incluido en la lista de permitidos para que sus plugins se sugieran en toda su organización.

124 

125El siguiente `managed-settings.json` registra un marketplace de organización desde un repositorio de GitHub y habilita sus sugerencias:

126 

127```json theme={null}

128{

129 "extraKnownMarketplaces": {

130 "acme-corp-plugins": {

131 "source": {

132 "source": "github",

133 "repo": "acme-corp/claude-plugins"

134 }

135 }

136 },

137 "pluginSuggestionMarketplaces": ["acme-corp-plugins"]

138}

139```

140 

141El marketplace oficial está exento del requisito de declaración de fuente porque su nombre solo puede registrarse desde la fuente oficial de Anthropic. Incluir el nombre en la lista de permitidos es suficiente:

142 

143```json theme={null}

144{

145 "pluginSuggestionMarketplaces": ["claude-plugins-official"]

146}

147```

148 

149<h2 id="what-the-user-sees">

150 Lo que ve el usuario

151</h2>

152 

153Cuando una señal coincide durante una sesión, la sugerencia de spinner dice:

154 

155```text theme={null}

156¿Trabajando con Terraform? Instale el plugin terraform-helpers:

157/plugin install terraform-helpers@acme-corp-plugins

158```

159 

160Al inicio de la sesión, una señal `cwd` coincidente muestra la notificación de una línea:

161 

162```text theme={null}

163plugin suggestion: terraform-helpers@acme-corp-plugins · /plugin

164```

165 

166La sugerencia de un plugin determinado aparece como máximo una vez cada tres sesiones en la sugerencia de spinner y la notificación de inicio de sesión combinadas, y ninguna se repite una vez que el plugin está instalado. La notificación de inicio de sesión además deja de aparecer después de que la sugerencia se ha mostrado dos veces.

167 

168En la pestaña Discover de `/plugin`, el plugin se fija encima de los otros resultados con una anotación que nombra la señal coincidente, como `suggested for this directory` o `suggested for terraform commands`. La pestaña Discover fija un plugin determinado una vez; las visitas posteriores lo enumeran en orden normal.

169 

170<h2 id="validate-your-marketplace">

171 Validar su marketplace

172</h2>

173 

174Ejecute `claude plugin validate` contra su directorio de marketplace para verificar el bloque `relevance` antes de publicar:

175 

176```

177claude plugin validate ./my-marketplace

178```

179 

180El validador reporta claves desconocidas bajo `relevance` y `relevance.signals` como advertencias, marca un valor `relevance` que no es un objeto, y rechaza una entrada `signals.hosts` que incluye un esquema, puerto o ruta.

181 

182<h2 id="see-also">

183 Véase también

184</h2>

185 

186* [Crear y distribuir un marketplace de plugins](/docs/es/plugin-marketplaces): construya el marketplace que aloja sus plugins

187* [Recomendar su plugin desde su CLI](/docs/es/plugin-hints): solicite a los usuarios desde su propia CLI en lugar de desde las señales de sesión de Claude Code

188* [Toda la configuración](/docs/es/settings-reference#pluginsuggestionmarketplaces): `pluginSuggestionMarketplaces` y `extraKnownMarketplaces`

plugins.md +0 −527 deleted

File Deleted View Diff

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Crear plugins

6 

7> Crea plugins personalizados para extender Claude Code con skills, agentes, hooks y servidores MCP.

8 

9Los plugins le permiten extender Claude Code con funcionalidad personalizada que se puede compartir entre proyectos y equipos. Esta guía cubre la creación de sus propios plugins con skills, agentes, hooks y servidores MCP.

10 

11¿Buscando instalar plugins existentes? Consulte [Descubrir e instalar plugins](/docs/es/discover-plugins). Para especificaciones técnicas completas, consulte [Referencia de plugins](/docs/es/plugins-reference).

12 

13<h2 id="when-to-use-plugins-vs-standalone-configuration">

14 Cuándo usar plugins versus configuración independiente

15</h2>

16 

17Claude Code admite dos formas de agregar skills, agentes y hooks personalizados:

18 

19| Enfoque | Nombres de skills | Mejor para |

20| :------------------------------------------------------------------------------------------------ | :------------------- | :--------------------------------------------------------------------------------------------------------------------------- |

21| **Independiente** (directorio `.claude/`) | `/hello` | Flujos de trabajo personales, personalizaciones específicas del proyecto, experimentos rápidos |

22| **Plugins** (directorios con skills, agentes, hooks o un manifiesto `.claude-plugin/plugin.json`) | `/plugin-name:hello` | Compartir con compañeros de equipo, distribuir a la comunidad, lanzamientos versionados, reutilizable en múltiples proyectos |

23 

24<Tip>

25 Comience con configuración independiente en `.claude/` para iteración rápida, luego [convierta a un plugin](#convert-existing-configurations-to-plugins) cuando esté listo para compartir.

26</Tip>

27 

28<h2 id="quickstart">

29 Inicio rápido

30</h2>

31 

32Este inicio rápido le guía a través de la creación de un plugin con un skill personalizado. Creará un manifiesto (el archivo de configuración que define su plugin), agregará un skill y lo probará localmente usando la bandera `--plugin-dir`.

33 

34<h3 id="prerequisites">

35 Requisitos previos

36</h3>

37 

38* Claude Code [instalado y autenticado](/docs/es/quickstart#step-1-install-claude-code)

39 

40<h3 id="create-your-first-plugin">

41 Cree su primer plugin

42</h3>

43 

44<Steps>

45 <Step title="Cree el directorio del plugin">

46 Cada plugin vive en su propio directorio que contiene sus skills, agentes o hooks, opcionalmente junto con un manifiesto `.claude-plugin/plugin.json`. La ubicación no importa para este inicio rápido porque apuntará Claude Code al directorio con `--plugin-dir` en el paso de prueba. Créelo en cualquier lugar conveniente, como una carpeta temporal o un directorio de proyectos:

47 

48 ```bash theme={null}

49 mkdir my-first-plugin

50 ```

51 

52 Los pasos restantes se ejecutan desde el directorio padre y hacen referencia a rutas como `my-first-plugin/...` relativas a él.

53 </Step>

54 

55 <Step title="Cree el manifiesto del plugin">

56 El archivo de manifiesto en `.claude-plugin/plugin.json` define la identidad de su plugin: su nombre, descripción y versión. Claude Code usa estos metadatos para mostrar su plugin en el administrador de plugins.

57 

58 Cree el directorio `.claude-plugin` dentro de su carpeta de plugin:

59 

60 ```bash theme={null}

61 mkdir my-first-plugin/.claude-plugin

62 ```

63 

64 Luego cree `my-first-plugin/.claude-plugin/plugin.json` con este contenido:

65 

66 ```json my-first-plugin/.claude-plugin/plugin.json theme={null}

67 {

68 "name": "my-first-plugin",

69 "description": "A greeting plugin to learn the basics",

70 "version": "1.0.0",

71 "author": {

72 "name": "Your Name"

73 }

74 }

75 ```

76 

77 | Campo | Propósito |

78 | :------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

79 | `name` | Identificador único y espacio de nombres de skill. Los skills tienen este prefijo (por ejemplo, `/my-first-plugin:hello`). |

80 | `description` | Se muestra en el administrador de plugins al examinar o instalar plugins. |

81 | `version` | Opcional. Si se establece, los usuarios solo reciben actualizaciones cuando usted incrementa este campo, excepto para una [fuente `command`](/docs/es/plugin-marketplaces#command-sources) o un plugin [cargado en su lugar](/docs/es/plugins-reference#plugin-caching-and-file-resolution); consulte [gestión de versiones](/docs/es/plugins-reference#version-management). Si se omite, la versión proviene de la siguiente fuente en [gestión de versiones](/docs/es/plugins-reference#version-management). |

82 | `author` | Opcional. Útil para atribución. |

83 

84 Para campos adicionales como `homepage`, `repository` y `license`, consulte el [esquema de manifiesto completo](/docs/es/plugins-reference#plugin-manifest-schema).

85 </Step>

86 

87 <Step title="Agregue un skill">

88 Los skills viven en el directorio `skills/`. Cada skill es una carpeta que contiene un archivo `SKILL.md`. El nombre de la carpeta se convierte en el nombre del skill, con el prefijo del espacio de nombres del plugin (`hello/` en un plugin llamado `my-first-plugin` crea `/my-first-plugin:hello`).

89 

90 Cree un directorio de skill en su carpeta de plugin:

91 

92 ```bash theme={null}

93 mkdir -p my-first-plugin/skills/hello

94 ```

95 

96 Luego cree `my-first-plugin/skills/hello/SKILL.md` con este contenido:

97 

98 ```markdown my-first-plugin/skills/hello/SKILL.md theme={null}

99 ---

100 description: Greet the user with a friendly message

101 disable-model-invocation: true

102 ---

103 

104 Greet the user warmly and ask how you can help them today.

105 ```

106 </Step>

107 

108 <Step title="Pruebe su plugin">

109 Ejecute Claude Code con la bandera `--plugin-dir` para cargar su plugin:

110 

111 ```bash theme={null}

112 claude --plugin-dir ./my-first-plugin

113 ```

114 

115 Una vez que Claude Code se inicie, pruebe su nuevo skill:

116 

117 ```shell theme={null}

118 /my-first-plugin:hello

119 ```

120 

121 Verá que Claude responde con un saludo. Ejecute `/help` y abra la pestaña **Comandos personalizados** para ver su skill listado bajo el espacio de nombres del plugin.

122 

123 <Note>

124 **¿Por qué espacios de nombres?** Los skills de plugin siempre tienen espacios de nombres (como `/my-first-plugin:hello`) para prevenir conflictos cuando múltiples plugins tienen skills con el mismo nombre.

125 

126 Para cambiar el prefijo del espacio de nombres, actualice el campo `name` en `plugin.json`.

127 </Note>

128 </Step>

129 

130 <Step title="Agregue argumentos de skill">

131 Haga su skill dinámico aceptando entrada del usuario. El marcador de posición `$ARGUMENTS` captura cualquier texto que el usuario proporcione después del nombre del skill.

132 

133 Actualice su archivo `SKILL.md`:

134 

135 ```markdown my-first-plugin/skills/hello/SKILL.md theme={null}

136 ---

137 description: Greet the user with a personalized message

138 ---

139 

140 # Hello Skill

141 

142 Greet the user named "$ARGUMENTS" warmly and ask how you can help them today. Make the greeting personal and encouraging.

143 ```

144 

145 Ejecute `/reload-plugins` para recoger los cambios. Luego pruebe el skill con su nombre:

146 

147 ```shell theme={null}

148 /my-first-plugin:hello Alex

149 ```

150 

151 Claude le saludará por su nombre. Para más información sobre pasar argumentos a skills, consulte [Skills](/docs/es/skills#pass-arguments-to-skills).

152 </Step>

153</Steps>

154 

155<Tip>

156 La bandera `--plugin-dir` es útil para desarrollo y pruebas. Cuando esté listo para compartir su plugin con otros, consulte [Crear y distribuir un marketplace de plugins](/docs/es/plugin-marketplaces).

157</Tip>

158 

159<h2 id="develop-a-plugin-in-your-skills-directory">

160 Desarrolle un plugin en su directorio de skills

161</h2>

162 

163En lugar de pasar `--plugin-dir` en cada lanzamiento, puede mantener un plugin en su directorio de skills y hacer que Claude Code lo cargue automáticamente. `claude plugin init` lo estructura:

164 

165```bash theme={null}

166claude plugin init my-tool

167```

168 

169Esto crea `~/.claude/skills/my-tool/` con un manifiesto `.claude-plugin/plugin.json` y un `SKILL.md` inicial. En la siguiente sesión se carga como `my-tool@skills-dir` sin necesidad de marketplace o paso de instalación.

170 

171Para las reglas de carga automática, alcance personal versus de proyecto, el requisito de confianza del espacio de trabajo y cómo actualizar o eliminar uno, consulte [Plugins del directorio de skills](/docs/es/plugins-reference#skills-directory-plugins).

172 

173<h2 id="plugin-structure-overview">

174 Descripción general de la estructura del plugin

175</h2>

176 

177Ha creado un plugin con un skill, pero los plugins pueden incluir mucho más: agentes personalizados, hooks, servidores MCP, servidores LSP y monitores de fondo.

178 

179<Warning>

180 **Error común**: No ponga `commands/`, `agents/`, `skills/` o `hooks/` dentro del directorio `.claude-plugin/`. Solo `plugin.json` va dentro de `.claude-plugin/`. Todos los otros directorios deben estar en el nivel raíz del plugin.

181 

182 La raíz del plugin es el directorio propio del plugin individual, como `my-first-plugin/` del [inicio rápido](#quickstart). Nunca es `~/.claude/`. Por ejemplo, Claude Code no lee un `.mcp.json` colocado en `~/.claude/.mcp.json`.

183</Warning>

184 

185| Directorio | Ubicación | Propósito |

186| :---------------- | :-------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

187| `.claude-plugin/` | Raíz del plugin | Contiene el manifiesto `plugin.json` (opcional si los componentes usan ubicaciones predeterminadas) |

188| `skills/` | Raíz del plugin | Skills como directorios `<name>/SKILL.md` |

189| `commands/` | Raíz del plugin | Skills como archivos Markdown planos. Use `skills/` para plugins nuevos |

190| `agents/` | Raíz del plugin | Definiciones de agentes personalizados |

191| `hooks/` | Raíz del plugin | Manejadores de eventos en `hooks.json` |

192| `.mcp.json` | Raíz del plugin | Configuraciones de servidor MCP |

193| `.lsp.json` | Raíz del plugin | Configuraciones de servidor LSP para inteligencia de código |

194| `monitors/` | Raíz del plugin | Configuraciones de monitor de fondo en `monitors.json` |

195| `bin/` | Raíz del plugin | Ejecutables agregados a la `PATH` de la herramienta Bash mientras el plugin está habilitado. No puede incluir este directorio en un plugin que [distribuya a través de la configuración de la organización de claude.ai](/docs/es/plugin-marketplaces#keep-executables-out-of-the-top-level-bin-directory) |

196| `settings.json` | Raíz del plugin | [Configuraciones](/docs/es/settings) predeterminadas aplicadas cuando el plugin está habilitado |

197 

198Un plugin que incluye exactamente un skill puede colocar `SKILL.md` directamente en la raíz del plugin en lugar de crear un directorio `skills/`. Claude Code lo carga como un único skill y utiliza el campo `name` del frontmatter para el nombre de invocación. Use el diseño `skills/` para plugins que pueden crecer a más de un skill.

199 

200<h2 id="develop-more-complex-plugins">

201 Desarrollar plugins más complejos

202</h2>

203 

204Una vez que se sienta cómodo con plugins básicos, puede crear extensiones más sofisticadas.

205 

206<h3 id="add-skills-to-your-plugin">

207 Agregue Skills a su plugin

208</h3>

209 

210Los plugins pueden incluir [Agent Skills](/docs/es/skills) para extender las capacidades de Claude. Los skills son invocados por el modelo: Claude los usa automáticamente basándose en el contexto de la tarea.

211 

212Agregue un directorio `skills/` en la raíz de su plugin con carpetas de Skill que contengan archivos `SKILL.md`:

213 

214```text theme={null}

215my-plugin/

216├── .claude-plugin/

217│ └── plugin.json

218└── skills/

219 └── code-review/

220 └── SKILL.md

221```

222 

223Cada `SKILL.md` contiene frontmatter YAML e instrucciones. Incluya una `description` para que Claude sepa cuándo usar el skill:

224 

225```yaml theme={null}

226description: Reviews code for best practices and potential issues. Use when reviewing code, checking PRs, or analyzing code quality.

227 

228When reviewing code, check for:

2291. Code organization and structure

2302. Error handling

2313. Security concerns

2324. Test coverage

233```

234 

235Después de instalar el plugin, verifique el resumen de instalación: si reporta `Run /reload-plugins to activate.`, consulte [Aplicar cambios de plugin sin reiniciar](/docs/es/discover-plugins#apply-plugin-changes-without-restarting) para cargar los Skills en su sesión actual. Para orientación completa sobre la autoría de Skills incluyendo divulgación progresiva y restricciones de herramientas, consulte [Agent Skills](/docs/es/skills).

236 

237<h3 id="add-lsp-servers-to-your-plugin">

238 Agregue servidores LSP a su plugin

239</h3>

240 

241<Tip>

242 Para lenguajes comunes como TypeScript, Python y Rust, instale los plugins LSP precompilados desde el marketplace oficial. Cree plugins LSP personalizados solo cuando necesite soporte para lenguajes que aún no están cubiertos.

243</Tip>

244 

245Los plugins LSP (Language Server Protocol) dan a Claude inteligencia de código en tiempo real. Si necesita soportar un lenguaje que no tiene un plugin LSP oficial, puede crear uno propio agregando un archivo `.lsp.json` a su plugin:

246 

247```json .lsp.json theme={null}

248{

249 "go": {

250 "command": "gopls",

251 "args": ["serve"],

252 "extensionToLanguage": {

253 ".go": "go"

254 }

255 }

256}

257```

258 

259Los usuarios que instalen su plugin deben tener el binario del servidor de lenguaje instalado en su máquina.

260 

261Para confirmar que el servidor se inicia, inicie Claude Code con el plugin habilitado y verifique la pestaña Errores de `/plugin`: un servidor de lenguaje que no se inicia aparece allí, por ejemplo con `Executable not found in $PATH` cuando el binario no está instalado. Una entrada con una configuración inválida se omite en su lugar; ejecute `claude --debug` para ver por qué.

262 

263Para opciones de configuración LSP completas, consulte [Servidores LSP](/docs/es/plugins-reference#lsp-servers).

264 

265<h3 id="add-background-monitors-to-your-plugin">

266 Agregue monitores de fondo a su plugin

267</h3>

268 

269Los monitores de fondo permiten que su plugin observe registros, archivos o estado externo en el fondo y notifique a Claude cuando lleguen eventos. Claude Code inicia cada monitor automáticamente cuando el plugin está activo, por lo que no necesita instruir a Claude para que inicie la observación.

270 

271Agregue un archivo `monitors/monitors.json` en la raíz del plugin con una matriz de entradas de monitor:

272 

273```json monitors/monitors.json theme={null}

274[

275 {

276 "name": "error-log",

277 "command": "tail -F ./logs/error.log",

278 "description": "Application error log"

279 }

280]

281```

282 

283Cada línea de stdout del `command` se entrega a Claude como una notificación durante la sesión. Para el esquema completo, incluyendo el disparador `when` y la sustitución de variables, consulte [Monitors](/docs/es/plugins-reference#monitors).

284 

285<h3 id="ship-default-settings-with-your-plugin">

286 Envíe configuraciones predeterminadas con su plugin

287</h3>

288 

289Los plugins pueden incluir un archivo `settings.json` en la raíz del plugin para aplicar configuración predeterminada cuando el plugin está habilitado. Actualmente, solo se admiten las claves `agent` y `subagentStatusLine`.

290 

291Establecer `agent` activa uno de los [agentes personalizados](/docs/es/sub-agents) del plugin como el hilo principal, aplicando su indicación del sistema, restricciones de herramientas y modelo. Esto permite que un plugin cambie cómo se comporta Claude Code por defecto cuando está habilitado.

292 

293```json settings.json theme={null}

294{

295 "agent": "security-reviewer"

296}

297```

298 

299Este ejemplo activa el agente `security-reviewer` definido en el directorio `agents/` del plugin. Las configuraciones de `settings.json` tienen prioridad sobre `settings` declarados en `plugin.json`. Las claves desconocidas se ignoran silenciosamente.

300 

301<h3 id="organize-complex-plugins">

302 Organice plugins complejos

303</h3>

304 

305Para plugins con muchos componentes, organice su estructura de directorios por funcionalidad. Para diseños de directorios completos y patrones de organización, consulte [Estructura de directorios del plugin](/docs/es/plugins-reference#plugin-directory-structure).

306 

307<h3 id="test-your-plugins-locally">

308 Pruebe sus plugins localmente

309</h3>

310 

311Use la bandera `--plugin-dir` para probar plugins durante el desarrollo. Esto carga su plugin directamente sin requerir instalación.

312 

313```bash theme={null}

314claude --plugin-dir ./my-plugin

315```

316 

317La bandera también acepta un archivo `.zip` del directorio del plugin.

318 

319```bash theme={null}

320claude --plugin-dir ./my-plugin.zip

321```

322 

323Cuando un plugin `--plugin-dir` tiene el mismo nombre que un plugin de marketplace instalado, la copia local tiene prioridad para esa sesión. Esto le permite probar cambios en un plugin que ya tiene instalado sin desinstalarlo primero. La excepción son los plugins cuyas configuraciones administradas fuerzan la habilitación o deshabilitación: `--plugin-dir` no puede anular esos.

324 

325A medida que haga cambios en su plugin, ejecute `/reload-plugins` para recoger las actualizaciones sin reiniciar. Esto recarga plugins, skills, agentes, hooks, servidores MCP de plugin y servidores LSP de plugin; en una sesión sin una terminal interactiva, los cambios del servidor MCP de plugin [esperan su próxima sesión](/docs/es/discover-plugins#apply-plugin-changes-without-restarting). Pruebe los componentes de su plugin:

326 

327* Pruebe sus skills con `/plugin-name:skill-name`

328* Verifique que los agentes aparezcan en `/context` bajo Agentes Personalizados, o mencione uno con @-mention por su nombre con alcance

329* Dispare el evento que cada hook coincide, como pedirle a Claude que edite un archivo para un hook `PostToolUse`, y confirme su efecto. Claude Code registra qué hooks coincidieron, sus códigos de salida y su salida en el [registro de depuración](/docs/es/hooks#debug-hooks)

330 

331<Tip>

332 Puede cargar múltiples plugins a la vez especificando la bandera varias veces:

333 

334 ```bash theme={null}

335 claude --plugin-dir ./plugin-one --plugin-dir ./plugin-two

336 ```

337 

338 Para probar un plugin junto con un plugin del que depende, consulte [Pruebe un plugin y su dependencia localmente](/docs/es/plugin-dependencies#test-a-plugin-and-its-dependency-locally).

339</Tip>

340 

341Para cargar plugins en una sesión donde no puede agregar la bandera, liste sus rutas absolutas en la variable de entorno [`CLAUDE_CODE_PLUGIN_DIRS`](/docs/es/env-vars#variables). Claude Code carga cada ruta como carga una ruta `--plugin-dir`. Estos plugins se cargan además de cualquiera que pase con `--plugin-dir`. [Las configuraciones de proyecto y local no pueden establecer esta variable](/docs/es/settings-reference#variables-claude-code-ignores-in-env). `CLAUDE_CODE_PLUGIN_DIRS` requiere Claude Code v2.1.280 o posterior.

342 

343Probar el plugin con `--plugin-dir` le indica que puede funcionar. Para averiguar con qué frecuencia Claude realmente lo utiliza y obtiene el resultado correcto, ejecútelo contra un conjunto de indicaciones de prueba con [`claude plugin eval`](/docs/es/plugin-evals). Cada indicación se ejecuta varias veces con y sin el plugin cargado, para que pueda ver qué contribuye el plugin y detectar regresiones cuando lo cambia o se envía un nuevo modelo.

344 

345Para cargar varios plugins desde un lugar, pase una carpeta que los contenga, como `--plugin-dir ./plugins`. Cargar una carpeta de plugins requiere Claude Code v2.1.265 o posterior. Claude Code lee el nivel superior de la carpeta para decidir qué plugins se cargan, y en una sesión interactiva también observa la carpeta para cambios posteriores:

346 

347* **Lo que se carga**: si la carpeta no tiene un manifiesto o componentes de plugin en su nivel superior, Claude Code la trata como una carpeta de plugins. Cada subcarpeta inmediata que tenga un manifiesto `.claude-plugin/plugin.json` se carga como un plugin separado. Claude Code omite todo lo demás en la carpeta sin reportar un error, incluyendo plugins que no tienen manifiesto.

348* **Cambios durante una sesión interactiva**: una subcarpeta que agregue se carga como un nuevo plugin una vez que su manifiesto esté en su lugar, y cuando elimine una subcarpeta, su plugin se descarga. Claude Code imprime una línea en la sesión para cada cambio. Si aplicar un cambio a mitad de la conversación [invalidaría el caché de indicaciones](/docs/es/prompt-caching#enabling-or-disabling-a-plugin), Claude Code lo retiene, y la línea dice ejecutar `/reload-plugins` para aplicarlo.

349 

350Para probar un plugin que ya está empaquetado como un archivo `.zip` y alojado en una URL, como un artefacto de compilación de CI, use `--plugin-url` en su lugar. Claude Code obtiene el archivo al inicio y lo carga solo para esa sesión. Si Claude Code no puede obtener el archivo, o el archivo no es válido, se inicia sin el plugin y registra un error de carga de plugin que puede revisar en la pestaña **Errores** del administrador `/plugin`. Las mismas [consideraciones de confianza](/docs/es/discover-plugins#security) se aplican como para cualquier fuente de plugin: solo apunte esta bandera a archivos que controle o en los que confíe.

351 

352Para cargar múltiples plugins, repita la bandera para cada URL:

353 

354```bash theme={null}

355claude --plugin-url https://example.com/my-plugin.zip --plugin-url https://example.com/other.zip

356```

357 

358O pase URLs separadas por espacios como un argumento entrecomillado:

359 

360```bash theme={null}

361claude --plugin-url "https://example.com/my-plugin.zip https://example.com/other.zip"

362```

363 

364<h3 id="debug-plugin-issues">

365 Depure problemas del plugin

366</h3>

367 

368Si su plugin no funciona como se espera:

369 

3701. **Verifique la estructura**: Asegúrese de que sus directorios estén en la raíz del plugin, no dentro de `.claude-plugin/`

3712. **Pruebe componentes individualmente**: Verifique cada skill, agente y hook por separado

3723. **Use herramientas de validación y depuración**: Consulte [Herramientas de depuración y desarrollo](/docs/es/plugins-reference#debugging-and-development-tools) para comandos CLI y técnicas de solución de problemas

373 

374<h3 id="share-your-plugins">

375 Comparta sus plugins

376</h3>

377 

378Cuando su plugin esté listo para compartir:

379 

3801. **Agregue documentación**: Incluya un `README.md` con instrucciones de instalación y uso

3812. **Elija una estrategia de versionado**: Decida si establecer una `version` explícita o confiar en la descrita en [gestión de versiones](/docs/es/plugins-reference#version-management).

3823. **Cree o use un marketplace**: Distribuya a través de [marketplaces de plugins](/docs/es/plugin-marketplaces) para instalación

3834. **Pruebe con otros**: Haga que los miembros del equipo prueben el plugin antes de una distribución más amplia

384 

385Una vez que su plugin esté en un marketplace, otros pueden instalarlo usando las instrucciones en [Descubrir e instalar plugins](/docs/es/discover-plugins). Para mantener un plugin interno en su equipo, aloje el marketplace en un [repositorio privado](/docs/es/plugin-marketplaces#private-repositories).

386 

387<h3 id="submit-your-plugin-to-the-community-marketplace">

388 Envíe su plugin al marketplace de la comunidad

389</h3>

390 

391Anthropic mantiene dos marketplaces públicos para plugins de Claude Code:

392 

393* **`claude-plugins-official`**: un conjunto curado de plugins mantenidos por Anthropic. Claude Code lo registra automáticamente la primera vez que inicia Claude Code de forma interactiva. Si ejecuta Claude Code de forma no interactiva antes de ese primer lanzamiento interactivo, o una [política de marketplace](/docs/es/plugin-marketplaces#managed-marketplace-restrictions) bloqueó un intento anterior, regístrelo usted mismo con `claude plugin marketplace add anthropics/claude-plugins-official`.

394* **`claude-community`**: el marketplace público de la comunidad donde los envíos de terceros llegan después de la revisión. Los usuarios lo agregan con `/plugin marketplace add anthropics/claude-plugins-community` e instalan desde él como `@claude-community`.

395 

396Para enviar su plugin para revisión del marketplace de la comunidad, use uno de los formularios en la aplicación:

397 

398* **claude.ai**: [claude.ai/admin-settings/directory/submissions/plugins/new](https://claude.ai/admin-settings/directory/submissions/plugins/new)

399* **Console**: [platform.claude.com/plugins/submit](https://platform.claude.com/plugins/submit)

400 

401El formulario de claude.ai requiere una organización de Team o Enterprise y acceso a la gestión de directorios; los Propietarios de la organización tienen este acceso por defecto. Los autores individuales que no forman parte de una organización de Team o Enterprise pueden usar el formulario de Console en su lugar.

402 

403Ejecute `claude plugin validate ./your-plugin` localmente antes de enviar, reemplazando `./your-plugin` con la ruta a su directorio de plugin. La canalización de revisión ejecuta la misma verificación en cada envío, junto con el análisis de seguridad automatizado. Cuando la validación pasa, Claude Code imprime `✔ Validation passed`, o `✔ Validation passed with warnings` si hay advertencias. Las advertencias no fallan la validación; agregue `--strict` para tratarlas como errores.

404 

405Los plugins aprobados se fijan a un SHA de commit específico en el catálogo [`anthropics/claude-plugins-community`](https://github.com/anthropics/claude-plugins-community), y CI actualiza el pin automáticamente a medida que envía nuevos commits a su repositorio. El catálogo público se sincroniza cada noche desde la canalización de revisión, por lo que puede haber un retraso entre la aprobación y que su plugin aparezca en `marketplace.json`. Para verificar si su plugin ya es instalable, busque su nombre en el [catálogo de la comunidad](https://github.com/anthropics/claude-plugins-community/blob/main/.claude-plugin/marketplace.json).

406 

407El marketplace oficial, `claude-plugins-official`, se cura por separado. Anthropic decide qué plugins incluir a su discreción. No hay un proceso de solicitud, y el formulario de envío no agrega plugins al marketplace oficial.

408 

409Si Anthropic lista su plugin en el marketplace oficial, su CLI puede solicitar a los usuarios de Claude Code que lo instalen. Consulte [Recomienda su plugin desde su CLI](/docs/es/plugin-hints).

410 

411<h2 id="convert-existing-configurations-to-plugins">

412 Convierta configuraciones existentes en plugins

413</h2>

414 

415Si ya tiene skills o hooks en su directorio `.claude/`, puede convertirlos en un plugin para compartir y distribución más fácil.

416 

417<h3 id="migration-steps">

418 Pasos de migración

419</h3>

420 

421<Steps>

422 <Step title="Cree la estructura del plugin">

423 Cree un nuevo directorio de plugin en la raíz de su proyecto, junto a la carpeta `.claude/` existente, para que las rutas relativas de `cp` en el siguiente paso se resuelvan:

424 

425 ```bash theme={null}

426 mkdir -p my-plugin/.claude-plugin

427 ```

428 

429 Cree el archivo de manifiesto en `my-plugin/.claude-plugin/plugin.json`:

430 

431 ```json my-plugin/.claude-plugin/plugin.json theme={null}

432 {

433 "name": "my-plugin",

434 "description": "Migrated from standalone configuration",

435 "version": "1.0.0"

436 }

437 ```

438 </Step>

439 

440 <Step title="Copie sus archivos existentes">

441 Copie cada directorio de configuración que tenga al directorio raíz del plugin. Es posible que no tenga los tres: si un directorio no existe, `cp` imprime `No such file or directory` y no copia nada, así que omita ese comando o ignore el error.

442 

443 ```bash theme={null}

444 cp -r .claude/commands my-plugin/

445 

446 cp -r .claude/agents my-plugin/

447 

448 cp -r .claude/skills my-plugin/

449 ```

450 

451 Su plugin ahora contiene copias de los directorios que tenía bajo `.claude/`. Ejecute `ls my-plugin` para confirmar: debería ver cada directorio que copió.

452 </Step>

453 

454 <Step title="Migre hooks">

455 Si tiene hooks en su configuración, cree un directorio de hooks:

456 

457 ```bash theme={null}

458 mkdir my-plugin/hooks

459 ```

460 

461 Cree `my-plugin/hooks/hooks.json` con su configuración de hooks. Copie el objeto `hooks` de su `.claude/settings.json` o `settings.local.json`, ya que el formato es el mismo. El comando recibe entrada de hook como JSON en stdin, así que use `jq` para extraer la ruta del archivo:

462 

463 ```json my-plugin/hooks/hooks.json theme={null}

464 {

465 "hooks": {

466 "PostToolUse": [

467 {

468 "matcher": "Write|Edit",

469 "hooks": [{ "type": "command", "command": "jq -r '.tool_input.file_path' | xargs npm run lint:fix" }]

470 }

471 ]

472 }

473 }

474 ```

475 </Step>

476 

477 <Step title="Pruebe su plugin migrado">

478 Cargue su plugin para verificar que todo funciona:

479 

480 ```bash theme={null}

481 claude --plugin-dir ./my-plugin

482 ```

483 

484 Pruebe cada componente: ejecute sus comandos, verifique que los agentes aparezcan en `/context`, y active el evento que cada hook coincida para confirmar su efecto. Claude Code registra qué hooks coincidieron y cómo salieron en el [registro de depuración](/docs/es/hooks#debug-hooks).

485 </Step>

486</Steps>

487 

488<h3 id="what-changes-when-migrating">

489 Qué cambia al migrar

490</h3>

491 

492| Independiente (`.claude/`) | Plugin |

493| :------------------------------------- | :------------------------------------------ |

494| Solo disponible en un proyecto | Se puede compartir a través de marketplaces |

495| Archivos en `.claude/commands/` | Archivos en `plugin-name/commands/` |

496| Hooks en `settings.json` | Hooks en `hooks/hooks.json` |

497| Debe copiar manualmente para compartir | Instalar con `/plugin install` |

498 

499<Note>

500 Después de migrar, elimine los archivos originales de `.claude/` para evitar duplicados. Las definiciones de `.claude/agents/` a nivel de proyecto y usuario anulan los agentes del plugin con el mismo nombre, por lo que la versión del plugin solo tiene efecto una vez que se eliminan los originales. Las skills del plugin se espacian de nombres como `/plugin-name:skill-name`, por lo que tanto el `/skill-name` original como la copia del plugin permanecen disponibles en lugar de que uno anule al otro.

501</Note>

502 

503<h2 id="next-steps">

504 Próximos pasos

505</h2>

506 

507Ahora que entiende el sistema de plugins de Claude Code, aquí hay caminos sugeridos para diferentes objetivos:

508 

509<h3 id="for-plugin-users">

510 Para usuarios de plugins

511</h3>

512 

513* [Descubrir e instalar plugins](/docs/es/discover-plugins): examine marketplaces e instale plugins

514* [Configure marketplaces de equipo](/docs/es/discover-plugins#configure-team-marketplaces): configure plugins a nivel de repositorio para su equipo

515 

516<h3 id="for-plugin-developers">

517 Para desarrolladores de plugins

518</h3>

519 

520* [Pruebe plugins con evals](/docs/es/plugin-evals): mida qué cambia su plugin y controle CI en ello

521* [Crear y distribuir un marketplace](/docs/es/plugin-marketplaces): empaquete y comparta sus plugins

522* [Referencia de plugins](/docs/es/plugins-reference): especificaciones técnicas completas

523* Profundice en componentes específicos del plugin:

524 * [Skills](/docs/es/skills): detalles de desarrollo de skills

525 * [Subagents](/docs/es/sub-agents): configuración y capacidades del agente

526 * [Hooks](/docs/es/hooks): manejo de eventos y automatización

527 * [MCP](/docs/es/mcp): integración de herramientas externas

plugins-reference.md +0 −1645 deleted

File Deleted View Diff

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Referencia de plugins

6 

7> Referencia técnica completa para el sistema de plugins de Claude Code, incluyendo esquemas, comandos CLI y especificaciones de componentes.

8 

9<Tip>

10 ¿Buscando instalar plugins? Consulte [Descubrir e instalar plugins](/docs/es/discover-plugins). Para crear plugins, consulte [Plugins](/docs/es/plugins). Para distribuir plugins, consulte [Mercados de plugins](/docs/es/plugin-marketplaces).

11</Tip>

12 

13Un **plugin** es un directorio independiente de componentes que extiende Claude Code con funcionalidad personalizada. Los componentes de plugins incluyen skills, agentes, hooks, servidores MCP, servidores LSP y monitores.

14 

15<h2 id="plugin-components-reference">

16 Referencia de componentes de plugins

17</h2>

18 

19<h3 id="skills">

20 Skills

21</h3>

22 

23Los plugins añaden skills a Claude Code, creando atajos `/name` que usted o Claude pueden invocar.

24 

25**Ubicación**: directorio `skills/` o `commands/` en la raíz del plugin, o un único archivo `SKILL.md` en la raíz del plugin

26 

27**Formato de archivo**: Los skills son directorios con `SKILL.md`; los commands son archivos markdown simples

28 

29**Estructura de skill**:

30 

31```text theme={null}

32skills/

33├── pdf-processor/

34│ ├── SKILL.md

35│ ├── reference.md (opcional)

36│ └── scripts/ (opcional)

37└── code-reviewer/

38 └── SKILL.md

39```

40 

41Los skills y commands se descubren automáticamente cuando se instala el plugin.

42 

43Si un plugin no tiene directorio `skills/` y no tiene campo manifest `skills`, un `SKILL.md` en la raíz del plugin se carga como un único skill. Establezca el campo frontmatter `name` para controlar el nombre de invocación del skill. Sin él, Claude Code recurre al nombre del directorio de instalación. Para un plugin [copiado en la caché](#plugin-caching-and-file-resolution), ese nombre es una cadena de versión que cambia en cada actualización. Para plugins que incluyen más de un skill, use el diseño de directorio `skills/` mostrado arriba.

44 

45En skills y commands de plugins, los campos frontmatter booleanos como `disable-model-invocation` aceptan `yes`, `no`, `on`, `off`, `1`, y `0` en cualquier caso de letra, además de `true` y `false`. Antes de v2.1.218, Claude Code reconocía solo `true` y `false`.

46 

47Para detalles completos, consulte [Skills](/docs/es/skills).

48 

49<h3 id="agents">

50 Agents

51</h3>

52 

53Los plugins pueden proporcionar subagentes especializados para tareas específicas que Claude puede invocar automáticamente cuando sea apropiado.

54 

55**Ubicación**: directorio `agents/` en la raíz del plugin

56 

57**Formato de archivo**: Archivos markdown que describen las capacidades del agente

58 

59**Estructura de agente**:

60 

61```markdown theme={null}

62name: agent-name

63description: En qué se especializa este agente y cuándo Claude debe invocarlo

64model: sonnet

65effort: medium

66maxTurns: 20

67disallowedTools: Write, Edit

68 

69Prompt del sistema detallado para el agente describiendo su rol, experiencia y comportamiento.

70```

71 

72<h4 id="plugin-agent-frontmatter">

73 Frontmatter de agente de plugin

74</h4>

75 

76Un archivo de agente de plugin utiliza los mismos [campos frontmatter que un archivo de subagente](/docs/es/sub-agents#supported-frontmatter-fields), excepto que Claude Code solo honra algunos de ellos cuando el agente proviene de un plugin:

77 

78* **Soportados**: `name`, `description`, `model`, `effort`, `maxTurns`, `tools`, `disallowedTools`, `skills`, `memory`, `background`, `omitClaudeMd`, `isolation`, `color`, y `experimental`. El único valor válido de `isolation` es `"worktree"`.

79* **No soportados, por razones de seguridad**: `hooks`, `mcpServers`, y `permissionMode`. Claude Code ignora estos cuando carga un agente desde un plugin. Para usarlos, copie el archivo del agente en `.claude/agents/` o `~/.claude/agents/`.

80* **No soportados**: `initialPrompt`.

81 

82Puede poner archivos de agente de plugin en subcarpetas de `agents/`. Claude Code [los carga recursivamente](/docs/es/sub-agents#choose-the-subagent-scope) y une el nombre del plugin, cada nombre de subcarpeta, y el nombre del archivo con dos puntos para formar el nombre con alcance del agente. Por ejemplo, `agents/review/security.md` en un plugin llamado `my-plugin` se carga como `my-plugin:review:security`. Dos configuraciones cambian ese nombre:

83 

84* Frontmatter `name`: reemplaza solo el nombre del archivo, así que `name: audit` en `agents/review/security.md` se carga como `my-plugin:review:audit`

85* Campo manifest [`agents`](#component-path-fields): un archivo que lista allí se carga sin nombres de subcarpeta, así que `"agents": "./custom/review/security.md"` se carga como `my-plugin:security`

86 

87Claude Code carga un agente de plugin incluso cuando su frontmatter no tiene `name` o no se analiza:

88 

89* Sin `name`: Claude Code nombra el agente según el archivo, así que `agents/reviewer.md` en un plugin llamado `my-plugin` se carga como `my-plugin:reviewer`

90* Frontmatter que no se analiza: Claude Code nombra el agente según el archivo, usa `Agent from my-plugin plugin` como su descripción, e ignora cada campo en el archivo

91 

92En contraste, Claude Code omite un archivo de agente de proyecto, usuario o administrado cuyo frontmatter no tiene `name` o no se analiza.

93 

94Para encontrar archivos en el directorio `agents/` predeterminado de un plugin cuyo frontmatter no se analiza, ejecute `claude plugin validate`. La ruta que pase depende de si el plugin tiene un manifest, y ambos ejemplos usan `./my-plugin` como directorio del plugin:

95 

96* Un plugin con manifest: `claude plugin validate ./my-plugin`

97* Un plugin sin manifest: `claude plugin validate ./my-plugin/agents`. Requiere Claude Code v2.1.233 o posterior.

98 

99Los agentes aparecen en la [typeahead de @-mention](/docs/es/sub-agents#invoke-subagents-explicitly) bajo su nombre con alcance, como `my-plugin:code-reviewer`, una vez que el plugin está habilitado.

100 

101Para detalles completos, consulte [Subagentes](/docs/es/sub-agents).

102 

103<h3 id="hooks">

104 Hooks

105</h3>

106 

107Los plugins pueden proporcionar manejadores de eventos que responden automáticamente a eventos de Claude Code.

108 

109**Ubicación**: `hooks/hooks.json` en la raíz del plugin, o en línea en plugin.json

110 

111**Formato**: Configuración JSON con coincidencias de eventos y acciones

112 

113`hooks/hooks.json` puede llevar una clave `$schema` de nivel superior que nombre una URL de JSON Schema para autocompletado y validación del editor. Claude Code ignora la clave al cargar.

114 

115**Configuración de hook**:

116 

117```json theme={null}

118{

119 "hooks": {

120 "PostToolUse": [

121 {

122 "matcher": "Write|Edit",

123 "hooks": [

124 {

125 "type": "command",

126 "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/format-code.sh"

127 }

128 ]

129 }

130 ]

131 }

132}

133```

134 

135Los hooks de plugins responden a los mismos eventos del ciclo de vida que los [hooks definidos por el usuario](/docs/es/hooks):

136 

137| Evento | Cuándo se dispara |

138| :-------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

139| `SessionStart` | Cuando una sesión comienza o se reanuda |

140| `Setup` | Cuando inicia Claude Code con `--init-only`, o con `--init` o `--maintenance` en modo `-p`. Para preparación única en CI o scripts |

141| `UserPromptSubmit` | Cuando envía un prompt, antes de que Claude lo procese |

142| `UserPromptExpansion` | Cuando un comando escrito por el usuario se expande en un prompt, antes de que llegue a Claude. Puede bloquear la expansión |

143| `PreToolUse` | Antes de que se ejecute una llamada a herramienta. Puede bloquearlo |

144| `PermissionRequest` | Cuando una llamada a herramienta necesita una decisión de permiso |

145| `PermissionDenied` | Cuando el modo automático deniega una llamada a herramienta, incluidas las denegaciones sin un veredicto del clasificador. Use JSON `hookSpecificOutput.retry: true` para indicar al modelo que puede reintentar la llamada a herramienta denegada. Claude Code ignora `retry` cuando el clasificador no produjo veredicto |

146| `PostToolUse` | Después de que una llamada a herramienta se ejecuta correctamente |

147| `PostToolUseFailure` | Después de que una llamada a herramienta falla |

148| `PostToolBatch` | Después de que se resuelve un lote completo de llamadas a herramientas paralelas, antes de la siguiente llamada al modelo |

149| `Notification` | Cuando Claude Code envía una notificación |

150| `MessageDisplay` | Mientras se muestra el texto del mensaje del asistente |

151| `SubagentStart` | Cuando se genera un subagente |

152| `SubagentStop` | Cuando un subagente finaliza |

153| `TaskCreated` | Cuando se está creando una tarea a través de `TaskCreate` |

154| `TaskCompleted` | Cuando se marca una tarea como completada |

155| `Stop` | Cuando Claude termina de responder |

156| `StopFailure` | Cuando el turno termina debido a un error de API |

157| `TeammateIdle` | Cuando un compañero de [equipo de agentes](/docs/es/agent-teams) está a punto de quedarse inactivo |

158| `InstructionsLoaded` | Cuando se carga un archivo CLAUDE.md o `.claude/rules/*.md` en el contexto. Se dispara al inicio de la sesión y cuando los archivos se cargan de forma diferida durante una sesión |

159| `ConfigChange` | Cuando un archivo de configuración cambia durante una sesión |

160| `CwdChanged` | Cuando el directorio de trabajo cambia, por ejemplo cuando Claude ejecuta un comando `cd`. Útil para la gestión reactiva del entorno con herramientas como direnv |

161| `DirectoryAdded` | Cuando se agrega un directorio de trabajo a mitad de sesión a través de `/add-dir` o la solicitud de control `register_repo_root` del SDK |

162| `FileChanged` | Cuando un archivo observado cambia en el disco. El campo `matcher` especifica qué nombres de archivo observar |

163| `WorktreeCreate` | Cuando se está creando un worktree a través de `--worktree`, `isolation: "worktree"`, o para una sesión en segundo plano. Reemplaza el comportamiento predeterminado de git |

164| `WorktreeRemove` | Cuando se está eliminando un worktree al salir de la sesión, cuando un subagente finaliza, o cuando elimina una sesión en segundo plano |

165| `PreCompact` | Antes de la compactación de contexto |

166| `PostCompact` | Después de que se completa la compactación de contexto |

167| `PreModelSwitch` | Antes de que Claude Code aplique un cambio de modelo que usted o un cliente solicitó. Puede bloquear el cambio |

168| `PostModelSwitch` | Después de que cambia el modelo de la sesión, incluidos los cambios que Claude Code realiza por su cuenta, como restaurar el modelo cuando reanuda una sesión |

169| `Elicitation` | Cuando un servidor MCP solicita entrada del usuario durante una llamada a herramienta |

170| `ElicitationResult` | Después de que un usuario responde a una solicitud de MCP, antes de que la respuesta se envíe de vuelta al servidor |

171| `SessionEnd` | Cuando una sesión termina |

172 

173**Tipos de hook**:

174 

175* `command`: ejecutar comandos shell o scripts

176* `http`: enviar el JSON del evento como una solicitud POST a una URL

177* `mcp_tool`: llamar a una herramienta en un [servidor MCP](/docs/es/mcp) configurado

178* `prompt`: evaluar un prompt con un LLM (usa el marcador de posición `$ARGUMENTS` para contexto)

179* `agent`: ejecutar un verificador agente con herramientas para tareas de verificación complejas

180 

181Los hooks que apuntan al [servidor MCP agrupado](#mcp-servers) propio del plugin deben usar sus nombres con alcance. Los coincidentes de herramientas y campos `if` toman el nombre de herramienta con alcance `mcp__plugin_<plugin-name>_<server-name>__<tool>`, y el campo `server` de un hook `mcp_tool` toma `plugin:<plugin-name>:<server-name>`. Un coincidente escrito contra la clave del servidor desnuda nunca se dispara. Consulte [Match MCP tools](/docs/es/hooks#match-mcp-tools) y [Plugin-provided MCP servers](/docs/es/mcp#plugin-provided-mcp-servers).

182 

183<h3 id="mcp-servers">

184 MCP servers

185</h3>

186 

187Los plugins pueden agrupar servidores del Protocolo de Contexto de Modelo (MCP) para conectar Claude Code con herramientas y servicios externos.

188 

189**Ubicación**: `.mcp.json` en la raíz del plugin, o en línea en plugin.json

190 

191**Formato**: Configuración estándar de servidor MCP

192 

193**Configuración de servidor MCP**:

194 

195```json theme={null}

196{

197 "mcpServers": {

198 "plugin-database": {

199 "command": "${CLAUDE_PLUGIN_ROOT}/servers/db-server",

200 "args": ["--config", "${CLAUDE_PLUGIN_ROOT}/config.json"],

201 "env": {

202 "DB_PATH": "${CLAUDE_PLUGIN_ROOT}/data"

203 }

204 },

205 "plugin-api-client": {

206 "command": "npx",

207 "args": ["@company/mcp-server", "--plugin-mode"]

208 }

209 }

210}

211```

212 

213**Comportamiento de integración**:

214 

215* Los servidores MCP de plugins se inician automáticamente cuando el plugin está habilitado

216* Los servidores aparecen como herramientas MCP estándar en el kit de herramientas de Claude

217* Los servidores de plugins se pueden configurar independientemente de los servidores MCP del usuario

218* Si ejecuta [`/reload-plugins`](/docs/es/discover-plugins#apply-plugin-changes-without-restarting) a mitad de sesión, Claude Code mantiene las conexiones activas de servidores cuya configuración no ha cambiado

219 

220<h3 id="lsp-servers">

221 LSP servers

222</h3>

223 

224<Tip>

225 ¿Buscando usar plugins LSP? Instálelos desde el marketplace oficial: busque "lsp" en la pestaña Discover de `/plugin`. Esta sección documenta cómo crear plugins LSP para lenguajes no cubiertos por el marketplace oficial.

226</Tip>

227 

228Los plugins pueden proporcionar servidores del [Protocolo de Servidor de Lenguaje](https://microsoft.github.io/language-server-protocol/) (LSP) para dar a Claude [inteligencia de código en tiempo real](/docs/es/discover-plugins#code-intelligence) mientras trabaja en su base de código.

229 

230**Ubicación**: `.lsp.json` en la raíz del plugin, o en línea en `plugin.json`

231 

232**Formato**: Configuración JSON que asigna nombres de servidores de lenguaje a sus configuraciones

233 

234**Formato de archivo `.lsp.json`**:

235 

236```json theme={null}

237{

238 "go": {

239 "command": "gopls",

240 "args": ["serve"],

241 "extensionToLanguage": {

242 ".go": "go"

243 }

244 }

245}

246```

247 

248**En línea en `plugin.json`**:

249 

250```json theme={null}

251{

252 "name": "my-plugin",

253 "lspServers": {

254 "go": {

255 "command": "gopls",

256 "args": ["serve"],

257 "extensionToLanguage": {

258 ".go": "go"

259 }

260 }

261 }

262}

263```

264 

265**Campos requeridos:**

266 

267| Campo | Descripción |

268| :-------------------- | :---------------------------------------------------------- |

269| `command` | El binario LSP a ejecutar (debe estar en PATH) |

270| `extensionToLanguage` | Asigna extensiones de archivo a identificadores de lenguaje |

271 

272**Campos opcionales:**

273 

274| Campo | Descripción |

275| :---------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

276| `args` | Argumentos de línea de comandos para el servidor LSP |

277| `transport` | Transporte de comunicación: `stdio` (predeterminado) o `socket`. Claude Code acepta `socket` pero ejecuta cada servidor sobre stdio, por lo que las reglas del protocolo stdout se aplican a todos los servidores |

278| `env` | Variables de entorno a establecer al iniciar el servidor |

279| `initializationOptions` | Opciones pasadas al servidor durante la inicialización |

280| `settings` | Configuración pasada vía `workspace/didChangeConfiguration` |

281| `workspaceFolder` | Ruta de carpeta de espacio de trabajo para el servidor |

282| `startupTimeout` | Tiempo máximo para esperar el inicio del servidor (milisegundos) |

283| `shutdownTimeout` | Tiempo máximo para esperar el apagado elegante (milisegundos). Cuando se agota el tiempo de espera, Claude Code termina el proceso del servidor. Cuando no se establece, no se aplica tiempo de espera |

284| `restartOnCrash` | Si reiniciar el servidor después de que falle. Por defecto es `true`. Establezca en `false` para dejar un servidor fallido detenido en lugar de reiniciarlo |

285| `maxRestarts` | Número máximo de intentos de reinicio antes de rendirse |

286| `diagnostics` | Si insertar diagnósticos en el contexto de Claude después de ediciones (por defecto `true`). Establezca en `false` para mantener la navegación de código pero suprimir la inyección automática de diagnósticos. |

287 

288`restartOnCrash` y `shutdownTimeout` requieren Claude Code v2.1.205 o posterior. Antes de v2.1.205, el esquema de configuración aceptaba ambas opciones pero establecer cualquiera de ellas causaba que Claude Code omitiera ese servidor LSP completamente al inicio, con la razón visible solo en la salida de `claude --debug`.

289 

290**Múltiples servidores para la misma extensión**: cuando más de un servidor LSP habilitado declara la misma extensión de archivo en `extensionToLanguage`, ya sea que los servidores provengan de un plugin o de diferentes plugins, el primer servidor registrado maneja archivos con esa extensión y los otros nunca se inician. La interfaz `/plugin` muestra una advertencia nombrando el plugin cuyo servidor está activo.

291 

292**Servidores que fallan al inicializarse**: Claude Code omite un servidor cuya configuración es inválida, por ejemplo uno que falta `command` o `extensionToLanguage`, y los otros servidores configurados aún se inician. Ejecute `claude --debug` para ver por qué se omitió un servidor.

293 

294Un servidor omitido no reclama sus extensiones de archivo, por lo que otro servidor válido que declare la misma extensión, del mismo plugin o de un plugin diferente, aún maneja esos archivos.

295 

296**Envíe la salida de registro a stderr, no a stdout**: Claude Code lee el stdout de un servidor solo como mensajes de protocolo, y acepta encabezados de mensaje de hasta 64 KiB y un cuerpo de mensaje de hasta 32 MiB. Claude Code desconecta un servidor que excede cualquiera de los límites o escribe salida que no es de protocolo a stdout, y cuenta la desconexión como un fallo para `restartOnCrash` y `maxRestarts`. Cuando ejecuta con `--debug`, Claude Code escribe un error nombrando la causa en el registro de depuración.

297 

298<Warning>

299 **Debe instalar el binario del servidor de lenguaje por separado.** Los plugins LSP configuran cómo Claude Code se conecta a un servidor de lenguaje, pero no incluyen el servidor en sí. Si ve `Executable not found in $PATH` en la pestaña Errores de `/plugin`, instale el binario requerido para su lenguaje.

300</Warning>

301 

302**Plugins LSP disponibles:**

303 

304| Plugin | Servidor de lenguaje | Comando de instalación |

305| :------------------ | :------------------------- | :------------------------------------------------------------------------------------------- |

306| `pyright-lsp` | Pyright (Python) | `pip install pyright` o `npm install -g pyright` |

307| `typescript-lsp` | TypeScript Language Server | `npm install -g typescript-language-server typescript` |

308| `rust-analyzer-lsp` | rust-analyzer | [Ver instalación de rust-analyzer](https://rust-analyzer.github.io/manual.html#installation) |

309 

310Instale el servidor de lenguaje primero, luego instale el plugin desde el marketplace.

311 

312<h3 id="monitors">

313 Monitors

314</h3>

315 

316Los plugins pueden declarar monitores de fondo que Claude Code inicia automáticamente cuando el plugin está activo. Cada monitor ejecuta un comando shell durante la vida útil de la sesión y entrega cada línea de stdout a Claude como una notificación, para que Claude pueda reaccionar a entradas de registro, cambios de estado, o eventos sondeados sin que se le pida que inicie la observación por sí mismo.

317 

318Los monitores de plugins usan el mismo mecanismo que la [herramienta Monitor](/docs/es/tools-reference#monitor-tool) y comparten sus restricciones de disponibilidad. Se ejecutan solo en sesiones CLI interactivas, se ejecutan sin sandbox al mismo nivel de confianza que los [hooks](#hooks), y se omiten en hosts donde la herramienta Monitor no está disponible.

319 

320**Ubicación**: `monitors/monitors.json` en la raíz del plugin, o en línea en `plugin.json`

321 

322**Formato**: Matriz JSON de entradas de monitor

323 

324El siguiente `monitors/monitors.json` observa un punto final de estado de implementación y un registro de errores local:

325 

326```json theme={null}

327[

328 {

329 "name": "deploy-status",

330 "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/poll-deploy.sh",

331 "description": "Cambios de estado de implementación"

332 },

333 {

334 "name": "error-log",

335 "command": "tail -F ./logs/error.log",

336 "description": "Registro de errores de aplicación",

337 "when": "on-skill-invoke:debug"

338 }

339]

340```

341 

342Para declarar monitores en línea, establezca `experimental.monitors` en `plugin.json` en la misma matriz. Para cargar desde una ruta no predeterminada, establezca `experimental.monitors` en una cadena de ruta relativa como `"./config/monitors.json"`. Los monitores son un [componente experimental](#experimental-components).

343 

344**Campos requeridos:**

345 

346| Campo | Descripción |

347| :------------ | :------------------------------------------------------------------------------------------------------------------------------- |

348| `name` | Identificador único dentro del plugin. Previene procesos duplicados cuando el plugin se recarga o se invoca una skill nuevamente |

349| `command` | Comando shell ejecutado como un proceso de fondo persistente en el directorio de trabajo de la sesión |

350| `description` | Resumen breve de lo que se está observando. Se muestra en el panel de tareas y en resúmenes de notificaciones |

351 

352**Campos opcionales:**

353 

354| Campo | Descripción |

355| :----- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

356| `when` | Controla cuándo se inicia el monitor. `"always"` lo inicia al inicio de la sesión y en la recarga del plugin, y es el predeterminado. `"on-skill-invoke:<skill-name>"` lo inicia la primera vez que se envía la skill nombrada en este plugin |

357 

358El valor `command` soporta las [sustituciones de ruta](#environment-variables) `${CLAUDE_PLUGIN_ROOT}`, `${CLAUDE_PLUGIN_DATA}`, y `${CLAUDE_PROJECT_DIR}`, más cualquier `${ENV_VAR}` del entorno. Prefije el comando con `cd "${CLAUDE_PLUGIN_ROOT}" && ` si el script necesita ejecutarse desde el directorio propio del plugin.

359 

360Un `command` de monitor no puede referenciar valores [`${user_config.*}`](#user-configuration). El comando se ejecuta a través de un shell, por lo que Claude Code rechaza el monitor con un [error](/docs/es/errors#plugin-command-references-user-config) en lugar de sustituir el valor. Los procesos de monitor no reciben variables de entorno `CLAUDE_PLUGIN_OPTION_<KEY>`, así que haga que el script de monitor lea el valor de un archivo de configuración que posee.

361 

362Si deshabilita un plugin a mitad de sesión, Claude Code no detiene los monitores que ya se están ejecutando; se detienen cuando termina la sesión.

363 

364<h3 id="themes">

365 Themes

366</h3>

367 

368Los plugins pueden enviar temas de color que aparecen en `/theme` junto a los presets integrados y los temas locales del usuario. Un tema es un archivo JSON en `themes/` con un preset `base` y un mapa disperso `overrides` de tokens de color. Los temas son un [componente experimental](#experimental-components).

369 

370```json theme={null}

371{

372 "name": "Dracula",

373 "base": "dark",

374 "overrides": {

375 "claude": "#bd93f9",

376 "error": "#ff5555",

377 "success": "#50fa7b"

378 }

379}

380```

381 

382Cuando un usuario selecciona un tema de plugin, Claude Code guarda `custom:<plugin-name>:<slug>` en su configuración. Los temas de plugins son de solo lectura: cuando un usuario presiona `Ctrl+E` en uno en `/theme`, Claude Code lo copia en `~/.claude/themes/` para que puedan editar la copia.

383 

384***

385 

386<h2 id="plugin-installation-scopes">

387 Alcances de instalación de plugins

388</h2>

389 

390Cuando instala un plugin, elige un **alcance** que determina dónde está disponible el plugin y quién más puede usarlo:

391 

392| Alcance | Archivo de configuración | Caso de uso |

393| :-------- | :--------------------------------------- | :---------------------------------------------------------------------------------------------------- |

394| `user` | `~/.claude/settings.json` | Plugins personales disponibles en todos los proyectos (predeterminado) |

395| `project` | `.claude/settings.json` | Plugins de equipo compartidos a través del control de versiones |

396| `local` | `.claude/settings.local.json` | Plugins específicos del proyecto, ignorados por git cuando Claude Code guarda una configuración en él |

397| `managed` | [Managed settings](/docs/es/managed-settings) | Plugins administrados (solo lectura, solo actualizar) |

398 

399Los plugins utilizan el mismo sistema de alcances que otras configuraciones de Claude Code. Para instrucciones de instalación y banderas de alcance, consulte [Install plugins](/docs/es/discover-plugins#install-plugins). Para una explicación completa de los alcances, consulte [Configuration scopes](/docs/es/settings#where-settings-live).

400 

401***

402 

403<h2 id="skills-directory-plugins">

404 Plugins de directorio de skills

405</h2>

406 

407Cualquier carpeta bajo un directorio de skills que contenga un manifiesto `.claude-plugin/plugin.json` se carga como un plugin llamado `<name>@skills-dir` en la siguiente sesión, sin marketplace ni paso de instalación. Cree uno con [`plugin init`](#plugin-init). A diferencia de una instalación de marketplace copiada, el plugin se descubre en su lugar en lugar de copiarse en la caché de plugins.

408 

409Un árbol de directorio de skills admite tres cosas distintas:

410 

411| Lo que tiene | Qué es |

412| :-------------------------------------------- | :------------------------------------------------------------------------------------- |

413| `<skills-dir>/foo/SKILL.md` sin manifiesto | Un [skill](/docs/es/skills) simple llamado `foo` |

414| `<skills-dir>/foo/.claude-plugin/plugin.json` | Un plugin `foo@skills-dir`, que puede agrupar sus propios skills, agentes, hooks y más |

415| `<plugin>/skills/bar/SKILL.md` | Un skill `bar` empaquetado dentro de un plugin |

416 

417<h3 id="choose-where-the-plugin-loads-from">

418 Elija de dónde se carga el plugin

419</h3>

420 

421| Directorio de skills | Alcance | Se carga |

422| :---------------------- | :------- | :------------------------------------------------------------------------------------------------------------------------------------------------ |

423| `~/.claude/skills/` | personal | En cada proyecto, ya que la ubicación es solo suya |

424| `<cwd>/.claude/skills/` | proyecto | Solo después de que acepte el [diálogo de confianza](/docs/es/permissions#what-runs-before-you-trust-a-folder) del espacio de trabajo para esa carpeta |

425 

426Un plugin de alcance de proyecto se verifica en el repositorio y llega a cada colaborador que lo clona. Debido a que ese contenido proviene del repositorio en lugar de provenir de usted, se carga solo después de la misma puerta de confianza que rige las reglas de permiso de proyecto en `.claude/settings.json`, por lo que confiar en una carpeta principal o ejecutar con `-p` no es suficiente, y los componentes que ejecutan código están restringidos aún más:

427 

428* Los servidores MCP que declara pasan por la [misma aprobación por servidor](/docs/es/mcp) que un `.mcp.json` de proyecto

429* Los servidores LSP se inician solo después de que confía en el espacio de trabajo

430* [Los monitores de fondo](#monitors) no se cargan

431 

432Los plugins de alcance personal no tienen ninguna de estas restricciones.

433 

434<Warning>

435 Los plugins `@skills-dir` de alcance de proyecto se cargan solo desde `.claude/skills/` del [directorio de trabajo principal](/docs/es/permissions#working-directories) de la sesión. No [suben hasta la raíz del repositorio](/docs/es/skills#discovery-from-parent-and-nested-directories) de la manera que lo hacen los skills y comandos simples, por lo que lanzar desde un subdirectorio pierde un plugin que vive en la raíz del repositorio. Inicie desde la raíz del repositorio, o [mueva la sesión allí con `/cd`](/docs/es/permissions#move-the-session-to-another-directory) en v2.1.246 o posterior.

436</Warning>

437 

438<h3 id="edit-reload-and-disable-a-skills-directory-plugin">

439 Edite, recargue y deshabilite un plugin de directorio de skills

440</h3>

441 

442Los cambios que realiza en el `SKILL.md` de un skill surten efecto inmediatamente en la sesión actual. Los cambios en otros componentes del plugin, como `hooks/`, `.mcp.json`, `agents/` y `output-styles/`, no lo hacen. Ejecute `/reload-plugins` o reinicie Claude Code para aplicarlos. Consulte [Detección de cambios en vivo](/docs/es/skills#live-change-detection).

443 

444Para dejar de cargar un plugin de directorio de skills, elimine su carpeta o deshabilítelo por nombre. No hay un paso `uninstall` porque nada se instaló desde un marketplace.

445 

446```bash theme={null}

447claude plugin disable my-tool@skills-dir

448```

449 

450***

451 

452<h2 id="synced-plugins">

453 Plugins sincronizados desde claude.ai

454</h2>

455 

456Claude Code carga los plugins habilitados para su cuenta de claude.ai, incluidos los plugins que su organización activa para sus miembros, junto con los plugins que instala desde marketplaces. Los descarga en `~/.claude/plugins/synced/` y los carga como `<name>@synced`, sin marketplace ni registro de instalación. Un plugin sincronizado se ejecuta con la misma confianza que un plugin de marketplace que instaló: sus skills, agentes, hooks, servidores MCP y servidores LSP se cargan todos.

457 

458Dónde Claude Code sincroniza estos plugins depende de la sesión:

459 

460* En [Cowork](https://claude.com/product/cowork) y [sesiones en la nube](/docs/es/cloud-environments#what-carries-over-from-your-setup), Claude Code los descarga en el entorno propio de la sesión cuando la sesión comienza. Antes de v2.1.239, Claude Code cargaba estos plugins como `<name>@inline`, la identidad que usan los plugins de `--plugin-dir`.

461* En sesiones de terminal donde inicia sesión con su cuenta de claude.ai, Claude Code verifica su cuenta una vez cada vez que comienza, luego descarga plugins nuevos y actualizados y elimina los que usted u su organización desactivaron, todo en segundo plano. La sincronización en sesiones de terminal requiere Claude Code v2.1.273 o posterior.

462 

463La verificación de inicio se ejecuta en segundo plano, por lo que puede terminar después de que su sesión haya comenzado. Cuando agrega, actualiza o elimina un plugin sincronizado en una sesión interactiva, Claude Code muestra `Plugins changed. Run /reload-plugins to activate.` Ejecute [`/reload-plugins`](/docs/es/discover-plugins#apply-plugin-changes-without-restarting) para cargar el cambio en esa sesión, o déjelo para la próxima vez que inicie Claude Code. Si habilita un plugin en claude.ai mientras una sesión se está ejecutando, Claude Code lo descarga la próxima vez que comienza.

464 

465La sincronización de plugins en sesiones de terminal se ejecuta bajo las mismas condiciones de inicio de sesión que [skills sincronizados desde claude.ai](/docs/es/skills#where-synced-skills-load). También necesita un inicio de sesión que otorgue a Claude Code acceso a los plugins de su cuenta.

466 

467Un inicio de sesión de una versión anterior de Claude Code obtiene acceso a plugins la próxima vez que Claude Code renueva ese inicio de sesión en segundo plano, dentro de unas pocas horas, o de inmediato si ejecuta `/login` nuevamente. La sincronización de plugins comienza la próxima vez que inicia Claude Code después de eso.

468 

469`claude plugin list` muestra plugins sincronizados bajo un encabezado `Synced from claude.ai`, y la pestaña **Installed** de `/plugin` los enumera con `synced` como su fuente. Administre un plugin sincronizado por el ID `<name>@synced` que imprime `claude plugin list`:

470 

471* **Desactivar uno**: ejecute `claude plugin disable <name>@synced`, o desactívelo desde la pestaña **Installed** de `/plugin`. Claude Code guarda la opción como `"<name>@synced": false` en su [`enabledPlugins`](/docs/es/settings-reference#enabledplugins) a nivel de usuario. Para volver a activar el plugin, ejecute `claude plugin enable <name>@synced`.

472* **Mantener uno fuera en todas partes**: [desactívelo para su cuenta de claude.ai](/docs/es/desktop#extend-claude-code). Para mantenerlo fuera de un proyecto en todos los entornos, establezca `"<name>@synced": false` bajo `enabledPlugins` en el `.claude/settings.json` comprometido de ese proyecto.

473* **Administre el plugin en claude.ai**: `claude plugin install`, `update` y `uninstall` no se aplican a un plugin sincronizado. Claude Code descarga las actualizaciones del plugin en la próxima sincronización. Para eliminar uno, desactive el plugin para su cuenta de claude.ai, y Claude Code lo elimina en la próxima sincronización.

474* **Deje de sincronizar en una máquina**: establezca [`syncClaudeAiPlugins`](/docs/es/settings-reference#syncclaudeaiplugins) en `false` en su configuración de usuario. Claude Code deja de descargar, y la próxima vez que comienza mueve los plugins que ya sincronizó a `~/.claude/plugins/.trash/` y ya no los carga. Su organización puede establecer la misma clave en [configuración administrada](/docs/es/managed-settings), o desactivar Skills en claude.ai, lo que también detiene la sincronización de plugins.

475 

476No puede desactivar un plugin que su organización marca como requerido en claude.ai. Claude Code lo carga incluso si lo desactivó anteriormente, y `claude plugin disable` rechaza con `Plugin "<name>@synced" is required by your organization and can't be disabled here. Contact your admin to change it.` En `claude plugin list`, estos plugins están marcados como `required by your org`.

477 

478Cuando un plugin habilitado de cualquier otra fuente coincide con el nombre de un plugin sincronizado, Claude Code carga ese plugin e informa que la copia sincronizada no se cargó. Otras fuentes incluyen instalaciones de marketplace, [plugins del directorio de skills](#skills-directory-plugins), plugins de `--plugin-dir` y plugins integrados en Claude Code. Para usar la copia de claude.ai en su lugar, desactive su propia copia. Antes de v2.1.239, Claude Code cargaba la copia sincronizada en lugar de una instalación de marketplace con el mismo nombre.

479 

480***

481 

482<h2 id="plugin-manifest-schema">

483 Esquema de manifiesto de plugins

484</h2>

485 

486El archivo `.claude-plugin/plugin.json` define los metadatos y la configuración de su plugin.

487 

488El manifiesto es opcional. Si se omite, Claude Code detecta automáticamente componentes en [ubicaciones predeterminadas](#file-locations-reference) y deriva el nombre del plugin del nombre del directorio. Use un manifiesto cuando necesite proporcionar metadatos o rutas de componentes personalizadas.

489 

490<h3 id="complete-schema">

491 Esquema completo

492</h3>

493 

494```json theme={null}

495{

496 "name": "plugin-name",

497 "displayName": "Plugin Name",

498 "version": "1.2.0",

499 "description": "Brief plugin description",

500 "author": {

501 "name": "Author Name",

502 "email": "author@example.com",

503 "url": "https://github.com/author"

504 },

505 "homepage": "https://docs.example.com/plugin",

506 "repository": "https://github.com/author/plugin",

507 "license": "MIT",

508 "keywords": ["keyword1", "keyword2"],

509 "metadata": { "catalogId": "cat-123", "tier": "pro" },

510 "skills": "./custom/skills/",

511 "commands": ["./custom/commands/special.md"],

512 "agents": ["./custom/agents/reviewer.md"],

513 "hooks": "./config/hooks.json",

514 "mcpServers": "./mcp-config.json",

515 "outputStyles": "./styles/",

516 "lspServers": "./.lsp.json",

517 "experimental": {

518 "themes": "./themes/",

519 "monitors": "./monitors.json",

520 "evals": "quality/evals"

521 },

522 "dependencies": [

523 "helper-lib",

524 { "name": "secrets-vault", "version": "~2.1.0" }

525 ]

526}

527```

528 

529<h3 id="required-fields">

530 Campos requeridos

531</h3>

532 

533Si incluye un manifiesto, `name` es el único campo requerido.

534 

535| Campo | Tipo | Descripción | Ejemplo |

536| :----- | :----- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------- |

537| `name` | string | Identificador único en kebab-case, sin espacios, caracteres de control o caracteres de formato bidireccional. Cuando una [entrada de marketplace](/docs/es/plugin-marketplaces#plugin-entries) lista el plugin bajo un nombre diferente, el nombre de la entrada de marketplace es lo que `enabledPlugins` y `/plugin` usan | `"deployment-tools"` |

538 

539Este nombre se utiliza para espacios de nombres de componentes. Por ejemplo, en la interfaz de usuario, el agente `agent-creator` para el plugin con nombre `plugin-dev` aparecerá como `plugin-dev:agent-creator`.

540 

541<h3 id="unrecognized-fields">

542 Campos no reconocidos

543</h3>

544 

545Claude Code ignora los campos de nivel superior que no reconoce. Puede mantener metadatos de otro ecosistema en `plugin.json` y el plugin aún se carga. Esto hace que sea práctico mantener un manifiesto que funcione como manifiesto de extensión de VS Code o Cursor, un `package.json` de npm, o un manifiesto de paquete MCPB/DXT.

546 

547`claude plugin validate` reporta campos no reconocidos como advertencias, no como errores. Si un campo está a uno o dos caracteres de uno reconocido, la advertencia sugiere el nombre probable previsto. Un plugin con solo advertencias de campos no reconocidos aún pasa la validación y se carga en tiempo de ejecución.

548 

549La forma en que Claude Code maneja un campo reconocido cuyo valor tiene el tipo incorrecto depende del campo:

550 

551* **La mayoría de campos**: el plugin no se carga. Por ejemplo, un valor `keywords` que es una cadena en lugar de un array es un error de carga, y `claude plugin validate` lo reporta como tal.

552* **`experimental` y `metadata`**: Claude Code ignora un valor que no es un objeto, y `claude plugin validate` reporta una advertencia.

553 

554Pase `--strict` para tratar las advertencias como errores. Úselo en CI para detectar un nombre de campo mal escrito o un campo dejado de otra herramienta de manifiesto antes de publicar, aunque el plugin se cargue en tiempo de ejecución.

555 

556```bash theme={null}

557claude plugin validate ./my-plugin --strict

558```

559 

560<h3 id="metadata-fields">

561 Campos de metadatos

562</h3>

563 

564| Campo | Tipo | Descripción | Ejemplo |

565| :--------------- | :------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------- |

566| `$schema` | string | URL de JSON Schema para autocompletado y validación del editor. Claude Code ignora este campo en tiempo de carga. | `"https://json.schemastore.org/claude-code-plugin-manifest.json"` |

567| `displayName` | string | Nombre legible por humanos mostrado en el selector `/plugin` y otras superficies de interfaz de usuario. Para un plugin instalado desde marketplace, un `displayName` en la [entrada de marketplace](/docs/es/plugin-marketplaces#optional-plugin-fields) tiene precedencia sobre este valor. Cuando no se establece un nombre de visualización en ninguno de los dos lugares, los usuarios ven `name`. A diferencia de `name`, puede contener espacios y cualquier mayúscula. No se utiliza para espacios de nombres o búsqueda. | `"Deployment Tools"` |

568| `version` | string | Opcional. Versión semántica. Establecer esto fija el plugin a esa cadena de versión, por lo que los usuarios solo reciben actualizaciones cuando la incrementa, excepto para una [`command` source](/docs/es/plugin-marketplaces#command-sources) o un plugin [cargado en lugar](#plugin-caching-and-file-resolution); vea [Gestión de versiones](#version-management). Si también se establece en la entrada de marketplace, `plugin.json` gana. Si se omite, la versión proviene de la siguiente fuente en [Gestión de versiones](#version-management). | `"2.1.0"` |

569| `description` | string | Breve explicación del propósito del plugin | `"Deployment automation tools"` |

570| `author` | object | Información del autor | `{"name": "Dev Team", "email": "dev@company.com"}` |

571| `homepage` | string | URL de documentación | `"https://docs.example.com"` |

572| `repository` | string | URL del código fuente | `"https://github.com/user/plugin"` |

573| `license` | string | Identificador de licencia | `"MIT"`, `"Apache-2.0"` |

574| `keywords` | array | Etiquetas de descubrimiento | `["deployment", "ci-cd"]` |

575| `metadata` | object | Objeto de forma libre para sus propios datos, como campos de derechos o catálogo. Claude Code no lo lee, por lo que los valores nunca afectan el comportamiento del plugin. Claude Code ignora un valor que no es un objeto, y `claude plugin validate` lo reporta como una advertencia. Antes de v2.1.222, Claude Code trataba la clave como un [campo no reconocido](#unrecognized-fields). | `{"catalogId": "cat-123"}` |

576| `defaultEnabled` | boolean | Si el plugin comienza en un estado habilitado cuando el usuario no ha establecido uno. Por defecto es `true`. Vea [Habilitación predeterminada](#default-enablement). | `false` |

577 

578<h3 id="default-enablement">

579 Habilitación predeterminada

580</h3>

581 

582Establezca `defaultEnabled: false` en `plugin.json` para enviar un plugin que se instale deshabilitado. El usuario lo activa con `claude plugin enable <plugin>` o la interfaz `/plugin`. Úselo para plugins que agregan costo o alcance en el que un usuario debe optar, como uno que se conecta a un servicio externo.

583 

584`defaultEnabled` es la alternativa cuando nada más ha decidido el estado del plugin. La configuración del usuario y un requisito de dependencia tienen precedencia sobre ella:

585 

586* **La configuración del usuario**: una entrada para el plugin en `enabledPlugins` en cualquier ámbito de configuración. Una vez escrita, persiste en actualizaciones y reinstalaciones de plugins, por lo que cambiar `defaultEnabled` en una versión posterior no invierte un usuario existente.

587* **Un requisito de dependencia**: cuando un plugin es requerido por otro que está activo, Claude Code escribe `true` para él en tiempo de instalación o habilitación. Eso le da una configuración explícita, por lo que su propio valor predeterminado ya no se aplica. Vea [Habilitar o deshabilitar un plugin con dependencias](/docs/es/plugin-dependencies#enable-or-disable-a-plugin-with-dependencies).

588 

589El mismo campo puede aparecer en la entrada de marketplace de un plugin, donde tiene precedencia sobre el valor en `plugin.json`. Vea [Campos de plugin opcionales](/docs/es/plugin-marketplaces#optional-plugin-fields).

590 

591<h3 id="component-path-fields">

592 Campos de ruta de componentes

593</h3>

594 

595| Campo | Tipo | Descripción | Ejemplo |

596| :---------------------- | :-------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------- |

597| `skills` | string\|array | Directorios de skills personalizados que contienen `<name>/SKILL.md`. Se agrega al escaneo predeterminado `skills/`. Vea [Reglas de comportamiento de ruta](#path-behavior-rules) para la excepción de raíz de marketplace | `"./custom/skills/"` |

598| `commands` | string\|array | Archivos de skills `.md` planos personalizados o directorios (reemplaza el `commands/` predeterminado) | `"./custom/cmd.md"` o `["./cmd1.md"]` |

599| `agents` | string\|array | Archivos de agentes personalizados (reemplaza el `agents/` predeterminado) | `"./custom/agents/reviewer.md"` |

600| `workflows` | string\|array | Archivos de scripts de [workflow](/docs/es/workflows) personalizados o directorios (reemplaza el `workflows/` predeterminado) | `"./custom/workflows/"` |

601| `hooks` | string\|array\|object | Rutas de configuración de hooks o configuración en línea | `"./my-extra-hooks.json"` |

602| `mcpServers` | string\|array\|object | Rutas de configuración de MCP o configuración en línea | `"./my-extra-mcp-config.json"` |

603| `outputStyles` | string\|array | Archivos/directorios de estilo de salida personalizados (reemplaza el `output-styles/` predeterminado) | `"./styles/"` |

604| `lspServers` | string\|array\|object | Configuraciones de [Language Server Protocol](https://microsoft.github.io/language-server-protocol/) para inteligencia de código (ir a definición, encontrar referencias, etc.) | `"./.lsp.json"` |

605| `experimental.themes` | string\|array | Archivos/directorios de tema de color (reemplaza el `themes/` predeterminado). Vea [Temas](#themes) | `"./themes/"` |

606| `experimental.monitors` | string\|array | Configuraciones de [Monitor](/docs/es/tools-reference#monitor-tool) de fondo que se inician automáticamente cuando el plugin está activo. Vea [Monitores](#monitors) | `"./monitors.json"` |

607| `experimental.evals` | string\|array | Directorio debajo de la raíz del plugin que contiene los [casos de eval](/docs/es/plugin-evals#use-a-different-eval-directory) del plugin, cuando no es el `evals/` predeterminado. `claude plugin eval --eval-dir` lo anula | `"quality/evals"` |

608| `userConfig` | object | Valores configurables por el usuario solicitados en tiempo de habilitación. Vea [Configuración de usuario](#user-configuration) | |

609| `channels` | array | Declaraciones de canales para inyección de mensajes (estilo Telegram, Slack, Discord). Vea [Canales](#channels) | |

610| `dependencies` | array | Otros plugins que este plugin requiere, opcionalmente con restricciones de versión semver. Vea [Restringir versiones de dependencia de plugins](/docs/es/plugin-dependencies) | `[{ "name": "secrets-vault", "version": "~2.1.0" }]` |

611 

612<h3 id="experimental-components">

613 Componentes experimentales

614</h3>

615 

616Los componentes bajo la clave `experimental`, `themes` y `monitors`, tienen un esquema de manifiesto que puede cambiar entre versiones mientras se estabilizan. Dónde los declara es una migración separada: el nivel superior aún funciona, `claude plugin validate` advierte, y una versión futura requerirá `experimental.*`.

617 

618<h3 id="user-configuration">

619 Configuración de usuario

620</h3>

621 

622El campo `userConfig` declara valores que Claude Code solicita al usuario cuando el plugin está habilitado. Úselo en lugar de requerir que los usuarios editen manualmente `settings.json`.

623 

624```json theme={null}

625{

626 "userConfig": {

627 "api_endpoint": {

628 "type": "string",

629 "title": "API endpoint",

630 "description": "Your team's API endpoint"

631 },

632 "api_token": {

633 "type": "string",

634 "title": "API token",

635 "description": "API authentication token",

636 "sensitive": true

637 }

638 }

639}

640```

641 

642Las claves deben ser identificadores válidos. Cada opción admite estos campos:

643 

644| Campo | Requerido | Descripción |

645| :------------ | :-------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

646| `type` | Sí | Uno de `string`, `number`, `boolean`, `directory`, o `file` |

647| `title` | Sí | Etiqueta mostrada en el diálogo de configuración |

648| `description` | Sí | Texto de ayuda mostrado debajo del campo |

649| `sensitive` | No | Si es `true`, enmascara la entrada y almacena el valor en almacenamiento seguro en lugar de `settings.json` |

650| `required` | No | Si es `true`, la validación falla cuando el campo está vacío |

651| `default` | No | Valor utilizado cuando el usuario no proporciona nada |

652| `options` | No | Para tipo `string`, los valores que el campo acepta, mostrados en `/config` como un selector sobre ellos. Vea [Limitar un campo a opciones fijas](#limit-a-field-to-fixed-options). Requiere Claude Code v2.1.271 o posterior |

653| `multiple` | No | Para tipo `string`, permitir un array de cadenas |

654| `min` / `max` | No | Límites para tipo `number` |

655 

656Excepto campos `sensitive` y listas `multiple`, cada campo de cada plugin habilitado también aparece como una fila en el panel `/config`. Las filas requieren Claude Code v2.1.269 o posterior.

657 

658Cada valor está disponible para sustitución como `${user_config.KEY}` en configuraciones de servidores MCP y LSP y comandos de hooks. Los valores no sensibles también pueden sustituirse en contenido de skills y agentes. Todos los valores se exportan a procesos de hooks como variables de entorno `CLAUDE_PLUGIN_OPTION_<KEY>`, donde `<KEY>` es la clave de opción en mayúsculas.

659 

660Los campos que se ejecutan en un shell rechazan `${user_config.*}`: sustituir un valor configurado en un comando de shell permitiría que el shell ejecute lo que ese valor contiene, por lo que el componente falla con un [error](/docs/es/errors#plugin-command-references-user-config) en su lugar. Cada campo rechazado tiene una forma alternativa de pasar el valor:

661 

662| Campo rechazado | Cómo pasar el valor |

663| :--------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------- |

664| Comandos de hooks en forma de shell | Use [forma exec](/docs/es/hooks#exec-form-and-shell-form) con `args`, o lea `CLAUDE_PLUGIN_OPTION_<KEY>` del entorno del hook |

665| Comandos de [Monitor](#monitors) | Lea el valor de un archivo de configuración en el script |

666| MCP [`headersHelper`](/docs/es/mcp#use-dynamic-headers-for-custom-authentication) | Lea el valor de un archivo de configuración en el script |

667 

668Antes de v2.1.207, estos campos sustituían valores `${user_config.KEY}`; actualice los plugins que dependían de esto.

669 

670Los valores no sensibles se almacenan bajo la clave [`pluginConfigs`](/docs/es/settings-reference#pluginconfigs) en su `settings.json` de usuario como `pluginConfigs[<plugin-id>].options`.

671 

672En macOS, Claude Code almacena valores sensibles en el Keychain de macOS, retrocediendo a `~/.claude/.credentials.json` cuando el Keychain rechaza la escritura. En plataformas sin un keychain compatible, los almacena en `~/.claude/.credentials.json`. El almacenamiento de Keychain se comparte con tokens OAuth y tiene un límite total aproximado de 2 KB, por lo que mantenga los valores sensibles pequeños.

673 

674Claude Code lee todos los valores `pluginConfigs` de solo tres fuentes de configuración:

675 

676* **Configuración de usuario**: `~/.claude/settings.json`, el archivo que el aviso de tiempo de habilitación escribe

677* **`--settings`**: la bandera CLI o configuración en línea de SDK

678* **Configuración administrada**: [política controlada por la organización](/docs/es/permissions#managed-settings)

679 

680Cuando más de una fuente establece la misma clave, la configuración administrada tiene precedencia, luego `--settings`, luego la configuración de usuario. La única fuente que puede eliminar de esta lista es la configuración de usuario: pase [`--setting-sources`](/docs/es/cli-reference#cli-flags) sin `user` y Claude Code las omite. La configuración administrada y `--settings` permanecen como usted las pase. La opción [`settingSources`](/docs/es/agent-sdk/claude-code-features#what-settingsources-does-not-control) del SDK establece la misma lista.

681 

682Las entradas en `.claude/settings.json` o `.claude/settings.local.json` de un proyecto se ignoran. Ambos archivos viven en el espacio de trabajo, por lo que un repositorio clonado podría suministrar valores allí, y esos valores fluirían hacia comandos de hooks de plugins, configuraciones de servidores MCP, comandos LSP y comandos de monitores. Antes de v2.1.207, estas entradas se leían. La restricción es específica de `pluginConfigs`: [`enabledPlugins`](/docs/es/settings-reference#enabledplugins) aún honra la configuración de proyecto y local.

683 

684<h4 id="limit-a-field-to-fixed-options">

685 Limitar un campo a opciones fijas

686</h4>

687 

688Establezca `options` en un campo `userConfig` para que los usuarios elijan su valor de una lista fija.

689 

690Para limitar un campo `tone` a tres opciones, enumérelas en `options` y establezca `default` en una de ellas:

691 

692```json theme={null}

693{

694 "userConfig": {

695 "tone": {

696 "type": "string",

697 "title": "Tone",

698 "description": "Voice for generated replies",

699 "options": ["neutral", "warm", "formal"],

700 "default": "neutral"

701 }

702 }

703}

704```

705 

706Si declara `options` en cualquier campo, los usuarios en versiones de Claude Code anteriores a v2.1.271 no pueden cargar el plugin.

707 

708Cuando establece `options` en un campo, siga estas reglas:

709 

710* Establezca `type` en `string`

711* No establezca `multiple` o `sensitive` en `true`

712* Establezca `default` en una de las opciones

713* Si deja `default` sin establecer, establezca `required` en `true`

714* Liste al menos una opción, cada una de 1 a 64 caracteres de largo

715* No comience ni termine una opción con un espacio

716* No use caracteres de control, caracteres invisibles, caracteres que cambien la dirección del texto, o espacios que no sean un espacio regular en una opción

717* No liste la misma opción dos veces, ni siquiera en una letra diferente

718 

719Si incumple cualquiera de estas reglas, el plugin no se carga. Ejecute `claude plugin validate` para ver qué campo incumple qué regla.

720 

721<h3 id="channels">

722 Canales

723</h3>

724 

725El campo `channels` permite que un plugin declare uno o más canales de mensaje que inyecten contenido en la conversación. Cada canal se vincula a un servidor MCP que proporciona el plugin.

726 

727```json theme={null}

728{

729 "channels": [

730 {

731 "server": "telegram",

732 "userConfig": {

733 "bot_token": {

734 "type": "string",

735 "title": "Bot token",

736 "description": "Telegram bot token",

737 "sensitive": true

738 },

739 "owner_id": {

740 "type": "string",

741 "title": "Owner ID",

742 "description": "Your Telegram user ID"

743 }

744 }

745 }

746 ]

747}

748```

749 

750El campo `server` es requerido y debe coincidir con una clave en los `mcpServers` del plugin. El `userConfig` opcional por canal usa el mismo esquema que el campo de nivel superior, permitiendo que el plugin solicite tokens de bot o IDs de propietario cuando el plugin está habilitado.

751 

752<h3 id="path-behavior-rules">

753 Reglas de comportamiento de ruta

754</h3>

755 

756Si una ruta personalizada reemplaza o extiende el directorio predeterminado del plugin depende del campo:

757 

758* **Reemplaza el predeterminado**: `commands`, `agents`, `workflows`, `outputStyles`, `experimental.themes`, `experimental.monitors`. Por ejemplo, cuando el manifiesto especifica `commands`, el directorio predeterminado `commands/` no se escanea. Para mantener el predeterminado y agregar más, enumérelo explícitamente: `"commands": ["./commands/", "./extras/"]`

759* **Se agrega al predeterminado**: `skills`. El directorio predeterminado `skills/` siempre se escanea, y los directorios listados en `skills` se cargan junto a él. Excepción: para una [entrada de marketplace cuya `source` se resuelve a la raíz de marketplace](/docs/es/plugin-marketplaces#advanced-plugin-entries), declarar subdirectorios específicos reemplaza el escaneo predeterminado `skills/`

760* **Reglas de fusión propias**: [hooks](#hooks), [servidores MCP](#mcp-servers), y [servidores LSP](#lsp-servers). Vea cada sección para saber cómo se combinan múltiples fuentes

761 

762Cuando un plugin tiene tanto una carpeta predeterminada como la clave de manifiesto coincidente, Claude Code advierte sobre la carpeta ignorada en `claude plugin list` y la vista de detalles `/plugin`. El plugin aún se carga usando las rutas de manifiesto. Claude Code no advierte cuando la clave de manifiesto apunta dentro de la carpeta predeterminada, por ejemplo `"commands": ["./commands/deploy.md"]`, porque esa ruta nombra la carpeta explícitamente.

763 

764Para todos los campos de ruta:

765 

766* Todas las rutas deben ser relativas a la raíz del plugin e iniciar con `./`, excepto que el campo `skills` también acepta `"."`

767 * Tanto `"."` como `"./"` denotan la raíz del plugin en sí

768 * Antes de v2.1.221, `"."` falló en la validación del manifiesto y el plugin no se cargó, así que use `"./"` para soportar versiones anteriores

769* Los componentes de rutas personalizadas usan las mismas reglas de nomenclatura y espacios de nombres, excepto archivos de agentes. Vea [Agentes](#agents) para saber cómo funcionan los nombres de agentes

770* Se pueden especificar múltiples rutas como arrays

771* Una ruta de skill puede apuntar a un directorio que contiene un `SKILL.md` directamente, por ejemplo `"skills": ["."]` para la raíz del plugin

772 * Claude Code toma el nombre de invocación del skill del campo `name` del frontmatter en `SKILL.md`, por lo que el nombre permanece estable sin importar cómo se nombre el directorio de instalación

773 * Si `name` no está establecido en el frontmatter, Claude Code retrocede al nombre base del directorio

774 

775Un plugin que tiene un `SKILL.md` en su raíz, sin subdirectorio `skills/`, y sin campo de manifiesto `skills` se carga automáticamente como un plugin de un solo skill. No necesita establecer `"skills": ["./"]` en `plugin.json` para este diseño.

776 

777**Ejemplos de ruta**:

778 

779```json theme={null}

780{

781 "commands": [

782 "./specialized/deploy.md",

783 "./utilities/batch-process.md"

784 ],

785 "agents": [

786 "./custom-agents/reviewer.md",

787 "./custom-agents/tester.md"

788 ]

789}

790```

791 

792<h3 id="environment-variables">

793 Variables de entorno

794</h3>

795 

796Claude Code proporciona tres variables para referenciar rutas:

797 

798| Variable | Se resuelve a | Úselo para |

799| :---------------------- | :---------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------- |

800| `${CLAUDE_PLUGIN_ROOT}` | Ruta absoluta al directorio de instalación del plugin | Scripts, binarios y archivos de configuración incluidos con el plugin |

801| `${CLAUDE_PLUGIN_DATA}` | [Directorio persistente](#persistent-data-directory) que sobrevive a actualizaciones de plugins, creado en primera referencia | Dependencias instaladas como `node_modules` o entornos virtuales de Python, código generado y cachés |

802| `${CLAUDE_PROJECT_DIR}` | La raíz del proyecto | Scripts y archivos de configuración locales del proyecto |

803 

804Los tres se exportan como variables de entorno a procesos de hooks y a subprocesos de servidores MCP y LSP. No están presentes en el entorno de comandos que Claude ejecuta a través de la herramienta Bash, en la sesión principal o en un subagente. En contenido de plugins, escriba el marcador de posición en su lugar, y Claude Code sustituye la ruta en línea cuando carga el contenido. Qué campos sustituyen en línea depende del componente del plugin:

805 

806| Componente del plugin | Campos donde se resuelven los marcadores de posición |

807| :--------------------------------- | :-------------------------------------------------------- |

808| Contenido de skill y agente | En cualquier lugar donde aparezca el marcador de posición |

809| Comandos de hook y monitor | En cualquier lugar donde aparezca el marcador de posición |

810| Servidores MCP `stdio` | `command`, `args`, `env` |

811| Servidores MCP `http`, `sse`, `ws` | `url`, `headers`, `headersHelper` |

812| Servidores LSP | `command`, `args`, `env`, `workspaceFolder` |

813 

814En comandos de hooks, use [forma exec](/docs/es/hooks#exec-form-and-shell-form) con `args` para que cada ruta se pase como un argumento sin comillas. En hooks de forma shell y comandos de monitores, envuelva las variables entre comillas dobles, como en `"${CLAUDE_PROJECT_DIR}/scripts/server.sh"`. Este hook de forma shell ejecuta un script incluido con un plugin:

815 

816```json theme={null}

817{

818 "hooks": {

819 "PostToolUse": [

820 {

821 "hooks": [

822 {

823 "type": "command",

824 "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/process.sh"

825 }

826 ]

827 }

828 ]

829 }

830}

831```

832 

833Para un plugin copiado, `${CLAUDE_PLUGIN_ROOT}` cambia cuando el plugin se actualiza. El directorio de la versión anterior permanece en el disco durante un período de gracia después de una actualización, pero trátelo como efímero y no escriba estado allí. Para un plugin cargado en lugar desde un marketplace de directorio local, la variable apunta al directorio de origen estable. Vea [almacenamiento en caché de plugins](#plugin-caching-and-file-resolution) para saber qué plugins se copian y para semántica de limpieza.

834 

835Cuando un plugin copiado se actualiza a mitad de sesión, comandos de hooks, monitores, servidores MCP y servidores LSP continúan usando la ruta de la versión anterior. Ejecute `/reload-plugins` para cambiar hooks, servidores MCP y servidores LSP a la nueva ruta; los monitores requieren un reinicio de sesión. En una sesión sin terminal interactiva, la recarga deja servidores MCP de plugins en la ruta anterior hasta la siguiente sesión.

836 

837Para un plugin con una `command` source, Claude Code [puede recargar el plugin en sí](/docs/es/plugin-marketplaces#when-claude-code-re-runs-the-command).

838 

839Los servidores MCP también pueden llamar a la solicitud `roots/list` para leer los directorios de trabajo de la sesión en tiempo de ejecución. Vea [qué devuelve `roots/list` y cuándo Claude Code notifica al servidor de cambios](/docs/es/mcp#option-3-add-a-local-stdio-server).

840 

841<h4 id="persistent-data-directory">

842 Directorio de datos persistente

843</h4>

844 

845El directorio `${CLAUDE_PLUGIN_DATA}` se resuelve a `~/.claude/plugins/data/{id}/`, donde `{id}` es el identificador del plugin con caracteres fuera de `a-z`, `A-Z`, `0-9`, `_`, y `-` reemplazados por `-`. Para un plugin instalado como `formatter@my-marketplace`, el directorio es `~/.claude/plugins/data/formatter-my-marketplace/`.

846 

847Un uso común es instalar dependencias de lenguaje una vez y reutilizarlas en sesiones y actualizaciones de plugins. Úselo para dependencias de Python, dependencias bloqueadas con Yarn o pnpm, y paquetes cuyos scripts de ciclo de vida deben ejecutarse. Para un plugin instalado desde marketplace, es posible que no lo necesite en absoluto: Claude Code instala automáticamente [dependencias de paquetes Node.js](/docs/es/plugins-reference#node-js-package-dependencies) elegibles cuando almacena en caché el plugin.

848 

849Debido a que el directorio de datos sobrevive a cualquier versión única de plugin, una verificación de existencia de directorio por sí sola no puede detectar cuándo una actualización cambia el manifiesto de dependencia del plugin. El patrón recomendado compara el manifiesto incluido contra una copia en el directorio de datos y reinstala cuando difieren.

850 

851Este hook `SessionStart` instala `node_modules` en la primera ejecución y nuevamente cada vez que una actualización de plugin incluye un `package.json` cambiado:

852 

853```json theme={null}

854{

855 "hooks": {

856 "SessionStart": [

857 {

858 "hooks": [

859 {

860 "type": "command",

861 "command": "diff -q \"${CLAUDE_PLUGIN_ROOT}/package.json\" \"${CLAUDE_PLUGIN_DATA}/package.json\" >/dev/null 2>&1 || (cd \"${CLAUDE_PLUGIN_DATA}\" && cp \"${CLAUDE_PLUGIN_ROOT}/package.json\" . && npm install) || rm -f \"${CLAUDE_PLUGIN_DATA}/package.json\""

862 }

863 ]

864 }

865 ]

866 }

867}

868```

869 

870El `diff` sale con código distinto de cero cuando la copia almacenada falta o difiere de la incluida, cubriendo tanto la primera ejecución como actualizaciones que cambian dependencias. Si `npm install` falla, el `rm` final elimina el manifiesto copiado para que la siguiente sesión reintente.

871 

872Los scripts incluidos en `${CLAUDE_PLUGIN_ROOT}` pueden ejecutarse contra los `node_modules` persistidos:

873 

874```json theme={null}

875{

876 "mcpServers": {

877 "routines": {

878 "command": "node",

879 "args": ["${CLAUDE_PLUGIN_ROOT}/server.js"],

880 "env": {

881 "NODE_PATH": "${CLAUDE_PLUGIN_DATA}/node_modules"

882 }

883 }

884 }

885}

886```

887 

888El directorio de datos se elimina automáticamente cuando desinstala el plugin del último ámbito donde está instalado. La interfaz `/plugin` muestra el tamaño del directorio y solicita confirmación antes de eliminar. El CLI elimina por defecto; pase [`--keep-data`](#plugin-uninstall) para preservarlo.

889 

890***

891 

892<h2 id="plugin-caching-and-file-resolution">

893 Almacenamiento en caché de plugins y resolución de archivos

894</h2>

895 

896Los plugins se especifican de una de tres formas:

897 

898* A través de `claude --plugin-dir` o `claude --plugin-url`, durante la duración de una sesión.

899* A través de un marketplace, instalado para sesiones futuras.

900* A través de su cuenta de claude.ai, [sincronizado](#synced-plugins) en `~/.claude/plugins/synced/`.

901 

902Por razones de seguridad y verificación, Claude Code copia los plugins del *marketplace* en la **caché de plugins** local del usuario (`~/.claude/plugins/cache`), a menos que el plugin se cargue en su lugar. Una [fuente `command` en modo de enlace](/docs/es/plugin-marketplaces#copy-mode-and-link-mode) se carga en su lugar a través de enlaces en la entrada de caché. Una [fuente de ruta relativa](/docs/es/plugin-marketplaces#relative-paths) en un marketplace agregado desde un directorio local se carga en su lugar desde la carpeta del marketplace.

903 

904Para un plugin cargado en su lugar desde un marketplace de directorio local, sus ediciones al directorio de origen surten efecto en el siguiente inicio de sesión o `/reload-plugins`. No necesita un aumento de versión. Los procesos de hook del plugin y los servidores MCP y LSP reciben un `CLAUDE_PLUGIN_ROOT` que apunta al directorio de origen. Claude Code no instala las [dependencias de paquetes Node.js](#node-js-package-dependencies) del plugin en el directorio de origen. Instálelas allí usted mismo, o desde un hook en el [directorio de datos persistentes](#persistent-data-directory).

905 

906Para plugins copiados, cada versión instalada es un directorio separado en la caché, agrupado por marketplace y plugin y nombrado para la versión resuelta, con su propia copia de los archivos del plugin y [dependencias de paquetes Node.js](#node-js-package-dependencies). Una dependencia resuelta desde una [etiqueta de lanzamiento](/docs/es/plugin-dependencies#tag-plugin-releases-for-version-resolution) obtiene un nombre de directorio con un sufijo de SHA de confirmación.

907 

908Cuando actualiza o desinstala un plugin, Claude Code marca el directorio de versión anterior como huérfano y lo elimina en un barrido de fondo aproximadamente 14 días después. El período de gracia permite que las sesiones concurrentes de Claude Code que ya cargaron la versión anterior sigan ejecutándose sin errores. Claude Code ejecuta el barrido solo mientras al menos un plugin esté instalado; después de desinstalar su último plugin, los directorios huérfanos permanecen en el disco hasta que instale un plugin nuevamente.

909 

910Claude Code elimina una carpeta de plugin o marketplace de la caché solo cuando ya no contiene ningún directorio o enlace simbólico. Si vincula un checkout de desarrollo en la caché como entrada de versión de un plugin, Claude Code nunca marca el enlace como huérfano y nunca lo elimina ni las carpetas que lo contienen. Claude Code tampoco escribe nunca sus archivos de seguimiento de versiones dentro del checkout vinculado.

911 

912Las herramientas Glob y Grep de Claude omiten directorios de versión huérfanos durante búsquedas, por lo que los resultados de archivos no incluyen código de plugin obsoleto.

913 

914<h3 id="node-js-package-dependencies">

915 Dependencias de paquetes Node.js

916</h3>

917 

918Cuando Claude Code copia un plugin en la caché, también instala las dependencias de paquetes Node.js del plugin allí, para que los hooks y servidores MCP del plugin puedan cargarlas. Esta sección cubre los paquetes npm y Bun que un plugin declara en su propio `package.json`. Para plugins que dependen de otros plugins, consulte [versiones de dependencias de plugins](/docs/es/plugin-dependencies).

919 

920Claude Code ejecuta la instalación dentro del directorio de versión copiado cada vez que crea uno: cuando instala un plugin, cuando Claude Code actualiza un plugin a una nueva versión, y al inicio de la sesión cuando un plugin habilitado aún no está en caché, como en una máquina nueva. La instalación se ejecuta solo cuando el directorio raíz del plugin contiene tanto un `package.json` como un archivo de bloqueo compatible:

921 

922| Archivo de bloqueo | Comando |

923| :------------------------------------------ | :----------------------------------------------- |

924| `bun.lock` o `bun.lockb` | `bun install --frozen-lockfile --ignore-scripts` |

925| `npm-shrinkwrap.json` o `package-lock.json` | `npm ci --ignore-scripts` |

926 

927Si un plugin contiene más de uno de estos archivos de bloqueo, Claude Code usa la primera coincidencia, verificando en orden: `bun.lock`, `bun.lockb`, `npm-shrinkwrap.json`, `package-lock.json`.

928 

929Claude Code omite la instalación en dos casos, cada uno con su propia solución:

930 

931* Si su plugin solo incluye un `yarn.lock` o `pnpm-lock.yaml`, reemplácelo con un archivo de bloqueo npm.

932* Si un `bunfig.toml` se encuentra junto al archivo de bloqueo bun, elimine el `bunfig.toml`, o reemplace el archivo de bloqueo bun con un archivo de bloqueo npm.

933 

934Envíe un archivo de bloqueo npm para el alcance más amplio. Claude Code ejecuta el gestor de paquetes del archivo de bloqueo coincidente desde el PATH del usuario y no recurre al otro archivo de bloqueo si falta. Para un plugin distribuido a través de una fuente npm, use `npm-shrinkwrap.json`; npm excluye `package-lock.json` de los paquetes publicados.

935 

936Claude Code restringe esta instalación de dependencias para que ningún código del plugin o sus paquetes se ejecute durante ella, y limita cuánto tiempo puede ejecutarse:

937 

938* **Resolución congelada:** Bun y npm instalan exactamente lo que el archivo de bloqueo fija, y fallan en lugar de re-resolver versiones cuando `package.json` y el archivo de bloqueo no coinciden.

939* **Sin scripts de ciclo de vida:** `--ignore-scripts` evita que se ejecuten scripts `preinstall`, `install` y `postinstall`, por lo que las dependencias que construyen módulos nativos en esos scripts se descargan pero no se compilan durante esta instalación.

940* **Tiempo de espera de 60 segundos:** Claude Code detiene una instalación que se ejecuta más tiempo y la trata como fallida.

941 

942Claude Code obtiene un plugin de fuente npm antes de esta instalación de dependencias, y ninguno de los scripts de instalación propios del paquete se ejecuta durante la obtención. Consulte [paquetes npm](/docs/es/plugin-marketplaces#npm-packages).

943 

944Una instalación fallida u omitida nunca bloquea el plugin. Cuando la instalación falla, o Claude Code omite porque hay un archivo de bloqueo yarn o pnpm o un `bunfig.toml`, registra el motivo como una advertencia en [salida de depuración](#debugging-commands). Un plugin con un `package.json` y sin archivo de bloqueo se omite sin una entrada de registro. Una instalación que agota el tiempo de espera puede dejar un árbol `node_modules` parcial en la copia en caché.

945 

946No puede desactivar la instalación automática; ninguna configuración o variable de entorno la desactiva. En redes restringidas, consulte los [requisitos de acceso a la red](/docs/es/network-config#network-access-requirements) para los hosts a permitir.

947 

948Para dependencias que la instalación automática no puede proporcionar, como paquetes que necesitan sus scripts de ciclo de vida para construir, dependencias de Python, o un plugin bloqueado con Yarn o pnpm, instálelas desde un hook en el [directorio de datos persistentes](#persistent-data-directory).

949 

950<h3 id="path-traversal-limitations">

951 Limitaciones de traversal de rutas

952</h3>

953 

954Claude Code no permite que un plugin haga referencia a archivos fuera de su propio directorio. Rechaza una ruta de componente que se resuelve fuera de la raíz del plugin, ya sea que la ruta se declare en `plugin.json` o en una [entrada de marketplace](/docs/es/plugin-marketplaces#plugin-entries). Eso cubre una ruta que apunta fuera del plugin tal como está escrito, como `../shared-utils`, y un enlace simbólico que conduce fuera del plugin, que no sea [enlaces dentro de un marketplace](#share-files-within-a-marketplace-with-symlinks).

955 

956En macOS y Linux, Claude Code también rechaza una ruta de componente que contiene una barra invertida en cualquier lugar, incluso cuando la ruta permanece dentro del plugin. Los componentes declarados con rutas de barra invertida, por lo tanto, se cargan solo en Windows. Escriba rutas de componentes con barras diagonales, como `./commands/deploy.md`.

957 

958Cuando Claude Code rechaza una ruta, reporta un error [`path escapes plugin directory`](/docs/es/errors#path-escapes-plugin-directory) y carga el plugin sin ese componente.

959 

960Claude Code tampoco copia archivos fuera del directorio del plugin en la caché cuando instala el plugin, por lo que cuando un script dentro de un plugin copiado lee una ruta por encima de la raíz del plugin, tampoco encuentra esos archivos.

961 

962<h3 id="share-files-within-a-marketplace-with-symlinks">

963 Compartir archivos dentro de un marketplace con enlaces simbólicos

964</h3>

965 

966Si su plugin necesita compartir archivos con otras partes del mismo marketplace, puede crear enlaces simbólicos dentro de su directorio de plugin. Cómo se maneja un enlace simbólico cuando el plugin se copia en la caché depende de dónde se resuelve su destino:

967 

968* **Dentro del propio directorio del plugin:** el enlace simbólico se preserva como un enlace simbólico relativo en la caché, por lo que sigue resolviendo al destino copiado en tiempo de ejecución.

969* **En otro lugar dentro del mismo marketplace:** el enlace simbólico se desreferencia. El contenido del destino se copia en la caché en su lugar. Esto permite que el directorio `skills/` de un meta-plugin se vincule a skills definidas por otros plugins en el marketplace.

970* **Fuera del marketplace:** el enlace simbólico se omite por seguridad. Esto evita que los plugins extraigan archivos de host arbitrarios como rutas del sistema en la caché.

971 

972Para plugins instalados con `--plugin-dir`, desde una ruta local, o desde una [fuente `command`](/docs/es/plugin-marketplaces#copy-mode-and-link-mode) en modo de copia, solo se preservan los enlaces simbólicos que se resuelven dentro del propio directorio del plugin. Todos los demás se omiten.

973 

974El siguiente comando crea un enlace desde dentro de un plugin de marketplace a una skill compartida definida por un plugin hermano. En Windows, use `mklink /D` desde un símbolo del sistema elevado o habilite el Modo de desarrollador:

975 

976```bash theme={null}

977ln -s ../../shared-plugin/skills/foo ./skills/foo

978```

979 

980***

981 

982<h2 id="plugin-directory-structure">

983 Estructura de directorios de plugins

984</h2>

985 

986<h3 id="standard-plugin-layout">

987 Diseño estándar de plugins

988</h3>

989 

990Un plugin completo sigue esta estructura:

991 

992```text theme={null}

993enterprise-plugin/

994├── .claude-plugin/ # Directorio de metadatos (opcional)

995│ └── plugin.json # manifiesto del plugin

996├── skills/ # Skills

997│ ├── code-reviewer/

998│ │ └── SKILL.md

999│ └── pdf-processor/

1000│ ├── SKILL.md

1001│ └── scripts/

1002├── commands/ # Skills como archivos .md planos

1003│ ├── status.md

1004│ └── logs.md

1005├── agents/ # Definiciones de subagentes

1006│ ├── security-reviewer.md

1007│ ├── performance-tester.md

1008│ ├── compliance-checker.md

1009│ └── review/ # Los agentes aquí se cargan como enterprise-plugin:review:<name>

1010│ └── accessibility.md

1011├── workflows/ # Scripts de flujo de trabajo

1012│ └── release-audit.js

1013├── output-styles/ # Definiciones de estilos de salida

1014│ └── terse.md

1015├── themes/ # Definiciones de temas de color

1016│ └── dracula.json

1017├── monitors/ # Configuraciones de monitores de fondo

1018│ └── monitors.json

1019├── hooks/ # Configuraciones de hooks

1020│ ├── hooks.json # Configuración principal de hooks

1021│ └── security-hooks.json # Hooks adicionales

1022├── bin/ # Ejecutables de plugins agregados a PATH

1023│ └── my-tool # Invocable como comando desnudo en la herramienta Bash

1024├── settings.json # Configuración predeterminada para el plugin

1025├── .mcp.json # Definiciones de servidores MCP

1026├── .lsp.json # Configuraciones de servidores LSP

1027├── scripts/ # Scripts de hooks y utilidades

1028│ ├── security-scan.sh

1029│ ├── format-code.py

1030│ └── deploy.js

1031├── LICENSE # Archivo de licencia

1032└── CHANGELOG.md # Historial de versiones

1033```

1034 

1035<Warning>

1036 El directorio `.claude-plugin/` contiene el archivo `plugin.json`. Todos los demás directorios (commands/, agents/, skills/, workflows/, output-styles/, themes/, monitors/, hooks/) deben estar en la raíz del plugin, no dentro de `.claude-plugin/`.

1037</Warning>

1038 

1039Un archivo `CLAUDE.md` en la raíz del plugin no se carga como contexto del proyecto. Los plugins contribuyen contexto a través de skills, agentes y hooks en lugar de CLAUDE.md. Para enviar instrucciones que se carguen en el contexto de Claude, colóquelas en un [skill](#skills).

1040 

1041<h3 id="file-locations-reference">

1042 Referencia de ubicaciones de archivos

1043</h3>

1044 

1045| Componente | Ubicación predeterminada | Propósito |

1046| :-------------------- | :--------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1047| **Manifiesto** | `.claude-plugin/plugin.json` | Metadatos y configuración del plugin (opcional) |

1048| **Skills** | `skills/` | Skills con estructura `<name>/SKILL.md` |

1049| **Comandos** | `commands/` | Skills como archivos Markdown planos. Use `skills/` para nuevos plugins |

1050| **Agentes** | `agents/` | Archivos Markdown de subagentes. Las subcarpetas son parte del [nombre del agente](#agents) |

1051| **Flujos de trabajo** | `workflows/` | Archivos de script de [flujo de trabajo](/docs/es/workflows) |

1052| **Estilos de salida** | `output-styles/` | Definiciones de estilos de salida |

1053| **Temas** | `themes/` | Definiciones de temas de color |

1054| **Hooks** | `hooks/hooks.json` | Configuración de hooks |

1055| **Servidores MCP** | `.mcp.json` | Definiciones de servidores MCP |

1056| **Servidores LSP** | `.lsp.json` | Configuraciones de servidores de lenguaje |

1057| **Monitores** | `monitors/monitors.json` | Configuraciones de monitores de fondo |

1058| **Ejecutables** | `bin/` | Ejecutables agregados a `PATH` de la herramienta Bash e invocables como comandos desnudos mientras el plugin está habilitado. No puede incluir este directorio en un plugin que [distribuya a través de la configuración de la organización claude.ai](/docs/es/plugin-marketplaces#keep-executables-out-of-the-top-level-bin-directory) |

1059| **Configuración** | `settings.json` | Configuración predeterminada aplicada cuando el plugin está habilitado. Solo se admiten las claves [`agent`](/docs/es/sub-agents) y [`subagentStatusLine`](/docs/es/statusline#subagent-status-lines) |

1060 

1061***

1062 

1063<h2 id="cli-commands-reference">

1064 Referencia de comandos CLI

1065</h2>

1066 

1067Claude Code proporciona comandos CLI para la gestión de plugins no interactiva, útil para scripting y automatización.

1068 

1069<h3 id="plugin-init">

1070 plugin init

1071</h3>

1072 

1073Crea un nuevo plugin en `~/.claude/skills/<name>/`. En la siguiente sesión de Claude Code se carga automáticamente como `<name>@skills-dir` y aparece en `/plugin` y `claude plugin list` sin necesidad de un paso de instalación.

1074 

1075Consulte [Plugins de directorio de skills](#skills-directory-plugins) para conocer los requisitos de alcance y confianza.

1076 

1077```bash theme={null}

1078claude plugin init <name> [options]

1079```

1080 

1081El comando toma estos argumentos:

1082 

1083* `<name>`: Nombre del plugin. Se convierte en el espacio de nombres de la skill y el nombre del directorio bajo `~/.claude/skills/`, por lo que no puede contener espacios ni separadores de ruta.

1084 

1085El comando acepta estas opciones:

1086 

1087| Opción | Descripción | Predeterminado |

1088| :----------------------- | :-------------------------------------------------------------------------------------------------------------------------- | :---------------------- |

1089| `--description <text>` | Descripción del manifiesto | |

1090| `--author <name>` | Nombre del autor | `git config user.name` |

1091| `--author-email <email>` | Correo electrónico del autor | `git config user.email` |

1092| `--with <components...>` | También crea carpetas de componentes. Valores válidos: `skills`, `agents`, `hooks`, `mcp`, `lsp`, `output-style`, `channel` | |

1093| `-f, --force` | Sobrescribe un `.claude-plugin/` existente en el destino | |

1094| `-h, --help` | Muestra la ayuda del comando | |

1095 

1096`claude plugin new` es un alias para este comando.

1097 

1098Cada valor `--with` añade un archivo de inicio para ese componente, listo para editar:

1099 

1100| Componente | Lo que crea |

1101| :------------- | :---------------------------------------------------------------------------------------------------------- |

1102| `skills` | Una skill adicional con espacio de nombres `<name>:example` junto a la predeterminada |

1103| `agents` | Una definición de subagente en `agents/` |

1104| `hooks` | Un `hooks/hooks.json` con un controlador de eventos de ejemplo |

1105| `mcp` | Un `.mcp.json` con ejemplos de servidor HTTP y stdio |

1106| `lsp` | Un ejemplo de servidor de lenguaje `.lsp.json` |

1107| `output-style` | Un `output-styles/<name>.md` que se aplica automáticamente mientras el plugin está habilitado |

1108| `channel` | Un [canal](/docs/es/channels) basado en MCP: un servidor stdio (`server.ts`), su `.mcp.json` y un `package.json` |

1109 

1110El plugin creado utiliza la fuente `@skills-dir` en lugar de un marketplace. Los administradores pueden bloquear esta fuente con `strictKnownMarketplaces` o añadiendo `{"source": "skills-dir"}` a `blockedMarketplaces` en [configuración administrada](/docs/es/plugin-marketplaces#managed-marketplace-restrictions). Cuando está bloqueado, `plugin init` falla antes de escribir.

1111 

1112Estos ejemplos muestran invocaciones comunes:

1113 

1114```bash theme={null}

1115# Crea un plugin mínimo

1116claude plugin init my-helper

1117 

1118# Crea con carpetas de skill y hook

1119claude plugin init my-helper --with skills hooks

1120 

1121# Sobrescribe un scaffold existente

1122claude plugin init my-helper --force

1123```

1124 

1125<h3 id="plugin-install">

1126 plugin install

1127</h3>

1128 

1129Instala un plugin desde los marketplaces disponibles.

1130 

1131```bash theme={null}

1132claude plugin install <plugin> [options]

1133```

1134 

1135El comando toma estos argumentos:

1136 

1137* `<plugin>`: Nombre del plugin o `plugin-name@marketplace-name` para un marketplace específico

1138 

1139El comando acepta estas opciones:

1140 

1141| Opción | Descripción | Predeterminado |

1142| :-------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :------------- |

1143| `-s, --scope <scope>` | Alcance de instalación: `user`, `project` o `local` | `user` |

1144| `--config <key=value>` | Establece una opción [`userConfig`](#user-configuration) declarada en el manifiesto del plugin. Repita la bandera para establecer múltiples opciones | |

1145| `-y, --yes` | Acepta un comando que el marketplace del plugin declara, sin el mensaje de confirmación: el comando que produce un plugin con una [fuente `command`](/docs/es/plugin-marketplaces#command-sources), o el [`headersHelper`](/docs/es/plugin-marketplaces#authenticate-archive-downloads) que autentica una descarga de archivo. Aceptar un `headersHelper` requiere Claude Code v2.1.238 o posterior. Claude Code aún imprime el comando primero. Requerido cuando stdin o stdout no es una TTY, a menos que pase `--accept-command`. No tiene efecto dentro de una sesión de Claude Code, así que ejecute el comando desde su propia terminal | |

1146| `--accept-command <sha256>` | Acepta el comando declarado por el marketplace cuyo `sha256` una ejecución anterior con [`--json`](#plugin-json-result) reportó en `shownCommand`, en lugar de `-y`. La aceptación cuenta para exactamente ese comando, plugin y catálogo de marketplace. Si alguno de ellos cambió desde que se mostró el comando, incluyendo a través de la actualización de marketplace de la propia ejecución, Claude Code no acepta el resumen y muestra el comando nuevamente. No se puede combinar con `-y`. No tiene efecto dentro de una sesión de Claude Code, así que ejecute el comando desde su propia terminal. Requiere Claude Code v2.1.271 o posterior | |

1147| `--json` | Imprime el resultado como un objeto JSON en la última línea de stdout en lugar del mensaje legible por humanos, para usar en scripts. Consulte [formato de resultado JSON](#plugin-json-result). Requiere Claude Code v2.1.268 o posterior | |

1148| `-h, --help` | Muestra la ayuda del comando | |

1149 

1150El alcance determina qué archivo de configuración se añade al plugin instalado. Por ejemplo, `--scope project` escribe en `enabledPlugins` en .claude/settings.json, haciendo que el plugin esté disponible para todos los que clonan el repositorio del proyecto.

1151 

1152<span id="plugin-json-result" />Con `--json`, la última línea de stdout es un objeto JSON. Analice solo esa línea, porque Claude Code imprime cualquier comando que el marketplace declara antes de ella. Tres campos siempre están presentes:

1153 

1154* `command`: el subcomando que se ejecutó, como `install`

1155* `outcome`: `ok` o `failed`

1156* `message`: una descripción legible por humanos del resultado

1157 

1158Otros 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 propios campos 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.

1159 

1160Cuando una ejecución muestra un comando declarado por el marketplace y no lo ejecuta, el resultado `failed` también lleva un objeto `shownCommand` cuyos campos incluyen el comando tal como se mostró, el plugin al que pertenece y el `sha256` del comando. Para aceptar exactamente ese comando, vuelva a ejecutar con ese `sha256` como `--accept-command`. Requiere Claude Code v2.1.271 o posterior.

1161 

1162Si `shownCommand.acceptCommandMatched` es `false`, el resumen que pasó no coincide con el comando ahora mostrado. Muestre ese comando a una persona antes de pasar su `sha256`.

1163 

1164Estos ejemplos muestran invocaciones comunes:

1165 

1166```bash theme={null}

1167# Instala en alcance de usuario (predeterminado)

1168claude plugin install formatter@my-marketplace

1169 

1170# Instala en alcance de proyecto (compartido con el equipo)

1171claude plugin install formatter@my-marketplace --scope project

1172 

1173# Instala en alcance local (no compartido con el equipo)

1174claude plugin install formatter@my-marketplace --scope local

1175```

1176 

1177<h3 id="plugin-uninstall">

1178 plugin uninstall

1179</h3>

1180 

1181Elimina un plugin instalado.

1182 

1183```bash theme={null}

1184claude plugin uninstall <plugin> [options]

1185```

1186 

1187El comando toma estos argumentos:

1188 

1189* `<plugin>`: Nombre del plugin o `plugin-name@marketplace-name`

1190 

1191El comando acepta estas opciones:

1192 

1193| Opción | Descripción | Predeterminado |

1194| :-------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------- |

1195| `-s, --scope <scope>` | Desinstala del alcance: `user`, `project` o `local` | `user` |

1196| `--keep-data` | Preserva el [directorio de datos persistentes](#persistent-data-directory) del plugin | |

1197| `--prune` | También elimina las dependencias instaladas automáticamente que ningún otro plugin requiere. Consulte [plugin prune](#plugin-prune) | |

1198| `-y, --yes` | Omite el mensaje de confirmación de `--prune`. Requerido cuando stdin o stdout no es una TTY | |

1199| `--json` | Imprime el resultado como un objeto JSON en la última línea de stdout, en el [mismo formato que `plugin install --json`](#plugin-json-result). No se puede combinar con `--prune`. Requiere Claude Code v2.1.268 o posterior | |

1200| `-h, --help` | Muestra la ayuda del comando | |

1201 

1202`claude plugin remove` y `claude plugin rm` son alias para este comando.

1203 

1204De forma predeterminada, desinstalar desde el último alcance restante también elimina el directorio `${CLAUDE_PLUGIN_DATA}` del plugin. Use `--keep-data` para preservarlo, por ejemplo al reinstalar después de probar una nueva versión.

1205 

1206<Note>

1207 Cuando los plugins instalados desde diferentes marketplaces comparten un nombre, el formulario `plugin-name@marketplace-name` desinstala solo el plugin del marketplace nombrado. Antes de v2.1.212, el formulario calificado podría coincidir y desinstalar el plugin con el mismo nombre desde un marketplace diferente.

1208</Note>

1209 

1210<h3 id="plugin-prune">

1211 plugin prune

1212</h3>

1213 

1214Elimina las dependencias de plugins instaladas automáticamente que ya no son requeridas por ningún plugin instalado. Las dependencias que Claude Code incluyó para satisfacer el campo [`dependencies`](/docs/es/plugin-dependencies) de otro plugin se eliminan; los plugins que instaló directamente nunca se tocan.

1215 

1216```bash theme={null}

1217claude plugin prune [options]

1218```

1219 

1220El comando acepta estas opciones:

1221 

1222| Opción | Descripción | Predeterminado |

1223| :-------------------- | :------------------------------------------------------------------------------ | :------------- |

1224| `-s, --scope <scope>` | Limpia en alcance: `user`, `project` o `local` | `user` |

1225| `--dry-run` | Lista lo que se eliminaría sin eliminar nada | |

1226| `-y, --yes` | Omite el mensaje de confirmación. Requerido cuando stdin o stdout no es una TTY | |

1227| `-h, --help` | Muestra la ayuda del comando | |

1228 

1229`claude plugin autoremove` es un alias para este comando.

1230 

1231El comando lista las dependencias huérfanas y solicita confirmación antes de eliminarlas. Para eliminar un plugin y limpiar sus dependencias en un paso, ejecute `claude plugin uninstall <plugin> --prune`.

1232 

1233<h3 id="plugin-enable">

1234 plugin enable

1235</h3>

1236 

1237Habilita un plugin deshabilitado. Cuando el destino está instalado desde un marketplace y declara [dependencias](/docs/es/plugin-dependencies), Claude Code las habilita transitivamente en el mismo alcance. El comando falla bajo las condiciones que [Habilitar o deshabilitar un plugin con dependencias](/docs/es/plugin-dependencies#enable-or-disable-a-plugin-with-dependencies) lista.

1238 

1239```bash theme={null}

1240claude plugin enable <plugin> [options]

1241```

1242 

1243El comando toma estos argumentos:

1244 

1245* `<plugin>`: Nombre del plugin, `plugin-name@marketplace-name` o `plugin-name@synced` para un [plugin sincronizado desde claude.ai](#synced-plugins)

1246 

1247El comando acepta estas opciones:

1248 

1249| Opción | Descripción | Predeterminado |

1250| :-------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------- |

1251| `-s, --scope <scope>` | Alcance a habilitar: `user`, `project` o `local`. Cuando se omite, Claude Code detecta el alcance donde está instalado el plugin | Detección automática |

1252| `--json` | Imprime el resultado como un objeto JSON en la última línea de stdout, en el [mismo formato que `plugin install --json`](#plugin-json-result). Requiere Claude Code v2.1.268 o posterior | |

1253| `-h, --help` | Muestra la ayuda del comando | |

1254 

1255<h3 id="plugin-disable">

1256 plugin disable

1257</h3>

1258 

1259Deshabilita un plugin sin desinstalarlo.

1260 

1261Cuando el destino está instalado desde un marketplace, el comando falla si otro plugin habilitado [depende de](/docs/es/plugin-dependencies#enable-or-disable-a-plugin-with-dependencies) él. El mensaje de error incluye un comando encadenado que deshabilita primero cada dependiente.

1262 

1263Para un [plugin sincronizado](#synced-plugins) que su organización requiere, el comando falla y no guarda nada.

1264 

1265```bash theme={null}

1266claude plugin disable [plugin] [options]

1267```

1268 

1269El comando toma estos argumentos:

1270 

1271* `[plugin]`: Nombre del plugin, `plugin-name@marketplace-name` o `plugin-name@synced` para un [plugin sincronizado desde claude.ai](#synced-plugins). Opcional cuando se usa `--all`

1272 

1273El comando acepta estas opciones:

1274 

1275| Opción | Descripción | Predeterminado |

1276| :-------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------- |

1277| `-a, --all` | Deshabilita todos los plugins habilitados. No se puede combinar con `--scope` | |

1278| `-s, --scope <scope>` | Alcance a deshabilitar: `user`, `project` o `local`. Cuando se omite, Claude Code detecta el alcance donde está instalado el plugin | Detección automática |

1279| `--json` | Imprime el resultado como un objeto JSON en la última línea de stdout, en el [mismo formato que `plugin install --json`](#plugin-json-result). Requiere Claude Code v2.1.268 o posterior | |

1280| `-h, --help` | Muestra la ayuda del comando | |

1281 

1282<h3 id="plugin-update">

1283 plugin update

1284</h3>

1285 

1286Actualiza un plugin a la versión más reciente.

1287 

1288```bash theme={null}

1289claude plugin update <plugin> [options]

1290```

1291 

1292El comando toma estos argumentos:

1293 

1294* `<plugin>`: Nombre del plugin o `plugin-name@marketplace-name`

1295 

1296El comando acepta estas opciones:

1297 

1298| Opción | Descripción | Predeterminado |

1299| :-------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | :------------- |

1300| `-s, --scope <scope>` | Alcance a actualizar: `user`, `project`, `local` o `managed` | `user` |

1301| `-y, --yes` | Acepta un comando que el marketplace del plugin declara, sin el mensaje de confirmación: el comando que produce un plugin con una [fuente `command`](/docs/es/plugin-marketplaces#command-sources), o el [`headersHelper`](/docs/es/plugin-marketplaces#authenticate-archive-downloads) que autentica una descarga de archivo. Aceptar un `headersHelper` requiere Claude Code v2.1.238 o posterior. Claude Code aún imprime el comando primero. Requerido cuando stdin o stdout no es una TTY, a menos que pase `--accept-command`. No tiene efecto dentro de una sesión de Claude Code, así que ejecute el comando desde su propia terminal | |

1302| `--accept-command <sha256>` | Acepta el comando declarado por el marketplace cuyo `sha256` una ejecución anterior con [`--json`](#plugin-json-result) reportó en `shownCommand`, en lugar de `-y`. La aceptación cuenta para exactamente ese comando, plugin y catálogo de marketplace. Si alguno de ellos cambió desde que se mostró el comando, incluyendo a través de la actualización de marketplace de la propia ejecución, Claude Code no acepta el resumen y muestra el comando nuevamente. No se puede combinar con `-y`. No tiene efecto dentro de una sesión de Claude Code, así que ejecute el comando desde su propia terminal. Requiere Claude Code v2.1.271 o posterior | |

1303| `--json` | Imprime el resultado como un objeto JSON en la última línea de stdout, en el [mismo formato que `plugin install --json`](#plugin-json-result). Requiere Claude Code v2.1.268 o posterior | |

1304| `-h, --help` | Muestra la ayuda del comando | |

1305 

1306<Note>

1307 Claude Code resuelve un nombre de plugin sin calificar contra sus plugins instalados. Cuando los plugins instalados desde diferentes marketplaces comparten el nombre, Claude Code rechaza la actualización y lista los comandos calificados `plugin-name@marketplace-name` a ejecutar en su lugar. Antes de v2.1.246, Claude Code aceptaba solo el formulario calificado y rechazaba un nombre sin calificar como no encontrado.

1308</Note>

1309 

1310***

1311 

1312<h3 id="plugin-list">

1313 plugin list

1314</h3>

1315 

1316Lista los plugins instalados con su versión, marketplace de origen y estado de habilitación.

1317 

1318```bash theme={null}

1319claude plugin list [options]

1320```

1321 

1322El comando acepta estas opciones:

1323 

1324| Opción | Descripción | Predeterminado |

1325| :------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------- |

1326| `--json` | Salida como JSON. Una fila de plugin con problemas de carga o advertencias de autoría lleva matrices de cadenas `errors` o `notes`. En Claude Code v2.1.268 o posterior, matrices paralelas `errorDetails` y `noteDetails` dan el `type` de diagnóstico de cada entrada y los nombres a los que se refiere, como el plugin, marketplace, servidor o archivo | |

1327| `--available` | Incluye plugins disponibles desde marketplaces. Requiere `--json` | |

1328| `-h, --help` | Muestra la ayuda del comando | |

1329 

1330Dentro de una sesión interactiva, `/plugin list` imprime un listado similar en línea, pero solo cubre plugins instalados desde marketplace:

1331 

1332* Los plugins cargados desde directorios de skills aparecen en la interfaz `/plugin` y en `claude plugin list`, pero no en la salida en línea de `/plugin list`.

1333* Los [plugins sincronizados desde claude.ai](#synced-plugins) aparecen en `claude plugin list` en Claude Code v2.1.239 o posterior y en la interfaz `/plugin`, pero no en la salida en línea de `/plugin list`.

1334* Los plugins cargados para la sesión con `--plugin-dir` o `--plugin-url` aparecen en la interfaz `/plugin`, y en `claude plugin list` solo cuando la misma bandera precede al subcomando, como en `claude --plugin-dir <dir> plugin list`. Solo el nombre de la bandera nombra su ubicación, así que un `claude plugin list` sin calificar no puede encontrarlos, a diferencia de los plugins sincronizados y los plugins del directorio de skills, cuyos directorios fijos escanea Claude Code.

1335 

1336El formulario interactivo acepta `--enabled` o `--disabled` para mostrar solo los plugins en ese estado, y `ls` como abreviatura de `list`.

1337 

1338<h3 id="plugin-details">

1339 plugin details

1340</h3>

1341 

1342Muestra el inventario de componentes de un plugin y el costo de token proyectado. La salida lista todos los componentes que contribuye el plugin, agrupados como Skills, Agents, Hooks, servidores MCP y servidores LSP, junto con una estimación de cuántos tokens añade a cada sesión. El grupo Skills incluye entradas tanto de `skills/` como de `commands/`.

1343 

1344```bash theme={null}

1345claude plugin details <name>

1346```

1347 

1348El comando toma estos argumentos:

1349 

1350* `<name>`: Nombre del plugin o `plugin-name@marketplace-name`

1351 

1352El comando acepta estas opciones:

1353 

1354| Opción | Descripción | Predeterminado |

1355| :----------- | :--------------------------- | :------------- |

1356| `-h, --help` | Muestra la ayuda del comando | |

1357 

1358La salida muestra dos cifras de costo para cada componente:

1359 

1360* **Siempre activo:** tokens añadidos a cada sesión por el texto de listado del plugin, como descripciones de skills, descripciones de agents y nombres de comandos, independientemente de si algún componente se activa.

1361* **Al invocar:** tokens que cuesta un componente cuando se activa. Se muestra por componente, no como total del plugin, porque una sesión típica invoca solo un subconjunto de componentes.

1362 

1363Este ejemplo muestra cómo se ve la salida para un plugin con dos skills:

1364 

1365```

1366dependency-guard 1.2.0

1367 Dependency analysis for Claude Code sessions

1368 Source: dependency-guard@example-marketplace

1369 

1370Component inventory

1371 Skills (2) scan-dependencies, review-changes

1372 Agents (0)

1373 Hooks (1) SessionStart (harness-only — no model context cost)

1374 MCP servers (0)

1375 LSP servers (0)

1376 

1377Projected token cost

1378 Always-on: ~180 tok added to every session

1379 

1380Per-component (rounded)

1381 component always-on on-invoke

1382 scan-dependencies ~100 ~2400

1383 review-changes ~80 ~1800

1384 

1385 On-invoke cost is paid each time a skill or agent fires.

1386 Token counts are estimates and may differ from actual usage.

1387```

1388 

1389El total siempre activo se calcula a través de la API `count_tokens` para su modelo activo. Los números por componente se escalan proporcionalmente desde ese total. Si la API es inaccesible, el comando recurre a una estimación basada en caracteres.

1390 

1391<h3 id="plugin-validate">

1392 plugin validate

1393</h3>

1394 

1395Verifica un plugin o un marketplace para detectar errores de sintaxis y esquema antes de publicar.

1396 

1397El comando sale con 0 cuando la validación pasa, 1 cuando falla, y 2 cuando la propia ejecución de validación falla, como cuando la ruta que pasa es ilegible.

1398 

1399```bash theme={null}

1400claude plugin validate <path> [options]

1401```

1402 

1403El comando toma estos argumentos:

1404 

1405* `<path>`: Ruta a un directorio de plugin o un directorio de marketplace. Consulte [Validar un plugin o un directorio sin manifiesto](/docs/es/plugin-marketplaces#validate-a-plugin-or-a-directory-without-a-manifest) para saber qué archivos cubre una ejecución de plugin.

1406 

1407El comando acepta estas opciones:

1408 

1409| Opción | Descripción | Predeterminado |

1410| :----------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------- |

1411| `--strict` | Trata las advertencias como errores y sale con 1 en ellas. Use en CI para detectar problemas que el tiempo de ejecución tolera, como [campos no reconocidos](#unrecognized-fields) | |

1412| `--json` | Salida del informe de validación como un objeto JSON con los mismos códigos de salida. Requiere Claude Code v2.1.259 o posterior | |

1413| `-h, --help` | Muestra la ayuda del comando | |

1414 

1415Con `--json`, Claude Code escribe el informe en stdout como un objeto JSON con estos campos de nivel superior:

1416 

1417* `success`: el mismo veredicto que da el código de salida

1418* `strict`: si la ejecución trató las advertencias como errores

1419* `target`: la ruta resuelta que Claude Code validó

1420* `manifest`: el resultado del propio manifiesto, o `null` para una [ejecución sin manifiesto](/docs/es/plugin-marketplaces#validate-a-plugin-or-a-directory-without-a-manifest)

1421* `contents`: resultados por archivo, cada uno nombrando su `file` y llevando matrices `errors`, `warnings` y `notes`

1422 

1423En salida 2, el comando no escribe nada en stdout; el mensaje de error va a stderr.

1424 

1425Dentro de una sesión interactiva, `/plugin validate <path>` ejecuta las mismas verificaciones en línea.

1426 

1427<h3 id="plugin-eval">

1428 plugin eval

1429</h3>

1430 

1431Ejecuta los [casos de eval](/docs/es/plugin-evals) 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. Consulte [Probar plugins con evals](/docs/es/plugin-evals) para el formato de caso, calificadores, resultados y uso en CI.

1432 

1433```bash theme={null}

1434claude plugin eval [target] [options]

1435```

1436 

1437El `target` opcional es un directorio de plugin, un archivo único `prompt.md` o `case.yaml`, un plugin instalado como `name` o `name@marketplace`, o `name@skills-dir`, y por defecto es el directorio actual. Colóquelo antes de `--tag`, `--allow-tools` y `--json`.

1438 

1439Esta tabla lista las opciones que la mayoría de ejecuciones usan. Ejecute `claude plugin eval --help` para el conjunto completo, incluyendo `--case`, `--tag`, `--output-dir`, `--report`, `--allow-real-servers`, `--keep-temp` y `--verbose`.

1440 

1441| Opción | Descripción | Predeterminado |

1442| :------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------- |

1443| `--runs <n>` | Ejecuciones por caso por rama | El `runs` de cada caso, si no 3 |

1444| `-j, --concurrency <n>` | Sesiones de agent a ejecutar a la vez, 1 a 8. Comparten su límite de velocidad | `1` |

1445| `--model <model>` | Modelo para el agent bajo prueba | El `model` de cada caso, si no `ANTHROPIC_MODEL` si está establecido, si no el predeterminado de Claude Code |

1446| `--judge-model <model>` | Modelo para calificadores `llm` y `baseline` | Un modelo pequeño y rápido |

1447| `--ablation <mode>` | `none` o `with-without`. Consulte [Comparar contra una línea de base sin plugin](/docs/es/plugin-evals#compare-against-a-no-plugin-baseline) | `with-without` cuando un plugin se resuelve, si no `none` |

1448| `--threshold <0..1>` | Sale con 1 si algún caso puntúa por debajo de esto | `1.0` |

1449| `--max-cost-usd <usd>` | Detiene antes de la siguiente ejecución una vez que el gasto alcanza esto, sale con 2 e informa resultados parciales | Sin límite |

1450| `--allow-tools <tools...>` | Otorga herramientas más allá del conjunto de solo lectura, como `Bash`, `Write`, `Edit` o `"mcp__plugin_<plugin>_<server>__*"`. Consulte [Otorgar herramientas](/docs/es/plugin-evals#grant-tools) | |

1451| `--scaffold` | Ejecuta el [`scaffold_script`](/docs/es/plugin-evals#add-setup-or-history-with-case-yaml) de cada caso | Desactivado |

1452| `--trust-plugin` | Omite el primer mensaje de confianza, para CI. Consulte [Qué puede acceder una ejecución](/docs/es/plugin-evals#security) | Desactivado |

1453| `--mocks <mode>` | `record` u `off`. Consulte [Simular servidores MCP](/docs/es/plugin-evals#mock-mcp-servers) | `record` |

1454| `--eval-dir <dir>` | Directorio debajo del plugin que contiene los casos | El `experimental.evals` del manifiesto, si no `evals` |

1455| `--json [path]` | Imprime el [documento de resultado](/docs/es/plugin-evals#json-result) a stdout, o escríbelo en una ruta `.json` | |

1456| `--no-publish` | Mantiene el informe HTML local | |

1457| `-h, --help` | Muestra la ayuda del comando | |

1458 

1459El comando sale con 0 cuando cada caso cumple el umbral, 1 en un caso fallido, un error de carga o un directorio de plugin no confiable, 2 en una ejecución parcial, 130 cuando se interrumpe y 143 cuando se termina. Consulte [Ejecutar evals en CI](/docs/es/plugin-evals#run-evals-in-ci).

1460 

1461<h3 id="plugin-eval-init">

1462 plugin eval init

1463</h3>

1464 

1465Crea un conjunto de eval para el plugin en el directorio actual. Requiere Claude Code v2.1.269 o posterior. En una terminal esto inicia una entrevista de autoría que lee el plugin, propone casos y calificadores, los prueba y escribe los archivos. Con `--bare`, o sin una terminal, escribe una plantilla de caso único en blanco en su lugar. Ejecutado desde dentro de una sesión interactiva de Claude Code, imprime las instrucciones de entrevista para que esa sesión siga en lugar de escribir una plantilla. Consulte [Crear su primer conjunto de eval](/docs/es/plugin-evals#create-your-first-eval-suite).

1466 

1467```bash theme={null}

1468claude plugin eval init [name] [options]

1469```

1470 

1471El `name` opcional es un nombre de caso: la entrevista no necesita uno, mientras que `--bare` y la ruta de plantilla sin terminal lo requieren. Acepta estas opciones:

1472 

1473| Opción | Descripción | Predeterminado |

1474| :------------------ | :-------------------------------------------------------------------------------------------------------- | :---------------------------------------------------- |

1475| `--bare` | Escribe un `prompt.md` en blanco y `graders/criteria.md` para `<name>` en lugar de ejecutar la entrevista | |

1476| `-i, --interactive` | Requiere la entrevista. Falla sin una terminal en lugar de escribir una plantilla | |

1477| `--eval-dir <dir>` | Directorio debajo del directorio actual para escribir casos en | El `experimental.evals` del manifiesto, si no `evals` |

1478| `-h, --help` | Muestra la ayuda del comando | |

1479 

1480<h3 id="plugin-tag">

1481 plugin tag

1482</h3>

1483 

1484Crea una etiqueta git de lanzamiento para un plugin. De forma predeterminada, el comando etiqueta el plugin en el directorio actual; pase una ruta para etiquetar un plugin en otro lugar. Consulte [Etiquetar lanzamientos de plugins](/docs/es/plugin-dependencies#tag-plugin-releases-for-version-resolution).

1485 

1486```bash theme={null}

1487claude plugin tag [path] [options]

1488```

1489 

1490El comando toma estos argumentos:

1491 

1492* `[path]`: Ruta al directorio del plugin. Por defecto es el directorio actual.

1493 

1494El comando acepta estas opciones:

1495 

1496| Opción | Descripción | Predeterminado |

1497| :-------------------- | :----------------------------------------------------------------------------------- | :------------- |

1498| `--push` | Empuja la etiqueta al remoto después de crearla | |

1499| `--dry-run` | Imprime lo que se etiquetaría sin crear la etiqueta | |

1500| `-f, --force` | Crea la etiqueta incluso si el árbol de trabajo está sucio o la etiqueta ya existe | |

1501| `-m, --message <msg>` | Mensaje de anotación de etiqueta. Use `%s` como marcador de posición para la versión | |

1502| `--remote <name>` | Remoto al que empujar con `--push` | `origin` |

1503| `-h, --help` | Muestra la ayuda del comando | |

1504 

1505***

1506 

1507<h2 id="debugging-and-development-tools">

1508 Herramientas de depuración y desarrollo

1509</h2>

1510 

1511<h3 id="debugging-commands">

1512 Comandos de depuración

1513</h3>

1514 

1515Use `claude --debug` para ver detalles de carga de plugins:

1516 

1517Esto muestra:

1518 

1519* Qué plugins se están cargando

1520* Cualquier error en los manifiestos de plugins

1521* Registro de skills, agentes y hooks

1522* Inicialización del servidor MCP

1523 

1524<h3 id="common-issues">

1525 Problemas comunes

1526</h3>

1527 

1528| Problema | Causa | Solución |

1529| :---------------------------------- | :---------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

1530| Plugin no se carga | `plugin.json` inválido | Ejecute `claude plugin validate ./my-plugin` o `/plugin validate ./my-plugin`, donde `./my-plugin` es su directorio de plugins, para verificar `plugin.json`, `hooks/hooks.json` y el frontmatter de los skills, agentes y comandos en los directorios predeterminados del plugin para errores de sintaxis y esquema. Consulte [Validar un plugin o un directorio sin un manifiesto](/docs/es/plugin-marketplaces#validate-a-plugin-or-a-directory-without-a-manifest) para ver qué cubre una ejecución |

1531| Skills no aparecen | Estructura de directorio incorrecta | Asegúrese de que `skills/` o `commands/` esté en la raíz del plugin, no dentro de `.claude-plugin/` |

1532| Hooks no se activan | Script no ejecutable | Ejecute `chmod +x script.sh` |

1533| El servidor MCP falla | Falta `${CLAUDE_PLUGIN_ROOT}` | Use la variable para todas las rutas de plugins |

1534| Errores de ruta | Se utilizaron rutas absolutas | Haga que las rutas sean relativas, comenzando con `./`; consulte [Reglas de comportamiento de rutas](#path-behavior-rules), que cubren la excepción `"."` del campo `skills` |

1535| LSP `Executable not found in $PATH` | Servidor de lenguaje no instalado | Instale el binario (por ejemplo, `npm install -g typescript-language-server typescript`) |

1536 

1537<h3 id="example-error-messages">

1538 Ejemplos de mensajes de error

1539</h3>

1540 

1541**Errores de validación de manifiestos**:

1542 

1543* `Invalid JSON syntax: Unexpected token } in JSON at position 142`: verifique si hay comas faltantes, comas adicionales o cadenas sin comillas

1544* `Plugin <name> has an invalid manifest file at .claude-plugin/plugin.json. Validation errors: name: Invalid input: expected string, received undefined`: falta un campo requerido

1545* `Plugin <name> has a corrupt manifest file at .claude-plugin/plugin.json. JSON parse error: ...`: error de sintaxis JSON. Antes de v2.1.246, Claude Code también producía este error para un `plugin.json` guardado como UTF-8 con una marca de orden de bytes (BOM) inicial, incluso cuando el JSON era válido de otra manera.

1546 

1547**Errores de carga de plugins**:

1548 

1549* `Warning: No commands found in plugin my-plugin custom directory: ./cmds. Expected .md files or SKILL.md in subdirectories.`: la ruta del comando existe pero no contiene archivos de comando válidos

1550* `Plugin directory not found at path: ./plugins/my-plugin. Check that the marketplace entry has the correct path.`: la ruta `source` en marketplace.json apunta a un directorio inexistente

1551* `Plugin my-plugin has conflicting manifests: both plugin.json and marketplace entry specify components.`: elimine definiciones de componentes duplicadas o elimine `strict: false` en la entrada del marketplace

1552 

1553<h3 id="hook-troubleshooting">

1554 Solución de problemas de hooks

1555</h3>

1556 

1557**El script del hook no se ejecuta**:

1558 

15591. Verifique que el script sea ejecutable: `chmod +x ./scripts/your-script.sh`

15602. Verifique la línea shebang: La primera línea debe ser `#!/bin/bash` o `#!/usr/bin/env bash`

15613. Verifique que la ruta use `${CLAUDE_PLUGIN_ROOT}`: `"command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/your-script.sh"`

15624. Pruebe el script manualmente: `./scripts/your-script.sh`

1563 

1564**El hook no se activa en los eventos esperados**:

1565 

15661. Verifique que el nombre del evento sea correcto (sensible a mayúsculas): `PostToolUse`, no `postToolUse`

15672. Verifique que el patrón del matcher coincida con sus herramientas: `"matcher": "Write|Edit"` para operaciones de archivo

15683. Confirme que el tipo de hook sea válido: `command`, `http`, `mcp_tool`, `prompt` o `agent`

1569 

1570<h3 id="mcp-server-troubleshooting">

1571 Solución de problemas del servidor MCP

1572</h3>

1573 

1574**El servidor no se inicia**:

1575 

15761. Verifique que el comando exista y sea ejecutable

15772. Verifique que todas las rutas usen la variable `${CLAUDE_PLUGIN_ROOT}`

15783. Verifique los registros del servidor MCP: `claude --debug` muestra errores de inicialización

15794. Pruebe el servidor manualmente fuera de Claude Code

1580 

1581**Las herramientas del servidor no aparecen**:

1582 

15831. Asegúrese de que el servidor esté correctamente configurado en `.mcp.json` o `plugin.json`

15842. Verifique que el servidor implemente correctamente el protocolo MCP

15853. Verifique si hay tiempos de espera de conexión en la salida de depuración

1586 

1587<h3 id="directory-structure-mistakes">

1588 Errores de estructura de directorio

1589</h3>

1590 

1591**Síntomas**: El plugin se carga pero faltan componentes (skills, agentes, hooks).

1592 

1593**Estructura correcta**: Los componentes deben estar en la raíz del plugin, no dentro de `.claude-plugin/`. Solo `plugin.json` pertenece a `.claude-plugin/`.

1594 

1595**Lista de verificación de depuración**:

1596 

15971. Ejecute `claude --debug` y busque mensajes "loading plugin"

15982. Verifique que cada directorio de componentes esté listado en la salida de depuración

15993. Verifique que los permisos de archivo permitan leer los archivos del plugin

1600 

1601***

1602 

1603<h2 id="distribution-and-versioning-reference">

1604 Referencia de distribución y versionado

1605</h2>

1606 

1607<h3 id="version-management">

1608 Gestión de versiones

1609</h3>

1610 

1611Claude Code utiliza la versión del plugin como clave de caché que determina si hay una actualización disponible. Cuando ejecuta `/plugin update` o se activa la actualización automática, Claude Code calcula la versión actual y omite la actualización si coincide con la que ya está instalada. Un plugin [cargado en su lugar](#plugin-caching-and-file-resolution) desde un marketplace de directorio local carga sus archivos de fuente actuales en cada inicio de sesión, sin importar lo que diga su cadena de versión.

1612 

1613Para cada tipo de fuente excepto `command`, Claude Code resuelve la versión a partir de la primera de estas que esté establecida:

1614 

16151. El campo `version` en el `plugin.json` del plugin

16162. El campo `version` en la entrada del plugin en el marketplace en `marketplace.json`

16173. El SHA del commit de git de la fuente del plugin, para fuentes `github`, `url`, `git-subdir` y relative-path en un marketplace alojado en git

16184. El resumen SHA-256, para [fuentes `archive`](/docs/es/plugin-marketplaces#zip-archives): el pin `sha256` en la entrada del marketplace, o el resumen del archivo descargado cuando no establece ningún pin. Claude Code lo acorta a los primeros 12 caracteres

16195. `unknown`, para fuentes `npm` o directorios locales cuando ni el directorio del plugin ni su marketplace es un repositorio de git. Claude Code no toma la versión de un repositorio que encierra la ruta de instalación, como un `~/.claude` gestionado por git

1620 

1621Para una [fuente `command`](/docs/es/plugin-marketplaces#command-sources), Claude Code siempre deriva la versión de lo que produjo el comando: un hash de contenido de 12 caracteres por sí solo, o anexado a la versión `plugin.json` como `<version>-<hash>` cuando se establece uno. Claude Code ignora el campo `version` de la entrada del marketplace para fuentes de comando. Un comando cuya salida con hash cambia, por lo tanto, produce una nueva versión, incluso cuando la cadena de versión creada permanece igual. En [modo de enlace](/docs/es/plugin-marketplaces#copy-mode-and-link-mode), el hash cubre la ruta real del directorio impreso y sus entradas de nivel superior en lugar del contenido del archivo.

1622 

1623Para esos tipos de fuente, esto le proporciona tres formas de versionar un plugin:

1624 

1625| Enfoque | Cómo | Comportamiento de actualización | Mejor para |

1626| :--------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------- |

1627| **Versión explícita** | Establezca `"version": "2.1.0"` en `plugin.json` | Los usuarios obtienen actualizaciones solo cuando incrementa este campo. Insertar nuevos commits sin incrementarlo no tiene efecto, y `/plugin update` informa "already at the latest version". Para un plugin [cargado en su lugar](#plugin-caching-and-file-resolution), el nuevo contenido se carga de todas formas. | Plugins publicados con ciclos de lanzamiento estables |

1628| **Versión de SHA de commit** | Omita `version` tanto de `plugin.json` como de la entrada del marketplace | Los usuarios obtienen actualizaciones cada vez que cambia el commit resuelto de la fuente | Plugins internos o de equipo en desarrollo activo |

1629| **Versión de resumen** | Utilice una [fuente `archive`](/docs/es/plugin-marketplaces#zip-archives) y omita `version` tanto de `plugin.json` como de la entrada del marketplace | Con un pin `sha256`, los usuarios obtienen actualizaciones cuando cambia el pin. Sin uno, los usuarios obtienen actualizaciones cada vez que cambian los bytes del archivo zip alojado | Plugins publicados como archivos zip en un servidor estático o repositorio de artefactos |

1630 

1631Si utiliza versiones explícitas, siga [versionado semántico](https://semver.org) (`MAJOR.MINOR.PATCH`): incremente MAJOR para cambios que rompan la compatibilidad, MINOR para nuevas características, PATCH para correcciones de errores. Documente los cambios en un `CHANGELOG.md`.

1632 

1633***

1634 

1635<h2 id="see-also">

1636 Ver también

1637</h2>

1638 

1639* [Plugins](/docs/es/plugins) - Tutoriales y uso práctico

1640* [Marketplaces de plugins](/docs/es/plugin-marketplaces) - Crear y gestionar marketplaces

1641* [Skills](/docs/es/skills) - Detalles de desarrollo de skills

1642* [Subagents](/docs/es/sub-agents) - Configuración y capacidades del agent

1643* [Hooks](/docs/es/hooks) - Manejo de eventos y automatización

1644* [MCP](/docs/es/mcp) - Integración de herramientas externas

1645* [Configuración](/docs/es/settings) - Opciones de configuración para plugins

plugins/cli-hints.md +136 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Recomienda tu plugin desde tu CLI

6 

7> Solicita a los usuarios de Claude Code que instalen tu plugin del marketplace oficial emitiendo una etiqueta claude-code-hint desde tu CLI o SDK.

8 

9Si mantienes una CLI o SDK, tu herramienta puede solicitar a los usuarios de Claude Code que instalen tu plugin. Cuando tu CLI detecta que se está ejecutando dentro de Claude Code, debe escribir una etiqueta `<claude-code-hint />` de una sola línea en stderr. Claude Code elimina la línea de la salida de las herramientas Bash y PowerShell antes de que el modelo vea la salida, y luego muestra al usuario un mensaje de instalación de una sola vez.

10 

11Esta página se aplica solo si tu plugin está listado en `claude-plugins-official` u otro marketplace con uno de los [nombres de marketplace oficiales](/docs/es/plugins/security#official-marketplace-names) de Anthropic. El marketplace comunitario, `claude-community`, no es uno de ellos.

12 

13<Note>

14 Para publicar un plugin, consulta [Publicar y distribuir un plugin](/docs/es/plugins/publish).

15</Note>

16 

17<h2 id="emit-the-hint">

18 Emitir la sugerencia

19</h2>

20 

21Emite la etiqueta solo cuando `CLAUDECODE` o `CLAUDE_CODE_CHILD_SESSION` esté establecido, para que no aparezca cuando una persona ejecute tu CLI directamente.

22 

23Claude Code establece `CLAUDECODE=1` en los comandos que ejecuta a través de las herramientas Bash y PowerShell y en comandos hook. En v2.1.172 y posteriores también establece `CLAUDE_CODE_CHILD_SESSION=1` allí. Las variables difieren en qué procesos las llevan:

24 

25* **`CLAUDECODE`**: establecido por cada versión de Claude Code. Las extensiones IDE también lo establecen en sus terminales integradas, por lo que una puerta en `CLAUDECODE` solo también emite la etiqueta cuando una persona ejecuta tu CLI directamente en una de esas terminales

26* **`CLAUDE_CODE_CHILD_SESSION`**: establecido solo en subprocesos que inicia Claude Code. Úsalo cuando puedas requerir v2.1.172 o posterior

27 

28La [referencia de variables de entorno](/docs/es/env-vars) tiene los detalles.

29 

30Los siguientes ejemplos usan `CLAUDECODE` para el alcance más amplio y emiten una sugerencia para un plugin llamado `example-cli` en el marketplace oficial:

31 

32<CodeGroup>

33 ```javascript Node.js theme={null}

34 if (process.env.CLAUDECODE) {

35 process.stderr.write(

36 '<claude-code-hint v="1" type="plugin" value="example-cli@claude-plugins-official" />\n',

37 )

38 }

39 ```

40 

41 ```python Python theme={null}

42 import os, sys

43 

44 if os.environ.get("CLAUDECODE"):

45 print(

46 '<claude-code-hint v="1" type="plugin" value="example-cli@claude-plugins-official" />',

47 file=sys.stderr,

48 )

49 ```

50 

51 ```go Go theme={null}

52 if os.Getenv("CLAUDECODE") != "" {

53 fmt.Fprintln(os.Stderr,

54 `<claude-code-hint v="1" type="plugin" value="example-cli@claude-plugins-official" />`)

55 }

56 ```

57 

58 ```shell Shell theme={null}

59 if [ -n "$CLAUDECODE" ]; then

60 printf '%s\n' '<claude-code-hint v="1" type="plugin" value="example-cli@claude-plugins-official" />' >&2

61 fi

62 ```

63</CodeGroup>

64 

65Reemplaza `example-cli` con el nombre de tu plugin en el marketplace oficial.

66 

67Puedes emitir la sugerencia en cada invocación, porque Claude Code solicita cada plugin una sola vez.

68 

69Para verificar el emisor, ejecuta `CLAUDECODE=1 example-cli` en una terminal y confirma que la línea de etiqueta aparece en stderr, luego ejecuta `example-cli` sin la variable y confirma que no se imprime nada extra.

70 

71<h2 id="hint-format">

72 Formato de la sugerencia

73</h2>

74 

75La etiqueta debe ocupar su propia línea; Claude Code ignora una etiqueta incrustada a mitad de línea.

76 

77La etiqueta toma tres atributos, todos requeridos:

78 

79| Atributo | Descripción |

80| :------- | :-------------------------------------------------------- |

81| `v` | Versión del protocolo. `1` es el único valor compatible |

82| `type` | Tipo de sugerencia. `plugin` es el único valor compatible |

83| `value` | Identificador del plugin en forma `name@marketplace` |

84 

85Los valores pueden estar entre comillas dobles o sin comillas; un valor sin comillas no puede contener espacios en blanco.

86 

87Claude Code elimina la línea de la salida incluso cuando `v` o `type` no se reconoce.

88 

89<h2 id="check-when-the-prompt-appears">

90 Verificar cuándo aparece el mensaje

91</h2>

92 

93El mensaje aparece solo en sesiones de terminal interactivas. En ejecuciones de `claude -p`, en ejecuciones de subagentes y en la salida de comandos hook, la etiqueta se elimina y no se muestra ningún mensaje. Todas estas comprobaciones también deben pasar:

94 

95* **Oficial e instalable**: `value` nombra un plugin que Claude Code encuentra en su copia local de un marketplace oficial, que aún no está instalado y que ninguna política bloquea

96* **Análisis activado**: una sesión donde los análisis de Claude Code están desactivados nunca solicita, por ejemplo una con `DISABLE_TELEMETRY`, `DO_NOT_TRACK` o `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` establecidos, o una en un proveedor de terceros como Amazon Bedrock, donde se aplica la [exclusión automática de telemetría](/docs/es/data-usage#default-behaviors-by-api-provider)

97* **Límites de frecuencia**: un mensaje por sesión, un mensaje en total por plugin independientemente de la respuesta del usuario, y ninguno una vez que se han solicitado 100 plugins en esa máquina

98* **No desactivado**: el usuario no ha elegido **No, y no vuelvas a mostrar sugerencias de instalación de plugins**

99* **Sesión local y atendida**: el espacio de trabajo de la sesión es local en lugar de estar en una máquina en la nube o remota, y la sesión no se ejecuta sin supervisión. Por ejemplo, una sesión iniciada con `--cloud`, una que sirve Control Remoto, o un compañero de equipo de agentes nunca solicita

100 

101<h2 id="preview-what-the-user-sees">

102 Previsualizar lo que ve el usuario

103</h2>

104 

105Cuando las comprobaciones en [Verificar cuándo aparece el mensaje](#check-when-the-prompt-appears) pasan, Claude Code muestra un diálogo de **Recomendación de plugin** como el siguiente:

106 

107```text theme={null}

108─────────────────────────────────────────────────────────────

109 Recomendación de plugin

110 

111 El comando example-cli sugiere instalar un plugin.

112 

113 Plugin: example-cli

114 Marketplace: claude-plugins-official

115 Descripción: Integración oficial para implementaciones de example-cli

116 

117 ¿Te gustaría instalarlo?

118 ❯ 1. Sí, instalar

119 2. No

120 3. No, y no vuelvas a mostrar sugerencias de instalación de plugins

121 

122─────────────────────────────────────────────────────────────

123```

124 

125El diálogo nombra la primera palabra del comando shell que ejecutó Claude, para que los usuarios puedan detectar una discrepancia. Cada respuesta tiene un efecto:

126 

127* **Sí, instalar**: instala el plugin en [ámbito de usuario](/docs/es/plugins/install)

128* **No, y no vuelvas a mostrar sugerencias de instalación de plugins**: desactiva futuros mensajes de sugerencia para ese usuario

129* **Sin respuesta durante 30 segundos**: cuenta como **No**

130 

131<h2 id="next-steps">

132 Próximos pasos

133</h2>

134 

135* [Publicar y distribuir un plugin](/docs/es/plugins/publish): las rutas hacia cada marketplace, incluido el marketplace oficial, que la sugerencia requiere

136* [Referencia de comandos de plugins](/docs/es/plugins/cli-reference#plugin-install): el comando shell que instala el mismo plugin fuera de una sesión

plugins/cli-reference.md +841 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Referencia de comandos de plugins

6 

7> Referencia completa de los comandos de shell de plugins de Claude, /plugin y /reload-plugins en una sesión, y las banderas que cargan un plugin para una sesión.

8 

9Ejecuta 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.

10 

11Ejecuta `claude plugin --help` en tu compilación para confirmar qué subcomandos tiene tu versión.

12 

13<Note>

14 Estos casos se cubren en otras páginas:

15 

16 * **Instalar y gestionar pasos, y dónde se ejecuta `/plugin`**: consulta [Instalar y gestionar plugins](/docs/es/plugins/install)

17 * **Qué cambia un comando en el disco y qué ámbito tiene precedencia**: consulta [Referencia de carga de plugins](/docs/es/plugins/loading)

18 * **Qué significa un mensaje de error**: consulta [Solucionar problemas de plugins](/docs/es/plugins/troubleshooting)

19</Note>

20 

21<h2 id="claude-plugin-commands">

22 Comandos claude plugin

23</h2>

24 

25Ejecuta `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`](#plugin-in-a-session).

26 

27`claude plugins` es un alias para `claude plugin`.

28 

29Cada subcomando comparte estos códigos de salida, argumentos de plugins y valores de ámbito:

30 

31* **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](#plugin-eval).

32* **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.

33* **Ámbitos**: `--scope` toma `user`, `project` o `local`, y nombra el archivo de configuración al que escribe el comando. `update` también toma `managed`.

34 

35<h3 id="plugin-init">

36 plugin init

37</h3>

38 

39Crea un nuevo plugin en `~/.claude/skills/<name>/`. Se carga en tu próxima sesión como `<name>@skills-dir` sin necesidad de un paso de instalación.

40 

41`new` es un alias para `init`.

42 

43Para el flujo de trabajo de crear, probar y editar que comienza con este comando, consulta [Crear un plugin](/docs/es/plugins/create).

44 

45```bash theme={null}

46claude plugin init <name> [options]

47```

48 

49`<name>` se convierte en el nombre del directorio bajo `~/.claude/skills/` y el `name` del plugin en su manifiesto.

50 

51El comando no tiene una bandera para otra ubicación. Para crear un scaffold dentro de un proyecto, consulta [Crear un plugin](/docs/es/plugins/create).

52 

53| Bandera | Descripción |

54| :----------------------- | :--------------------------------------------------------------------------------------------------------- |

55| `--description <text>` | Descripción del manifiesto |

56| `--author <name>` | Nombre del autor. Por defecto es `git config user.name` |

57| `--author-email <email>` | Correo electrónico del autor. Por defecto es `git config user.email` |

58| `--with <components...>` | También crea archivos de inicio para `skills`, `agents`, `hooks`, `mcp`, `lsp`, `output-style` o `channel` |

59| `-f, --force` | Sobrescribe un `.claude-plugin/` existente en el destino |

60 

61Crea un plugin con archivos de skill y hook de inicio:

62 

63```bash theme={null}

64claude plugin init my-helper --with skills hooks

65```

66 

67Claude 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.

68 

69Claude 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:

70 

71* Un valor desconocido de `--with`

72* Un scaffold existente en el destino sin `--force`

73* Una configuración gestionada que bloquea plugins de directorio de skills

74 

75<h3 id="plugin-install">

76 plugin install

77</h3>

78 

79Instala un plugin desde un marketplace que hayas añadido. `i` es un alias para `install`.

80 

81```bash theme={null}

82claude plugin install <plugin> [options]

83```

84 

85La mayoría de los plugins se instalan sin un aviso. Para un plugin cuya entrada de marketplace [ejecuta un comando para instalarlo](/docs/es/plugins/host-marketplace) o [establece un `headersHelper` para su descarga](/docs/es/plugins/host-marketplace#how-users-accept-a-headershelper-command), Claude Code primero imprime el comando y pregunta `Run this command now? [y/N]`.

86 

87| Bandera | Descripción |

88| :-------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

89| `-s, --scope <scope>` | Ámbito de instalación: `user`, `project` o `local`. Por defecto es `user` |

90| `--config <key=value>` | Establece una opción [`userConfig`](/docs/es/plugins/manifest-reference) que declara el manifiesto del plugin. Repite la bandera para cada opción. Requiere Claude Code v2.1.147 o posterior |

91| `-y, --yes` | Acepta el comando de instalación mostrado sin el aviso `Run this command now?`. Se ignora cuando el comando se ejecuta dentro de una sesión de Claude Code, como desde la herramienta Bash o un hook. Requiere Claude Code v2.1.229 o posterior |

92| `--accept-command <sha256>` | Acepta el comando de instalación mostrado cuyo `sha256` una ejecución anterior de [`--json`](#plugin-json-result) reportó en `shownCommand`, en lugar de `-y`. No se puede combinar con `-y`. Consulta [Aceptar un comando de instalación mostrado](#accept-a-displayed-install-command). Requiere Claude Code v2.1.271 o posterior |

93| `--json` | Imprime el resultado como un objeto JSON en la última línea de stdout en lugar del mensaje legible por humanos, para usar en scripts. Consulta [Formato de resultado JSON](#plugin-json-result). Requiere Claude Code v2.1.268 o posterior |

94 

95Pasa `-y` desde tu propia terminal para aceptar el comando mostrado sin el aviso. Aquí está lo que sucede sin un TTY y cuando Claude ejecuta el comando:

96 

97* **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`

98* **Claude ejecuta el comando a través de su herramienta Bash**: `-y` se ignora. Ejecuta el comando desde tu propia terminal en su lugar

99 

100Instala un plugin para todos los que clonan el proyecto:

101 

102```bash theme={null}

103claude plugin install formatter@my-marketplace --scope project

104```

105 

106Claude Code imprime `Successfully installed plugin: formatter@my-marketplace (scope: project)`. Cuando nada nuevo se instala, la salida dice por qué:

107 

108* **Ya instalado en ese ámbito**: la salida es `Plugin "formatter@my-marketplace" is already installed (scope: project)` y el código de salida es `0`

109* **Rechazas un aviso de origen de comando**: la salida es `Aborted.` y el código de salida es `1`

110* **Rechazas un aviso 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`

111 

112<h4 id="plugin-json-result">

113 Formato de resultado JSON

114</h4>

115 

116Cuando 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.

117 

118Tres campos siempre están presentes:

119 

120* `command`: el subcomando que se ejecutó, como `install`

121* `outcome`: `ok` o `failed`

122* `message`: una descripción legible por humanos del resultado

123 

124Otros campos, como `pluginId`, `scope` y `failureCode`, aparecen solo cuando aplican.

125 

126Un 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.

127 

128<h4 id="accept-a-displayed-install-command">

129 Aceptar un comando de instalación mostrado

130</h4>

131 

132Cuando 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.

133 

134Para 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.

135 

136El `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.

137 

138Si `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`.

139 

140<h3 id="plugin-uninstall">

141 plugin uninstall

142</h3>

143 

144Elimina un plugin instalado de un ámbito. `remove` y `rm` son alias para `uninstall`.

145 

146```bash theme={null}

147claude plugin uninstall <plugin> [options]

148```

149 

150| Bandera | Descripción |

151| :-------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

152| `-s, --scope <scope>` | Desinstala del ámbito: `user`, `project` o `local`. Por defecto es `user` |

153| `--keep-data` | Preserva el directorio de datos persistentes del plugin, `~/.claude/plugins/data/<id>/` |

154| `--prune` | También elimina [dependencias](/docs/es/plugins/dependencies) auto-instaladas que ningún plugin restante necesita |

155| `-y, --yes` | Omite el aviso de confirmación de `--prune`. Requerido con `--prune` cuando stdin o stdout no es un TTY |

156| `--json` | Imprime el resultado como un objeto JSON en la última línea de stdout, en el [mismo formato que `plugin install --json`](#plugin-json-result). No se puede combinar con `--prune`. Requiere Claude Code v2.1.268 o posterior |

157 

158Desinstala un plugin del ámbito del proyecto:

159 

160```bash theme={null}

161claude plugin uninstall formatter@my-marketplace --scope project

162```

163 

164Claude Code imprime `Successfully uninstalled plugin: formatter (scope: project)`. Cuando el plugin no está instalado en ese ámbito, el comando imprime una línea que comienza con `Failed to uninstall plugin "formatter@my-marketplace":` y sale con `1`.

165 

166<h3 id="plugin-enable">

167 plugin enable

168</h3>

169 

170Habilita un plugin deshabilitado. Para un [plugin sincronizado desde claude.ai](/docs/es/plugins/loading#synced-plugins), pasa `<name>@synced` como el plugin.

171 

172```bash theme={null}

173claude plugin enable <plugin> [options]

174```

175 

176| Bandera | Descripción |

177| :-------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

178| `-s, --scope <scope>` | Ámbito para habilitar: `user`, `project` o `local`. Se auto-detecta cuando se omite |

179| `--json` | Imprime el resultado como un objeto JSON en la última línea de stdout, en el [mismo formato que `plugin install --json`](#plugin-json-result). Requiere Claude Code v2.1.268 o posterior |

180 

181Sin `--scope`, el comando verifica tus archivos de configuración en el orden local, proyecto, usuario, y usa el primer ámbito que menciona el plugin.

182 

183Si pasas un `--scope` donde el plugin no está declarado, el comando escribe una anulación o falla:

184 

185* **Un ámbito que [tiene precedencia](/docs/es/plugins/loading) sobre el que lo declara**: Claude Code escribe una anulación en el ámbito que pasaste. Por ejemplo, `claude plugin disable formatter --scope local` desactiva un plugin habilitado en el proyecto solo para ti

186* **Cualquier otro ámbito**: el comando falla con `Plugin "formatter" is installed at project scope, not user. Use --scope project or omit --scope to auto-detect.`

187 

188Si el plugin ya está habilitado en el ámbito 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.

189 

190Cuando el plugin declara [dependencias](/docs/es/plugins/dependencies), Claude Code también las habilita. El comando falla en estos casos:

191 

192* **Una dependencia no está instalada**: enable falla e imprime el comando `claude plugin install` para cada dependencia faltante

193* **Una dependencia está bloqueada por la política de plugins de tu organización**: enable falla y nombra la dependencia bloqueada

194* **Una dependencia está establecida en `false` en un ámbito con mayor precedencia que el ámbito de destino**: enable falla. Habilita la dependencia en ese ámbito, o pasa `--scope` para escribir allí

195 

196Vuelve a habilitar un plugin dondequiera que esté declarado:

197 

198```bash theme={null}

199claude plugin enable formatter

200```

201 

202Claude Code imprime `Successfully enabled plugin: formatter (scope: project)`, nombrando el ámbito que detectó.

203 

204<h3 id="plugin-disable">

205 plugin disable

206</h3>

207 

208Deshabilita un plugin sin desinstalarlo. Para un [plugin sincronizado desde claude.ai](/docs/es/plugins/loading#synced-plugins), pasa `<name>@synced` como el plugin.

209 

210```bash theme={null}

211claude plugin disable [plugin] [options]

212```

213 

214| Bandera | Descripción |

215| :-------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

216| `-a, --all` | Deshabilita cada plugin habilitado. No se puede combinar con un nombre de plugin o `--scope` |

217| `-s, --scope <scope>` | Ámbito para deshabilitar: `user`, `project` o `local`. Se auto-detecta cuando se omite |

218| `--json` | Imprime el resultado como un objeto JSON en la última línea de stdout, en el [mismo formato que `plugin install --json`](#plugin-json-result). Requiere Claude Code v2.1.268 o posterior |

219 

220Sin `--scope`, el ámbito se auto-detecta en el mismo orden local, proyecto, usuario que [`plugin enable`](#plugin-enable).

221 

222Si 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`](#plugin-enable) hace para un plugin ya habilitado.

223 

224El comando falla para un plugin que aún es requerido:

225 

226* **Otro plugin habilitado [depende de](/docs/es/plugins/dependencies) él**: el comando falla y nombra los dependientes a deshabilitar primero

227* **Tu organización lo requiere como un plugin sincronizado**: el comando falla y no guarda nada

228 

229Deshabilita un plugin:

230 

231```bash theme={null}

232claude plugin disable formatter

233```

234 

235Claude Code imprime `Successfully disabled plugin: formatter (scope: project)`.

236 

237<h3 id="plugin-update">

238 plugin update

239</h3>

240 

241Actualiza 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.

242 

243```bash theme={null}

244claude plugin update <plugin> [options]

245```

246 

247| Bandera | Descripción |

248| :-------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

249| `-s, --scope <scope>` | Ámbito a actualizar: `user`, `project`, `local` o `managed`. Por defecto es el ámbito en el que está instalado el plugin |

250| `-y, --yes` | Acepta un comando de instalación cambiado de un plugin [command-source](/docs/es/plugins/host-marketplace), sin el aviso. Requerido cuando stdin o stdout no es un TTY, a menos que pases `--accept-command`. Requiere Claude Code v2.1.229 o posterior |

251| `--accept-command <sha256>` | Acepta el comando declarado por el marketplace cuyo `sha256` una ejecución anterior de [`--json`](#plugin-json-result) reportó en `shownCommand`, en lugar de `-y`. No se puede combinar con `-y`. Requiere Claude Code v2.1.271 o posterior |

252| `--json` | Imprime el resultado como un objeto JSON en la última línea de stdout, en el [mismo formato que `plugin install --json`](#plugin-json-result). Requiere Claude Code v2.1.268 o posterior |

253 

254`managed` es el único ámbito que puedes actualizar pero no instalar. Para plugins instalados por administrador, consulta [Gestionar plugins para tu organización](/docs/es/plugins/org).

255 

256Actualiza un plugin:

257 

258```bash theme={null}

259claude plugin update formatter@my-marketplace

260```

261 

262Claude 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`.

263 

264Puedes 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.

265 

266<h3 id="plugin-list">

267 plugin list

268</h3>

269 

270Lista plugins instalados con su versión, ámbito y estado.

271 

272```bash theme={null}

273claude plugin list [options]

274```

275 

276| Bandera | Descripción |

277| :------------ | :---------------------------------------------------------------------------------------------------- |

278| `--json` | Imprime la lista como JSON |

279| `--available` | También lista plugins que tus marketplaces ofrecen que no has instalado. No tiene efecto sin `--json` |

280 

281Claude Code agrupa la salida legible por humanos por cómo se carga cada plugin:

282 

283* **`Installed plugins:`**: plugins que instalaste desde un marketplace

284* **`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`

285* **`Skills-directory plugins (.claude/skills/*):`**: plugins que Claude Code encontró en un directorio de skills

286* **`Synced from claude.ai`**: [plugins sincronizados desde tu cuenta claude.ai](/docs/es/plugins/loading#synced-plugins)

287 

288Sin nada en ningún grupo, Claude Code imprime ``No plugins installed. Use `claude plugin install` to install a plugin.``

289 

290<h4 id="json-output">

291 Salida JSON

292</h4>

293 

294Con `--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.

295 

296| Campo | Tipo | Descripción |

297| :------------- | :--------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

298| `id` | string | `name@marketplace` para installs, `name@inline` para plugins de solo sesión, `name@skills-dir` para plugins de directorio de skills, `name@synced` para plugins sincronizados desde claude.ai |

299| `version` | string | Para una instalación de marketplace, la [versión que Claude Code calculó](/docs/es/plugins/loading#versions-and-updates) en la instalación. Para un plugin de solo sesión, directorio de skills o sincronizado, el `version` del manifiesto, o `unknown` cuando no declara ninguno |

300| `scope` | string | `user`, `project`, `local` o `managed` para installs; `user` o `project` para plugins de directorio de skills; `session` para plugins de solo sesión; `synced` para plugins sincronizados desde claude.ai |

301| `enabled` | boolean | Si el plugin está habilitado en tu configuración fusionada |

302| `installPath` | string | Directorio desde el que se carga el plugin |

303| `installedAt` | string | Marca de tiempo ISO de la instalación. Solo installs de marketplace |

304| `lastUpdated` | string | Marca de tiempo ISO de la última actualización. Solo installs de marketplace |

305| `projectPath` | string | Proyecto al que pertenece la instalación. Solo ámbito `project` y `local` |

306| `mcpServers` | object | Las definiciones de servidor MCP del plugin, cuando un plugin instalado de marketplace tiene alguno |

307| `errors` | array of strings | Errores de carga, cuando el plugin falló al cargar |

308| `notes` | array of strings | Advertencias de autoría para un plugin que cargó y funciona |

309| `errorDetails` | array of objects | Un objeto por entrada de `errors`, dando su `type` de diagnóstico y los nombres a los que se refiere, como el plugin, marketplace, servidor o archivo. Requiere Claude Code v2.1.268 o posterior |

310| `noteDetails` | array of objects | Los mismos objetos de detalle para cada entrada de `notes`. Requiere Claude Code v2.1.268 o posterior |

311 

312Con `--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.

313 

314| Campo | Tipo | Descripción |

315| :---------------- | :--------------- | :--------------------------------------------------------------------------------------------------------------------------------------- |

316| `pluginId` | string | `name@marketplace` |

317| `name` | string | El nombre del plugin en el marketplace |

318| `marketplaceName` | string | El marketplace que lo ofrece |

319| `source` | string or object | La [source](/docs/es/plugins/marketplace-reference) de la entrada del marketplace: una string para una ruta relativa, un objeto de otra forma |

320| `description` | string | La descripción de la entrada, cuando tiene una |

321| `version` | string | La versión de la entrada, cuando declara una |

322| `installCount` | number | Recuento de instalaciones, cuando Claude Code tiene uno para el plugin |

323 

324<h3 id="plugin-details">

325 plugin details

326</h3>

327 

328Muestra el inventario de componentes de un plugin y su costo de token proyectado.

329 

330El 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`.

331 

332```bash theme={null}

333claude plugin details <name>

334```

335 

336El comando no toma banderas más allá de `--help`.

337 

338Muestra lo que contribuye un plugin instalado:

339 

340```bash theme={null}

341claude plugin details formatter

342```

343 

344Claude Code imprime el nombre, versión, descripción y fuente del plugin, luego estas secciones:

345 

346* **`Component inventory`**: los skills, agents, hooks, servidores MCP y servidores LSP del plugin

347* **`Projected token cost`**: los tokens siempre activos que el plugin añade a cada sesión

348* **`Per-component (rounded)`**: estimaciones siempre activas y bajo invocación para cada skill, agent y comando. Se omite cuando el plugin no tiene ninguno

349 

350Para lo que significan las dos figuras de costo, consulta [Medir costo y uso de plugins](/docs/es/plugins/measure).

351 

352Para un plugin que no está cargado, Claude Code imprime ``Plugin "formatter" not found. Run `claude plugin list` to see installed plugins, or pass --plugin-dir <path> to load one from disk.`` y sale con `1`.

353 

354<h3 id="plugin-prune">

355 plugin prune

356</h3>

357 

358Elimina [dependencias](/docs/es/plugins/dependencies) 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`.

359 

360```bash theme={null}

361claude plugin prune [options]

362```

363 

364| Bandera | Descripción |

365| :-------------------- | :--------------------------------------------------------------------------- |

366| `-s, --scope <scope>` | Prune en ámbito: `user`, `project` o `local`. Por defecto es `user` |

367| `--dry-run` | Lista lo que se eliminaría sin eliminarlo |

368| `-y, --yes` | Omite el aviso de confirmación. Requerido cuando stdin o stdout no es un TTY |

369 

370Previsualiza lo que un prune eliminaría:

371 

372```bash theme={null}

373claude plugin prune --dry-run

374```

375 

376Claude 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`.

377 

378Sin `--dry-run`, el comando elimina las dependencias huérfanas solo después de que confirmes en el aviso o pases `-y`.

379 

380El código de salida es `0` sin importar lo que respondas en el aviso.

381 

382Lo que `prune` hace depende de si una terminal está adjunta y si pasas `-y`:

383 

384| Terminal y banderas | Qué sucede |

385| :------------------------------ | :-------------------------------------------------------------------------------------------- |

386| Terminal interactiva, sin `-y` | Lista las dependencias huérfanas y pregunta `Remove? [y/N]` |

387| Cualquier terminal, `-y` | Las elimina e imprime `Removed N auto-installed plugins: <names>` |

388| stdin o stdout no TTY, sin `-y` | Imprime la lista y ``Not a TTY — run `claude plugin prune -y` to remove.``, sin eliminar nada |

389 

390<h3 id="plugin-eval">

391 plugin eval

392</h3>

393 

394Ejecuta los [casos eval](/docs/es/plugin-evals) de un plugin e informa resultados puntuados. Requiere Claude Code v2.1.269 o posterior.

395 

396Cada 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.

397 

398Consulta [Probar plugins con evals](/docs/es/plugin-evals) para el formato de caso, calificadores, resultados y uso de CI.

399 

400```bash theme={null}

401claude plugin eval [target] [options]

402```

403 

404El `target` opcional por defecto es el directorio actual y toma cualquiera de estas formas:

405 

406* Un directorio de plugin

407* Un archivo único `prompt.md` o `case.yaml`

408* Un plugin instalado como `name` o `name@marketplace`

409* `name@skills-dir`

410 

411Pon 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.

412 

413Esta 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`.

414 

415| Opción | Descripción | Por defecto |

416| :------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------- |

417| `--runs <n>` | Ejecuciones por caso en cada [arm](/docs/es/plugin-evals#compare-against-a-no-plugin-baseline) | El `runs` de cada caso, si no 3 |

418| `-j, --concurrency <n>` | Sesiones de agente a ejecutar a la vez, 1 a 8. Comparten tu límite de velocidad | `1` |

419| `--model <model>` | Modelo para el agente bajo prueba | El `model` de cada caso, si no `ANTHROPIC_MODEL` si está establecido, si no el predeterminado de Claude Code |

420| `--judge-model <model>` | Modelo para calificadores `llm` y `baseline` | Un modelo pequeño rápido |

421| `--ablation <mode>` | `none` o `with-without`. Consulta [Comparar contra una línea base sin plugin](/docs/es/plugin-evals#compare-against-a-no-plugin-baseline) | `with-without` cuando un plugin se resuelve, si no `none` |

422| `--threshold <0..1>` | Sale con 1 si algún caso puntúa por debajo de esto | `1.0` |

423| `--max-cost-usd <usd>` | Detente antes de la próxima ejecución una vez que el gasto alcance esto, sale con 2, e informa resultados parciales | Sin límite |

424| `--allow-tools <tools...>` | Otorga herramientas más allá del conjunto de solo lectura, como `Bash`, `Write`, `Edit` o `"mcp__plugin_<plugin>_<server>__*"`. Consulta [Otorgar herramientas](/docs/es/plugin-evals#grant-tools) | |

425| `--scaffold` | Ejecuta el [`scaffold_script`](/docs/es/plugin-evals#add-setup-or-history-with-case-yaml) de cada caso | Apagado |

426| `--trust-plugin` | Omite el aviso de confianza de primera ejecución, para CI. Consulta [Qué puede acceder una ejecución](/docs/es/plugin-evals#security) | Apagado |

427| `--mocks <mode>` | `record` u `off`. Consulta [Simular servidores MCP](/docs/es/plugin-evals#mock-mcp-servers) | `record` |

428| `--eval-dir <dir>` | Directorio debajo del plugin que contiene los casos | El `experimental.evals` del manifiesto, si no `evals` |

429| `--json [path]` | Imprime el [documento de resultado](/docs/es/plugin-evals#json-result) a stdout, o escríbelo en una ruta `.json` | |

430| `--no-publish` | Mantén el informe HTML local | |

431 

432El código de salida informa cómo terminó la ejecución. Para actuar sobre él en un pipeline, consulta [Ejecutar evals en CI](/docs/es/plugin-evals#run-evals-in-ci).

433 

434| Código de salida | Significado |

435| :--------------- | :------------------------------------------------------------------------- |

436| `0` | Cada caso cumple el umbral |

437| `1` | Un caso fallido, un error de carga, o un directorio de plugin no confiable |

438| `2` | Una ejecución parcial |

439| `130` | Interrumpido |

440| `143` | Terminado |

441 

442<h3 id="plugin-eval-init">

443 plugin eval init

444</h3>

445 

446Crea un conjunto eval para el plugin en el directorio actual. Requiere Claude Code v2.1.269 o posterior. Consulta [Crear tu primer conjunto eval](/docs/es/plugin-evals#create-your-first-eval-suite).

447 

448```bash theme={null}

449claude plugin eval init [name] [options]

450```

451 

452En 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:

453 

4541. Lee el plugin

4552. Te pregunta qué debería hacer bien

4563. Propone casos y calificadores

4574. Escribe los archivos de caso

4585. Ejecuta los casos y revisa las calificaciones contigo para verificar que los calificadores puntúen de la forma que lo harías

459 

460Con `--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.

461 

462El `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. La entrevista no necesita uno.

463 

464El comando acepta estas opciones:

465 

466| Opción | Descripción | Por defecto |

467| :------------------ | :----------------------------------------------------------------------------------------------------------- | :---------------------------------------------------- |

468| `--bare` | Escribe un `prompt.md` en blanco y `graders/criteria.md` para `<name>` en su lugar de ejecutar la entrevista | |

469| `-i, --interactive` | Requiere la entrevista. Falla sin una terminal en su lugar de escribir una plantilla | |

470| `--eval-dir <dir>` | Directorio debajo del directorio actual para escribir casos en | El `experimental.evals` del manifiesto, si no `evals` |

471 

472<h3 id="plugin-tag">

473 plugin tag

474</h3>

475 

476Crea 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.

477 

478Para cuándo etiquetar una versión, consulta [Publicar un plugin](/docs/es/plugins/publish).

479 

480```bash theme={null}

481claude plugin tag [path] [options]

482```

483 

484El `[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.

485 

486| Bandera | Descripción |

487| :-------------------- | :---------------------------------------------------------------------------------------------- |

488| `--push` | Empuja la etiqueta a `--remote` después de crearla |

489| `--dry-run` | Imprime lo que se etiquetaría sin crear la etiqueta |

490| `-f, --force` | Omite los controles de árbol de trabajo sucio y etiqueta-ya-existe |

491| `-m, --message <msg>` | Mensaje de anotación de etiqueta. `%s` representa la versión. Por defecto es `<name> <version>` |

492| `--remote <name>` | Remoto al que empujar con `--push`. Por defecto es `origin` |

493 

494Previsualiza la etiqueta para un plugin en un checkout de marketplace:

495 

496```bash theme={null}

497claude plugin tag plugins/formatter --dry-run

498```

499 

500Claude Code imprime el plan:

501 

502* El nombre del plugin

503* La versión y de qué archivo vino

504* La entrada de marketplace coincidente, cuando hay una

505* El nombre de la etiqueta

506* Los comandos `git tag` y `git push` que ejecutaría

507 

508Sin `--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.

509 

510El comando sale con `1` e imprime la razón cuando no puede etiquetar de forma segura. Las razones comunes son:

511 

512* Sin `version` en `plugin.json` o la entrada de marketplace

513* La etiqueta ya existe

514* El árbol de trabajo está sucio

515 

516<h3 id="plugin-validate">

517 plugin validate

518</h3>

519 

520Valida 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](/docs/es/plugins/create). Para lo que el validador verifica en cada manifiesto, consulta la [referencia de manifiesto de plugin](/docs/es/plugins/manifest-reference) y la [referencia de marketplace](/docs/es/plugins/marketplace-reference).

521 

522```bash theme={null}

523claude plugin validate <path> [options]

524```

525 

526| Bandera | Descripción |

527| :--------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

528| `--strict` | Trata advertencias como errores, por lo que campos no reconocidos y metadatos faltantes que el runtime tolera fallan la ejecución. Requiere Claude Code v2.1.145 o posterior |

529| `--json` | Salida del informe de validación como un objeto JSON con los mismos códigos de salida. Requiere Claude Code v2.1.259 o posterior |

530 

531Valida un plugin antes de confirmarlo:

532 

533```bash theme={null}

534claude plugin validate ./my-plugin --strict

535```

536 

537<h4 id="validate-a-directory">

538 Validar un directorio

539</h4>

540 

541El `<path>` es un archivo de manifiesto o un directorio. Dado un directorio, Claude Code elige qué validar por lo que encuentra allí:

542 

543* `.claude-plugin/marketplace.json`, cuando existe

544* Si no `.claude-plugin/plugin.json`

545* 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:

546 * Un directorio nombrado `skills`, `agents` o `commands`: los archivos dentro de él

547 * Un directorio nombrado `.claude`: los directorios `skills`, `agents` y `commands` dentro de él

548 * Cualquier otro directorio: esos tres directorios bajo su `.claude`

549 

550Claude Code no sigue enlaces simbólicos dentro del directorio que nombras. Lo que hace depende de dónde esté el enlace:

551 

552* **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.

553* **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.

554* **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.

555 

556Algunos archivos no son leídos por una ejecución de validación:

557 

558* **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

559* **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

560* **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. Para encontrar errores en esos archivos, valida cada directorio de plugin

561 

562<h4 id="output-and-exit-codes">

563 Salida y códigos de salida

564</h4>

565 

566Claude 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:

567 

568| Código de salida | Línea de veredicto | Significado |

569| :--------------- | :----------------------------------------------------------------------------- | :------------------------------------------------------------ |

570| `0` | `Validation passed` o `Validation passed with warnings` | El manifiesto carga. Con `--strict`, sin advertencias tampoco |

571| `1` | `Validation failed` o `Validation failed (--strict treats warnings as errors)` | Un error, o una advertencia bajo `--strict` |

572| `2` | `Unexpected error during validation: <reason>` | El validador en sí falló, como en una ruta ilegible |

573 

574Con `--json`, Claude Code escribe el informe a stdout como un objeto JSON con estos campos de nivel superior:

575 

576* `success`: el mismo veredicto que el código de salida da

577* `strict`: si la ejecución trató advertencias como errores

578* `target`: la ruta resuelta que Claude Code validó

579* `manifest`: el resultado del propio manifiesto, o `null` para una ejecución sin manifiesto

580* `contents`: resultados por archivo, cada uno nombrando su `file` y llevando arrays `errors`, `warnings` y `notes`

581 

582En salida `2`, el comando no escribe nada a stdout. El mensaje de error va a stderr.

583 

584<h2 id="claude-plugin-marketplace-commands">

585 Comandos claude plugin marketplace

586</h2>

587 

588Ejecuta `claude plugin marketplace <subcommand>` desde tu shell para añadir, listar, actualizar y eliminar los marketplaces desde los que instalas plugins.

589 

590* **Códigos de salida**: estos subcomandos siguen la [convención de código de salida](#claude-plugin-commands) de los comandos de plugin

591* **Ámbitos**: su bandera `--scope` no tiene forma corta `-s`

592 

593Para qué es un marketplace y cómo Claude Code lo cachea, consulta [Referencia de carga de plugins](/docs/es/plugins/loading).

594 

595<h3 id="plugin-marketplace-add">

596 plugin marketplace add

597</h3>

598 

599Añ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.

600 

601Después de añadirlo, Claude Code instala cualquier [dependencia](/docs/es/plugins/dependencies) que tus plugins instalados estaban perdiendo.

602 

603```bash theme={null}

604claude plugin marketplace add <source> [options]

605```

606 

607| Bandera | Descripción |

608| :-------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

609| `--scope <scope>` | Archivo de configuración para declarar el marketplace en: `user`, `project` o `local`. Por defecto es `user` |

610| `--sparse <paths...>` | Limita el checkout de git a estos directorios, para monorepos. Solo fuentes `github` y `git` |

611| `--claudeai` | Lee el argumento como el nombre de un [marketplace alojado en claude.ai](/docs/es/plugins/install#add-from-claude-ai) en su lugar de una fuente. Requiere Claude Code v2.1.273 o posterior |

612 

613`<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](/docs/es/plugins/marketplace-reference).

614 

615| Escribes | Tipo de fuente | Cómo Claude Code lo obtiene |

616| :------------------------------------------------------------------------------------------- | :------------- | :--------------------------------------------------------------------------------------------------------------------------------- |

617| `owner/repo`, `owner/repo#ref` o `owner/repo@ref` | `github` | Clona el repositorio de GitHub, fijado a `ref` cuando se da. El propietario y el repo deben seguir las reglas de nombres de GitHub |

618| `user@host:path[.git][#ref]` | `git` | Clona sobre SSH |

619| `https://example.com/repo.git[#ref]`, o una URL que contiene `/_git/` | `git` | Clona sobre HTTPS, incluyendo URLs de Azure DevOps |

620| `https://github.com/owner/repo` o `https://gitlab.com/namespace/project` | `git` | Clona sobre HTTPS después de añadir `.git` |

621| Cualquier otra URL `http://` o `https://`, incluyendo un host de git auto-alojado sin `.git` | `url` | Obtiene la URL como un `marketplace.json`. Para clonar un repositorio allí en su lugar, añade `.git` |

622| `./path`, `../path`, `/path` o `~/path` a un directorio | `directory` | Lee el directorio en su lugar. En Windows, las formas `.\`, `..\` y `C:\` también funcionan |

623| Las mismas formas de ruta, a un archivo `.json` | `file` | Lee el archivo en su lugar |

624 

625Para 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`](/docs/es/settings-reference#extraknownmarketplaces) en su lugar. Claude Code clona una entrada de git sin importar si su URL termina en `.git`.

626 

627Claude Code también clona una URL de `gitlab.com` con subgrupos anidados, como `https://gitlab.com/group/subgroup/project`.

628 

629Añade un marketplace y compártelo con el proyecto:

630 

631```bash theme={null}

632claude plugin marketplace add your-org/your-marketplace --scope project

633```

634 

635Claude 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:

636 

637* **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`

638* **Fuente no reconocida**: la salida es `Invalid marketplace source format. Try: owner/repo, https://..., or ./path` y el código de salida es `1`

639* **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

640 

641Añade un [marketplace alojado en claude.ai](/docs/es/plugins/install#add-from-claude-ai) por el nombre impreso en la sección `From claude.ai:` de `claude plugin marketplace list`:

642 

643```bash theme={null}

644claude plugin marketplace add --claudeai claudeai-organization-library

645```

646 

647Con `--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.

648 

649<h3 id="plugin-marketplace-list">

650 plugin marketplace list

651</h3>

652 

653Lista cada marketplace que has añadido, con su fuente.

654 

655```bash theme={null}

656claude plugin marketplace list [options]

657```

658 

659| Bandera | Descripción |

660| :------- | :------------------------- |

661| `--json` | Imprime la lista como JSON |

662 

663Claude Code imprime `Configured marketplaces:` y una línea `Source:` por marketplace, o `No marketplaces configured`.

664 

665Con `--json`, Claude Code imprime un array con un objeto por marketplace, llevando los campos a continuación. Cada campo es una string.

666 

667| Campo | Descripción |

668| :---------------- | :--------------------------------------------------------------------------- |

669| `name` | El nombre del marketplace |

670| `source` | `github`, `git`, `url`, `directory`, `file` o `claudeai` |

671| `repo` | `owner/repo`. Solo fuentes `github` |

672| `url` | La URL de clonación u obtención. Solo fuentes `git` y `url` |

673| `path` | La ruta local. Solo fuentes `directory` y `file` |

674| `ref` | La rama o etiqueta fijada. Fuentes `github` y `git`, solo cuando está fijada |

675| `installLocation` | Dónde Claude Code cachó el marketplace |

676 

677Un marketplace de [claude.ai](/docs/es/plugins/install#add-from-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`.

678 

679Si tus sesiones de terminal [sincronizan plugins desde tu cuenta claude.ai](/docs/es/plugins/loading#synced-plugins), 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.

680 

681Para añadir un marketplace de esa sección, consulta [Añadir un marketplace desde claude.ai](/docs/es/plugins/install#add-from-claude-ai).

682 

683La salida de `--json` cubre solo marketplaces configurados y deja la sección fuera.

684 

685<h3 id="plugin-marketplace-remove">

686 plugin marketplace remove

687</h3>

688 

689Elimina la declaración de un marketplace de tu configuración. `rm` es un alias para `remove`.

690 

691<Warning>

692 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. Sin `--scope`, el comando elimina la declaración de cada ámbito. Para actualizar un marketplace sin perder sus plugins, ejecuta `plugin marketplace update` en su lugar.

693</Warning>

694 

695```bash theme={null}

696claude plugin marketplace remove <name> [options]

697```

698 

699El `<name>` es el nombre del marketplace que `plugin marketplace list` muestra, no la fuente que pasaste a `add`.

700 

701| Bandera | Descripción |

702| :---------------- | :------------------------------------------------------------------------------------------------------------------------------------------- |

703| `--scope <scope>` | Elimina la declaración de un ámbito de configuración: `user`, `project` o `local`. Sin él, Claude Code elimina la declaración de cada ámbito |

704 

705Elimina un marketplace de cada ámbito:

706 

707```bash theme={null}

708claude plugin marketplace remove your-marketplace

709```

710 

711Claude Code imprime `Successfully removed marketplace: your-marketplace`, añadiendo `(from project settings)` cuando lo limitaste. 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.`

712 

713<h3 id="plugin-marketplace-update">

714 plugin marketplace update

715</h3>

716 

717Actualiza 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.

718 

719```bash theme={null}

720claude plugin marketplace update [name]

721```

722 

723El comando no toma banderas más allá de `--help`.

724 

725Actualiza un marketplace:

726 

727```bash theme={null}

728claude plugin marketplace update your-marketplace

729```

730 

731Claude Code imprime `Successfully updated marketplace: your-marketplace`. Cuando omites el nombre, imprime un recuento como `Successfully updated 2 marketplaces`. Sin marketplaces añadidos, imprime `No marketplaces configured` y sale con `0`.

732 

733<h2 id="plugin-in-a-session">

734 /plugin en una sesión

735</h2>

736 

737Dentro 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 para `/plugin`.

738 

739Solo puedes ejecutar estos comandos en una sesión de terminal interactiva. En una ejecución no interactiva como `claude -p`, Claude Code responde que `/plugin` no está disponible en este entorno.

740 

741Para qué superficies tienen `/plugin`, cómo instalar sin él, y qué muestra cada pestaña del panel, consulta [Instalar y gestionar plugins](/docs/es/plugins/install).

742 

743Un `<plugin>` es un `name` de plugin o `name@marketplace`.

744 

745La tabla a continuación lista cada forma de sesión. Los subcomandos de shell `init`, `update`, `details`, `prune`, `eval` y `eval init` no tienen forma de sesión.

746 

747| Comando | Alias | Qué hace |

748| :-------------------------------------------------- | :--------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

749| `/plugin` | | Abre el panel en la pestaña **Discover**. Cualquier primera palabra no reconocida después de `/plugin` hace lo mismo |

750| `/plugin help` | `/plugin --help`, `/plugin -h` | Muestra la lista de uso de subcomandos de `/plugin` |

751| `/plugin list [--enabled\|--disabled]` | `ls` | Imprime tus plugins instalados de marketplace en línea, con versión, ámbito y estado. Una bandera de filtro muestra solo ese estado. Un plugin cuyo estado de habilitación aún no se ha aplicado está marcado como `— run /reload-plugins to apply`. Requiere Claude Code v2.1.163 o posterior |

752| `/plugin install` | `i` | Abre la pestaña **Discover** |

753| `/plugin install <plugin>` | `i` | Abre los detalles del plugin en la pestaña **Discover**. Con `name@marketplace`, los abre en la lista de ese marketplace |

754| `/plugin install <plugin> --marketplace <source>` | `i` | Añade el marketplace en `<source>` cuando aún no lo has añadido, pidiéndote que confirmes primero, luego abre los detalles del plugin. Consulta [Añadir un marketplace e instalar en un comando](/docs/es/plugins/install#add-a-marketplace-and-install-in-one-command). Requiere Claude Code v2.1.275 o posterior |

755| `/plugin manage` | | Abre la pestaña **Installed** |

756| `/plugin stats` | | Abre la pestaña **Stats**, en sesiones donde [`/skill-doctor`](/docs/es/skills#find-unused-skills) está disponible. En cualquier otro lugar abre el panel en la pestaña **Discover** |

757| `/plugin enable <plugin>` | | Abre la pestaña **Installed** en el plugin y lo habilita |

758| `/plugin disable <plugin>` | | Abre la pestaña **Installed** en el plugin y lo deshabilita |

759| `/plugin uninstall <plugin>` | | Abre la pestaña **Installed** en el plugin y lo desinstala |

760| `/plugin configure <plugin>` | `config` | Abre el diálogo [`userConfig`](/docs/es/plugins/manifest-reference) del plugin, o reporta que el plugin no declara ninguno. Requiere Claude Code v2.1.147 o posterior |

761| `/plugin validate <path>` | | Imprime el mismo informe que `claude plugin validate`, en línea |

762| `/plugin tag [path] [--push] [--dry-run] [--force]` | | Crea la etiqueta de versión como `claude plugin tag` hace. Acepta `--push`, `--dry-run` y `--force` o `-f`; con cualquier otra bandera o un argumento extra, Claude Code imprime el uso en su lugar |

763| `/plugin marketplace` | `market` | No hace nada visible. Pasa `add`, `list`, `update` o `remove` |

764| `/plugin marketplace add [source]` | `market add` | Con una fuente, la añade e informa el resultado. Sin una, abre la entrada **Add marketplace** |

765| `/plugin marketplace list` | `market list` | Imprime tus nombres de marketplace en línea |

766| `/plugin marketplace update [name]` | `market update` | Abre la pestaña **Marketplaces**. Con un nombre, actualiza ese marketplace allí |

767| `/plugin marketplace remove [name]` | `market remove`, `market rm`, `marketplace rm` | Abre la pestaña **Marketplaces**. Con un nombre, elimina ese marketplace allí |

768 

769Si nombras un plugin que no está instalado en el proyecto actual en `/plugin enable`, `disable`, `uninstall` o `configure`, Claude Code imprime `Plugin "<plugin>" is not installed in this project` en su lugar de actuar.

770 

771<h2 id="reload-plugins">

772 /reload-plugins

773</h2>

774 

775Aplica 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.

776 

777Cuando 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.

778 

779```text theme={null}

780/reload-plugins [--force]

781```

782 

783| Bandera | Descripción |

784| :-------- | :---------------------------------------------------------------------------------------------------- |

785| `--force` | Aplica la recarga incluso cuando invalidaría el caché de prompt. `force` sin guiones también funciona |

786 

787<h3 id="reload-summary">

788 Resumen de recarga

789</h3>

790 

791Claude 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.`

792 

793El 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.

794 

795Cuando las [dependencias](/docs/es/plugins/dependencies) de un plugin recargado están faltando, Claude Code las instala, recarga de nuevo, y añade `(+ N dependencies: <names>) resolved` al resumen.

796 

797<h3 id="reloads-that-change-mcp-tools">

798 Recargas que cambian herramientas MCP

799</h3>

800 

801Cuando 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](/docs/es/prompt-caching#enabling-or-disabling-a-plugin), 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.

802 

803<h3 id="sessions-without-an-interactive-terminal">

804 Sesiones sin una terminal interactiva

805</h3>

806 

807`/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](/docs/es/headless) con `-p`. Requiere Claude Code v2.1.260 o posterior.

808 

809En 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](/docs/es/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.

810 

811La recarga en esas sesiones no conecta o desconecta servidores MCP de plugins. Esos cambios toman efecto en tu próxima sesión.

812 

813<h2 id="flags-that-load-a-plugin-for-one-session">

814 Banderas que cargan un plugin para una sesión

815</h2>

816 

817Dos banderas de `claude` cargan un plugin para una sesión solamente, sin instalarlo. Ambas son repetibles.

818 

819Los 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](/docs/es/plugins/create#develop-without-a-marketplace).

820 

821| Bandera | Descripción | Ejemplo |

822| :-------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------- |

823| `--plugin-dir <path>` | Carga un plugin desde un directorio o un archivo `.zip` de uno. Una carpeta de plugins carga cada carpeta hijo que contiene un `.claude-plugin/plugin.json`. Cada bandera toma una ruta | `claude --plugin-dir ./my-plugin --plugin-dir ./other.zip` |

824| `--plugin-url <url>` | Obtiene un archivo `.zip` de plugin desde una URL. Repite la bandera, o pasa varias URLs separadas por espacios en un valor entrecomillado | `claude --plugin-url "https://example.com/a.zip https://example.com/b.zip"` |

825 

826Un plugin que cualquiera de esas banderas carga es un plugin de solo sesión. `claude plugin list` lo muestra como `<name>@inline` con ámbito `session`, pero solo cuando la misma bandera precede al subcomando. Por ejemplo, ejecuta `claude --plugin-dir ./my-plugin plugin list`.

827 

828Cuando 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](/docs/es/plugins/loading).

829 

830Un administrador puede rechazar ambas banderas, y carpetas nombradas en la variable [`CLAUDE_CODE_PLUGIN_DIRS`](/docs/es/env-vars#variables), con la configuración gestionada [`disableSideloadFlags`](/docs/es/settings-reference#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.

831 

832Desde el Agent SDK, la opción [`plugins`](/docs/es/agent-sdk/plugins) es el equivalente de `--plugin-dir`.

833 

834<h2 id="next-steps">

835 Próximos pasos

836</h2>

837 

838* [Instalar y gestionar plugins](/docs/es/plugins/install): las mismas operaciones que pasos, con lo que ves en cada uno

839* [Referencia de carga de plugins](/docs/es/plugins/loading): qué cambia cada comando en el disco y qué ámbito toma efecto

840* [Solucionar problemas de plugins](/docs/es/plugins/troubleshooting): instalar, marketplace, cargar y mensajes de error de validación con sus soluciones

841* [Referencia de manifiesto de plugin](/docs/es/plugins/manifest-reference): los campos que `claude plugin validate` verifica

plugins/code-intelligence.md +156 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Plugins de inteligencia de código

6 

7> Instale un plugin de servidor de lenguaje para que Claude vea errores de tipo después de ediciones y navegue el código por símbolo, y responda al diálogo de recomendación del plugin LSP.

8 

9Un plugin de inteligencia de código le da a Claude los diagnósticos en vivo y la navegación a definición que tiene su editor, para que Claude detecte errores de tipo e importaciones faltantes que sus propias ediciones introducen antes de ejecutar su compilación, y encuentre definiciones y referencias por símbolo en lugar de por búsqueda de texto.

10 

11Cada plugin conecta Claude Code a un servidor de lenguaje para un idioma a través del Protocolo de Servidor de Lenguaje (LSP). Instala el plugin desde el marketplace oficial de Anthropic y el binario del servidor de lenguaje en su máquina.

12 

13<Note>

14 Los plugins de inteligencia de código funcionan en sesiones de terminal. En [sesiones en la nube](/docs/es/claude-code-on-the-web), Claude Code no inicia servidores de lenguaje de plugins, por lo que Claude no obtiene diagnósticos ni navegación de código allí. Para escribir su propio plugin de servidor de lenguaje, o para conectar un servidor de lenguaje que no tiene plugin, consulte [Servidores LSP en componentes de plugins](/docs/es/plugins/components#lsp-servers).

15</Note>

16 

17Para comenzar, encuentre su idioma en la tabla bajo [Instalar un plugin de inteligencia de código](#install-a-code-intelligence-plugin). Los plugins en esa tabla provienen del [marketplace oficial de plugins](/docs/es/plugins/anthropic-marketplaces) de Anthropic.

18 

19Si ya vio un diálogo de **recomendación de plugin LSP**, consulte [Aceptar o descartar el diálogo de recomendación](#accept-or-dismiss-the-recommendation-dialog) para saber qué hace cada opción.

20 

21<h2 id="install-a-code-intelligence-plugin">

22 Instalar un plugin de inteligencia de código

23</h2>

24 

25Un plugin de inteligencia de código le dice a Claude Code qué comando inicia el servidor de lenguaje y qué extensiones de archivo maneja. No incluye el servidor de lenguaje. Instale primero el binario del servidor de lenguaje, luego el plugin, luego confirme que el servidor se inicia.

26 

27<Steps>

28 <Step title="Instalar el binario del servidor de lenguaje">

29 Encuentre su idioma en la tabla a continuación e instale el binario en su fila. Si su idioma no está listado, consulte [Agregar un idioma sin un plugin oficial](#add-a-language-without-an-official-plugin).

30 

31 | Idioma | Plugin | Binario |

32 | :---------------------- | :--------------------------------------------------------------------------------------------------------------- | :--------------------------------- |

33 | C/C++ | [`clangd-lsp`](https://github.com/anthropics/claude-plugins-official/tree/main/plugins/clangd-lsp) | `clangd` |

34 | C# | [`csharp-lsp`](https://github.com/anthropics/claude-plugins-official/tree/main/plugins/csharp-lsp) | `csharp-ls` |

35 | Go | [`gopls-lsp`](https://github.com/anthropics/claude-plugins-official/tree/main/plugins/gopls-lsp) | `gopls` |

36 | Java | [`jdtls-lsp`](https://github.com/anthropics/claude-plugins-official/tree/main/plugins/jdtls-lsp) | `jdtls` |

37 | Kotlin | [`kotlin-lsp`](https://github.com/anthropics/claude-plugins-official/tree/main/plugins/kotlin-lsp) | `kotlin-lsp` |

38 | Liquid | [`liquid-lsp`](https://github.com/Shopify/liquid-skills/tree/main/plugins/liquid-lsp) | `shopify`, desde la CLI de Shopify |

39 | Lua | [`lua-lsp`](https://github.com/anthropics/claude-plugins-official/tree/main/plugins/lua-lsp) | `lua-language-server` |

40 | PHP | [`php-lsp`](https://github.com/anthropics/claude-plugins-official/tree/main/plugins/php-lsp) | `intelephense` |

41 | Python | [`pyright-lsp`](https://github.com/anthropics/claude-plugins-official/tree/main/plugins/pyright-lsp) | `pyright-langserver` |

42 | Ruby | [`ruby-lsp`](https://github.com/anthropics/claude-plugins-official/tree/main/plugins/ruby-lsp) | `ruby-lsp` |

43 | Rust | [`rust-analyzer-lsp`](https://github.com/anthropics/claude-plugins-official/tree/main/plugins/rust-analyzer-lsp) | `rust-analyzer` |

44 | Swift | [`swift-lsp`](https://github.com/anthropics/claude-plugins-official/tree/main/plugins/swift-lsp) | `sourcekit-lsp` |

45 | TypeScript y JavaScript | [`typescript-lsp`](https://github.com/anthropics/claude-plugins-official/tree/main/plugins/typescript-lsp) | `typescript-language-server` |

46 

47 Anthropic mantiene cada plugin en la tabla excepto `liquid-lsp`, que Shopify mantiene y el marketplace oficial lista.

48 

49 Para encontrar el comando que instala el binario, siga el enlace del plugin en la tabla a su README. Para TypeScript, ese comando es `npm install -g typescript-language-server typescript`.

50 

51 Después de instalar el binario, confirme que está en el `PATH` del shell desde el que inicia `claude`, por ejemplo con `which typescript-language-server`, o `Get-Command typescript-language-server` en PowerShell.

52 </Step>

53 

54 <Step title="Instalar el plugin">

55 Para instalar el plugin listado para su idioma en la tabla del paso 1, ejecute `/plugin install` en una sesión de Claude Code, reemplazando `typescript-lsp` con el nombre de ese plugin:

56 

57 ```

58 /plugin install typescript-lsp@claude-plugins-official

59 ```

60 

61 Un mensaje de confirmación dice si el plugin está activo ahora o necesita `/reload-plugins`. Si la instalación falla con `Marketplace "claude-plugins-official" not found`, consulte la [entrada de solución de problemas para ese error](/docs/es/plugins/troubleshooting#marketplace-claude-plugins-official-not-found). Para controlar dónde se instala el plugin, o para ejecutar la instalación desde su shell en lugar de dentro de Claude Code, consulte [Instalar plugins](/docs/es/plugins/install).

62 </Step>

63 

64 <Step title="Confirmar que el servidor se inicia">

65 El servidor de lenguaje se inicia la primera vez que Claude edita un archivo con una de las extensiones del plugin. Para verlo funcionar, pida a Claude que introduzca un error de tipo en un archivo de ese idioma y luego lo corrija. Luego verifique la conversación para una línea de diagnósticos:

66 

67 * **Aparece una línea de diagnósticos**: `Found N new diagnostic issues in M files (ctrl+o to expand)` bajo la edición que introdujo el error significa que el servidor se inició.

68 * **No aparece una línea de diagnósticos**: ejecute `/plugin` y abra la pestaña **Errors**. Una fila que dice `Executable not found in $PATH: "<binary>"` nombra el binario a instalar. Si la pestaña no tiene tal fila, consulte [Solucionar problemas de inteligencia de código](#troubleshoot-code-intelligence).

69 

70 Después de instalar un binario faltante, Claude Code lo intenta de nuevo la próxima vez que Claude edita un archivo coincidente. Si instaló el binario en un directorio que no está en el `PATH` del shell desde el que inició `claude`, inicie una nueva sesión desde un shell donde esté.

71 </Step>

72</Steps>

73 

74<h2 id="see-what-claude-gains">

75 Ver qué gana Claude

76</h2>

77 

78Con un servidor de lenguaje ejecutándose, Claude gana diagnósticos y navegación de código:

79 

80* **Diagnósticos después de ediciones**: cada vez que Claude edita o escribe un archivo que el servidor maneja, Claude obtiene los errores y advertencias que el servidor reporta. Ve un error de tipo, importación faltante, o error de sintaxis que introdujo sin ejecutar un compilador.

81* **Navegación de código**: Claude obtiene una herramienta `LSP` que busca símbolos a través del servidor en lugar de buscarlos por texto. La herramienta es de solo lectura. Para saber qué puede buscar Claude con la herramienta y cómo se aplican los permisos a ella, consulte [Comportamiento de la herramienta LSP](/docs/es/tools-reference#lsp-tool-behavior).

82 

83<h3 id="read-the-diagnostics-yourself">

84 Leer los diagnósticos usted mismo

85</h3>

86 

87Después de que Claude edita un archivo que el servidor maneja, la conversación muestra solo el resumen `Found N new diagnostic issues`. Para leer los problemas en sí, presione **Ctrl+O**.

88 

89<h2 id="accept-or-dismiss-the-recommendation-dialog">

90 Aceptar o descartar el diálogo de recomendación

91</h2>

92 

93Si un binario de servidor de lenguaje ya está en su `PATH` y el plugin que lo usa no está instalado, Claude Code le ofrece instalar el plugin para usted en un diálogo titulado **LSP plugin recommendation**.

94 

95<h3 id="when-the-recommendation-dialog-appears">

96 Cuándo aparece el diálogo de recomendación

97</h3>

98 

99El diálogo **LSP plugin recommendation** puede aparecer después de que Claude edita un archivo. Estas condiciones deciden si aparece y qué plugin ofrece:

100 

101* **Un plugin coincide con el archivo**: uno de los marketplaces que ha agregado, o el marketplace oficial que Claude Code registró para usted, lista un plugin de inteligencia de código para la extensión de ese archivo, y el binario del plugin está instalado.

102* **Oficial primero**: cuando más de un marketplace ofrece un plugin para la extensión, el diálogo ofrece el plugin del marketplace oficial.

103* **Una vez por sesión**: el diálogo aparece como máximo una vez en una sesión, para el primer archivo coincidente que Claude edita.

104* **No para sesiones en la nube**: el diálogo nunca aparece cuando su terminal está conectada a una sesión en la nube, como una que inició con [`claude --cloud`](/docs/es/claude-code-on-the-web#from-terminal-to-cloud).

105 

106<h3 id="respond-to-the-recommendation-dialog">

107 Responder al diálogo de recomendación

108</h3>

109 

110El diálogo **LSP plugin recommendation** nombra el plugin y ofrece estas opciones:

111 

112* **Yes, install**: Claude Code instala el plugin para su cuenta de usuario e imprime `<plugin> installed · restart to apply`. Inicie una nueva sesión para cargar el servidor.

113* **No, not now**: el diálogo se cierra, y una sesión posterior puede ofrecer el plugin nuevamente. Presionar **Esc** hace lo mismo.

114* **Never for this plugin**: el diálogo deja de aparecer para ese plugin y sigue apareciendo para otros.

115* **Disable all LSP recommendations**: el diálogo deja de aparecer para cada idioma.

116 

117Si no elige una opción, Claude Code la cierra después de 30 segundos y cuenta eso como ignorado. El conteo se mantiene entre sesiones. Después de cinco diálogos ignorados, Claude Code deja de recomendar plugins, lo mismo que si hubiera elegido **Disable all LSP recommendations**.

118 

119<h3 id="turn-recommendations-back-on">

120 Activar recomendaciones nuevamente

121</h3>

122 

123El diálogo **LSP plugin recommendation** deja de aparecer después de que elige **Disable all LSP recommendations** o lo ignora cinco veces.

124 

125* **Deshabilitado o ignorado cinco veces**: para activarlo nuevamente en cualquier caso, elimine las claves `lspRecommendationDisabled` y `lspRecommendationIgnoredCount` de `~/.claude.json`, el archivo de configuración propio de Claude Code.

126* **Nunca para este plugin**: si eligió **Never for this plugin** y desea que ese plugin se ofrezca nuevamente, elimine su id `name@marketplace` de la lista `lspRecommendationNeverPlugins` en el mismo archivo.

127 

128<h2 id="troubleshoot-code-intelligence">

129 Solucionar problemas de inteligencia de código

130</h2>

131 

132La página de solución de problemas de plugins cubre los síntomas específicos de plugins de inteligencia de código bajo [Language server doesn't start, uses too much memory, or reports wrong diagnostics](/docs/es/plugins/troubleshooting#language-server-doesnt-start):

133 

134* **El servidor de lenguaje no se inicia**: ve `Executable not found in $PATH` en la pestaña **Errors** de `/plugin`, o Claude nunca reporta diagnósticos para el idioma.

135* **Uso de memoria alto**: el uso de memoria aumenta mientras el servidor indexa el proyecto.

136* **Diagnósticos falsos positivos en un monorepo**: los diagnósticos reportan importaciones como no resueltas cuando no lo son.

137 

138<h2 id="add-a-language-without-an-official-plugin">

139 Agregar un idioma sin un plugin oficial

140</h2>

141 

142Si su idioma no está en la [tabla de plugins oficiales](#install-a-code-intelligence-plugin), aún puede conectar un servidor de lenguaje.

143 

1441. Escriba un plugin con un archivo `.lsp.json` que nombre el comando del servidor y las extensiones de archivo que maneja.

1452. Luego cargue el plugin con [`--plugin-dir`](/docs/es/plugins/cli-reference#flags-that-load-a-plugin-for-one-session) o publíquelo en un marketplace.

146 

147Para los campos del archivo y un ejemplo trabajado, consulte [Servidores LSP en componentes de plugins](/docs/es/plugins/components#lsp-servers).

148 

149<h2 id="next-steps">

150 Próximos pasos

151</h2>

152 

153* [Servidores LSP en componentes de plugins](/docs/es/plugins/components#lsp-servers): escriba el `.lsp.json` para un servidor de lenguaje que no tiene plugin oficial

154* [Instalar y administrar plugins](/docs/es/plugins/install): alcances, actualizaciones y desinstalación

155* [Solucionar problemas de plugins](/docs/es/plugins/troubleshooting): cargar errores más allá de los específicos del servidor de lenguaje en esta página

156* [Encontrar plugins en el marketplace oficial](/docs/es/plugins/anthropic-marketplaces#find-plugins-in-the-official-marketplace): dónde explorar el resto del marketplace oficial

plugins/components.md +1130 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Agregar componentes a un plugin

6 

7> Agrega skills, hooks, servidores MCP y todos los demás tipos de componentes a un plugin de Claude Code, con un ejemplo que valida cada uno.

8 

9export const Piece = ({id, children}) => <div className="pe-piece" data-piece={id}>{children}</div>;

10 

11export const PluginExplorer = ({children}) => {

12 const PIECES = [{

13 id: 'manifest',

14 name: 'Manifest',

15 path: '.claude-plugin/plugin.json',

16 required: "Required by Anthropic's directory",

17 lines: [{

18 depth: 0,

19 kind: 'folder',

20 text: '.claude-plugin/'

21 }, {

22 depth: 1,

23 kind: 'file',

24 text: 'plugin.json'

25 }],

26 href: '/en/plugins/manifest-reference#manifest-file',

27 linkText: 'Go to the manifest reference'

28 }, {

29 id: 'skills',

30 name: 'Skills',

31 path: 'skills/review/SKILL.md',

32 lines: [{

33 depth: 0,

34 kind: 'folder',

35 text: 'skills/'

36 }, {

37 depth: 1,

38 kind: 'folder',

39 text: 'review/'

40 }, {

41 depth: 2,

42 kind: 'file',

43 text: 'SKILL.md'

44 }],

45 href: '/en/plugins/components#skills',

46 linkText: 'Go to the Skills section'

47 }, {

48 id: 'commands',

49 name: 'Commands',

50 path: 'commands/about.md',

51 lines: [{

52 depth: 0,

53 kind: 'folder',

54 text: 'commands/'

55 }, {

56 depth: 1,

57 kind: 'file',

58 text: 'about.md'

59 }],

60 href: '/en/plugins/components#commands',

61 linkText: 'Go to the Commands section'

62 }, {

63 id: 'agents',

64 name: 'Agents',

65 path: 'agents/security-reviewer.md',

66 lines: [{

67 depth: 0,

68 kind: 'folder',

69 text: 'agents/'

70 }, {

71 depth: 1,

72 kind: 'file',

73 text: 'security-reviewer.md'

74 }],

75 href: '/en/plugins/components#agents',

76 linkText: 'Go to the Agents section'

77 }, {

78 id: 'hooks',

79 name: 'Hooks',

80 path: 'hooks/hooks.json',

81 lines: [{

82 depth: 0,

83 kind: 'folder',

84 text: 'hooks/'

85 }, {

86 depth: 1,

87 kind: 'file',

88 text: 'hooks.json'

89 }],

90 href: '/en/plugins/components#hooks',

91 linkText: 'Go to the Hooks section'

92 }, {

93 id: 'monitors',

94 name: 'Monitors',

95 path: 'monitors/monitors.json',

96 lines: [{

97 depth: 0,

98 kind: 'folder',

99 text: 'monitors/'

100 }, {

101 depth: 1,

102 kind: 'file',

103 text: 'monitors.json'

104 }],

105 href: '/en/plugins/components#monitors',

106 linkText: 'Go to the Monitors section'

107 }, {

108 id: 'output-styles',

109 name: 'Output styles',

110 path: 'output-styles/terse.md',

111 lines: [{

112 depth: 0,

113 kind: 'folder',

114 text: 'output-styles/'

115 }, {

116 depth: 1,

117 kind: 'file',

118 text: 'terse.md'

119 }],

120 href: '/en/plugins/components#themes-and-output-styles',

121 linkText: 'Go to the Themes and output styles section'

122 }, {

123 id: 'themes',

124 name: 'Themes',

125 path: 'themes/dracula.json',

126 lines: [{

127 depth: 0,

128 kind: 'folder',

129 text: 'themes/'

130 }, {

131 depth: 1,

132 kind: 'file',

133 text: 'dracula.json'

134 }],

135 href: '/en/plugins/components#themes-and-output-styles',

136 linkText: 'Go to the Themes and output styles section'

137 }, {

138 id: 'workflows',

139 name: 'Workflows',

140 path: 'workflows/audit-routes.js',

141 lines: [{

142 depth: 0,

143 kind: 'folder',

144 text: 'workflows/'

145 }, {

146 depth: 1,

147 kind: 'file',

148 text: 'audit-routes.js'

149 }],

150 href: '/en/workflows#distribute-a-workflow-in-a-plugin',

151 linkText: 'Go to Distribute a workflow in a plugin'

152 }, {

153 id: 'bin',

154 name: 'Executables',

155 path: 'bin/hello-plugin',

156 lines: [{

157 depth: 0,

158 kind: 'folder',

159 text: 'bin/'

160 }, {

161 depth: 1,

162 kind: 'file',

163 text: 'hello-plugin'

164 }],

165 href: '/en/plugins/components#executables',

166 linkText: 'Go to the Executables section'

167 }, {

168 id: 'scripts',

169 name: 'Scripts',

170 path: 'scripts/format.sh',

171 lines: [{

172 depth: 0,

173 kind: 'folder',

174 text: 'scripts/'

175 }, {

176 depth: 1,

177 kind: 'file',

178 text: 'format.sh'

179 }],

180 href: '/en/plugins/components#hooks',

181 linkText: 'Go to the Hooks section'

182 }, {

183 id: 'settings',

184 name: 'Default settings',

185 path: 'settings.json',

186 lines: [{

187 depth: 0,

188 kind: 'file',

189 text: 'settings.json'

190 }],

191 href: '/en/plugins/components#default-settings',

192 linkText: 'Go to the Default settings section'

193 }, {

194 id: 'mcp',

195 name: 'MCP servers',

196 path: '.mcp.json',

197 lines: [{

198 depth: 0,

199 kind: 'file',

200 text: '.mcp.json'

201 }],

202 href: '/en/plugins/components#mcp-servers',

203 linkText: 'Go to the MCP servers section'

204 }, {

205 id: 'lsp',

206 name: 'LSP servers',

207 path: '.lsp.json',

208 lines: [{

209 depth: 0,

210 kind: 'file',

211 text: '.lsp.json'

212 }],

213 href: '/en/plugins/components#lsp-servers',

214 linkText: 'Go to the LSP servers section'

215 }];

216 const [selectedId, setSelectedId] = useState('manifest');

217 const [isFullscreen, setIsFullscreen] = useState(false);

218 const rootRef = useRef(null);

219 useEffect(() => {

220 const onFsChange = () => setIsFullscreen(!!document.fullscreenElement);

221 document.addEventListener('fullscreenchange', onFsChange);

222 return () => document.removeEventListener('fullscreenchange', onFsChange);

223 }, []);

224 const toggleFullscreen = () => {

225 if (!rootRef.current) return;

226 if (document.fullscreenElement) document.exitFullscreen(); else rootRef.current.requestFullscreen().catch(() => {});

227 };

228 const selected = PIECES.find(p => p.id === selectedId) || PIECES[0];

229 const onTreeKeyDown = e => {

230 const keys = ['ArrowDown', 'ArrowUp', 'Home', 'End'];

231 if (keys.indexOf(e.key) === -1) return;

232 const i = PIECES.findIndex(p => p.id === selectedId);

233 let next = i;

234 if (e.key === 'ArrowDown') next = Math.min(PIECES.length - 1, i + 1);

235 if (e.key === 'ArrowUp') next = Math.max(0, i - 1);

236 if (e.key === 'Home') next = 0;

237 if (e.key === 'End') next = PIECES.length - 1;

238 e.preventDefault();

239 if (next === i) return;

240 const id = PIECES[next].id;

241 setSelectedId(id);

242 const el = document.getElementById('pe-node-' + id);

243 if (el) el.focus();

244 };

245 const FolderIcon = () => <svg className="pe-icon" width="15" height="15" viewBox="0 0 16 16" fill="none" stroke="currentColor" strokeWidth="1.3" strokeLinejoin="round" aria-hidden="true">

246 <path d="M1.5 4.5a1 1 0 0 1 1-1h3.2l1.3 1.5h6a1 1 0 0 1 1 1V12a1 1 0 0 1-1 1h-10.5a1 1 0 0 1-1-1z" />

247 </svg>;

248 const FileIcon = () => <svg className="pe-icon" width="15" height="15" viewBox="0 0 16 16" fill="none" stroke="currentColor" strokeWidth="1.3" strokeLinejoin="round" aria-hidden="true">

249 <path d="M4 1.5h5.5L13 5v9.5H4z" />

250 <path d="M9.5 1.5V5H13" />

251 </svg>;

252 return <div ref={rootRef} className={isFullscreen ? 'pe-root pe-fullscreen not-prose' : 'pe-root not-prose'} data-selected={selected.id}>

253 <style>{`

254 .pe-root {

255 --pe-mono: var(--font-mono, ui-monospace, SFMono-Regular, Menlo, monospace);

256 --pe-accent: #D97757;

257 --pe-accent-text: #A8502F;

258 --pe-accent-bg: rgba(217,119,87,0.10);

259 --pe-bg: #FFFFFF;

260 --pe-surface: #FAFAF7;

261 --pe-hover: #F0EEE6;

262 --pe-border: #E8E6DC;

263 --pe-text: #141413;

264 --pe-text-2: #3D3D3A;

265 --pe-text-3: #5E5D59;

266 font-family: inherit;

267 background: var(--pe-bg);

268 color: var(--pe-text);

269 border: 1px solid var(--pe-border);

270 border-radius: 12px;

271 margin: 1.5rem 0;

272 overflow: hidden;

273 box-sizing: border-box;

274 }

275 .dark .pe-root {

276 --pe-accent-text: #EBA98F;

277 --pe-accent-bg: rgba(217,119,87,0.18);

278 --pe-bg: #1A1918;

279 --pe-surface: #232221;

280 --pe-hover: #2E2D2B;

281 --pe-border: #3A3936;

282 --pe-text: #F1EFE9;

283 --pe-text-2: #D6D4CA;

284 --pe-text-3: #B8B5AD;

285 }

286 .pe-root *, .pe-root *::before, .pe-root *::after { box-sizing: border-box; }

287 .pe-head { display: flex; align-items: flex-start; gap: 12px; padding: 18px 24px 16px; border-bottom: 1px solid var(--pe-border); }

288 .pe-head-text { flex: 1; min-width: 0; }

289 .pe-fs-btn { flex-shrink: 0; width: 32px; height: 32px; display: inline-flex; align-items: center; justify-content: center; border: 1px solid var(--pe-border); border-radius: 6px; background: var(--pe-surface); color: var(--pe-text-2); font-size: 15px; line-height: 1; cursor: pointer; }

290 .pe-fs-btn:hover { background: var(--pe-hover); }

291 .pe-fs-btn:focus-visible { outline: 2px solid var(--pe-accent); outline-offset: 2px; }

292 .pe-fullscreen { border-radius: 0; height: 100vh; display: flex; flex-direction: column; overflow: auto; }

293 .pe-fullscreen .pe-body { flex: 1; }

294 .pe-title { font-size: 19px; font-weight: 600; line-height: 1.3; color: var(--pe-text); margin: 0; }

295 .pe-sub { font-size: 15px; line-height: 1.5; color: var(--pe-text-3); margin: 4px 0 0; }

296 .pe-sub code { font-family: var(--pe-mono); font-size: 0.88em; padding: 1px 5px; border-radius: 4px; background: var(--pe-surface); border: 1px solid var(--pe-border); }

297 .pe-body { display: flex; align-items: stretch; }

298 .pe-tree-pane { width: 270px; flex-shrink: 0; background: var(--pe-surface); border-right: 1px solid var(--pe-border); padding: 16px 0 12px; }

299 .pe-panel { flex: 1; min-width: 0; padding: 16px 24px 24px; }

300 .pe-caption { font-size: 13px; font-weight: 600; color: var(--pe-text-3); margin: 0 0 10px; }

301 .pe-tree-pane .pe-caption { padding: 0 16px; }

302 .pe-rootline { display: flex; align-items: center; gap: 7px; padding: 3px 16px; font-family: var(--pe-mono); font-size: 13.5px; color: var(--pe-text-3); }

303 .pe-node {

304 display: block; width: 100%; margin: 0; padding: 3px 16px 3px 30px; text-align: left; cursor: pointer;

305 background: transparent; color: var(--pe-text-2);

306 border: none; border-left: 3px solid transparent;

307 font-family: var(--pe-mono); font-size: 13.5px; line-height: 1.4;

308 }

309 .pe-node:hover { background: var(--pe-hover); }

310 .pe-node:focus-visible { outline: 2px solid var(--pe-accent); outline-offset: -2px; }

311 .pe-node[aria-pressed="true"] { background: var(--pe-accent-bg); border-left-color: var(--pe-accent); color: var(--pe-accent-text); font-weight: 600; }

312 .pe-line { display: flex; align-items: center; gap: 7px; padding: 2px 0; }

313 .pe-line-tree { flex-wrap: wrap; }

314 .pe-line-tree .pe-req { flex-basis: 100%; margin: 2px 0 0 22px; white-space: normal; width: fit-content; max-width: calc(100% - 22px); }

315 .pe-line span { overflow-wrap: anywhere; }

316 .pe-piece { display: none; font-size: 16px; line-height: 1.6; color: var(--pe-text-2); }

317 .pe-root[data-selected="manifest"] .pe-piece[data-piece="manifest"],

318 .pe-root[data-selected="skills"] .pe-piece[data-piece="skills"],

319 .pe-root[data-selected="commands"] .pe-piece[data-piece="commands"],

320 .pe-root[data-selected="agents"] .pe-piece[data-piece="agents"],

321 .pe-root[data-selected="hooks"] .pe-piece[data-piece="hooks"],

322 .pe-root[data-selected="monitors"] .pe-piece[data-piece="monitors"],

323 .pe-root[data-selected="output-styles"] .pe-piece[data-piece="output-styles"],

324 .pe-root[data-selected="themes"] .pe-piece[data-piece="themes"],

325 .pe-root[data-selected="workflows"] .pe-piece[data-piece="workflows"],

326 .pe-root[data-selected="bin"] .pe-piece[data-piece="bin"],

327 .pe-root[data-selected="scripts"] .pe-piece[data-piece="scripts"],

328 .pe-root[data-selected="settings"] .pe-piece[data-piece="settings"],

329 .pe-root[data-selected="mcp"] .pe-piece[data-piece="mcp"],

330 .pe-root[data-selected="lsp"] .pe-piece[data-piece="lsp"] { display: block; }

331 .pe-piece p { margin: 0 0 10px; }

332 .pe-piece p:last-child { margin-bottom: 0; }

333 .pe-piece code { font-family: var(--pe-mono); font-size: 0.88em; padding: 1px 5px; border-radius: 4px; background: var(--pe-surface); border: 1px solid var(--pe-border); }

334 .pe-piece .code-block { margin: 12px 0 0; }

335 .pe-piece pre code { padding: 0; border: none; background: none; }

336 .pe-piece a { color: var(--pe-accent-text); }

337 .pe-line-compact { display: none; }

338 .pe-icon { flex-shrink: 0; }

339 .pe-req { margin-left: 8px; padding: 0 6px; border-radius: 999px; font-size: 11px; line-height: 18px; letter-spacing: .02em; color: var(--pe-accent-text); border: 1px solid var(--pe-border); background: var(--pe-surface); white-space: nowrap; font-weight: 500; vertical-align: middle; }

340 .pe-name { font-size: 22px; font-weight: 600; line-height: 1.25; letter-spacing: -0.2px; color: var(--pe-text); margin: 0; }

341 .pe-path { font-family: var(--pe-mono); font-size: 13.5px; color: var(--pe-accent-text); margin: 4px 0 0; overflow-wrap: anywhere; }

342 .pe-block { margin: 20px 0 0; }

343 .pe-link {

344 display: inline-block; margin: 24px 0 0; padding: 8px 14px; border-radius: 8px;

345 font-size: 14.5px; font-weight: 600; text-decoration: none;

346 color: var(--pe-accent-text); background: var(--pe-accent-bg); border: 1px solid var(--pe-accent);

347 }

348 .pe-link:hover { filter: brightness(0.97); }

349 .pe-link:focus-visible { outline: 2px solid var(--pe-accent); outline-offset: 2px; }

350 @media (max-width: 700px) {

351 .pe-head { padding: 16px 16px 14px; }

352 .pe-body { flex-direction: column; }

353 .pe-tree-pane { width: 100%; border-right: none; border-bottom: 1px solid var(--pe-border); }

354 .pe-line-tree { display: none; }

355 .pe-line-compact { display: flex; }

356 .pe-panel { padding: 16px 16px 20px; }

357 }

358 `}</style>

359 

360 <div className="pe-head">

361 <div className="pe-head-text">

362 <div className="pe-title">What goes in a plugin</div>

363 <div className="pe-sub">This example plugin, <code>my-plugin</code>, has one of every kind of component, each in its default location. Select a file or folder to read what it’s for and see what goes in it.</div>

364 </div>

365 <button type="button" className="pe-fs-btn" onClick={toggleFullscreen} aria-label={isFullscreen ? 'Exit fullscreen' : 'Fullscreen'} title={isFullscreen ? 'Exit fullscreen' : 'Fullscreen'}>

366 {isFullscreen ? '⤡' : '⛶'}

367 </button>

368 </div>

369 

370 <div className="pe-body">

371 <div className="pe-tree-pane">

372 <div className="pe-caption" id="pe-tree-caption">Plugin directory</div>

373 <div role="group" aria-labelledby="pe-tree-caption" onKeyDown={onTreeKeyDown}>

374 <div className="pe-rootline"><FolderIcon /><span>my-plugin/</span></div>

375 {PIECES.map(p => <button key={p.id} id={'pe-node-' + p.id} type="button" className="pe-node" aria-pressed={p.id === selected.id} aria-label={p.name + ', ' + p.path} onClick={() => setSelectedId(p.id)}>

376 {p.lines.map((line, i) => <span key={i} className="pe-line pe-line-tree" style={{

377 paddingLeft: line.depth * 18 + 'px'

378 }}>

379 {line.kind === 'folder' ? <FolderIcon /> : <FileIcon />}

380 <span>{line.text}</span>

381 {p.required && i === p.lines.length - 1 ? <span className="pe-req">{p.required}</span> : null}

382 </span>)}

383 <span className="pe-line pe-line-compact">

384 <FileIcon />

385 <span>{p.path}</span>

386 {p.required ? <span className="pe-req">{p.required}</span> : null}

387 </span>

388 </button>)}

389 </div>

390 </div>

391 

392 <div className="pe-panel" role="region" aria-labelledby="pe-panel-caption" aria-live="polite" aria-atomic="true">

393 <div className="pe-caption" id="pe-panel-caption">Selected piece</div>

394 <div className="pe-name">{selected.name}{selected.required ? <span className="pe-req">{selected.required}</span> : null}</div>

395 <div className="pe-path">{selected.path}</div>

396 

397 <div className="pe-block">{children}</div>

398 

399 <a className="pe-link" href={selected.href}>{selected.linkText}</a>

400 </div>

401 </div>

402 </div>;

403};

404 

405Un plugin de Claude Code se construye a partir de componentes, como skills, agentes, hooks y servidores MCP. Cada componente tiene una carpeta predeterminada en el plugin, una clave de manifiesto opcional en `.claude-plugin/plugin.json` que reemplaza o se suma a esa carpeta, y un nombre que ve el usuario. Para la tabla de campos completa de cada clave, consulte la [referencia de manifiesto](/docs/es/plugins/manifest-reference#fields).

406 

407Utilice esta página para agregar un componente a un plugin que ya se carga.

408 

409Después de agregar un componente, ejecute `/reload-plugins` en una sesión en ejecución o inicie una nueva para que Claude Code lo cargue. Para verificar el archivo del componente antes de cargarlo, ejecute [`claude plugin validate .`](/docs/es/plugins/cli-reference#plugin-validate) en su shell desde el directorio del plugin.

410 

411<Note>

412 Estos casos se tratan en otras páginas:

413 

414 * **Construir su primer plugin**: comience con [Crear un plugin](/docs/es/plugins/create)

415 * **Instalar el plugin de otra persona**: consulte [Instalar plugins](/docs/es/plugins/install)

416 * **Los usuarios de su plugin están en claude.ai o en Cowork**: se carga un conjunto diferente de componentes allí. Consulte [Plugins en claude.ai y en Cowork](https://claude.com/docs/plugins/overview)

417</Note>

418 

419<h2 id="explore-the-plugin-directory">

420 Explorar el directorio del plugin

421</h2>

422 

423El explorador muestra un plugin de ejemplo, `my-plugin`, que tiene uno de cada tipo de componente en su ubicación predeterminada:

424 

425* Una skill de revisión y un comando `about`

426* Un subagente de revisión de seguridad

427* Un hook que formatea archivos después de que Claude los edita, y la carpeta `scripts/` que llama

428* Un monitor de registro

429* Un estilo de salida y un tema de color

430* Un flujo de trabajo de auditoría de rutas

431* Un ejecutable `hello-plugin`

432* Configuración predeterminada

433* Un servidor MCP local y un servidor de lenguaje Go

434 

435Cada archivo es el ejemplo válido más pequeño de su formato, presente para mostrar la forma en lugar de ser útil: una skill o agente real lleva instrucciones completas y a menudo archivos de apoyo, y un hook o monitor real realiza trabajo real. Las secciones después del explorador utilizan los mismos archivos que sus ejemplos y enlazan a otros más completos. Seleccione un archivo o carpeta para leer para qué sirve, ver qué va en él y encontrar la sección que lo cubre.

436 

437<PluginExplorer>

438 <Piece id="manifest">

439 El [manifiesto](/docs/es/plugins/manifest-reference) es el archivo `plugin.json` en el directorio `.claude-plugin/` de un plugin. Contiene los metadatos del plugin y los valores de `userConfig` que Claude Code solicita al usuario. Solo `name` es obligatorio. En este, `description` es el texto que los usuarios ven para el plugin en `/plugin`, y `version` mantiene a los usuarios en esa versión hasta que la cambie:

440 

441 ```json theme={null}

442 {

443 "name": "my-plugin",

444 "version": "1.0.0",

445 "description": "Review, formatting, and database tools for this team"

446 }

447 ```

448 </Piece>

449 

450 <Piece id="skills">

451 Una [skill](/docs/es/skills) es un archivo `SKILL.md`. Guarde cada skill en su propio directorio bajo `skills/`. Claude lee la `description` de cada skill, y cuando lo que el usuario pregunta coincide con ella, como pedirle a Claude que revise una solicitud de extracción aquí, Claude carga las instrucciones de la skill y las sigue. El usuario también puede ejecutarla directamente como `/my-plugin:review`:

452 

453 ```markdown theme={null}

454 ---

455 description: Reviews a pull request for style and test coverage. Use when asked to review code.

456 ---

457 

458 Review the changed files. Report style problems first, then missing tests.

459 ```

460 </Piece>

461 

462 <Piece id="commands">

463 Un comando es un único archivo Markdown que el usuario ejecuta por nombre. Los comandos son el formato anterior: una skill se ejecuta por nombre de la misma manera y también puede llevar archivos de apoyo en su propio directorio, así que escriba los nuevos como skills y mantenga `commands/` para los archivos que ya tiene. Este archivo se convierte en `/my-plugin:about` y toma el mismo frontmatter que una skill:

464 

465 ```markdown theme={null}

466 ---

467 description: Summarize the repository

468 ---

469 

470 Summarize what this repository does in three sentences.

471 ```

472 </Piece>

473 

474 <Piece id="agents">

475 Un [subagente](/docs/es/sub-agents) es un asistente separado, con sus propias instrucciones y su propia ventana de contexto, al que Claude puede delegar una tarea y obtener un resultado. Cada archivo Markdown bajo `agents/` define uno: el frontmatter lo nombra y dice cuándo usarlo, y el cuerpo es su indicación del sistema. Este se llama `my-plugin:security-reviewer`, y el usuario puede invocarlo con `@agent-my-plugin:security-reviewer`:

476 

477 ```markdown theme={null}

478 ---

479 name: security-reviewer

480 description: Reviews code changes for security issues. Use after edits to authentication or input handling.

481 model: sonnet

482 ---

483 

484 You are a security reviewer. Read the changed files and report injection, authentication, and secrets-handling risks.

485 ```

486 </Piece>

487 

488 <Piece id="hooks">

489 Un [hook](/docs/es/hooks-guide) ejecuta algo automáticamente en un punto del ciclo de vida de Claude Code, como después de cada edición de archivo: un comando de shell, una solicitud HTTP, una llamada a herramienta MCP, un indicador a un modelo o un subagente. Guarde los hooks del plugin en `hooks/hooks.json` en la raíz del plugin. Este ejecuta el script `scripts/format.sh` del plugin después de que Claude escribe o edita un archivo:

490 

491 ```json theme={null}

492 {

493 "hooks": {

494 "PostToolUse": [

495 {

496 "matcher": "Write|Edit",

497 "hooks": [

498 {

499 "type": "command",

500 "command": "\"${CLAUDE_PLUGIN_ROOT}/scripts/format.sh\""

501 }

502 ]

503 }

504 ]

505 }

506 }

507 ```

508 </Piece>

509 

510 <Piece id="monitors">

511 Un monitor es un comando de shell que Claude Code inicia en segundo plano cuando la sesión comienza y mantiene en ejecución hasta que termina, utilizando la [herramienta Monitor](/docs/es/tools-reference#monitor-tool). Lo que imprime llega a Claude como notificaciones. Un campo `when` puede iniciarlo la primera vez que se ejecuta una skill nombrada. Este rastrea un registro de errores:

512 

513 ```json theme={null}

514 [

515 {

516 "name": "error-log",

517 "command": "tail -F ./logs/error.log",

518 "description": "Application error log"

519 }

520 ]

521 ```

522 </Piece>

523 

524 <Piece id="output-styles">

525 Un plugin puede incluir [estilos de salida](/docs/es/output-styles), que cambian cómo Claude formatea y expresa sus respuestas. Guarde cada estilo de salida como `output-styles/<name>.md`. Este aparece en `/output-style` como `my-plugin:terse`:

526 

527 ```markdown theme={null}

528 ---

529 name: terse

530 description: Answer in as few words as possible

531 keep-coding-instructions: true

532 ---

533 

534 Keep every reply short. Skip preambles and summaries.

535 ```

536 </Piece>

537 

538 <Piece id="themes">

539 Un plugin puede incluir [temas de color](/docs/es/terminal-config#create-a-custom-theme) para la interfaz de Claude Code. Guarde cada tema como `themes/<slug>.json`. Este aparece en `/theme` como `Dracula`, marcado como de `my-plugin`:

540 

541 ```json theme={null}

542 {

543 "name": "Dracula",

544 "base": "dark",

545 "overrides": {

546 "claude": "#bd93f9",

547 "error": "#ff5555"

548 }

549 }

550 ```

551 </Piece>

552 

553 <Piece id="workflows">

554 La carpeta `workflows/` contiene archivos [workflow](/docs/es/workflows) `.js`: un bloque `meta`, luego un cuerpo de script que orquesta varios subagentes. Este se ejecuta como `/my-plugin:audit-routes`:

555 

556 ```javascript theme={null}

557 export const meta = {

558 name: 'audit-routes',

559 description: 'Audit every route handler for missing auth checks',

560 }

561 

562 const found = await agent('List every .ts file under src/routes/.', {

563 schema: { type: 'object', required: ['files'], properties: { files: { type: 'array', items: { type: 'string' } } } },

564 })

565 

566 const audits = await pipeline(found.files, file =>

567 agent(`Audit ${file} for missing authentication checks.`, { label: file }),

568 )

569 

570 return audits.filter(Boolean)

571 ```

572 </Piece>

573 

574 <Piece id="bin">

575 `bin/` es cómo un plugin envía una herramienta de línea de comandos. Mientras el plugin está habilitado, Claude Code coloca esta carpeta en el `PATH` del shell en el que ejecuta comandos, para que Claude, o las instrucciones de una skill, puedan ejecutar la herramienta por nombre sin que el usuario instale nada. Con este [ejecutable](#executables) en su lugar, `hello-plugin` es un comando que Claude puede ejecutar:

576 

577 ```bash theme={null}

578 #!/bin/bash

579 echo "hello from my-plugin"

580 ```

581 </Piece>

582 

583 <Piece id="scripts">

584 El hook en `hooks/hooks.json` ejecuta un script, y esta carpeta es donde el ejemplo lo mantiene. El nombre `scripts/` es una convención, no algo que Claude Code busque: el hook apunta al archivo por su ruta, `${CLAUDE_PLUGIN_ROOT}/scripts/format.sh`. Un script de formateador podría verse así:

585 

586 ```bash theme={null}

587 #!/bin/bash

588 npx prettier --write .

589 ```

590 </Piece>

591 

592 <Piece id="settings">

593 Un `settings.json` en la raíz del plugin contiene [configuración](/docs/es/settings-reference) que se aplica mientras el plugin está habilitado, para que un plugin pueda cambiar cómo se comporta la sesión y no solo agregar componentes. Solo dos claves tienen efecto desde un plugin, [`agent`](/docs/es/settings-reference#agent) y [`subagentStatusLine`](/docs/es/settings-reference#subagentstatusline); todas las demás claves se descartan. Consulte [Configuración predeterminada](#default-settings).

594 

595 Este establece `agent`, que ejecuta el hilo principal de la sesión como el agente `security-reviewer` del plugin, para que el indicador del sistema de ese agente, las restricciones de herramientas y el modelo se apliquen a toda la sesión:

596 

597 ```json theme={null}

598 {

599 "agent": "security-reviewer"

600 }

601 ```

602 </Piece>

603 

604 <Piece id="mcp">

605 Un [servidor MCP](/docs/es/mcp) proporciona a Claude herramientas de un sistema externo. Declárelo en `.mcp.json` en la raíz del plugin. Este inicia un servidor local desde un script dentro del plugin y aparece en `/mcp` como `plugin:my-plugin:db`:

606 

607 ```json theme={null}

608 {

609 "mcpServers": {

610 "db": {

611 "command": "node",

612 "args": ["${CLAUDE_PLUGIN_ROOT}/server.js"]

613 }

614 }

615 }

616 ```

617 </Piece>

618 

619 <Piece id="lsp">

620 Un servidor LSP proporciona a Claude [diagnósticos y navegación de código](/docs/es/plugins/code-intelligence) para un lenguaje. Declare el servidor en `.lsp.json` en la raíz del plugin. Este conecta el servidor de lenguaje Go para archivos `.go`:

621 

622 ```json theme={null}

623 {

624 "gopls": {

625 "command": "gopls",

626 "args": ["serve"],

627 "extensionToLanguage": {

628 ".go": "go"

629 }

630 }

631 }

632 ```

633 </Piece>

634</PluginExplorer>

635 

636<h2 id="add-each-kind-of-component">

637 Agregar cada tipo de componente

638</h2>

639 

640Cada sección a continuación cubre un tipo de componente: dónde van sus archivos en el plugin, un ejemplo que valida, qué ve el usuario una vez que se carga el plugin, y la clave de manifiesto que cambia la ubicación predeterminada. Agregue los que su plugin necesite; ninguno es obligatorio.

641 

642<h3 id="skills">

643 Skills

644</h3>

645 

646Una [skill](/docs/es/skills) es un archivo `SKILL.md` que Claude puede cargar cuando su descripción coincide con la tarea. El usuario también puede ejecutarla como un comando. Guarde cada skill en su propio directorio bajo `skills/`:

647 

648```text theme={null}

649my-plugin/

650├── .claude-plugin/

651│ └── plugin.json

652└── skills/

653 └── review/

654 └── SKILL.md

655```

656 

657Dé al `SKILL.md` una `description` para que Claude sepa cuándo usarla:

658 

659```markdown skills/review/SKILL.md theme={null}

660---

661description: Reviews a pull request for style and test coverage. Use when asked to review code.

662---

663 

664Review the changed files. Report style problems first, then missing tests.

665```

666 

667Después de cargar el plugin, `/my-plugin:review` ejecuta la skill. El nombre del comando y quién puede invocarlo siguen estas reglas:

668 

669* **Nombre del comando**: `/<plugin>:<directory>`, así que `skills/review/SKILL.md` en `my-plugin` es `/my-plugin:review`. Si establece `name` en el frontmatter, reemplaza el último segmento y el prefijo del plugin permanece. Consulte [cómo una skill obtiene su nombre de comando](/docs/es/skills#how-a-skill-gets-its-command-name)

670* **Quién la invoca**: Claude, el usuario, o ambos, controlado por frontmatter. Consulte [Controlar quién invoca una skill](/docs/es/skills#control-who-invokes-a-skill)

671 

672También puede colocar skills fuera del directorio predeterminado `skills/`:

673 

674* **Directorios adicionales**: enumérelos en la clave de manifiesto `skills`. Se suman al escaneo predeterminado de `skills/` en lugar de reemplazarlo, a diferencia de `commands` y `agents`

675* **Una única skill en la raíz del plugin**: sin directorio `skills/` y sin clave de manifiesto `skills`, un `SKILL.md` en la raíz del plugin se carga como una skill. Establezca `name` en su frontmatter, porque de lo contrario una instalación de marketplace nombra la skill después de su [directorio de caché](/docs/es/plugins/loading#find-plugins-on-disk) en lugar de su plugin

676 

677Para incluir instrucciones en un plugin, escríbalas como una skill. Claude Code no carga un `CLAUDE.md` en la raíz del plugin, y `claude plugin validate` advierte `CLAUDE.md at the plugin root is not loaded as project context`.

678 

679Para campos de frontmatter y archivos de apoyo, consulte [Skills](/docs/es/skills).

680 

681<h3 id="commands">

682 Comandos

683</h3>

684 

685Un comando es un único archivo Markdown que el usuario ejecuta por nombre, como `/my-plugin:about`.

686 

687<Note>

688 Los comandos son el formato anterior, y [skills](#skills) los reemplazan para trabajo nuevo. Una skill se ejecuta por nombre de la misma manera, y también puede llevar archivos de apoyo en su directorio. Mantenga `commands/` para archivos que está moviendo desde `.claude/commands/`.

689</Note>

690 

691Guarde un comando en `commands/<file>.md` y se convierte en `/<plugin>:<file>`. Un subdirectorio agrega un segmento, así que `commands/db/migrate.md` es `/my-plugin:db:migrate`.

692 

693Los archivos de comando toman el mismo frontmatter que las skills.

694 

695<h4 id="define-commands-in-the-manifest">

696 Definir comandos en el manifiesto

697</h4>

698 

699Solo necesita esto si desea mantener archivos de comando en algún lugar que no sea `commands/`, o para definir un comando corto dentro de `plugin.json` sin un archivo Markdown separado. Establezca la clave de manifiesto `commands`, y Claude Code la lee en lugar de escanear `commands/`. La clave toma una ruta, una matriz de rutas, u un objeto que asigna cada nombre de comando a un archivo `source` o contenido `content` en línea.

700 

701Este manifiesto define `/my-plugin:about` en línea, sin archivo Markdown:

702 

703```json .claude-plugin/plugin.json theme={null}

704{

705 "name": "my-plugin",

706 "commands": {

707 "about": {

708 "content": "Summarize what this repository does in three sentences.",

709 "description": "Summarize the repository"

710 }

711 }

712}

713```

714 

715Cargue el plugin y ejecute `/my-plugin:about` en la sesión para confirmar que se cargó.

716 

717Para la sintaxis completa de la clave, consulte [`commands`](/docs/es/plugins/manifest-reference#commands).

718 

719<h3 id="agents">

720 Agentes

721</h3>

722 

723Un [subagente](/docs/es/sub-agents) es un asistente separado, con sus propias instrucciones y ventana de contexto, al que Claude puede delegar una tarea. Cada archivo Markdown bajo `agents/` define uno:

724 

725```markdown agents/security-reviewer.md theme={null}

726---

727name: security-reviewer

728description: Reviews code changes for security issues. Use after edits to authentication or input handling.

729model: sonnet

730---

731 

732You are a security reviewer. Read the changed files and report injection, authentication, and secrets-handling risks.

733```

734 

735Este agente se llama `my-plugin:security-reviewer`, y el usuario puede [invocarlo explícitamente](/docs/es/sub-agents#invoke-subagents-explicitly) con `@agent-my-plugin:security-reviewer`. La forma del nombre es `<plugin>:<name>`, donde `<name>` viene del frontmatter, o del nombre del archivo cuando no hay ninguno.

736 

737La clave de manifiesto `agents` reemplaza el escaneo de `agents/`.

738 

739<h4 id="organize-agents-in-subfolders">

740 Organizar agentes en subcarpetas

741</h4>

742 

743Puede colocar archivos de agente del plugin en subcarpetas de `agents/`. Claude Code [los carga recursivamente](/docs/es/sub-agents#choose-the-subagent-scope) y une el nombre del plugin, cada nombre de subcarpeta y el nombre del archivo con dos puntos para formar el nombre con alcance del agente. Por ejemplo, `agents/review/security.md` en un plugin llamado `my-plugin` se carga como `my-plugin:review:security`. Dos configuraciones cambian ese nombre:

744 

745* Frontmatter `name`: reemplaza solo el nombre del archivo, así que `name: audit` en `agents/review/security.md` se carga como `my-plugin:review:audit`

746* Campo de manifiesto [`agents`](/docs/es/plugins/manifest-reference#fields): un archivo que enumera allí se carga sin nombres de subcarpeta, así que `"agents": "./custom/review/security.md"` se carga como `my-plugin:security`

747 

748<h4 id="frontmatter-fields-in-plugin-agents">

749 Campos de frontmatter en agentes de plugin

750</h4>

751 

752El frontmatter de un agente de plugin sigue estas reglas:

753 

754* **Campos admitidos**: `name`, `description`, `model`, `effort`, `maxTurns`, `tools`, `disallowedTools`, `skills`, `memory`, `background`, `omitClaudeMd`, `isolation`, `color`, y la clave `cacheTtl` de `experimental`. El único valor válido de `isolation` es `"worktree"`. Consulte [campos de frontmatter admitidos](/docs/es/sub-agents#supported-frontmatter-fields) para ver qué hace cada uno

755* **Campos ignorados**: `permissionMode`, `hooks`, `mcpServers`, e `initialPrompt`. Un archivo de agente no puede agregar hooks o servidores MCP por su cuenta, así que agregue esos como plugin [hooks](#hooks) y [servidores MCP](#mcp-servers) en su lugar

756* **Frontmatter que no se analiza**: el agente aún se carga con cada campo ignorado. Se nombra después del archivo, y su descripción dice `Agent from my-plugin plugin`. Ejecute [`claude plugin validate`](/docs/es/plugins/cli-reference#plugin-validate) en su shell para encontrar estos archivos

757 

758Para ver qué hace cada campo y las reglas de precedencia, consulte [Subagentes](/docs/es/sub-agents#supported-frontmatter-fields).

759 

760<h3 id="hooks">

761 Hooks

762</h3>

763 

764Un [hook](/docs/es/hooks-guide) ejecuta algo automáticamente en un punto del ciclo de vida de Claude Code, como después de cada edición de archivo: un comando de shell, una solicitud HTTP, una llamada a herramienta MCP, un indicador a un modelo o un subagente. Guarde los hooks del plugin en `hooks/hooks.json` en la raíz del plugin, bajo una clave `"hooks"` de nivel superior, en la misma forma que el objeto `hooks` en `settings.json`. Eso le permite copiar un hook de configuración existente sin cambios.

765 

766Este hook ejecuta un script incluido después de cada `Write` o `Edit`:

767 

768```json hooks/hooks.json theme={null}

769{

770 "hooks": {

771 "PostToolUse": [

772 {

773 "matcher": "Write|Edit",

774 "hooks": [

775 {

776 "type": "command",

777 "command": "\"${CLAUDE_PLUGIN_ROOT}/scripts/format.sh\""

778 }

779 ]

780 }

781 ]

782 }

783}

784```

785 

786Guarde el script en `scripts/format.sh` y hágalo ejecutable.

787 

788Cargue el plugin y pida a Claude que edite un archivo. Un hook `PostToolUse` que sale con 0 no muestra nada en la transcripción, así que confirme que se ejecutó con [registro de depuración](/docs/es/hooks#debug-hooks) o por lo que el script mismo cambia.

789 

790Los hooks en `hooks/hooks.json` y en la clave de manifiesto `hooks` se cargan ambos. Para cada evento y su carga útil, consulte [Eventos de hook](/docs/es/hooks#hook-events).

791 

792<h4 id="when-plugin-hooks-fire">

793 Cuándo se activan los hooks del plugin

794</h4>

795 

796Los hooks de un plugin no esperan a que se use una de las skills o comandos del plugin. Claude Code los registra cuando una sesión carga el plugin, y se activan en sus eventos a partir de entonces. Para limitar cuándo se ejecuta un hook, reduzca su `matcher`.

797 

798Si un hook nunca se activa, consulte [hooks que no se activan](/docs/es/plugins/troubleshooting#failed-to-load-hooks-from-and-hooks-that-dont-fire).

799 

800<h4 id="environment-quoting-and-matching-mcp-tools">

801 Entorno, entrecomillado y coincidencia de herramientas MCP

802</h4>

803 

804El entorno del hook, el entrecomillado de `${CLAUDE_PLUGIN_ROOT}` y los matchers para las herramientas MCP propias del plugin funcionan de la siguiente manera:

805 

806* **Entorno**: cada proceso de hook recibe `CLAUDE_PLUGIN_ROOT` y `CLAUDE_PLUGIN_DATA` en su entorno, más `CLAUDE_PLUGIN_OPTION_<KEY>` para cada valor de [configuración del usuario](#user-configuration), para que su script pueda leerlos desde allí

807* **Entrecomillado**: cuando `command` no tiene `args`, se ejecuta a través de un shell, así que envuelva la ruta `${CLAUDE_PLUGIN_ROOT}` entre comillas dobles, como hace el ejemplo `hooks/hooks.json` bajo [Hooks](#hooks), para mantener la ruta expandida como una palabra de shell. Cuando pasa `args` en su lugar, cada elemento se pasa como un argumento sin shell y no necesita entrecomillado. Consulte [forma exec y forma shell](/docs/es/hooks#exec-form-and-shell-form)

808* **Coincidencia de las herramientas MCP propias del plugin**: una herramienta de un [servidor MCP que este plugin declara](#mcp-servers) se llama `mcp__plugin_<plugin>_<server>__<tool>`, así que escriba ese nombre completo en el matcher. Un matcher solo en el nombre del servidor nunca se activa. Consulte [Coincidir herramientas MCP](/docs/es/hooks#match-mcp-tools)

809 

810<h3 id="mcp-servers">

811 Servidores MCP

812</h3>

813 

814Un servidor MCP proporciona a Claude herramientas de un sistema externo. Declárelo en `.mcp.json` en la raíz del plugin, en la misma forma que un [`.mcp.json` de proyecto](/docs/es/mcp#project-scope). Este `.mcp.json` declara un servidor llamado `db`:

815 

816```json .mcp.json theme={null}

817{

818 "mcpServers": {

819 "db": {

820 "command": "node",

821 "args": ["${CLAUDE_PLUGIN_ROOT}/server.js"]

822 }

823 }

824}

825```

826 

827También puede omitir el contenedor `mcpServers` y poner `db` en el nivel superior del archivo.

828 

829Cargue el plugin y ejecute `/mcp` para confirmar que el servidor aparece como `plugin:my-plugin:db`.

830 

831`claude plugin validate` verifica `.mcp.json` e informa una entrada de servidor que Claude Code descartaría en el tiempo de carga como un error. Requiere Claude Code v2.1.281 o posterior.

832 

833Para ver dónde aparece una entrada incorrecta en el tiempo de carga, consulte [Servidores MCP que no se inician](/docs/es/plugins/troubleshooting#invalid-mcp-server-config-for-and-mcp-servers-that-dont-start).

834 

835La clave de manifiesto `mcpServers` toma un mapa de servidor en línea, una ruta a un archivo JSON, o una matriz de esos. Cuando un servidor de manifiesto tiene el mismo nombre que uno en `.mcp.json`, el servidor de manifiesto lo reemplaza.

836 

837<h4 id="reach-users-on-claude-ai-and-cowork">

838 Alcanzar usuarios en claude.ai y Cowork

839</h4>

840 

841Un servidor stdio local, como el servidor `db` bajo [Servidores MCP](#mcp-servers), se ejecuta en Claude Code y en una sesión de Cowork que se ejecuta en su máquina en la aplicación Claude Desktop, pero no en claude.ai. Para alcanzar a los usuarios allí también, haga referencia a un servidor remoto por su URL `https://`, que claude.ai y Cowork ofrecen al usuario como un conector.

842 

843<h4 id="server-names-tool-names-and-reloads">

844 Nombres de servidor, nombres de herramientas y recargas

845</h4>

846 

847Los nombres del servidor, la sustitución de variables y el comportamiento de recarga siguen estas reglas:

848 

849* **Nombre del servidor**: `plugin:<plugin>:<server>`, así que el servidor `db` en `my-plugin` es `plugin:my-plugin:db` en `/mcp`. Use la misma forma para nombrar el servidor en un [hook `mcp_tool`](/docs/es/hooks#mcp-tool-hook-fields)

850* **Nombres de herramientas**: `mcp__plugin_<plugin>_<server>__<tool>`, así que una herramienta `query` en ese servidor `db` es `mcp__plugin_my-plugin_db__query`. Ese es el nombre a usar en [reglas de permisos](/docs/es/permissions) y [matchers de hook](#hooks)

851* **Sustitución**: `${CLAUDE_PLUGIN_ROOT}` y las otras [variables de ruta](#path-variables-and-persistent-data) se sustituyen en `command`, `args` y `env`. No se necesita entrecomillado en `args`, porque cada elemento se pasa como un argumento

852* **Recarga**: cuando el usuario ejecuta `/reload-plugins` y [la recarga se aplica](/docs/es/plugins/cli-reference#reloads-that-change-mcp-tools), un servidor cuya configuración no ha cambiado mantiene su conexión. Un servidor cuya configuración cambió se reconecta, y uno que eliminó se desconecta

853 

854<h4 id="include-a-packaged-mcpb-server">

855 Incluir un servidor MCPB empaquetado

856</h4>

857 

858La clave `mcpServers` también acepta un servidor empaquetado como un [archivo MCPB](https://github.com/modelcontextprotocol/mcpb), cuya extensión es `.mcpb` o la anterior `.dxt`. Apunte la clave al archivo, como una ruta dentro del plugin o una URL `https://`:

859 

860```json .claude-plugin/plugin.json theme={null}

861{

862 "name": "my-plugin",

863 "mcpServers": "./servers/db.mcpb"

864}

865```

866 

867El servidor toma su nombre del `name` en el manifiesto del paquete.

868 

869Para transportes y autenticación, consulte [MCP](/docs/es/mcp#plugin-provided-mcp-servers).

870 

871<h3 id="lsp-servers">

872 Servidores LSP

873</h3>

874 

875Un servidor LSP proporciona a Claude diagnósticos y navegación de código para un lenguaje. Si un [plugin oficial de inteligencia de código](/docs/es/plugins/code-intelligence) ya cubre su lenguaje, instale ese en su lugar de escribir uno. De lo contrario, declare el servidor en `.lsp.json` en la raíz del plugin:

876 

877```json .lsp.json theme={null}

878{

879 "gopls": {

880 "command": "gopls",

881 "args": ["serve"],

882 "extensionToLanguage": {

883 ".go": "go"

884 }

885 }

886}

887```

888 

889El archivo asigna cada nombre de servidor directamente a su configuración, sin un objeto contenedor alrededor del mapa. `command` es el nombre del binario, con sus argumentos en `args`. `extensionToLanguage` necesita al menos una extensión, cada una comenzando con `.`.

890 

891`claude plugin validate` no lee este archivo. Cuando cualquier entrada es inválida, todo el archivo se omite en la carga y `Invalid LSP server config for ".lsp.json"` aparece en la pestaña **Errors** de `/plugin`.

892 

893Su plugin configura la conexión pero no instala el binario del servidor, y cada extensión de archivo obtiene un servidor:

894 

895* **Binario faltante**: Claude Code inicia `command` por nombre desde el `PATH` del usuario. Cuando el binario no está allí, el servidor falla al iniciarse y `claude --debug` registra `LSP server <name> failed to start`

896* **Conflictos de extensión**: cuando dos servidores habilitados reclaman la misma extensión, el primero registrado maneja esos archivos y el otro no se usa para ellos, ya sea que los servidores provengan de un plugin o dos. La pestaña **Errors** de `/plugin` muestra la advertencia `LSP server "<name>" is not used for <ext> files`

897 

898La clave de manifiesto `lspServers` toma el mismo mapa en línea, una ruta a un archivo JSON, o una matriz de esos, y sus servidores se suman a los de `.lsp.json`. Cuando un servidor de manifiesto tiene el mismo nombre que uno en `.lsp.json`, el servidor de manifiesto lo reemplaza.

899 

900Para `transport`, tiempos de espera, reinicios y los otros campos, consulte [`lspServers`](/docs/es/plugins/manifest-reference#lspservers).

901 

902Envíe la salida de registro a stderr, no a stdout. Claude Code lee el stdout de un servidor solo como mensajes de protocolo, y acepta encabezados de mensaje de hasta 64 KiB y un cuerpo de mensaje de hasta 32 MiB.

903 

904Claude Code desconecta un servidor que excede cualquiera de los límites o escribe salida que no es de protocolo a stdout, y cuenta la desconexión como un bloqueo para `restartOnCrash` y `maxRestarts`. Cuando ejecuta con `--debug`, Claude Code escribe un error que nombra la causa en el registro de depuración.

905 

906<h3 id="executables">

907 Ejecutables

908</h3>

909 

910Los archivos en `bin/` en la raíz del plugin están en el `PATH` del shell de la herramienta Bash mientras el plugin está habilitado, para que Claude pueda ejecutarlos como comandos simples. Agregue un script ejecutable:

911 

912```bash bin/hello-plugin theme={null}

913#!/bin/bash

914echo "hello from my-plugin"

915```

916 

917Hágalo ejecutable con `chmod +x bin/hello-plugin` y cargue el plugin. Cuando pide a Claude que ejecute `hello-plugin`, el resultado de la herramienta Bash muestra la salida del script.

918 

919Los directorios `bin/` del plugin vienen después de las entradas `PATH` propias del usuario, así que un plugin no puede sombrear `git`, `ls` u otro comando del sistema.

920 

921claude.ai y Cowork no instalan un plugin que tenga un directorio `bin/` de nivel superior, incluido uno que [distribuya a través de la configuración de la organización de claude.ai](/docs/es/plugins/host-marketplace#distribute-through-organization-settings).

922 

923<h3 id="default-settings">

924 Configuración predeterminada

925</h3>

926 

927Para establecer valores predeterminados que se apliquen mientras el plugin está habilitado, agregue un `settings.json` en la raíz del plugin, o coloque el mismo objeto en línea en la clave de manifiesto `settings`. Dos claves tienen efecto, `agent` y `subagentStatusLine`, y todas las demás claves se descartan.

928 

929Establezca `agent` para ejecutar uno de los agentes propios del plugin como el hilo principal:

930 

931```json settings.json theme={null}

932{

933 "agent": "security-reviewer"

934}

935```

936 

937Cargue el plugin e inicie una sesión. Claude entonces responde en la conversación principal con el indicador del sistema del agente `security-reviewer` y el modelo.

938 

939Para todo lo que controla la clave, consulte la [configuración `agent`](/docs/es/settings-reference#agent).

940 

941Cuando la misma clave se establece en más de un lugar, estas reglas deciden qué valor se aplica:

942 

943* **Archivo sobre manifiesto**: cuando ambos existen y `settings.json` establece al menos una clave admitida, `settings.json` se aplica y el `settings` del manifiesto se ignora

944* **Configuración del usuario sobre valores predeterminados del plugin**: en todas las fuentes de configuración, los valores predeterminados del plugin son la capa más baja, así que un `agent` propio del usuario en `~/.claude/settings.json` anula el suyo

945* **Dos plugins establecen la misma clave**: el valor del plugin cargado último se aplica, y `claude --debug` registra `overrides setting`

946 

947Para la forma `subagentStatusLine`, consulte [líneas de estado de subagente](/docs/es/statusline#subagent-status-lines).

948 

949<h3 id="themes-and-output-styles">

950 Temas y estilos de salida

951</h3>

952 

953Un plugin puede incluir temas de color y estilos de salida. Ambos aparecen en los mismos selectores que los del usuario. Para cualquiera de los dos, establecer la clave de manifiesto reemplaza el escaneo de carpeta.

954 

955| Componente | Guardar como | Formato | Aparece en | Clave de manifiesto |

956| :--------------- | :------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------- | :-------------------- |

957| Tema | `themes/<slug>.json` | El formato de [archivo de tema personalizado](/docs/es/terminal-config#create-a-custom-theme) que los usuarios escriben en `~/.claude/themes/` | `/theme`, bajo el `name` del archivo | `experimental.themes` |

958| Estilo de salida | `output-styles/<name>.md` | El formato de [estilo de salida personalizado](/docs/es/output-styles#create-a-custom-output-style), con frontmatter `name` y `description` | `/output-style`, como `<plugin>:<name>` | `outputStyles` |

959 

960Los temas del plugin son de solo lectura, así que cuando un usuario edita uno en `/theme`, la edición se guarda como una copia en su propio directorio de temas.

961 

962Este tema recolora el acento del indicador y el texto de error en el preajuste oscuro:

963 

964```json themes/dracula.json theme={null}

965{

966 "name": "Dracula",

967 "base": "dark",

968 "overrides": {

969 "claude": "#bd93f9",

970 "error": "#ff5555"

971 }

972}

973```

974 

975<h3 id="channels">

976 Canales

977</h3>

978 

979Un [canal](/docs/es/channels) permite que un sistema externo como una aplicación de chat envíe mensajes a una sesión. En un plugin, un canal es uno de los servidores MCP más una entrada `channels` que se vincula a él y puede solicitar su propia configuración. Este manifiesto vincula un canal a un servidor `telegram` y solicita un token de bot:

980 

981```json .claude-plugin/plugin.json theme={null}

982{

983 "name": "my-plugin",

984 "mcpServers": {

985 "telegram": {

986 "command": "node",

987 "args": ["${CLAUDE_PLUGIN_ROOT}/server.js"],

988 "env": { "BOT_TOKEN": "${user_config.bot_token}" }

989 }

990 },

991 "channels": [

992 {

993 "server": "telegram",

994 "userConfig": {

995 "bot_token": {

996 "type": "string",

997 "title": "Bot token",

998 "description": "Telegram bot token",

999 "sensitive": true

1000 }

1001 }

1002 }

1003 ]

1004}

1005```

1006 

1007`server` debe coincidir con una clave en `mcpServers`. El `userConfig` por canal toma la misma forma que la clave `userConfig` de [nivel superior](#user-configuration).

1008 

1009Para lo que el servidor debe implementar y cómo los usuarios habilitan un plugin de canal, consulte [Empaquetar como un plugin](/docs/es/channels-reference#package-as-a-plugin) en la referencia de canales. Para la tabla de campos, consulte [`channels`](/docs/es/plugins/manifest-reference#channels).

1010 

1011<h3 id="monitors">

1012 Monitores

1013</h3>

1014 

1015Un monitor es un comando de shell que se ejecuta en segundo plano durante toda la sesión. Lo que imprime llega a Claude como notificaciones, para que Claude pueda reaccionar a un registro o un cambio de estado sin que se le pida que lo observe. Guarde las entradas en `monitors/monitors.json`:

1016 

1017```json monitors/monitors.json theme={null}

1018[

1019 {

1020 "name": "error-log",

1021 "command": "tail -F ./logs/error.log",

1022 "description": "Application error log"

1023 }

1024]

1025```

1026 

1027El comando se ejecuta en un shell, en el directorio de trabajo en el que comenzó la sesión.

1028 

1029El comando de un monitor está limitado en dónde comienza y qué puede referenciar:

1030 

1031* **Solo sesiones interactivas**: los monitores del plugin comienzan en una sesión interactiva y nunca en modo no interactivo con la bandera `-p`. También comienzan solo donde la [herramienta Monitor](/docs/es/tools-reference#monitor-tool) está disponible

1032* **Sin configuración del usuario**: `command` obtiene las [variables de ruta](#path-variables-and-persistent-data) y `${ENV_VAR}` del entorno, pero nunca `${user_config.*}`. Un monitor que hace referencia a uno no comienza, y los procesos de monitor tampoco reciben `CLAUDE_PLUGIN_OPTION_<KEY>`

1033* **Deshabilitación a mitad de sesión**: si deshabilita un plugin a mitad de sesión, Claude Code no detiene los monitores que ya se están ejecutando. Se detienen cuando termina la sesión

1034 

1035La clave de manifiesto `experimental.monitors` toma la misma matriz en línea o una ruta a un archivo JSON, y se lee en lugar de `monitors/monitors.json`.

1036 

1037Para el disparador `when` y los otros campos, consulte [`monitors`](/docs/es/plugins/manifest-reference#monitors).

1038 

1039<h2 id="user-configuration">

1040 Pedir al usuario valores de configuración

1041</h2>

1042 

1043Declare los valores que su plugin necesita del usuario en la clave de manifiesto `userConfig`, para que los usuarios no editen `settings.json` ellos mismos. Cada opción aparece en un diálogo con su `title` como etiqueta y su `description` debajo.

1044 

1045Establezca `"sensitive": true` para un token o contraseña. El diálogo entonces enmascara la entrada, y el valor se almacena en almacenamiento seguro en lugar de `settings.json`.

1046 

1047Este manifiesto solicita un punto final y un token:

1048 

1049```json .claude-plugin/plugin.json theme={null}

1050{

1051 "name": "my-plugin",

1052 "userConfig": {

1053 "api_url": {

1054 "type": "string",

1055 "title": "API URL",

1056 "description": "Base URL of your team's API"

1057 },

1058 "api_token": {

1059 "type": "string",

1060 "title": "API token",

1061 "description": "Token for your team's API",

1062 "sensitive": true

1063 }

1064 }

1065}

1066```

1067 

1068<h3 id="when-the-configuration-dialog-appears">

1069 Cuándo aparece el diálogo de configuración

1070</h3>

1071 

1072El diálogo aparece solo en la interfaz interactiva `/plugin`. Se abre para cualquier opción que aún no esté establecida cuando el usuario hace cualquiera de lo siguiente:

1073 

1074* Instala el plugin en `/plugin`

1075* Ejecuta `/plugin install <plugin>@<marketplace>` dentro de una sesión

1076* Habilita el plugin desde la pestaña **Installed** en `/plugin`

1077 

1078Para abrir el mismo diálogo en cualquier momento, el usuario ejecuta `/plugin configure <plugin>@<marketplace>`.

1079 

1080El comando de shell `claude plugin install` nunca solicita valores de `userConfig`. Para establecer valores desde el shell, pase cada uno como `--config KEY=VALUE`. Cuando las opciones permanecen sin establecer, el comando imprime una línea `userConfig options not yet set` que nombra ambas formas de establecerlas. [El diálogo `userConfig` nunca aparece](/docs/es/plugins/troubleshooting#the-userconfig-dialog-never-appears) cita la línea.

1081 

1082Para los campos de opción, dónde se almacena cada valor, cómo un componente hace referencia a un valor guardado, y qué campos rechazan `${user_config.*}`, consulte [Configuración del usuario](/docs/es/plugins/manifest-reference#user-configuration).

1083 

1084<h2 id="path-variables-and-persistent-data">

1085 Hacer referencia a rutas de plugin y almacenar datos

1086</h2>

1087 

1088No sabe dónde se instalará su plugin, así que haga referencia a sus archivos y datos a través de estas variables en lugar de rutas fijas. Se sustituyen en contenido de skill, comando y agente, en comandos de hook y monitor, y en configuraciones de servidor MCP y LSP. También se exportan a procesos de hook, MCP y LSP:

1089 

1090* **`${CLAUDE_PLUGIN_ROOT}`**: el directorio de instalación del plugin. Cada versión tiene su propio [directorio de caché](/docs/es/plugins/loading#find-plugins-on-disk), así que la ruta cambia cuando el plugin se actualiza. No escriba estado allí

1091* **`${CLAUDE_PLUGIN_DATA}`**: un directorio que sobrevive a las actualizaciones, para `node_modules`, entornos virtuales y cachés. Se resuelve a `~/.claude/plugins/data/<id>/` y se crea cuando se hace referencia por primera vez

1092* **`${CLAUDE_PROJECT_DIR}`**: la raíz del proyecto, el mismo valor que los hooks reciben

1093 

1094En la ruta del directorio de datos, `<id>` es el identificador del plugin con cada carácter que no sea letra, dígito, `_` y `-` reemplazado por `-`, así que `my-plugin@my-marketplace` se convierte en `my-plugin-my-marketplace`.

1095 

1096En Windows, las rutas sustituidas usan barras diagonales para que un shell no lea las barras invertidas como escapes.

1097 

1098<h3 id="install-dependencies-into-the-data-directory">

1099 Instalar dependencias en el directorio de datos

1100</h3>

1101 

1102Para un plugin instalado desde marketplace, Claude Code instala automáticamente [dependencias de paquetes Node.js](/docs/es/plugins/loading#node-js-package-dependencies) elegibles cuando almacena en caché el plugin, así que es posible que no necesite instalarlas usted mismo. Cuando lo hace, este hook `SessionStart` instala `node_modules` en `${CLAUDE_PLUGIN_DATA}` en la primera ejecución y nuevamente después de que una actualización cambie `package.json`:

1103 

1104```json hooks/hooks.json theme={null}

1105{

1106 "hooks": {

1107 "SessionStart": [

1108 {

1109 "hooks": [

1110 {

1111 "type": "command",

1112 "command": "diff -q \"${CLAUDE_PLUGIN_ROOT}/package.json\" \"${CLAUDE_PLUGIN_DATA}/package.json\" >/dev/null 2>&1 || (cd \"${CLAUDE_PLUGIN_DATA}\" && cp \"${CLAUDE_PLUGIN_ROOT}/package.json\" . && npm install) || rm -f \"${CLAUDE_PLUGIN_DATA}/package.json\""

1113 }

1114 ]

1115 }

1116 ]

1117 }

1118}

1119```

1120 

1121Después de la primera sesión, `~/.claude/plugins/data/<id>/node_modules` existe. Un servidor MCP puede entonces establecer `NODE_PATH` a `${CLAUDE_PLUGIN_DATA}/node_modules` en su `env`. Para qué campos sustituyen qué variable, consulte [Variables de entorno](/docs/es/plugins/manifest-reference#environment-variables).

1122 

1123<h2 id="next-steps">

1124 Próximos pasos

1125</h2>

1126 

1127* [Referencia de manifiesto de plugin](/docs/es/plugins/manifest-reference): campos `plugin.json`, reglas de ruta y el diseño estándar

1128* [Probar plugins con evals](/docs/es/plugin-evals): verifique que los componentes que agregó cambien el comportamiento de Claude de la manera que pretende

1129* [Publicar y distribuir un plugin](/docs/es/plugins/publish): versione el plugin y colóquelo en un marketplace

1130* [Solucionar problemas de plugins](/docs/es/plugins/troubleshooting): qué hacer cuando un componente no se carga o un hook no se activa

plugins/create.md +424 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Crear un plugin de Claude Code

6 

7> Construya su primer plugin de Claude Code desde un directorio vacío, pruébelo sin un marketplace y convierta una configuración .claude/ existente.

8 

9Un plugin es un directorio de skills, agentes, hooks y servidores MCP, más un archivo `plugin.json`, llamado el manifiesto, que nombra el plugin. Claude Code carga el directorio como una unidad, por lo que puede compartirlo con compañeros de equipo, instalarlo en varios proyectos o publicarlo en un marketplace.

10 

11Esta página es para personas que escriben sus propios plugins.

12 

13<Note>

14 Estos casos se cubren en otras páginas:

15 

16 * **Instalar el plugin de otra persona**: consulte [Instalar plugins](/docs/es/plugins/install)

17 * **No está seguro de si necesita un plugin**: consulte [Decidir si necesita un plugin](/docs/es/plugins/overview#decide-whether-you-need-a-plugin) en la descripción general

18 * **Los usuarios de su plugin están en claude.ai o en Cowork**: la misma carpeta se instala allí con un subconjunto diferente de componentes. Consulte [Plugins en claude.ai y en Cowork](https://claude.com/docs/plugins/overview)

19</Note>

20 

21Comience desde la sección que coincida con lo que ya tiene:

22 

23* **Nada aún**: siga [Crear su primer plugin](#create-your-first-plugin), luego [Desarrollar sin un marketplace](#develop-without-a-marketplace) y [Probar y depurar](#test-and-debug).

24* **Archivos bajo `.claude/` ya**: haga el recorrido del primer plugin una vez para aprender el diseño, luego siga [Convertir una configuración `.claude/` existente](#convert-an-existing-claude-setup).

25 

26<h2 id="decide-when-to-use-a-plugin">

27 Decidir cuándo usar un plugin

28</h2>

29 

30Skills, agentes, hooks y servidores MCP funcionan todos de forma independiente en su proyecto o directorio de inicio. Mantenga esa configuración independiente mientras sirva a un proyecto o solo a usted. Cree un plugin cuando desee compartir la configuración con compañeros de equipo, instalarlo en varios proyectos o publicar versiones lanzadas.

31 

32Cuando mueve skills, agentes, hooks y configuración MCP independientes a un plugin, su ubicación y nombres cambian:

33 

34* **Dónde van los archivos**: bajo el directorio propio del plugin, llamado la raíz del plugin, como `skills/`, `agents/`, `hooks/hooks.json` y `.mcp.json`.

35* **Cómo se nombran**: los skills y agentes del plugin obtienen el nombre del plugin como prefijo, como `/my-plugin:hello`, por lo que dos plugins pueden proporcionar cada uno un skill `hello` sin colisionar.

36 

37Para mover una configuración existente a un plugin, consulte [Convertir una configuración `.claude/` existente](#convert-an-existing-claude-setup).

38 

39<h2 id="create-your-first-plugin">

40 Crear su primer plugin

41</h2>

42 

43En este recorrido, crea un plugin cuyo único componente es un skill, un saludo, y lo ejecuta con `--plugin-dir`, que carga un plugin para una sesión sin instalarlo. Un plugin puede contener cualquier mezcla de [componentes](/docs/es/plugins/components), como skills, agentes, hooks y servidores MCP, y ninguno es requerido; un skill es el ejemplo más pequeño que muestra el diseño.

44 

45Necesita Claude Code [instalado e iniciado sesión](/docs/es/quickstart#step-1-install-claude-code).

46 

47Abra una terminal en el directorio donde desea mantener el plugin, como `~/projects`, y ejecute los comandos en estos pasos desde él. Puede mantener un plugin en cualquier lugar, porque pasa su ruta a Claude Code cuando inicia una sesión.

48 

49<Steps>

50 <Step title="Crear el directorio del plugin">

51 Cree el directorio del plugin, con una carpeta `.claude-plugin/` dentro para mantener el manifiesto:

52 

53 ```bash theme={null}

54 mkdir -p my-first-plugin/.claude-plugin

55 ```

56 </Step>

57 

58 <Step title="Escribir el manifiesto">

59 El [manifiesto](/docs/es/plugins/manifest-reference) es un archivo JSON llamado `plugin.json` que le dice a Claude Code el nombre del plugin y lo describe. Guarde este como `my-first-plugin/.claude-plugin/plugin.json`:

60 

61 ```json my-first-plugin/.claude-plugin/plugin.json theme={null}

62 {

63 "name": "my-first-plugin",

64 "description": "A greeting plugin to learn the basics",

65 "version": "1.0.0",

66 "author": {

67 "name": "Your Name"

68 }

69 }

70 ```

71 

72 Los cuatro campos hacen esto:

73 

74 * **`name`**: requerido. Identifica el plugin y se convierte en el prefijo en cada skill y agente que proporciona el plugin. No ponga espacios en él.

75 * **`description`**: el texto que los usuarios ven para el plugin en `/plugin`.

76 * **`version`**: opcional. Configurarlo mantiene a los usuarios en esa versión hasta que la cambie; [Lanzar una nueva versión](/docs/es/plugins/host-marketplace#release-a-new-version) dice cuándo configurarla u omitirla.

77 * **`author`**: a quién acreditar. `name` es requerido dentro de él; `email` y `url` son opcionales.

78 

79 Todos los demás campos están en la [referencia del manifiesto](/docs/es/plugins/manifest-reference#fields).

80 

81 Solo `plugin.json` va dentro de `.claude-plugin/`. El skill que agrega a continuación va directamente bajo `my-first-plugin/`, junto a esa carpeta.

82 </Step>

83 

84 <Step title="Agregar un skill">

85 El único componente de este plugin es un skill. Cada skill es un directorio bajo `skills/` que contiene un archivo `SKILL.md`. Cree el directorio del skill:

86 

87 ```bash theme={null}

88 mkdir -p my-first-plugin/skills/hello

89 ```

90 

91 Luego cree `my-first-plugin/skills/hello/SKILL.md` con este contenido:

92 

93 ```markdown my-first-plugin/skills/hello/SKILL.md theme={null}

94 ---

95 name: hello

96 description: Greet the user with a friendly message

97 disable-model-invocation: true

98 ---

99 

100 Greet the user warmly and ask how you can help them today.

101 ```

102 

103 La línea `disable-model-invocation: true` significa que Claude no ejecuta el skill por su cuenta, por lo que solo usted lo activa. Elimine esa línea de un skill que desee que Claude ejecute por su cuenta. El comando del skill combina el nombre del plugin y el nombre del skill, por lo que ejecuta este como `/my-first-plugin:hello`. Para los otros campos del frontmatter, consulte la [referencia del frontmatter del skill](/docs/es/skills#frontmatter-reference).

104 </Step>

105 

106 <Step title="Validar el plugin">

107 Verifique el manifiesto y el frontmatter del skill antes de ejecutar nada:

108 

109 ```bash theme={null}

110 claude plugin validate ./my-first-plugin

111 ```

112 

113 El comando imprime la ruta del manifiesto que verificó y `✔ Validation passed`. Si imprime `✘ Validation failed` en su lugar, cada línea anterior a esa línea de resultado nombra el campo a corregir. Busque cada mensaje bajo [`claude plugin validate` reporta errores](/docs/es/plugins/troubleshooting#claude-plugin-validate-reports-errors).

114 </Step>

115 

116 <Step title="Ejecutar Claude Code con el plugin">

117 Inicie una sesión con el plugin cargado:

118 

119 ```bash theme={null}

120 claude --plugin-dir ./my-first-plugin

121 ```

122 

123 Una vez que Claude Code se inicia, ejecute el skill:

124 

125 ```text theme={null}

126 /my-first-plugin:hello

127 ```

128 

129 Claude responde con un saludo.

130 </Step>

131</Steps>

132 

133El plugin se carga solo en sesiones que inicia con `--plugin-dir`. Para continuar trabajando en él sin la bandera, o para probar una compilación `.zip`, consulte [Desarrollar sin un marketplace](#develop-without-a-marketplace).

134 

135<h3 id="share-the-plugin">

136 Compartir su plugin

137</h3>

138 

139Un plugin que construyó con [Crear su primer plugin](#create-your-first-plugin) existe solo en su máquina. Cuando está listo para otras personas, hay tres formas de llevarlo a ellas:

140 

141* **Enviarlo a algunas personas directamente**: déles el directorio del plugin o un `.zip` del mismo, y nada necesita ser publicado. Consulte [Compartir un plugin sin un marketplace](/docs/es/plugins/publish#share-a-plugin-without-a-marketplace).

142* **Listarlo en su propio marketplace**: los compañeros de equipo agregan su marketplace una vez e instalan el plugin por nombre, y reciben sus actualizaciones. Consulte [Publicar a través de su propio marketplace](/docs/es/plugins/publish#publish-through-your-own-marketplace).

143* **Enviarlo al marketplace comunitario de Anthropic**: una vez que se lista, cualquiera que agregue ese marketplace puede instalarlo. Consulte [Enviar al marketplace comunitario](/docs/es/plugins/publish#submit-to-the-community-marketplace).

144 

145<h3 id="plugin-layout">

146 Diseño del plugin

147</h3>

148 

149Cada tipo de [componente](/docs/es/plugins/components), como skills, agentes, hooks y servidores MCP, va en un directorio fijo bajo la raíz del plugin, que es el directorio que pasa a `--plugin-dir`. Agregue solo los directorios que use. Para hacer clic a través de un directorio de plugin completo y leer qué hace cada archivo, abra el [explorador de plugins](/docs/es/plugins/components#explore-the-plugin-directory).

150 

151La tabla enumera los directorios con los que la mayoría de los plugins comienzan, y el [diseño completo](/docs/es/plugins/manifest-reference#standard-layout) enumera el resto.

152 

153| Ubicación | Contenidos |

154| :--------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------- |

155| `.claude-plugin/plugin.json` | El manifiesto. Cuando carga un plugin con `--plugin-dir` y no tiene manifiesto, Claude Code nombra el plugin después de su directorio |

156| `skills/` | Un directorio `<name>/SKILL.md` por skill |

157| `commands/` | Archivos Markdown planos, la forma anterior de skills. Use `skills/` para nuevos plugins |

158| `agents/` | Un archivo Markdown por subagente |

159| `hooks/hooks.json` | Configuración de hooks: una clave `"hooks"` de nivel superior cuyo valor tiene la misma forma que `hooks` en un archivo de configuración |

160| `.mcp.json` | Definiciones de servidores MCP |

161 

162<Warning>

163 Solo `plugin.json` va dentro de `.claude-plugin/`. Los componentes guardados allí no se cargan.

164 

165 La raíz del plugin es el directorio propio del plugin, no `~/.claude/` en sí. Un `.mcp.json` guardado en `~/.claude/.mcp.json` no se carga.

166</Warning>

167 

168<h2 id="develop-without-a-marketplace">

169 Desarrollar sin un marketplace

170</h2>

171 

172No necesita un [marketplace](/docs/es/plugins/overview#get-plugins-from-a-marketplace) para ejecutar un plugin que está escribiendo. Cárguelo directamente desde el disco o una URL en su lugar:

173 

174* [`--plugin-dir`](#load-a-directory-or-archive-for-one-session): carga un directorio o archivo `.zip` para una sesión.

175* [`--plugin-url`](#fetch-an-archive-from-a-url-for-one-session): obtiene un archivo `.zip` de una URL para una sesión.

176* [`claude plugin init`](#scaffold-a-plugin-that-loads-every-session): estructura un plugin bajo `~/.claude/skills/` que se carga cada sesión.

177 

178Si dos plugins cargados de diferentes formas comparten un nombre, consulte [Conflictos de nombres](/docs/es/plugins/loading#name-conflicts) para ver cuál mantiene Claude Code.

179 

180<h3 id="load-a-directory-or-archive-for-one-session">

181 Cargar un plugin para una sesión

182</h3>

183 

184Puede cargar un plugin para una sola sesión de tres formas: desde un directorio o archivo `.zip` en el disco con `--plugin-dir`, desde una URL con `--plugin-url`, o desde una variable de entorno cuando no puede agregar una bandera. Cada plugin se carga solo para esa sesión, y nada se escribe en su configuración para él. Cuando edita los archivos del plugin durante la sesión, ejecute `/reload-plugins` para cargar los cambios.

185 

186<h4 id="from-a-directory-or-zip">

187 Desde un directorio o `.zip`

188</h4>

189 

190Cuando inicia `claude` desde su shell, pase `--plugin-dir` con el directorio raíz del plugin o un archivo `.zip` del mismo. Repita la bandera para cargar varios plugins:

191 

192```bash theme={null}

193claude --plugin-dir ./my-first-plugin --plugin-dir ./other-plugin.zip

194```

195 

196<h4 id="load-a-folder-of-plugins">

197 Desde una carpeta de plugins

198</h4>

199 

200Para cargar varios plugins desde un lugar, pase una carpeta que los contenga, como `--plugin-dir ./plugins`. Cargar una carpeta de plugins requiere Claude Code v2.1.265 o posterior.

201 

202Si la carpeta no tiene un directorio `.claude-plugin/` y no tiene componentes de plugin en su nivel superior, Claude Code la trata como una carpeta de plugins. Cada subcarpeta inmediata que tenga un manifiesto `.claude-plugin/plugin.json` se carga como un plugin separado. Todo lo demás en la carpeta se omite sin un error, incluida una subcarpeta que no tiene manifiesto. Si un plugin en la carpeta no se carga, verifique que su subcarpeta tenga un `.claude-plugin/plugin.json`.

203 

204En una sesión interactiva, también puede agregar y eliminar plugins en la carpeta después del inicio:

205 

206* Una subcarpeta que agrega se carga como un nuevo plugin una vez que existe su manifiesto.

207* Cuando elimina una subcarpeta, su plugin se descarga.

208 

209Un mensaje aparece en la sesión para cada uno de estos cambios. Si cargar o descargar un plugin a mitad de la conversación [invalidaría el caché de prompt](/docs/es/prompt-caching#enabling-or-disabling-a-plugin), el cambio se retiene en su lugar, y el mensaje le dice que ejecute `/reload-plugins` para aplicarlo.

210 

211<h4 id="fetch-an-archive-from-a-url-for-one-session">

212 Desde una URL

213</h4>

214 

215Cuando inicia `claude` desde su shell, pase `--plugin-url` con la dirección de un archivo `.zip`, como un artefacto de compilación que su CI publica:

216 

217```bash theme={null}

218claude --plugin-url https://example.com/my-first-plugin.zip

219```

220 

221Claude Code descarga el archivo al inicio. Para cargar varios, repita la bandera o pase las URLs separadas por espacios en un argumento entrecomillado.

222 

223Apunte la bandera solo a archivos que controle o en los que confíe.

224 

225Si Claude Code no puede obtener el archivo, o el archivo no es válido, se inicia sin el plugin y registra un error de carga de plugin que puede revisar en la pestaña **Errors** del administrador `/plugin`.

226 

227<h4 id="from-an-environment-variable">

228 Desde una variable de entorno

229</h4>

230 

231Para cargar plugins en una sesión donde no puede agregar la bandera `--plugin-dir`, enumere sus rutas absolutas en la variable de entorno [`CLAUDE_CODE_PLUGIN_DIRS`](/docs/es/env-vars#variables) en su lugar. Claude Code carga cada ruta como carga una ruta `--plugin-dir`. Estos plugins se cargan además de cualquiera que pase con `--plugin-dir`. [La configuración del proyecto y local no puede establecer esta variable](/docs/es/settings-reference#variables-claude-code-ignores-in-env). `CLAUDE_CODE_PLUGIN_DIRS` requiere Claude Code v2.1.280 o posterior.

232 

233La configuración administrada puede desactivar `--plugin-dir` y `CLAUDE_CODE_PLUGIN_DIRS`. Consulte [Banderas que cargan un plugin para una sesión](/docs/es/plugins/cli-reference#flags-that-load-a-plugin-for-one-session). Para probar un plugin junto con un plugin del que depende, consulte [Probar un plugin y su dependencia localmente](/docs/es/plugins/dependencies#test-a-plugin-and-its-dependency-locally).

234 

235<h3 id="scaffold-a-plugin-that-loads-every-session">

236 Hacer que un plugin se cargue en cada sesión

237</h3>

238 

239Su directorio de skills personal es `~/.claude/skills/`. Claude Code carga cualquier carpeta allí que contenga un `.claude-plugin/plugin.json` como un plugin en cada sesión, sin bandera y sin paso de instalación. `claude plugin init` estructura uno de estos plugins para usted.

240 

241<h4 id="scaffold-the-plugin-with-claude-plugin-init">

242 Estructurar el plugin con `claude plugin init`

243</h4>

244 

245`claude plugin init` escribe un plugin de inicio bajo `~/.claude/skills/`. Requiere Claude Code v2.1.157 o posterior. Estructure uno desde su shell:

246 

247```bash theme={null}

248claude plugin init my-tool

249```

250 

251El comando crea `~/.claude/skills/my-tool/` con un `.claude-plugin/plugin.json` y un `SKILL.md` raíz. Imprime `✔ Created plugin "my-tool" at ~/.claude/skills/my-tool` seguido de `It will auto-load next session as my-tool@skills-dir. Run /reload-plugins to load it now.`

252 

253Pase `--with skills` para que `claude plugin init` estructura un skill bajo `skills/` para usted. Los otros valores `--with` están en la [referencia de comandos de plugin](/docs/es/plugins/cli-reference#plugin-init).

254 

255<h4 id="skill-names-in-a-scaffolded-plugin">

256 Nombrar los skills del plugin

257</h4>

258 

259El skill raíz en `~/.claude/skills/my-tool/SKILL.md` también es un skill personal, por lo que lo invoca como `/my-tool`, no `/my-tool:my-tool`. Los skills que agrega bajo `skills/` dentro del plugin obtienen el prefijo del nombre del plugin, como `/my-tool:example`.

260 

261<h4 id="stop-loading-the-plugin">

262 Dejar de cargar el plugin

263</h4>

264 

265Para dejar de cargar un plugin estructurado, elimine su directorio, o ejecute `claude plugin disable my-tool@skills-dir` en su shell con el nombre `my-tool@skills-dir` que `claude plugin init` imprimió. En el ID `my-tool@skills-dir`, `skills-dir` se coloca donde iría un nombre de marketplace, porque el plugin se carga desde su directorio de skills en lugar de desde un marketplace.

266 

267<h4 id="load-a-plugin-for-everyone-in-one-repository">

268 Compartir el plugin a través de un repositorio

269</h4>

270 

271`claude plugin init` escribe el plugin en su directorio de skills personal en `~/.claude/skills/`, por lo que se carga para usted en cada proyecto. Para hacer que un plugin se cargue para todos en un repositorio, cree el mismo diseño usted mismo en `<project>/.claude/skills/<name>/`, incluido su `.claude-plugin/plugin.json`. Consulte [Plugins compartidos a través de un repositorio](/docs/es/plugins/loading#plugins-shared-through-a-repository) para las condiciones bajo las cuales Claude Code lo carga.

272 

273<h2 id="test-and-debug">

274 Probar y depurar

275</h2>

276 

277Cuando un cambio en su plugin no aparece, trabaje a través de estas verificaciones en orden. Cada una le dice qué hizo Claude Code con el plugin:

278 

2791. En su shell, ejecute `claude plugin validate <path>`. Verifica el manifiesto y el frontmatter de cada archivo de skill, agente y comando, y sale con `0` en `Validation passed`. Agregue `--strict` para fallar también en advertencias. Los códigos de salida y el manejo de directorios están en la [referencia de comandos de plugin](/docs/es/plugins/cli-reference#plugin-validate).

2802. En la sesión en ejecución, ejecute `/reload-plugins` para aplicar ediciones que realizó en el disco. Imprime una línea `Reloaded:` con conteos. Luego confirme que un skill se cargó escribiendo su comando `/plugin-name:skill`, o encontrando el plugin en la pestaña **Installed** de `/plugin`.

2813. En la misma sesión, ejecute `/plugin`. La pestaña **Installed** enumera su plugin y, en los detalles del plugin, los componentes que Claude Code encontró. La pestaña **Errors** enumera lo que no se cargó y por qué, como una ruta en su manifiesto que no existe.

2824. De vuelta en su shell, ejecute `claude plugin list`. Imprime plugins de sesión única y del directorio de skills en sus propias secciones con `Status: ✔ loaded` o el error de carga. Para incluir el plugin que está desarrollando, pase `--plugin-dir` con su ruta antes de `plugin list`.

283 

284Para verificar un servidor MCP, ejecute `/mcp` en la sesión para ver el estado del servidor. Cuando el servidor es saludable, `/mcp` lo enumera como conectado. Si no es así, consulte [Servidores MCP que no se inician](/docs/es/plugins/troubleshooting#invalid-mcp-server-config-for-and-mcp-servers-that-dont-start).

285 

286Para verificar un hook, active el evento que coincide. Por ejemplo, pida a Claude que edite un archivo para activar un hook `PostToolUse`. Luego lea el [registro de depuración](/docs/es/hooks#debug-hooks), que muestra qué hooks coincidieron, sus códigos de salida y su salida.

287 

288Las siguientes secciones cubren los fallos que es más probable que encuentre mientras desarrolla, y la [página de solución de problemas](/docs/es/plugins/troubleshooting#build-a-plugin) tiene la entrada completa para cada uno.

289 

290<h3 id="a-component-path-isn’t-found">

291 Una ruta de componente no se encuentra

292</h3>

293 

294La pestaña **Errors** de `/plugin` muestra `<component> path not found: <path>`, por ejemplo `commands path not found`. Una ruta de componente en su manifiesto, como `commands`, `skills`, `agents` o `hooks`, apunta a nada. Corrija la ruta o cree el directorio, luego ejecute `/reload-plugins` en la sesión. Consulte [`commands path not found`](/docs/es/plugins/troubleshooting#commands-path-not-found).

295 

296<h3 id="plugin-dir-at-a-marketplace-root-doesn’t-load-the-plugins-under-plugins/">

297 `--plugin-dir` en una raíz de marketplace no carga los plugins bajo `plugins/`

298</h3>

299 

300`--plugin-dir` toma el directorio raíz del plugin, el que contiene `.claude-plugin/plugin.json` y los directorios de componentes como `skills/`. Si lo apunta a una raíz de marketplace en su lugar, Claude Code no lee `marketplace.json`, por lo que un plugin bajo `plugins/` no se carga, y no ve ningún error. Apunte la bandera a la carpeta de un plugin, o agregue el marketplace. Consulte [la entrada de solución de problemas](/docs/es/plugins/troubleshooting#plugin-dir-loads-a-plugin-with-no-components).

301 

302<h3 id="the-plugin-loads-but-its-skills-are-missing">

303 El plugin se carga pero sus skills faltan

304</h3>

305 

306El directorio `skills/` está dentro de `.claude-plugin/`, o una entrada `skills` en el manifiesto apunta a un archivo. Mueva `skills/` a la raíz del plugin, apunte cada entrada `skills` a un directorio que contenga `SKILL.md`, y ejecute `/reload-plugins` en la sesión. Consulte [El plugin se carga pero sus skills faltan](/docs/es/plugins/troubleshooting#plugin-loads-but-its-skills-are-missing).

307 

308<h3 id="the-userconfig-dialog-never-appears">

309 El diálogo `userConfig` nunca aparece

310</h3>

311 

312El diálogo para las opciones [`userConfig`](/docs/es/plugins/components#user-configuration) de su plugin es parte de la instalación a través de `/plugin` en una sesión. Cargar con `--plugin-dir` no lo muestra, ni tampoco `claude plugin install` en el shell. Con el plugin cargado, ejecute `/plugin configure <plugin-name>` en la sesión para abrirlo. Consulte [El diálogo `userConfig` nunca aparece](/docs/es/plugins/troubleshooting#the-userconfig-dialog-never-appears).

313 

314<h3 id="check-that-the-plugin-changes-claude’s-behavior">

315 Verificar que el plugin cambia el comportamiento de Claude

316</h3>

317 

318Un plugin que se carga sin errores aún puede no dirigir a Claude de la manera que pretende. `claude plugin eval`, que ejecuta en su shell, ejecuta sus casos de prueba con y sin el plugin y califica la diferencia. Consulte [Probar plugins con evals](/docs/es/plugin-evals), comenzando con [Crear su primer conjunto de eval](/docs/es/plugin-evals#create-your-first-eval-suite).

319 

320<h2 id="convert-an-existing-claude-setup">

321 Convertir una configuración `.claude/` existente

322</h2>

323 

324Si ya tiene skills, agentes o hooks bajo el directorio `.claude/` de un proyecto, puede moverlos a un plugin sin reescribirlos.

325 

326Ejecute los comandos en estos pasos desde la raíz del proyecto, que es el directorio que contiene `.claude/`, porque las rutas `cp` son relativas a él.

327 

328<Steps>

329 <Step title="Crear la estructura del plugin">

330 Cree el directorio del plugin y su carpeta `.claude-plugin/` junto a `.claude/`. Puede mover el plugin a cualquier lugar después.

331 

332 ```bash theme={null}

333 mkdir -p my-plugin/.claude-plugin

334 ```

335 

336 Cree `my-plugin/.claude-plugin/plugin.json`:

337 

338 ```json my-plugin/.claude-plugin/plugin.json theme={null}

339 {

340 "name": "my-plugin",

341 "description": "Migrated from standalone configuration",

342 "version": "1.0.0"

343 }

344 ```

345 </Step>

346 

347 <Step title="Copiar sus archivos existentes">

348 Copie cada directorio de configuración que tenga a la raíz del plugin, y omita el comando para cualquier directorio que no tenga.

349 

350 ```bash theme={null}

351 cp -r .claude/commands my-plugin/

352 ```

353 

354 ```bash theme={null}

355 cp -r .claude/agents my-plugin/

356 ```

357 

358 ```bash theme={null}

359 cp -r .claude/skills my-plugin/

360 ```

361 

362 Ejecute `ls -a my-plugin` para confirmar que cada directorio que copió aparece junto a `.claude-plugin`.

363 </Step>

364 

365 <Step title="Mover sus hooks">

366 Si tiene hooks en `.claude/settings.json` o `.claude/settings.local.json`, cree un directorio de hooks:

367 

368 ```bash theme={null}

369 mkdir -p my-plugin/hooks

370 ```

371 

372 Cree `my-plugin/hooks/hooks.json` y copie el objeto `hooks` de su archivo de configuración en él. El formato es el mismo.

373 

374 Este ejemplo muestra la forma con un hook que ejecuta un linter en cada archivo que Claude escribe o edita. Reemplace el ejemplo con su propio objeto `hooks`.

375 

376 ```json my-plugin/hooks/hooks.json theme={null}

377 {

378 "hooks": {

379 "PostToolUse": [

380 {

381 "matcher": "Write|Edit",

382 "hooks": [{ "type": "command", "command": "jq -r '.tool_input.file_path' | xargs npm run lint:fix" }]

383 }

384 ]

385 }

386 }

387 ```

388 </Step>

389 

390 <Step title="Probar el plugin migrado">

391 Cargue el plugin para una sesión:

392 

393 ```bash theme={null}

394 claude --plugin-dir ./my-plugin

395 ```

396 

397 Verifique cada componente bajo su nuevo nombre:

398 

399 * **Skills**: ejecute `/my-plugin:deploy` para un skill que era `/deploy`.

400 * **Subagentes**: pida a Claude que use el agente `my-plugin:reviewer` para un agente que era `reviewer`.

401 * **Hooks**: active el evento que cada hook coincide.

402 

403 Si algo falta, trabaje a través de [Probar y depurar](#test-and-debug).

404 </Step>

405</Steps>

406 

407Mientras los originales aún estén bajo `.claude/`, permanecen cargados junto con las copias del plugin:

408 

409* **Skills y agentes**: los dos conjuntos no colisionan, porque los skills y agentes del plugin llevan el prefijo `my-plugin:`. `/deploy` y `/my-plugin:deploy` funcionan ambos, y Claude ve `reviewer` y `my-plugin:reviewer` como dos subagentes.

410* **Hooks**: los hooks no tienen prefijo, por lo que un hook que está tanto en su archivo de configuración como en `hooks/hooks.json` se ejecuta dos veces cada vez que se activa su evento.

411 

412Después de confirmar que el plugin funciona, elimine los originales de `.claude/` y elimine el objeto `hooks` de su archivo de configuración.

413 

414<h2 id="next-steps">

415 Próximos pasos

416</h2>

417 

418* [Componentes de plugin](/docs/es/plugins/components): agregue agentes, hooks, servidores MCP, servidores LSP y configuración de usuario a su plugin

419* [Probar plugins con evals](/docs/es/plugin-evals): escriba casos de eval y ejecútelos con `claude plugin eval` para verificar qué tan confiablemente el plugin guía el comportamiento de Claude

420* [Publicar un plugin](/docs/es/plugins/publish): versione, colóquelo en un marketplace y envíelo al marketplace comunitario

421* [Plugins en claude.ai y en Cowork](https://claude.com/docs/plugins/overview): la misma carpeta de plugin se instala en claude.ai y en Cowork. Algunos componentes son solo de Claude Code

422* [Referencia del manifiesto del plugin](/docs/es/plugins/manifest-reference): cada campo `plugin.json`, regla de ruta y directorio

423* [Skills](/docs/es/skills): escriba los skills que proporciona su plugin

424* [Plugins de Anthropic en el repositorio claude-code](https://github.com/anthropics/claude-code/tree/main/plugins): ejemplos completos trabajados del diseño en esta página, como `feature-dev` y `code-review`

plugins/create-marketplace.md +251 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Crear un marketplace

6 

7> Cree un marketplace de plugins a partir de un archivo marketplace.json y pruébelo localmente antes de alojarlo.

8 

9Un marketplace de plugins es un directorio o repositorio con un archivo `.claude-plugin/marketplace.json` que enumera sus plugins e indica dónde obtener cada uno. Usted envía el directorio a un host de git, y cualquiera que tenga acceso lo registra en Claude Code con un comando e instala sus plugins desde él.

10 

11Cree su propio marketplace cuando desee que un grupo que usted elija, como su equipo u organización, instale sus plugins y continúe recibiendo sus actualizaciones desde un catálogo que usted controla. El repositorio puede ser privado, puede enumerar tantos plugins como desee, y un administrador puede [requerirlo en cada máquina](/docs/es/plugins/org).

12 

13<Note>

14 Estos casos se tratan en otras páginas:

15 

16 * **Compartir un plugin con algunas personas**: envíeles el directorio del plugin o un `.zip` del mismo. Consulte [Compartir un plugin sin un marketplace](/docs/es/plugins/publish#share-a-plugin-without-a-marketplace).

17 * **Ofrecer un plugin a todos**: envíelo al marketplace comunitario de Anthropic. Consulte [Enviar al marketplace comunitario](/docs/es/plugins/publish#submit-to-the-community-marketplace).

18 * **Usar un plugin usted mismo**: cárguelo con `--plugin-dir` o guárdelo en su directorio de skills. Consulte [Desarrollar sin un marketplace](/docs/es/plugins/create#develop-without-a-marketplace).

19</Note>

20 

21Comience con [Crear un marketplace](#create-a-marketplace) para crear uno en su propia máquina e instalar un plugin desde él, luego [agregue más entradas de plugins](#add-plugin-entries).

22 

23<h2 id="create-a-marketplace">

24 Crear un marketplace

25</h2>

26 

27Los siguientes pasos crean un marketplace en su máquina, agregan un plugin a él, lo registran en Claude Code e instalan el plugin desde él. Este es el ciclo completo, y es el mismo ciclo por el que pasan sus usuarios una vez que aloja el marketplace en algún lugar al que puedan acceder. Ejecute cada comando en su shell, desde el directorio donde desea que se cree `my-marketplace/`.

28 

29Necesita un plugin para enumerar. El ejemplo utiliza `my-first-plugin` de [Crear su primer plugin](/docs/es/plugins/create#create-your-first-plugin), un plugin con una skill que ejecuta como `/my-first-plugin:hello`; constrúyalo primero si aún no tiene un plugin. Para usar un plugin propio en su lugar, sustituya su directorio y su `name` dondequiera que los pasos digan `my-first-plugin`. Para saber qué puede contener un directorio de plugins, consulte el [explorador de directorios de plugins](/docs/es/plugins/components#explore-the-plugin-directory).

30 

31<Steps>

32 <Step title="Configurar el directorio del marketplace">

33 Un marketplace es un directorio con un archivo `.claude-plugin/marketplace.json`, más los plugins que enumera. Cree el directorio del marketplace y su carpeta `.claude-plugin/`, luego copie su plugin bajo `plugins/`:

34 

35 ```bash theme={null}

36 mkdir -p my-marketplace/.claude-plugin my-marketplace/plugins

37 cp -r my-first-plugin my-marketplace/plugins/

38 ```

39 

40 Verifique que el plugin sea válido donde ahora se encuentra, para que cualquier error posterior sea sobre el marketplace y no sobre el plugin:

41 

42 ```bash theme={null}

43 claude plugin validate ./my-marketplace/plugins/my-first-plugin

44 ```

45 

46 La última línea de la salida dice `✔ Validation passed`.

47 </Step>

48 

49 <Step title="Crear el archivo del marketplace">

50 Guarde `marketplace.json` en `my-marketplace/.claude-plugin/marketplace.json`. El archivo requiere un `name`, un `owner` y un array `plugins`.

51 

52 Cada objeto en `plugins` es una entrada de plugin y necesita un `name` y una `source`. Escriba la `source` de la entrada como una ruta desde la raíz del marketplace. La raíz es `my-marketplace/`, el directorio que contiene `.claude-plugin/`.

53 

54 ```json my-marketplace/.claude-plugin/marketplace.json theme={null}

55 {

56 "name": "my-marketplace",

57 "description": "Plugins for my team",

58 "owner": {

59 "name": "Your Name"

60 },

61 "plugins": [

62 {

63 "name": "my-first-plugin",

64 "source": "./plugins/my-first-plugin",

65 "description": "A greeting plugin to learn the basics"

66 }

67 ]

68 }

69 ```

70 </Step>

71 

72 <Step title="Validar el marketplace">

73 Ejecute `claude plugin validate` en el directorio del marketplace para verificar la sintaxis JSON, los campos requeridos y cada entrada de plugin en su `.claude-plugin/marketplace.json`.

74 

75 ```bash theme={null}

76 claude plugin validate ./my-marketplace

77 ```

78 

79 Para el archivo tal como se escribió en el paso 2, la última línea de la salida dice `✔ Validation passed`.

80 </Step>

81 

82 <Step title="Agregar el marketplace e instalar el plugin">

83 Registre el directorio como un marketplace.

84 

85 ```bash theme={null}

86 claude plugin marketplace add ./my-marketplace

87 ```

88 

89 El comando imprime `✔ Successfully added marketplace: my-marketplace (declared in user settings)`, lo que significa que el marketplace se registra en su archivo de configuración de usuario.

90 

91 Instale el plugin. El id de instalación es el `name` de la entrada, una `@` y el `name` del marketplace.

92 

93 ```bash theme={null}

94 claude plugin install my-first-plugin@my-marketplace

95 ```

96 

97 El comando imprime `✔ Successfully installed plugin: my-first-plugin@my-marketplace (scope: user)`.

98 

99 Dentro de una sesión, `/plugin marketplace add ./my-marketplace` registra el marketplace de la misma manera. `/plugin install my-first-plugin@my-marketplace` abre los detalles del plugin en el panel `/plugin`, donde lo instala. Para ese flujo, consulte [Instalar y administrar plugins](/docs/es/plugins/install).

100 </Step>

101 

102 <Step title="Confirmar que el plugin se cargó">

103 Enumere los plugins instalados.

104 

105 ```bash theme={null}

106 claude plugin list

107 ```

108 

109 La salida enumera `my-first-plugin@my-marketplace` con `Status: ✔ enabled`.

110 

111 Para ver qué cargó el plugin, muestre sus detalles.

112 

113 ```bash theme={null}

114 claude plugin details my-first-plugin

115 ```

116 

117 La sección `Component inventory` dice `Skills (1) hello`.

118 

119 Para ejecutar la skill, inicie una sesión e ingrese `/my-first-plugin:hello`. Claude lo saluda. El comando tiene el nombre del plugin como prefijo, como lo hace el nombre de cada skill de plugin.

120 </Step>

121</Steps>

122 

123<h2 id="add-plugin-entries">

124 Agregar entradas de plugins

125</h2>

126 

127Cada plugin que distribuya es un objeto en el array `plugins` de `marketplace.json`. Para agregar un segundo plugin, agregue un segundo objeto. Estos campos cubren la mayoría de entradas:

128 

129* `name`: el identificador que las personas escriben antes de `@` cuando instalan. No puede contener espacios.

130* `source`: dónde Claude Code obtiene el plugin. Escriba una cadena de ruta relativa para un plugin dentro del directorio del marketplace, como en [el tutorial](#create-a-marketplace), o un objeto de source para un plugin fuera de él. Consulte [Elegir una source de plugin](#choose-a-plugin-source).

131* `description`: la línea que las personas ven junto al plugin cuando exploran su marketplace en `/plugin`.

132 

133Para la lista completa de campos, consulte [Entradas de plugins](/docs/es/plugins/marketplace-reference#plugin-entries).

134 

135Una entrada también puede establecer cualquier campo de [`plugin.json`](/docs/es/plugins/manifest-reference). Para saber cuándo se aplican los campos `plugin.json` de una entrada a un plugin que tiene su propio `plugin.json`, consulte [Entrada y plugin.json](/docs/es/plugins/marketplace-reference#entry-and-plugin-json).

136 

137<h2 id="rules-for-plugin-entries">

138 Reglas para entradas de plugins

139</h2>

140 

141La mayoría de las instalaciones fallidas desde un nuevo marketplace provienen de una ruta relativa escrita desde el directorio incorrecto, o de un nombre de entrada que difiere del `name` en el `plugin.json` del plugin.

142 

143<h3 id="write-relative-paths-from-the-marketplace-root">

144 Escribir rutas relativas desde la raíz del marketplace

145</h3>

146 

147La raíz del marketplace es el directorio que contiene `.claude-plugin/`. En [el tutorial](#create-a-marketplace), eso es `my-marketplace/`, por lo que la `source` de la entrada es `"./plugins/my-first-plugin"`. La ruta no comienza dentro de `.claude-plugin/`, así que no use `..` para salir de él.

148 

149Una ruta con `..` y una ruta a un directorio faltante fallan en comandos diferentes:

150 

151* **Una ruta con `..`**: `claude plugin validate` reporta la entrada como inválida. El mensaje comienza `Path contains "..": ./../plugins/my-first-plugin`.

152* **Una ruta a un directorio que no existe**: `claude plugin validate` pasa. `claude plugin install` falla con `Source path does not exist: <path>`, y `<path>` es la ubicación absoluta que Claude Code verificó.

153 

154<h3 id="keep-the-entry-name-and-the-manifest-name-the-same">

155 Mantener el nombre de la entrada y el nombre del manifest iguales

156</h3>

157 

158Un plugin de marketplace tiene un `name` de entrada en `marketplace.json` y un `name` en su propio `plugin.json`, llamado el nombre del manifest. Cada nombre aparece en lugares diferentes:

159 

160* **Nombre de entrada**: el id de instalación, `<entry-name>@<marketplace>`. Es lo que las personas escriben para instalar, lo que `claude plugin list` muestra, y la clave que Claude Code escribe bajo [`enabledPlugins`](/docs/es/settings-reference#enabledplugins) en su archivo de configuración.

161* **Nombre del manifest**: el prefijo en las skills del plugin, y el nombre que `claude plugin details` toma.

162 

163Cuando los dos nombres difieren y alguien instala por el nombre del manifest, Claude Code reporta `Plugin "<manifest-name>" not found in marketplace "<marketplace>"`. Mantenga los dos nombres iguales. Para más información sobre cómo Claude Code usa los dos nombres, consulte [Referencia de carga de plugins](/docs/es/plugins/loading#find-where-a-plugin-came-from).

164 

165<h2 id="choose-a-plugin-source">

166 Elegir una source de plugin

167</h2>

168 

169Cada entrada de plugin en `marketplace.json` tiene una `source` que le dice a Claude Code dónde obtener ese plugin. Elija la source según dónde se almacenan los archivos del plugin. La tabla enumera las sources que la mayoría de los propietarios de marketplace utilizan.

170 

171| Source | Úsela cuando | Valor mínimo de `source` |

172| :------------ | :------------------------------------------------------------------------ | :---------------------------------------------------------------------------------------- |

173| Ruta relativa | Los archivos del plugin están dentro del directorio del marketplace mismo | `"./plugins/my-first-plugin"` |

174| `github` | El plugin es su propio repositorio de GitHub | `{ "source": "github", "repo": "your-org/my-first-plugin" }` |

175| `git-subdir` | El plugin es un subdirectorio de algún otro repositorio, como un monorepo | `{ "source": "git-subdir", "url": "your-org/monorepo", "path": "tools/my-first-plugin" }` |

176 

177En una source `git-subdir`, `url` toma una URL de git o una abreviatura de GitHub `owner/repo`.

178 

179Un plugin también puede provenir de uno de estos tipos de source:

180 

181* `url`: un repositorio de git por URL, en cualquier host

182* `archive`: un archivo zip descargado sobre HTTPS

183* `npm`: un paquete npm

184* `command`: un directorio producido al ejecutar un comando en la máquina donde se instala el plugin

185 

186Para los campos de cada tipo de source, y para fijar una source basada en git a una `ref` o `sha`, consulte [Plugin sources](/docs/es/plugins/marketplace-reference#plugin-sources).

187 

188<h2 id="validate-and-test">

189 Validar y probar

190</h2>

191 

192A medida que agregue plugins, ejecute `claude plugin validate ./my-marketplace` en su shell después de cada edición, e instale desde el marketplace en su propia máquina antes de compartirlo. La validación y la instalación detectan problemas diferentes.

193 

194<h3 id="problems-that-validation-reports">

195 Problemas que la validación reporta

196</h3>

197 

198`claude plugin validate` lee solo archivos dentro del directorio del marketplace. Reporta:

199 

200* Errores de sintaxis JSON, como `json: Invalid JSON syntax: <reason>`

201* Campos requeridos faltantes, como `owner: Invalid input`

202* Un nombre de marketplace con espacios, caracteres no ASCII, o una forma que imita un marketplace oficial de Anthropic, como `claude-official`

203* Una `source` relativa que contiene `..`

204* Campos desconocidos en el nivel superior o en una entrada de plugin, como advertencias

205* Problemas en el `plugin.json` de cada plugin de ruta relativa, como `plugins[N] plugin.json → <field>: <message>`

206 

207Para cada mensaje que `validate` puede imprimir, consulte [Mensajes de validación](/docs/es/plugins/marketplace-reference#validation-messages). Para sus banderas y códigos de salida, consulte [`plugin validate`](/docs/es/plugins/cli-reference#plugin-validate).

208 

209<h3 id="problems-that-surface-when-you-add-or-install">

210 Problemas que aparecen cuando agrega o instala

211</h3>

212 

213Los problemas que `claude plugin validate` no reporta aparecen cuando agrega el marketplace o instala desde él:

214 

215* **Cuando agrega el marketplace**: los [nombres de marketplace oficiales](/docs/es/plugins/marketplace-reference#reserved-names) exactos, como `claude-plugins-official`, pasan la validación. Cuando agrega un marketplace con uno de esos nombres, Claude Code lo rechaza con un mensaje que comienza `The name '<name>' is reserved for official Anthropic marketplaces`.

216* **Cuando instala un plugin**:

217 * Claude Code primero obtiene una source `github`, `git-subdir` u otra remota cuando instala el plugin, por lo que un `repo` o `path` incorrecto aparece entonces.

218 * Una `source` relativa cuyo directorio no existe también falla en la instalación, con `Source path does not exist: <path>`.

219 

220<h3 id="test-an-edit-to-a-plugin">

221 Probar una edición a un plugin

222</h3>

223 

224En [el tutorial](#create-a-marketplace), agregó `my-marketplace` desde un directorio local con una `source` de ruta relativa. Con esa configuración, Claude Code lee los archivos del plugin directamente desde `my-marketplace/plugins/`. Sus ediciones surten efecto al iniciar la siguiente sesión o cuando ejecuta `/reload-plugins` en una sesión, sin cambio en la `version` del plugin.

225 

226Las personas que instalan desde su marketplace alojado obtienen una copia en el caché de plugins en su lugar. Para saber cómo reciben una nueva versión, consulte [Mantener a los usuarios actualizados](/docs/es/plugins/host-marketplace#keep-users-up-to-date).

227 

228<h3 id="remove-the-marketplace-to-start-over">

229 Eliminar el marketplace para empezar de nuevo

230</h3>

231 

232Para eliminar todo y empezar de nuevo, ejecute `claude plugin marketplace remove my-marketplace` en su shell. El comando elimina el marketplace y desinstala sus plugins.

233 

234<h2 id="host-your-marketplace">

235 Alojar su marketplace

236</h2>

237 

238Una vez que pueda instalar un plugin desde el marketplace en su propia máquina, como en [Crear un marketplace](#create-a-marketplace), envíe el directorio del marketplace a un host de git.

239 

240Sus compañeros de equipo ejecutan `claude plugin marketplace add <owner>/<repo>` en su shell para un repositorio de GitHub, o el mismo comando con la URL del repositorio. Luego instalan un plugin por nombre como en [el tutorial](#create-a-marketplace).

241 

242Para acceso a repositorio privado, actualizaciones, versionado, y cambio de nombre o eliminación de entradas, consulte [Alojar y mantener un marketplace](/docs/es/plugins/host-marketplace).

243 

244<h2 id="next-steps">

245 Próximos pasos

246</h2>

247 

248* [Alojar y mantener un marketplace](/docs/es/plugins/host-marketplace): elija un host, mantenga a los usuarios actualizados, y cambie el nombre o elimine plugins de forma segura

249* [Referencia de marketplace](/docs/es/plugins/marketplace-reference): campos de `marketplace.json` y tipos de source

250* [Administrar plugins para su organización](/docs/es/plugins/org): requiera su marketplace y sus plugins en cada máquina

251* [Sugerir plugins por relevancia](/docs/es/plugins/relevance): haga que Claude Code sugiera un plugin de su marketplace cuando una sesión coincida

plugins/dependencies.md +245 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Dependencias de plugins

6 

7> Declare los plugins de los que depende su plugin, con rangos de versión como ^1.2, y vea cómo Claude Code instala, resuelve y elimina las dependencias.

8 

9Una dependencia de plugin es otro plugin del que su plugin depende, como uno cuyo servidor MCP o skill llama. Cada dependencia rastrea la versión más reciente que proporciona su marketplace a menos que declare una restricción de versión, un rango de versión semántica como `^2.0` o `~2.1.0` que haya probado.

10 

11Esta página es para autores de plugins que declaran dependencias en `plugin.json` y para mantenedores de marketplace que etiquetan versiones.

12 

13<Note>

14 Estos casos se cubren en otras páginas:

15 

16 * **Instalar un plugin que tiene dependencias**: consulte [Administrar plugins instalados](/docs/es/plugins/install#manage-installed-plugins)

17 * **Leer un error de dependencia**: consulte [Errores de dependencia](/docs/es/plugins/troubleshooting#dependency-errors)

18 * **Declarar los paquetes npm y Bun que el código de su plugin necesita**: consulte [Dependencias de paquetes Node.js](/docs/es/plugins/loading#node-js-package-dependencies)

19</Note>

20 

21Para agregar una restricción, comience en [Declare una dependencia con una restricción de versión](#declare-a-dependency-with-a-version-constraint). Si mantiene un plugin del que otros dependen, [etiquete sus versiones](#tag-plugin-releases-for-version-resolution) para que sus restricciones puedan resolverse.

22 

23<h2 id="declare-dependencies">

24 Declare dependencias

25</h2>

26 

27<span id="decide-whether-to-constrain-dependency-versions" />Sin una restricción de versión, una dependencia se mueve a cada nueva versión que su marketplace publica la próxima vez que los usuarios actualizan. Si esa versión cambia el nombre de una herramienta MCP que su plugin llama, su plugin se rompe para todos los que actualizan.

28 

29Con una restricción como `~2.1.0` en una dependencia de una fuente respaldada por git, los usuarios que tienen su plugin instalado siguen recibiendo parches `2.1.x` de la dependencia y nunca se mueven a `2.2`. Para actualizar en su propio cronograma, pruebe contra una versión más reciente y luego publique una nueva versión de su plugin con una restricción más amplia.

30 

31<h3 id="declare-a-dependency-with-a-version-constraint">

32 Declare una dependencia con una restricción de versión

33</h3>

34 

35Liste las dependencias en el array `dependencies` del archivo `.claude-plugin/plugin.json` de su plugin. El siguiente manifiesto declara una dependencia sin versión y una dependencia con restricción:

36 

37```json .claude-plugin/plugin.json theme={null}

38{

39 "name": "deploy-kit",

40 "version": "3.1.0",

41 "dependencies": [

42 "audit-logger",

43 { "name": "secrets-vault", "version": "~2.1.0" }

44 ]

45}

46```

47 

48Una entrada puede ser una cadena: solo el nombre del plugin, como `"audit-logger"` en este manifiesto, o `"name@marketplace"` para resolverlo en otro marketplace. Con una cadena simple, su plugin depende de cualquier versión que proporcione el marketplace de ese plugin.

49 

50Para establecer una restricción de versión, use un objeto con estos campos, cada uno una cadena:

51 

52| Campo | Descripción |

53| :------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

54| `name` | El nombre del plugin de dependencia, tal como aparece en su entrada de marketplace. Claude Code lo busca en el mismo marketplace que el plugin declarante a menos que establezca `marketplace`. Requerido. |

55| `version` | Un [rango de versión semántica](https://github.com/npm/node-semver#ranges) como `~2.1.0`, `^2.0`, `>=1.4`, o `=2.1.0`. La dependencia se instala en la etiqueta git más alta que satisface este rango, por lo que el mantenedor de la dependencia debe [etiquetar versiones](#tag-plugin-releases-for-version-resolution). |

56| `marketplace` | Un marketplace diferente para resolver `name` en. Una lista de permitidos controla las dependencias entre marketplaces, descrito en [Dependa de un plugin de otro marketplace](#depend-on-a-plugin-from-another-marketplace). |

57 

58Un rango no coincide con versiones previas al lanzamiento como `2.0.0-beta.1` a menos que opte por un sufijo previo al lanzamiento como `^2.0.0-0`.

59 

60<h3 id="bundle-plugins-for-a-team">

61 Agrupe plugins para un equipo

62</h3>

63 

64Para permitir que los ingenieros instalen un conjunto curado de plugins con un comando, publique un plugin cuyo manifiesto contenga un `name` y un array `dependencies`. Un manifiesto de plugin solo necesita `name`, por lo que este es un plugin válido, e instalarlo instala cada dependencia.

65 

66Por ejemplo, un equipo de plataforma puede publicar bundles específicos de roles en un marketplace interno para que los ingenieros ejecuten un `claude plugin install` en lugar de instalar cada plugin por separado:

67 

68```json .claude-plugin/plugin.json theme={null}

69{

70 "name": "backend-standard",

71 "version": "1.0.0",

72 "description": "Conjunto de plugins estándar para ingenieros de backend",

73 "dependencies": [

74 "secrets-vault",

75 "deploy-kit",

76 { "name": "db-migrate", "version": "^3.0" },

77 "oncall-runbook"

78 ]

79}

80```

81 

82Para agregar un plugin al conjunto estándar más tarde, publique una nueva versión de `backend-standard` con la dependencia adicional. Cuando el marketplace no [se actualiza automáticamente de forma predeterminada](/docs/es/plugins/loading#which-marketplaces-and-plugins-auto-update), los ingenieros activan la actualización automática para el marketplace o actualizan manualmente:

83 

84* **Activar la actualización automática para el marketplace**: la próxima actualización automática mueve el bundle a la nueva versión e instala cualquier dependencia que agregue.

85* **Actualizar manualmente**: ejecute `claude plugin update backend-standard` en un shell, luego `/reload-plugins` en una sesión abierta para instalar las dependencias recién agregadas.

86 

87Para los pasos del lado del ingeniero, consulte [Mantenga los plugins actualizados](/docs/es/plugins/install#keep-plugins-updated).

88 

89Para implementar un bundle para todos en una organización, un administrador lo agrega a `enabledPlugins` en la configuración administrada. Consulte [Pre-instalar y requerir plugins](/docs/es/plugins/org#pre-install-and-require-plugins).

90 

91<h3 id="depend-on-a-plugin-from-another-marketplace">

92 Dependa de un plugin de otro marketplace

93</h3>

94 

95De forma predeterminada, Claude Code no instala una dependencia de un marketplace diferente al del plugin declarante, a menos que el usuario ya tenga esa dependencia instalada y habilitada en el mismo alcance. Este valor predeterminado evita que un marketplace instale silenciosamente plugins de una fuente que el usuario no ha revisado.

96 

97Para permitir la instalación, agregue el nombre del marketplace de destino a `allowCrossMarketplaceDependenciesOn` en el `marketplace.json` del marketplace raíz. El marketplace raíz es el que aloja el plugin que el usuario está instalando. Solo se aplica la lista de permitidos del marketplace raíz.

98 

99El siguiente `marketplace.json` permite que `deploy-kit` dependa de un plugin de `your-shared-marketplace`:

100 

101```json .claude-plugin/marketplace.json theme={null}

102{

103 "name": "your-marketplace",

104 "owner": { "name": "Your Org" },

105 "allowCrossMarketplaceDependenciesOn": ["your-shared-marketplace"],

106 "plugins": [

107 {

108 "name": "deploy-kit",

109 "source": "./deploy-kit",

110 "dependencies": [

111 { "name": "audit-logger", "marketplace": "your-shared-marketplace" }

112 ]

113 }

114 ]

115}

116```

117 

118Si `allowCrossMarketplaceDependenciesOn` falta o no incluye el marketplace de destino, Claude Code no instala la dependencia. Cuando la dependencia se declara en la entrada del marketplace, la instalación se rechaza con un mensaje que comienza con `Dependency "audit-logger@your-shared-marketplace" (required by deploy-kit@your-marketplace) is in marketplace "your-shared-marketplace", which is not in the allowlist` y nombra el campo a establecer. Cuando se declara en `plugin.json`, la instalación se completa sin la dependencia y su plugin luego falla al cargar.

119 

120La verificación de la lista de permitidos no se aplica a una dependencia que ya está habilitada. Si un usuario instala `audit-logger` de `your-shared-marketplace` primero, en el mismo alcance, `deploy-kit` luego se instala sin ningún cambio en la lista de permitidos.

121 

122<h3 id="test-a-plugin-and-its-dependency-locally">

123 Pruebe un plugin y su dependencia localmente

124</h3>

125 

126Si está desarrollando un plugin y el plugin del que depende al mismo tiempo, inicie Claude Code desde su shell y cargue ambos con [`--plugin-dir`](/docs/es/plugins/cli-reference#flags-that-load-a-plugin-for-one-session):

127 

128```bash theme={null}

129claude --plugin-dir ./my-dependency --plugin-dir ./my-plugin

130```

131 

132La copia local de la dependencia satisface la entrada de dependencia de su plugin, por lo que no necesita instalar la dependencia desde su marketplace.

133 

134* **Sin `version` necesaria**: el `plugin.json` local tampoco necesita una `version`, porque una [restricción de versión](#declare-a-dependency-with-a-version-constraint) no se verifica contra una copia local.

135* **Entradas que nombran un marketplace**: una entrada que nombra un marketplace también coincide con la copia local en Claude Code v2.1.242 o posterior.

136 

137Hasta que instale la dependencia desde su marketplace, su plugin deja de cargar cada vez que la copia local está deshabilitada o ausente:

138 

139* **Deshabilitó la copia local**: su plugin está deshabilitado en la próxima carga de plugin, con un error que termina con `is disabled — enable it or remove the dependency`. Cuando el error nombra la dependencia como `<name>@inline`, ese identificador se refiere a la copia de `--plugin-dir`.

140* **Inició una sesión sin la bandera `--plugin-dir` de la dependencia**: el error reporta que la dependencia no está instalada. Pase la bandera nuevamente, o instale la dependencia desde su marketplace.

141 

142Cuando ambos plugins están en una carpeta padre, puede pasar esa carpeta a `--plugin-dir` una vez. Si la carpeta no es en sí misma un plugin, Claude Code carga cada carpeta secundaria que tenga un `.claude-plugin/plugin.json`. Requiere Claude Code v2.1.265 o posterior.

143 

144<h2 id="tag-plugin-releases-for-version-resolution">

145 Publique un plugin del que otros dependen

146</h2>

147 

148Si mantiene un plugin del que otros plugins dependen con una restricción de versión, etiquete sus versiones para que esas restricciones puedan resolverse. Una restricción se resuelve contra etiquetas git en el repositorio que aloja el plugin. Etiquete el repositorio al que apunta la [fuente del plugin](/docs/es/plugins/marketplace-reference#plugin-sources) del plugin en `marketplace.json`:

149 

150* **Fuente `github`, `url`, o `git-subdir`**: el repositorio del plugin, por lo que el autor del plugin crea las etiquetas

151* **Ruta relativa como `./plugins/secrets-vault`**: el repositorio del marketplace, por lo que el mantenedor del marketplace crea las etiquetas

152 

153<h3 id="create-a-release-tag">

154 Cree una etiqueta de versión

155</h3>

156 

157Etiquete cada versión como `<plugin-name>--v<version>`, donde `<version>` coincide con el campo `version` en el `plugin.json` de ese commit. El prefijo plugin-name permite que un repositorio de marketplace aloje varios plugins con historiales de versión independientes.

158 

159Cree la etiqueta desde el directorio del plugin, con un control remoto `origin` configurado para recibir la etiqueta enviada, usando [`claude plugin tag`](/docs/es/plugins/cli-reference#plugin-tag):

160 

161```bash theme={null}

162claude plugin tag --push

163```

164 

165El comando construye el nombre de la etiqueta desde el manifiesto del plugin. Antes de crear la etiqueta, ejecuta estas verificaciones:

166 

167* Valida el plugin

168* Verifica que `plugin.json` y la entrada del marketplace estén de acuerdo sobre la versión, cuando el directorio del plugin está dentro de un checkout del marketplace

169* Requiere un árbol de trabajo limpio bajo el directorio del plugin

170* Se niega si la etiqueta ya existe

171 

172Una ejecución exitosa imprime `Created tag secrets-vault--v2.1.0`. Con `--push`, también imprime `Pushed to origin`. Sin `--push`, imprime el comando `git push` para ejecutar usted mismo.

173 

174Pase `--dry-run` para ver el plan sin crear nada.

175 

176La [referencia de `claude plugin tag`](/docs/es/plugins/cli-reference#plugin-tag) lista las banderas restantes.

177 

178También puede ejecutar `git tag secrets-vault--v2.1.0` directamente, siempre que mantenga la `version` en `plugin.json` y en la entrada del marketplace sincronizadas usted mismo.

179 

180<h3 id="constrain-a-dependency-that-has-a-non-git-source">

181 Restrinja una dependencia que tiene una fuente que no es git

182</h3>

183 

184La resolución basada en etiquetas se aplica solo a fuentes respaldadas por git. Para una dependencia con una [fuente de plugin](/docs/es/plugins/marketplace-reference#plugin-sources) `npm`, `archive`, o `command`, la restricción no controla qué versión se obtiene. Aún se verifica cuando el plugin carga, y el plugin dependiente se deshabilita si la versión instalada no la satisface.

185 

186Para fuentes `npm`, `archive`, y `command`, la versión verificada es la `version` en el `plugin.json` de la dependencia. Establezca una allí antes de restringir esa dependencia, porque un `plugin.json` que no establece versión no satisface ninguna restricción.

187 

188Claude Code nunca instala una dependencia con una fuente `command` en sí, por lo que los usuarios [la instalan primero](/docs/es/plugins/marketplace-reference#command-plugin-source). Tampoco ejecuta nunca el [`headersHelper`](/docs/es/plugins/host-marketplace#authenticate-archive-downloads) de una dependencia, por lo que los usuarios también instalan una dependencia cuya entrada de marketplace establece uno antes de instalar su plugin.

189 

190Además de `claude plugin install`, estas operaciones también instalan cualquier dependencia declarada faltante, y los límites de `command` y `headersHelper` se aplican a ellas también:

191 

192* `/reload-plugins`

193* Auto-actualización del marketplace del plugin dependiente

194* Re-ejecutar `claude plugin install` en el plugin dependiente

195* `claude plugin marketplace add`

196 

197<h2 id="how-dependencies-behave-for-your-users">

198 Cómo se comportan las dependencias para sus usuarios

199</h2>

200 

201Estas secciones describen cómo Claude Code resuelve, verifica y combina las restricciones que declara una vez que su plugin está instalado junto con otros.

202 

203<h3 id="how-a-constraint-resolves-against-tags">

204 Cómo una restricción se resuelve contra etiquetas

205</h3>

206 

207Cuando un usuario instala un plugin que declara `{ "name": "secrets-vault", "version": "~2.1.0" }`, la dependencia se instala desde la etiqueta `secrets-vault--v` más alta que satisface `~2.1.0` en el repositorio que aloja `secrets-vault`. Cuando ninguna etiqueta satisface el rango, la instalación falla o usa la copia actual del marketplace:

208 

209* **Plugin con su propio repositorio**: la instalación falla con un mensaje que contiene `Dependency "secrets-vault@your-marketplace" has no git tag satisfying`.

210* **Plugin referenciado por una ruta relativa**: la instalación usa la copia actual del marketplace en su lugar, y la restricción se verifica cuando el plugin carga. Si esa copia está fuera del rango, el plugin dependiente permanece deshabilitado y `claude plugin list` muestra `Requires "secrets-vault@your-marketplace" ~2.1.0, installed 3.0.0`.

211 

212Para un plugin que el marketplace referencia por una ruta relativa, un marketplace que agregó como una ruta de carpeta local también resuelve restricciones contra las etiquetas git de esa carpeta, cuando la carpeta es un repositorio git. Esto requiere Claude Code v2.1.196 o posterior. Una carpeta local que no es un repositorio git no tiene etiquetas, por lo que Claude Code instala la dependencia desde el contenido actual de la carpeta en su lugar.

213 

214<h3 id="confirm-the-resolved-version">

215 Confirme la versión resuelta

216</h3>

217 

218Para confirmar qué versión una restricción se resolvió, ejecute `claude plugin list` en su shell. Una dependencia resuelta por etiqueta muestra su versión con un sufijo de commit de 12 caracteres, como `2.1.0-8713c5b11005`.

219 

220Las verificaciones de restricción usan la versión de la etiqueta en lugar de la `version` en `plugin.json`, incluso si `plugin.json` en ese commit se queda atrás.

221 

222Si fuerza el movimiento de una etiqueta a un commit diferente, la próxima instalación obtiene el contenido de ese commit en lugar de reutilizar una copia en caché obsoleta. Consulte [Versiones y actualizaciones](/docs/es/plugins/loading#versions-and-updates) para ver cómo la versión de un plugin se convierte en su clave de caché.

223 

224<h3 id="combine-constraints-from-several-plugins">

225 Combine restricciones de varios plugins

226</h3>

227 

228Cuando varios plugins instalados restringen la misma dependencia, la dependencia se resuelve a la versión más alta que satisface todos sus rangos. Las combinaciones comunes se resuelven así:

229 

230| Plugin A requiere | Plugin B requiere | Resultado |

231| :---------------- | :---------------- | :--------------------------------------------------------------------------------------------------------------------------------------------- |

232| `^2.0` | `>=2.1` | Una instalación en la etiqueta `2.x` más alta en o por encima de `2.1.0`. Ambos plugins cargan. |

233| `~2.1` | `~3.0` | La instalación del plugin B falla con un mensaje `has conflicting version requirements`. El plugin A y la dependencia permanecen como estaban. |

234| `=2.1.0` | ninguno | La dependencia permanece en `2.1.0`. La auto-actualización omite versiones más nuevas mientras el plugin A está instalado. |

235 

236La auto-actualización obtiene una dependencia restringida en la etiqueta git más alta que satisface el rango de cada plugin instalado, en lugar de en la versión más reciente del marketplace. Si los rangos de los plugins instalados no se superponen, la auto-actualización deja esa dependencia en su versión actual, y la pestaña **Errors** de `/plugin` muestra una entrada que nombra el plugin que restringe. Si se superponen pero ninguna etiqueta cae en el rango, la auto-actualización obtiene la copia actual del marketplace y omite la actualización cuando la `version` de esa copia cae fuera del rango de cualquier plugin instalado.

237 

238Cuando un usuario desinstala el último plugin que restringe una dependencia, la dependencia ya no está restringida a un rango de versión y reanuda el seguimiento de su entrada de marketplace en la próxima actualización.

239 

240<h2 id="see-also">

241 Véase también

242</h2>

243 

244* [`claude plugin prune`](/docs/es/plugins/cli-reference#plugin-prune): elimine las dependencias instaladas automáticamente que ningún plugin necesita más

245* [Aloje un marketplace](/docs/es/plugins/host-marketplace): canales de lanzamiento y recomendación de otros plugins

plugins/host-marketplace.md +458 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Alojar y mantener un marketplace

6 

7> Publique un marketplace de plugins donde los usuarios puedan acceder a él, otorgue acceso a uno privado y lance actualizaciones y cambios de nombre sin romper las instalaciones.

8 

9Alojar un marketplace significa poner su archivo `marketplace.json` donde otras personas puedan agregarlo con `/plugin marketplace add`, instalar sus plugins y seguir recibiendo sus cambios después de que realice push.

10 

11Esta página es para la persona que opera un marketplace.

12 

13<Note>

14 Estos casos se cubren en otras páginas:

15 

16 * **Aún no ha escrito el archivo de catálogo**: comience con [Create a marketplace](/docs/es/plugins/create-marketplace)

17 * **Es un administrador que requiere, restringe o preinstala marketplaces en las máquinas de su organización**: lea [Manage plugins for your organization](/docs/es/plugins/org)

18</Note>

19 

20Comience con [Host your marketplace](#host-your-marketplace) para elegir un host y el comando que ejecutan sus usuarios. Lea [Keep users up to date](#keep-users-up-to-date) antes de su primer lanzamiento. Lea [Rename or remove a plugin](#rename-or-remove-a-plugin) antes de cambiar el `name` de un plugin.

21 

22<h2 id="host-your-marketplace">

23 Host your marketplace

24</h2>

25 

26Puede alojar el marketplace en GitHub, en otro host de git, como una URL `marketplace.json` alojada, o en un directorio en un sistema de archivos compartido. Envíe a sus usuarios el comando add para su host y dígales qué necesitan en su máquina:

27 

28| Host | Los usuarios ejecutan, en una sesión de Claude Code | Qué necesitan los usuarios |

29| :------------------------------------------------------------- | :--------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------- |

30| GitHub | `/plugin marketplace add your-org/your-marketplace` | `git`, y para un repositorio privado el acceso descrito en [Grant access to a private marketplace](#grant-access-to-a-private-marketplace) |

31| GitLab, Bitbucket, GitHub Enterprise Server u otro host de git | `/plugin marketplace add https://gitlab.example.com/team/plugins.git` | `git` y acceso al host desde su máquina. Envíe la URL completa, porque el atajo `owner/repo` siempre significa github.com |

32| Una URL `marketplace.json` alojada | `/plugin marketplace add https://plugins.example.com/marketplace.json` | Acceso HTTPS a la URL. Los usuarios no necesitan `git` para el catálogo en sí |

33| Un directorio en un sistema de archivos compartido | `/plugin marketplace add /Volumes/shared/claude-plugins` | Acceso de lectura a la ruta |

34 

35Para fijar una rama o etiqueta de un marketplace de GitHub o URL de git, diga a los usuarios que agreguen `#<ref>`, como en `your-org/your-marketplace#stable`. La [plugin commands reference](/docs/es/plugins/cli-reference#plugin-marketplace-add) enumera todas las formas que acepta el comando.

36 

37Un add exitoso imprime `Successfully added marketplace: your-marketplace`. Claude Code toma ese nombre del campo `name` en su `marketplace.json`, no del nombre del repositorio.

38 

39Los usuarios luego instalan un plugin por el `name` de su entrada y el `name` del marketplace, como en `/plugin install code-formatter@your-marketplace`.

40 

41<h3 id="register-the-marketplace-for-everyone-in-a-repository">

42 Register the marketplace for everyone in a repository

43</h3>

44 

45Para compartir el marketplace con todos los que trabajan en un repositorio, ejecute `claude plugin marketplace add your-org/your-marketplace --scope project` allí una vez desde su shell y confirme el `.claude/settings.json` que escribe. Claude Code luego registra el marketplace para cada compañero de equipo que [confía en la carpeta](/docs/es/plugins/org#require-plugins-per-repository).

46 

47<h3 id="avoid-relative-path-entries-in-a-url-hosted-marketplace">

48 Avoid relative-path entries in a URL-hosted marketplace

49</h3>

50 

51Cuando los usuarios agregan su marketplace como una URL `marketplace.json` simple, Claude Code descarga solo ese archivo. Una entrada en su matriz `plugins` cuyo `source` es una ruta relativa como `./plugins/formatter` luego falla en la instalación con [`its marketplace entry path does not stay inside the marketplace directory`](/docs/es/plugins/troubleshooting#plugins-with-relative-paths-fail-in-url-based-marketplaces). Dé a cada entrada un source que pueda obtenerse por sí solo, como un repositorio `github` o una URL `archive`, u aloje el marketplace en un repositorio de git para que Claude Code clone el árbol completo.

52 

53<h3 id="edit-plugins-in-place-on-a-shared-directory">

54 Edit plugins in place on a shared directory

55</h3>

56 

57Cuando los usuarios agregan su marketplace desde un directorio compartido, Claude Code lee plugins con sources de ruta relativa directamente desde ese directorio en lugar de copiarlos. Los usuarios ven sus ediciones cuando inician la siguiente sesión o ejecutan `/reload-plugins`, sin un paso de actualización o un aumento de versión.

58 

59<h3 id="keep-plugin-files-out-of-git-lfs">

60 Keep plugin files out of Git LFS

61</h3>

62 

63Mantenga los archivos que sus plugins necesitan fuera de [Git LFS](https://git-lfs.com). Cuando los usuarios agregan un marketplace alojado en un repositorio de git, o instalan un plugin basado en git que enumera, Claude Code clona ese marketplace o repositorio de plugin en su máquina. El clon nunca descarga contenido de LFS, por lo que los archivos rastreados por LFS llegan como archivos de puntero.

64 

65<h3 id="share-files-within-a-marketplace-with-symlinks">

66 Share files within a marketplace with symlinks

67</h3>

68 

69Para compartir archivos entre su plugin y otras partes del mismo marketplace, cree enlaces simbólicos dentro de su directorio de plugin. Cuando Claude Code copia el plugin en su caché, maneja cada enlace simbólico por donde se resuelve el destino:

70 

71* **Dentro del directorio del plugin**: el enlace simbólico se conserva como un enlace simbólico relativo en el caché, por lo que sigue resolviendo al destino copiado en tiempo de ejecución.

72* **En otro lugar dentro del mismo marketplace**: el enlace simbólico se desreferencia. El contenido del destino se copia en el caché en su lugar. Esto permite que el directorio `skills/` de un meta-plugin se vincule a skills definidas por otros plugins en el marketplace.

73* **Fuera del marketplace**: el enlace simbólico se omite por seguridad.

74 

75Para plugins instalados desde una ruta local, o desde un [`command` source](/docs/es/plugins/marketplace-reference#command-plugin-source) cuyo `mode` es el `copy` predeterminado, Claude Code preserva solo enlaces simbólicos que se resuelven dentro del directorio del plugin y omite todos los demás.

76 

77El siguiente comando crea un enlace desde dentro de un plugin de marketplace a una skill compartida definida por un plugin hermano. En Windows, use `mklink /D` desde un símbolo del sistema elevado o habilite el Modo de desarrollador:

78 

79```bash theme={null}

80ln -s ../../shared-plugin/skills/foo ./skills/foo

81```

82 

83<h2 id="distribute-through-organization-settings">

84 Distribute through organization settings

85</h2>

86 

87En un plan Team o Enterprise, también puede distribuir el marketplace a través de [**Organization settings > Plugins & skills**](https://claude.ai/admin-settings/skills?tab=inventory) en claude.ai en lugar de alojarlo en algún lugar donde los usuarios lo agreguen ellos mismos. La sincronización de la organización lee el repositorio a través de su conexión de GitHub o GitLab de la organización en claude.ai, por lo que las credenciales de git de sus usuarios no están involucradas.

88 

89La sincronización de la organización es más estricta con el repositorio que `/plugin marketplace add`:

90 

91* **Repositorio de marketplace**: en github.com y gitlab.com, debe ser privado o interno

92* **Plugin sources**: cada plugin source debe ser de tipo `github`, `url` o `git-subdir`, o una [ruta relativa](/docs/es/plugins/marketplace-reference#relative-path-plugin-source) que comience con `./`

93* **Directorio `bin/` de nivel superior**: claude.ai rechaza un plugin que tiene uno y sincroniza el resto del marketplace. El mensaje de error comienza con `Plugin contains a top-level bin/ directory`. Mantenga los ejecutables en otro directorio, como `scripts/`, y haga referencia a ellos como `${CLAUDE_PLUGIN_ROOT}/scripts/<name>` desde sus hooks o configuraciones de servidor MCP

94 

95Consulte [Manage plugins for your organization](https://support.claude.com/en/articles/13837433) para el flujo de trabajo del administrador.

96 

97<h2 id="grant-access-to-a-private-marketplace">

98 Grant access to a private marketplace

99</h2>

100 

101Cuando un usuario agrega, instala desde o actualiza su marketplace, Claude Code ejecuta `git` en su máquina con las indicaciones interactivas desactivadas y se basa en las credenciales que esa máquina ya posee. Claude Code no tiene su propio token de git, y `marketplace.json` no tiene campo para uno.

102 

103Usted elige si el clon se ejecuta sobre SSH o HTTPS por la forma del comando add que envía a los usuarios:

104 

105* **GitHub `owner/repo`**: Claude Code prueba `ssh -T git@github.com` y clona sobre SSH cuando la prueba tiene éxito. Si la prueba falla, o el clon SSH en sí falla, clona sobre HTTPS. Los usuarios en máquinas sin una clave SSH de GitHub pueden establecer `CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1` para omitir la prueba y clonar sobre HTTPS.

106* **`git@host:path.git`**: SSH.

107* **`https://example.com/repo.git`**: HTTPS.

108 

109Diga a los usuarios qué necesita cada protocolo en su máquina:

110 

111* **SSH**: la clave debe funcionar sin una indicación de contraseña, por ejemplo porque está cargada en `ssh-agent`. El host ya debe estar en `known_hosts`.

112* **HTTPS**: Claude Code deja habilitado el asistente de credenciales de git del usuario pero le prohíbe que solicite. Una credencial que el asistente ya almacena funciona; una que tendría que pedir falla. En GitHub, `gh auth login` seguido de `gh auth setup-git` almacena una.

113 

114Para un host de GitHub Enterprise Server, los usuarios necesitan acceso de git a ese host desde su máquina. Consulte [Plugin marketplaces on GHES](/docs/es/github-enterprise-server#plugin-marketplaces-on-ghes) para ver qué necesita cada superficie de Claude Code para alcanzar un marketplace alojado en GHES.

115 

116Si distribuye a través de **Organization settings > Plugins & skills** en claude.ai en su lugar, las credenciales de git de sus usuarios no están involucradas. Consulte [Distribute through organization settings](#distribute-through-organization-settings) para ver qué plugin sources pueden ser privados allí.

117 

118<h3 id="serve-users-who-have-no-git-host-account">

119 Serve users who have no git-host account

120</h3>

121 

122Los usuarios sin una cuenta de host de git pueden agregar un marketplace que sirve como una URL `marketplace.json` o desde un directorio compartido, pero solo pueden instalar los plugins cuyas fuentes de entrada también pueden alcanzar. Una entrada que apunta a un repositorio `github` privado aún falla en la instalación para ellos, porque Claude Code lo obtiene con el mismo `git` no interactivo que usa para un marketplace alojado en git.

123 

124Estas fuentes de entrada no necesitan una cuenta de git:

125 

126* **`archive`**: un zip descargado sobre HTTPS. Los usuarios no necesitan ni `git` ni una cuenta, solo acceso de red a la URL. Requiere Claude Code v2.1.224 o posterior. Fije cada archivo con `sha256` para que Claude Code rechace una descarga cambiada. Para enviar credenciales con la descarga, consulte [Authenticate archive downloads](#authenticate-archive-downloads).

127* **Un repositorio de git público**: Claude Code clona un source `url` o `git-subdir` público sobre HTTPS sin credenciales cuando la entrada proporciona una URL `https://`. Para un source `github`, o un source `git-subdir` escrito como `owner/repo`, los usuarios sin una clave SSH de GitHub establecen `CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1`.

128 

129Para un equipo en una red, un marketplace `directory` en un sistema de archivos compartido también funciona sin cuentas de git. Los usuarios solo necesitan acceso de lectura a la ruta.

130 

131<h3 id="what-background-auto-update-does-with-credentials">

132 What background auto-update does with credentials

133</h3>

134 

135La actualización automática en segundo plano es la actualización desatendida de Claude Code de marketplaces y plugins instalados después de que comienza una sesión. Está desactivada para su marketplace hasta que un usuario o administrador la activa, como se cubre en [Keep users up to date](#keep-users-up-to-date).

136 

137Cuando está activada para un marketplace privado, la verificación de fondo de nuevos commits utiliza los asistentes de credenciales de git configurados del usuario y nunca solicita. Cada tipo de remoto y asistente da un resultado diferente:

138 

139* **Remotos SSH**: una clave cargada en `ssh-agent` autentica la verificación.

140* **Remotos HTTPS con una credencial almacenada**: un asistente que puede suministrar una credencial almacenada sin solicitar autentica la verificación. Git Credential Manager, el asistente de Keychain de macOS y `git-credential-store` funcionan de esta manera una vez que tienen una credencial para el host.

141* **Remotos HTTPS con un asistente que necesita solicitar**: el asistente no puede responder en segundo plano. La actualización falla silenciosamente y el checkout existente permanece en su lugar, por lo que los plugins del usuario siguen funcionando desde el último estado sincronizado.

142 

143Después de la verificación, Claude Code hace una de las siguientes:

144 

145* **El checkout está actualizado**: Claude Code lo deja como está.

146* **La verificación encuentra nuevos commits, o falla porque no puede alcanzar o autenticarse en el remoto**: Claude Code clona el marketplace nuevamente y reemplaza el checkout existente con el nuevo clon. Si ese clon falla, el checkout existente permanece en su lugar. El re-clon puede [agotar el tiempo de espera en repositorios grandes](/docs/es/plugins/troubleshooting#git-clone-timed-out-after-120s).

147 

148Para mantener un marketplace privado actualizado, un usuario puede hacer cualquiera de lo siguiente:

149 

150* **Almacenar una credencial**: inicie sesión en el asistente de credenciales primero para que tenga una credencial para el host. Para GitHub, ejecute `gh auth login`, luego `gh auth setup-git`.

151* **Mantener el checkout en caso de fallo**: si el usuario establece `CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE=1`, Claude Code mantiene el checkout existente sin intentar el re-clon cuando la verificación de fondo no puede alcanzar o autenticarse en el remoto. Los plugins siguen funcionando desde el último estado sincronizado.

152 

153Si un usuario establece `GITHUB_TOKEN` u otro token de proveedor en el entorno, eso solo no autentica la verificación de fondo. Un token toma efecto a través de un asistente de credenciales, como el asistente de la CLI `gh`, que lee `GH_TOKEN` y `GITHUB_TOKEN`.

154 

155<h2 id="roll-out-to-a-whole-company">

156 Roll out to a whole company

157</h2>

158 

159Desplegar un plugin en toda una empresa implica a usted como propietario del marketplace, un administrador que controla la configuración administrada y cada persona que usa Claude Code. Puede ejecutar el despliegue sin el administrador, en cuyo caso cada persona agrega el marketplace e instala el plugin ellos mismos.

160 

161| Quién | Qué hacen | Dónde se cubre |

162| :------------------------------------ | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------ |

163| Usted, el propietario del marketplace | Mantenga el catálogo en un repositorio que solo la empresa pueda leer, envíe el comando add para su host y diga qué necesita cada persona en su máquina | [Host your marketplace](#host-your-marketplace) y [Grant access to a private marketplace](#grant-access-to-a-private-marketplace) |

164| Un administrador | Registra el marketplace y activa sus plugins para todos con `extraKnownMarketplaces` y `enabledPlugins` en la configuración administrada, y establece `autoUpdate` allí | [Require a marketplace and its plugins](/docs/es/plugins/org#require-a-marketplace-and-its-plugins) y [Set update policy](/docs/es/plugins/org#set-update-policy) |

165| Cada persona | Necesita acceso de lectura a un repositorio de git privado, con credenciales ya almacenadas en su máquina. Sin un administrador, también ejecutan los comandos add e install | [Add a private marketplace](/docs/es/plugins/install#add-a-private-marketplace) |

166 

167Para personas que no tienen una cuenta de host de git, estas secciones cubren una forma de alcanzarlas:

168 

169* **Entry sources que no necesitan una cuenta de git**: [Serve users who have no git-host account](#serve-users-who-have-no-git-host-account)

170* **Un directorio de plugins precompletado**: [Seed containers and CI](/docs/es/plugins/org#seed-containers-and-ci), que también sirve a usuarios que no tienen una cuenta de host de git

171* **Configuración de la organización de claude.ai**: [Distribute through organization settings](#distribute-through-organization-settings), donde las credenciales de git de sus usuarios no están involucradas

172 

173<h2 id="keep-users-up-to-date">

174 Keep users up to date

175</h2>

176 

177Sus cambios llegan a los usuarios a través de la actualización automática en segundo plano, una vez que está activada para su marketplace, o cuando los usuarios actualizan el plugin ellos mismos. En ambos casos, un usuario obtiene una nueva copia de un plugin solo cuando su versión calculada cambia, como se describe en [Release a new version](#release-a-new-version).

178 

179<h3 id="turn-on-auto-update">

180 Turn on auto-update

181</h3>

182 

183La actualización automática en segundo plano está desactivada para su marketplace de forma predeterminada, y `marketplace.json` no tiene campo para activarla. Un usuario o un administrador la activa:

184 

185* **Diga a los usuarios que la activen**: cada usuario va a **Marketplaces** en `/plugin`, selecciona su marketplace y selecciona **Enable auto-update**.

186* **Pida a un administrador que la establezca**: si un administrador establece `"autoUpdate": true` en la entrada `extraKnownMarketplaces` de su marketplace en la configuración administrada, está activada para todos los que reciben esa configuración. Consulte [Set update policy](/docs/es/plugins/org#set-update-policy).

187 

188Sin actualización automática, los usuarios reciben sus cambios cuando ejecutan `/plugin marketplace update <name>` en una sesión o `claude plugin update <plugin>@<name>` en el shell.

189 

190Para ver qué ven los usuarios cuando llega una actualización, consulte [When auto-update runs](/docs/es/plugins/loading#when-auto-update-runs).

191 

192<h3 id="release-a-new-version">

193 Release a new version

194</h3>

195 

196Para lanzar una nueva versión a los usuarios, cambie el `version` del plugin. Los usuarios obtienen una nueva copia solo cuando la versión calculada del plugin difiere de la que tienen. Esa versión proviene de `plugin.json` primero, luego de la entrada del marketplace, según [Versions and updates](/docs/es/plugins/loading#versions-and-updates).

197 

198Un plugin que los usuarios [cargan en su lugar](/docs/es/plugins/loading#find-plugins-on-disk) desde un marketplace que agregaron como un directorio local no está controlado por `version`. Carga sus archivos actuales en cada inicio de sesión, sin importar lo que diga su cadena de versión.

199 

200Para cada instalación que no sea una carga en su lugar o una de un source `command`, aumente `version` en cada lanzamiento u omítalo:

201 

202* **Aumente `version` en cada lanzamiento**: los usuarios permanecen en su copia en caché hasta que la cadena cambia. Si establece `"version": "1.0.0"` y realiza push de nuevos commits sin cambiarlo, los usuarios no los reciben.

203* **Omita `version`**: los usuarios rastrean sus commits en su lugar. Deje `version` fuera de `plugin.json` y de la entrada del marketplace.

204 

205No establezca `version` en `plugin.json` y en la entrada del marketplace. Si lo hace, Claude Code usa el valor `plugin.json` sin advertencia, y `claude plugin validate` reporta la discrepancia como `Entry declares version "<a>" but <path>/plugin.json says "<b>"`.

206 

207<h3 id="hold-users-on-one-version">

208 Hold users on one version

209</h3>

210 

211Un marketplace sirve una versión de cada plugin a la vez, por lo que mantiene a los usuarios en una versión eligiendo a qué apunta cada entrada:

212 

213* **`ref` y `sha` en la entrada del plugin**: `ref` nombra una rama o etiqueta y `sha` nombra un commit para un source `github`, `url` o `git-subdir`. Consulte [Plugin sources](/docs/es/plugins/marketplace-reference#plugin-sources).

214* **`#<ref>` en el comando add**: los usuarios que agregan `your-org/your-marketplace#stable` obtienen esa rama o etiqueta del catálogo. Para dos líneas de lanzamiento a la vez, consulte [Run release channels](#run-release-channels).

215* **Etiquetas `<plugin>--v<version>`**: un rango de versión de una dependencia se resuelve contra estas etiquetas. Consulte [Release a plugin that others depend on](/docs/es/plugins/dependencies#tag-plugin-releases-for-version-resolution).

216 

217[Release a new version](#release-a-new-version) dice cuándo llega una entrada cambiada a los usuarios.

218 

219<h3 id="change-the-command-of-a-command-source">

220 Change the command of a command source

221</h3>

222 

223Si cambia el `command` de un [`command` source](/docs/es/plugins/marketplace-reference#command-plugin-source), o cambia su `mode`, cada usuario tiene que aceptar el nuevo comando antes de que Claude Code lo ejecute. Claude Code ejecuta solo el comando exacto que un usuario aceptó cuando instaló o actualizó por última vez el plugin.

224 

225Después de que la copia del marketplace de un usuario recoja el cambio, ese usuario ve lo siguiente:

226 

227* **Sin más ejecuciones en segundo plano**: la [ejecución una vez por sesión](/docs/es/plugins/loading#when-a-command-source-re-runs) del comando se detiene para ese usuario, por lo que la nueva salida de la herramienta no llega a ellos.

228* **Una entrada en la pestaña `/plugin` Errors**: la entrada muestra el nuevo comando y el comando `claude plugin update` a ejecutar.

229 

230Diga a los usuarios que ejecuten el comando `claude plugin update` que esa entrada muestra, en una terminal. Claude Code les muestra el nuevo comando y les pide que lo acepten.

231 

232<h2 id="run-release-channels">

233 Run release channels

234</h2>

235 

236Para ofrecer pistas estables y de acceso temprano, aloje dos marketplaces cuyas entradas apunten a diferentes refs del mismo plugin, y deje que cada usuario agregue el que quiera. Claude Code no tiene concepto de canal de lanzamiento, y un marketplace sirve una versión de cada plugin a la vez.

237 

238Dé a los dos archivos `marketplace.json` diferentes valores `name`. Claude Code identifica un marketplace por su `name`, por lo que un usuario no puede tener dos marketplaces con el mismo nombre registrados a la vez.

239 

240Con estos dos catálogos, los usuarios que agregan `stable-tools` instalan `code-formatter` desde la rama `stable`, y los usuarios que agregan `latest-tools` lo instalan desde `latest`:

241 

242```json theme={null}

243{

244 "name": "stable-tools",

245 "owner": { "name": "Your Org" },

246 "plugins": [

247 { "name": "code-formatter", "source": { "source": "github", "repo": "your-org/code-formatter", "ref": "stable" } }

248 ]

249}

250```

251 

252```json theme={null}

253{

254 "name": "latest-tools",

255 "owner": { "name": "Your Org" },

256 "plugins": [

257 { "name": "code-formatter", "source": { "source": "github", "repo": "your-org/code-formatter", "ref": "latest" } }

258 ]

259}

260```

261 

262Dé a los dos refs diferentes versiones `plugin.json`, u omita `version` para que el SHA del commit los distinga. Las actualizaciones se detectan comparando versiones, por lo que un ref que se mueve sin un cambio de versión deja a los usuarios en la copia en caché.

263 

264Para asignar los canales a grupos de usuarios en lugar de dejar que los usuarios elijan, un administrador da a cada grupo la entrada `extraKnownMarketplaces` coincidente, como se describe en [Set update policy](/docs/es/plugins/org#set-update-policy).

265 

266<h2 id="rename-or-remove-a-plugin">

267 Rename or remove a plugin

268</h2>

269 

270El `name` de un plugin es su identificador. Los usuarios lo hacen referencia en las claves de configuración `enabledPlugins` y `pluginConfigs` y en `/plugin install`, por lo que cambiarlo rompe cada instalación existente.

271 

272Para cambiar la etiqueta que los usuarios ven en `/plugin` sin romper nada, establezca `displayName` en `plugin.json` y mantenga `name` sin cambios.

273 

274<h3 id="migrate-users-with-a-renames-map">

275 Migrate users with a renames map

276</h3>

277 

278Cuando debe cambiar un `name`, agregue un mapa `renames` de nivel superior a `marketplace.json` para que Claude Code migre a los usuarios existentes en lugar de reportar [`Plugin "<name>" not found in marketplace`](/docs/es/plugins/troubleshooting#plugin-not-found-in-marketplace). Haga lo mismo cuando elimine una entrada de `plugins`. La migración automática requiere Claude Code v2.1.193 o posterior.

279 

280Asigne cada nombre anterior a su nombre actual, o a `null` cuando el plugin se haya ido. Este marketplace renombra `formatter` a `code-formatter` y registra que `legacy-linter` fue eliminado:

281 

282```json theme={null}

283{

284 "name": "your-marketplace",

285 "owner": { "name": "Your Org" },

286 "plugins": [

287 { "name": "code-formatter", "source": "./plugins/code-formatter" }

288 ],

289 "renames": {

290 "formatter": "code-formatter",

291 "legacy-linter": null

292 }

293}

294```

295 

296Después de que realice push, un usuario que aún tiene el nombre anterior habilitado ve uno de estos resultados:

297 

298* **Entrada renombrada**: el plugin se carga bajo su nuevo nombre. `claude plugin list` y los detalles del plugin en `/plugin` muestran `Renamed to "code-formatter" in the "your-marketplace" marketplace` una vez, y Claude Code reescribe la clave anterior a la nueva en `enabledPlugins` y `pluginConfigs` en los ámbitos de configuración del usuario, proyecto y local.

299* **Entrada `null`**: la clave anterior se elimina de esos ámbitos y el usuario ve `Removed from the "your-marketplace" marketplace`.

300* **Habilitado en la configuración administrada**: el plugin aún se carga bajo su nuevo nombre, pero Claude Code no puede reescribir la configuración administrada, por lo que el aviso se repite hasta que un administrador actualiza `enabledPlugins` allí.

301 

302Para un marketplace que los usuarios agregaron desde un repositorio de git o URL, un plugin renombrado reporta [`Plugin "<name>" not cached at <path>`](/docs/es/plugins/troubleshooting#plugin-not-cached-at) hasta que el usuario ejecuta `/plugin install code-formatter@your-marketplace` una vez en una sesión.

303 

304Trate `renames` como historial de solo anexión. Mantenga las entradas antiguas después de que todos hayan migrado. Cuando renombre nuevamente, agregue una segunda entrada en lugar de editar la primera, porque Claude Code sigue la cadena desde el nombre más antiguo.

305 

306En su shell, ejecute `claude plugin validate .` después de editar el mapa. Rechaza una cadena que cicla o que termina en cualquier lugar que no sea `null` o un nombre en `plugins`, con `renames.<name>: chain does not resolve`.

307 

308<h3 id="uninstall-removed-plugins-from-users’-machines">

309 Uninstall removed plugins from users' machines

310</h3>

311 

312Para desinstalar un plugin eliminado de las máquinas de los usuarios en lugar de dejar una copia atrás, establezca `"forceRemoveDeletedPlugins": true` en el nivel superior de `marketplace.json`. Sin el campo, un plugin eliminado permanece instalado y reporta `Plugin "<name>" not found in marketplace` cuando una sesión lo carga. Con él, Claude Code hace lo siguiente en cada inicio de sesión:

313 

3141. Compara lo que los usuarios instalaron desde su marketplace contra las entradas y el mapa `renames`, y trata cualquier plugin que no esté listado ni renombrado como eliminado.

3152. Desinstala cada plugin eliminado del usuario, proyecto y ámbitos locales. Los plugins que solo la configuración administrada instaló permanecen en su lugar.

3163. Enumera cada plugin eliminado bajo un encabezado **Flagged** en `/plugin` con el estado `Removed from marketplace`.

317 

318<h2 id="authenticate-archive-downloads">

319 Authenticate archive downloads

320</h2>

321 

322Para autenticar una descarga de [`archive`](/docs/es/plugins/marketplace-reference#archive-plugin-source), como una descarga de un registro privado, establezca los encabezados HTTP que Claude Code envía con ella. Puede establecer `headers` en cualquiera de estos lugares:

323 

324* **El source `url` del marketplace**: el source `url` desde el que registró el marketplace, como una entrada [`extraKnownMarketplaces`](/docs/es/settings-reference#extraknownmarketplaces).

325* **La entrada del plugin**: en Claude Code v2.1.238 o posterior, puede establecerlo en la entrada `marketplace.json` del plugin en su lugar, junto a `source`.

326 

327En cualquier lugar, establezca un comando `headersHelper` en lugar de `headers` cuando el valor es de corta duración, como un token que su registro genera bajo demanda. Claude Code ejecuta el comando y envía el objeto JSON que imprime como los encabezados de ese lugar. Requiere Claude Code v2.1.238 o posterior.

328 

329La [marketplace reference](/docs/es/plugins/marketplace-reference#plugin-entries) enumera los campos de entrada `headers` y `headersHelper`.

330 

331El lugar que elige decide qué descargas obtienen los encabezados y cuándo Claude Code ejecuta el comando:

332 

333| Lugar | Descargas que obtienen los encabezados | Cuándo Claude Code ejecuta un `headersHelper` establecido allí |

334| :--------------------------- | :------------------------------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

335| Source `url` del marketplace | Descargas de archivo en el origen de la URL del marketplace, lo que significa el mismo esquema, host y puerto | Antes de cada obtención del `marketplace.json` del marketplace y antes de cada descarga de archivo en ese origen. Claude Code reutiliza la salida de una ejecución durante hasta 60 segundos |

336| Entrada del plugin | Solo la descarga de esa entrada | Solo cuando un usuario instala o actualiza ese plugin solo y [acepta el comando](#how-users-accept-a-headershelper-command) |

337 

338Donde ambos lugares establecen un encabezado del mismo nombre, Claude Code envía el valor de la entrada. Dentro de un lugar, un encabezado que el comando imprime anula un encabezado del mismo nombre listado en `headers`.

339 

340<h3 id="add-a-headershelper-to-a-plugin-entry">

341 Add a headersHelper to a plugin entry

342</h3>

343 

344Esta entrada establece `headersHelper` junto a `source`. También establece [`"strict": false`](/docs/es/plugins/marketplace-reference#strict-mode), que Claude Code requiere de una entrada `marketplace.json` que establece `headersHelper`:

345 

346```json theme={null}

347{

348 "name": "my-plugin",

349 "description": "Formatting commands for internal services",

350 "strict": false,

351 "source": {

352 "source": "archive",

353 "url": "https://registry.example.com/plugins/my-plugin-2.1.0.zip"

354 },

355 "headersHelper": "/opt/bin/mint-registry-token.sh"

356}

357```

358 

359Para verificar la entrada, ejecute `claude plugin install my-plugin@your-marketplace` en su shell. Claude Code le muestra el comando y la URL del archivo, y descarga el zip después de que acepte.

360 

361<h3 id="write-the-headershelper-command">

362 Write the headersHelper command

363</h3>

364 

365Ya sea que establezca `headersHelper` en un source `url` del marketplace o en una entrada del plugin, escriba el comando para cumplir con estos requisitos:

366 

367* **Texto del comando**: como máximo 500 caracteres de ASCII imprimible, sin una ejecución de cuatro o más espacios.

368* **Salida**: imprima un objeto JSON de nombres de encabezados y valores de cadena en stdout, luego salga 0 dentro de 10 segundos.

369* **Shell y directorio de trabajo**: Claude Code ejecuta el comando a través de `sh`, o a través de `cmd.exe` en Windows. El directorio de trabajo es el directorio de configuración, que es `~/.claude` o [`CLAUDE_CONFIG_DIR`](/docs/es/env-vars#variables). Dé una ruta absoluta o un comando en `PATH`, porque una ruta relativa se resuelve contra ese directorio, no el proyecto del usuario.

370* **Variables que Claude Code elimina**: cuando el comando se establece en una entrada `marketplace.json`, o en el `.claude/settings.json` o `.claude/settings.local.json` de un proyecto, Claude Code elimina del entorno cada variable cuyo nombre parece una credencial, por la [misma regla que aplica a un `headersHelper` de MCP](/docs/es/mcp#which-variables-a-helper-can-read). `ANTHROPIC_API_KEY` y `MY_REGISTRY_TOKEN` se eliminan, por lo que el comando debe leer su credencial de un archivo o un almacén de credenciales. Esta eliminación no se aplica a un comando establecido en la configuración del usuario, un archivo `--settings` o la configuración administrada.

371* **Variables que Claude Code establece**: `CLAUDE_CODE_MARKETPLACE_URL` y `CLAUDE_CODE_MARKETPLACE_NAME` para el comando de un source `url`, y `CLAUDE_CODE_PLUGIN_NAME` y `CLAUDE_CODE_PLUGIN_ARCHIVE_URL` para el comando de una entrada. `CLAUDE_CODE_MARKETPLACE_NAME` no se establece en la primera obtención después de que un usuario agrega un marketplace por URL, porque esa obtención es lo que proporciona el nombre.

372 

373Un comando que acuña un token de portador imprime un objeto como este:

374 

375```json theme={null}

376{"Authorization": "Bearer eyJhbGciOiJSUzI1NiJ9"}

377```

378 

379<h3 id="when-claude-code-skips-a-headershelper-command-or-drops-its-output">

380 When Claude Code skips a headersHelper command or drops its output

381</h3>

382 

383Un comando `headersHelper` no se ejecuta, o los encabezados de `headers` o de la salida del comando se descartan, cuando se aplica uno de los siguientes:

384 

385* **El comando falla**: si el comando sale con código distinto de cero, se ejecuta más de 10 segundos, o imprime algo que no sea un objeto JSON de valores de cadena, la obtención o descarga para la que se ejecutó el comando no sucede.

386* **La URL del marketplace no comienza con `https://`**: el comando de ese source `url` no se ejecuta, y las solicitudes llevan solo los encabezados listados en su campo `headers`.

387* **La redirección deja el origen**: cuando una descarga se redirige fuera del origen de la URL del archivo, la solicitud redirigida no lleva valores de `headers` o salida de comando de ninguno del source `url` del marketplace o de la entrada del plugin.

388* **La entrada establece un encabezado de enrutamiento o identidad**: Claude Code descarta nombres de enrutamiento de solicitud e identidad de cliente como `Host`, `Cookie` y `X-Forwarded-*` de los `headers` de una entrada y la salida del comando, y mantiene nombres de autenticación como `Authorization`. Cada entrada `marketplace.json` se filtra de esta manera. Para una entrada de plugin en línea en la configuración, consulte [`extraKnownMarketplaces`](/docs/es/settings-reference#extraknownmarketplaces).

389* **Comando establecido en la configuración de un directorio `--add-dir`**: el comando se ignora, en un source `url` y en una [entrada de plugin en línea](/docs/es/settings-reference#extraknownmarketplaces) por igual, y solo se envían los `headers` de ese archivo.

390* **La configuración administrada bloquea el comando**: establecer [`disableCommandPluginSources`](/docs/es/settings-reference#disablecommandpluginsources) a `true` bloquea comandos `headersHelper`, y [`allowManagedHooksOnly`](/docs/es/settings-reference#allowmanagedhooksonly) también los bloquea a menos que `disableCommandPluginSources` sea explícitamente `false`. Bajo cualquiera de los bloqueos, Claude Code aún ejecuta el comando para un marketplace que la configuración administrada declara.

391 

392<h3 id="how-users-accept-a-headershelper-command">

393 How users accept a headersHelper command

394</h3>

395 

396Un usuario acepta el comando de una entrada del plugin cada vez que instala o actualiza ese plugin solo. Lo hacen desde la vista propia del plugin en `/plugin`, o con `claude plugin install` o `claude plugin update`. Claude Code muestra el comando y la URL del archivo, y ejecuta el comando solo después de que el usuario acepta.

397 

398En un shell no interactivo, pase [`--yes`](/docs/es/plugins/cli-reference#plugin-install) para aceptar el comando. Para aceptar solo el comando que una ejecución anterior de `--json` mostró, pase [`--accept-command`](/docs/es/plugins/cli-reference#plugin-install) con el `sha256` que la ejecución reportó.

399 

400Claude Code ejecuta solo el comando que mostró, para la URL del archivo que mostró. Si el comando o la URL del archivo de la entrada cambiaron entre tanto, Claude Code rechaza la instalación o actualización. Un cambio en la cadena de consulta solo no cuenta.

401 

402<h3 id="installs-and-updates-that-refuse-the-command-instead-of-asking">

403 Installs and updates that refuse a command instead of asking

404</h3>

405 

406En cualquier operación que no sea una instalación o actualización de un solo plugin, Claude Code ni ejecuta el comando de una entrada ni descarga su archivo. El plugin permanece en su versión instalada o permanece desinstalado, y el usuario ve uno de estos resultados:

407 

408* **Instalar varios plugins a la vez, desde una sugerencia de plugin, o como dependencia de otro plugin**: Claude Code rechaza el plugin que tiene el comando y dirige al usuario a la vista propia de ese plugin en `/plugin`. Los otros plugins en una instalación masiva aún se instalan. Un plugin que depende del plugin rechazado falla en instalar hasta que el usuario instale el plugin rechazado por sí solo.

409* **Actualización automática en segundo plano, o inicio de sesión para un plugin cuyo archivo nunca se descargó**: Claude Code enumera el plugin en la pestaña `/plugin` Errors para que el usuario sepa que debe instalarlo o actualizarlo ellos mismos.

410 

411<h3 id="when-a-marketplace-url-sources-command-runs">

412 When a marketplace `url` source's command runs

413</h3>

414 

415Usted declara el `headersHelper` de un source `url` del marketplace en un archivo de configuración, como una entrada [`extraKnownMarketplaces`](/docs/es/settings-reference#extraknownmarketplaces), en lugar de en el catálogo que publica el marketplace. Claude Code por lo tanto no pide al usuario que lo acepte en cada instalación o actualización. En su lugar, el archivo de configuración que lo declara decide cuándo Claude Code lo ejecuta:

416 

417| Archivo de configuración | Cuándo Claude Code ejecuta el comando |

418| :---------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

419| Configuración del usuario, un archivo `--settings` o un archivo de configuración administrada en la máquina | Sin preguntar, incluyendo durante una actualización de marketplace en segundo plano |

420| El `.claude/settings.json` o `.claude/settings.local.json` de un proyecto | Solo después de que el usuario acepte el [diálogo de confianza del espacio de trabajo](/docs/es/permissions#what-runs-before-you-trust-a-folder) para esa carpeta en sí. Una sesión `-p` o SDK no cuenta como aceptarlo, ni tampoco la confianza otorgada a una carpeta padre |

421| Configuración administrada por servidor | En una sesión interactiva, solo después de que el usuario apruebe la configuración entregada en el [diálogo de aprobación de seguridad](/docs/es/server-managed-settings#security-approval-dialogs) |

422 

423Para una [entrada de plugin en línea](/docs/es/settings-reference#extraknownmarketplaces) en uno de estos archivos, Claude Code requiere la misma confianza de carpeta o aprobación de configuración que para un comando de nivel de marketplace en ese archivo, y el usuario también acepta el comando de la entrada en cada instalación o actualización.

424 

425<h2 id="depend-on-and-recommend-other-plugins">

426 Depender de otros plugins y recomendarlos

427</h2>

428 

429Una entrada puede declarar dependencias de otros plugins.

430 

431* **Rangos de versión**: una dependencia puede llevar un rango semver.

432* **Dependencias entre marketplaces**: una dependencia de otro marketplace se instala solo cuando su marketplace lista ese marketplace en `allowCrossMarketplaceDependenciesOn`.

433 

434Para rangos de versión, la convención de etiqueta git `<plugin>--v<version>` contra la que se resuelven, y la confianza entre marketplaces, consulte [Plugin dependencies](/docs/es/plugins/dependencies).

435 

436Para que Claude Code sugiera un plugin cuando un proyecto coincida con él, agregue un bloque `relevance` a la entrada con las señales que identifican el proyecto. Los usuarios ven sugerencias de su marketplace solo cuando un administrador lo lista en `pluginSuggestionMarketplaces`. Para las señales y el paso de habilitación, consulte [Plugin relevance](/docs/es/plugins/relevance).

437 

438<h2 id="work-around-what-a-marketplace-can’t-do">

439 Work around what a marketplace can't do

440</h2>

441 

442Algunas cosas que los propietarios piden no tienen campo en `marketplace.json`. Aquí está la opción más cercana para cada una:

443 

444* **Restringir qué más instalan los usuarios**: la lista de permitidos del marketplace es una configuración administrada, `strictKnownMarketplaces`. Consulte [Restrict what users can install](/docs/es/plugins/org#restrict-what-users-can-install).

445* **Instalar o habilitar un plugin sin que el usuario lo pida**: ningún campo de entrada instala un plugin. El `enabledPlugins` administrado lo hace para una flota; consulte [Pre-install and require plugins](/docs/es/plugins/org#pre-install-and-require-plugins).

446* **Mostrar diferentes entradas a diferentes usuarios**: las entradas no llevan campo de audiencia, y cada usuario que agrega el marketplace ve el catálogo completo. Aloje marketplaces separados para audiencias separadas.

447* **Marcar un plugin como obsoleto**: no hay estado de obsolescencia. La opción es eliminar la entrada, asignar su nombre a `null` en `renames` y opcionalmente establecer `forceRemoveDeletedPlugins`.

448* **Activar la actualización automática para sus usuarios**: cada usuario la activa en **Marketplaces** en `/plugin`, o un administrador establece `autoUpdate` en la configuración administrada. Consulte [Turn on auto-update](#turn-on-auto-update).

449* **Llevar credenciales de git**: ningún campo de marketplace contiene un token de git. El acceso a un marketplace o plugin alojado en git sigue la configuración de git del usuario, según [Grant access to a private marketplace](#grant-access-to-a-private-marketplace). Para sources `archive`, una entrada puede establecer [`headers` o `headersHelper`](#authenticate-archive-downloads) en su lugar.

450 

451<h2 id="next-steps">

452 Next steps

453</h2>

454 

455* [Marketplace reference](/docs/es/plugins/marketplace-reference): campos `marketplace.json`, tipos de source y mensajes de validación

456* [Manage plugins for your organization](/docs/es/plugins/org): requiera, restrinja o propague su marketplace en las máquinas de su organización

457* [Plugin dependencies](/docs/es/plugins/dependencies): etiquete lanzamientos para que los plugins que dependen del suyo puedan resolver versiones

458* [Troubleshoot plugins](/docs/es/plugins/troubleshooting): los errores que ven sus usuarios al agregar o actualizar desde su marketplace

plugins/install.md +418 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Instalar y administrar plugins

6 

7> Instale plugins de Claude Code desde un marketplace en cualquier superficie que utilice, elija un alcance de instalación y actualícelos o elimínelos más tarde.

8 

9Instalar un plugin añade sus skills, agentes, hooks y servidores MCP a Claude Code en su máquina.

10 

11Esta página es para cualquiera que use plugins en su propia máquina o cuenta, ya sea en la terminal, la aplicación de escritorio, un IDE o una sesión en la nube: cubre la instalación, la elección de un alcance, la adición de marketplaces y el mantenimiento de los plugins actualizados.

12 

13<Note>

14 Estos casos se tratan en otras páginas:

15 

16 * **Utiliza claude.ai chat o Cowork, no Claude Code**: consulte [Plugins en claude.ai y en Cowork](https://claude.com/docs/plugins/overview)

17 * **Claude Code imprimió un error**: encuéntrelo en [Solucionar problemas de plugins](/docs/es/plugins/troubleshooting)

18</Note>

19 

20Comience con [Instalar un plugin](#install-a-plugin). Si alguien le envió un comando de instalación cuyo nombre `@` no es `claude-plugins-official`, [agregue ese marketplace](#add-a-marketplace) primero.

21 

22<h2 id="install-a-plugin">

23 Instalar un plugin

24</h2>

25 

26Como ejemplo, esta sección instala [`commit-commands`](https://github.com/anthropics/claude-plugins-official/tree/main/plugins/commit-commands) desde [el marketplace oficial de Anthropic](/docs/es/plugins/anthropic-marketplaces), que añade comandos para hacer commits, hacer push y abrir pull requests.

27 

28Los mismos pasos instalan cualquier otro plugin: sustituya su nombre y el nombre de su marketplace dondequiera que aparezcan `commit-commands` y `claude-plugins-official`. Si ese plugin proviene de un marketplace diferente, [agregue el marketplace](#add-a-marketplace) primero.

29 

30Elija la pestaña para donde ejecuta Claude Code.

31 

32<Tabs>

33 <Tab title="Terminal">

34 Inicie Claude Code con `claude` en su proyecto, luego:

35 

36 <Steps>

37 <Step title="Abra los detalles del plugin con el comando de instalación">

38 Ejecute `/plugin install` con el nombre del plugin y el marketplace. En una sesión, este comando no instala de inmediato: abre el panel `/plugin` en los detalles de ese plugin para que pueda revisarlo y elegir un alcance primero.

39 

40 ```text theme={null}

41 /plugin install commit-commands@claude-plugins-official

42 ```

43 

44 Para explorar en su lugar, ejecute `/plugin` sin nombre de plugin: el panel se abre en la pestaña **Discover**, que enumera plugins de cada marketplace que ha agregado, y puede escribir para buscar, luego presionar **Enter** en un plugin para abrir sus detalles.

45 </Step>

46 

47 <Step title="Revise lo que añade el plugin">

48 El panel de detalles muestra la descripción del plugin. También puede mostrar:

49 

50 * **Will install**: los comandos, agentes, skills, hooks y servidores MCP y LSP que añade el plugin.

51 * **Last updated**: se muestra para un plugin en el marketplace oficial de Anthropic.

52 * **Context cost**: para un plugin en el marketplace oficial de Anthropic, dos estimaciones de tokens. **Every turn** es lo que el plugin añade a cada mensaje que envía, y **When invoked** es lo que sus skills y agentes añaden una vez que Claude los carga. Las estimaciones aparecen cuando abre el plugin nombrando su marketplace, como hace el comando del paso 1, o desde la pestaña **Marketplaces**. El panel de detalles al que llega desde la lista **Discover** no las muestra.

53 

54 Los plugins de un marketplace local o personalizado pueden mostrar `Components will be discovered at installation` en su lugar.

55 

56 Un plugin puede ejecutar hooks y servidores MCP, así que lea el panel antes de instalar. Consulte [Plugin security and trust](/docs/es/plugins/security).

57 </Step>

58 

59 <Step title="Elija un alcance">

60 Seleccione una de las tres opciones de instalación:

61 

62 * **Install for you (user scope)**: obtiene el plugin en cada proyecto en esta máquina

63 * **Install for all collaborators on this repository (project scope)**: está habilitado para todos los que trabajan en este repositorio

64 * **Install for you, in this repo only (local scope)**: lo obtiene en este repositorio solamente

65 

66 [Choose an install scope](#choose-an-install-scope) dice qué archivo de configuración escribe cada uno y cuál se aplica cuando el mismo plugin se establece en más de uno.

67 

68 Después de seleccionar un alcance, Claude Code instala el plugin junto con cualquier dependencia que declare, luego imprime un resumen de instalación.

69 </Step>

70 

71 <Step title="Lea el resumen de instalación">

72 La última oración del resumen le dice si el plugin es utilizable en esta sesión aún:

73 

74 * **Active now**: `Plugin is now active.` No se necesita recarga.

75 * **Reload needed**: `Run /reload-plugins to activate.` El panel se cierra y Claude Code ejecuta esa recarga por usted. Si la recarga [invalidaría el prompt cache](/docs/es/prompt-caching#enabling-or-disabling-a-plugin), advierte y deja el plugin pendiente en su lugar. Ejecute `/reload-plugins --force` para activarlo de todas formas, lo que cuesta una solicitud sin caché.

76 * **Load failed**: `The plugin couldn't be loaded`. Abra la pestaña **Errors** en `/plugin` para la razón, luego consulte [After install: plugin not working](/docs/es/plugins/troubleshooting#plugin-installed-but-not-working).

77 </Step>

78 

79 <Step title="Confirme que el plugin funciona">

80 Escriba `/` y busque los skills del plugin bajo su nombre, en la forma `/<plugin>:<skill>`. Para `commit-commands`, aparece `/commit-commands:commit`. Otros dos lugares también enumeran el plugin:

81 

82 * Abra la pestaña **Installed** en `/plugin`, que enumera el plugin con su alcance.

83 * En su shell, ejecute `claude plugin list`, que imprime la misma lista con líneas `Version`, `Scope` y `Status`.

84 

85 Si `/commit-commands:commit` no aparece, consulte [After install: plugin not working](/docs/es/plugins/troubleshooting#plugin-installed-but-not-working).

86 </Step>

87 </Steps>

88 

89 La instalación desde cualquier otro marketplace requiere un paso extra primero: [agregue el marketplace](#add-a-marketplace). Claude Code añade el marketplace oficial de Anthropic por usted la primera vez que inicia una sesión de terminal interactiva, por lo que el ejemplo omite ese paso. Si encontró un plugin en [claude.com/marketplace](https://claude.com/marketplace), su botón **Claude Code** copia el comando de instalación en su [forma de shell](#install-from-your-shell), `claude plugin install <name>@claude-plugins-official`.

90 </Tab>

91 

92 <Tab title="Desktop app">

93 En una sesión local o SSH en la pestaña **Code** de la aplicación de escritorio:

94 

95 <Steps>

96 <Step title="Abra el navegador de plugins">

97 Haga clic en el botón **+** junto a la caja de prompt y seleccione **Plugins**, luego **Add plugin**. Se abre el navegador de plugins con los plugins de sus marketplaces.

98 </Step>

99 

100 <Step title="Seleccione el plugin">

101 Encuentre `commit-commands` y selecciónelo.

102 </Step>

103 

104 <Step title="Elija un alcance">

105 Elija un [alcance](#choose-an-install-scope): su cuenta de usuario, este proyecto o solo local.

106 </Step>

107 </Steps>

108 

109 Para habilitar, deshabilitar o desinstalar más tarde, use **+ > Plugins > Manage plugins**. El navegador de plugins no está disponible en las sesiones en la nube de la aplicación de escritorio. Consulte [Install plugins in the desktop app](/docs/es/desktop#install-plugins).

110 </Tab>

111 

112 <Tab title="VS Code">

113 En el panel de Claude Code en VS Code:

114 

115 <Steps>

116 <Step title="Abra Manage plugins">

117 Escriba `/plugins` en la caja de prompt para abrir **Manage plugins**.

118 </Step>

119 

120 <Step title="Instale el plugin">

121 En la pestaña **Plugins**, busque `commit-commands` y haga clic en **Install**. Si la pestaña no enumera plugins, agregue primero `anthropics/claude-plugins-official` en la pestaña **Marketplaces**.

122 </Step>

123 

124 <Step title="Elija un alcance">

125 Elija un [alcance](#choose-an-install-scope): **Install for you**, **Install for this project** o **Install locally**.

126 </Step>

127 </Steps>

128 

129 Sus cambios se aplican a las sesiones abiertas sin reinicio. Consulte [Manage plugins in VS Code](/docs/es/vs-code#manage-plugins).

130 </Tab>

131 

132 <Tab title="Cloud session">

133 Una [sesión en la nube](/docs/es/cloud-environments), incluyendo [el navegador en claude.ai/code](/docs/es/claude-code-on-the-web), no tiene navegador de plugins y no carga los plugins que instaló en su propia máquina o los que el `.claude/settings.json` de su repositorio activa. Para plugins que su organización distribuye a través de configuración administrada, consulte [Manage plugins for your organization](/docs/es/plugins/org).

134 

135 Consulte [qué partes de su configuración también están disponibles en una sesión en la nube](/docs/es/cloud-environments#what-carries-over-from-your-setup) para el resto de su configuración.

136 </Tab>

137</Tabs>

138 

139<h3 id="choose-an-install-scope">

140 Elija un alcance de instalación

141</h3>

142 

143El alcance de instalación de un plugin decide quién obtiene el plugin y qué archivo de configuración lo registra como habilitado:

144 

145* **User scope**: el plugin está habilitado para usted en cada proyecto en esta máquina. La entrada va en `enabledPlugins` en `~/.claude/settings.json`.

146* **Project scope**: el plugin está habilitado para todos los que trabajan en este repositorio. La entrada va en `.claude/settings.json`, que usted confirma.

147* **Local scope**: el plugin está habilitado para usted en este repositorio solamente. La entrada va en `.claude/settings.local.json`.

148 

149Algunos plugins están configurados por su autor para comenzar desactivados, a través del campo [`defaultEnabled`](/docs/es/plugins/manifest-reference#defaultenabled). Tal plugin se instala pero permanece desactivado hasta que lo active con `claude plugin enable <name>` en su shell, o desde la pestaña **Installed** de `/plugin` en una sesión.

150 

151Cuando el mismo plugin se establece en varios alcances, la configuración local anula la configuración del proyecto, y la configuración del proyecto anula la configuración del usuario. Consulte [Find where a plugin is enabled](/docs/es/plugins/loading#find-where-a-plugin-is-enabled) para la regla completa.

152 

153La terminal, las sesiones locales de la aplicación de escritorio y la extensión VS Code en una computadora leen los mismos archivos de configuración, por lo que un plugin que instale en alcance de usuario en cualquiera de ellos está disponible en los otros dos.

154 

155<h3 id="other-places-you-run-claude-code">

156 JetBrains, ejecuciones no interactivas y el Agent SDK

157</h3>

158 

159Algunos lugares donde ejecuta Claude Code no tienen su propio navegador de plugins:

160 

161* **JetBrains IDEs**: el plugin de JetBrains ejecuta Claude Code en la terminal del IDE, así que use los pasos de la pestaña **Terminal** allí.

162* **`claude -p` y otras ejecuciones no interactivas**: `/plugin` no se ejecuta, y Claude responde `/plugin isn't available in this environment.` Los plugins que ya instaló sí se cargan. Instálelos y adminístrelos desde su shell con [comandos `claude plugin`](#install-from-your-shell).

163* **Agent SDK**: cargue plugins a través de la opción de plugin del SDK. Consulte [Load plugins in the Agent SDK](/docs/es/agent-sdk/plugins).

164 

165Si Claude Code informa que un plugin habilitado en el `.claude/settings.json` del repositorio no está instalado, consulte [Enabled in project settings but not installed](/docs/es/plugins/loading#enabled-in-project-settings-but-not-installed).

166 

167<Tip>

168 Si es un autor de plugins que prueba una copia de su plugin en disco, inicie Claude Code desde su shell con `--plugin-dir` para cargarlo durante una sesión en lugar de instalarlo. Consulte [Flags that load a plugin for one session](/docs/es/plugins/cli-reference#flags-that-load-a-plugin-for-one-session).

169</Tip>

170 

171<h3 id="plugins-from-your-claude-ai-account">

172 Plugins de su cuenta claude.ai

173</h3>

174 

175Su cuenta claude.ai es una fuente separada de plugins, junto con los marketplaces desde los que instala:

176 

177* **What arrives**: cada plugin que activa para su cuenta claude.ai, y cada plugin que su organización activa para sus miembros. En una sesión de terminal se sincronizan en segundo plano cada vez que inicia Claude Code mientras está conectado con esa cuenta; en sesiones de Cowork se descargan cuando comienza la sesión.

178* **Where you see them**: en `/plugin` y `claude plugin list` bajo el ID `<name>@synced`. Puede desactivar uno en su propio alcance a menos que su organización lo requiera.

179* **What doesn't go the other way**: los plugins que instala con `/plugin` o `claude plugin install` permanecen en esta máquina y no se añaden a su cuenta claude.ai.

180 

181Para el tiempo de sincronización, requisitos de inicio de sesión y desactivación de sincronización, consulte [Plugins synced from claude.ai](/docs/es/plugins/loading#synced-plugins).

182 

183<h3 id="install-from-your-shell">

184 Instalar desde su shell

185</h3>

186 

187Ejecute `claude plugin install` en su shell para instalar un plugin sin iniciar una sesión de Claude Code, por ejemplo desde un script de configuración.

188 

189* **Scope**: alcance de usuario por defecto. Pase `--scope project` o `--scope local` para cambiarlo.

190* **When the plugins load**: los plugins que instala se cargan la próxima vez que inicia Claude Code, o cuando ejecuta `/reload-plugins` en una sesión que ya está abierta.

191* **The marketplace must be added first**: en una máquina donde nadie ha abierto una sesión interactiva de Claude Code aún, el marketplace oficial no está registrado, así que un script que instala desde él ejecuta `claude plugin marketplace add anthropics/claude-plugins-official` antes de la instalación.

192 

193```bash theme={null}

194claude plugin install formatter@your-org --scope project

195```

196 

197El comando imprime `Successfully installed plugin: formatter@your-org (scope: project)` cuando termina.

198 

199Algunos plugins se instalan ejecutando un comando que su marketplace nombra, llamado una [fuente `command`](/docs/es/plugins/marketplace-reference#command-plugin-source). Claude Code le muestra ese comando y le pide que lo acepte antes de ejecutarlo. Un script no tiene a nadie para responder ese prompt, así que pase `--yes` allí para aceptarlo.

200 

201Para cada bandera `claude plugin install`, consulte [plugin install](/docs/es/plugins/cli-reference#plugin-install).

202 

203<h2 id="add-a-marketplace">

204 Agregue un marketplace

205</h2>

206 

207Solo necesita esta sección cuando el plugin que desea no está en el marketplace oficial de Anthropic, por ejemplo uno que un colega publicó o uno del marketplace comunitario de Anthropic.

208 

209Un marketplace es un catálogo de plugins, y Claude Code tiene que conocer un marketplace antes de poder instalar desde él. Agrega un marketplace una vez. Después de eso, sus plugins aparecen en la pestaña **Discover** e instalan con `/plugin install <plugin>@<marketplace>` en una sesión o `claude plugin install <plugin>@<marketplace>` en su shell, donde `<marketplace>` es el nombre bajo el cual se registró el marketplace. Para hacer ambos en un paso, consulte [Add a marketplace and install in one command](#add-a-marketplace-and-install-in-one-command).

210 

211En una sesión de Claude Code, ejecute `/plugin marketplace add` seguido de la fuente del marketplace: un repositorio de GitHub, un repositorio git en cualquier host, un directorio o archivo local, o un `marketplace.json` alojado.

212 

213| Fuente | Lo que escribe | Ejemplo |

214| :-------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------ |

215| Repositorio de GitHub | `owner/repo`. Agregue `#ref` para fijar una rama o etiqueta. | `/plugin marketplace add anthropics/claude-code`, o `/plugin marketplace add your-org/plugins#v1.2.0` para fijar la etiqueta `v1.2.0` |

216| Repositorio Git en cualquier host | La URL de clonación completa. Agregue `#ref` para fijar una rama o etiqueta. | `/plugin marketplace add https://gitlab.example.com/your-group/your-marketplace.git#v1.0.0` |

217| Directorio o archivo local | Una ruta relativa o absoluta a un directorio que contiene `.claude-plugin/marketplace.json`, o al archivo JSON en sí. Comience una ruta relativa con `./` o `../`, porque Claude Code lee un `name/name` desnudo como un repositorio de GitHub. | `/plugin marketplace add ./my-marketplace` |

218| `marketplace.json` alojado | Su URL `https://` | `/plugin marketplace add https://example.com/marketplace.json` |

219 

220Desde su shell, `claude plugin marketplace add` toma las mismas fuentes.

221 

222<Tip>

223 `/plugin market` también funciona como una forma más corta de `/plugin marketplace`.

224</Tip>

225 

226Incluya el prefijo `https://` en cada URL, o use la forma `git@host:path` para SSH. Si escribe un `gitlab.example.com/your-group/your-marketplace.git` desnudo, Claude Code lo lee como abreviatura de GitHub `owner/repo` y lo rechaza.

227 

228Cuando el comando tiene éxito, imprime `Successfully added marketplace: <name>`, y los plugins del marketplace aparecen en la pestaña **Discover** la próxima vez que abre `/plugin`, sin necesidad de recarga. Si falla, haga coincidir el mensaje de error en [Troubleshoot plugins](/docs/es/plugins/troubleshooting#add-a-marketplace).

229 

230<h3 id="add-a-marketplace-and-install-in-one-command">

231 Agregue un marketplace e instale en un comando

232</h3>

233 

234Para instalar un plugin desde un marketplace que aún no ha agregado, ejecute `/plugin install` en una sesión de Claude Code y nombre la fuente del marketplace con `--marketplace`. Requiere Claude Code v2.1.275 o posterior.

235 

236```text theme={null}

237/plugin install deploy-helper --marketplace your-org/plugins

238```

239 

240La fuente toma [las mismas formas que `/plugin marketplace add`](#add-a-marketplace), como GitHub `owner/repo`, una URL git, o una ruta local, excepto que no puede contener espacios. Dé el nombre del plugin por sí solo, sin un sufijo `@marketplace`.

241 

242Si aún no ha agregado ese marketplace, Claude Code muestra la fuente que resolvió y le pide que confirme antes de agregarlo. Una vez que se agrega el marketplace, los detalles del plugin se abren y elige un [alcance de instalación](#install-a-plugin). Si la fuente coincide con un marketplace que ya ha agregado, Claude Code omite la confirmación y abre los detalles del plugin en ese marketplace.

243 

244<h3 id="add-a-private-marketplace">

245 Agregue un marketplace privado

246</h3>

247 

248Un marketplace privado es uno en un repositorio al que necesita credenciales para clonar, en GitHub o cualquier otro host git. Lo agrega con el mismo comando `/plugin marketplace add` o `claude plugin marketplace add` que uno público. Claude Code lo clona con las credenciales git ya en su máquina y nunca solicita, así que cada forma de conectarse tiene un requisito:

249 

250* **HTTPS**: sus ayudantes de credenciales git se aplican, así que el acceso que configuró con `gh auth login`, el Keychain de macOS, o `git-credential-store` funciona. Los prompts interactivos se suprimen, así que un host al que nunca se ha autenticado falla en lugar de pedir una contraseña.

251* **SSH**: el host ya debe estar en su archivo `known_hosts` y la clave debe funcionar sin un prompt de frase de contraseña, porque los prompts de huella digital del host y frase de contraseña también se suprimen.

252* **Abreviatura de GitHub `owner/repo`**: Claude Code verifica si su clave SSH se autentica en `github.com`, luego clona sobre SSH si lo hace y sobre HTTPS si no. Establezca [`CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1`](/docs/es/env-vars#variables) para omitir esa verificación y siempre clonar sobre HTTPS.

253 

254Las mismas credenciales se aplican cuando ejecuta `/plugin install`, `/plugin marketplace update` y `claude plugin update`.

255 

256En un host de GitHub Enterprise Server, consulte [Plugin marketplaces on GHES](/docs/es/github-enterprise-server#plugin-marketplaces-on-ghes) para las credenciales que cada operación necesita.

257 

258Si su organización registra el marketplace para usted a través de configuración administrada, no lo agrega usted mismo. Consulte [Pre-install and require plugins](/docs/es/plugins/org#pre-install-and-require-plugins).

259 

260<h3 id="add-from-claude-ai">

261 Agregue un marketplace desde claude.ai

262</h3>

263 

264En sesiones de terminal donde [los plugins se sincronizan desde su cuenta claude.ai](/docs/es/plugins/loading#synced-plugins), claude.ai también puede enumerar marketplaces de plugins para usted, como la biblioteca de plugins de su organización y sus propias cargas de claude.ai. Agrega uno de estos por su nombre en lugar de por una fuente. Agregar un marketplace desde claude.ai requiere Claude Code v2.1.273 o posterior.

265 

266Agregue un marketplace de claude.ai desde el panel `/plugin` o desde su shell:

267 

268* **Inside a session**: ejecute `/plugin` y vaya a la pestaña **Marketplaces**, que enumera los marketplaces desde claude.ai. Seleccione uno allí para agregarlo.

269* **From your shell**: ejecute `claude plugin marketplace list`, que los imprime en una sección `From claude.ai:`. Luego ejecute `claude plugin marketplace add` con la bandera `--claudeai` y el nombre mostrado en la lista.

270 

271Por ejemplo, este comando agrega un marketplace llamado `claudeai-organization-library`:

272 

273```bash theme={null}

274claude plugin marketplace add --claudeai claudeai-organization-library

275```

276 

277Claude Code registra el marketplace bajo un nombre local que comienza con `claudeai-`, derivado del nombre que claude.ai lo enumera. Por ejemplo, un marketplace enumerado como "Organization library" se convierte en `claudeai-organization-library`. Instale sus plugins por ese nombre, por ejemplo con `claude plugin install <plugin>@claudeai-organization-library`.

278 

279Si cierra sesión, o inicia sesión en una organización claude.ai diferente, el marketplace permanece configurado pero no muestra plugins, y los plugins que ya instaló desde él siguen cargándose.

280 

281La sección `From claude.ai:` también puede enumerar marketplaces basados en git compartidos a través de claude.ai, e imprime una fuente para cada uno de esos. Agréguelos por esa fuente como en [Add a marketplace](#add-a-marketplace), no con `--claudeai`.

282 

283<h2 id="manage-installed-plugins">

284 Administre plugins instalados

285</h2>

286 

287La pestaña **Installed** en `/plugin` enumera sus plugins con acciones para habilitar, deshabilitar, actualizar o desinstalar cada uno. En una sesión de Claude Code, ejecute `/plugin` y presione **Tab** para llegar a ella, o ejecute `/plugin enable`, `/plugin disable` o `/plugin uninstall` para abrir el panel y hacer ese cambio allí. Los plugins deshabilitados se agrupan bajo un encabezado contraído en la parte inferior de la lista. Use estas teclas en la lista:

288 

289* Escriba para filtrar por nombre o descripción.

290* Presione **Space** para habilitar o deshabilitar el plugin seleccionado, y **f** para marcarlo como favorito.

291* Presione **Enter** para abrir los detalles de un plugin. El menú allí ofrece **Disable plugin** o **Enable plugin**, **Update now** y **Uninstall**. Los plugins que toman configuración también ofrecen **Configure options**.

292 

293La pestaña también puede mostrar plugins en alcance **Managed**. Su organización instaló esos a través de [configuración administrada](/docs/es/settings#settings-files), y no puede habilitarlos, deshabilitarlos o desinstalarlos aquí.

294 

295Para un plugin sincronizado que su organización requiere en claude.ai, consulte [Manage plugins synced from claude.ai](#manage-plugins-synced-from-claude-ai).

296 

297Cuando cierra el panel `/plugin` con cambios pendientes que hizo en él, Claude Code ejecuta `/reload-plugins` para usted para aplicarlos. Si la recarga [invalidaría el prompt cache](/docs/es/prompt-caching#enabling-or-disabling-a-plugin), advierte y deja los cambios pendientes en su lugar. Ejecute `/reload-plugins --force` para aplicarlos de todas formas.

298 

299<h3 id="manage-plugins-synced-from-claude-ai">

300 Administre plugins sincronizados desde claude.ai

301</h3>

302 

303La pestaña **Installed** en `/plugin` también enumera los [plugins sincronizados desde su cuenta claude.ai](/docs/es/plugins/loading#synced-plugins), con `synced` como su fuente. Los plugins sincronizados aparecen en sesiones de terminal en Claude Code v2.1.273 o posterior.

304 

305* **Enable or disable**: use la pestaña **Installed**, a menos que su organización haya marcado el plugin como requerido.

306* **Remove**: desactive el plugin en claude.ai.

307 

308Cuando Claude Code sincroniza un plugin agregado, actualizado o eliminado en una sesión interactiva, ve `Plugins changed. Run /reload-plugins to activate.` Ejecute `/reload-plugins` para cargar el cambio en esa sesión, o déjelo para la próxima vez que inicie Claude Code.

309 

310<h3 id="uninstall-a-plugin-the-project-enables">

311 Desinstale un plugin que el proyecto habilita

312</h3>

313 

314Cuando elige **Uninstall** para un plugin que el `.claude/settings.json` de este repositorio habilita, ya sea desde la pestaña **Installed** o con `/plugin uninstall`, Claude Code le pregunta si deshabilitarlo para usted o desinstalarlo para todos:

315 

316* **Disable for me**: presione **y**. Claude Code escribe `false` para el plugin en su `.claude/settings.local.json` y lo deja instalado para el proyecto.

317* **Uninstall for everyone**: presione **u**. Claude Code elimina el plugin del `.claude/settings.json` compartido.

318 

319<h3 id="see-what-an-installed-plugin-adds-to-your-sessions">

320 Vea lo que un plugin instalado añade a sus sesiones

321</h3>

322 

323En su shell, ejecute `claude plugin details <name>` para un plugin instalado. La línea `Always-on` es el número de tokens que el plugin añade a cada sesión donde está habilitado, y las filas por componente muestran qué skill o agente contribuye más. Para la salida completa y lo que significa cada figura, consulte [Measure what a plugin costs](/docs/es/plugins/measure#measure-what-a-plugin-costs).

324 

325<h3 id="find-plugins-you-no-longer-use">

326 Encuentre plugins que ya no usa

327</h3>

328 

329En la pestaña **Installed** en `/plugin`, los plugins que instaló usted mismo y no ha usado recientemente aparecen bajo un encabezado **Not used recently**, y los detalles de cada plugin muestran una línea **Last used**. Use ese encabezado y esa línea para encontrar plugins que aún añaden costo de inicio y contexto, luego deshabílitelos o desinstálelos.

330 

331<h3 id="plugins-with-dependencies">

332 Plugins con dependencias

333</h3>

334 

335Un plugin puede declarar otros plugins de los que depende. Cuando instala, deshabilita o desinstala tal plugin desde un marketplace, Claude Code actúa sobre esas dependencias también:

336 

337* **Install**: Claude Code también instala y habilita las dependencias declaradas del plugin en el mismo alcance. El mensaje de éxito las enumera.

338* **Enable**: Claude Code también habilita las dependencias del plugin que están instaladas pero deshabilitadas. Si una dependencia declarada no está instalada, la habilitación falla y el mensaje le dice que la instale primero.

339* **Disable**: cuando otro plugin habilitado aún necesita el que nombró, Claude Code se niega e imprime un comando encadenado que deshabilita ambos en el orden correcto.

340* **Uninstall**: las dependencias instaladas automáticamente permanecen hasta que ejecuta `claude plugin prune` en su shell; consulte [plugin prune](/docs/es/plugins/cli-reference#plugin-prune).

341 

342Si cargó el plugin con `--plugin-dir` en su lugar, consulte [Test a plugin and its dependency locally](/docs/es/plugins/dependencies#test-a-plugin-and-its-dependency-locally).

343 

344<h3 id="manage-plugins-from-your-shell">

345 Administre plugins desde su shell

346</h3>

347 

348También puede administrar plugins sin iniciar una sesión de Claude Code. En su shell, ejecute `claude plugin install`, `enable`, `disable` o `uninstall` como comandos de terminal ordinarios; cambian la misma configuración que el panel `/plugin` hace. Cada uno toma `--scope` para dirigirse a un alcance, y usa un alcance predeterminado cuando lo omite:

349 

350* `enable` y `disable` actúan sobre el alcance más específico cuya configuración ya enumera el plugin.

351* `install` y `uninstall` actúan sobre el alcance de usuario.

352 

353Por ejemplo, estos comandos deshabilitan y vuelven a habilitar un plugin, luego lo desinstalan en alcance de proyecto:

354 

355```bash theme={null}

356claude plugin disable formatter@your-org

357claude plugin enable formatter@your-org

358claude plugin uninstall formatter@your-org --scope project

359```

360 

361<h2 id="keep-plugins-updated">

362 Mantenga los plugins actualizados

363</h2>

364 

365Los plugins se actualizan automáticamente cuando el marketplace del que provienen tiene la actualización automática activada. Después de que comienza una sesión, Claude Code actualiza esos marketplaces y actualiza las copias en disco de los plugins que instaló desde ellos.

366 

367La sesión en ejecución mantiene las versiones que ya cargó. Después de una actualización, ve `Plugin updated: <name> · Run /reload-plugins to apply`, y la próxima sesión carga las nuevas versiones automáticamente.

368 

369Estos son los valores predeterminados de actualización automática para cada tipo de marketplace:

370 

371* **On by default**: `claude-plugins-official` y los otros [nombres de marketplace oficial](/docs/es/plugins/security#official-marketplace-names) excepto `knowledge-work-plugins` y `first-party-plugins`, más [marketplaces agregados desde claude.ai](#add-from-claude-ai).

372* **Off by default**: cada otro marketplace, incluyendo el marketplace comunitario, marketplaces de terceros y marketplaces de desarrollo local.

373 

374Para cuándo se ejecuta la actualización automática, qué plugins omite y las variables de entorno que la desactivan, consulte [When auto-update runs](/docs/es/plugins/loading#when-auto-update-runs).

375 

376<h3 id="turn-auto-update-on-or-off-for-a-marketplace">

377 Active o desactive la actualización automática para un marketplace

378</h3>

379 

380En una sesión de Claude Code, ejecute `/plugin` y vaya a la pestaña **Marketplaces**. Seleccione el marketplace, luego seleccione **Enable auto-update** o **Disable auto-update**.

381 

382<h3 id="update-one-plugin-now">

383 Actualice un plugin ahora

384</h3>

385 

386En una sesión, abra el plugin en la pestaña **Installed** en `/plugin` y seleccione **Update now**, o en su shell ejecute `claude plugin update <plugin>@<marketplace>`.

387 

388<h3 id="auto-update-from-a-private-marketplace">

389 Actualización automática desde un marketplace privado

390</h3>

391 

392Para un marketplace privado, consulte [What background auto-update does with credentials](/docs/es/plugins/host-marketplace#what-background-auto-update-does-with-credentials) para cómo las actualizaciones automáticas en segundo plano se autentican sobre SSH y HTTPS, y [Troubleshoot plugins](/docs/es/plugins/troubleshooting#add-a-marketplace) para los mensajes que ve cuando fallan.

393 

394<h2 id="manage-marketplaces">

395 Administre marketplaces

396</h2>

397 

398La pestaña **Marketplaces** en `/plugin` enumera cada marketplace que registró, junto con su fuente. Seleccione uno para explorar sus plugins, actualizar su listado, activar o desactivar la actualización automática, o eliminarlo.

399 

400También puede enumerar, actualizar y eliminar marketplaces con comandos, desde su shell o dentro de una sesión:

401 

402| Acción | En su shell | Dentro de una sesión |

403| :------------------------------------- | :---------------------------------------- | :---------------------------------- |

404| Enumere marketplaces | `claude plugin marketplace list` | `/plugin marketplace list` |

405| Actualice el listado de un marketplace | `claude plugin marketplace update <name>` | `/plugin marketplace update <name>` |

406| Elimine un marketplace | `claude plugin marketplace remove <name>` | `/plugin marketplace remove <name>` |

407 

408Cuando elimina un marketplace, Claude Code desinstala cada plugin que instaló desde él y elimina sus entradas `enabledPlugins` de sus archivos de configuración. La pestaña **Marketplaces** nombra esos plugins antes de pedirle que confirme.

409 

410<h2 id="next-steps">

411 Próximos pasos

412</h2>

413 

414* [Marketplaces de Anthropic](/docs/es/plugins/anthropic-marketplaces): cómo difieren los marketplaces oficiales, comunitarios y de demostración, y dónde explorar cada uno

415* [Referencia de carga de plugins](/docs/es/plugins/loading): por qué un plugin se cargó, no se cargó, o no cambió después de una actualización

416* [Seguridad y confianza de plugins](/docs/es/plugins/security): qué revisar antes de instalar un plugin de un marketplace que no conoce

417* [Solucionar problemas de plugins](/docs/es/plugins/troubleshooting): mensajes de error de instalación y marketplace con sus soluciones

418* [Crear un plugin](/docs/es/plugins/create): construya el suyo propio

plugins/loading.md +424 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Referencia de carga de plugins

6 

7> Rastrear desde dónde Claude Code carga cada plugin, qué archivo de configuración decide si se carga, y por qué una actualización no cambió nada.

8 

9Utilice esta página cuando un plugin no se cargó, cargó una copia diferente a la que esperaba, o no recogió una actualización, y desea ver qué fuente, ámbito de configuración o archivo en disco decidió eso. Proporciona las reglas que Claude Code aplica cuando comienza una sesión y cada vez que ejecuta `/reload-plugins`. También puede pedirle a Claude que lea esta página y diagnostique su configuración.

10 

11<Note>

12 Estos casos se tratan en otras páginas:

13 

14 * **Pasos de instalación, habilitación, deshabilitación y actualización**: consulte [Instalar y administrar plugins](/docs/es/plugins/install)

15 * **Tiene un mensaje de error específico**: consulte [Solucionar problemas de plugins](/docs/es/plugins/troubleshooting)

16</Note>

17 

18Comience con [Verificar en qué etapa llegó un plugin](#check-which-stage-a-plugin-reached) para las tres etapas por las que pasa un plugin instalado, o vaya a la sección que coincida con lo que está viendo:

19 

20* Un plugin que desactivó sigue cargándose: [Encontrar dónde está habilitado un plugin](#find-where-a-plugin-is-enabled)

21* Una actualización no cambió nada: [Versiones y actualizaciones](#versions-and-updates)

22* Está mirando los archivos bajo `~/.claude/plugins/`: [Encontrar plugins en disco](#find-plugins-on-disk)

23* Un plugin `--plugin-dir` no se cargó, o se cargó un plugin con el mismo nombre en su lugar: [Conflictos de nombres](#name-conflicts)

24 

25<h2 id="check-which-stage-a-plugin-reached">

26 Verificar en qué etapa llegó un plugin

27</h2>

28 

29Una entrada `enabledPlugins` se convierte en un plugin que puede usar en etapas: su configuración lo declara, Claude Code lo obtiene en disco, y la sesión en ejecución lo carga. Cuando un plugin no se comporta como sugiere un archivo de configuración, verifique en qué etapa llegó:

30 

31* **Declarado, en configuración**: `enabledPlugins` dice qué plugins deben estar activados, y `extraKnownMarketplaces` dice qué mercados deben existir. Cuando ejecuta `claude plugin marketplace add`, Claude Code escribe el mercado en `extraKnownMarketplaces` en su configuración de usuario, así como en disco

32* **Obtenido, en disco bajo `~/.claude/plugins/`**: los registros de lo que Claude Code ha obtenido, y los archivos obtenidos en sí:

33 * `known_marketplaces.json` registra cada mercado que Claude Code ha obtenido, con su `source`, `installLocation`, `lastUpdated`, y `autoUpdate`. Hay un `known_marketplaces.json` por usuario, por lo que un mercado que agrega en un proyecto está disponible en cada proyecto

34 * `installed_plugins.json` registra cada instalación con su `scope`, `installPath`, y `version`

35 * `cache/` contiene los archivos del plugin

36* **Cargado, en la sesión en ejecución**: el conjunto de plugins que Claude Code cargó al inicio o en el último `/reload-plugins`. Los cambios en la configuración o en disco no llegan a esta capa hasta que ejecute `/reload-plugins` o inicie una nueva sesión. Por eso `claude plugin update` termina con `Restart to apply changes.` y las actualizaciones en segundo plano le solicitan que ejecute `Run /reload-plugins to apply`

37 

38<h3 id="plugins-and-marketplaces-that-aren’t-on-disk-at-session-start">

39 Plugins y mercados que no están en disco al inicio de la sesión

40</h3>

41 

42Los plugins se cargan al inicio de la sesión desde `installed_plugins.json` y la caché sin usar la red. Después de que comienza la sesión, Claude Code verifica los mercados declarados en segundo plano:

43 

44* **Un mercado que la configuración declara pero que `known_marketplaces.json` carece**: Claude Code lo clona, luego recarga plugins y descarga plugins habilitados que aún no están en caché

45* **Un mercado declarado cuya fuente cambió en la configuración**: Claude Code lo vuelve a obtener de la nueva fuente y muestra `Plugins changed. Run /reload-plugins to activate.`

46 

47Un plugin habilitado que ninguna ruta obtuvo y que no tiene un directorio de caché utilizable muestra `Plugin "<name>" not cached at <path>` en la pestaña **Errors** de `/plugin`, y `claude plugin list` agrega `— run /plugin to refresh` a la misma línea. Para la solución, consulte [`Plugin "<name>" not cached at <path>`](/docs/es/plugins/troubleshooting#plugin-not-cached-at).

48 

49<h2 id="find-where-a-plugin-came-from">

50 Encontrar de dónde vino un plugin

51</h2>

52 

53Cada plugin tiene un id de la forma `<name>@<origin>`, que es lo que ve en archivos de configuración y en `claude plugin list --json`. La parte después de `@` le dice dónde Claude Code encontró el plugin:

54 

55| El ID termina en | Cómo llegó el plugin allí | Cómo lo activa o desactiva |

56| :--------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

57| `@<marketplace>` | Lo instaló desde un mercado que agregó | `"<name>@<marketplace>": true` o `false` bajo `enabledPlugins` en un archivo de configuración |

58| `@inline` | Inició Claude Code con `--plugin-dir` o `--plugin-url`, estableció [`CLAUDE_CODE_PLUGIN_DIRS`](/docs/es/env-vars#variables), o una aplicación del SDK de Agent pasó la opción `plugins`. Se carga solo para esa sesión | Activado para la sesión a menos que el manifiesto establezca `defaultEnabled: false` o un archivo de configuración establezca `"<name>@inline": false` |

59| `@skills-dir` | Guardó un directorio de plugin que tiene un `.claude-plugin/plugin.json` bajo `~/.claude/skills/` o el `.claude/skills/` del proyecto | El `defaultEnabled` del manifiesto, a menos que un archivo de configuración establezca `"<name>@skills-dir"` en `true` o `false` |

60| `@synced` | Usted u su organización lo activaron para su cuenta claude.ai, y Claude Code lo [descargó](#synced-plugins) | Activado a menos que el manifiesto establezca `defaultEnabled: false` o un archivo de configuración establezca `"<name>@synced": false`. Un plugin que su organización marca como requerido se carga independientemente |

61 

62Para un plugin de mercado, `<name>` es el nombre de entrada en `marketplace.json`; para `@inline` y `@skills-dir` es el `name` en el manifiesto del plugin.

63 

64Los nombres de origen en esta tabla están reservados, por lo que ningún mercado puede llamarse `inline`, `skills-dir`, o `synced`.

65 

66<h3 id="entry-name-and-manifest-name">

67 Nombre de entrada y nombre de manifiesto

68</h3>

69 

70Un plugin de mercado tiene dos nombres, y pueden diferir:

71 

72* **El nombre de entrada en `marketplace.json`**: la clave de instalación y habilitación. Es lo que escribe en `enabledPlugins`, lo que el directorio de caché se nombra después, y lo que `claude plugin list` muestra

73* **El `name` en el manifiesto**: bajo lo que se espacian los componentes del plugin, y lo que [conflictos de nombres](#name-conflicts) comparan

74 

75<h3 id="plugins-shared-through-a-repository">

76 Plugins compartidos a través de un repositorio

77</h3>

78 

79Para compartir un plugin a través de un repositorio, enumérelo bajo `enabledPlugins` en `.claude/settings.json` o colóquelo bajo `.claude/skills/`. Claude Code no escanea el directorio `.claude/plugins/` de un proyecto.

80 

81Una sesión en la nube no agrega los mercados que un repositorio enumera bajo [`extraKnownMarketplaces`](/docs/es/settings-reference#extraknownmarketplaces), porque eso requiere el diálogo de confianza del espacio de trabajo, que una sesión en la nube nunca muestra.

82 

83Un plugin de directorio de habilidades de ámbito de proyecto se carga solo desde el `.claude/skills/` del [directorio de trabajo principal](/docs/es/permissions#working-directories) de la sesión, y solo después de que acepte el [diálogo de confianza del espacio de trabajo](/docs/es/permissions#what-runs-before-you-trust-a-folder) para esa carpeta. No [busca directorios principales hasta la raíz del repositorio](/docs/es/skills#discovery-from-parent-and-nested-directories) de la manera que lo hacen las habilidades y comandos simples. Si inicia desde un subdirectorio, un plugin en la raíz del repositorio no se carga. Inicie desde la raíz del repositorio en su lugar, o [mueva la sesión allí con `/cd`](/docs/es/permissions#move-the-session-to-another-directory) en v2.1.246 o posterior.

84 

85Un plugin de ámbito de proyecto se verifica en el repositorio y llega a cada colaborador que lo clona. Debido a que ese contenido proviene del repositorio en lugar de usted, se carga solo después de la misma verificación de confianza que se aplica a las reglas de permiso del proyecto en `.claude/settings.json`. Confiar en una carpeta principal o ejecutar con `-p` no es suficiente. Los componentes que ejecutan código están restringidos aún más:

86 

87* Los servidores MCP que declara pasan por la [misma aprobación por servidor](/docs/es/mcp) que un `.mcp.json` del proyecto

88* Los servidores MCP que declara como un [paquete MCP](/docs/es/plugins/manifest-reference#mcpservers), un archivo `.mcpb` o `.dxt`, o desde un archivo fuera del directorio del plugin se omiten. Declárelos en línea o en un `.mcp.json` dentro del directorio del plugin

89* [Los monitores en segundo plano](/docs/es/plugins/components#monitors) no se cargan

90 

91Los plugins de ámbito personal no tienen ninguna de estas restricciones.

92 

93Para saber cómo escribir plugins `--plugin-dir` y de directorio de habilidades, consulte [Crear plugins](/docs/es/plugins/create).

94 

95<h3 id="synced-plugins">

96 Plugins sincronizados desde claude.ai

97</h3>

98 

99Un plugin que activa para su cuenta claude.ai también se carga en Claude Code, junto con los plugins que instala desde mercados. Esto incluye plugins que su organización activa para sus miembros. Cada uno de estos plugins se carga como `<name>@synced`, sin mercado y sin [registro de instalación](#check-which-stage-a-plugin-reached).

100 

101En sesiones de terminal, las habilidades, agentes, hooks, servidores MCP y servidores LSP de un plugin sincronizado se cargan todos, con la misma confianza que un plugin de mercado que instaló.

102 

103Para los componentes que carga Cowork, consulte [Plugins en claude.ai y en Cowork](https://claude.com/docs/plugins/overview) en claude.com.

104 

105Los plugins sincronizados se cargan en sesiones de Cowork y en sesiones de terminal donde inicia sesión con su cuenta claude.ai:

106 

107* **[Cowork](https://claude.com/product/cowork)**: Claude Code los descarga en el entorno propio de la sesión cuando comienza la sesión

108* **Sesiones de terminal**: cada vez que inicia Claude Code, se sincroniza una vez en segundo plano, descargando plugins nuevos y actualizados y eliminando los que usted u su organización desactivaron. La sincronización en sesiones de terminal requiere Claude Code v2.1.273 o posterior

109 

110<h4 id="sync-timing-in-terminal-sessions">

111 Tiempo de sincronización en sesiones de terminal

112</h4>

113 

114Debido a que la sincronización de terminal se ejecuta en segundo plano, puede terminar después de que su sesión haya comenzado. Cuando agrega, actualiza o elimina un plugin sincronizado en una sesión interactiva, ve `Plugins changed. Run /reload-plugins to activate.` Ejecute `/reload-plugins` para cargar el cambio en esa sesión, o déjelo para la próxima vez que inicie Claude Code.

115 

116Si habilita un plugin en claude.ai mientras se ejecuta una sesión, el plugin se descarga la próxima vez que inicie Claude Code.

117 

118<h4 id="sign-in-requirements-for-terminal-sync">

119 Requisitos de inicio de sesión para sincronización de terminal

120</h4>

121 

122En su terminal, los plugins se sincronizan solo en sesiones donde inicia sesión con su cuenta claude.ai.

123 

124Si inició sesión en una versión anterior de Claude Code, ese inicio de sesión no cubre plugins hasta que Claude Code lo renueve en segundo plano. Para obtener acceso más rápido, ejecute `/login` nuevamente. La sincronización de plugins comienza la próxima vez que inicia Claude Code.

125 

126<h4 id="control-which-synced-plugins-load">

127 Controlar qué plugins sincronizados se cargan

128</h4>

129 

130Puede desactivar plugins sincronizados uno a la vez, excepto un plugin que su organización requiere, o desactivar todos los plugins sincronizados en la máquina:

131 

132* **Un plugin**: `claude plugin disable <name>@synced` en su shell y la pestaña **Installed** de `/plugin` en una sesión guardan `"<name>@synced": false` en su [`enabledPlugins`](/docs/es/settings-reference#enabledplugins) de nivel de usuario. Para mantener el plugin fuera de un proyecto en cada entorno, establezca la misma clave en el `.claude/settings.json` comprometido del proyecto

133* **Todos los plugins sincronizados en una máquina**: establezca [`syncClaudeAiPlugins`](/docs/es/settings-reference#syncclaudeaiplugins) en `false` en su configuración de usuario, o su organización lo establece en [configuración administrada](/docs/es/managed-settings). Claude Code deja de descargar, y la próxima vez que lo inicie, mueve los plugins que ya sincronizó a `~/.claude/plugins/.trash/` y ya no los carga. Si su organización desactiva Skills en claude.ai, los plugins dejan de sincronizarse también

134* **Un plugin que su organización requiere**: un plugin que su organización marca como requerido en claude.ai se carga incluso si lo desactivó anteriormente. `claude plugin disable` lo rechaza con `Plugin "<name>@synced" is required by your organization and can't be disabled here. Contact your admin to change it.`, y `claude plugin list` lo marca como `required by your org`

135 

136Para eliminar un plugin en claude.ai, consulte [Administrar plugins instalados](/docs/es/plugins/install#manage-installed-plugins).

137 

138<h2 id="find-where-a-plugin-is-enabled">

139 Encontrar dónde está habilitado un plugin

140</h2>

141 

142Puede establecer una entrada `enabledPlugins` en cualquiera de seis fuentes. La tabla las enumera de menor a mayor precedencia, y a quién se aplica cada una. Para los archivos de configuración en sí, consulte [Archivos de configuración y a quién afectan](/docs/es/settings#where-settings-live).

143 

144| Fuente | Dónde lo establece | Alcanza |

145| :---------- | :------------------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------- |

146| `--add-dir` | `.claude/settings.json` o `.claude/settings.local.json` en un directorio que pasa con `--add-dir` | Solo esta sesión. Solo un valor `true` tiene efecto, y todas las otras fuentes lo anulan |

147| `user` | `~/.claude/settings.json` | Usted, en cada proyecto |

148| `project` | `.claude/settings.json` | Todos los que clonan el repositorio |

149| `local` | `.claude/settings.local.json` | Usted, solo en este repositorio |

150| `flag` | El valor `--settings` que pasa al iniciar | Solo esta sesión |

151| `managed` | [Configuración administrada](/docs/es/managed-settings) | Cada usuario que cubre la política. `true` fuerza la habilitación y `false` bloquea, y ninguna otra fuente los anula |

152 

153Estas fuentes se fusionan clave por clave. Para cada id de plugin, el valor que se aplica es el de la fuente de mayor precedencia que menciona el id. Una fuente que no menciona el id deja el valor de la fuente de menor precedencia en vigor.

154 

155<h3 id="disabled-in-user-settings-but-still-loads">

156 Deshabilitado en configuración de usuario pero aún se carga

157</h3>

158 

159Si establece un plugin en `false` en `~/.claude/settings.json` y aún se carga, un `true` en una fuente de mayor precedencia lo está anulando. La fila del plugin en `claude plugin list` y en `/plugin` muestra `Disabled in ~/.claude/settings.json but still loads — project settings enable it, which overrides your user setting`. El mensaje nombra la fuente que lo anuló: `project`, `project, gitignored` para `.claude/settings.local.json`, `cli flag`, o `managed`.

160 

161Para optar por no participar en un plugin habilitado por proyecto en su máquina, establezca el id en `false` en `.claude/settings.local.json`, que tiene mayor precedencia que el archivo del proyecto.

162 

163<h3 id="enabled-in-project-settings-but-not-installed">

164 Habilitado en configuración del proyecto pero no instalado

165</h3>

166 

167Cuando el único `true` de un plugin está en el `.claude/settings.json` del proyecto, Claude Code no lo obtiene en una máquina donde no está instalado, a menos que su entrada de mercado tenga una [fuente de ruta relativa](/docs/es/plugins/marketplace-reference#plugin-sources) o un [directorio semilla](/docs/es/plugins/org#seed-containers-and-ci) ya lo contenga. En su lugar, la pestaña **Errors** de `/plugin` muestra `Plugin "<name>" is enabled in project settings but isn't installed here`.

168 

169Un plugin de ruta relativa no necesita un registro de instalación porque se carga desde el mercado en sí.

170 

171Claude Code obtiene un plugin con una fuente externa solo cuando una de estas fuentes lo establece en `true`:

172 

173* Su configuración de usuario

174* Un `.claude/settings.local.json` que git no rastrea

175* La bandera `--settings`

176* Configuración administrada

177 

178<h2 id="find-plugins-on-disk">

179 Encontrar plugins en disco

180</h2>

181 

182Claude Code mantiene archivos de plugin y registros de estado bajo una raíz de plugins, que es `~/.claude/plugins` a menos que establezca [`CLAUDE_CODE_PLUGIN_CACHE_DIR`](/docs/es/env-vars). Cada ruta en la tabla es relativa a esa raíz.

183 

184| Ruta | Lo que contiene |

185| :--------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

186| `cache/<marketplace>/<plugin>/<version>/` | Un directorio por versión instalada de un plugin de mercado. `<plugin>` es el nombre de entrada del mercado y `<version>` es la [versión resuelta](#versions-and-updates). `${CLAUDE_PLUGIN_ROOT}` apunta a este directorio |

187| `data/<plugin-id>/` | El directorio persistente del plugin, expuesto como `${CLAUDE_PLUGIN_DATA}`. Para saber cómo se forma `<plugin-id>`, consulte [Variables de ruta y datos persistentes](/docs/es/plugins/components#path-variables-and-persistent-data). Claude Code lo crea cuando un componente del plugin lo usa por primera vez y lo mantiene en las actualizaciones. Claude Code lo elimina cuando desinstala el plugin de su último ámbito, a menos que pase `--keep-data` |

188| `marketplaces/<name>/` | El clon o descarga de un mercado agregado desde GitHub, otro host de Git, o una URL. Un mercado agregado desde una fuente `file` o `directory` local no tiene copia aquí, y su `installLocation` en `known_marketplaces.json` es la ruta que proporcionó |

189| `synced/` | Los plugins que Claude Code [sincronizó desde su cuenta claude.ai](#synced-plugins) |

190| `.trash/` | Plugins que la sincronización de claude.ai eliminó, como después de desactivar uno en claude.ai o dejar de sincronizar |

191| `installed_plugins.json` y `known_marketplaces.json` | Los registros de lo que Claude Code ha instalado y qué mercados ha obtenido, descritos bajo [Verificar en qué etapa llegó un plugin](#check-which-stage-a-plugin-reached). Un [mercado alojado en claude.ai](/docs/es/plugins/install#add-from-claude-ai) se registra en `known_marketplaces_claudeai.json` en su lugar |

192| `flagged-plugins.json` | Plugins que Claude Code desinstaló porque su mercado los eliminó de la lista. Aparecen en la sección **Flagged** de `/plugin`; consulte [Alojar un mercado](/docs/es/plugins/host-marketplace) |

193 

194Debido a que `${CLAUDE_PLUGIN_ROOT}` apunta a un directorio de versión, la ruta raíz de un plugin cambia con cada versión. Mantenga los archivos duraderos de un plugin en `${CLAUDE_PLUGIN_DATA}` en su lugar.

195 

196<h3 id="in-place-and-copied-plugins">

197 Plugins en lugar y copiados

198</h3>

199 

200Claude Code carga algunos plugins en lugar desde donde los mantiene y copia el resto en la caché, según su origen:

201 

202* **Plugins `--plugin-dir` y de directorio de habilidades**: el directorio se carga en lugar y nunca se copia. Un archivo `.zip` de `--plugin-url` o `--plugin-dir` se extrae en un directorio temporal de sesión primero

203* **Plugins de ruta relativa en un mercado que agregó desde un directorio local**: el plugin se carga en lugar desde su ruta dentro de la carpeta del mercado. Sus ediciones al directorio de origen surten efecto en el próximo inicio de sesión o `/reload-plugins`, y no necesita aumentar la versión. Los procesos de hook del plugin y los servidores MCP y LSP reciben un `CLAUDE_PLUGIN_ROOT` que apunta al directorio de origen. Para sus dependencias de paquete Node.js, consulte [Cuándo se ejecuta la instalación de dependencias](#when-the-dependency-install-runs)

204* **Plugins de fuente `command` en [modo de enlace](/docs/es/plugins/marketplace-reference#command-plugin-source)**: el directorio que imprimió el comando se carga en lugar, a través de enlaces en la entrada de caché

205* **Todos los demás plugins de mercado**: Claude Code copia el plugin en `cache/<marketplace>/<plugin>/<version>/` en la instalación y carga esa copia. Los archivos fuera del directorio del plugin no se copian, por lo que cuando un script dentro de un plugin copiado lee una ruta por encima de la raíz del plugin, como `../shared`, no los encuentra

206 

207<h3 id="paths-that-escape-the-plugin-directory">

208 Rutas que escapan del directorio del plugin

209</h3>

210 

211Ya sea que un plugin se cargue en lugar o desde una copia en caché, Claude Code no le permite declarar componentes fuera de su propio directorio. Rechaza una ruta de componente que se resuelve fuera de la raíz del plugin, ya sea que la ruta se declare en `plugin.json` o en una entrada de mercado:

212 

213* **Una ruta que apunta fuera del plugin como está escrita**, como `../shared-utils`

214* **Un enlace simbólico que conduce fuera del plugin**, que no sean [enlaces entre plugins dentro de un mercado](/docs/es/plugins/host-marketplace#share-files-within-a-marketplace-with-symlinks)

215* **En macOS y Linux, una ruta que contiene una barra invertida en cualquier lugar**, incluso cuando la ruta permanece dentro del plugin. Los componentes declarados con rutas de barra invertida se cargan solo en Windows, por lo que escriba rutas de componentes con barras diagonales, como `./commands/deploy.md`

216 

217Una ruta rechazada aparece como un error [`path escapes plugin directory`](/docs/es/errors#path-escapes-plugin-directory), y el plugin se carga sin ese componente.

218 

219<h3 id="cleanup-of-previous-versions">

220 Limpieza de versiones anteriores

221</h3>

222 

223Cuando actualiza o desinstala un plugin, Claude Code escribe un marcador `.orphaned_at` en el directorio de versión anterior. Elimina ese directorio en una limpieza en segundo plano 14 días después, por lo que una sesión que ya cargó la versión anterior sigue ejecutándose.

224 

225El barrido se ejecuta solo mientras `installed_plugins.json` registra al menos una instalación. Después de desinstalar su último plugin, los directorios huérfanos permanecen hasta que instale otro.

226 

227<h3 id="node-js-package-dependencies">

228 Dependencias de paquete Node.js

229</h3>

230 

231Cuando Claude Code copia un plugin en la caché, también instala las dependencias de paquete Node.js del plugin allí, por lo que los hooks y servidores MCP del plugin pueden cargarlas.

232 

233Esta sección cubre los paquetes npm y Bun que un plugin declara en su propio `package.json`. Para plugins que dependen de otros plugins, consulte [versiones de dependencia de plugin](/docs/es/plugins/dependencies).

234 

235<h4 id="when-the-dependency-install-runs">

236 Cuándo se ejecuta la instalación de dependencias

237</h4>

238 

239Claude Code ejecuta la instalación dentro del directorio de versión copiada cada vez que crea uno:

240 

241* Cuando instala un plugin

242* Cuando Claude Code actualiza un plugin a una nueva versión

243* Al inicio de la sesión cuando un plugin habilitado aún no está en caché, como en una máquina nueva

244 

245Para un plugin de ruta relativa [cargado en lugar](#in-place-and-copied-plugins) desde un mercado de directorio local, Claude Code no instala las dependencias en el directorio de origen. Instálelas allí usted mismo, o desde un hook en [`${CLAUDE_PLUGIN_DATA}`](/docs/es/plugins/components#path-variables-and-persistent-data).

246 

247La instalación se ejecuta solo cuando el directorio raíz del plugin contiene tanto un `package.json` como un archivo de bloqueo compatible. El archivo de bloqueo decide qué comando ejecuta Claude Code:

248 

249| Archivo de bloqueo | Comando |

250| :------------------------------------------ | :----------------------------------------------- |

251| `bun.lock` o `bun.lockb` | `bun install --frozen-lockfile --ignore-scripts` |

252| `npm-shrinkwrap.json` o `package-lock.json` | `npm ci --ignore-scripts` |

253 

254Si un plugin contiene más de uno de estos archivos de bloqueo, Claude Code usa la primera coincidencia, verificando en orden: `bun.lock`, `bun.lockb`, `npm-shrinkwrap.json`, `package-lock.json`.

255 

256Claude Code omite la instalación para archivos de bloqueo de Yarn y pnpm y para un `bunfig.toml` junto al archivo de bloqueo de Bun:

257 

258* Si su plugin tiene solo un `yarn.lock` o `pnpm-lock.yaml`, reemplácelo con un archivo de bloqueo npm

259* Si un `bunfig.toml` está en el mismo directorio que el archivo de bloqueo de Bun, elimine el `bunfig.toml`, o reemplace el archivo de bloqueo de Bun con un archivo de bloqueo npm

260 

261Incluya un archivo de bloqueo npm para llegar a la mayoría de los usuarios. Claude Code ejecuta el administrador de paquetes del archivo de bloqueo coincidente desde el PATH del usuario y no intenta el otro archivo de bloqueo en su lugar si falta ese administrador de paquetes.

262 

263Para un plugin distribuido a través de una fuente npm, use `npm-shrinkwrap.json`, porque npm excluye `package-lock.json` de los paquetes publicados.

264 

265<h4 id="limits-on-the-dependency-install">

266 Límites en la instalación de dependencias

267</h4>

268 

269Claude Code limita esta instalación de dependencias para que ningún código del plugin o sus paquetes se ejecute durante ella, y limita cuánto tiempo puede ejecutarse:

270 

271* **Resolución congelada**: Bun y npm instalan exactamente lo que el archivo de bloqueo fija, y fallan en lugar de re-resolver versiones cuando `package.json` y el archivo de bloqueo no coinciden

272* **Sin scripts de ciclo de vida**: `--ignore-scripts` evita que se ejecuten scripts `preinstall`, `install` y `postinstall`, por lo que las dependencias que construyen módulos nativos en esos scripts se descargan pero no se compilan durante esta instalación

273* **Tiempo de espera de 60 segundos**: Claude Code detiene una instalación que se ejecuta más tiempo y la trata como fallida

274 

275Claude Code obtiene un plugin de fuente npm antes de esta instalación de dependencias, y ninguno de los scripts de instalación propios del paquete se ejecuta durante la obtención. Consulte [fuente de plugin npm](/docs/es/plugins/marketplace-reference#npm-plugin-source).

276 

277No puede desactivar la instalación automática. Ninguna configuración o variable de entorno la desactiva.

278 

279En redes restringidas, consulte los [requisitos de acceso a la red](/docs/es/network-config#network-access-requirements) para los hosts a permitir.

280 

281<h4 id="when-the-dependency-install-fails-or-is-skipped">

282 Cuándo falla o se omite la instalación de dependencias

283</h4>

284 

285Una instalación fallida u omitida nunca bloquea el plugin, y cada caso deja un signo diferente:

286 

287* Una instalación fallida, u omitida debido a un archivo de bloqueo de Yarn o pnpm o un `bunfig.toml`, aparece como una advertencia en la salida `claude --debug`

288* Un plugin con un `package.json` y sin archivo de bloqueo se omite sin una entrada de registro

289* Una instalación que agota el tiempo de espera puede dejar un árbol `node_modules` parcial en la copia en caché

290 

291Cuando la instalación automática no puede proporcionar una dependencia, instálela desde un hook en el [directorio de datos persistentes](/docs/es/plugins/components#path-variables-and-persistent-data). Eso incluye paquetes que necesitan sus scripts de ciclo de vida para construir, dependencias de Python, y plugins bloqueados con Yarn o pnpm.

292 

293<h2 id="versions-and-updates">

294 Versiones y actualizaciones

295</h2>

296 

297Si el autor de un plugin envió nuevas confirmaciones y `claude plugin update` imprime `<name> is already at the latest version (<version>).`, la versión que Claude Code calcula para el plugin no cambia, por lo que nada cambia en disco.

298 

299Claude Code calcula una versión para cada plugin que instala, y esa versión es cómo detecta una actualización. `claude plugin update` y la actualización automática en segundo plano calculan la versión nuevamente y omiten el plugin cuando coincide con lo que `installed_plugins.json` registra.

300 

301La versión también nombra el directorio de caché del plugin.

302 

303Un manifiesto que fija `"version"` es una forma en que la versión calculada permanece igual en las confirmaciones. Consulte [Cómo Claude Code calcula la versión](#how-claude-code-computes-the-version) para el orden de resolución.

304 

305Un plugin [cargado en lugar](#in-place-and-copied-plugins) desde un mercado de directorio local carga sus archivos de origen actuales en cada inicio de sesión, sin importar lo que diga su cadena de versión. Para un plugin de un [mercado alojado en claude.ai](/docs/es/plugins/install#add-from-claude-ai), la versión que claude.ai registra para el plugin es su versión, y el `version` del manifiesto no se lee.

306 

307<h3 id="how-claude-code-computes-the-version">

308 Cómo Claude Code calcula la versión

309</h3>

310 

311Para un mercado que agregó por fuente, Claude Code elige la regla por el tipo `source` de la entrada del mercado del plugin. La [referencia de mercado](/docs/es/plugins/marketplace-reference#plugin-sources) enumera los tipos de fuente. Para cada tipo de fuente en esa lista excepto `command`:

312 

3131. El campo `version` en el manifiesto del plugin viene primero

3142. Luego el campo `version` en la entrada del mercado del plugin

3153. Cuando ninguno está establecido, la versión viene del tipo de fuente:

316 

317| Tipo de fuente | Versión cuando no se establece ningún campo `version` |

318| :--------------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------- |

319| `github`, `url`, o `git-subdir` | El SHA de confirmación de la fuente, acortado a 12 caracteres. Una versión `git-subdir` también lleva un hash de la ruta del subdirectorio |

320| `archive` | El resumen SHA-256, acortado a 12 caracteres: el pin `sha256` en la entrada del mercado, o el resumen del archivo descargado cuando no hay pin |

321| Ruta relativa dentro de un mercado alojado en Git | El SHA de confirmación del directorio instalado |

322| Directorio local, cuando ni el directorio del plugin ni su mercado es un repositorio git | `unknown` |

323| `npm` | `unknown` |

324 

325Claude Code no toma la versión de un repositorio que encierra la ruta de instalación, como un `~/.claude` administrado por git.

326 

327Para una fuente `command`, Claude Code siempre deriva la versión de lo que el comando produjo: un hash de 12 caracteres por sí solo, o `<manifest version>-<hash>` cuando el manifiesto establece uno. El `version` de la entrada del mercado se ignora para fuentes de comando. Para lo que cubre el hash, consulte [Modo de copia y modo de enlace](/docs/es/plugins/marketplace-reference#copy-mode-and-link-mode).

328 

329Debido a que el manifiesto viene primero, un manifiesto que fija `"version": "1.0.0"` mantiene a cada usuario en la copia en caché hasta que su autor cambie la cadena, sin importar cuántas confirmaciones envíe. Para permitir que los usuarios rastreen confirmaciones en su lugar, deje `version` fuera del manifiesto y la entrada. [Alojar un mercado](/docs/es/plugins/host-marketplace) cubre qué opción se ajusta a qué configuración de lanzamiento.

330 

331<h3 id="when-claude-code-refreshes-a-marketplace-before-an-install">

332 Cuándo Claude Code actualiza un mercado antes de una instalación

333</h3>

334 

335Cuando instala un plugin, Claude Code lo busca en su copia local del catálogo del mercado. Puede ejecutar `/plugin install` en una sesión o `claude plugin install` en su shell, y nombrar el plugin con o sin su mercado. La tabla muestra cuál de esas combinaciones actualiza la copia local.

336 

337| Nombre del plugin | Comando | Lo que Claude Code actualiza |

338| :----------------- | :------------------------------------------ | :----------------------------------------------------------------------------------------------------- |

339| `name@marketplace` | `/plugin install` o `claude plugin install` | El mercado nombrado, antes de la búsqueda |

340| `name` solo | `/plugin install` | Solo mercados que tienen la actualización automática activada, y solo después de que la búsqueda falla |

341| `name` solo | `claude plugin install` | Nada. Lee los catálogos en caché sin actualizar |

342 

343La actualización antes de una instalación `name@marketplace` no depende de la configuración de actualización automática del mercado o de `DISABLE_AUTOUPDATER`.

344 

345Cuando la actualización falla, la instalación procede desde el catálogo en caché y `claude plugin install` reporta `marketplace not refreshed`.

346 

347Claude Code omite la actualización antes de una instalación `name@marketplace` cuando:

348 

349* El mercado se agregó desde una fuente `file` o `directory` local, o se define en línea en configuración con una [fuente `settings`](/docs/es/settings-reference#extraknownmarketplaces)

350* Un [directorio semilla](/docs/es/env-vars) proporciona el mercado

351* Claude Code actualizó el mercado en los últimos 30 segundos

352* Establece `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`

353* [Configuración administrada](/docs/es/plugins/org#restrict-what-users-can-install) bloquea el mercado, en cuyo caso Claude Code también rechaza la instalación

354 

355<h3 id="when-auto-update-runs">

356 Cuándo se ejecuta la actualización automática

357</h3>

358 

359En una sesión interactiva, después de enviar su primer mensaje, Claude Code espera un retraso aleatorio de hasta diez minutos. Luego actualiza cada mercado con actualización automática activada y actualiza los plugins instalados desde ellos en disco.

360 

361La sesión en ejecución mantiene las versiones que cargó, y ve `Plugin updated: <name> · Run /reload-plugins to apply`. Ya sea que recargue o no, las nuevas versiones se cargan en su próximo lanzamiento.

362 

363<h4 id="which-marketplaces-and-plugins-auto-update">

364 Qué mercados y plugins se actualizan automáticamente

365</h4>

366 

367Si un mercado se actualiza automáticamente sigue el primero de estos que está establecido:

368 

3691. **`autoUpdate` en su entrada `extraKnownMarketplaces`** en un archivo de configuración

3702. **`autoUpdate` en su entrada `known_marketplaces.json`**, que el interruptor **Enable auto-update** bajo `/plugin` **Marketplaces** escribe. Cuando un archivo de configuración también declara el mercado bajo `extraKnownMarketplaces`, el interruptor escribe `autoUpdate` a esa entrada de configuración también

3713. **El predeterminado**: activado para los mercados oficiales de Anthropic como `claude-plugins-official`, desactivado para `knowledge-work-plugins` y `first-party-plugins`, activado para [mercados agregados desde claude.ai](/docs/es/plugins/install#add-from-claude-ai), y desactivado para todos los demás mercados

372 

373Si establece `DISABLE_UPDATES=1`, `DISABLE_AUTOUPDATER=1`, o `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1`, toda la pasada está desactivada y el interruptor **Enable auto-update** está oculto, a menos que también establezca `FORCE_AUTOUPDATE_PLUGINS=1`. La [referencia de variables de entorno](/docs/es/env-vars) cubre el efecto más amplio de cada variable.

374 

375La actualización automática también omite un plugin cuya entrada de mercado declara un `headersHelper`. [Instalaciones y actualizaciones que rechazan un comando en lugar de preguntar](/docs/es/plugins/host-marketplace#installs-and-updates-that-refuse-the-command-instead-of-asking) explica cuándo aparece tal plugin en la pestaña **Errors** de `/plugin` y cómo lo actualiza desde allí.

376 

377Cuando un plugin copiado se actualiza a mitad de sesión, los comandos de hook, monitores, servidores MCP y servidores LSP siguen usando la ruta de la versión anterior. Ejecute `/reload-plugins` para cambiar hooks, servidores MCP y servidores LSP a la nueva ruta. Los monitores requieren un reinicio de sesión.

378 

379<h3 id="when-a-command-source-re-runs">

380 Cuándo se vuelve a ejecutar una fuente de comando

381</h3>

382 

383Los plugins con una fuente `command` no esperan la [pasada de actualización automática](#when-auto-update-runs). El directorio impreso refleja el estado de la herramienta en el momento en que se ejecutó el comando, por lo que Claude Code ejecuta el [comando que aceptó](/docs/es/plugins/host-marketplace#change-the-command-of-a-command-source) nuevamente en estos momentos:

384 

385* Cada vez que instala o actualiza el plugin

386* Una vez por sesión para cada plugin habilitado de fuente de comando, en segundo plano, poco después de que comienza la sesión. Esta ejecución no depende de la configuración de actualización automática del mercado o de `DISABLE_AUTOUPDATER`

387* Al inicio o en `/reload-plugins`, cuando la versión instalada de un plugin habilitado falta en la caché del plugin

388 

389Claude Code omite las dos ejecuciones en segundo plano cuando establece [`CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`](/docs/es/env-vars). Las instalaciones y actualizaciones explícitas aún ejecutan el comando con esa variable establecida.

390 

391Cuando la salida con hash del comando ha cambiado, Claude Code instala el resultado como una nueva versión y lo recarga en la sesión interactiva en ejecución, cambiando [los mismos componentes que `/reload-plugins` cambia](/docs/es/plugins/cli-reference#reload-plugins). Ve una notificación de que el plugin fue recargado.

392 

393Si recargar en lugar invalidaría la caché de solicitud de la sesión, Claude Code en su lugar le solicita que ejecute `/reload-plugins`, que [advierte sobre el costo de caché y se aplica cuando se vuelve a ejecutar con `--force`](/docs/es/prompt-caching#enabling-or-disabling-a-plugin).

394 

395<h2 id="name-conflicts">

396 Conflictos de nombres

397</h2>

398 

399Cuando los plugins habilitados de diferentes orígenes comparten un nombre de manifiesto, este orden decide cuál se carga, de mayor a menor precedencia:

400 

4011. Un plugin cuyo id aparece en `enabledPlugins` de configuración administrada, como `true` o `false`. Una copia `--plugin-dir` cuyo nombre de manifiesto coincide con la parte del nombre del id no se carga, y ve `--plugin-dir copy of "<name>" ignored: plugin is locked by managed settings`

4022. Un plugin `--plugin-dir`, `--plugin-url`, o `CLAUDE_CODE_PLUGIN_DIRS` habilitado. Reemplaza un plugin de mercado instalado o de directorio de habilidades con el mismo nombre:

403 * **Un plugin de mercado instalado**: reemplazado silenciosamente. `claude plugin list` aún muestra la fila del mercado como habilitada, porque esa fila refleja su configuración. Solo el registro que Claude Code escribe bajo `~/.claude/debug/` cuando inicia con `--debug` registra `Plugin "<name>" from --plugin-dir overrides installed version`

404 * **Un plugin de directorio de habilidades**: reemplazado con una fila de pestaña **Errors** de `/plugin` que lee `Not loaded — the name "<name>" is already taken by a session-only plugin (--plugin-dir / --plugin-url), which takes precedence`

4053. Un plugin de mercado instalado. Un plugin de directorio de habilidades con el mismo nombre obtiene la misma fila `Not loaded`, nombrando el plugin instalado

4064. Un plugin de directorio de habilidades. Entre dos de estos, la copia bajo `~/.claude/skills/` se carga y la copia de `.claude/skills/` del proyecto se descarta, con una fila que dice qué ruta la eclipsó

4075. Un plugin [sincronizado desde claude.ai](#synced-plugins). Cuando un plugin habilitado de cualquier otro origen coincide con su nombre, Claude Code carga ese plugin e informa que la copia de claude.ai no se cargó. Para usar la copia de claude.ai en su lugar, desactive su propia copia

408 

409Debido a que el orden compara nombres de manifiesto, un plugin `--plugin-dir` llamado `hello-plugin` reemplaza `hello@example-marketplace` cuando el manifiesto de ese plugin también dice `"name": "hello-plugin"`.

410 

411<h3 id="keep-a-session-only-plugin-from-loading">

412 Evitar que un plugin de solo sesión se cargue

413</h3>

414 

415Para evitar que un plugin `--plugin-dir` eclipse algo, o para desactivarlo cuando un proceso principal pasa la bandera para usted, establezca su id en `false` en cualquier archivo de configuración. Para un plugin cuyo nombre de manifiesto es `hello-plugin`, la entrada es `"enabledPlugins": {"hello-plugin@inline": false}`. Un plugin de solo sesión deshabilitado no eclipsa, por lo que la copia de mercado o directorio de habilidades se carga en su lugar.

416 

417<h2 id="next-steps">

418 Próximos pasos

419</h2>

420 

421* [Instalar y administrar plugins](/docs/es/plugins/install): los pasos de instalación, habilitación, deshabilitación y actualización en sí

422* [Solucionar problemas de plugins](/docs/es/plugins/troubleshooting): mensajes de error por la etapa que los produce

423* [Referencia de comandos de plugins](/docs/es/plugins/cli-reference): las banderas y comandos nombrados en esta página

424* [Administrar plugins para su organización](/docs/es/plugins/org): la configuración administrada que fuerza la habilitación o bloquea plugins

plugins/manifest-reference.md +710 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Referencia del manifiesto de plugins

6 

7> Referencia completa de plugin.json: cada campo con su tipo y valor predeterminado, formas de ruta aceptadas, y los esquemas de userConfig y variables de entorno.

8 

9Un manifiesto de plugin es el archivo `plugin.json` en el directorio `.claude-plugin/` de un plugin. Contiene los metadatos del plugin y los valores de [`userConfig`](#user-configuration) que Claude Code solicita al usuario. También declara cualquier componente que defina en línea o que mantenga fuera de su [ubicación predeterminada](#standard-layout).

10 

11Esta referencia es para creadores de plugins y para propietarios de mercados que colocan campos de componentes en una entrada del mercado.

12 

13<Note>

14 Estos casos se tratan en otras páginas:

15 

16 * **Aprender a crear un plugin**: comience con [Crear un plugin](/docs/es/plugins/create)

17 * **Qué hace cada componente en tiempo de ejecución**: consulte [Componentes de plugins](/docs/es/plugins/components)

18</Note>

19 

20Comience en la sección que coincida con lo que está buscando:

21 

22* Un campo: la [tabla de campos](#fields) proporciona el tipo de cada campo, si es obligatorio, su valor predeterminado y qué acepta. [Reglas de ruta](#path-rules) cubre el prefijo `./` y la contención para cada ruta de componente

23* Una opción `userConfig` o una entrada `channels`: los esquemas de [Configuración del usuario](#user-configuration) y [Canales](#channels)

24* `${CLAUDE_PLUGIN_ROOT}` u otra variable que un plugin pueda referenciar: [Variables de entorno](#environment-variables)

25* Dónde van los archivos de cada componente: [Diseño estándar](#standard-layout)

26* Un mensaje de `claude plugin validate`: la [página de solución de problemas](/docs/es/plugins/troubleshooting) enumera cada mensaje con su solución y enlaces a las secciones relevantes en esta página

27 

28<h2 id="manifest-file">

29 Archivo de manifiesto

30</h2>

31 

32El manifiesto es opcional. Sin él, Claude Code carga los componentes que encuentra en el [diseño estándar](#standard-layout). El nombre del plugin proviene de la entrada del mercado o del nombre del directorio cuando carga el plugin con `--plugin-dir`.

33 

34Escriba un manifiesto cuando desee metadatos, un componente fuera de su directorio predeterminado, `userConfig`, o una definición de componente en línea.

35 

36Guarde el manifiesto en `.claude-plugin/plugin.json` bajo la raíz del plugin. Coloque todos los demás archivos del plugin en la raíz del plugin, no dentro de `.claude-plugin/`. Esto incluye `skills/`, `commands/` y `hooks/`.

37 

38El siguiente ejemplo establece la mayoría de las claves en la [tabla de campos](#fields). Pasa la validación en un directorio de plugin que contiene cada ruta referenciada.

39 

40```json theme={null}

41{

42 "name": "deploy-tools",

43 "displayName": "Deploy Tools",

44 "version": "1.2.0",

45 "description": "Deployment commands, a review agent, and a status monitor",

46 "author": {

47 "name": "Example Team",

48 "email": "dev@example.com",

49 "url": "https://example.com"

50 },

51 "homepage": "https://example.com/docs/deploy-tools",

52 "repository": "https://github.com/example/deploy-tools",

53 "license": "MIT",

54 "keywords": ["deployment", "ci"],

55 "defaultEnabled": true,

56 "dependencies": ["secrets-vault"],

57 "metadata": { "catalogId": "cat-123" },

58 "skills": ["./extra-skills/"],

59 "commands": {

60 "status": {

61 "source": "./commands/status.md",

62 "description": "Show the current deployment status"

63 },

64 "about": {

65 "content": "Explain what the deploy-tools plugin provides.",

66 "description": "Describe this plugin"

67 }

68 },

69 "agents": ["./agents/reviewer.md"],

70 "hooks": "./config/extra-hooks.json",

71 "mcpServers": {

72 "deploy-api": {

73 "command": "node",

74 "args": ["${CLAUDE_PLUGIN_ROOT}/server.js"]

75 }

76 },

77 "lspServers": "./.lsp.json",

78 "outputStyles": "./styles/",

79 "experimental": {

80 "themes": "./themes/",

81 "monitors": "./config/monitors.json"

82 },

83 "userConfig": {

84 "api_token": {

85 "type": "string",

86 "title": "API token",

87 "description": "Token for the deployment API",

88 "sensitive": true

89 }

90 }

91}

92```

93 

94<h3 id="unrecognized-fields">

95 Campos no reconocidos

96</h3>

97 

98Una clave de nivel superior no reconocida se elimina, y una clave no reconocida dentro de una opción `userConfig`, entrada `channels`, configuración `lspServers` o entrada `monitors` se rechaza:

99 

100* **Campos de nivel superior**: el campo se elimina y el plugin se carga. `claude plugin validate` reporta cada campo de nivel superior no reconocido como una advertencia

101* **Objetos estrictos**: las opciones `userConfig`, entradas `channels`, configuraciones `lspServers` y entradas `monitors` son estrictas. Una clave desconocida dentro de una es un error, y el plugin no se carga

102 

103<h3 id="validate-the-manifest">

104 Validar el manifiesto

105</h3>

106 

107`claude plugin validate` es la verificación autorizada para un manifiesto. Ejecútelo desde su shell contra el directorio del plugin:

108 

109```bash theme={null}

110claude plugin validate ./my-plugin

111```

112 

113El comando reporta uno de estos resultados:

114 

115* **`Validation passed`**: el manifiesto se carga

116* **`Validation passed with warnings`**: el manifiesto se carga, pero el validador encontró algo que corregir, como un campo de nivel superior desconocido que Claude Code elimina, un `name` que no está en kebab-case, o un `version`, `description` o `author` faltante. Pase `--strict` para convertir advertencias en fallos en CI

117* **`Validation failed`**: el manifiesto tiene una discrepancia de tipo, una ruta que falta o escapa de la raíz del plugin, o una clave desconocida dentro de una opción `userConfig`, entrada `channels`, configuración `lspServers` o entrada `monitors`. Claude Code reporta el mismo problema cuando carga el plugin

118 

119<h2 id="fields">

120 Campos

121</h2>

122 

123La tabla enumera las claves de nivel superior en `plugin.json`. `name` es la única clave obligatoria. Donde un nombre de campo es un enlace, la sección vinculada tiene sus reglas completas.

124 

125Para claves de componentes como `commands` y `hooks`, [Formas de ruta de componente](#component-path-forms) muestra cada forma aceptada con un ejemplo, y cada ruta sigue las [reglas de ruta](#path-rules) para el prefijo `./`, extensiones y contención.

126 

127| Campo | Tipo | Descripción |

128| :----------------------------------- | :------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

129| `$schema` | String | URL de JSON Schema para autocompletado del editor. Claude Code lo ignora en tiempo de carga |

130| [`name`](#name) | String | Identificador del plugin, obligatorio. Use kebab-case. Cada componente se espacía bajo él |

131| [`displayName`](#displayname) | String | Nombre mostrado en la UI en lugar de `name` |

132| [`version`](#version) | String | Cadena de versión. Configurarla mantiene a los usuarios en esa versión hasta que la cambie |

133| `description` | String | Explicación breve de lo que proporciona el plugin |

134| `author` | Object | `name`, que es obligatorio, más `email` y `url` opcionales |

135| `homepage` | String | URL de documentación. Debe analizarse como una URL, o el plugin no se carga |

136| `repository` | String | URL del repositorio de fuentes. No se valida |

137| `license` | String | Identificador SPDX como `MIT` o `Apache-2.0` |

138| `keywords` | Array of strings | Etiquetas de descubrimiento |

139| [`metadata`](#metadata) | Object | Objeto de forma libre para sus propios datos. Claude Code no lo lee |

140| [`defaultEnabled`](#defaultenabled) | Boolean | Si el plugin comienza habilitado cuando el usuario no lo ha configurado. Por defecto es `true` |

141| [`dependencies`](#dependencies) | Array of strings or objects | Plugins que deben estar habilitados para que este funcione |

142| [`settings`](#settings) | Object | Configuración que Claude Code aplica mientras el plugin está habilitado. Solo `agent` y `subagentStatusLine` tienen efecto |

143| [`userConfig`](#user-configuration) | Object | Valores que Claude Code solicita al usuario cuando el plugin está habilitado |

144| [`channels`](#channels) | Array of objects | Canales de mensajes que proporciona el plugin, cada uno vinculado a uno de sus servidores MCP |

145| `skills` | Path, or array of paths | Directorios para escanear en busca de skills, cada uno un directorio de carpetas `<name>/SKILL.md` o una carpeta que contenga `SKILL.md` directamente. `"."` nombra la raíz del plugin. Se suma al escaneo predeterminado `skills/` |

146| [`commands`](#commands) | Path, array of paths, or object | Archivos de comando `.md` planos, directorios de ellos, u un objeto mapa de nombre de comando a `source` o `content`. Reemplaza el escaneo predeterminado `commands/` |

147| `agents` | Path, or array of paths | Archivos de agente `.md`. Los directorios no se aceptan. Reemplaza el escaneo predeterminado `agents/` |

148| [`hooks`](#hooks) | Path, object, or array of either | Archivos hook `.json` o configuración de hook en línea. Se cargan junto con `hooks/hooks.json` |

149| [`mcpServers`](#mcpservers) | Path, object, or array of either | Archivos de configuración MCP `.json`, bundles `.mcpb` o `.dxt`, o configuraciones de servidor en línea con clave de nombre. Se cargan junto con `.mcp.json`; un nombre de servidor declarado después reemplaza uno anterior |

150| [`lspServers`](#lspservers) | Path, object, or array of either | Archivos de configuración LSP `.json` o configuraciones de servidor en línea con clave de nombre. Se cargan junto con `.lsp.json` |

151| `outputStyles` | Path, or array of paths | Archivos de estilo de salida o directorios. Reemplaza el escaneo predeterminado `output-styles/` |

152| `workflows` | Path, or array of paths | Archivos [Workflow](/docs/es/workflows#distribute-a-workflow-in-a-plugin) `.js` o directorios. Reemplaza el escaneo predeterminado `workflows/` |

153| `experimental` | Object | Contenedor para `themes`, `monitors` y `evals`, cuya forma de manifiesto aún puede cambiar |

154| `experimental.themes` | Path, or array of paths | Archivos de tema o directorios. Reemplaza el escaneo predeterminado `themes/`. Una clave `themes` de nivel superior aún se carga, con una advertencia `claude plugin validate` |

155| [`experimental.monitors`](#monitors) | Path, or inline array | Un archivo `.json` que contiene el array de monitores, o el array en sí. Por defecto es `monitors/monitors.json`. Una clave `monitors` de nivel superior aún se carga, con una advertencia `claude plugin validate`. Los monitores se ejecutan solo en sesiones interactivas, y no en Amazon Bedrock, Google Cloud's Agent Platform o Microsoft Foundry |

156| `experimental.evals` | Path, or array of paths | Directorio que contiene los [casos de evaluación](/docs/es/plugin-evals#use-a-different-eval-directory) del plugin cuando no es el predeterminado `evals/`. `claude plugin eval --eval-dir` lo anula |

157 

158En la columna Tipo, una ruta es una cadena relativa a la raíz del plugin, como `"./custom/commands"`.

159 

160<h3 id="name">

161 `name`

162</h3>

163 

164El identificador del plugin. Debe ser no vacío, sin espacios, `@`, `:`, separadores de ruta, caracteres de control o caracteres de formato bidireccional; use kebab-case.

165 

166Claude Code espacía cada componente bajo él, por lo que un agente `reviewer` en el plugin `deploy-tools` aparece como `deploy-tools:reviewer`.

167 

168<h3 id="displayname">

169 `displayName`

170</h3>

171 

172El nombre mostrado en la UI en lugar de `name`. Puede contener espacios y cualquier mayúscula, y no se usa para espaciado o búsqueda.

173 

174Para un plugin instalado desde el mercado, un `displayName` en la [entrada del mercado](/docs/es/plugins/marketplace-reference#plugin-entries) tiene precedencia sobre este valor.

175 

176<h3 id="version">

177 `version`

178</h3>

179 

180Una cadena de versión, no se verifica contra semver. Configurarla fija el plugin a esa versión hasta que la cambie; consulte [Versiones y actualizaciones](/docs/es/plugins/loading#versions-and-updates). Un plugin con una [`command` source](/docs/es/plugins/marketplace-reference), un plugin de un [mercado alojado en claude.ai](/docs/es/plugins/install#add-from-claude-ai), y un plugin [cargado en su lugar](/docs/es/plugins/loading#find-plugins-on-disk) desde un mercado agregado como directorio local no se fijan por este campo.

181 

182<h3 id="metadata">

183 `metadata`

184</h3>

185 

186Un objeto de forma libre para sus propios datos, como campos de catálogo o derechos. Claude Code no lo lee. Requiere Claude Code v2.1.222 o posterior.

187 

188<h3 id="defaultenabled">

189 `defaultEnabled`

190</h3>

191 

192Si el plugin comienza habilitado cuando el usuario no lo ha configurado en [`enabledPlugins`](/docs/es/settings-reference#enabledplugins). Por defecto es `true`. Un plugin del que depende un plugin habilitado comienza habilitado independientemente. El mismo campo en la entrada del mercado anula este.

193 

194Una vez que se escribe la entrada `enabledPlugins` de un usuario, persiste en las actualizaciones del plugin, por lo que cambiar `defaultEnabled` en una versión posterior no cambia la configuración para un usuario existente.

195 

196<h3 id="dependencies">

197 `dependencies`

198</h3>

199 

200Plugins que deben estar habilitados para que este funcione. Cada entrada es `"name"`, `"name@marketplace"`, o `{ "name": "...", "marketplace": "...", "version": "..." }`. Los nombres simples se resuelven contra el propio mercado de este plugin. Consulte [restricciones de dependencia](/docs/es/plugins/dependencies).

201 

202<h3 id="settings">

203 `settings`

204</h3>

205 

206Configuración que Claude Code aplica mientras el plugin está habilitado. Solo `agent` y `subagentStatusLine` tienen efecto; otras claves se descartan en la carga. Un `settings.json` en la raíz del plugin tiene precedencia sobre esta clave. Consulte [Configuración predeterminada](/docs/es/plugins/components#default-settings).

207 

208<h2 id="component-path-forms">

209 Formas de ruta de componente

210</h2>

211 

212Cada clave de componente acepta una ruta relativa a la raíz del plugin. `hooks`, `mcpServers`, `lspServers` y `experimental.monitors` también aceptan configuración en línea, `commands` también acepta un objeto mapa, y `mcpServers` también acepta rutas de bundle MCP y URLs. Los ejemplos que siguen muestran cada forma aceptada una vez. Para qué hace cada componente en tiempo de ejecución, consulte [Componentes de plugins](/docs/es/plugins/components).

213 

214<h3 id="path-only-fields">

215 Campos solo de ruta

216</h3>

217 

218`agents`, `skills`, `outputStyles`, `workflows` y `experimental.themes` toman una ruta o un array de rutas. Las entradas `agents` deben ser archivos `.md`, y las entradas `skills` deben ser directorios. Los otros tres aceptan un directorio o un archivo.

219 

220```json theme={null}

221{

222 "agents": ["./custom-agents/reviewer.md", "./custom-agents/tester.md"],

223 "skills": ["./extra-skills/", "."],

224 "outputStyles": "./styles/"

225}

226```

227 

228<h3 id="commands">

229 `commands`

230</h3>

231 

232`commands` toma una ruta, un array de rutas, u un objeto mapa. Una ruta nombra un archivo de comando `.md` plano o un directorio. En el objeto mapa, cada clave se convierte en el nombre del comando después del prefijo del plugin. Por ejemplo, `"about"` en el plugin `deploy-tools` se ejecuta como `/deploy-tools:about`.

233 

234Cada valor establece exactamente uno de `source` o `content`, y una entrada que establece ambos o ninguno falla la validación. Los otros campos en esta tabla son opcionales:

235 

236| Campo | Tipo | Descripción |

237| :------------- | :--------------- | :----------------------------------------------------------------------------- |

238| `source` | string | Ruta al archivo Markdown del comando, relativa a la raíz del plugin |

239| `content` | string | Markdown en línea para el cuerpo del comando, en lugar de `source` |

240| `description` | string | Descripción mostrada para el comando |

241| `argumentHint` | string | Sugerencia de argumento mostrada después del nombre del comando, como `[file]` |

242| `model` | string | Modelo predeterminado para el comando |

243| `allowedTools` | array of strings | Herramientas que el comando puede usar sin solicitar |

244 

245Este mapa declara un comando de un archivo y uno de contenido en línea:

246 

247```json theme={null}

248{

249 "commands": {

250 "status": { "source": "./commands/status.md", "argumentHint": "[env]" },

251 "about": { "content": "Explain what this plugin provides." }

252 }

253}

254```

255 

256<h3 id="hooks">

257 `hooks`

258</h3>

259 

260`hooks` toma una ruta de archivo `.json`, un objeto hooks en línea en la misma forma que [`hooks` en `settings.json`](/docs/es/hooks#configuration), o un array que mezcla ambos. Para eventos de hook y campos de controlador, consulte la [referencia de hooks](/docs/es/hooks#hook-events).

261 

262Claude Code fusiona lo que declare con `hooks/hooks.json` cuando ese archivo existe.

263 

264```json theme={null}

265{

266 "hooks": [

267 "./config/extra-hooks.json",

268 {

269 "PostToolUse": [

270 {

271 "matcher": "Write|Edit",

272 "hooks": [

273 { "type": "command", "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/format.sh" }

274 ]

275 }

276 ]

277 }

278 ]

279}

280```

281 

282<h3 id="mcpservers">

283 `mcpServers`

284</h3>

285 

286`mcpServers` toma una ruta de archivo `.json`, una ruta de bundle MCP o URL, un mapa en línea, o un array que mezcla ellos. Para campos de configuración del servidor, consulte [servidores MCP proporcionados por plugin](/docs/es/mcp#plugin-provided-mcp-servers).

287 

288Claude Code carga `.mcp.json` en la raíz del plugin primero, luego cada forma declarada en orden. Un nombre de servidor declarado después reemplaza uno anterior.

289 

290Un valor `mcpServers` toma una de estas formas:

291 

292| Forma | Valor de ejemplo | Qué hace Claude Code |

293| :---------------------- | :------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------- |

294| Ruta de archivo `.json` | `"./mcp/servers.json"` | Lee el archivo como un mapa `mcpServers` |

295| Ruta de bundle MCP | `"./bundle.mcpb"` | Extrae el bundle `.mcpb` o `.dxt` en `.mcpb-cache/` bajo la raíz del plugin y lee su configuración de servidor |

296| URL de bundle MCP | `"https://example.com/server.mcpb"` | Descarga el bundle en `.mcpb-cache/`, luego lo lee |

297| Mapa en línea | `{ "deploy-api": { "command": "node", "args": ["${CLAUDE_PLUGIN_ROOT}/server.js"] } }` | Usa el mapa como configuraciones de servidor con clave de nombre |

298 

299Una ruta de bundle o URL debe terminar en `.mcpb` o `.dxt`. Cualquier otra extensión falla la validación.

300 

301<h3 id="lspservers">

302 `lspServers`

303</h3>

304 

305`lspServers` toma una ruta de archivo `.json`, un mapa en línea de nombre de servidor a configuración, o un array de cualquiera.

306 

307Claude Code carga `.lsp.json` en la raíz del plugin primero, luego cada configuración declarada en orden. Un nombre de servidor declarado después reemplaza uno anterior.

308 

309Cada configuración de servidor es un objeto estricto con estos campos. Una clave desconocida falla la validación.

310 

311| Campo | Obligatorio | Descripción |

312| :---------------------- | :---------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

313| `command` | Yes | Binario del servidor de lenguaje. Sin espacios a menos que el valor comience con `/`; coloque argumentos en `args` |

314| `extensionToLanguage` | Yes | Mapa de extensión de archivo a ID de lenguaje LSP, al menos una entrada. Las claves comienzan con un punto, como `".go"` |

315| `args` | No | Argumentos pasados al servidor |

316| `transport` | No | Transporte de comunicación: `stdio` (predeterminado) o `socket`. Claude Code acepta `socket` pero ejecuta cada servidor sobre stdio, por lo que las reglas del protocolo stdout se aplican a todos los servidores |

317| `env` | No | Variables de entorno para el proceso del servidor |

318| `initializationOptions` | No | Opciones enviadas en la solicitud de inicialización |

319| `settings` | No | Configuración enviada por `workspace/didChangeConfiguration` |

320| `workspaceFolder` | No | Ruta de carpeta de espacio de trabajo para el servidor |

321| `startupTimeout` | No | Milisegundos para esperar el inicio, un entero positivo |

322| `shutdownTimeout` | No | Milisegundos para esperar un apagado elegante, un entero positivo. Cuando se agota el tiempo de espera, Claude Code termina el proceso del servidor. Cuando no se establece, no se aplica tiempo de espera |

323| `restartOnCrash` | No | Si reiniciar el servidor después de que se bloquee. Por defecto es `true`. Establezca en `false` para dejar un servidor bloqueado detenido en lugar de reiniciarlo |

324| `maxRestarts` | No | Intentos de reinicio antes de rendirse, cero o más |

325| `diagnostics` | No | Si insertar diagnósticos en contexto después de ediciones. Por defecto es `true` |

326 

327Esta configuración en línea ejecuta `gopls` para archivos `.go`:

328 

329```json theme={null}

330{

331 "lspServers": {

332 "go": {

333 "command": "gopls",

334 "args": ["serve"],

335 "extensionToLanguage": { ".go": "go" }

336 }

337 }

338}

339```

340 

341Para los servidores de lenguaje que Anthropic publica como plugins y cómo se comportan los servidores en tiempo de ejecución, consulte [Inteligencia de código](/docs/es/plugins/code-intelligence).

342 

343<h3 id="monitors">

344 `monitors`

345</h3>

346 

347`experimental.monitors` toma una ruta de archivo `.json` o el array en línea. Cuando omite la clave, Claude Code carga `monitors/monitors.json` si existe.

348 

349Cada entrada es un objeto estricto con estos campos.

350 

351| Campo | Obligatorio | Descripción |

352| :------------ | :---------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

353| `name` | Yes | Identificador único dentro del plugin |

354| `command` | Yes | Comando de shell que Claude Code ejecuta como un proceso de fondo persistente en el directorio de trabajo de la sesión |

355| `description` | Yes | Resumen breve mostrado en el panel de tareas y resúmenes de notificaciones |

356| `when` | No | Con `"always"`, el predeterminado, el monitor comienza al inicio de la sesión y en la recarga del plugin. Con `"on-skill-invoke:<skill>"`, comienza la primera vez que se ejecuta esa skill |

357 

358Este array en línea declara un monitor que comienza la primera vez que se ejecuta la skill `deploy`:

359 

360```json theme={null}

361{

362 "experimental": {

363 "monitors": [

364 {

365 "name": "deploy-status",

366 "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/poll-deploy.sh",

367 "description": "Deployment status changes",

368 "when": "on-skill-invoke:deploy"

369 }

370 ]

371 }

372}

373```

374 

375Un `command` de monitor no puede referenciar `${user_config.*}`. Consulte [Campos que se ejecutan a través de un shell](#fields-that-run-through-a-shell).

376 

377<h2 id="path-rules">

378 Reglas de ruta

379</h2>

380 

381Cada ruta de componente en un manifiesto es relativa a la raíz del plugin y debe comenzar con `./`. Una ruta como `commands/foo.md` falla la validación. `skills` y `mcpServers` cada uno aceptan una forma fuera de esa regla:

382 

383* **`skills`**: también acepta `"."`. Tanto `"."` como `"./"` denotan la raíz del plugin. Antes de v2.1.221, `"."` fallaba la validación del manifiesto, así que use `"./"` cuando el plugin deba cargarse en versiones anteriores

384* **`mcpServers`**: también acepta una URL de bundle `https://`

385 

386<h3 id="containment-and-existence">

387 Contención y existencia

388</h3>

389 

390Cada ruta de componente debe resolverse dentro de la raíz del plugin y debe existir. `claude plugin validate` no verifica las rutas `outputStyles`, `lspServers`, `monitors` o `themes`, por lo que una ruta incorrecta en esos campos falla solo cuando el plugin se carga:

391 

392* **Contención**: una ruta que se resuelve fuera de la raíz del plugin no se carga, y la pestaña **Errors** de `/plugin` muestra `<component> path escapes plugin directory: <path>`. Una ruta que contiene `..` es el caso usual, y `claude plugin validate` la reporta como `Path contains ".." which could be a path traversal attempt`

393* **Existencia**: una ruta que no existe no se carga, y la pestaña **Errors** de `/plugin` muestra `<component> path not found: <path>`. `claude plugin validate` la reporta como `Path not found`

394 

395<h3 id="how-each-key-combines-with-its-default-location">

396 Cómo cada clave se combina con su ubicación predeterminada

397</h3>

398 

399Cada clave de componente reemplaza su ubicación predeterminada, se suma a ella, o se fusiona con ella:

400 

401* **Reemplaza el predeterminado**: `commands`, `agents`, `outputStyles`, `workflows`, `experimental.themes`, `experimental.monitors`. Cuando establece `commands`, el directorio predeterminado `commands/` no se escanea. Para mantener el predeterminado y agregar más, enumérelo explícitamente: `"commands": ["./commands/", "./extras/"]`

402* **Se suma al predeterminado**: `skills`. El directorio `skills/` aún se escanea, y los directorios enumerados se cargan junto a él

403* **Se fusiona**: `hooks`, `mcpServers`, `lspServers`. El archivo predeterminado se carga primero, y lo que declara el manifiesto se fusiona en él, como se describe en [Formas de ruta de componente](#component-path-forms)

404 

405Si un plugin tiene una carpeta predeterminada como `commands/` y también establece la clave de manifiesto que la reemplaza, Claude Code carga las rutas del manifiesto y no la carpeta. `claude plugin list` y la interfaz `/plugin` entonces muestran la advertencia `Default <folder>/ folder is ignored because the manifest sets "<key>"`.

406 

407Para evitar la advertencia, establezca la clave en una ruta dentro de esa carpeta: `"commands": ["./commands/deploy.md"]` nombra un archivo en la carpeta predeterminada y no produce advertencia.

408 

409<h2 id="user-configuration">

410 Configuración del usuario

411</h2>

412 

413`userConfig` declara valores que Claude Code solicita al usuario cuando el plugin está habilitado, por lo que los usuarios no editan `settings.json` ellos mismos.

414 

415Las claves son identificadores hechos de letras, dígitos y guiones bajos, y no pueden comenzar con un dígito.

416 

417Cada valor es un objeto estricto con estos campos. Una clave desconocida falla la validación.

418 

419| Campo | Obligatorio | Descripción |

420| :------------ | :---------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

421| `type` | Yes | Uno de `string`, `number`, `boolean`, `directory` o `file` |

422| `title` | Yes | Etiqueta mostrada en el diálogo de configuración |

423| `description` | Yes | Texto de ayuda mostrado debajo del campo |

424| `required` | No | Si `true`, el diálogo de configuración no acepta un valor vacío |

425| `default` | No | Valor usado cuando el usuario no proporciona nada: una cadena, número, booleano, o array de cadenas |

426| `options` | No | Para `string`, los valores que el campo acepta, mostrados como un selector en `/config`. Consulte [Limitar un campo a opciones fijas](#limit-a-field-to-fixed-options). Requiere Claude Code v2.1.271 o posterior |

427| `multiple` | No | Para `string`, permite un array de cadenas |

428| `sensitive` | No | Si `true`, enmascara la entrada y almacena el valor en almacenamiento seguro en lugar de `settings.json` |

429| `min` / `max` | No | Límites para `number` |

430 

431Cada opción de cada plugin habilitado también aparece como una fila en el panel `/config`, excepto opciones `sensitive` y listas `multiple`. Las filas `/config` requieren Claude Code v2.1.269 o posterior.

432 

433Este `userConfig` declara un punto final y un token enmascarado:

434 

435```json theme={null}

436{

437 "userConfig": {

438 "api_endpoint": {

439 "type": "string",

440 "title": "API endpoint",

441 "description": "Your team's API endpoint"

442 },

443 "api_token": {

444 "type": "string",

445 "title": "API token",

446 "description": "API authentication token",

447 "sensitive": true

448 }

449 }

450}

451```

452 

453<h3 id="limit-a-field-to-fixed-options">

454 Limitar un campo a opciones fijas

455</h3>

456 

457Establezca `options` en un campo `userConfig` para que los usuarios elijan su valor de una lista fija.

458 

459Para limitar un campo `tone` a tres opciones, enumérelas en `options` y establezca `default` en una de ellas:

460 

461```json theme={null}

462{

463 "userConfig": {

464 "tone": {

465 "type": "string",

466 "title": "Tone",

467 "description": "Voice for generated replies",

468 "options": ["neutral", "warm", "formal"],

469 "default": "neutral"

470 }

471 }

472}

473```

474 

475Si declara `options` en cualquier campo, los usuarios en versiones de Claude Code anteriores a v2.1.271 no pueden cargar el plugin.

476 

477`options` se aplica a un campo `string` que no es `multiple` o `sensitive`. Establezca `default` en uno de los valores enumerados, o establezca `required: true` para que el usuario deba elegir uno. Cada opción es una etiqueta simple de 1 a 64 caracteres, y `claude plugin validate`, que ejecuta en su shell, reporta cualquier otra cosa que rechace. Un plugin cuyas `options` rompan estas reglas no se carga.

478 

479<h3 id="where-values-are-stored">

480 Dónde se almacenan los valores

481</h3>

482 

483Los valores no sensibles se guardan bajo [`pluginConfigs`](/docs/es/settings-reference#pluginconfigs) en el `settings.json` del usuario. Los valores sensibles van al almacén de credenciales seguro de la plataforma en su lugar. La [página de configuración](/docs/es/settings-reference#pluginconfigs) enumera qué archivos de configuración se leen desde `pluginConfigs`.

484 

485<h3 id="reference-a-saved-value">

486 Referenciar un valor guardado

487</h3>

488 

489Referencie un valor guardado donde el plugin lo necesite, en una de dos formas:

490 

491* **`${user_config.KEY}`**: sustituido en configuración de servidor MCP, configuración de servidor LSP, [forma exec](/docs/es/hooks#exec-form-and-shell-form) hook `args`, y contenido de skill y agente. En contenido de skill y agente, solo se sustituyen valores no sensibles, y un valor sensible allí se convierte en un marcador de posición

492* **`CLAUDE_PLUGIN_OPTION_<KEY>`**: exportado a procesos de hook para cada opción, con `<KEY>` en mayúsculas. Un hook de forma shell lee `$CLAUDE_PLUGIN_OPTION_API_TOKEN` para `api_token`

493 

494<h3 id="fields-that-run-through-a-shell">

495 Campos que se ejecutan a través de un shell

496</h3>

497 

498Los comandos de hook de forma shell, comandos de monitor y MCP [`headersHelper`](/docs/es/mcp#use-dynamic-headers-for-custom-authentication) rechazan `${user_config.*}`. Un componente que lo referencia en uno de estos campos falla con un [error](/docs/es/errors#plugin-command-references-user-config) en lugar de ejecutarse, porque el valor del campo se pasa a un shell que volvería a analizar el valor sustituido.

499 

500La tabla muestra cómo el valor puede llegar a cada uno de estos campos en su lugar.

501 

502| Campo | Cómo el valor puede llegar a él |

503| :------------------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

504| Comandos de hook de forma shell | Use [forma exec](/docs/es/hooks#exec-form-and-shell-form) con `args`, o lea `CLAUDE_PLUGIN_OPTION_<KEY>` del entorno del hook |

505| Comandos de monitor | No a través de Claude Code. Los procesos de monitor no reciben `CLAUDE_PLUGIN_OPTION_<KEY>`, por lo que el script de monitor tiene que obtener el valor por su cuenta |

506| MCP `headersHelper` | No a través de Claude Code. El entorno del ayudante lleva `CLAUDE_PLUGIN_ROOT`, `CLAUDE_CODE_MCP_SERVER_NAME` y `CLAUDE_CODE_MCP_SERVER_URL` pero sin valores de opción, por lo que el script del ayudante tiene que obtener el valor por su cuenta |

507 

508<h2 id="channels">

509 Canales

510</h2>

511 

512`channels` declara los canales de mensajes que proporciona un plugin, como un puente a una aplicación de chat. Cuando declara uno, Claude Code puede solicitar la configuración del canal cuando el plugin está habilitado. Para cómo el servidor inyecta mensajes, consulte la [referencia de canales](/docs/es/channels-reference#package-as-a-plugin).

513 

514Cada entrada es un objeto estricto vinculado a uno de los servidores MCP del plugin, con estos campos:

515 

516| Campo | Obligatorio | Descripción |

517| :------------ | :---------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

518| `server` | Yes | Clave del servidor MCP en `mcpServers` de este plugin al que se vincula el canal |

519| `displayName` | No | Nombre mostrado en el título del diálogo de configuración. Por defecto es el nombre del servidor |

520| `userConfig` | No | Opciones para solicitar, en la misma forma que [top-level `userConfig`](#user-configuration). Los valores guardados se sustituyen en referencias `${user_config.KEY}` en el `env` del servidor |

521 

522Este manifiesto vincula un canal al servidor MCP `telegram` del plugin y solicita un token de bot que se sustituye en el `env` del servidor:

523 

524```json theme={null}

525{

526 "mcpServers": {

527 "telegram": {

528 "command": "node",

529 "args": ["${CLAUDE_PLUGIN_ROOT}/server.js"],

530 "env": { "BOT_TOKEN": "${user_config.bot_token}" }

531 }

532 },

533 "channels": [

534 {

535 "server": "telegram",

536 "displayName": "Telegram",

537 "userConfig": {

538 "bot_token": {

539 "type": "string",

540 "title": "Bot token",

541 "description": "Telegram bot token",

542 "sensitive": true

543 }

544 }

545 }

546 ]

547}

548```

549 

550<h2 id="environment-variables">

551 Variables de entorno

552</h2>

553 

554Claude Code proporciona tres variables de ruta a componentes de plugin. Referenciarlas como `${NAME}` en los campos enumerados en [Dónde se resuelve cada variable](#where-each-variable-resolves), y léalas como variables de entorno en los procesos que las reciben.

555 

556| Variable | Se resuelve a | Úsela para |

557| :---------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------- |

558| `${CLAUDE_PLUGIN_ROOT}` | Ruta absoluta de la versión instalada del plugin | Scripts, binarios y archivos de configuración incluidos con el plugin |

559| `${CLAUDE_PLUGIN_DATA}` | `~/.claude/plugins/data/<id>/`, creado en la primera referencia y mantenido en actualizaciones de plugin. `<id>` es el identificador del plugin con cada carácter que no sea una letra, dígito, `_` o `-` reemplazado por `-` | Dependencias instaladas como `node_modules`, código generado y cachés |

560| `${CLAUDE_PROJECT_DIR}` | La raíz del proyecto | Scripts y archivos de configuración locales del proyecto |

561 

562`${CLAUDE_PLUGIN_ROOT}` cambia cuando el plugin se actualiza, así que no escriba estado allí. Para dónde se mueve la raíz y cuándo se limpia el directorio antiguo, consulte la [página de carga](/docs/es/plugins/loading).

563 

564Cuando desinstala el plugin del último lugar donde está instalado, el directorio `${CLAUDE_PLUGIN_DATA}` se elimina a menos que pase [`--keep-data`](/docs/es/plugins/cli-reference).

565 

566<h3 id="where-each-variable-resolves">

567 Dónde se resuelve cada variable

568</h3>

569 

570En cada componente de plugin, las referencias `${...}` se resuelven en línea en campos específicos, y algunos componentes también reciben las variables en su entorno de proceso:

571 

572| Componente de plugin | Campos donde `${...}` se resuelve | Exportado al proceso |

573| :----------------------------------- | :------------------------------------------ | :---------------------------------------------------------------------------------------------- |

574| Comandos de hook | En cualquier lugar en `command` y `args` | `CLAUDE_PLUGIN_ROOT`, `CLAUDE_PLUGIN_DATA`, `CLAUDE_PROJECT_DIR` y `CLAUDE_PLUGIN_OPTION_<KEY>` |

575| Comandos de monitor | En cualquier lugar en `command` | No exportado |

576| Servidores MCP `stdio` | `command`, `args`, `env` | `CLAUDE_PLUGIN_ROOT`, `CLAUDE_PLUGIN_DATA` |

577| Servidores MCP `http`, `sse`, `ws` | `url`, `headers`, `headersHelper` | No aplicable |

578| Servidores LSP | `command`, `args`, `env`, `workspaceFolder` | `CLAUDE_PLUGIN_ROOT`, `CLAUDE_PLUGIN_DATA`, `CLAUDE_PROJECT_DIR` |

579| Contenido de skill, comando y agente | En cualquier lugar en el cuerpo Markdown | No aplicable |

580 

581Las variables no están presentes en el entorno de comandos que Claude ejecuta a través de la herramienta Bash, en la sesión principal o en un subagente. En contenido de skill, comando y agente, escriba la referencia `${...}` en el cuerpo Markdown en su lugar, y Claude Code sustituye la ruta en línea cuando carga el contenido.

582 

583<h3 id="quoting-and-path-separators">

584 Entrecomillado y separadores de ruta

585</h3>

586 

587Mantenga cada ruta sustituida como un argumento único:

588 

589* **Comandos de hook**: use [forma exec](/docs/es/hooks#exec-form-and-shell-form) con `args` para que cada ruta sea un argumento sin entrecomillado

590* **Hooks de forma shell y comandos de monitor**: envuelva la variable en comillas dobles para que una ruta con espacios permanezca como una palabra

591 

592Este hook de forma shell ejecuta un script incluido con el plugin:

593 

594```json theme={null}

595{

596 "hooks": {

597 "PostToolUse": [

598 {

599 "hooks": [

600 {

601 "type": "command",

602 "command": "\"${CLAUDE_PLUGIN_ROOT}\"/scripts/process.sh"

603 }

604 ]

605 }

606 ]

607 }

608}

609```

610 

611En Windows, las rutas sustituidas usan barras diagonales para que un shell no lea barras invertidas como escapes.

612 

613<h2 id="standard-layout">

614 Diseño estándar

615</h2>

616 

617Cada tipo de componente tiene una ubicación predeterminada bajo la raíz del plugin, usada cuando el manifiesto no apunta a otro lugar.

618 

619| Componente | Ubicación predeterminada | Contenidos |

620| :---------------- | :--------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

621| Manifiesto | `.claude-plugin/plugin.json` | Metadatos y configuración del plugin. Opcional |

622| Skills | `skills/` | Un `<name>/SKILL.md` por skill. Un plugin con `SKILL.md` en su raíz, sin `skills/`, y sin clave `skills` se carga como una skill única |

623| Comandos | `commands/` | Archivos de comando Markdown planos. Prefiera `skills/` para nuevos plugins |

624| Agentes | `agents/` | Archivos Markdown de agente. Las subcarpetas son parte del [nombre del agente](/docs/es/plugins/components#agents) |

625| Hooks | `hooks/hooks.json` | Configuración de hook |

626| Servidores MCP | `.mcp.json` | Definiciones de servidor MCP |

627| Servidores LSP | `.lsp.json` | Configuraciones de servidor LSP |

628| Estilos de salida | `output-styles/` | Archivos de estilo de salida Markdown |

629| Workflows | `workflows/` | Archivos Workflow `.js` |

630| Temas | `themes/` | Archivos de tema JSON |

631| Monitores | `monitors/monitors.json` | El array de monitores |

632| Ejecutables | `bin/` | Los archivos aquí están en el `PATH` de la herramienta Bash mientras el plugin está habilitado, por lo que Claude los ejecuta como comandos simples. claude.ai y Cowork no instalan un plugin que tenga este directorio, incluido uno que [distribuya a través de la configuración de la organización claude.ai](/docs/es/plugins/host-marketplace#distribute-through-organization-settings) |

633| Configuración | `settings.json` | Valores predeterminados `agent` y `subagentStatusLine` aplicados mientras el plugin está habilitado |

634 

635Un plugin que usa cada ubicación predeterminada, más una carpeta `scripts/` que sus hooks llaman, se distribuye así:

636 

637```text theme={null}

638deploy-tools/

639├── .claude-plugin/

640│ └── plugin.json

641├── skills/

642│ └── deploy/

643│ └── SKILL.md

644├── commands/

645│ └── status.md

646├── agents/

647│ └── reviewer.md

648├── hooks/

649│ └── hooks.json

650├── monitors/

651│ └── monitors.json

652├── output-styles/

653│ └── terse.md

654├── themes/

655│ └── dracula.json

656├── workflows/

657│ └── release-audit.js

658├── bin/

659│ └── deploy-tool

660├── scripts/

661│ └── format.sh

662├── settings.json

663├── .mcp.json

664└── .lsp.json

665```

666 

667Para hacer clic en este diseño y leer qué hace cada archivo, abra el [explorador de plugins](/docs/es/plugins/components#explore-the-plugin-directory).

668 

669Un `CLAUDE.md` en la raíz del plugin no se carga como contexto, y `claude plugin validate` advierte cuando encuentra uno. Para incluir instrucciones que se carguen en el contexto de Claude, colóquelas en una skill.

670 

671<h2 id="marketplace-entries-and-the-manifest">

672 Entradas del mercado y el manifiesto

673</h2>

674 

675Una [entrada del mercado](/docs/es/plugins/marketplace-reference) acepta cada campo en esta página junto con [sus propios campos](/docs/es/plugins/marketplace-reference#plugin-entries), incluido `strict`.

676 

677El campo `strict` decide si la entrada puede agregar componentes a un plugin que tiene su propio `plugin.json`. Por defecto es `true`.

678 

679<h3 id="how-entry-fields-combine-with-plugin-json">

680 Cómo se combinan los campos de entrada con `plugin.json`

681</h3>

682 

683La entrada sirve como manifiesto, agrega componentes a él, o entra en conflicto con él:

684 

685* **Sin `plugin.json`**: la entrada es el manifiesto, independientemente de `strict`. Los `hooks` de entrada se cargan solo en la forma de objeto en línea. Para una ruta de archivo o array allí, la pestaña **Errors** de `/plugin` muestra un error `not yet supported in a marketplace entry`

686* **`plugin.json` presente, `strict` sin establecer o `true`**: Claude Code carga el manifiesto y agrega los `commands`, `agents`, `skills`, `outputStyles` y `themes` de la entrada a él. Para `hooks`, los matchers de la entrada para un evento reemplazan los matchers del manifiesto para ese mismo evento, y los eventos que solo declara el manifiesto mantienen los suyos

687* **`plugin.json` presente, `strict: false`**: una entrada que declara cualquiera de `commands`, `agents`, `skills`, `hooks`, `outputStyles` o `themes` es un conflicto, y el plugin no se carga con `Plugin <name> has conflicting manifests`

688 

689Cuando una [entrada del mercado cuya `source` es la raíz del mercado](/docs/es/plugins/marketplace-reference) enumera subdirectorios `skills` específicos, solo se cargan esos subdirectorios, y el directorio predeterminado `skills/` del plugin no se escanea. Una clave `skills` en el manifiesto en su lugar [se suma al predeterminado](#how-each-key-combines-with-its-default-location).

690 

691<h3 id="metadata-precedence">

692 Precedencia de metadatos

693</h3>

694 

695Algunos campos de metadatos tienen una precedencia fija independientemente de `strict`:

696 

697* **`defaultEnabled` y campos de visualización**: el `defaultEnabled` de la entrada y sus [campos de visualización](/docs/es/plugins/marketplace-reference#entry-and-plugin-json) como `displayName` anulan los del manifiesto

698* **`version`**: el `version` del manifiesto anula el de la entrada

699* **`name`**: cuando la entrada enumera el plugin bajo un `name` diferente al del manifiesto, `enabledPlugins` usa el nombre de la entrada, y los componentes se espacían bajo el nombre del manifiesto

700 

701Para la tabla de precedencia completa, consulte [Modo estricto](/docs/es/plugins/marketplace-reference).

702 

703<h2 id="next-steps">

704 Próximos pasos

705</h2>

706 

707* [Agregar componentes a un plugin](/docs/es/plugins/components): qué hace cada componente en tiempo de ejecución, con un ejemplo que valida

708* [Referencia del mercado](/docs/es/plugins/marketplace-reference): los campos de entrada que un mercado puede establecer para su plugin

709* [Referencia de comandos de plugin](/docs/es/plugins/cli-reference#plugin-validate): banderas de `claude plugin validate` y salida

710* [Solucionar problemas de plugins](/docs/es/plugins/troubleshooting#claude-plugin-validate-reports-errors): cada mensaje de validación con su solución

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Referencia de Marketplace

6 

7> Referencia completa de los campos marketplace.json, entradas de plugins y los objetos de origen de plugin y marketplace, con dónde es válido cada uno.

8 

9`marketplace.json` es el archivo que define un marketplace de plugins. Contiene el nombre del marketplace, su propietario y una entrada por cada plugin. La fuente de plugin de cada entrada indica dónde Claude Code obtiene ese plugin.

10 

11Una fuente de marketplace es un objeto separado que indica dónde Claude Code obtiene el archivo marketplace en sí. Usted escribe uno en la configuración, o Claude Code construye uno cuando ejecuta `claude plugin marketplace add`.

12 

13Esta referencia es para los mantenedores de marketplace que necesitan un nombre de campo o valor exacto, y para los administradores que necesitan saber qué valores de `source` son válidos en [`extraKnownMarketplaces`](/docs/es/settings-reference#extraknownmarketplaces), [`strictKnownMarketplaces`](/docs/es/settings-reference#strictknownmarketplaces) y [`blockedMarketplaces`](/docs/es/plugins/org#restrict-what-users-can-install).

14 

15<Note>

16 Estos casos se cubren en otras páginas:

17 

18 * **Construir u alojar un marketplace**: consulte [Crear un marketplace](/docs/es/plugins/create-marketplace) y [Alojar y mantener un marketplace](/docs/es/plugins/host-marketplace)

19 * **Recetas de lista de permitidos y lista de bloqueados**: consulte [Administrar plugins para su organización](/docs/es/plugins/org)

20</Note>

21 

22Encuentre la sección para lo que está escribiendo o leyendo:

23 

24* **El archivo marketplace**: [Campos de nivel superior](#top-level-fields) y [Entradas de plugins](#plugin-entries)

25* **El `source` de una entrada**: [Fuentes de plugins](#plugin-sources)

26* **Un objeto `source` en la configuración**: [Fuentes de marketplace](#marketplace-sources)

27* **Salida de [`claude plugin validate <path>`](/docs/es/plugins/cli-reference)**: [Mensajes de validación](#validation-messages), que asigna cada mensaje al campo que nombra

28 

29<h2 id="marketplace-file">

30 Archivo marketplace

31</h2>

32 

33Guarde el archivo marketplace en `.claude-plugin/marketplace.json` en el directorio de su marketplace. Si mantiene el archivo en otro lugar del repositorio, los usuarios tienen que declarar el marketplace en [`extraKnownMarketplaces`](/docs/es/settings-reference#extraknownmarketplaces) con `path` establecido en su fuente, porque `claude plugin marketplace add` no tiene opción para ello.

34 

35El directorio que contiene `.claude-plugin/` se llama raíz del marketplace, y cada fuente de plugin relativa se resuelve desde él, no desde `.claude-plugin/`.

36 

37Cada usuario registra un marketplace por `name`, por lo que un usuario no puede tener dos marketplaces con el mismo nombre registrados a la vez.

38 

39Claude Code ignora una clave de nivel superior desconocida o una clave de entrada de plugin en lugar de rechazarla, por lo que un error tipográfico se carga silenciosamente. `claude plugin validate` reporta cada clave desconocida como una advertencia.

40 

41<h3 id="reserved-names">

42 Nombres reservados

43</h3>

44 

45No puede dar a su marketplace ninguno de los siguientes nombres:

46 

47* **Nombres de marketplace oficial**: `claude-code-marketplace`, `claude-code-plugins`, `claude-plugins-official`, `anthropic-marketplace`, `anthropic-plugins`, `agent-skills`, `anthropic-agent-skills`, `life-sciences`, `knowledge-work-plugins`, `claude-for-legal`, `claude-for-financial-services`, `financial-services-plugins`, `first-party-plugins` y `claude-tag-plugins`. Reservado a menos que el marketplace provenga de una [fuente de marketplace](#marketplace-sources) `github` o `git` bajo `github.com/anthropics/`.

48* **Nombres de marketplace comunitario**: `claude-community`, `claude-plugins-community` y `healthcare`. Reservado bajo la misma regla que los nombres oficiales.

49* **Nombres de directorio de plugins**: `anthropic-plugin-directory` y `claude-plugin-directory`. Reservado bajo la misma regla que los nombres oficiales.

50* **Nombres que suplanten un marketplace oficial**: nombres como `official-claude-plugins` o `claude-plugins-v2`, y cualquier nombre que contenga un carácter no ASCII. El error es `Marketplace name impersonates an official Anthropic/Claude marketplace`. Un carácter de control o de formato bidireccional en un nombre también reporta `Marketplace name cannot contain control or bidirectional-formatting characters`.

51* <span id="reserved-name-spellings" />**Otra ortografía de un nombre reservado**: un nombre que difiere de un nombre reservado solo por un punto final, o por un símbolo distinto de un guión en lugar de un guión, por lo que `claude.code.plugins` cuenta como `claude-code-plugins`. `claude plugin validate` acepta tal nombre; agregar el marketplace falla con [`is another spelling of "<reserved>", a reserved marketplace name`](/docs/es/errors#marketplace-name-is-another-spelling-of-a-reserved-name), y un marketplace ya registrado bajo uno deja de cargarse. Esta verificación requiere Claude Code v2.1.280 o posterior.

52* **Nombres que Claude Code usa para plugins que no provienen de un marketplace**: `inline` para plugins cargados con [`--plugin-dir`](/docs/es/cli-reference), `builtin` para plugins integrados, `skills-dir` para plugins cargados automáticamente desde [`.claude/skills/`](/docs/es/skills) y `synced` para plugins sincronizados desde su cuenta claude.ai. `claude-plugin-test` también está reservado. `skills-dir` también aparece como `{"source": "skills-dir"}` en `strictKnownMarketplaces` y `blockedMarketplaces`, descrito bajo [Valores de fuente válidos solo en listas de políticas](#source-values-valid-only-in-policy-lists).

53* **`npm`, `pip`, `uv`, `cargo`, `github` y `gh`**: reservado en cualquier mayúscula. Esta verificación requiere Claude Code v2.1.275 o posterior.

54* **Nombres que comienzan con `claudeai-`**: reservado para marketplaces alojados en claude.ai. `claude plugin marketplace add` rechaza cualquier otro marketplace que use uno con `Cannot add marketplace "<name>": names starting with "claudeai-" are reserved for marketplaces hosted on claude.ai`.

55 

56<h2 id="top-level-fields">

57 Campos de nivel superior

58</h2>

59 

60La tabla enumera cada clave que Claude Code lee de `marketplace.json`. `name`, `owner` y `plugins` son obligatorios.

61 

62| Campo | Tipo | Descripción |

63| :----------------------------------------- | :--------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

64| `name` | string | Identificador de marketplace. Sin espacios, caracteres de control o caracteres de formato bidireccional, sin `/` o `\`, sin `..` y no `.`. Consulte [Nombres reservados](#reserved-names). Los usuarios lo escriben después de `@` cuando instalan un plugin |

65| `owner` | object | Información del mantenedor. `name` es obligatorio; `email` y `url` son opcionales |

66| `plugins` | array | [Entradas de plugins](#plugin-entries). Cada entrada se valida por sí sola, por lo que una entrada inválida no falla el marketplace |

67| `$schema` | string | URL de JSON Schema para autocompletado del editor. Se ignora en tiempo de carga |

68| `description` | string | Descripción del marketplace mostrada a los usuarios. `claude plugin validate` advierte cuando falta |

69| `version` | string | Versión del manifiesto del marketplace |

70| `metadata.description`, `metadata.version` | string | Ubicación alternativa para `description` y `version` |

71| `metadata.pluginRoot` | string | Directorio bajo el cual se resuelven los nombres de fuente de plugin desnudos. Consulte [Fuente de plugin de ruta relativa](#relative-path-plugin-source). Requiere Claude Code v2.1.239 o posterior |

72| `forceRemoveDeletedPlugins` | boolean | Cuando es `true`, un plugin que elimina de `plugins` se desinstala en las máquinas de los usuarios. Consulte [Alojar y mantener un marketplace](/docs/es/plugins/host-marketplace) |

73| `allowCrossMarketplaceDependenciesOn` | array of strings | Nombres de marketplace cuyos plugins pueden instalarse como dependencias de los plugins de este marketplace. Cuando instala un plugin, solo se aplica la lista en el propio marketplace del plugin, para toda su cadena de dependencias. Consulte [Dependencias de plugins](/docs/es/plugins/dependencies) |

74| `renames` | object | Mapa de un `name` de plugin anterior a su nombre actual, o a `null` para un plugin que eliminó. Requiere Claude Code v2.1.193 o posterior. Consulte [Alojar y mantener un marketplace](/docs/es/plugins/host-marketplace) |

75 

76<h2 id="plugin-entries">

77 Entradas de plugins

78</h2>

79 

80Cada objeto en el array `plugins` de nivel superior de `marketplace.json` nombra un plugin e indica dónde obtenerlo. `name` y `source` son obligatorios.

81 

82Una entrada también acepta cada campo de [`plugin.json`](/docs/es/plugins/manifest-reference), como `description`, `version`, `author`, `commands` y `hooks`. Para cuándo se aplican esos campos, consulte [Cómo una entrada se combina con plugin.json](#entry-and-plugin-json).

83 

84La tabla enumera los campos propios de la entrada y los campos del manifiesto cuyo significado cambia en una entrada.

85 

86| Campo | Tipo | Descripción |

87| :--------------- | :--------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

88| `name` | string | Identificador de plugin, sin espacios, caracteres de control o caracteres de formato bidireccional. Los usuarios lo escriben antes de `@` cuando instalan, incluso cuando el propio `plugin.json` del plugin establece un `name` diferente |

89| `source` | string or object | Dónde obtener el plugin. Consulte [Fuentes de plugins](#plugin-sources) |

90| `description` | string | Se muestra en los listados y detalles de [`/plugin`](/docs/es/plugins/install) |

91| `version` | string | Cadena de versión para el plugin. Cuando `plugin.json` también establece `version`, `plugin.json` tiene precedencia y `claude plugin validate` advierte. Consulte [Referencia de carga de plugins](/docs/es/plugins/loading) |

92| `category` | string | Categoría de forma libre para organizar el catálogo |

93| `tags` | array of strings | Etiquetas de forma libre para búsqueda |

94| `strict` | boolean | Por defecto `true`. Si `plugin.json` es la fuente definitiva para los componentes del plugin. Consulte [Modo estricto](#strict-mode) |

95| `relevance` | object | Señales que indican a Claude Code cuándo sugerir el plugin. Consulte [Recomendar plugins para su organización](/docs/es/plugins/relevance) |

96| `dependencies` | array | Plugins que deben estar habilitados para que este funcione. Cada elemento es `"name"`, `"name@marketplace"` u un objeto. Consulte [Dependencias de plugins](/docs/es/plugins/dependencies) |

97| `defaultEnabled` | boolean | Por defecto `true`. Si el plugin comienza habilitado cuando el usuario no lo ha establecido en [`enabledPlugins`](/docs/es/settings-reference#enabledplugins). El valor de la entrada tiene precedencia sobre `plugin.json` |

98| `displayName` | string | Nombre legible por humanos mostrado en la interfaz de usuario. Cuando ni la entrada ni el `plugin.json` del plugin establece uno, los usuarios ven el `name` del plugin |

99| `metadata` | object | Objeto de forma libre para sus propios campos. Claude Code no lo lee. Requiere Claude Code v2.1.222 o posterior |

100| `headers` | object | Encabezados HTTP que Claude Code envía cuando descarga el [archivo](#archive-plugin-source) de esta entrada. Un encabezado establecido aquí reemplaza un encabezado del mismo nombre de los [`headers`](#fields-by-type) de la fuente del marketplace. Requiere Claude Code v2.1.238 o posterior |

101| `headersHelper` | string | Comando que imprime los encabezados de descarga de archivo de esta entrada como un objeto JSON, para una credencial que expira. La entrada también debe establecer [`"strict": false`](#strict-mode). Requiere Claude Code v2.1.238 o posterior. Consulte [Autenticar descargas de archivos](/docs/es/plugins/host-marketplace#authenticate-archive-downloads) |

102 

103<h3 id="entry-and-plugin-json">

104 Cómo una entrada se combina con plugin.json

105</h3>

106 

107Los campos de la entrada se aplican de manera diferente a un plugin obtenido que tiene su propio `.claude-plugin/plugin.json` y a uno que no:

108 

109* **Sin `plugin.json`**: la entrada es el manifiesto independientemente de `strict`. Cada campo de manifiesto en la entrada se aplica, incluidos [`mcpServers`, `lspServers`, `userConfig` y `channels`](/docs/es/plugins/manifest-reference).

110* **`plugin.json` presente**: `plugin.json` es el manifiesto. [Modo estricto](#strict-mode) decide si los seis campos de componente de la entrada, `commands`, `agents`, `skills`, `hooks`, `outputStyles` y `themes`, se combinan con él o se rechazan como un conflicto. La entrada `mcpServers`, `lspServers`, `userConfig` y `channels` no se aplican. Declárelos en `plugin.json`.

111 

112<h4 id="hooks-in-an-entry">

113 Hooks en una entrada

114</h4>

115 

116Escriba `hooks` de entrada como un objeto en línea que asigne nombres de eventos de hook a arrays de coincidencia. Si escribe una ruta de archivo o un array en su lugar, `claude plugin validate` lo aprueba. Esos hooks nunca se ejecutan, y Claude Code reporta un error `not yet supported in a marketplace entry` para el plugin. Coloque hooks basados en archivos en el propio [`hooks/hooks.json`](/docs/es/plugins/components) del plugin o `plugin.json`.

117 

118<h4 id="display-fields">

119 Campos de visualización

120</h4>

121 

122Tanto la entrada como el propio `plugin.json` del plugin pueden establecer los campos de visualización `displayName`, `description`, `author`, `homepage`, `repository`, `license` y `keywords`. Los usuarios ven estos valores en los listados y detalles de plugins, antes y después de instalar:

123 

124* Para un campo que establece en la entrada, los usuarios ven el valor de la entrada, incluso cuando `plugin.json` establece uno diferente.

125* Para un campo que la entrada deja sin establecer, los usuarios ven el valor de `plugin.json`.

126 

127Antes de instalar, Claude Code solo puede leer `plugin.json` para entradas con una [fuente de ruta relativa](#relative-path-plugin-source), cuyos archivos de plugin están dentro del marketplace en sí. Para una entrada con cualquier otro tipo de fuente, los usuarios ven solo los campos propios de la entrada hasta que instalen el plugin.

128 

129<h3 id="strict-mode">

130 Modo estricto

131</h3>

132 

133`strict` decide qué sucede cuando el plugin obtenido tiene su propio `plugin.json` y la entrada también declara cualquiera de los [campos de componente](#entry-and-plugin-json): `commands`, `agents`, `skills`, `hooks`, `outputStyles` o `themes`. Con `strict: true`, el predeterminado, Claude Code añade los campos de componente de la entrada a `plugin.json`, excepto `hooks`, cuyos coincidentes reemplazan los del manifiesto por evento. Con `strict: false`, una entrada que declara cualquier campo de componente es un conflicto, y el plugin falla al cargar. La tabla muestra cada combinación de `strict`, `plugin.json` y los campos de componente de la entrada.

134 

135| `strict` | `plugin.json` | Campos de componente de entrada | Resultado |

136| :------------------------ | :------------ | :------------------------------ | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

137| any | absent | any | La entrada es el manifiesto |

138| `true`, el predeterminado | present | any | `plugin.json` es la autoridad. Claude Code añade los campos de componente de la entrada a él, excepto `hooks`, cuyos coincidentes [reemplazan los del manifiesto por evento](/docs/es/plugins/manifest-reference#how-entry-fields-combine-with-plugin-json) |

139| `false` | present | none | `plugin.json` es el manifiesto, como con `true` |

140| `false` | present | one or more | Conflicto. El plugin falla al cargar con `Plugin <name> has conflicting manifests: both plugin.json and marketplace entry specify components` |

141 

142<h2 id="plugin-sources">

143 Fuentes de plugins

144</h2>

145 

146El `source` de una entrada de plugin indica dónde Claude Code obtiene ese plugin. Es una cadena de ruta relativa u un objeto cuya propia clave `source` nombra el tipo, por lo que una entrada se ve como `"source": { "source": "github", "repo": "your-org/formatter" }`.

147 

148La tabla enumera cada tipo de fuente de plugin y sus campos.

149 

150| Tipo | Campos | Notas |

151| :------------ | :------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

152| Ruta relativa | la cadena en sí | Un directorio dentro del marketplace, resuelto desde la raíz del marketplace. Debe comenzar con `./`, a menos que escriba un [nombre desnudo bajo `metadata.pluginRoot`](#relative-path-plugin-source). `"."` por sí solo significa la raíz en sí |

153| `github` | `repo`, `ref`, `sha` | Repositorio de GitHub en forma `owner/repo` |

154| `url` | `url`, `ref`, `sha` | Cualquier repositorio git por URL |

155| `git-subdir` | `url`, `path`, `ref`, `sha` | Un subdirectorio de un repositorio git, obtenido con un clon parcial disperso |

156| `npm` | `package`, `version`, `registry` | Paquete npm, obtenido con su cliente npm y desempaquetado sin ejecutar scripts de instalación |

157| `archive` | `url`, `sha256` | Archivo Zip sobre HTTPS. Requiere Claude Code v2.1.224 o posterior |

158| `command` | `command`, `timeout`, `mode` | Directorio impreso por un comando que Claude Code ejecuta en la máquina del usuario. Requiere Claude Code v2.1.229 o posterior |

159 

160Los nombres `url` y `github` también son tipos de [fuente de marketplace](#marketplace-sources), donde `url` significa un enlace directo a un archivo `marketplace.json` en lugar de un repositorio git. `git` existe solo como una fuente de marketplace, y `npm` existe como ambas. `git-subdir`, `archive` y `command` existen solo como fuentes de plugins.

161 

162Use una ruta relativa para un plugin en un subdirectorio del repositorio del marketplace en sí. Use `git-subdir` para un subdirectorio de algún otro repositorio.

163 

164Las fuentes `github`, `url` y `git-subdir` comparten los campos `ref` y `sha`:

165 

166* **`ref`**: una rama o etiqueta. Por defecto es la rama predeterminada del repositorio.

167* **`sha`**: un SHA de commit completo de 40 caracteres en minúsculas. Cuando establece tanto `ref` como `sha`, Claude Code verifica `sha`. En la mayoría de hosts 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 admiten obtener commits por SHA. En esos servidores, el `ref` aún debe existir y el commit fijado debe ser alcanzable desde él.

168 

169Para cómo se obtiene, almacena en caché y versiona cada tipo, consulte [Referencia de carga de plugins](/docs/es/plugins/loading).

170 

171<h3 id="relative-path-plugin-source">

172 Fuente de plugin de ruta relativa

173</h3>

174 

175La ruta se resuelve desde la raíz del marketplace. `./plugins/formatter` es `<root>/plugins/formatter` aunque el archivo marketplace esté en `<root>/.claude-plugin/`.

176 

177Una ruta que contiene `..` falla la validación. En macOS y Linux, Claude Code rechaza una ruta de entrada que contiene una barra invertida en cualquier lugar después del `./` inicial, por lo que escriba la ruta con barras diagonales.

178 

179```json theme={null}

180{ "name": "formatter", "source": "./plugins/formatter" }

181```

182 

183Una ruta relativa se resuelve solo cuando Claude Code tiene los archivos del marketplace, así que verifique el tipo de [fuente de marketplace](#marketplace-sources):

184 

185* **`github`, `git`, `file` y `directory`**: Claude Code tiene los archivos del marketplace.

186* **`url`**: Claude Code obtiene solo `marketplace.json`, por lo que las rutas relativas no pueden resolverse. Dé a cada plugin una fuente de objeto en su lugar, como `github` o `git-subdir`.

187* **`settings`**: las rutas relativas se rechazan directamente.

188 

189<h4 id="bare-names-under-pluginroot">

190 Nombres desnudos bajo pluginRoot

191</h4>

192 

193Un nombre desnudo es un nombre de directorio único sin `/`, como `"formatter"`. Para escribir nombres desnudos en lugar de rutas `./`, establezca [`metadata.pluginRoot`](#top-level-fields) en el directorio bajo el cual se resuelven. Con `"pluginRoot": "./plugins"`, `"source": "formatter"` se resuelve a `./plugins/formatter`. Requiere Claude Code v2.1.239 o posterior.

194 

195`metadata.pluginRoot` tiene estos límites:

196 

197* Debe ser en sí una ruta relativa dentro del marketplace.

198* No tiene efecto en una fuente que ya comienza con `./`.

199* Una fuente que contiene un `/`, como `team-a/formatter`, no es un nombre desnudo y aún necesita el prefijo `./`, incluso cuando `metadata.pluginRoot` está establecido.

200 

201<h3 id="github-plugin-source">

202 Fuente de plugin github

203</h3>

204 

205`repo` toma `owner/repo`. `ref` y `sha` son opcionales.

206 

207```json theme={null}

208{

209 "name": "formatter",

210 "source": {

211 "source": "github",

212 "repo": "your-org/formatter",

213 "ref": "v2.0.0",

214 "sha": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0"

215 }

216}

217```

218 

219<h3 id="url-plugin-source">

220 Fuente de plugin url

221</h3>

222 

223`url` es una URL git completa: `https://`, `http://`, `file://` o `git@`. Un sufijo `.git` no es obligatorio, por lo que las URL de Azure DevOps y AWS CodeCommit funcionan tal como están escritas. Este tipo no toma el atajo `owner/repo`.

224 

225```json theme={null}

226{

227 "name": "formatter",

228 "source": {

229 "source": "url",

230 "url": "https://gitlab.example.com/your-group/formatter.git",

231 "ref": "main"

232 }

233}

234```

235 

236<h3 id="git-subdir-plugin-source">

237 Fuente de plugin git-subdir

238</h3>

239 

240`url` acepta una URL git completa o el atajo `owner/repo` de GitHub. `path` es el subdirectorio que contiene el plugin, y Claude Code descarga solo ese subdirectorio.

241 

242```json theme={null}

243{

244 "name": "formatter",

245 "source": {

246 "source": "git-subdir",

247 "url": "https://github.com/your-org/monorepo.git",

248 "path": "tools/formatter"

249 }

250}

251```

252 

253<h3 id="npm-plugin-source">

254 Fuente de plugin npm

255</h3>

256 

257Una fuente `npm` toma estos campos:

258 

259* `package`: un nombre de paquete, o un nombre con alcance como `@your-org/formatter`

260* `version`: una versión o rango

261* `registry`: una URL de registro para un paquete que no está en el registro predeterminado

262 

263Claude Code obtiene el paquete con su cliente npm. Los scripts de instalación del paquete, como `preinstall` o `postinstall`, nunca se ejecutan, y sus dependencias no se instalan durante la obtención. Si el paquete tiene un archivo de bloqueo compatible junto a su `package.json`, Claude Code instala esas [dependencias de paquetes Node.js](/docs/es/plugins/loading#node-js-package-dependencies) en un paso separado, también con scripts deshabilitados.

264 

265```json theme={null}

266{

267 "name": "formatter",

268 "source": {

269 "source": "npm",

270 "package": "@your-org/formatter",

271 "version": "^2.0.0",

272 "registry": "https://npm.example.com"

273 }

274}

275```

276 

277<h3 id="archive-plugin-source">

278 Fuente de plugin archive

279</h3>

280 

281`url` debe usar `https://` y no puede apuntar a un host de loopback, link-local o cloud-metadata.

282 

283La raíz del plugin puede estar en la parte superior del zip o un directorio hacia abajo.

284 

285`sha256` es el resumen del archivo como 64 caracteres hexadecimales, mayúsculas o minúsculas. Cuando lo establece, Claude Code rechaza una descarga que no coincida.

286 

287```json theme={null}

288{

289 "name": "formatter",

290 "source": {

291 "source": "archive",

292 "url": "https://artifacts.example.com/formatter-2.0.0.zip",

293 "sha256": "6bfa50e3d2e00c052b46abe51fff89346ac803e45771f76dcf6df1ab74cca5e1"

294 }

295}

296```

297 

298<h3 id="command-plugin-source">

299 Fuente de plugin command

300</h3>

301 

302Use una fuente `command` cuando una herramienta instalada en la máquina del usuario produce el directorio del plugin, como un IDE que renderiza su plugin para la cadena de herramientas que el usuario ha seleccionado. Claude Code ejecuta el comando cuando el usuario instala o actualiza el plugin, y [nuevamente una vez por sesión](/docs/es/plugins/loading#when-a-command-source-re-runs), por lo que los usuarios obtienen la salida cambiada de la herramienta sin reinstalar.

303 

304Una fuente `command` toma estos campos:

305 

306* `command`: un comando de shell que imprime la ruta absoluta del directorio del plugin como una línea y sale con 0. Claude Code muestra a los usuarios la cadena completa para revisión antes de ejecutarla. Escríbala como ASCII imprimible, como máximo 500 caracteres, sin una ejecución de cuatro o más espacios.

307* `timeout`: un número entero de segundos de 1 a 600. Por defecto es 60.

308* `mode`: `copy`, el predeterminado, o `link`. Consulte [Modo de copia y modo de enlace](#copy-mode-and-link-mode).

309 

310```json theme={null}

311{

312 "name": "formatter",

313 "source": {

314 "source": "command",

315 "command": "my-tool claude-plugin-path",

316 "timeout": 120

317 }

318}

319```

320 

321Para cómo los usuarios aceptan el comando, consulte [Instalar desde su shell](/docs/es/plugins/install#install-from-your-shell). Para lo que los usuarios ven después de que lo cambia, consulte [Cambiar el comando de una fuente de comando](/docs/es/plugins/host-marketplace#change-the-command-of-a-command-source). Los administradores desactivan las fuentes de comando con [`disableCommandPluginSources`](/docs/es/settings-reference#disablecommandpluginsources).

322 

323<h4 id="what-the-command-must-do">

324 Qué debe hacer el comando

325</h4>

326 

327Escriba el comando para cumplir con estos requisitos:

328 

329* **Shell y directorio de trabajo**: Claude Code ejecuta el comando a través de `sh`, o a través de `cmd.exe` en Windows, desde el directorio de inicio del usuario. Dé una ruta absoluta o un comando en `PATH`.

330* **Salida**: imprima exactamente una línea en stdout, la ruta absoluta del directorio del plugin, y salga con 0 dentro de `timeout` segundos.

331* **Contenido del directorio**: el directorio contiene el plugin completo en el momento en que el comando sale. La ruta puede diferir de una ejecución a la siguiente.

332 

333<h4 id="output-that-fails-the-install-or-update">

334 Salida que falla la instalación o actualización

335</h4>

336 

337La instalación o actualización falla cuando el comando sale con un código distinto de cero, se ejecuta más tiempo que `timeout`, o imprime algo que no sea una ruta absoluta. También falla cuando el directorio impreso es uno de estos:

338 

339* **Sin contenido de plugin**: el directorio impreso no tiene contenido de plugin en su nivel superior, como un directorio `.claude-plugin/` o un directorio `skills/`, `commands/`, `agents/` o `hooks/`.

340* **El directorio de la propia sesión**: el directorio impreso es el en el que se inició Claude Code, o uno de sus padres.

341* **Una ruta de red**: en Windows, la ruta impresa es una ruta UNC.

342* **Demasiado grande para copiar**: en modo de copia, el directorio es más grande que 256 MiB o tiene más de 20,000 entradas.

343 

344<h4 id="copy-mode-and-link-mode">

345 Modo de copia y modo de enlace

346</h4>

347 

348`mode` decide si Claude Code copia el directorio impreso o lo usa en su lugar:

349 

350* **`copy`**: Claude Code copia el directorio en el caché de plugins y deriva la [versión del plugin](/docs/es/plugins/loading#how-claude-code-computes-the-version) de un hash de los archivos copiados. Su herramienta puede eliminar o reescribir el directorio después de que el comando salga. Una re-ejecución que produce archivos idénticos cuenta como actualizado.

351* **`link`**: Claude Code llena la entrada de caché del plugin con un enlace a cada entrada de nivel superior del directorio impreso y carga los archivos en su lugar. Nada se copia, los contenidos de los archivos no se hashean, y los límites de tamaño no se aplican. Úselo para un directorio demasiado grande para copiar, como una exportación de SDK renderizada.

352 

353Un plugin en modo de enlace tiene estos requisitos:

354 

355* **Mantenga el directorio en su lugar**: Claude Code carga el plugin a través de los enlaces en cada inicio, por lo que el directorio impreso debe permanecer donde está mientras el plugin permanezca instalado.

356* **Imprima una ruta diferente para señalar contenido nuevo**: la versión proviene de la ruta real del directorio impreso y sus entradas de nivel superior, no de los archivos dentro de ellas.

357* **Mantenga los enlaces simbólicos de nivel superior dentro del directorio**: la instalación falla si una entrada de nivel superior es un enlace simbólico que apunta fuera del directorio impreso.

358* **Incluya `node_modules`**: Claude Code omite la [instalación de dependencias de paquetes Node.js](/docs/es/plugins/loading#node-js-package-dependencies) para un plugin en modo de enlace, por lo que imprima un directorio que ya contenga los paquetes que el plugin necesita.

359* **Sesiones iniciadas dentro del directorio**: una sesión iniciada en el directorio impreso o en cualquier lugar debajo de él no carga el plugin.

360* **No en Windows**: Claude Code rechaza instalar un plugin en modo de enlace en Windows. Declare `"mode": "copy"` allí.

361 

362<h2 id="marketplace-sources">

363 Fuentes de marketplace

364</h2>

365 

366Una fuente de marketplace indica dónde Claude Code obtiene un `marketplace.json`. La CLI construye uno para usted cuando agrega un marketplace, y usted escribe uno en la configuración:

367 

368* **[`claude plugin marketplace add`](/docs/es/plugins/cli-reference)**: Claude Code construye la fuente a partir de la cadena que pasa.

369* **[`extraKnownMarketplaces`](/docs/es/settings-reference#extraknownmarketplaces)**: usted escribe la fuente en sí como el objeto `source`.

370* **[`strictKnownMarketplaces`](/docs/es/settings-reference#strictknownmarketplaces) y [`blockedMarketplaces`](/docs/es/plugins/org#restrict-what-users-can-install)**: los administradores escriben fuentes en estas dos listas de políticas. `strictKnownMarketplaces` es la lista de permitidos y `blockedMarketplaces` es la lista de bloqueados.

371 

372Los nombres de tipo `url`, `git` y `github` significan algo diferente en una fuente de marketplace que en una [fuente de plugin](#plugin-sources):

373 

374| Nombre de tipo | Como fuente de marketplace | Como fuente de plugin |

375| :------------- | :----------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------- |

376| `url` | Un enlace directo a un archivo `marketplace.json`, con campos `url`, `headers` y `headersHelper` | Un repositorio git para clonar, con campos `url`, `ref` y `sha` |

377| `git` | Un repositorio git para clonar, con campos `url`, `ref`, `path` y `sparsePaths` | No existe |

378| `github` | Un repositorio de GitHub, con campos `repo`, `ref`, `path` y `sparsePaths` | Un repositorio de GitHub, con campos `repo`, `ref` y `sha`, y sin `path` |

379 

380La tabla enumera cada tipo de fuente de marketplace con sus campos, la entrada de `claude plugin marketplace add` que lo produce, y qué hace en cada una de las tres claves de configuración.

381 

382| Tipo | Campos | entrada `marketplace add` | `extraKnownMarketplaces` | `strictKnownMarketplaces` | `blockedMarketplaces` |

383| :------------ | :----------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :--------------------------------------------------------------------- |

384| `url` | `url`, `headers`, `headersHelper` | Una URL `http://` o `https://` que no coincide con una forma git | Se carga | Permite la misma URL | Bloquea la misma URL |

385| `github` | `repo`, `ref`, `path`, `sparsePaths` | `owner/repo`, `owner/repo@ref` u `owner/repo#ref` | Se carga | Permite el mismo `repo`, `ref` y `path`. `repo` puede ser `owner/*` | Bloquea lo mismo, y una URL `git` al mismo repositorio |

386| `git` | `url`, `ref`, `path`, `sparsePaths` | Una URL `user@host:path`, o una URL `https://` que termina en `.git`, contiene `/_git/`, o nombra un repositorio github.com o gitlab.com. `#ref` fija un ref | Se carga | Permite la misma URL, `ref` y `path` | Bloquea lo mismo, y otras ortografías del mismo repositorio github.com |

387| `npm` | `package` | No producido | Falla al cargar: `NPM marketplace sources not yet implemented` | Se analiza pero no coincide con nada, porque nada registra un marketplace `npm` | Se analiza pero no coincide con nada |

388| `file` | `path` | Una ruta a un archivo `.json` | Se carga | Permite la misma ruta | Bloquea la misma ruta |

389| `directory` | `path` | Una ruta a un directorio | Se carga | Permite la misma ruta | Bloquea la misma ruta |

390| `settings` | `name`, `plugins`, `owner` | No producido | Se carga | Permite una entrada con el mismo `name` y `plugins` idénticos | Bloquea el mismo `name` |

391| `skills-dir` | none | No producido | Falla al cargar: `Unsupported marketplace source type` | Mantiene los [plugins del directorio de skills](/docs/es/plugins/org#keep-skills-directory-plugins-loading) cargándose mientras se establece una lista de permitidos. Consulte [Valores de fuente válidos solo en listas de políticas](#source-values-valid-only-in-policy-lists) | Detiene los plugins del directorio de skills de cargarse |

392| `hostPattern` | `hostPattern` | No producido | Falla al cargar: `Unsupported marketplace source type` | Permite fuentes `github`, `git` y `url` cuyo host coincida | Bloquea esas fuentes |

393| `pathPattern` | `pathPattern` | No producido | Falla al cargar: `Unsupported marketplace source type` | Permite fuentes `file` y `directory` cuya `path` coincida | Bloquea esas fuentes |

394 

395<h3 id="fields-by-type">

396 Campos por tipo

397</h3>

398 

399La tabla enumera cada campo de fuente de marketplace que tiene un predeterminado, una restricción o un significado específico de su tipo.

400 

401| Campo | Tipos | Descripción |

402| :-------------- | :-------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |

403| `url` | `url` | Enlace al archivo `marketplace.json`. Claude Code descarga solo ese archivo, por lo que los plugins del marketplace no pueden usar [fuentes de ruta relativa](#relative-path-plugin-source) |

404| `url` | `git` | El repositorio git para clonar |

405| `headers` | `url` | Mapa de encabezados HTTP que Claude Code envía con la obtención, para hosts autenticados |

406| `headersHelper` | `url` | Comando que imprime encabezados cuyos valores son demasiado efímeros para listar en `headers`. Requiere Claude Code v2.1.238 o posterior. Consulte [Autenticar descargas de archivos](/docs/es/plugins/host-marketplace#authenticate-archive-downloads) |

407| `repo` | `github` | En `marketplace add` y `extraKnownMarketplaces`, `repo` debe nombrar un repositorio. `marketplace add` rechaza `owner/*` como no un atajo `owner/repo` válido; en `extraKnownMarketplaces` Claude Code lo toma literalmente y el clon falla |

408| `ref` | `github`, `git` | Rama o etiqueta. Por defecto es la rama predeterminada del repositorio |

409| `path` | `github`, `git` | La ruta del archivo marketplace dentro del repositorio. Por defecto es `.claude-plugin/marketplace.json` |

410| `path` | `file` | El archivo marketplace en sí. Claude Code lo lee en su lugar y toma el directorio dos niveles arriba como la raíz del marketplace, así que mantenga el archivo en `<root>/.claude-plugin/marketplace.json` |

411| `path` | `directory` | La raíz del marketplace, el directorio que contiene `.claude-plugin/marketplace.json` |

412| `sparsePaths` | `github`, `git` | Array de directorios para un checkout disperso, como `[".claude-plugin", "plugins"]`. `claude plugin marketplace add --sparse` lo establece |

413| `skipLfs` | `github`, `git` | Aceptado y no tiene efecto. Consulte [Mantener archivos de plugin fuera de Git LFS](/docs/es/plugins/host-marketplace#keep-plugin-files-out-of-git-lfs) |

414| `name` | `settings` | Debe ser igual a la clave `extraKnownMarketplaces` y no puede ser un [nombre reservado](#reserved-names) |

415| `plugins` | `settings` | El catálogo en línea, sin archivo alojado. Cada elemento toma `name`, `source`, `description`, `version`, `strict`, `headers` y `headersHelper`. Escriba el `source` de cada elemento como un tipo de objeto, porque una ruta relativa no tiene repositorio para resolver |

416 

417<h3 id="source-values-valid-only-in-policy-lists">

418 Valores de fuente válidos solo en listas de políticas

419</h3>

420 

421`hostPattern`, `pathPattern`, `skills-dir` y la forma `owner/*` de `repo` son válidos solo en las dos listas de políticas, `strictKnownMarketplaces` y `blockedMarketplaces`:

422 

423* **`hostPattern` y `pathPattern`**: expresiones regulares que Claude Code prueba contra una fuente antes de obtener de ella.

424* **`skills-dir`**: no es una fuente. Si establece `strictKnownMarketplaces` en absoluto, los [plugins del directorio de skills](/docs/es/plugins/org#keep-skills-directory-plugins-loading) dejan de cargarse hasta que agregue `{"source": "skills-dir"}` a esa lista.

425* **`owner/*`**: como un valor `repo` de `github`, coincide con cada repositorio bajo exactamente ese propietario de GitHub. Requiere Claude Code v2.1.223 o posterior.

426 

427Para el orden de coincidencia, la semántica exacta de `ref` y recetas, consulte [Administrar plugins para su organización](/docs/es/plugins/org).

428 

429<h3 id="source-objects-in-settings">

430 Objetos de fuente en la configuración

431</h3>

432 

433Un valor `extraKnownMarketplaces` es un mapa de nombre de marketplace a un objeto con `source`. Esta entrada registra un marketplace desde un repositorio git en su rama `main`:

434 

435```json theme={null}

436{

437 "extraKnownMarketplaces": {

438 "your-marketplace": {

439 "source": {

440 "source": "git",

441 "url": "https://git.example.com/your-org/your-marketplace.git",

442 "ref": "main"

443 }

444 }

445 }

446}

447```

448 

449`strictKnownMarketplaces` y `blockedMarketplaces` son arrays de objetos de fuente. Esta lista de permitidos admite un propietario de GitHub y un host interno:

450 

451```json theme={null}

452{

453 "strictKnownMarketplaces": [

454 { "source": "github", "repo": "your-org/*" },

455 { "source": "hostPattern", "hostPattern": "^git\\.example\\.com$" }

456 ]

457}

458```

459 

460<h2 id="validation-messages">

461 Mensajes de validación

462</h2>

463 

464`claude plugin validate <path>` toma la raíz del marketplace o el archivo marketplace en sí. Imprime errores y advertencias. Para códigos de salida y `--strict`, consulte [plugin validate](/docs/es/plugins/cli-reference#plugin-validate).

465 

466Un mensaje nombra una entrada de plugin por su índice, escrito como `plugins.1.source` o `plugins[1].source`.

467 

468Un mensaje prefijado con un índice de entrada y `plugin.json →`, como `plugins[2] plugin.json →`, es sobre los propios archivos de ese plugin. [`claude plugin validate` reporta errores](/docs/es/plugins/troubleshooting#claude-plugin-validate-reports-errors) enumera esos mensajes con sus correcciones.

469 

470Las advertencias que mencionan nombres de banderas de Claude Desktop señalan nombres que Claude Code acepta pero Claude Desktop rechaza, porque las reglas de nombre de Claude Desktop son más estrictas.

471 

472La tabla asigna mensajes de nivel de marketplace al campo sobre el que trata cada uno.

473 

474| Mensaje | Nivel | Campo |

475| :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :---------- | :--------------------------------------------------------------------------------------------------------------------------- |

476| `Marketplace must have a name` | Error | `name` está vacío |

477| `Marketplace name cannot contain spaces. Use kebab-case (e.g., "my-marketplace")` | Error | `name` |

478| `Marketplace name cannot contain path separators (/ or \), ".." sequences, or be "."` | Error | `name` |

479| `Marketplace name impersonates an official Anthropic/Claude marketplace` | Error | `name`. Consulte [Nombres reservados](#reserved-names) |

480| `Marketplace name cannot contain control or bidirectional-formatting characters` | Error | `name` contiene un carácter de control, como un escape o una nueva línea, o un carácter de formato bidireccional Unicode |

481| `Marketplace name "inline" is reserved for --plugin-dir session plugins`, y las variantes `builtin`, `skills-dir`, `synced`, `claude-plugin-test`, `npm`, `pip`, `uv`, `cargo`, `github` y `gh` | Error | `name` |

482| `Author name cannot be empty` | Error | `owner.name` |

483| `Plugin name cannot contain spaces. Use kebab-case (e.g., "my-plugin")` | Error | `plugins[i].name` |

484| `Plugin name cannot contain control or bidirectional-formatting characters` | Error | `plugins[i].name` |

485| `Duplicate plugin name "x" found in marketplace` | Error | Dos entradas comparten un `name` |

486| `plugins.i.source: Invalid input` | Error | El `source` de la entrada no coincide con ningún tipo. Consulte [Entrada inválida en una fuente](#invalid-input-on-a-source) |

487| `plugins[i].source: Path contains "..": <path>` | Error | Un `source` relativo que escapa de la raíz del marketplace |

488| `source.source: 'unsupported' is a parse-time placeholder and cannot be authored` | Error | `plugins[i].source` |

489| `Plugin "x" sets headersHelper but is not "strict": false` | Error | `plugins[i].headersHelper`, en una entrada `archive` |

490| `chain does not resolve (<reason>) — target must be a name in plugins[], a key in renames, or null` | Error | `renames.<old>` |

491| `target "x" is not a valid plugin name (PluginIdSchema)` | Error | `renames.<old>` |

492| `Unknown field 'x'. Claude Code ignores it at load time.` | Advertencia | La clave nombrada en el nivel superior, bajo `metadata`, en una entrada, o bajo el `relevance` de una entrada |

493| `Marketplace has no plugins defined` | Advertencia | `plugins` está vacío |

494| `Plugin "x" sets headers/headersHelper, which only apply to "archive" sources; they have no effect on this entry.` | Advertencia | `plugins[i].headers` o `plugins[i].headersHelper`, en una entrada cuyo `source` no es `archive` |

495| `Plugin "x" fetches its archive with a headersHelper but sets no sha256 pin` | Advertencia | `plugins[i].source.sha256` |

496| `Header "x" is a request-routing/identity header that catalog entries may not set; Claude Code drops it at download time.` | Advertencia | `plugins[i].headers.<name>` |

497| `Local source "x" is or traverses a symlink, so <path> was not read` | Advertencia | `plugins[i].source` |

498| `No marketplace description provided. Adding a description helps users understand what this marketplace offers` | Advertencia | `description` |

499| `Entry declares version "x" but <path>/plugin.json says "y". At install time, plugin.json wins` | Advertencia | `plugins[i].version`, en una entrada de ruta relativa |

500| `'relevance' must be an object containing topic and signals; got <type>. It will be ignored at load time.` | Advertencia | `plugins[i].relevance` |

501| `'metadata' must be a free-form object; got <type>. It will be ignored at load time.` | Advertencia | `plugins[i].metadata` |

502| `'experimental' must be an object containing component declarations; got <type>. It will be ignored at load time.` | Advertencia | `plugins[i].experimental` |

503| `Marketplace name "x" is reserved in Claude Desktop` | Advertencia | `name` es `org`, `org-provisioned` u `unknown`. Claude Desktop rechaza el marketplace |

504| `Marketplace name "x" is not accepted by Claude Desktop (letters, digits, ".", "_", "-"; must start alphanumeric; max 128 chars)` | Advertencia | `name`. Claude Desktop rechaza el marketplace |

505| `Plugin name "x" is not accepted by Claude Desktop (letters, digits, ".", "_", "-"; must start alphanumeric; max 128 chars)` | Advertencia | `plugins[i].name`. Claude Desktop descarta la entrada |

506 

507<h3 id="invalid-input-on-a-source">

508 Entrada inválida en una fuente

509</h3>

510 

511`Invalid input` en un `source` significa que el objeto no coincidió con ningún tipo de fuente. Verifique estas causas:

512 

513* Una ruta relativa que no comienza con `./`, que no sea `"."` o un [nombre desnudo bajo `metadata.pluginRoot`](#relative-path-plugin-source)

514* Un `package` npm que contiene `..`

515* Un tipo de `source` que no es uno de las [fuentes de plugins](#plugin-sources)

516* Un tipo conocido con un campo obligatorio faltante o de tipo incorrecto, como `github` sin `repo`

517 

518<h3 id="failures-that-validation-doesn’t-catch">

519 Fallos que la validación no detecta

520</h3>

521 

522`claude plugin validate` no reporta cada fallo. Un `hooks` de entrada escrito como una ruta de archivo o array aprueba la validación, y el error aparece solo cuando el plugin se carga, como describe [Hooks en una entrada](#hooks-in-an-entry). Los errores al obtener un `source` también aparecen solo después de instalar, no en la validación.

523 

524[`claude plugin list`](/docs/es/plugins/cli-reference) muestra un plugin que falló al cargar con su error, y [Solucionar problemas de plugins](/docs/es/plugins/troubleshooting) cubre las cadenas de tiempo de carga.

525 

526<h2 id="next-steps">

527 Próximos pasos

528</h2>

529 

530* [Crear un marketplace](/docs/es/plugins/create-marketplace): construya un marketplace a partir de estos campos e instale desde él localmente

531* [Alojar y mantener un marketplace](/docs/es/plugins/host-marketplace): dónde poner el archivo y cómo los usuarios reciben cambios

532* [Referencia de manifiesto de plugin](/docs/es/plugins/manifest-reference): los campos `plugin.json` que una entrada puede anular

533* [Administrar plugins para su organización](/docs/es/plugins/org): recetas de lista de permitidos y lista de bloqueados que usan estos valores de fuente

plugins/measure.md +193 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Medir el costo y el uso del plugin

6 

7> Mida el costo de tokens de un plugin de Claude Code, descubra si la gente aún lo usa y seleccione los eventos de telemetría para preguntas de plugins en toda la organización.

8 

9Cada sesión en la que un plugin está habilitado incluye los nombres y descripciones de sus skills, agentes y comandos en el contexto de Claude, y esos tokens se cuentan contra el uso del usuario independientemente de si el plugin se utiliza o no. Esta página muestra cómo ver ese número para un plugin, cómo reducirlo si mantiene el plugin, y dónde aparece el uso para que pueda saber si un plugin aún se está utilizando.

10 

11Esta página es para autores y mantenedores de plugins. Si administra Claude Code para una organización, [Medir en toda una flota](#measure-across-a-fleet) cubre las mismas preguntas en cada máquina.

12 

13<Note>

14 Estos casos se cubren en otras páginas:

15 

16 * **Probar qué tan confiablemente el plugin cambia el comportamiento de Claude**: consulte [Test plugins with evals](/docs/es/plugin-evals)

17 * **Reducir el contexto de su propia sesión**: consulte [Manage installed plugins](/docs/es/plugins/install#manage-installed-plugins) y la página [context window](/docs/es/context-window)

18</Note>

19 

20Comience con [Medir qué cuesta un plugin](#measure-what-a-plugin-costs).

21 

22<h2 id="measure-what-a-plugin-costs">

23 Medir qué cuesta un plugin

24</h2>

25 

26Para ver qué agrega un plugin al contexto de Claude, ejecute [`claude plugin details`](/docs/es/plugins/cli-reference#plugin-details) con el nombre del plugin. Lo ejecuta en su shell, no en el prompt de una sesión de Claude Code en ejecución. El plugin debe estar cargado: instalado, en un directorio de skills, o pasado con `--plugin-dir` en el mismo comando, como en `claude --plugin-dir ./formatter plugin details formatter`.

27 

28Este ejemplo lee un plugin instalado llamado `formatter` que tiene dos skills, un comando, un agente, un hook y un servidor MCP:

29 

30```bash theme={null}

31claude plugin details formatter

32```

33 

34```text theme={null}

35formatter 1.0.0

36 Description: Formats and lints code on save

37 Source: formatter@my-marketplace

38 

39Component inventory

40 Skills (3) format-all, format-code, lint-fix

41 Agents (1) style-reviewer

42 Hooks (1) PostToolUse (harness-only — no model context cost)

43 MCP servers (1) formatter-tools (tool schemas resolved at runtime; not counted)

44 LSP servers (0)

45 

46Projected token cost

47 Always-on: ~146 tok added to every session

48 

49Per-component (rounded)

50 component always-on on-invoke

51 format-code ~40 ~30

52 lint-fix ~50 ~30

53 style-reviewer ~40 ~40

54 format-all < 20 ~30

55 

56 On-invoke cost is paid each time a skill or agent fires.

57 Token counts are estimates and may differ from actual usage.

58```

59 

60Cada parte de la salida responde una pregunta diferente:

61 

62* **Component inventory**: lo que Claude Code encontró en el plugin. Los comandos se cuentan con skills, por lo que `format-all` aparece bajo `Skills`. Los hooks y servidores MCP no obtienen estimación de costo ni fila por componente; para ver qué agregan las herramientas MCP de un plugin, ejecute `/context` en una sesión con el plugin habilitado y lea la categoría `MCP tools`.

63* **Always-on**: los tokens que los nombres y descripciones de los skills, agentes y comandos del plugin agregan a cada sesión donde el plugin está habilitado, independientemente de si algo se ejecuta o no. Este es el número que cada usuario lleva, y el que debe reducir.

64* **Per-component**: cada fila divide un skill, agente o comando en su parte siempre activa y su costo de invocación, que es el cuerpo que se carga solo cuando ese componente se ejecuta. Use la columna always-on para encontrar qué componente contribuye más.

65 

66<h3 id="lower-the-always-on-figure">

67 Reducir la cifra always-on

68</h3>

69 

70Si mantiene el plugin, estos cambios reducen lo que agrega a cada sesión. Si solo lo usa, sus opciones son deshabilitarlo o desinstalarlo; consulte [Manage installed plugins](/docs/es/plugins/install#manage-installed-plugins).

71 

72La cifra always-on cuenta el nombre de cada componente más su `description` y frontmatter `when_to_use`. Para reducirla:

73 

74* Acorte las descripciones de skills y agentes.

75* Divida un plugin grande para que los usuarios instalen solo los componentes que necesitan.

76 

77La descripción de un skill también es lo que Claude compara con una solicitud, por lo que una más corta puede evitar que el skill se active. Después de recortar descripciones, verifique la activación con un [calificador `tool_used: Skill`](/docs/es/plugin-evals#create-your-first-eval-suite) en su suite de evaluación.

78 

79Para ver qué contribuye cada tipo de componente, consulte [plugin components](/docs/es/plugins/components).

80 

81<h3 id="cost-shown-to-users-before-install">

82 Costo mostrado a los usuarios antes de instalar

83</h3>

84 

85Los plugins en el marketplace oficial muestran su costo a los usuarios antes de instalar. En `/plugin`, cuando un usuario explora la lista de plugins de un marketplace y selecciona un plugin, el panel de detalles muestra una sección **Context cost** con una línea `Every turn:` y una línea `When invoked:`. Cuando la cifra always-on es de 2.000 tokens o más, la línea `Every turn:` aparece resaltada.

86 

87Un plugin en su propio marketplace no tiene sección **Context cost**.

88 

89<h2 id="check-whether-a-plugin-is-used">

90 Verificar si se utiliza un plugin

91</h2>

92 

93Claude Code no informa el uso de un plugin a su autor. El uso se registra en la máquina de cada persona que instaló el plugin, por lo que lo que puede aprender depende de su relación con esas personas:

94 

95* **Administra Claude Code para su organización**: los eventos de OpenTelemetry y la API de Analytics cuentan instalaciones y activaciones de skills en cada máquina. Consulte [Medir en toda una flota](#measure-across-a-fleet).

96* **Son compañeros de equipo a los que puede preguntar**: el propio Claude Code de cada usuario les muestra si aún usan el plugin, en cuatro lugares: el [panel `/plugin`](#not-used-recently-in-/plugin), [`/skill-doctor`](#find-skills-that-never-run), [`/doctor`](#unused-plugins-in-/doctor), y [`/usage`](#usage-share-in-/usage). Los cuatro son comandos que el usuario ejecuta en el prompt de Claude Code en una sesión en su propia máquina.

97* **Ninguno**: no tiene señal de uso de Claude Code para ese plugin.

98 

99<h3 id="not-used-recently-in-/plugin">

100 No utilizado recientemente en `/plugin`

101</h3>

102 

103En la pestaña **Installed** de `/plugin`, un plugin que el usuario instaló desde un marketplace se mueve bajo un encabezado **Not used recently** una vez que ha estado sin usar durante al menos 14 días y 10 sesiones. Los detalles del plugin también muestran una línea `Last used:`. Para ver qué hacen los usuarios con ese encabezado y línea, consulte [Find plugins you no longer use](/docs/es/plugins/install#find-plugins-you-no-longer-use).

104 

105El encabezado **Not used recently** nunca aparece para:

106 

107* Plugins cargados con `--plugin-dir` o desde un directorio de skills

108* Plugins habilitados a través de configuración administrada, o montados desde un [directorio seed](/docs/es/plugins/org#seed-containers-and-ci)

109* Plugins que incluyen un tema, estilo de salida, monitor o flujo de trabajo, porque están en uso sin una invocación rastreada

110 

111El [servidor de lenguaje](/docs/es/plugins/components#lsp-servers) de un plugin se cuenta como utilizado cuando entrega diagnósticos o responde una solicitud de navegación de código, por lo que un plugin LSP cuyo servidor está activo en sus sesiones no se enumera como sin usar.

112 

113Cuando la organización del usuario establece [`strictKnownMarketplaces`](/docs/es/plugins/org#restrict-what-users-can-install), ni el encabezado ni la línea `Last used:` aparecen.

114 

115<h3 id="find-skills-that-never-run">

116 Encontrar skills que nunca se ejecutan

117</h3>

118 

119Ejecute `/skill-doctor` para ver qué cuesta cada uno de sus skills y con qué frecuencia se utiliza. Marca skills que están en la lista de skills de Claude pero nunca han sido invocados, incluidos skills de plugins.

120 

121En una sesión interactiva, el informe se abre en la pestaña **Stats** del administrador `/plugin`. Consulte [Find unused skills](/docs/es/skills#find-unused-skills) para ver qué cubre el informe y dónde está disponible.

122 

123<h3 id="unused-plugins-in-/doctor">

124 Plugins sin usar en `/doctor`

125</h3>

126 

127El chequeo `/doctor` enumera cada skill instalado por el usuario, servidor MCP y plugin, y recomienda deshabilitar los que no se utilizaron. Consulte [`/doctor` en la referencia de comandos](/docs/es/commands#all-commands).

128 

129<h3 id="usage-share-in-/usage">

130 Compartir uso en `/usage`

131</h3>

132 

133En un plan Pro, Max, Team o Enterprise, el desglose `/usage` atribuye el uso reciente a skills, subagentes, plugins y servidores MCP como una parte del total. Consulte [Using the `/usage` command](/docs/es/costs#using-the-/usage-command).

134 

135<h2 id="measure-across-a-fleet">

136 Medir en toda una flota

137</h2>

138 

139Si administra Claude Code para una organización, puede medir el costo y el uso del plugin en cada máquina desde cualquiera de estas fuentes:

140 

141* **Eventos de OpenTelemetry**: Claude Code los exporta a su propio backend una vez que [configura un exportador](/docs/es/monitoring-usage). Consulte [OpenTelemetry events for plugin installs and use](#pick-the-opentelemetry-event-for-each-question).

142* **API de Analytics**: servida desde los registros de Anthropic, sin necesidad de exportador. Consulte [Query the Analytics API](#query-the-analytics-api).

143 

144<h3 id="pick-the-opentelemetry-event-for-each-question">

145 Eventos de OpenTelemetry para instalaciones y uso de plugins

146</h3>

147 

148Estos eventos y atributos de OpenTelemetry responden cada pregunta de plugin desde su backend:

149 

150| Pregunta | Evento o atributo de OpenTelemetry |

151| :-------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

152| Qué plugins se instalan y de dónde | [`claude_code.plugin_installed`](/docs/es/monitoring-usage#plugin-installed-event), uno por instalación |

153| Qué plugins están activos en cuántas sesiones | [`claude_code.plugin_loaded`](/docs/es/monitoring-usage#plugin-loaded-event), uno por plugin habilitado al inicio de sesión |

154| Qué skills se activan y qué plugin los posee | [`claude_code.skill_activated`](/docs/es/monitoring-usage#skill-activated-event), con `plugin.name` y `marketplace.name` para skills de plugin |

155| Qué reportan los hooks de un plugin | [`claude_code.hook_plugin_metrics`](/docs/es/monitoring-usage#hook-plugin-metrics-event), emitido solo para hooks en plugins del marketplace oficial |

156| Qué cuesta un plugin en gasto de API | `plugin.name` y `marketplace.name` en el [contador de costo](/docs/es/monitoring-usage#cost-counter), establecido cuando el skill activo o subagente pertenece a un plugin |

157 

158<h3 id="redacted-plugin-names-in-your-backend">

159 Nombres de plugins redactados en su backend

160</h3>

161 

162Los plugins del marketplace oficial reportan su nombre de plugin y nombre de marketplace a su backend literalmente. El nombre de todos los demás plugins se redacta u omite por defecto, incluido un plugin del propio marketplace de su organización. El [nivel de confianza](/docs/es/plugins/security#find-plugins-in-telemetry) del plugin decide cuál.

163 

164Para obtener nombres reales en algunos eventos, establezca la variable de entorno [`OTEL_LOG_TOOL_DETAILS`](/docs/es/monitoring-usage#common-configuration-variables) en `1` en las máquinas que exportan telemetría, por ejemplo en el bloque `env` de la misma [configuración administrada](/docs/es/monitoring-usage#administrator-configuration) que configura el exportador:

165 

166| Evento | Predeterminado | Con `OTEL_LOG_TOOL_DETAILS=1` |

167| :------------------------------------ | :------------------------------------------------------------------------------------------------ | :------------------------------------------------- |

168| `plugin_loaded` | `plugin.name` y `marketplace.name` son la cadena literal `third-party` | Nombres reales |

169| `plugin_installed`, `skill_activated` | `plugin.name` y `marketplace.name` omitidos; en `skill_activated`, `skill.name` es `custom_skill` | Nombres reales |

170| Contador de costo | `plugin.name` es `third-party`; `marketplace.name` ausente | `plugin.name` real; `marketplace.name` aún ausente |

171 

172En `plugin_loaded`, `plugin_id_hash` aún identifica cada plugin por defecto, por lo que puede contar plugins de terceros distintos.

173 

174<h3 id="query-the-analytics-api">

175 Consultar la API de Analytics

176</h3>

177 

178En el plan Enterprise, la API de Analytics responde "qué plugins instala e invoca mi organización" desde los registros de Anthropic, sin necesidad de exportador. [`GET /v1/organizations/analytics/plugins`](https://platform.claude.com/docs/en/api/admin/analytics/plugins/list) devuelve recuentos de instalación e invocación por plugin, por día en Claude Code y Cowork, que puede agrupar por usuario, grupo RBAC o producto.

179 

180La actividad de plugin que llega a Anthropic sin un nombre de plugin aparece en una fila agregada `third-party`. [Find plugins in telemetry](/docs/es/plugins/security#find-plugins-in-telemetry) dice qué plugins reporta Claude Code por nombre.

181 

182Autentique la solicitud con una clave de API que tenga el alcance `read:analytics`, que un Propietario Principal crea como se describe en [Access data programmatically](/docs/es/analytics#access-data-programmatically).

183 

184Consulte la [referencia del endpoint](https://platform.claude.com/docs/en/api/admin/analytics/plugins/list) para los parámetros y campos de respuesta.

185 

186<h2 id="next-steps">

187 Próximos pasos

188</h2>

189 

190* [Test plugins with evals](/docs/es/plugin-evals): mida qué tan confiablemente el plugin dirige a Claude, no solo qué cuesta

191* [Reducir la cifra always-on](#lower-the-always-on-figure): qué cambiar en el plugin para reducir su costo por turno

192* [Plugin security and trust](/docs/es/plugins/security#find-plugins-in-telemetry): qué campos de telemetría llevan nombres de plugins y cuándo se redactan

193* [Monitoring usage](/docs/es/monitoring-usage): la referencia completa de eventos de OpenTelemetry

plugins/org.md +460 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Administrar plugins de Claude Code para su organización

6 

7> Controle qué plugins instala Claude Code y permite en todas las máquinas de su organización mediante configuración administrada.

8 

9La configuración administrada le permite decidir qué plugins instala Claude Code y permite en todas las máquinas de su organización. Los usuarios no pueden anularla. La entrega se realiza a través de [configuración administrada por servidor](/docs/es/server-managed-settings) desde la consola de administración de claude.ai o como configuración administrada por punto final a través de MDM o un archivo `managed-settings.json`. La mayoría de los controles en esta página solo tienen efecto desde la configuración administrada.

10 

11Esta página es para administradores y la configuración aquí rige Claude Code.

12 

13<Note>

14 Estos casos se tratan en otras páginas:

15 

16 * **Instalar plugins para usted mismo**: comience en [Install plugins](/docs/es/plugins/install)

17 * **Controlar qué plugins pueden usar los miembros en claude.ai y Cowork**: consulte [Manage plugins for your organization](https://support.claude.com/en/articles/13837433) en el centro de ayuda

18 * **La página de plugins en la configuración de administración de claude.ai**: [**Organization settings > Plugins & skills**](https://claude.ai/admin-settings/skills?tab=inventory) activa los plugins para las cuentas de claude.ai de los miembros, y esos llegan a Claude Code como [synced plugins](/docs/es/plugins/loading#synced-plugins). No establece ninguna de las claves en esta página

19</Note>

20 

21Las secciones siguen el orden que toman la mayoría de los despliegues: [requerir plugins](#pre-install-and-require-plugins) para todos o por repositorio, [sembrar contenedores e IC](#seed-containers-and-ci), [restringir](#restrict-what-users-can-install) lo que los usuarios pueden agregar por su cuenta, [establecer política de actualización](#set-update-policy), luego [auditar](#audit-and-review) lo que está instalado. Para revisar cada clave de política en un solo lugar, consulte la [matriz de control](#control-matrix).

22 

23<h2 id="pre-install-and-require-plugins">

24 Pre-install and require plugins

25</h2>

26 

27Un marketplace es un catálogo de plugins que Claude Code obtiene de un repositorio git, una URL o una ruta local. Una vez que registra un marketplace en una máquina, Claude Code puede instalar plugins desde él.

28 

29Para instalar plugins para una flota, establezca dos claves juntas en [managed settings](/docs/es/managed-settings), el archivo de política o la política entregada por servidor que cada máquina en su organización lee: `extraKnownMarketplaces` registra un marketplace en cada máquina, y `enabledPlugins` nombra los plugins a instalar y habilitar desde él. [Choose a delivery mechanism](#choose-a-delivery-mechanism) cubre cómo la configuración administrada llega a cada máquina.

30 

31<h3 id="choose-a-delivery-mechanism">

32 Choose a delivery mechanism

33</h3>

34 

35La configuración administrada llega a una máquina a través de uno de tres mecanismos de entrega:

36 

37* **Server-managed settings**: establezca las claves de plugin como JSON en [**Organization settings > Claude Code > Managed settings**](https://claude.ai/admin-settings/claude-code). Requiere un [Owner role](/docs/es/server-managed-settings#access-control) en su organización Claude. Una sesión en la nube obtiene esta configuración antes de instalar plugins.

38* **MDM policies**: en macOS, entregue un plist cuyas claves de nivel superior sean las claves de configuración. En Windows, almacene todo el documento JSON como una cadena en un valor de registro. El dominio plist y la clave de registro están en [Where each mechanism stores the policy](/docs/es/managed-settings#where-each-mechanism-stores-the-policy).

39* **Managed settings file**: coloque un `managed-settings.json` en la ruta del sistema de la plataforma. También puede agregar archivos al directorio drop-in `managed-settings.d/` junto a él. Las rutas de archivo por plataforma están en [Where each mechanism stores the policy](/docs/es/managed-settings#where-each-mechanism-stores-the-policy), y las reglas de fusión drop-in están en [Split a file-based policy across teams](/docs/es/managed-settings#split-a-file-based-policy-across-teams).

40 

41Use configuración administrada por servidor si tiene una organización Claude for Teams o Enterprise en claude.ai y sus dispositivos no están todos bajo MDM. De lo contrario, use una política MDM o el archivo de configuración administrada. Para el equilibrio, consulte [Choose between server-managed and endpoint-managed settings](/docs/es/server-managed-settings#choose-between-server-managed-and-endpoint-managed-settings).

42 

43<h4 id="which-managed-source-applies-on-a-machine">

44 Which managed source applies on a machine

45</h4>

46 

47De forma predeterminada, solo una de estas tres fuentes se aplica en una máquina. Claude Code usa la primera que entrega una clave de política, verificando primero la configuración administrada por servidor, luego las políticas MDM, luego el archivo de configuración administrada. Si la configuración administrada por servidor entrega incluso una clave de política no relacionada, Claude Code ignora las claves de plugin en una política MDM o archivo de configuración administrada en esa máquina, aparte de las [claves que lee de cada fuente](/docs/es/managed-settings#keys-read-from-every-admin-source).

48 

49Para aplicar cada fuente en su lugar, establezca [`managedSourcesBehavior`](/docs/es/managed-settings#compose-every-managed-source) en `"merge"`.

50 

51[How Claude Code combines managed sources](/docs/es/managed-settings#how-claude-code-combines-managed-sources) también enumera las claves que Claude Code lee de cada fuente en ambos modos.

52 

53<h3 id="require-a-marketplace-and-its-plugins">

54 Require a marketplace and its plugins

55</h3>

56 

57Agregue el marketplace bajo `extraKnownMarketplaces`, con clave por el `name` propio del marketplace desde su `marketplace.json`. Luego agregue cada plugin bajo `enabledPlugins` como `plugin-name@marketplace-name`. Cada entrada de marketplace lleva un objeto `source` con un campo `source` que nombra el tipo, como `github`. Este ejemplo de configuración administrada registra un marketplace de organización y fuerza la habilitación de dos plugins desde él:

58 

59```json theme={null}

60{

61 "extraKnownMarketplaces": {

62 "your-marketplace": {

63 "source": { "source": "github", "repo": "your-org/your-marketplace" },

64 "autoUpdate": true

65 }

66 },

67 "enabledPlugins": {

68 "code-formatter@your-marketplace": true,

69 "deploy-helper@your-marketplace": true

70 }

71}

72```

73 

74Después de que la configuración llegue a una máquina, Claude Code registra el marketplace e instala los dos plugins al inicio de la siguiente sesión del usuario. Los usuarios los ven en `/plugin`, y deshabilitar uno en su propio alcance no impide que se cargue, porque la configuración administrada tiene precedencia sobre todos los demás alcances.

75 

76Para bloquear un plugin en todos los alcances y ocultarlo del listado del marketplace, establézcalo en `false` en el `enabledPlugins` administrado en su lugar.

77 

78Ajuste los campos `autoUpdate` y `source` para su marketplace:

79 

80* **`autoUpdate`**: `true` mantiene el marketplace y sus plugins actualizándose en segundo plano, y `false` lo desactiva. Consulte [Set update policy](#set-update-policy).

81* **`source`**: `github` es uno de varios tipos de fuente. Una fuente `git` toma una `url` para GitLab o un host interno, y una fuente `url` toma la dirección de un `marketplace.json` alojado. Cada forma de fuente está en la [marketplace reference](/docs/es/plugins/marketplace-reference).

82 

83Si el marketplace es un repositorio git privado, cada usuario necesita acceso de lectura a él. El clon de un marketplace basado en git se ejecuta con git en la máquina del usuario, utilizando credenciales almacenadas y sin indicadores. Para usuarios sin cuentas de host git, use un [seed](#seed-containers-and-ci) en su lugar.

84 

85Una entrada administrada también anula una entrada de marketplace con el mismo nombre o una copia `--plugin-dir` de otra fuente:

86 

87* **Marketplaces**: una entrada de marketplace administrada reemplaza una entrada de menor precedencia con el mismo nombre, y los campos de las dos entradas no se fusionan.

88* **Copias `--plugin-dir`**: `--plugin-dir` carga un plugin desde un directorio local para una sesión. Para lo que sucede cuando el nombre de esa copia coincide con un plugin que su `enabledPlugins` administrado nombra, consulte [Name conflicts](/docs/es/plugins/loading#name-conflicts).

89 

90El marketplace oficial de Anthropic `claude-plugins-official` no necesita una entrada `extraKnownMarketplaces` cuando `enabledPlugins` establece uno de sus plugins en `true`. Esa entrada `name@claude-plugins-official` declara el marketplace por sí sola, dondequiera que se apliquen estas claves. Si no habilita ninguno de sus plugins y aún desea que se registre en cada máquina, dele una entrada explícita, como [Allow the official marketplace and your own](#allow-the-official-marketplace-and-your-own) hace.

91 

92<h3 id="require-plugins-per-repository">

93 Require plugins per repository

94</h3>

95 

96Para cubrir los colaboradores de un repositorio en lugar de toda su flota, establezca `extraKnownMarketplaces` y `enabledPlugins` en el `.claude/settings.json` de ese repositorio. Las entradas `extraKnownMarketplaces` se aplican solo en una carpeta que el colaborador ha confiado, y en una carpeta no confiada Claude Code las ignora sin un mensaje:

97 

98* **Sesiones interactivas**: Claude Code registra el marketplace solo después de que el colaborador acepta el [workspace trust dialog](/docs/es/permissions#what-runs-before-you-trust-a-folder) para esa carpeta.

99* **[Ejecuciones no interactivas `-p`](/docs/es/headless)**: las entradas se aplican solo en una carpeta cuya confianza el usuario ya aceptó interactivamente, o cuya bandera `hasTrustDialogAccepted` establece en `~/.claude.json`.

100 

101Un plugin que el marketplace enumera por una ruta relativa se carga desde la copia del marketplace una vez que se aplican las entradas `extraKnownMarketplaces` del repositorio. Un plugin cuya entrada de marketplace apunta a una fuente externa en su lugar, como el repositorio de GitHub del plugin, no se instala solo desde la configuración del repositorio. Cada colaborador ve `Plugin "<name>" is enabled in project settings but isn't installed` hasta que ejecuta `claude plugin install <name>@<marketplace> --scope project`, como [Install plugins](/docs/es/plugins/install) describe.

102 

103Si usa una fuente `directory` o `file` local 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.

104 

105Para desplegar un paquete de plugins con dependencias, coloque el plugin del paquete en `enabledPlugins`, como [Plugin dependencies](/docs/es/plugins/dependencies) describe.

106 

107<h3 id="when-each-surface-applies-the-plugin-keys">

108 When each surface applies the plugin keys

109</h3>

110 

111La tabla muestra cuándo cada tipo de sesión de Claude Code aplica `extraKnownMarketplaces` y `enabledPlugins`, desde la configuración administrada y desde el `.claude/settings.json` de un repositorio. Para la aplicación de escritorio y las extensiones IDE, consulte [Install a plugin](/docs/es/plugins/install#install-a-plugin).

112 

113| Surface | Managed `extraKnownMarketplaces` and `enabledPlugins` | Repository `.claude/settings.json` |

114| :-------------------- | :---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------- |

115| Terminal, interactive | Applied at session start on every machine that receives the settings | `extraKnownMarketplaces` applied after trust; `enabledPlugins` applied at session start |

116| `-p` and CI | Applied at session start, with installs running in the background | `extraKnownMarketplaces` in trusted folders only; `enabledPlugins` applied |

117| Cloud sessions | In an Anthropic-hosted environment, only server-managed settings reach the session, which waits for them before it installs plugins. MDM policies and managed settings files stay on the user's machine. For a self-hosted environment, see [Where and when a policy applies](/docs/es/managed-settings#where-and-when-a-policy-applies) | See the **Cloud session** tab under [Install a plugin](/docs/es/plugins/install#install-a-plugin) |

118 

119En una ejecución `-p` o CI, los marketplaces y plugins se instalan en segundo plano, por lo que un plugin puede faltar en el primer turno. Establezca `CLAUDE_CODE_SYNC_PLUGIN_INSTALL=1` para hacer que la ejecución espere la instalación antes de su primera consulta.

120 

121<h3 id="confirm-the-rollout">

122 Confirm the rollout

123</h3>

124 

125Verifique que el marketplace y los plugins llegaron a una máquina o en una ejecución de CI:

126 

127* **En una máquina**: inicie Claude Code y ejecute `/plugin`. El marketplace y los plugins se enumeran.

128* **En CI**: ejecute `claude -p` con `--output-format stream-json --verbose`. El evento `init` enumera los plugins cargados bajo `plugins`.

129 

130<h2 id="seed-containers-and-ci">

131 Seed containers and CI

132</h2>

133 

134Para imágenes de contenedor y ejecutores de CI que no pueden clonar en tiempo de ejecución, pre-rellene un directorio de plugins en tiempo de compilación y apunte `CLAUDE_CODE_PLUGIN_SEED_DIR` a él. Claude Code registra los marketplaces del seed al inicio y carga cachés de plugins desde el seed en su lugar, sin clonar.

135 

136Un seed también sirve a usuarios que no tienen una cuenta de host git.

137 

138<Note>

139 En entornos CI/CD, configure un asistente de credenciales 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 un token de aplicación.

140</Note>

141 

142<Steps>

143 <Step title="Install into the seed at build time">

144 Establezca `CLAUDE_CODE_PLUGIN_CACHE_DIR` en la ruta del seed para que el marketplace y los plugins se instalen allí en lugar de `~/.claude/plugins`:

145 

146 ```bash theme={null}

147 CLAUDE_CODE_PLUGIN_CACHE_DIR=/opt/claude-seed claude plugin marketplace add your-org/your-marketplace

148 CLAUDE_CODE_PLUGIN_CACHE_DIR=/opt/claude-seed claude plugin install code-formatter@your-marketplace

149 ```

150 

151 El seed tiene el mismo diseño que `~/.claude/plugins`: `known_marketplaces.json`, `marketplaces/<name>/`, y `cache/<marketplace>/<plugin>/<version>/`. Puede montar el seed en una ruta diferente a la que lo compiló.

152 </Step>

153 

154 <Step title="Point the runtime at the seed">

155 Establezca `CLAUDE_CODE_PLUGIN_SEED_DIR=/opt/claude-seed` en el entorno del contenedor. Para usar varios seeds, separe sus rutas con `:` en Unix o `;` en Windows. Claude Code usa el primer seed que contiene un marketplace o caché de plugin dado.

156 </Step>

157 

158 <Step title="Enable the plugins">

159 Los plugins en un seed no se habilitan por sí solos. Establezca `enabledPlugins` para cada plugin de seed que desee cargar, en la configuración administrada o en el `.claude/settings.json` del repositorio.

160 </Step>

161</Steps>

162 

163Para verificar un seed, ejecute `claude -p` con `--output-format stream-json --verbose` en la imagen. En la lista `plugins` del evento `init`, la `path` de cada plugin cargado está bajo el seed, como `/opt/claude-seed/cache/your-marketplace/code-formatter/1.0.0`.

164 

165Los marketplaces de seed siguen estas reglas:

166 

167* **Read-only**: Claude Code nunca escribe en el seed y fuerza `autoUpdate` apagado para marketplaces de seed.

168* **Las entradas de seed tienen precedencia**: en cada inicio, un marketplace declarado en el seed sobrescribe la entrada del usuario con el mismo nombre. Los usuarios optan por no participar en un plugin de seed con `claude plugin disable`, no eliminando el marketplace.

169* **La actualización y eliminación fallan**: `claude plugin marketplace update <name>` y `remove` sin `--scope` en un marketplace de seed fallan con un mensaje que nombra el directorio del seed.

170* **La política aún se aplica**: la [allowlist y blocklist](#restrict-what-users-can-install) verifican la fuente registrada de un marketplace de seed también. Permita la fuente desde la que compiló el seed.

171 

172Para flotas sin acceso git saliente, combine un seed con fuentes de marketplace `directory` o `file` en un montaje compartido. Establezca también `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1`, que también desactiva [plugin auto-update](/docs/es/plugins/loading#when-auto-update-runs). Si hay un proxy disponible, consulte [Proxy configuration](/docs/es/network-config#proxy-configuration) para las variables a establecer.

173 

174<h2 id="restrict-what-users-can-install">

175 Restrict what users can install

176</h2>

177 

178La allowlist administrada `strictKnownMarketplaces` y la blocklist `blockedMarketplaces` deciden de qué fuentes de marketplace pueden venir los plugins. La fuente de un marketplace es el repositorio git, URL o ruta local que Claude Code obtiene de él. Ambas listas coinciden con la fuente del marketplace del que viene un plugin, no con la entrada propia del plugin dentro de ese marketplace.

179 

180Para el bloqueo común, que permite el marketplace oficial y el suyo, consulte [Allow the official marketplace and your own](#allow-the-official-marketplace-and-your-own). Emparéjelo con [`disableSideloadFlags`](#control-matrix) para que los usuarios no puedan cargar plugins desde un directorio local o URL tampoco.

181 

182Ambas listas se aplican antes de que se descargue nada y nuevamente al inicio de la sesión:

183 

184* **Antes de una descarga**: las listas se aplican cuando un usuario agrega un marketplace y en cada instalación, actualización, actualización y auto-actualización.

185* **Al inicio de la sesión**: las listas se aplican nuevamente a los plugins que ya están instalados, por lo que un plugin instalado cuya fuente de marketplace ya no coincide no se carga. `/plugin` lo enumera con `Marketplace "<name>" is not in the allowed marketplace list` o `Marketplace "<name>" is blocked by enterprise policy`.

186 

187Dónde se aplican las dos listas depende de dónde las establezca:

188 

189* **La consola de administración de claude.ai**: Claude Code aplica ambas listas en las sesiones que [leen configuración administrada por servidor](/docs/es/managed-settings#where-and-when-a-policy-applies). claude.ai también las verifica cuando alguien en su organización agrega un nuevo marketplace desde un repositorio git en claude.ai, o desde **Customize** en la aplicación de escritorio de Claude fuera de su pestaña Code. Eso cubre un marketplace que un miembro agrega para su propia cuenta y uno agregado para toda la organización bajo [**Organization settings > Plugins**](https://claude.ai/admin-settings/plugins). claude.ai rechaza un repositorio que la allowlist no admite o que la blocklist nombra. No vuelve a verificar un marketplace que se agregó en cualquiera de los dos lugares antes de establecer las listas, y no verifica plugins cargados.

190* **Un archivo de configuración administrada, política de nivel de SO u otra fuente administrada**: Claude Code aplica ambas listas donde lee esa fuente. claude.ai no la lee.

191 

192Mientras se establezca cualquier allowlist, o una blocklist nombre cualquier fuente que no sea [`skills-dir`](#blocklist-with-blockedmarketplaces), un plugin cuyo marketplace Claude Code no puede encontrar no se carga. `/plugin` muestra el error de política para él en lugar de un error de no encontrado. El caso común es una entrada `enabledPlugins` obsoleta para un marketplace que nadie registró.

193 

194<h3 id="control-matrix">

195 Control matrix

196</h3>

197 

198La tabla enumera cada clave de política de plugin, lo que aplica y lo que no puede hacer.

199 

200| Key | What it enforces | What it can't do |

201| :----------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

202| `strictKnownMarketplaces` | Allowlist de fuentes de marketplace. `[]` bloquea cada fuente, incluido el marketplace oficial. Alias: `allowedMarketplaces` | No registra un marketplace, restringe entradas dentro de un marketplace permitido, o bloquea `--plugin-dir` |

203| `blockedMarketplaces` | Blocklist de fuentes de marketplace, verificada antes de la allowlist | No bloquea un marketplace ya registrado desde una fuente que no coincide |

204| `syncClaudeAiPlugins` | Establezca `false` para detener que Claude Code descargue y cargue los plugins [sincronizados desde claude.ai](/docs/es/plugins/loading#synced-plugins) para la cuenta de cada usuario. Requiere Claude Code v2.1.273 o posterior | No desactiva un plugin sincronizado. Para eso, establezca `"<name>@synced": false` en [`enabledPlugins`](/docs/es/settings-reference#enabledplugins) |

205| `enabledPlugins` | `true` fuerza la habilitación, `false` bloquea en todos los alcances y oculta el plugin | No instala un plugin cuyo marketplace no está registrado o permitido |

206| `disableSideloadFlags` | Rechaza `--plugin-dir`, `--plugin-url`, `--agents`, la opción `plugins` del SDK de Agent, y `--mcp-config` no SDK al inicio, y rechaza carpetas nombradas en la variable [`CLAUDE_CODE_PLUGIN_DIRS`](/docs/es/env-vars#variables) de la misma manera | No restringe `.mcp.json`, `claude mcp add`, o servidores proporcionados por SDK. Emparéjelo con [`allowedMcpServers`](/docs/es/managed-mcp) |

207| `disableCommandPluginSources` | Bloquea plugins con una fuente `command` de instalar, actualizar o cargar. Una fuente `command` es una cuyo directorio de plugin se produce ejecutando un comando en la máquina. Cuando no se establece, toma el valor de `allowManagedHooksOnly` | No afecta otros tipos de fuente |

208| `allowManagedHooksOnly` | Restringe qué hooks se ejecutan. Consulte [`allowManagedHooksOnly`](/docs/es/settings-reference#allowmanagedhooksonly) | No confía en hooks de plugins que los usuarios habilitan a sí mismos |

209| `strictPluginOnlyCustomization` | Bloquea skills, agents, hooks y servidores MCP que no vienen de un plugin, configuración administrada o built-ins de Claude Code. Establezca `true` para cubrir los cuatro tipos, o una matriz de valores `skills`, `agents`, `hooks` y `mcp` como `["skills", "hooks"]` para cubrir algunos | No restringe qué plugins instalan los usuarios. Emparéjelo con `strictKnownMarketplaces` |

210| `pluginSuggestionMarketplaces` | Marketplaces cuyos plugins pueden aparecer como sugerencias de instalación. Consulte [Recommend plugins](#recommend-plugins) | No afecta los consejos built-in |

211| `pluginTrustMessage` | Agrega su texto al aviso de confianza que `/plugin` muestra antes de que se instale un plugin | No cambia el texto del aviso en sí |

212| `allowedChannelPlugins` | Reemplaza la lista predeterminada de plugins permitidos para enviar mensajes de canal. Requiere `channelsEnabled: true` | Consulte [Restrict which channel plugins can run](/docs/es/channels#restrict-which-channel-plugins-can-run) |

213| [`CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL=1`](/docs/es/env-vars) | Detiene las sesiones de terminal interactivas de auto-registrar el marketplace oficial | No elimina un marketplace ya registrado. La allowlist y blocklist cierran el mismo auto-registro sin él. Una máquina que comenzó una vez con él establecido no reanuda el auto-registro después de desestablecerlo |

214 

215Cada clave en la tabla es una configuración administrada, aparte de `enabledPlugins`, `syncClaudeAiPlugins` y `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL`:

216 

217* **`enabledPlugins`**: puede establecerla en cualquier alcance, y la configuración administrada la bloquea.

218* **`syncClaudeAiPlugins`**: cada usuario también puede establecerla en su propia configuración de usuario o local. Consulte su [alcance en la referencia de configuración](/docs/es/settings-reference#syncclaudeaiplugins).

219* **`CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL`**: esta es una variable de entorno que entrega a través del bloque `env` administrado que se muestra bajo [Turn updates off for the whole fleet](#turn-updates-off-for-the-whole-fleet).

220 

221Cada clave de configuración aquí tiene una entrada en la [settings reference](/docs/es/settings-reference).

222 

223<h4 id="aliases-for-the-marketplace-keys">

224 Aliases for the marketplace keys

225</h4>

226 

227`strictKnownMarketplaces` también puede escribirse como `allowedMarketplaces`, y `extraKnownMarketplaces` también puede escribirse como `additionalMarketplaces`.

228 

229* **Version**: los alias requieren Claude Code v2.1.232 o posterior, y los clientes más antiguos los ignoran. En un archivo que una flota mixta lee, mantenga los nombres canónicos.

230* **Ambas grafías establecidas**: cuando un archivo establece ambas grafías, se aplica el valor de la clave canónica.

231 

232<h3 id="allowlist-with-strictknownmarketplaces">

233 Allowlist with `strictKnownMarketplaces`

234</h3>

235 

236Establezca la allowlist en una lista de estos objetos de fuente. La mayoría de las entradas coinciden exactamente, las entradas `hostPattern` y `pathPattern` coinciden como expresiones regulares, y los comodines de propietario de `github` coinciden por propietario:

237 

238* **`github`**: `{ "source": "github", "repo": "your-org/approved-plugins" }`, con `ref` y `path` opcionales.

239* **Comodín de propietario de `github`**: `{ "source": "github", "repo": "your-org/*" }` coincide con cada repositorio bajo ese propietario. El `*` debe representar el nombre completo del repositorio. Claude Code ignora entradas como `*/plugins` y `your-org/tools-*` como inválidas, por lo que no coinciden con nada. Requiere Claude Code v2.1.223 o posterior.

240* **`git`**: `{ "source": "git", "url": "https://gitlab.example.com/tools/plugins.git" }`, con `ref` y `path` opcionales.

241* **`url`**: `{ "source": "url", "url": "https://plugins.example.com/marketplace.json" }`, con `headers` opcionales.

242* **`file` y `directory`**: `{ "source": "file", "path": "/opt/marketplace/marketplace.json" }` o `{ "source": "directory", "path": "/opt/marketplace/plugins" }`, con rutas absolutas.

243* **`hostPattern`**: `{ "source": "hostPattern", "hostPattern": "^github\\.example\\.com$" }`, coincidido contra el host de fuentes `github`, `git` y `url`. El patrón coincide en cualquier lugar del nombre de host, así que anclelo con `^` y `$` como se muestra para coincidir con el host completo. Una fuente `github` siempre cuenta como `github.com`. Use una entrada `hostPattern` para un GitHub Enterprise Server o host GitLab donde los desarrolladores crean sus propios marketplaces. La [página GHES](/docs/es/github-enterprise-server#allowlist-ghes-marketplaces-in-managed-settings) tiene el ejemplo trabajado.

244* **`pathPattern`**: `{ "source": "pathPattern", "pathPattern": "^/opt/approved/" }`, coincidido contra la `path` de fuentes `file` y `directory`. El patrón coincide en cualquier lugar de la ruta, así que comience con `^` para fijar un prefijo de directorio. `".*"` permite cada ruta local.

245* **`skills-dir`**: `{ "source": "skills-dir" }` mantiene [skills-directory plugins](#keep-skills-directory-plugins-loading) cargándose mientras se establece una allowlist, y no coincide con ningún marketplace.

246 

247<h4 id="how-entries-match">

248 How entries match

249</h4>

250 

251Una entrada `url` coincide en su valor `url`; `headers` no se comparan. Para entradas `github` y `git`, el `repo` o `url`, el `ref` y la `path` deben coincidir todos, o estar ausentes en ambos lados:

252 

253* Una entrada sin `ref` no cubre una fuente con `ref: "main"`.

254* Una entrada para `your-org/your-marketplace` no cubre una URL `git` que clona el mismo repositorio.

255* Una barra diagonal final, un sufijo `.git` o `ssh://` en lugar de `https://` es un valor diferente. Cuando un marketplace puede clonarse por más de una URL, prefiera una entrada `hostPattern`.

256 

257Las entradas de comodín de propietario siguen las reglas exactas para `ref` y coinciden con cualquier `path` dentro del repositorio a menos que la entrada fije una. La coincidencia de comodín distingue mayúsculas de minúsculas en la allowlist.

258 

259<h4 id="keep-skills-directory-plugins-loading">

260 Keep skills-directory plugins loading

261</h4>

262 

263Los plugins de directorio de skills son los plugins que los usuarios mantienen bajo `~/.claude/skills/` o el `.claude/skills/` de un proyecto en carpetas que llevan un `.claude-plugin/plugin.json`. Si establece cualquier allowlist sin una entrada `{ "source": "skills-dir" }`, dejan de cargarse. Los [skills](/docs/es/skills) simples, es decir, un `SKILL.md` sin ese manifiesto, siguen cargándose.

264 

265<h4 id="marketplaces-hosted-on-claude-ai">

266 Marketplaces hosted on claude.ai

267</h4>

268 

269La allowlist y blocklist coinciden con un [marketplace alojado en claude.ai](/docs/es/plugins/install#add-from-claude-ai) por su host. Para permitir o bloquear uno, agregue una entrada `hostPattern` que coincida con `claude.ai` a `strictKnownMarketplaces` o `blockedMarketplaces`. En la allowlist, tal entrada admite los marketplaces de claude.ai de su organización y los marketplaces predeterminados de claude.ai, pero no un marketplace hecho de cargas propias de claude.ai de un miembro o uno cuyo alcance claude.ai no declaró. Requiere Claude Code v2.1.273 o posterior.

270 

271<h4 id="lock-every-source-out">

272 Lock every source out

273</h4>

274 

275Una allowlist vacía, `[]`, bloquea cada fuente de marketplace, incluido el marketplace oficial.

276 

277Este bloqueo no cubre los plugins [sincronizados desde claude.ai](/docs/es/plugins/loading#synced-plugins), que Claude Code descarga de la cuenta de cada usuario en lugar de desde un marketplace. Para detener esos también, establezca [`syncClaudeAiPlugins`](/docs/es/settings-reference#syncclaudeaiplugins) en `false` en la configuración administrada, o desactive Skills para su organización en claude.ai.

278 

279<h3 id="blocklist-with-blockedmarketplaces">

280 Blocklist with `blockedMarketplaces`

281</h3>

282 

283`blockedMarketplaces` toma los mismos objetos de fuente que [`strictKnownMarketplaces`](#allowlist-with-strictknownmarketplaces) y se verifica primero, por lo que una fuente en ambas listas se bloquea. La coincidencia de blocklist es más amplia que la coincidencia de allowlist:

284 

285* Las URLs de Git se canonicalizan, por lo que las formas `git@` y `https://`, sufijos `.git` y barras diagonales finales de un repositorio `github.com` coinciden con la misma entrada.

286* Una entrada `github` también bloquea la URL `git` equivalente, y viceversa.

287* Para una entrada `owner/*`, la comparación de propietario no distingue mayúsculas de minúsculas.

288* Una entrada sin `ref` o `path` bloquea cada ref y path de los repositorios que coincide.

289 

290Esta entrada bloquea cada repositorio bajo un propietario de GitHub:

291 

292```json theme={null}

293{

294 "blockedMarketplaces": [

295 { "source": "github", "repo": "untrusted-org/*" }

296 ]

297}

298```

299 

300Las entradas `url` en `blockedMarketplaces` también se aplican cuando un usuario agrega una URL de repositorio `https://` que Claude Code [clona en lugar de obtener](/docs/es/plugins/cli-reference#plugin-marketplace-add), como una URL de repositorio `github.com` o `gitlab.com` simple. El usuario no puede agregar esa URL si una entrada la nombra. La coincidencia ignora el sufijo `.git` y cualquier ref que el usuario agregue después de `#`. Requiere Claude Code v2.1.232 o posterior.

301 

302Una entrada `{ "source": "skills-dir" }` aquí detiene [skills-directory plugins](#keep-skills-directory-plugins-loading) de cargarse, desde `~/.claude/skills/` y el `.claude/skills/` de un proyecto.

303 

304Una blocklist que nombra solo esa entrada no cuenta como una restricción activa, por lo que no [detiene plugins cuyo marketplace Claude Code no puede encontrar](#restrict-what-users-can-install) de cargarse.

305 

306<h3 id="allow-the-official-marketplace-and-your-own">

307 Allow the official marketplace and your own

308</h3>

309 

310La mayoría de las organizaciones permiten el marketplace oficial y el suyo, y registran ambos para que cada máquina los tenga. Esta política de configuración administrada permite ambos marketplaces, registra ambos, fuerza la habilitación de dos plugins y rechaza `--plugin-dir`:

311 

312```json theme={null}

313{

314 "strictKnownMarketplaces": [

315 { "source": "github", "repo": "anthropics/claude-plugins-official" },

316 { "source": "github", "repo": "your-org/*" },

317 { "source": "skills-dir" }

318 ],

319 "extraKnownMarketplaces": {

320 "claude-plugins-official": {

321 "source": { "source": "github", "repo": "anthropics/claude-plugins-official" }

322 },

323 "your-marketplace": {

324 "source": { "source": "github", "repo": "your-org/your-marketplace" }

325 }

326 },

327 "enabledPlugins": {

328 "code-formatter@your-marketplace": true,

329 "deploy-helper@your-marketplace": true

330 },

331 "disableSideloadFlags": true

332}

333```

334 

335En una máquina con esta política, agregar cualquier fuente fuera de la lista, por ejemplo `/plugin marketplace add https://example.com/other-marketplace.git`, falla con un mensaje que contiene `is blocked by enterprise policy` seguido de las fuentes permitidas. `claude --plugin-dir ./x` sale con un mensaje que nombra `disableSideloadFlags`.

336 

337La entrada `{ "source": "skills-dir" }` mantiene [skills-directory plugins](#keep-skills-directory-plugins-loading) cargándose bajo esta allowlist. Elimine esa entrada y dejan de cargarse.

338 

339Registre ambos marketplaces con entradas explícitas `extraKnownMarketplaces`, como esta política hace, en lugar de confiar en la allowlist o en el marketplace oficial registrándose a sí mismo:

340 

341* **La allowlist no registra nada**: una entrada `extraKnownMarketplaces` lo hace, y debe pasar la allowlist. Claude Code rechaza registrar un marketplace administrado cuya fuente la allowlist no coincide.

342* **El marketplace oficial se registra a sí mismo solo en una sesión de terminal interactiva**: incluso allí, se registra solo cuando la allowlist lo permite. Una ejecución `-p` o una terminal adjunta a una sesión en la nube nunca lo registra.

343* **Un intento bloqueado se recuerda**: si una máquina alguna vez se ejecutó bajo una política que bloqueaba el marketplace oficial, Claude Code registra el intento bloqueado y no lo reintenta después de que cambia la política. Un bloqueo `[]` es una política de ese tipo. Esa máquina lo registra nuevamente solo a través de una entrada `extraKnownMarketplaces` como la de esta política, una entrada `enabledPlugins` para uno de sus plugins, o un `/plugin marketplace add` manual.

344 

345<h2 id="set-update-policy">

346 Set update policy

347</h2>

348 

349Puede establecer la política de actualización por marketplace, para toda la flota, o por grupo de usuarios a través de canales de lanzamiento.

350 

351<h3 id="turn-auto-update-on-or-off-per-marketplace">

352 Turn auto-update on or off per marketplace

353</h3>

354 

355La auto-actualización de plugins se ejecuta en segundo plano después del inicio para marketplaces que la tienen activada. Para qué marketplaces la tienen activada de forma predeterminada, consulte [When auto-update runs](/docs/es/plugins/loading#when-auto-update-runs). Para decidir para la flota, establezca `"autoUpdate": true` o `false` en una entrada `extraKnownMarketplaces` administrada:

356 

357* Si la entrada administrada establece el campo, Claude Code rechaza el toggle `/plugin` del usuario con un error que comienza `Auto-update for '<name>' is set by`.

358* Si la entrada administrada deja el campo sin establecer, el toggle del usuario persiste.

359 

360<h3 id="turn-updates-off-for-the-whole-fleet">

361 Turn updates off for the whole fleet

362</h3>

363 

364Para desactivar la auto-actualización de plugins para cada marketplace, establezca `DISABLE_AUTOUPDATER` en el bloque `env` administrado, como hace este ejemplo. La misma variable también detiene las actualizaciones propias de Claude Code:

365 

366```json theme={null}

367{

368 "env": {

369 "DISABLE_AUTOUPDATER": "1"

370 }

371}

372```

373 

374Para detener las actualizaciones propias de Claude Code pero mantener la auto-actualización de plugins, agregue `"FORCE_AUTOUPDATE_PLUGINS": "1"` al mismo bloque. Las otras [variables de entorno que detienen la auto-actualización de plugins](/docs/es/plugins/loading#when-auto-update-runs) funcionan de la misma manera.

375 

376`DISABLE_AUTOUPDATER` no cubre plugins con una [fuente `command`](/docs/es/plugins/marketplace-reference#command-plugin-source). Claude Code re-ejecuta el comando de cada uno habilitado cada sesión e instala la salida cuando cambió. Para lo que detiene esas ejecuciones, consulte [When a command source re-runs](/docs/es/plugins/loading#when-a-command-source-re-runs).

377 

378<h3 id="assign-release-channels-to-user-groups">

379 Assign release channels to user groups

380</h3>

381 

382Para ejecutar canales estables y de acceso temprano, aloje dos marketplaces que apunten a diferentes refs de los mismos plugins. Luego dé a cada grupo de usuarios su propio marketplace a través de configuración administrada por punto final separada o una política de puerta de enlace. La configuración administrada por servidor desde la consola de administración [se aplica a cada usuario en su organización](/docs/es/server-managed-settings#current-limitations), por lo que no pueden asignar diferentes configuraciones a diferentes grupos.

383 

384* Implemente [configuración administrada por punto final](/docs/es/managed-settings#delivery-mechanisms) separada, como un archivo de configuración administrada o un perfil MDM, en los dispositivos de cada grupo. Para verificar si el archivo o perfil por grupo se aplica en un dispositivo que también tiene una fuente de toda la organización, consulte [How Claude Code combines managed sources](/docs/es/managed-settings#precedence-within-the-managed-tier).

385* Defina una [política de puerta de enlace de aplicaciones Claude](/docs/es/claude-apps-gateway-config#managed) por grupo. La puerta de enlace aplica la primera política cuya regla de coincidencia se ajusta a un usuario, así que ordene las políticas para que cada usuario llegue a la política de su grupo. El mapa `extraKnownMarketplaces` de esa política no se fusiona con el de ninguna otra política, así que enumere cada marketplace que el grupo necesita en él, no solo su marketplace de canal.

386 

387Con cualquiera de los mecanismos, el grupo estable recibe esta configuración:

388 

389```json theme={null}

390{

391 "extraKnownMarketplaces": {

392 "stable-tools": {

393 "source": { "source": "github", "repo": "your-org/stable-tools" }

394 }

395 }

396}

397```

398 

399El grupo de acceso temprano recibe `latest-tools` en su lugar. Para configurar los dos marketplaces, consulte [Run release channels](/docs/es/plugins/host-marketplace#run-release-channels).

400 

401<h2 id="recommend-plugins">

402 Recommend plugins

403</h2>

404 

405Los propietarios de marketplace pueden adjuntar señales `relevance` a entradas para que Claude Code sugiera el plugin cuando un proyecto coincida.

406 

407Las sugerencias de un marketplace aparecen solo cuando está registrado en la máquina del usuario, enumera su nombre en `pluginSuggestionMarketplaces` en la configuración administrada, y declara su fuente en la misma política. Declare la fuente como la entrada `extraKnownMarketplaces` del marketplace o como una entrada de allowlist. El marketplace oficial solo necesita el nombre. Consulte [Enable suggestions in managed settings](/docs/es/plugins/relevance#enable-suggestions-in-managed-settings).

408 

409<h2 id="audit-and-review">

410 Audit and review

411</h2>

412 

413Los eventos de OpenTelemetry y la API de Analytics le dicen qué instala y ejecuta su flota.

414 

415Para lo que un plugin puede ejecutar en una máquina y lo que cada nivel de confianza permite, lea [Plugin security](/docs/es/plugins/security) antes de aprobar un marketplace.

416 

417<h3 id="opentelemetry-events">

418 OpenTelemetry events

419</h3>

420 

421`claude_code.plugin_installed` registra cada instalación, y `claude_code.plugin_loaded` registra cada plugin habilitado al inicio de la sesión. Ambos eventos redactan u omiten nombres de plugins y marketplaces de terceros a menos que establezca `OTEL_LOG_TOOL_DETAILS=1`, como [Redacted plugin names in your backend](/docs/es/plugins/measure#redacted-plugin-names-in-your-backend) muestra. Las listas de campos están bajo [Plugin installed event](/docs/es/monitoring-usage#plugin-installed-event) y [Plugin loaded event](/docs/es/monitoring-usage#plugin-loaded-event).

422 

423<h3 id="analytics-api">

424 Analytics API

425</h3>

426 

427En el plan Enterprise, `GET /v1/organizations/analytics/plugins` devuelve recuentos de instalación e invocación por plugin, por día en Claude Code y Cowork. Puede agrupar los recuentos por usuario o grupo RBAC. La actividad de plugins que llega a Anthropic sin un nombre de plugin aparece en una fila `third-party` agregada. Consulte la [referencia de punto final](https://platform.claude.com/docs/en/api/admin/analytics/plugins/list) y [Access data programmatically](/docs/es/analytics#access-data-programmatically) para la clave que necesita.

428 

429<h2 id="plan-for-what-managed-settings-can’t-enforce">

430 Plan for what managed settings can't enforce

431</h2>

432 

433Estas solicitudes de revisiones de seguridad no tienen una clave dedicada en el esquema de configuración actual. Los controles existentes más cercanos son:

434 

435* **Orientación por usuario o por grupo**: cada clave de plugin se aplica a cada usuario que recibe la configuración. La configuración administrada por servidor entrega una configuración por organización. Para política por grupo, use configuración administrada por punto final separada o políticas de puerta de enlace, como bajo [Assign release channels to user groups](#assign-release-channels-to-user-groups).

436* **Restricción de entradas dentro de un marketplace permitido**: la allowlist coincide con fuentes de marketplace. Para bloquear un plugin de un marketplace permitido, establézcalo en `false` en `enabledPlugins` administrado.

437* **Ocultación de `/plugin`**: ninguna clave desactiva el comando. El equivalente más cercano combina una allowlist que nombra solo su marketplace, entradas `enabledPlugins` administradas para los plugins que suministra, y `disableSideloadFlags`.

438* **Cierre de `--plugin-dir` a través de la allowlist**: la allowlist no cubre `--plugin-dir`. `disableSideloadFlags` lo hace.

439* **Aplicación de los toggles de plugin de claude.ai a través de estas claves**: [**Organization settings > Plugins & skills**](https://claude.ai/admin-settings/skills?tab=inventory) no establece las claves en esta página. Lo que los miembros y su organización activan allí llega a la CLI como [synced plugins](/docs/es/plugins/loading#synced-plugins), que tienen sus propios controles.

440 

441<h2 id="troubleshoot-policy">

442 Troubleshoot policy

443</h2>

444 

445Si la política de plugin no se comporta como se espera en una máquina, verifique primero estos síntomas:

446 

447* **El archivo administrado no se analizó**: cuando un `managed-settings.json` no es JSON válido, Claude Code rechaza iniciar e imprime [un error que nombra el archivo](/docs/es/errors#managed-settings-document-could-not-be-parsed). Un archivo que se analiza pero tiene una entrada inválida mantiene el resto de su política. Consulte [Invalid entries in managed settings](/docs/es/managed-settings#invalid-entries-in-managed-settings).

448* **La fuente administrada no se cargó**: ejecute `/status` y busque `Enterprise managed settings` en la línea `Setting sources`. Si falta, la fuente no se cargó.

449* **Un usuario reporta `blocked by enterprise policy`**: el mensaje nombra el marketplace o su fuente. Para una allowlist, también enumera las fuentes permitidas. Las entradas orientadas al usuario están en [Troubleshoot plugins](/docs/es/plugins/troubleshooting).

450* **Un plugin que el usuario deshabilitó en `~/.claude/settings.json` aún se carga**: otra fuente de configuración lo re-habilitó, como una entrada `enabledPlugins` administrada que lo fuerza-habilita. `/plugin` y `claude plugin list` muestran `Disabled in ~/.claude/settings.json but still loads` con esa fuente de configuración.

451 

452<h2 id="next-steps">

453 Next steps

454</h2>

455 

456* [Marketplace reference](/docs/es/plugins/marketplace-reference#marketplace-sources): los valores `source` que `extraKnownMarketplaces`, `strictKnownMarketplaces` y `blockedMarketplaces` aceptan

457* [Host and maintain a marketplace](/docs/es/plugins/host-marketplace): ejecute el marketplace al que apunta su política

458* [Plugin security and trust](/docs/es/plugins/security): lo que un plugin puede hacer en una máquina y cómo revisar uno antes de instalar

459* [Server-managed settings](/docs/es/server-managed-settings): entregue estas claves desde la consola de administración de claude.ai

460* [Troubleshoot plugins](/docs/es/plugins/troubleshooting#blocked-by-your-organization): los mensajes que ven los usuarios cuando la política los bloquea

plugins/overview.md +142 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Descripción general de plugins

6 

7> Comprenda qué es un plugin de Claude Code, cuándo necesita uno en lugar de una skill independiente o un servidor MCP, y qué página leer para instalar o crear uno.

8 

9Un plugin de Claude Code es un directorio de skills, agentes, hooks, servidores MCP u otros componentes que Claude Code instala y carga como una unidad. La mayoría de los plugins provienen de un marketplace, que es un catálogo que enumera plugins y dónde obtener cada uno. También puede cargar un plugin desde una carpeta que alguien le proporcione, o [crear el suyo propio](/docs/es/plugins/create).

10 

11<Note>

12 Si utiliza el chat de claude.ai o Cowork y no Claude Code, consulte [Plugins en claude.ai y en Cowork](https://claude.com/docs/plugins/overview).

13</Note>

14 

15Para probar un plugin ahora, ejecute `/plugin` en una sesión de terminal de Claude Code e instale uno desde la pestaña **Discover**, que enumera los plugins del marketplace oficial de Anthropic y cualquier marketplace que haya agregado. Desde allí:

16 

17* [Instalar y administrar plugins](/docs/es/plugins/install): los pasos de instalación completos, alcances y otras superficies

18* [Crear un plugin](/docs/es/plugins/create): cree el suyo propio

19* [Decidir si necesita un plugin](#decide-whether-you-need-a-plugin): si un plugin es la herramienta adecuada para lo que desea

20 

21<h2 id="understand-what-a-plugin-is">

22 Comprenda qué es un plugin

23</h2>

24 

25Un plugin es un directorio de componentes, generalmente con un manifiesto. El manifiesto, un archivo JSON en `.claude-plugin/plugin.json`, le da al plugin su nombre y puede agregar una versión, una descripción y otros [metadatos](/docs/es/plugins/manifest-reference). Los componentes son lo que el plugin agrega a Claude Code, como:

26 

27* [**Skills**](/docs/es/plugins/components#skills): instrucciones `SKILL.md` que Claude carga cuando es relevante, y que también puede ejecutar como un comando

28* [**Agentes**](/docs/es/plugins/components#agents): definiciones de subagentes a las que Claude puede delegar

29* [**Hooks**](/docs/es/plugins/components#hooks): comandos que Claude Code ejecuta en puntos de su ciclo de vida, como después de cada edición

30* [**Servidores MCP**](/docs/es/plugins/components#mcp-servers): servidores de herramientas a los que Claude Code se conecta mientras el plugin está habilitado

31 

32Este diagrama muestra un plugin llamado `my-plugin` que contiene uno de cada uno de esos componentes, y lo que obtiene de cada archivo una vez que se carga el plugin.

33 

34<img src="https://mintcdn.com/claude-code/2Q_GtOEovg5qaBem/images/plugin-directory.svg?fit=max&auto=format&n=2Q_GtOEovg5qaBem&q=85&s=f623b64e82713b830e48174f0a922888" className="dark:hidden" alt="Diagram in two columns joined by five straight arrows. Left, the directory of a plugin named my-plugin, holding a manifest at .claude-plugin/plugin.json, skills/review/SKILL.md, agents/reviewer.md, hooks/hooks.json, .mcp.json, and other components. Right, what each file gives you in your session: the manifest sets the plugin name, my-plugin; the skill runs as /my-plugin:review; the agent file is a subagent Claude can delegate to; the hooks file holds hooks that run on lifecycle events; and .mcp.json adds an MCP server that gives Claude tools." width="760" height="336" data-path="images/plugin-directory.svg" />

35 

36<img src="https://mintcdn.com/claude-code/2Q_GtOEovg5qaBem/images/plugin-directory-dark.svg?fit=max&auto=format&n=2Q_GtOEovg5qaBem&q=85&s=17ee2bd45b63154fcc148ae1d1f736d8" className="hidden dark:block" alt="Diagram in two columns joined by five straight arrows. Left, the directory of a plugin named my-plugin, holding a manifest at .claude-plugin/plugin.json, skills/review/SKILL.md, agents/reviewer.md, hooks/hooks.json, .mcp.json, and other components. Right, what each file gives you in your session: the manifest sets the plugin name, my-plugin; the skill runs as /my-plugin:review; the agent file is a subagent Claude can delegate to; the hooks file holds hooks that run on lifecycle events; and .mcp.json adds an MCP server that gives Claude tools." width="760" height="336" data-path="images/plugin-directory-dark.svg" />

37 

38Para cada tipo de componente que un plugin puede contener, con un ejemplo de cada uno, consulte [Componentes de plugins](/docs/es/plugins/components). Para ver dónde se encuentra cada pieza en el directorio de un plugin, utilice el [explorador de plugins](/docs/es/plugins/components#explore-the-plugin-directory) en esa página.

39 

40<h3 id="decide-whether-you-need-a-plugin">

41 Decidir si necesita un plugin

42</h3>

43 

44Las skills, subagentes, hooks y servidores MCP funcionan por sí solos, sin un plugin. Una skill que guarde en `~/.claude/skills/`, por ejemplo, está disponible en cada proyecto en su máquina. Para configurar uno por su cuenta, consulte [Skills](/docs/es/skills), [Subagentes](/docs/es/sub-agents), [Hooks](/docs/es/hooks-guide) o [MCP](/docs/es/mcp).

45 

46Utilice un plugin cuando desee varias skills, subagentes, hooks o servidores MCP empaquetados como una unidad. Instale uno para obtener una configuración que alguien más construyó, con un comando y actualizaciones de su marketplace. Cree uno para dar su propia configuración a compañeros de equipo, instálelo en muchos proyectos o publique versiones con control de versiones.

47 

48<h3 id="what-an-enabled-plugin-adds-to-your-sessions">

49 Lo que un plugin habilitado agrega a sus sesiones

50</h3>

51 

52Un plugin habilitado es parte de cada sesión, no solo de las sesiones donde lo usa. Eso tiene algunas consecuencias que vale la pena conocer antes de instalar uno:

53 

54* **Contexto y uso**: para cada skill, agente y comando que [Claude puede invocar por su cuenta](/docs/es/skills#control-who-invokes-a-skill), el nombre y la descripción están en el contexto de Claude en cada turno para que Claude sepa que existe. Esos tokens cuentan hacia su uso y dejan menos espacio en la [ventana de contexto](/docs/es/context-window) incluso en sesiones donde nada del plugin se ejecuta. El texto completo de una skill o agente se carga solo cuando se usa. Lo que los servidores MCP del plugin agregan por turno sigue [búsqueda de herramientas MCP](/docs/es/mcp#scale-with-mcp-tool-search).

55* **Procesos**: los servidores MCP que define el plugin se ejecutan junto con cada sesión donde está habilitado, y sus hooks se activan en sus eventos.

56* **Permisos**: lo que ejecuta el plugin, lo ejecuta como usted. Consulte [Seguridad y confianza de plugins](/docs/es/plugins/security) para ver qué revisar primero.

57 

58Puede verificar la huella de un plugin en cada etapa:

59 

60* **Antes de instalar**: abra el plugin desde la pestaña **Marketplaces** en `/plugin`. Los plugins en el marketplace oficial de Anthropic muestran una estimación de **Context cost** allí.

61* **Después de instalar**: [Medir lo que cuesta un plugin](/docs/es/plugins/measure#measure-what-a-plugin-costs) muestra cómo leer la huella de un plugin, y el grupo **Not used recently** de la pestaña **Installed** enumera los plugins que podría desactivar.

62* **Para detenerlo sin desinstalarlo**: deshabilite el plugin con `/plugin` o, en su shell, `claude plugin disable`. Consulte [Administrar plugins instalados](/docs/es/plugins/install#manage-installed-plugins).

63 

64<h2 id="get-plugins-from-a-marketplace">

65 Obtener plugins de un marketplace

66</h2>

67 

68Un marketplace es un repositorio o directorio con un archivo `.claude-plugin/marketplace.json` que enumera plugins e indica dónde obtener cada uno. Es un catálogo, no una tienda alojada. Usted agrega un marketplace una sola vez y luego instala plugins desde él por nombre, como `commit-commands@claude-plugins-official`.

69 

70<Note>

71 Un marketplace de plugins no es [Claude Marketplace](https://claude.com/marketplace). Claude Marketplace es el sitio web en claude.com/marketplace donde usted explora plugins, conectores, productos de socios y socios de servicios. No es un marketplace que usted agregue con `/plugin marketplace add`.

72</Note>

73 

74Claude Code agrega el marketplace oficial de Anthropic la primera vez que usted inicia una sesión de terminal interactiva, a menos que una [política administrada](/docs/es/plugins/org#allow-the-official-marketplace-and-your-own) lo bloquee. Claude Code no agrega ningún otro marketplace por su cuenta, incluidos los marketplaces comunitarios y de demostración de Anthropic. Para distinguir los tres marketplaces de Anthropic, lea [Marketplaces de Anthropic](/docs/es/plugins/anthropic-marketplaces). Para ver lo que enumera el oficial, abra la pestaña **Discover** de `/plugin` en una sesión o explore [Claude Marketplace](https://claude.com/marketplace/plugins).

75 

76Este diagrama muestra la ruta desde un marketplace hasta su sesión. Un marketplace enumera un plugin, usted instala ese plugin, y Claude Code carga sus componentes.

77 

78<img src="https://mintcdn.com/claude-code/2Q_GtOEovg5qaBem/images/plugins-model.svg?fit=max&auto=format&n=2Q_GtOEovg5qaBem&q=85&s=4196344954b7c2e27fc0bd6a9a1113a1" className="dark:hidden" alt="Diagrama de la ruta del marketplace en tres cuadros, de izquierda a derecha. Un marketplace, un catálogo de plugins, enumera un plugin. El plugin es un directorio instalado como una unidad, que contiene skills, agentes, hooks, servidores MCP y otros componentes. Usted instala el plugin en Claude Code, que carga sus componentes." width="760" height="252" data-path="images/plugins-model.svg" />

79 

80<img src="https://mintcdn.com/claude-code/2Q_GtOEovg5qaBem/images/plugins-model-dark.svg?fit=max&auto=format&n=2Q_GtOEovg5qaBem&q=85&s=f6cdefe1fc05daf3b253d26e9f3f70f6" className="hidden dark:block" alt="Diagrama de la ruta del marketplace en tres cuadros, de izquierda a derecha. Un marketplace, un catálogo de plugins, enumera un plugin. El plugin es un directorio instalado como una unidad, que contiene skills, agentes, hooks, servidores MCP y otros componentes. Usted instala el plugin en Claude Code, que carga sus componentes." width="760" height="252" data-path="images/plugins-model-dark.svg" />

81 

82[Instalar y administrar plugins](/docs/es/plugins/install#install-a-plugin) tiene los pasos de instalación para cada lugar donde usted ejecuta Claude Code. Mientras está desarrollando un plugin, no necesita un marketplace: cárguelo directamente desde su carpeta con `--plugin-dir`, como muestra [Desarrollar sin un marketplace](/docs/es/plugins/create#develop-without-a-marketplace).

83 

84<h3 id="make-an-installed-plugin-available-in-your-session">

85 Hacer que un plugin instalado esté disponible en su sesión

86</h3>

87 

88Antes de que un plugin que usted instaló le proporcione una skill que pueda ejecutar, debe estar presente en cada una de estas capas:

89 

90* **Settings**: su configuración enumera los marketplaces que usted ha agregado y los plugins que están habilitados.

91* **Disk**: `~/.claude/plugins/` contiene lo que Claude Code ha obtenido e instalado.

92* **Session**: los plugins se cargan al inicio, o cuando usted [recarga plugins](/docs/es/plugins/loading#check-which-stage-a-plugin-reached).

93 

94Lea [Plugin loading reference](/docs/es/plugins/loading) para las reglas en cada capa, incluido qué archivo de configuración tiene prioridad y dónde están los archivos en el disco.

95 

96<h2 id="tell-anthropic’s-marketplaces-from-third-party-ones">

97 Distinga los marketplaces de Anthropic de los de terceros

98</h2>

99 

100El nombre de un marketplace lo coloca en uno de tres niveles. Claude Code acepta los nombres oficiales y comunitarios solo para marketplaces originarios de repositorios `github.com/anthropics/`:

101 

102* **Oficial**: marketplaces con uno de los [nombres de marketplace oficial](/docs/es/plugins/security#official-marketplace-names) de Anthropic, incluidos `claude-plugins-official` y el marketplace de demostración `claude-code-plugins`.

103* **Comunitario**: marketplaces con uno de los nombres comunitarios de Anthropic, como `claude-community`. [Identificar los marketplaces de Anthropic por nombre](/docs/es/plugins/security#marketplace-tiers) los enumera.

104* **Terceros**: todos los demás marketplaces. Un marketplace que publica su compañero de trabajo u organización es de terceros.

105 

106Sea cual sea el nivel, un plugin que instale puede ejecutar código con sus privilegios de usuario. Lea [Seguridad y confianza de plugins](/docs/es/plugins/security) para saber cómo revisar un plugin antes de instalarlo.

107 

108A través de [configuración administrada](/docs/es/settings#settings-files), una organización puede permitir o bloquear marketplaces, forzar la instalación de plugins y desactivar la carga solo de sesión. Lea [Administrar plugins para su organización](/docs/es/plugins/org) para esos controles.

109 

110<h2 id="understand-install-scopes">

111 Comprenda los alcances de instalación

112</h2>

113 

114Cuando instala un plugin, elige un alcance, y el alcance decide para quién está habilitado el plugin:

115 

116* **Alcance de usuario**: habilitado para usted en cada proyecto en esta computadora

117* **Alcance de proyecto**: habilitado para todos los que trabajan en este repositorio, a través del `.claude/settings.json` confirmado. Cada colaborador aún [lo instala en su propia máquina](/docs/es/plugins/loading#enabled-in-project-settings-but-not-installed)

118* **Alcance local**: habilitado para usted solo en este repositorio

119 

120Un plugin que instale en alcance de usuario en la terminal, las sesiones locales de la aplicación de escritorio o la extensión de VS Code está disponible en los otros dos en esa computadora, porque los tres leen los mismos archivos de configuración. Consulte [Elegir un alcance de instalación](/docs/es/plugins/install#choose-an-install-scope) para saber cómo elegir uno.

121 

122Una sesión en la nube, incluida una en el navegador en claude.ai/code, no carga los plugins en su configuración local. Para pasos de instalación en la terminal, VS Code y la aplicación de escritorio, y para lo que carga una sesión en la nube, consulte [Instalar un plugin](/docs/es/plugins/install#install-a-plugin).

123 

124<Note>

125 El mismo formato de plugin también se instala en claude.ai y en Cowork, donde se carga un conjunto diferente de componentes. Para esas superficies, consulte [Plugins en claude.ai y en Cowork](https://claude.com/docs/plugins/overview) en claude.com.

126</Note>

127 

128<h2 id="next-steps">

129 Próximos pasos

130</h2>

131 

132La mayoría de las personas comienzan instalando un plugin del marketplace oficial de Anthropic, que Claude Code agrega la primera vez que inicia una sesión de terminal interactiva. Ejecute `/plugin` en una sesión de terminal para explorarlo, o siga [Instalar y administrar plugins](/docs/es/plugins/install), que también cubre la aplicación de escritorio y VS Code. Para ver qué hay en ese marketplace antes de abrir Claude Code, explore [Claude Marketplace](https://claude.com/marketplace/plugins) en la web.

133 

134Para crear el suyo propio, [Crear un plugin](/docs/es/plugins/create) comienza con un directorio vacío y termina con un plugin funcional.

135 

136Una vez que haya instalado o creado un plugin, estas páginas cubren lo que viene después:

137 

138* **Compartir lo que construyó**: [Publicar y distribuir un plugin](/docs/es/plugins/publish)

139* **Verificar si funciona y se usa**: [Probar plugins con evals](/docs/es/plugin-evals) y [Medir el costo y uso de plugins](/docs/es/plugins/measure)

140* **Ejecutar un marketplace para su equipo**: [Crear un marketplace](/docs/es/plugins/create-marketplace), luego [Alojar y mantener un marketplace](/docs/es/plugins/host-marketplace)

141* **Establecer política de plugins para una organización**: [Administrar plugins para su organización](/docs/es/plugins/org)

142* **Solucionar un problema**: [Solucionar problemas de plugins](/docs/es/plugins/troubleshooting)

plugins/publish.md +210 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Publicar y distribuir un plugin

6 

7> Publique un plugin de Claude Code a través de su propio marketplace o del marketplace comunitario de Anthropic, con una lista de verificación previa al lanzamiento y cómo los usuarios reciben actualizaciones.

8 

9Publicar un plugin de Claude Code significa listarlo en un marketplace, un catálogo JSON que enumera plugins y dónde obtener cada uno, para que otras personas puedan instalarlo por nombre y recibir sus actualizaciones. Puede ejecutar su propio marketplace o enviar su plugin al marketplace comunitario de Anthropic. Para compartir un plugin sin publicarlo, envíe a las personas el directorio del plugin o un `.zip` del mismo para que lo carguen ellos mismos.

10 

11Esta página es para el autor de un plugin funcional que está listo para compartirlo.

12 

13<Note>

14 Estos casos se tratan en otras páginas:

15 

16 * **Su plugin aún no está terminado**: comience con [Crear un plugin](/docs/es/plugins/create)

17 * **Mantiene una CLI o SDK con un plugin en un marketplace oficial**: consulte [Recomendar su plugin desde su CLI](/docs/es/plugins/cli-hints)

18</Note>

19 

20Comience con [Elegir cómo distribuir](#choose-how-to-distribute) para comparar las opciones de distribución. Si ya conoce su ruta, vaya a [Preparar su plugin para el lanzamiento](#prepare-your-plugin-for-release), luego siga la sección de su ruta para saber qué decirles a sus usuarios y cómo reciben sus actualizaciones.

21 

22<h2 id="choose-how-to-distribute">

23 Elegir cómo distribuir

24</h2>

25 

26Elija una opción de distribución según quién necesite instalar el plugin:

27 

28| Ruta | Quién puede instalar | Lo que necesita | ¿Los usuarios reciben sus actualizaciones automáticamente? |

29| :--------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------ | :-------------------------------------------------------------------------------------------- | :--------------------------------------------------------- |

30| [Sin marketplace](#share-a-plugin-without-a-marketplace) | Las personas a las que envíe la carpeta del plugin o un `.zip` del mismo | La carpeta del plugin | Ninguno. Cargan la copia que envió |

31| [Su propio marketplace](#publish-through-your-own-marketplace) | Cualquiera que pueda acceder al repositorio, que puede ser uno privado que su equipo pueda clonar | Un repositorio git u otro host con un `.claude-plugin/marketplace.json` que enumere su plugin | Desactivado |

32| [Marketplace comunitario de Anthropic](#submit-to-the-community-marketplace) | Cualquiera que agregue `anthropics/claude-plugins-community` | Un envío a través del formulario de envío del directorio de plugins | Desactivado |

33 

34La actualización automática es una configuración por marketplace en el lado del usuario que obtiene nuevas versiones en segundo plano.

35 

36<h2 id="prepare-your-plugin-for-release">

37 Preparar su plugin para el lanzamiento

38</h2>

39 

40El nombre, la versión, la validación y una instalación desde un marketplace deciden si un lanzamiento funciona para las personas que lo instalan. Verifíquelos antes del primer lanzamiento y nuevamente antes de cada uno posterior.

41 

42<Steps>

43 <Step title="Elegir un nombre permanente">

44 Los usuarios instalan, habilitan y configuran su plugin por `name@marketplace`, por lo que un plugin renombrado es un plugin diferente para cada instalación existente. Elija un nombre en kebab-case como `deploy-helper`, porque `claude plugin validate` advierte sobre otras formas, y trátelo como permanente. Establezca `displayName` en `plugin.json` para la etiqueta que ven los usuarios.

45 </Step>

46 

47 <Step title="Decidir cómo versionará">

48 Si establece `version` en `plugin.json` y luego envía commits sin cambiarlo, `claude plugin update` imprime `<name> is already at the latest version (1.0.0).` y los usuarios mantienen la copia anterior. Incremente `version` en cada lanzamiento, u omítalo en un marketplace alojado en git para que Claude Code use el SHA del commit en su lugar. Consulte [Versiones y actualizaciones](/docs/es/plugins/loading#versions-and-updates).

49 </Step>

50 

51 <Step title="Validar">

52 En su shell, ejecute `claude plugin validate --strict ./your-plugin`. Una ejecución limpia imprime `✔ Validation passed`.

53 

54 * **En CI**: mantenga `--strict`, que también falla la ejecución con código de salida 1 en advertencias como un campo de manifiesto desconocido o una `version` faltante. Elimine `--strict` si eligió omitir `version` en el paso anterior.

55 * **Rutas**: la validación informa rutas de componentes que no comienzan con `./`. Dentro de comandos hook y configuraciones de servidor MCP, consulte archivos como `${CLAUDE_PLUGIN_ROOT}/...`. Consulte [reglas de ruta](/docs/es/plugins/manifest-reference#path-rules).

56 </Step>

57 

58 <Step title="Instalarlo desde un marketplace local">

59 En su shell, agregue un marketplace local que enumere el plugin con `claude plugin marketplace add ./path-to-marketplace`, instale el plugin desde él e inicie una sesión para confirmar que se carga.

60 

61 * Para el marketplace más pequeño que funciona, consulte [Crear un marketplace](/docs/es/plugins/create-marketplace).

62 * Para saber si una instalación carga su directorio de origen o una copia en caché, consulte [Plugins in-place y copiados](/docs/es/plugins/loading#in-place-and-copied-plugins).

63 </Step>

64 

65 <Step title="Completar los metadatos que ven los usuarios">

66 Establezca `description`, `author`, `homepage` y `repository` en `plugin.json`, y agregue un `README.md` en la raíz del plugin. `homepage` debe analizarse como una URL. La [referencia de manifiesto](/docs/es/plugins/manifest-reference#fields) enumera todos los campos.

67 </Step>

68 

69 <Step title="Ejecutar su suite de evaluación">

70 Si tiene una suite de evaluación, ejecute `claude plugin eval` en su shell. Ejecuta los casos de prueba del plugin y califica los resultados, lo que detecta regresiones cuando cambia el plugin. Consulte [Probar plugins con evaluaciones](/docs/es/plugin-evals).

71 </Step>

72</Steps>

73 

74<h2 id="share-a-plugin-without-a-marketplace">

75 Compartir un plugin sin un marketplace

76</h2>

77 

78Si el plugin está en un repositorio git, las personas pueden clonarlo y cargar el checkout, o iniciar Claude Code desde su shell con `--plugin-url` apuntando a un `.zip` que adjunte a un lanzamiento. Para obtener su próxima versión, extraen o descargan nuevamente. Si no está en un repositorio, envíeles el directorio o un `.zip` del mismo. Lo cargan de una de dos formas:

79 

80* **Para una sesión**: inician Claude Code desde su shell con `claude --plugin-dir ./deploy-helper`, donde la ruta es el clon, la carpeta descomprimida o el `.zip` en sí. Consulte [Banderas que cargan un plugin para una sesión](/docs/es/plugins/cli-reference#flags-that-load-a-plugin-for-one-session).

81* **Para cada sesión**: mueven el directorio del plugin, con su `.claude-plugin/plugin.json`, bajo `~/.claude/skills/` para que Claude Code lo [cargue en cada sesión](/docs/es/plugins/loading#find-where-a-plugin-came-from).

82 

83Agregar un `.claude-plugin/marketplace.json` a ese mismo repositorio es lo que permite a las personas instalar por nombre y actualizar con un comando; consulte [Publicar a través de su propio marketplace](#publish-through-your-own-marketplace).

84 

85<h3 id="ship-a-plugin-with-your-own-tool">

86 Enviar un plugin con su propia herramienta

87</h3>

88 

89Si mantiene una CLI o SDK, publique el plugin en un marketplace y haga que su instalador o mensaje posterior a la instalación ejecute o imprima los dos comandos que necesita un usuario: `claude plugin marketplace add <source>`, luego `claude plugin install <name>@<marketplace>`. Para descubrimiento en sesión cuando alguien usa su herramienta, consulte [Recomendar su plugin desde su CLI](/docs/es/plugins/cli-hints).

90 

91<h2 id="publish-through-your-own-marketplace">

92 Publicar a través de su propio marketplace

93</h2>

94 

95Su propio marketplace es un archivo `.claude-plugin/marketplace.json` que enumera su plugin, agregado a un repositorio git. Una vez que el archivo está en el repositorio, el plugin se publica, sin formulario de envío. Puede mantener el archivo en el repositorio del plugin o en uno separado.

96 

97<h3 id="add-the-marketplace-file-to-your-repository">

98 Agregar el archivo de marketplace a su repositorio

99</h3>

100 

101Para publicar desde el repositorio del plugin, guarde el archivo de marketplace junto a `plugin.json` en `.claude-plugin/`, con una entrada cuya `source` sea `"./"`, la raíz del repositorio. Dé a la entrada el mismo `name` que `plugin.json`, según [Mantener el nombre de la entrada y el nombre del manifiesto iguales](/docs/es/plugins/create-marketplace#keep-the-entry-name-and-the-manifest-name-the-same):

102 

103```json .claude-plugin/marketplace.json theme={null}

104{

105 "name": "your-marketplace",

106 "owner": { "name": "Your Name" },

107 "plugins": [

108 { "name": "deploy-helper", "source": "./" }

109 ]

110}

111```

112 

113En su shell, ejecute `claude plugin validate .` en el repositorio para verificar el archivo antes de hacer push.

114 

115[Crear un marketplace](/docs/es/plugins/create-marketplace) cubre el diseño con varios plugins en un repositorio.

116 

117<h3 id="control-who-can-install">

118 Controlar quién puede instalar

119</h3>

120 

121Cualquiera que pueda clonar el repositorio puede instalar desde él, por lo que si el repositorio es privado, el marketplace también es privado. Para hosts que no sean un repositorio git, consulte [Alojar un marketplace](/docs/es/plugins/host-marketplace). Para llegar a todos en una empresa, incluidas las personas que no usan git, consulte [Implementar en toda una empresa](/docs/es/plugins/host-marketplace#roll-out-to-a-whole-company).

122 

123<h3 id="tell-users-how-to-install">

124 Decirles a los usuarios cómo instalar

125</h3>

126 

127Dígales a sus usuarios que agreguen el marketplace e instalen el plugin desde su shell, reemplazando la fuente y los nombres con los suyos:

128 

129* Agregue el marketplace una vez: `claude plugin marketplace add your-org/your-marketplace`, donde el argumento es un atajo de GitHub `owner/repo`, una URL o una ruta

130* Instale el plugin: `claude plugin install deploy-helper@your-marketplace`

131* O haga ambos desde dentro de una sesión: `/plugin install deploy-helper --marketplace your-org/your-marketplace`. Requiere Claude Code v2.1.275 o posterior. Consulte [Agregar un marketplace e instalar en un comando](/docs/es/plugins/install#add-a-marketplace-and-install-in-one-command)

132 

133<h3 id="ship-updates-to-users">

134 Enviar actualizaciones a los usuarios

135</h3>

136 

137Los usuarios reciben un lanzamiento cuando lo solicitan o cuando la actualización automática está activada para su marketplace:

138 

139* **Bajo solicitud**: `claude plugin update deploy-helper@your-marketplace` en el shell del usuario actualiza el marketplace e instala la nueva copia cuando la versión de su plugin ha cambiado

140* **Actualización automática**: desactivada de forma predeterminada para su marketplace. Consulte [Activar la actualización automática](/docs/es/plugins/host-marketplace#turn-on-auto-update). Una vez activada, hace lo mismo que `claude plugin update` con un retraso después de que comienza la sesión

141 

142[Instalar plugins](/docs/es/plugins/install) cubre los comandos del lado del usuario, y [cuándo se ejecuta la actualización automática](/docs/es/plugins/loading#when-auto-update-runs) cubre el tiempo.

143 

144<h2 id="submit-to-the-community-marketplace">

145 Enviar al marketplace comunitario

146</h2>

147 

148El marketplace comunitario de Anthropic, `claude-community`, es el marketplace público que enumera plugins enviados a través del formulario de envío del directorio de plugins.

149 

150Los usuarios agregan el marketplace comunitario en una sesión de Claude Code con `/plugin marketplace add anthropics/claude-plugins-community` e instalan desde él como `@claude-community`.

151 

152Para saber cómo el marketplace comunitario difiere del marketplace oficial, consulte [Marketplaces de Anthropic](/docs/es/plugins/anthropic-marketplaces).

153 

154Para enviar su plugin al marketplace comunitario, use uno de los formularios en la aplicación:

155 

156* **claude.ai**: [claude.ai/admin-settings/directory/submissions/plugins/new](https://claude.ai/admin-settings/directory/submissions/plugins/new)

157* **Console**: [platform.claude.com/plugins/submit](https://platform.claude.com/plugins/submit)

158 

159El formulario de claude.ai requiere una organización Team o Enterprise y el permiso de Directory, que los Owners tienen de forma predeterminada. Los autores individuales que no forman parte de una organización Team o Enterprise pueden usar el formulario de Console en su lugar.

160 

161En su shell, ejecute `claude plugin validate ./your-plugin` localmente antes de enviar, reemplazando `./your-plugin` con la ruta a su directorio de plugin. Cuando la validación pasa, Claude Code imprime `✔ Validation passed`, o `✔ Validation passed with warnings` si hay advertencias. Las advertencias no fallan la validación; agregue `--strict` para tratarlas como errores.

162 

163Los plugins listados aparecen en el catálogo [`anthropics/claude-plugins-community`](https://github.com/anthropics/claude-plugins-community), en casi todos los casos fijados a un SHA de commit específico.

164 

165Puede haber un retraso entre el envío y la aparición de su plugin en `marketplace.json`. Para verificar si su plugin ya es instalable, busque su nombre en el [catálogo comunitario](https://github.com/anthropics/claude-plugins-community/blob/main/.claude-plugin/marketplace.json).

166 

167El marketplace oficial, `claude-plugins-official`, no acepta envíos a través de estos formularios. Si trabaja con un contacto de socio de Anthropic, pregúnteles sobre un listado en el marketplace oficial.

168 

169<h2 id="ship-updates-renames-and-removals">

170 Enviar actualizaciones, cambios de nombre y eliminaciones

171</h2>

172 

173<h3 id="release-a-new-version">

174 Lanzar una nueva versión

175</h3>

176 

177Si publica a través de su propio marketplace y su `plugin.json` establece `version`, increméntelo y haga push. Los usuarios que ejecuten `claude plugin update` o tengan la actualización automática activada reciben la nueva versión, como se describe en [Enviar actualizaciones a los usuarios](#ship-updates-to-users).

178 

179<h3 id="tag-a-release">

180 Etiquetar un lanzamiento

181</h3>

182 

183Etiquete el lanzamiento en git cuando otros plugins declaren un rango de versión en el suyo, porque esos rangos se resuelven contra etiquetas. De lo contrario, no necesita una etiqueta.

184 

185Para etiquetar, ejecute `claude plugin tag` en su shell desde el directorio del plugin. Crea una etiqueta `{name}--v{version}`. Agregue `--push` para enviar la etiqueta a `origin`. La [referencia de `plugin tag`](/docs/es/plugins/cli-reference#plugin-tag) enumera sus banderas.

186 

187<h3 id="rename-or-remove-a-plugin">

188 Renombrar o eliminar un plugin

189</h3>

190 

191Nunca cambie el `name` de un plugin publicado. Después de un cambio de nombre, los usuarios que ya lo instalaron pierden el plugin, porque su instalación se registra bajo el nombre anterior. Una entrada `renames` en su archivo de marketplace los migra en su lugar. Cambie `displayName` cuando desee una etiqueta diferente.

192 

193Si un cambio de nombre es inevitable, use el mapa `renames` del archivo de marketplace para que las instalaciones existentes se migren en lugar de fallar con [`Plugin "<name>" not found in marketplace`](/docs/es/plugins/troubleshooting#plugin-not-found-in-marketplace). Para eliminar un plugin del marketplace, o para los detalles completos de `renames`, consulte [Renombrar o eliminar un plugin](/docs/es/plugins/host-marketplace#rename-or-remove-a-plugin) en la página de alojamiento. La [referencia de marketplace](/docs/es/plugins/marketplace-reference#top-level-fields) tiene el campo.

194 

195<h2 id="declare-dependencies">

196 Declarar dependencias

197</h2>

198 

199Si su plugin necesita que otro plugin del mismo marketplace esté habilitado, enumérelo en la matriz `dependencies` de `plugin.json`. Cada entrada es un nombre simple o un objeto con un rango de versión semver. Cuando un usuario instala su plugin, Claude Code también instala y habilita la dependencia.

200 

201[Dependencias de plugins](/docs/es/plugins/dependencies) cubre la sintaxis de rango, dependencias entre marketplaces y cómo los usuarios eliminan dependencias que ya no necesitan.

202 

203<h2 id="next-steps">

204 Próximos pasos

205</h2>

206 

207* [Alojar y mantener un marketplace](/docs/es/plugins/host-marketplace): lanzar nuevas versiones y mantener a los usuarios actualizados

208* [Dependencias de plugins](/docs/es/plugins/dependencies): declarar y versionar los plugins en los que depende el suyo

209* [Recomendar su plugin desde su CLI](/docs/es/plugins/cli-hints): solicitar a los usuarios de Claude Code de su CLI que instalen el plugin

210* [Medir el costo y el uso del plugin](/docs/es/plugins/measure): ver cuánto cuesta su plugin en contexto y si las personas lo usan

plugins/relevance.md +247 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Recomendar plugins para su organización

6 

7> Agregue un bloque de relevancia a las entradas de plugins del marketplace para que Claude Code los sugiera cuando el trabajo de un usuario coincida, y permita el marketplace en la configuración administrada.

8 

9Claude Code puede sugerir la instalación de un plugin del marketplace de su organización cuando la sesión de un usuario coincide con señales que usted define para ese plugin. Las señales incluyen el directorio de trabajo, los archivos que Claude ha leído y los comandos que Claude ha ejecutado. Las define agregando un bloque `relevance` a la entrada del plugin en `marketplace.json`.

10 

11Un operador del marketplace escribe las entradas de `relevance`. Un administrador luego permite el marketplace en la configuración administrada. Los usuarios no ven sugerencias de un marketplace hasta que se permita.

12 

13<Note>

14 Estos casos se cubren en otras páginas:

15 

16 * **Desea instalar plugins**: consulte [Instalar y administrar plugins](/docs/es/plugins/install)

17 * **Desea desactivar sugerencias**: consulte [Entender cómo funciona la relevancia de plugins](#understand-how-plugin-relevance-works)

18</Note>

19 

20Comience con las secciones para su rol:

21 

22* **Operadores del marketplace**: lea [cómo funcionan las sugerencias](#understand-how-plugin-relevance-works), luego [agregue relevancia a una entrada de plugin](#add-relevance-to-a-plugin-entry) y [valide su marketplace](#validate-your-marketplace)

23* **Administradores**: [habilite sugerencias en la configuración administrada](#enable-suggestions-in-managed-settings)

24 

25<h2 id="understand-how-plugin-relevance-works">

26 Entender cómo funciona la relevancia de plugins

27</h2>

28 

29Cada entrada de plugin en `marketplace.json` puede incluir un objeto `relevance`. El objeto nombra un tema y una o más señales. Una señal es un patrón que Claude Code prueba contra la sesión actual, como el directorio de trabajo o los archivos que Claude ha leído.

30 

31La coincidencia de señales ocurre localmente en la máquina del usuario y no agrega tráfico de red. Claude Code no reporta qué señales coincidieron o sus valores a Anthropic o al operador del marketplace.

32 

33Cuando una señal coincide y el plugin aún no está instalado, Claude Code sugiere el plugin en estos lugares:

34 

35* **Spinner tip**: un mensaje con el comando `/plugin install` aparece debajo del spinner mientras Claude responde.

36* **Notificación de inicio de sesión**: si una señal `cwd` coincide con el directorio de trabajo, aparece una notificación de una línea antes de que el usuario envíe un primer mensaje.

37* **Pestaña Discover de `/plugin`**: el plugin se fija en la parte superior de la lista Discover.

38 

39[Vista previa de lo que ve el usuario](#preview-what-the-user-sees) muestra el texto exacto de cada uno y con qué frecuencia se repiten.

40 

41Claude Code nunca instala el plugin automáticamente. El usuario siempre confirma.

42 

43El spinner tip y la notificación de inicio de sesión ambos dejan de aparecer cuando el usuario o proyecto establece [`spinnerTipsEnabled`](/docs/es/settings-reference#spinnertipsenabled) en `false`, o cuando un [`spinnerTipsOverride`](/docs/es/settings-reference#spinnertipsoverride) con `excludeDefault` reemplaza los consejos integrados. El pin de la pestaña Discover no se ve afectado por ninguna de las dos configuraciones.

44 

45<h2 id="add-relevance-to-a-plugin-entry">

46 Agregar relevancia a una entrada de plugin

47</h2>

48 

49Agregue un objeto `relevance` a la entrada del plugin en su `marketplace.json`. El siguiente ejemplo declara que el plugin `terraform-helpers` es relevante cuando Claude lee un archivo `.tf` o ejecuta `terraform`:

50 

51```json theme={null}

52{

53 "name": "your-marketplace",

54 "owner": { "name": "Your Org" },

55 "plugins": [

56 {

57 "name": "terraform-helpers",

58 "source": "./plugins/terraform-helpers",

59 "description": "Your organization's Terraform conventions and helpers",

60 "relevance": {

61 "topic": "Terraform",

62 "signals": {

63 "cli": ["terraform"],

64 "filesRead": ["**/*.tf"]

65 }

66 }

67 }

68 ]

69}

70```

71 

72Mientras ninguna de sus señales coincida, el plugin mantiene su posición normal en la lista Discover y no aparece como un spinner tip.

73 

74Para verificar el bloque antes de publicar, [valide su marketplace](#validate-your-marketplace).

75 

76<h2 id="field-reference">

77 Referencia de campos

78</h2>

79 

80El objeto `relevance` y su objeto anidado `signals` aceptan los campos en las siguientes tablas.

81 

82Los clientes más antiguos aún cargan un marketplace que usa campos `relevance` que no reconocen, porque los campos desconocidos bajo `relevance` y `relevance.signals` se ignoran en el momento de la carga. Un campo reconocido cuyo valor excede su límite en la [referencia de campos](#field-reference) invalida toda la entrada del plugin, y los usuarios no pueden instalar ese plugin desde el marketplace hasta que lo corrija; `claude plugin validate` reporta los mismos límites.

83 

84<h3 id="relevance">

85 `relevance`

86</h3>

87 

88| Campo | Tipo | Descripción |

89| :-------- | :----- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

90| `topic` | string | Opcional. La frase que completa "¿Trabajando con *topic*?" en el spinner tip. Por defecto es el nombre del plugin con cada segmento de guión en mayúscula. Máximo 64 caracteres. |

91| `signals` | object | Coincidencias que determinan cuándo el plugin es relevante. Claude Code sugiere el plugin solo si al menos una señal está establecida. Consulte [`relevance.signals`](#relevance-signals). |

92 

93El `topic` suele ser el nombre del producto, por ejemplo `Terraform`. Use un dominio como `design` cuando el nombre del plugin no suena natural como un tema.

94 

95<h3 id="relevance-signals">

96 `relevance.signals`

97</h3>

98 

99El objeto `signals` acepta los siguientes campos.

100 

101| Campo | Tipo | Descripción | Límite |

102| :------------- | :--------------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------------------------------------------------------------------------------------------------------------- |

103| `cwd` | array of strings | Patrones Glob coincididos contra el directorio de trabajo de la sesión. Consulte [coincidencia de directorio de trabajo](#working-directory-matching). | 10 patrones de 256 caracteres cada uno |

104| `cli` | array of strings | Nombres de comandos de comandos shell que Claude ha ejecutado esta sesión, por ejemplo `["terraform"]`. Coincidencia exacta. Consulte [coincidencia de nombre de comando](#command-name-matching). | 10 entradas de 64 caracteres cada una |

105| `hosts` | array of strings | Nombres de host vistos en URLs `http://` o `https://` en comandos Bash esta sesión, por ejemplo `["registry.terraform.io"]`. Solo nombre de host en minúsculas: sin esquema, puerto o ruta. Coincidencia exacta sin distinción de mayúsculas y minúsculas. | 20 entradas de 128 caracteres cada una |

106| `filesRead` | array of strings | Patrones Glob coincididos contra las rutas de archivos que Claude ha leído esta sesión, por ejemplo `["**/*.tf"]`. Normalizado con barra diagonal hacia adelante y sin distinción de mayúsculas y minúsculas. | 10 patrones de 256 caracteres cada uno |

107| `manifestDeps` | array of objects | Dependencias declaradas en manifiestos de paquetes que Claude ha leído esta sesión. Cada entrada es `{ "file": "...", "pattern": "..." }`, donde ambos valores son expresiones regulares. Consulte [coincidencia de dependencia de manifiesto](#manifest-dependency-matching). | 10 entradas, cada valor como máximo 256 caracteres. Los archivos de manifiesto más grandes de 512 KB se omiten |

108 

109Las señales `filesRead` y `manifestDeps` también coinciden contra archivos que Claude ha escrito o editado esta sesión y contra los archivos de memoria `CLAUDE.md` cargados automáticamente del proyecto.

110 

111<h4 id="working-directory-matching">

112 Coincidencia de directorio de trabajo

113</h4>

114 

115`cwd` es la única señal que puede coincidir al inicio de la sesión, antes de que el usuario envíe un primer mensaje.

116 

117Claude Code coincide cada patrón `cwd` de la siguiente manera:

118 

119* El patrón se compara contra el directorio de trabajo como una ruta absoluta. Cuando la sesión está dentro de un repositorio git, también se compara contra la ruta del directorio de trabajo relativa a la raíz del repositorio.

120* La coincidencia se normaliza con barra diagonal hacia adelante y sin distinción de mayúsculas y minúsculas.

121* Cada patrón coincide con el directorio en sí y todo lo que hay debajo, por lo que `infra`, `infra/` e `infra/**` se comportan de manera idéntica.

122 

123<h4 id="command-name-matching">

124 Coincidencia de nombre de comando

125</h4>

126 

127Claude Code registra un nombre de comando para cada comando shell que Claude ejecuta: el primer token después de cualquier asignación de variable de entorno inicial y `sudo`. Los comandos compuestos contribuyen solo con su comando inicial, por lo que `cd infra && terraform plan` registra `cd`, no `terraform`.

128 

129<h4 id="manifest-dependency-matching">

130 Coincidencia de dependencia de manifiesto

131</h4>

132 

133Cada entrada de `manifestDeps` empareja dos cadenas de origen de JavaScript `RegExp`:

134 

135* `file`: coincidido sin distinción de mayúsculas y minúsculas contra la ruta del archivo de manifiesto. La ruta es típicamente absoluta, por lo que ancle el patrón al final en lugar del inicio. Las rutas no se normalizan por separador para esta señal, por lo que las rutas de Windows usan barras invertidas.

136* `pattern`: coincidido con distinción de mayúsculas y minúsculas contra el contenido de ese archivo.

137 

138El siguiente ejemplo usa `manifestDeps` para sugerir su plugin una vez que Claude ha leído un `package.json` que depende del paquete npm de su SDK, nombrado `your-sdk` aquí.

139 

140```json theme={null}

141{

142 "name": "your-plugin",

143 "source": "./plugins/your-plugin",

144 "relevance": {

145 "signals": {

146 "manifestDeps": [

147 {

148 "file": "[/\\\\]package\\.json$",

149 "pattern": "\"your-sdk\"\\s*:"

150 }

151 ]

152 }

153 }

154}

155```

156 

157En este ejemplo, el patrón `file` usa `[/\\\\]` para que coincida tanto con separadores de ruta de barra diagonal como de barra invertida, y `\\.` para que el punto sea literal. En JSON, cada barra invertida en la expresión regular se escribe dos veces.

158 

159<h2 id="validate-your-marketplace">

160 Validar su marketplace

161</h2>

162 

163En su shell, ejecute `claude plugin validate` contra su directorio de marketplace para verificar el bloque `relevance` antes de publicar:

164 

165```bash theme={null}

166claude plugin validate ./my-marketplace

167```

168 

169El validador reporta errores y advertencias en el bloque `relevance`, incluyendo estos:

170 

171* Reporta claves desconocidas bajo `relevance` y `relevance.signals` como advertencias

172* Marca un valor `relevance` que no es un objeto

173* Rechaza una entrada `signals.hosts` que incluye un esquema, puerto o ruta

174 

175Cada hallazgo se imprime con la ruta del campo que le concierne, y la salida termina con `Validation passed`, `Validation passed with warnings` o `Validation failed`.

176 

177<h2 id="enable-suggestions-in-managed-settings">

178 Habilitar sugerencias en la configuración administrada

179</h2>

180 

181Los usuarios no ven sugerencias de un marketplace hasta que un administrador lo permita en [configuración administrada](/docs/es/plugins/org), incluso cuando su `marketplace.json` declara `relevance`.

182 

183Para permitir un marketplace, edite su configuración administrada de la siguiente manera:

184 

185* Agregue el nombre del marketplace a `pluginSuggestionMarketplaces`.

186* Para cualquier marketplace que no sea el marketplace oficial de Anthropic, también declare la fuente del marketplace, ya sea como entrada de ese nombre en [`extraKnownMarketplaces`](/docs/es/plugins/org#require-a-marketplace-and-its-plugins) o como entrada en [`strictKnownMarketplaces`](/docs/es/plugins/org#allowlist-with-strictknownmarketplaces).

187 

188En una máquina donde el marketplace no está registrado, o está registrado bajo el nombre permitido desde una fuente diferente, no aparecen sugerencias de él. La verificación de fuente evita que una fuente no relacionada se registre bajo un nombre permitido para que sus plugins se sugieran en toda su organización.

189 

190El siguiente `managed-settings.json` registra un marketplace de organización desde un repositorio de GitHub y habilita sus sugerencias:

191 

192```json theme={null}

193{

194 "extraKnownMarketplaces": {

195 "your-marketplace": {

196 "source": {

197 "source": "github",

198 "repo": "your-org/your-marketplace"

199 }

200 }

201 },

202 "pluginSuggestionMarketplaces": ["your-marketplace"]

203}

204```

205 

206El nombre del marketplace oficial solo puede registrarse desde la fuente oficial de Anthropic, por lo que no necesita declaración de fuente. Para el marketplace oficial, permita solo el nombre:

207 

208```json theme={null}

209{

210 "pluginSuggestionMarketplaces": ["claude-plugins-official"]

211}

212```

213 

214<h2 id="preview-what-the-user-sees">

215 Vista previa de lo que ve el usuario

216</h2>

217 

218Cuando la señal `relevance` de un plugin coincide durante una sesión, el consejo debajo del spinner lee:

219 

220```text theme={null}

221Working with Terraform? Install the terraform-helpers plugin:

222/plugin install terraform-helpers@your-marketplace

223```

224 

225Cuando una señal `cwd` coincide al inicio de la sesión, la notificación de una línea lee:

226 

227```text theme={null}

228plugin suggestion: terraform-helpers@your-marketplace · /plugin

229```

230 

231En la pestaña Discover de `/plugin`, el plugin se fija encima de los otros resultados con una anotación que nombra la señal coincidente, como `suggested for this directory` o `suggested for terraform commands`.

232 

233Claude Code limita con qué frecuencia sugiere un plugin dado:

234 

235* La sugerencia aparece como máximo una vez cada tres sesiones en el spinner tip y la notificación de inicio de sesión combinados.

236* La notificación de inicio de sesión deja de aparecer una vez que el spinner tip y la notificación han mostrado el plugin un total combinado de dos veces.

237* Ni el spinner tip ni la notificación de inicio de sesión se repiten una vez que el plugin está instalado.

238* La pestaña Discover fija el plugin la primera vez que el usuario abre la pestaña mientras las señales del plugin coinciden. Claude Code registra eso en `~/.claude.json`, por lo que cada vez posterior que el usuario abre `/plugin` en esa máquina, el plugin aparece en orden normal.

239 

240<h2 id="see-also">

241 Ver también

242</h2>

243 

244* [Alojar un marketplace](/docs/es/plugins/host-marketplace): ejecute el marketplace que aloja sus plugins

245* [Referencia de marketplace](/docs/es/plugins/marketplace-reference#plugin-entries): cada campo que acepta una entrada de plugin

246* [Recomendar su plugin desde su CLI](/docs/es/plugins/cli-hints): solicite a los usuarios desde su propio CLI en lugar de desde las señales de sesión de Claude Code

247* [Administrar plugins para su organización](/docs/es/plugins/org): `extraKnownMarketplaces`, `strictKnownMarketplaces` y el resto de las claves de política de plugins

plugins/security.md +186 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Seguridad y confianza de plugins

6 

7> Decide si confiar en un plugin antes de instalarlo, desde lo que un plugin puede hacer en tu máquina hasta cómo revisar uno y eliminarlo.

8 

9Un plugin de Claude Code que instales puede ejecutar código arbitrario en tu máquina con tus privilegios de usuario.

10 

11Instalas un plugin desde un marketplace, que es el catálogo del que Claude Code lo obtiene. Algunos nombres de marketplace están [reservados para los propios marketplaces de Anthropic](#marketplace-tiers), y todos los demás marketplaces son de terceros. El nombre de un marketplace te dice quién publica el catálogo, no qué hace cada plugin en él, así que [revisa un plugin antes de instalarlo](#review-a-plugin-before-you-install) sea cual sea el marketplace del que provenga.

12 

13Lee esta página si estás decidiendo si instalar un plugin, o si revisas herramientas antes de que tu equipo pueda usarlas.

14 

15<Note>

16 Estos casos se cubren en otras páginas:

17 

18 * **Modelo de seguridad propio de Claude Code**: consulta [Security](/docs/es/security)

19 * **Restringir o requerir plugins para una organización**: consulta [Manage plugins for your organization](/docs/es/plugins/org)

20 * **Los plugins `security-guidance` o `claude-security`**: esta página no trata sobre ellos. Consulta [`security-guidance`](/docs/es/security-guidance) y [`claude-security`](/docs/es/claude-security)

21</Note>

22 

23Comienza con [qué puede hacer un plugin](#understand-what-a-plugin-can-do) y [cuáles son los marketplaces de Anthropic](#marketplace-tiers), luego [revisa el plugin antes de instalarlo](#review-a-plugin-before-you-install).

24 

25<h2 id="understand-what-a-plugin-can-do">

26 Entender qué puede hacer un plugin

27</h2>

28 

29Un plugin puede contener contenido que ejecuta código en tu máquina con tus privilegios de usuario y contenido que entra en el contexto de Claude como instrucciones, así que [revisa un plugin antes de instalarlo](#review-a-plugin-before-you-install). Esto es lo que un plugin instalado puede hacer:

30 

31* **Hooks**: los [hooks](/docs/es/hooks) de un plugin se ejecutan como comandos de shell en puntos del ciclo de vida de Claude Code, como antes o después de una llamada a herramienta.

32* **Servidores MCP y LSP**: Claude Code se conecta a los [servidores MCP](/docs/es/mcp) que declara un plugin habilitado y le da a Claude sus herramientas. Un servidor MCP de stdio se ejecuta como un proceso que Claude Code inicia en tu máquina. Claude Code también inicia los servidores de lenguaje que declara el plugin.

33* **Directorio `bin/`**: Claude Code añade el directorio `bin/` de cada plugin habilitado a la `PATH` del shell de la herramienta Bash, así que los comandos Bash de Claude pueden ejecutar cualquier ejecutable allí.

34* **Skills, comandos y agentes**: estos entran en el contexto de Claude como instrucciones, así que influyen en lo que Claude hace con las herramientas que ya tiene.

35* **Actualizaciones**: cuando la actualización automática está activada para el marketplace desde el que instalaste un plugin, Claude Code actualiza ese plugin en segundo plano, así que los archivos que revisaste pueden cambiar en el disco. [Cuándo se ejecuta la actualización automática](/docs/es/plugins/loading#when-auto-update-runs) tiene el cronograma. Para activar o desactivar la actualización automática por marketplace, consulta [Keep plugins updated](/docs/es/plugins/install#keep-plugins-updated).

36 

37Las [reglas de permisos](/docs/es/permissions) y [sandbox](/docs/es/sandboxing) de Claude Code cubren las llamadas a herramientas que hace Claude, no el código que ejecuta un plugin por sí solo:

38 

39* **Hooks y procesos de servidor**: los hooks de comando ejecutan comandos de shell con tus permisos de usuario completos. Claude Code ejecuta hooks y servidores MCP fuera del sandbox.

40* **Llamadas a herramientas de Claude**: una llamada a una de las herramientas MCP del plugin, y un comando Bash que ejecuta un ejecutable del `bin/` del plugin, son llamadas a herramientas, así que tus reglas de permisos se aplican a ellas.

41 

42Instalar un plugin también lo habilita, a menos que su manifiesto o entrada de marketplace establezca [`defaultEnabled: false`](/docs/es/plugins/install#choose-an-install-scope) y no lo hayas habilitado tú mismo.

43 

44Para eliminar un plugin en el que ya no confías, consulta [Remove a plugin you no longer trust](#remove-a-plugin-you-no-longer-trust).

45 

46<h2 id="marketplace-tiers">

47 Identificar los marketplaces de Anthropic por nombre

48</h2>

49 

50El nombre de un marketplace lo coloca en uno de tres niveles: oficial, comunidad o terceros. Claude Code acepta los nombres oficial y comunidad solo para marketplaces obtenidos de repositorios `github.com/anthropics/`, así que un marketplace de terceros no puede presentarse como uno de Anthropic. Un marketplace que publica un compañero de trabajo u tu organización es de terceros.

51 

52La tabla enumera qué nombres caen en cada nivel:

53 

54| Nivel | Cuáles marketplaces |

55| :-------- | :------------------------------------------------------------------------------------------------ |

56| Oficial | Los [nombres de marketplace oficial](#official-marketplace-names), como `claude-plugins-official` |

57| Comunidad | `claude-community`, `claude-plugins-community`, y `healthcare` |

58| Terceros | Todos los demás marketplaces |

59 

60Donde el catálogo `claude-community` fija un plugin a un SHA de commit, que lo hace para casi todas las entradas, Claude Code se niega a instalar un commit diferente.

61 

62<h3 id="official-marketplace-names">

63 Nombres de marketplace oficial

64</h3>

65 

66Estos nombres de marketplace conforman el nivel oficial:

67 

68* `claude-plugins-official`

69* `claude-code-marketplace`

70* `claude-code-plugins`

71* `anthropic-marketplace`

72* `anthropic-plugins`

73* `agent-skills`

74* `anthropic-agent-skills`

75* `life-sciences`

76* `knowledge-work-plugins`

77* `claude-for-legal`

78* `claude-for-financial-services`

79* `financial-services-plugins`

80* `first-party-plugins`

81* `claude-tag-plugins`

82 

83Para saber cómo difieren los marketplaces oficial, comunidad y demo y dónde explorar lo que enumera cada uno, consulta [Anthropic's marketplaces](/docs/es/plugins/anthropic-marketplaces).

84 

85<h2 id="review-a-plugin-before-you-install">

86 Revisar un plugin antes de instalarlo

87</h2>

88 

89Antes de instalar un plugin, mira qué añade y de dónde viene.

90 

91<Steps>

92 <Step title="Verificar la fuente del marketplace">

93 En tu shell, ejecuta `claude plugin marketplace list` para imprimir la fuente desde la que se añadió cada marketplace, como un repositorio de GitHub o un directorio.

94 </Step>

95 

96 <Step title="Leer el panel de detalles">

97 En una sesión de Claude Code, ejecuta `/plugin` y selecciona el plugin. El panel de detalles muestra una sección **Will install** que enumera los comandos, agentes, skills, hooks y servidores MCP y LSP del plugin. Para un plugin del que Anthropic no ha publicado datos de componentes, la sección muestra lo que declara la entrada del marketplace, o una nota: `Components will be discovered at installation` para un plugin almacenado dentro del marketplace, o `Component summary not available for remote plugin` para uno obtenido de otro lugar.

98 </Step>

99 

100 <Step title="Leer la fuente del plugin">

101 En el panel de detalles, selecciona **Open homepage** o **View on GitHub** debajo de las opciones de instalación. Si el panel no ofrece ninguno, abre el repositorio del marketplace que encontraste en el primer paso. Encuentra el directorio del plugin allí. La sección **Will install** muestra que existe un hook pero no qué ejecuta, así que lee estos archivos en el directorio del plugin:

102 

103 * **`hooks/hooks.json`**: el comando que ejecuta cada hook

104 * **`.mcp.json`**: el comando o URL de cada servidor

105 * **`bin/`**: cada archivo en el directorio

106 </Step>

107 

108 <Step title="Enumerar lo que contiene el plugin">

109 Clona el repositorio que contiene el directorio del plugin, luego ejecuta `claude --plugin-dir <plugin directory> plugin details <plugin name>` en tu shell para ver qué encuentra Claude Code en él. El comando lee los archivos del plugin sin iniciar una sesión e imprime un `Component inventory` que enumera los skills y comandos del plugin, agentes, hooks con el evento de cada hook, y servidores MCP y LSP.

110 </Step>

111</Steps>

112 

113Después de instalar un plugin, ejecuta `claude plugin details <plugin name>` en tu shell para imprimir el mismo `Component inventory` para la copia instalada bajo `~/.claude/plugins/cache/<marketplace>/<plugin>/<version>/`.

114 

115<h3 id="remove-a-plugin-you-no-longer-trust">

116 Eliminar un plugin en el que ya no confías

117</h3>

118 

119En tu shell, ejecuta [`claude plugin uninstall <plugin>`](/docs/es/plugins/cli-reference#plugin-uninstall) con el `--scope` en el que lo instalaste. Luego verifica qué eliminó la desinstalación y qué dejó:

120 

121* **Datos persistentes**: cuando esa fue la última scope en la que se instaló el plugin, desinstalar también elimina el directorio de datos persistentes del plugin, a menos que pases `--keep-data`.

122* **Archivos en caché**: los archivos del plugin permanecen en el disco bajo `~/.claude/plugins/cache/` durante 14 días antes de que un [barrido de fondo los elimine](/docs/es/plugins/loading#cleanup-of-previous-versions). Después de desinstalar tu último plugin, los directorios huérfanos permanecen hasta que instales otro. Para eliminar los archivos ahora, elimina el directorio del plugin bajo `~/.claude/plugins/cache/<marketplace>/<plugin>/` tú mismo.

123* **El marketplace**: si tampoco confías en el propietario del marketplace, [elimina el marketplace](/docs/es/plugins/install#manage-marketplaces) también, que desinstala cada plugin que instalaste desde él.

124 

125<h2 id="recognize-when-claude-code-refuses-or-warns">

126 Reconocer cuándo Claude Code se niega o advierte

127</h2>

128 

129El panel de detalles que abres desde la pestaña **Discover** o **Marketplaces** en `/plugin` muestra la misma advertencia de confianza para cada plugin. Claude Code se niega en lugar de advertir en casos como los de [Untrusted marketplace sources and failed integrity checks](#untrusted-marketplace-sources-and-failed-integrity-checks).

130 

131<h3 id="trust-warning-before-you-install">

132 Advertencia de confianza antes de instalar

133</h3>

134 

135La advertencia lee igual sea cual sea el marketplace del que provenga el plugin:

136 

137```text theme={null}

138Make sure you trust a plugin before installing, updating, or using it. Anthropic does not control what MCP servers, files, or other software are included in plugins and cannot verify that they will work as intended or that they won't change. See each plugin's homepage for more information.

139```

140 

141Si tu organización establece `pluginTrustMessage` en [managed settings](/docs/es/plugins/org), Claude Code añade ese texto a la advertencia.

142 

143<h3 id="untrusted-marketplace-sources-and-failed-integrity-checks">

144 Fuentes de marketplace no confiables y fallos en las comprobaciones de integridad

145</h3>

146 

147Claude Code se niega a cargar un marketplace o a instalar un plugin en estos casos, cada uno con su propio mensaje de error:

148 

149* **Fuente de marketplace no confiable**: cuando un marketplace usa un nombre oficial o de comunidad pero su fuente está fuera de `github.com/anthropics/`, Claude Code deja de cargar el marketplace y los plugins que instalaste desde él. El error es [Marketplace is registered from an untrusted source](/docs/es/errors#marketplace-is-registered-from-an-untrusted-source).

150* **Integridad del archivo**: cuando una entrada de marketplace fija una [fuente `archive`](/docs/es/plugins/marketplace-reference#archive-plugin-source) a un resumen `sha256` y el resumen del archivo descargado no coincide, Claude Code se niega a la instalación. El error es [Plugin archive integrity check failed](/docs/es/errors#plugin-archive-integrity-check-failed).

151 

152El pin `sha256` es separado del pin de SHA de commit del catálogo de comunidad, que selecciona el commit de git a verificar.

153 

154<h2 id="enforce-plugin-controls-for-your-organization">

155 Aplicar controles de plugins para tu organización

156</h2>

157 

158Con [managed settings](/docs/es/plugins/org), un administrador puede aplicar estos controles de plugins:

159 

160* Permitir o bloquear fuentes de marketplace

161* Forzar la habilitación de plugins

162* Desactivar los indicadores `--plugin-dir` y `--plugin-url` y la variable `CLAUDE_CODE_PLUGIN_DIRS`

163* Limitar hooks a los de managed settings y plugins forzados a habilitarse

164* Evitar que los plugins de las cuentas claude.ai de los miembros se carguen en Claude Code, con [`syncClaudeAiPlugins`](/docs/es/plugins/org#control-matrix)

165 

166La [matriz de control](/docs/es/plugins/org#control-matrix) dice qué cubre y qué no cubre cada clave.

167 

168<h2 id="find-plugins-in-telemetry">

169 Encontrar plugins en telemetría

170</h2>

171 

172Si tu organización exporta los [eventos OpenTelemetry](/docs/es/monitoring-usage) de Claude Code a su propio backend, los [niveles de marketplace](#marketplace-tiers) deciden qué nombres de plugin aparecen allí:

173 

174* **[Evento Plugin loaded](/docs/es/monitoring-usage#plugin-loaded-event)**: el evento reporta los nombres de plugin y marketplace de nivel oficial tal como son. Para los niveles de comunidad y terceros, `plugin.name` y `marketplace.name` son la cadena literal `third-party` a menos que establezca `OTEL_LOG_TOOL_DETAILS=1`.

175* **Scope del plugin**: el `plugin.scope` del evento cargado aún reporta de dónde vino el plugin, como `org` para un plugin que tu managed settings habilita u `user-local` para cualquier otro plugin de terceros. El [evento plugin loaded](/docs/es/monitoring-usage#plugin-loaded-event) enumera cada valor.

176* **[Evento Plugin installed](/docs/es/monitoring-usage#plugin-installed-event)**: a menos que establezca `OTEL_LOG_TOOL_DETAILS=1`, el evento omite los campos de nombre para plugins no oficiales en lugar de reportar `third-party`.

177* **[Claude Code Analytics API](https://platform.claude.com/docs/en/api/admin/analytics/plugins/list)**: Claude Code reporta plugins de los niveles oficial y comunidad por nombre y reporta cada otro plugin como `third-party`.

178 

179<h2 id="next-steps">

180 Próximos pasos

181</h2>

182 

183* [Manage plugins for your organization](/docs/es/plugins/org): restringe qué marketplaces pueden instalar los usuarios y requiere los que confías

184* [Install and manage plugins](/docs/es/plugins/install): revisa el panel de detalles de un plugin antes de elegir una scope

185* [Anthropic's marketplaces](/docs/es/plugins/anthropic-marketplaces): cuáles nombres de marketplace son de Anthropic

186* [Security](/docs/es/security): el modelo de seguridad propio de Claude Code

plugins/troubleshooting.md +1064 −0 created

Details

1> ## Documentation Index

2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt

3> Use this file to discover all available pages before exploring further.

4 

5# Solucionar problemas de plugins

6 

7> Corrija errores de plugins en Claude Code. Encuentre el mensaje exacto que vio, agrupado por etapa desde donde /plugin se ejecuta hasta la instalación y la política de la organización.

8 

9Esta página enumera mensajes de error y síntomas para plugins de Claude Code y para mercados, los catálogos desde los que Claude Code instala plugins. Cada entrada proporciona la causa, una solución y lo que ve una vez que la solución funciona.

10 

11Cuando un mensaje nombra un plugin o mercado, la entrada muestra un marcador de posición como `<name>` en su lugar.

12 

13Utilice esta página si instala plugins, los crea, aloja un mercado o administra plugins para una organización.

14 

15<Note>

16 Estos casos se tratan en otras páginas:

17 

18 * **Por qué los alcances, la caché y la precedencia se comportan de la manera que lo hacen**: lea [Plugin loading reference](/docs/es/plugins/loading)

19 * **Buscar un indicador, campo o comando**: use la [plugin commands reference](/docs/es/plugins/cli-reference), la [manifest reference](/docs/es/plugins/manifest-reference), o la [marketplace reference](/docs/es/plugins/marketplace-reference)

20</Note>

21 

22Busque el mensaje exacto que vio. Cada mensaje se enumera bajo la etapa que lo produce, que no siempre es el comando que ejecutó. Por ejemplo, una instalación puede fallar porque falta un mercado, por lo que ese mensaje está bajo [Add a marketplace](#add-a-marketplace).

23 

24<h2 id="find-where-/plugin-runs">

25 Find where `/plugin` runs

26</h2>

27 

28`/plugin` es un comando que escribe dentro de una sesión de terminal de Claude Code en ejecución, y abre un panel interactivo. Las entradas en esta sección cubren los lugares donde puede escribirlo pero no puede ejecutarse, y los comandos que no existen.

29 

30<h3 id="plugin-isnt-available-in-this-environment">

31 `/plugin isn't available in this environment`

32</h3>

33 

34Escribió `/plugin` en algún lugar que no sea una sesión de terminal de Claude Code, y Claude respondió con esta línea en lugar de abrir nada.

35 

36Recibe esta respuesta en una sesión que no tiene terminal para dibujar el panel `/plugin` en: [non-interactive mode](/docs/es/headless) con `claude -p`, el Agent SDK, la pestaña Code de la aplicación de escritorio Claude, el panel de extensión de VS Code, y el navegador en claude.ai/code.

37 

38En el panel de extensión de VS Code, solo una línea `/plugin` con algo después, como `/plugin install <plugin>@<marketplace>`, recibe esta respuesta. `/plugin` o `/plugins` escrito solo abre el diálogo **Manage plugins**.

39 

40Instale el plugin desde la superficie en la que se encuentra:

41 

42* **Aplicación de escritorio Claude, sesión local o SSH**: haga clic en el botón **+** junto al prompt, luego **Plugins**, luego **Add plugin** para abrir el [plugin browser](/docs/es/desktop#install-plugins)

43* **Extensión de VS Code**: use la pestaña **VS Code** bajo [Install a plugin](/docs/es/plugins/install#install-a-plugin)

44* **Claude Code en la web, o una sesión de escritorio en la nube**: una sesión en la nube no tiene navegador de plugins. Vea la pestaña **Cloud session** bajo [Install a plugin](/docs/es/plugins/install#install-a-plugin) para lo que carga una sesión en la nube

45* **Una terminal a la que tiene acceso**: ejecute `claude` y escriba `/plugin` allí, o ejecute `claude plugin install <plugin>@<marketplace>` en su shell sin iniciar una sesión

46 

47Cuando una instalación de terminal funciona, `/plugin` imprime un resumen de instalación que comienza con `✓ Installed <plugin>.` y `claude plugin install` imprime `Successfully installed plugin: <plugin>@<marketplace>`.

48 

49<h3 id="zsh-no-such-file-or-directory-plugin">

50 `zsh: no such file or directory: /plugin`

51</h3>

52 

53Escribió `/plugin ...` en un prompt de shell, y el shell informó que no existe ningún archivo llamado `/plugin`. Bash informa `bash: /plugin: No such file or directory`.

54 

55`/plugin` es un comando que escribe dentro de una sesión de Claude Code, no en el prompt de shell. Inicie una sesión y escriba el mismo comando allí:

56 

57```shell theme={null}

58claude

59```

60 

61Luego, en el prompt de Claude Code:

62 

63```text theme={null}

64/plugin install <plugin>@<marketplace>

65```

66 

67Una instalación exitosa imprime un resumen que comienza con `✓ Installed <plugin>.` Si la instalación en sí falla, su mensaje está bajo [Add a marketplace](#add-a-marketplace) o [Install a plugin](#install-a-plugin).

68 

69Para instalar desde el shell sin iniciar una sesión, ejecute `claude plugin install <plugin>@<marketplace>` en su lugar.

70 

71<h3 id="the-term-plugin-is-not-recognized-as-the-name-of-a-cmdlet">

72 `The term '/plugin' is not recognized as the name of a cmdlet`

73</h3>

74 

75Escribió `/plugin ...` en un prompt de PowerShell, y `/plugin` es un comando de Claude Code, no un programa. Bash y Zsh informan [su propia forma de este error](#zsh-no-such-file-or-directory-plugin).

76 

77Use cualquiera de estos en su lugar:

78 

79* Ejecute `claude`, luego escriba `/plugin` en el prompt de Claude Code

80* Ejecute `claude plugin install <plugin>@<marketplace>` en PowerShell sin iniciar una sesión

81 

82<h3 id="claude-command-not-found-after-claude-plugin">

83 `claude: command not found` after `claude plugin ...`

84</h3>

85 

86Ejecutó `claude plugin install ...` en su shell, y el shell no pudo encontrar `claude` en absoluto. En Windows el mensaje es `'claude' is not recognized as the name of a cmdlet` o `'claude' is not recognized as an internal or external command`.

87 

88La causa no es el comando del plugin. O Claude Code no está instalado, o su directorio de instalación no está en su `PATH` en este shell. Siga [`command not found: claude` after installation](/docs/es/troubleshoot-install#command-not-found-claude-after-installation), luego reintente el comando del plugin.

89 

90<h3 id="unknown-command-and-command-spellings-that-dont-exist">

91 `Unknown command` and command spellings that don't exist

92</h3>

93 

94Escribió un comando de plugin que vio en algún lugar y obtuvo `Unknown command: /<name>` en una sesión, o `error: unknown command '<name>'` o `error: unknown option '<flag>'` del binario `claude` en su shell.

95 

96Hay varios comandos en uso que Claude Code no tiene. La tabla a continuación asigna cada uno al comando real. La [plugin commands reference](/docs/es/plugins/cli-reference) enumera todos los subcomandos e indicadores.

97 

98| Escribió | Lo que Claude Code dice | Use en su lugar |

99| :----------------------------------------- | :--------------------------------------------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------------- |

100| `claude plugin add <source>` | `error: unknown command 'add'` | `claude plugin marketplace add <source>` para agregar un mercado, o `claude plugin install <plugin>@<marketplace>` para instalar un plugin |

101| `claude plugin install <plugin> --project` | `error: unknown option '--project'` | `claude plugin install <plugin>@<marketplace> --scope project` |

102| `/install <plugin>` | `Unknown command: /install` | `/plugin install <plugin>@<marketplace>` |

103| `/plugin add <source>` | El panel `/plugin` se abre en la pestaña **Discover** | `/plugin marketplace add <source>` |

104| `marketplace.anthropic.com` como fuente | `Invalid marketplace source format. Try: owner/repo, https://..., or ./path` | `anthropics/claude-plugins-official` para el mercado oficial |

105 

106Estos comandos se ven mal pero funcionan:

107 

108* `claude plugins` es un alias de `claude plugin`

109* `claude plugin remove` es un alias de `claude plugin uninstall`

110* `/plugins` y `/marketplace` en una sesión abren el mismo panel que `/plugin`

111 

112<h2 id="add-a-marketplace">

113 Add a marketplace

114</h2>

115 

116Un mercado es un catálogo que agrega a Claude Code desde un repositorio git, una URL o una ruta local. Estas entradas cubren los mensajes que obtiene cuando agregar uno falla o una actualización posterior falla.

117 

118<h3 id="marketplace-claude-plugins-official-not-found">

119 `Marketplace "claude-plugins-official" not found`

120</h3>

121 

122Ejecutó `/plugin install <plugin>@claude-plugins-official` en una sesión, y Claude Code informó que no tiene ningún mercado con ese nombre.

123 

124El mercado oficial aún no está registrado en esta máquina. Claude Code normalmente lo registra por su cuenta la primera vez que inicia una sesión de terminal interactiva. No se ha ejecutado si solo ha usado Claude Code a través de la extensión de VS Code, y omite o difiere ese paso:

125 

126* Cuando una política bloquea la fuente

127* Cuando se establece `CLAUDE_CODE_DISABLE_OFFICIAL_MARKETPLACE_AUTOINSTALL`

128* Después de un intento fallido que está esperando para reintentar

129 

130Los comandos de shell `claude plugin` nunca lo registran por usted.

131 

132Agréguelo, luego reintente la instalación:

133 

134```text theme={null}

135/plugin marketplace add anthropics/claude-plugins-official

136```

137 

138Claude Code imprime `Successfully added marketplace: claude-plugins-official`, y `/plugin marketplace list` muestra el mercado con su fuente.

139 

140Para cualquier otro nombre de mercado en este mensaje, vea [`Marketplace "<name>" not found`](#marketplace-not-found).

141 

142La misma cadena también aparece en la pestaña `/plugin` **Errors**, la lista de fallos de carga del panel, cuando un plugin listado en su configuración nombra un mercado que no ha agregado.

143 

144<h3 id="marketplace-not-found">

145 `Marketplace "<name>" not found`

146</h3>

147 

148Ejecutó `/plugin install <plugin>@<name>` en una sesión, a menudo desde una línea de instalación que alguien le envió, y Claude Code informó que no tiene ningún mercado con ese nombre.

149 

150Si el nombre comienza con `claudeai-`, el mercado se aloja en claude.ai, y lo agrega por nombre desde su shell con `claude plugin marketplace add --claudeai <name>`. Vea [Add a marketplace from claude.ai](/docs/es/plugins/install#add-from-claude-ai).

151 

152Para cualquier otro nombre, una línea de instalación nombra un mercado pero no dice dónde se aloja el mercado, y Claude Code no tiene un índice para buscar un nombre de mercado. Pida a quien le envió la línea la fuente del mercado, que es un `owner/repo` de GitHub, una URL de git, o una ruta. Luego [agregue el mercado](/docs/es/plugins/install#add-a-marketplace) y ejecute la línea de instalación nuevamente.

153 

154Un mercado que alguien le envía es de terceros, así que [revise el plugin antes de instalarlo](/docs/es/plugins/security#review-a-plugin-before-you-install).

155 

156Si ya agregó el mercado, verifique la ortografía contra `/plugin marketplace list`.

157 

158<h3 id="invalid-marketplace-source-format">

159 `Invalid marketplace source format`

160</h3>

161 

162Ejecutó `/plugin marketplace add <source>` o `claude plugin marketplace add <source>`, y Claude Code respondió `Invalid marketplace source format. Try: owner/repo, https://..., or ./path`.

163 

164Claude Code acepta una fuente en una de estas formas:

165 

166* Un atajo de `owner/repo` de GitHub

167* Una URL `https://` o `http://`

168* Una URL SSH `user@host:path`

169* Una ruta local que comienza con `./`, `../`, `/`, o `~`

170 

171Un nombre simple como `claude-plugins-official` no coincide con ninguno de ellos. Tampoco un nombre de host simple como `marketplace.anthropic.com`.

172 

173Vuelva a escribir la fuente en una de las formas aceptadas:

174 

175```text theme={null}

176/plugin marketplace add anthropics/claude-plugins-official

177```

178 

179Claude Code imprime `Successfully added marketplace: <name>` cuando la adición funciona.

180 

181<h3 id="is-not-a-valid-github-owner-repo-shorthand">

182 `'<source>' is not a valid GitHub owner/repo shorthand`

183</h3>

184 

185Pasó una fuente con una barra que no es `owner/repo`, como `github.com/owner/repo` o una ruta `gitlab.example.com/group/project`. Claude Code la rechazó con este mensaje y una lista de formas aceptadas.

186 

187El atajo `owner/repo` es solo de GitHub y tiene que seguir las reglas de nomenclatura de GitHub, por lo que un nombre de host o un segmento de ruta adicional falla. Pase la fuente en la forma que coincida con dónde se aloja el mercado:

188 

189* **Un repositorio en cualquier host**: la URL de clonación completa

190* **Un `marketplace.json` alojado**: su URL `https://`

191* **Un checkout local**: `./path` o una ruta absoluta

192 

193Por ejemplo, para agregar el mercado oficial por su URL de clonación, en una sesión:

194 

195```text theme={null}

196/plugin marketplace add https://github.com/anthropics/claude-plugins-official.git

197```

198 

199Una adición exitosa imprime `Successfully added marketplace: <name>`.

200 

201<h3 id="path-does-not-exist">

202 `Path does not exist: <path>`

203</h3>

204 

205Pasó una ruta local a `marketplace add`, y nada existe en esa ruta. Una ruta relativa se resuelve contra su directorio actual.

206 

207Verifique la ruta resuelta en el mensaje. Luego ejecute el comando desde el directorio desde el que comienza la ruta relativa, o pase una ruta absoluta al directorio del mercado. Una adición exitosa imprime `Successfully added marketplace: <name>`.

208 

209Claude Code acepta un directorio que contiene `.claude-plugin/marketplace.json`, o una ruta a un archivo `.json`. Una ruta a cualquier otro archivo falla con `File path must point to a .json file (marketplace.json)`.

210 

211<h3 id="marketplace-file-not-found-at-claude-plugin-marketplace-json">

212 `Marketplace file not found at <path>/.claude-plugin/marketplace.json`

213</h3>

214 

215Claude Code clonó o descargó el mercado pero no encontró `marketplace.json` en la ruta esperada dentro de él. El comando de adición lo informa como `Failed to add marketplace: Marketplace file not found at ...`.

216 

217La ubicación predeterminada es `.claude-plugin/marketplace.json` en la raíz del repositorio, y la [marketplace reference](/docs/es/plugins/marketplace-reference) enumera las ubicaciones aceptadas.

218 

219La solución difiere para el propietario y para todos los demás:

220 

221* **Usted es el propietario del mercado**: coloque el archivo en esa ubicación y vuelva a agregar el mercado

222* **Alguien más lo aloja**: pida al propietario la fuente exacta que publican

223 

224<h3 id="ssh-authentication-failed-or-https-authentication-failed">

225 `SSH authentication failed` or `HTTPS authentication failed`

226</h3>

227 

228Agregó o actualizó un mercado desde un repositorio git, y el clonado falló con `Failed to clone marketplace repository:` seguido de una de estas líneas.

229 

230Primero verifique el repositorio en sí: un `owner/repo` mal escrito, un repositorio que no existe, o un repositorio privado que no puede ver también termina en este mensaje. Abra la URL del repositorio en su navegador, o ejecute `git ls-remote <url>` en su terminal, para confirmar que existe y tiene acceso.

231 

232Si el repositorio es correcto, la causa son las credenciales. Claude Code ejecuta git con prompts interactivos deshabilitados, por lo que no puede pedirle una contraseña, una frase de contraseña de clave, o una credencial de la manera que lo haría su terminal. Si git necesita solicitar, ve `fatal: Cannot prompt because user interactivity has been disabled` o `terminal prompts disabled` en el error original. Solo las credenciales que ya funcionan de forma no interactiva tienen éxito:

233 

234* **SSH**: `ssh -T git@<host>` debe tener éxito sin solicitar una frase de contraseña, y el host ya debe estar en `known_hosts`

235* **HTTPS**: su asistente de credenciales debe contener un token para el host. Para GitHub, ejecute `gh auth login` y `gh auth setup-git`. Para otro host, almacene un token de acceso personal en su asistente de credenciales de git. Pruebe con `git ls-remote <url>`

236 

237Una vez que `git ls-remote` tiene éxito en su terminal sin un prompt, ejecute la adición o actualización nuevamente. Una adición exitosa imprime `Successfully added marketplace: <name>`. Una actualización exitosa imprime `Successfully updated marketplace: <name>` desde su shell, o `✔ Updated 1 marketplace` en una sesión.

238 

239Para hacer que Claude Code omita SSH para fuentes `owner/repo` de GitHub, establezca `CLAUDE_CODE_PLUGIN_PREFER_HTTPS=1`. Sin él, Claude Code clona esas fuentes sobre SSH cuando una clave SSH para `github.com` parece estar configurada, y vuelve a HTTPS cuando el clonado SSH falla.

240 

241Para lo que las actualizaciones automáticas en segundo plano pueden y no pueden hacer con sus credenciales, vea [What background auto-update does with credentials](/docs/es/plugins/host-marketplace#what-background-auto-update-does-with-credentials).

242 

243<h3 id="ssh-host-key-is-not-in-your-known-hosts-file">

244 `SSH host key is not in your known_hosts file`

245</h3>

246 

247Agregó un mercado sobre SSH desde un host al que nunca se ha conectado, y el clonado falló con esta línea y una sugerencia `ssh -T git@<host>`. Para un host cuya clave cambió, el mensaje es `SSH host key has changed` con una sugerencia `ssh-keygen -R <host>` en su lugar.

248 

249Claude Code clona con `StrictHostKeyChecking=yes`, por lo que rechaza un host cuya clave no ha aceptado aún en lugar de aceptar la clave automáticamente. Conéctese una vez desde su terminal para aceptar la huella digital, luego reintente:

250 

251```shell theme={null}

252ssh -T git@github.com

253```

254 

255Para un repositorio público, agregue el mercado por su URL `https://` en su lugar para evitar SSH completamente.

256 

257<h3 id="command-git-not-found-or-is-in-an-unsafe-location">

258 `Command 'git' not found or is in an unsafe location`

259</h3>

260 

261En Windows, agregó un mercado y Claude Code informó `Failed to clone marketplace repository: Command 'git' not found or is in an unsafe location (current directory)`.

262 

263Claude Code busca `git` en su `PATH` y rechaza ejecutar uno encontrado solo en el directorio actual. Para solucionarlo, instale Git e intente nuevamente:

264 

265<Steps>

266 <Step title="Install Git for Windows">

267 Instale Git para Windows para que `git` esté en su `PATH`.

268 </Step>

269 

270 <Step title="Open a new terminal">

271 Abra una nueva terminal para que se aplique el `PATH` actualizado.

272 </Step>

273 

274 <Step title="Confirm git runs">

275 Confirme que `git --version` imprime una versión.

276 </Step>

277 

278 <Step title="Retry the add">

279 Ejecute el comando `marketplace add` nuevamente.

280 </Step>

281</Steps>

282 

283<h3 id="git-clone-timed-out-after-120s">

284 `Git clone timed out after 120s`

285</h3>

286 

287Agregó o actualizó un mercado, y falló con `Git clone timed out after 120s`, seguido de una sugerencia para establecer `CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS`.

288 

289Clonar un mercado, y re-clonar uno para actualizarlo, obtiene 120 segundos por defecto. Para un repositorio grande o una conexión lenta, aumente el límite. El valor está en milisegundos:

290 

291<Tabs>

292 <Tab title="Bash or Zsh">

293 ```bash theme={null}

294 export CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS=300000

295 ```

296 </Tab>

297 

298 <Tab title="PowerShell">

299 ```powershell theme={null}

300 $env:CLAUDE_CODE_PLUGIN_GIT_TIMEOUT_MS = "300000"

301 ```

302 </Tab>

303</Tabs>

304 

305Luego reintente en el mismo shell.

306 

307Si el repositorio es un monorepo, limite el checkout a los directorios que nombra con `claude plugin marketplace add <source> --sparse <paths>`.

308 

309<h3 id="marketplace-updates-keep-failing-offline">

310 Marketplace updates keep failing offline

311</h3>

312 

313Trabaja en un entorno donde el host git del mercado es inaccesible, y cada sesión repite una actualización fallida en segundo plano. Su checkout existente del mercado permanece en su lugar y el inicio no se retrasa.

314 

315Cada sesión, para un mercado con [auto-update on](/docs/es/plugins/loading#which-marketplaces-and-plugins-auto-update), Claude Code verifica el host git del mercado para nuevos commits en segundo plano. Cuando esa verificación no puede alcanzar el host, intenta clonar el mercado nuevamente, y sin conexión ese clonado también falla.

316 

317Establezca esta variable para omitir el intento de re-clonación y mantener el uso del checkout existente cuando la verificación no puede alcanzar el host:

318 

319<Tabs>

320 <Tab title="Bash or Zsh">

321 ```bash theme={null}

322 export CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE=1

323 ```

324 </Tab>

325 

326 <Tab title="PowerShell">

327 ```powershell theme={null}

328 $env:CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE = "1"

329 ```

330 </Tab>

331</Tabs>

332 

333Con la variable establecida, Claude Code omite la re-clonación solo para un checkout que ya contiene `.claude-plugin/marketplace.json`. Un mercado que nunca fue clonado o cuyo clonado se detuvo a mitad de camino aún obtiene el intento de clonación, así que agréguelo una vez mientras está en línea.

334 

335Para una implementación completamente sin conexión, pre-rellene el directorio de plugins en el tiempo de compilación de imagen con `CLAUDE_CODE_PLUGIN_SEED_DIR` en su lugar, siguiendo [Seed containers and CI](/docs/es/plugins/org#seed-containers-and-ci).

336 

337<h3 id="marketplace-add-fails-on-a-github-enterprise-server-host">

338 Marketplace add fails on a GitHub Enterprise Server host

339</h3>

340 

341Agregó un mercado desde una URL de GitHub Enterprise Server (GHES) y obtuvo un error de política, o lo agregó desde claude.ai y obtuvo un error de acceso a GitHub.

342 

343Ambos casos están en la página de GHES:

344 

345* [Un error de política](/docs/es/github-enterprise-server#marketplace-add-fails-with-a-policy-error) significa que su organización restringió las fuentes del mercado y un administrador necesita agregar un `hostPattern` para el host

346* [Un error de acceso a GitHub en claude.ai](/docs/es/github-enterprise-server#marketplace-add-on-claude-ai-fails-with-a-github-access-error) significa que su propia cuenta de GitHub Enterprise aún no está conectada

347 

348<h2 id="install-a-plugin">

349 Install a plugin

350</h2>

351 

352Agregó un mercado y ejecutó una instalación, y la instalación se detuvo con un mensaje en lugar de instalar nada. Estas entradas cubren esos mensajes. También cubren los mensajes relacionados que aparecen más tarde en la pestaña `/plugin` **Errors**, o como una pestaña **Discover** vacía, cuando un plugin o su mercado no se puede encontrar, leer o confiar.

353 

354<h3 id="plugin-not-found-in-marketplace">

355 `Plugin "<name>" not found in marketplace "<marketplace>"`

356</h3>

357 

358Ejecutó `/plugin install <name>@<marketplace>` o `claude plugin install <name>@<marketplace>`, y el nombre del plugin no está en la copia del catálogo de ese mercado en su máquina.

359 

360`claude plugin install` en su shell imprime el mismo mensaje cuando no ha agregado el mercado en absoluto. Si `claude plugin marketplace update <marketplace>` luego responde `Marketplace '<marketplace>' not found`, [agregue el mercado](#add-a-marketplace) primero.

361 

362<h4 id="the-message-ends-with-a-refresh-hint">

363 `not found in marketplace` with a refresh hint

364</h4>

365 

366La sugerencia dice `Your local copy may be out of date — try claude plugin marketplace update <marketplace>` o `The marketplace couldn't be refreshed (...)`. Claude Code no actualizó el mercado antes de la búsqueda, como cuando está sin conexión, por lo que su copia del catálogo puede estar desactualizada. Actualice con el nombre del mercado, luego instale nuevamente:

367 

368```text theme={null}

369/plugin marketplace update <marketplace>

370```

371 

372`claude plugin marketplace update` imprime `Successfully updated marketplace: <name>`, y `/plugin marketplace update` muestra `✔ Updated 1 marketplace`. Si la instalación reintentada imprime el mismo mensaje, verifique el nombre como [`not found in marketplace` with no hint](#the-message-has-no-hint) describe. [When Claude Code refreshes a marketplace before an install](/docs/es/plugins/loading#when-claude-code-refreshes-a-marketplace-before-an-install) enumera los otros casos donde la actualización no se ejecuta.

373 

374<h4 id="the-message-has-no-hint">

375 `not found in marketplace` with no hint

376</h4>

377 

378El nombre es el problema más probable. Abra `/plugin`, vaya a **Discover**, y copie el nombre de la lista.

379 

380Antes de v2.1.232, Claude Code actualizaba el mercado nombrado solo después de que la búsqueda fallara, y solo cuando la actualización automática estaba activada para él.

381 

382<h3 id="plugin-not-found-in-any-marketplace">

383 `Plugin "<name>" not found in any marketplace`

384</h3>

385 

386Ejecutó `/plugin install <name>` sin `@marketplace`, y ningún mercado registrado tiene ese plugin. `claude plugin install <name>` informa `Plugin "<name>" not found in any configured marketplace`.

387 

388Sin un nombre de mercado, `claude plugin install` busca en los catálogos que ya tiene y no los actualiza primero, y `/plugin install` actualiza solo los mercados que tienen la actualización automática activada. Nombre el mercado, y Claude Code lo actualiza antes de buscar el plugin:

389 

390```text theme={null}

391/plugin install <name>@<marketplace>

392```

393 

394Cuando la instalación funciona, ve `✓ Installed <plugin>.` en una sesión, o `Successfully installed plugin: <plugin>@<marketplace>` desde `claude plugin install`.

395 

396Si no sabe qué mercado enumera el plugin, ejecute `/plugin marketplace list` para los mercados que tiene, y navegue por **Discover** en `/plugin` para el nombre del plugin.

397 

398<h3 id="plugin-is-already-installed-globally">

399 `Plugin '<name>@<marketplace>' is already installed globally`

400</h3>

401 

402Ejecutó `/plugin install` para un plugin que ya está instalado en el scope de usuario o por configuración administrada, y Claude Code rechazó con `Use '/plugin' to manage existing plugins.` Si escribió el nombre del plugin sin `@<marketplace>`, el mensaje omite `globally`.

403 

404El plugin ya está disponible en cada proyecto, por lo que no hay nada que agregar. Para cambiar su [scope](/docs/es/plugins/install), habilitarlo o deshabilitarlo, o configurarlo, abra `/plugin` y vaya a **Installed**.

405 

406Un plugin instalado solo en el scope de proyecto o local no activa este mensaje. Claude Code le permite instalarlo también en el scope de usuario, por lo que está disponible en otros proyectos.

407 

408`claude plugin install` en su shell imprime un mensaje diferente. Para un plugin ya instalado en el scope de destino, imprime `Plugin "<name>@<marketplace>" is already installed (scope: user)` y sale con 0. Si su directorio de caché falta, el mismo comando lo descarga nuevamente.

409 

410<h3 id="this-plugin-uses-a-source-type-your-claude-code-version-does-not-suppo">

411 `This plugin uses a source type your Claude Code version does not support`

412</h3>

413 

414Instaló un plugin cuya entrada de mercado usa un tipo de fuente que esta versión de Claude Code no puede obtener, y Claude Code se detuvo con este mensaje y `Update Claude Code and try again.`

415 

416Actualice Claude Code, luego reintente la instalación. Los tipos de fuente están en la [marketplace reference](/docs/es/plugins/marketplace-reference).

417 

418<h3 id="plugin-archive-integrity-check-failed">

419 `Plugin archive integrity check failed`

420</h3>

421 

422Instaló un plugin que se distribuye como un archivo zip, y Claude Code lo rechazó con esta línea y `The archive was not installed.` La entrada de mercado del plugin usa una fuente [`archive`](/docs/es/plugins/marketplace-reference) con un pin `sha256`, y el resumen del archivo descargado no coincide con el pin.

423 

424El mensaje completo se ve así:

425 

426```text theme={null}

427Plugin archive integrity check failed for https://artifacts.example.com/claude-plugins/my-plugin.zip: expected sha256 6bfa50e3d2e00c052b46abe51fff89346ac803e45771f76dcf6df1ab74cca5e1, got ac52220c0914ef8ca6a602e4a7362f88d30fb021110f72a6d15b68c3fe7df2b7. The archive was not installed. Verify the sha256 in the marketplace entry, or that the URL serves the intended file.

428```

429 

430La solución difiere para el editor y el instalador:

431 

432* **Usted publica el plugin**: recompute el resumen del archivo exacto que sirve la URL y actualice el `sha256` en la entrada del mercado. Use `shasum -a 256 my-plugin.zip`, o `Get-FileHash -Algorithm SHA256 my-plugin.zip` en PowerShell

433* **Usted instala el plugin**: ejecute `/plugin marketplace update <name>` en una sesión para actualizar el catálogo en caso de que la entrada haya sido corregida, luego reintente la instalación. Si los resúmenes aún no coinciden después de la actualización, pida al propietario del mercado qué archivo fijaron antes de instalar

434 

435<h3 id="marketplace-is-registered-from-an-untrusted-source">

436 `Marketplace "<name>" is registered from an untrusted source`

437</h3>

438 

439Un mercado que agregó anteriormente dejó de cargarse, y también sus plugins. Esta línea aparece en la pestaña `/plugin` **Errors** o en la siguiente actualización.

440 

441El mercado está registrado bajo un nombre que está [reservado para mercados oficiales de Anthropic](/docs/es/plugins/marketplace-reference), pero su fuente registrada no es un repositorio de GitHub `anthropics`. Los nombres reservados se re-verifican cada vez que un mercado se carga o se actualiza, por lo que el mercado y los plugins instalados desde él dejan de cargarse.

442 

443El mensaje completo nombra el nombre reservado y la solución:

444 

445```text theme={null}

446Marketplace "claude-community" is registered from an untrusted source: The name 'claude-community' is reserved for official Anthropic marketplaces. Only repositories from 'github.com/anthropics/' can use this name. To fix it, remove the marketplace and re-add it from the official source.

447```

448 

449La solución difiere para usuarios y editores:

450 

451* **Usted usa el mercado**: en su shell, ejecute `claude plugin marketplace remove <name>`, luego agregue el mercado nuevamente desde el repositorio oficial `github.com/anthropics`

452* **Usted publica un mercado de terceros que usó el nombre antes de que se reservara**: cámbielo de nombre y pida a los usuarios que lo vuelvan a agregar desde su fuente

453 

454Antes de v2.1.205, Claude Code verificaba el nombre solo cuando agregaba el mercado, por lo que una entrada registrada antes de que su nombre se reservara seguía cargándose.

455 

456<h3 id="plugin-has-a-corrupt-manifest-file-or-has-an-invalid-manifest-file">

457 `Plugin <name> has a corrupt manifest file` or `has an invalid manifest file`

458</h3>

459 

460Claude Code obtuvo el plugin, luego falló al leer su `.claude-plugin/plugin.json`. En el shell, el `<name>` en esta línea puede ser un nombre de directorio temporal; el prefijo `Failed to install plugin "<name>@<marketplace>"` lleva el nombre real del plugin. La redacción dice qué verificación falló:

461 

462* **`corrupt manifest file`, seguido de `JSON parse error:`**: el archivo no es JSON válido

463* **`invalid manifest file`, seguido de `Validation errors:`**: el archivo se analiza pero falla el esquema, como `name: Invalid input` para un campo requerido faltante

464 

465`claude plugin install` informa cualquiera como `Failed to install plugin "<name>@<marketplace>":` y sale con código 1.

466 

467El autor del plugin tiene que corregir el archivo, y el plugin no se puede instalar hasta entonces:

468 

469* **Si eso es usted**: ejecute `claude plugin validate <plugin-directory>` en su shell para ver el mismo error con la ruta ofensiva, luego corrija el archivo

470* **Si no es usted**: informe el mensaje al propietario del mercado

471 

472<h3 id="plugin-directory-not-found-at-path">

473 `Plugin directory not found at path: <path>`

474</h3>

475 

476La pestaña **Errors** en `/plugin` muestra esto para un plugin habilitado que su mercado enumera por una ruta relativa, como `./plugins/my-plugin`, cuando no existe ningún directorio en esa ruta dentro del mercado. Si mantiene el mercado, corrija la ruta `source` de la entrada o restaure la carpeta. De lo contrario, informe el mensaje al propietario del mercado.

477 

478`Marketplace directory not found at path: <path>` significa que el directorio del mercado en sí falta. Para un mercado que agregó desde una ruta local, ese directorio se movió o se eliminó. Restáurelo, o elimine el mercado y agréguelo nuevamente desde su nueva ubicación.

479 

480<h3 id="no-plugins-available-or-no-marketplaces-configured">

481 `No plugins available` or `No marketplaces configured`

482</h3>

483 

484Abrió `/plugin` y la pestaña **Discover** está vacía, o `claude plugin marketplace list` imprimió `No marketplaces configured`.

485 

486Ningún mercado está registrado, por lo que no hay catálogo para mostrar. En una sesión, agregue el mercado oficial, `anthropics/claude-plugins-official`:

487 

488```text theme={null}

489/plugin marketplace add anthropics/claude-plugins-official

490```

491 

492Claude Code imprime `Successfully added marketplace: claude-plugins-official`, y **Discover** enumera sus plugins. La página [Anthropic marketplaces](/docs/es/plugins/anthropic-marketplaces) enumera los otros mercados que puede agregar.

493 

494<h3 id="marketplace-is-already-added-from-a-different-source">

495 `Marketplace "<name>" is already added from a different source`

496</h3>

497 

498Confirmó agregar un mercado a través de [`/plugin install <plugin> --marketplace <source>`](/docs/es/plugins/install#add-a-marketplace-and-install-in-one-command), y el catálogo que Claude Code obtuvo de esa fuente tiene el mismo nombre que un mercado que ya agregó desde una fuente diferente. Claude Code mantiene el mercado existente en lugar de reemplazarlo, y el plugin no se instala.

499 

500El mensaje completo se ve así:

501 

502```text theme={null}

503Marketplace "acme-tools" is already added from a different source (github:acme/plugins). To use this source instead, remove that marketplace first with /plugin marketplace remove acme-tools.

504```

505 

506Elija qué fuente desea:

507 

508* **El mercado que ya agregó**: instale desde él por nombre con `/plugin install <plugin>@<name>`

509* **La nueva fuente**: ejecute `/plugin marketplace remove <name>`, luego reintente la instalación

510 

511<h3 id="cannot-add-marketplace-its-network-source-differs">

512 `Cannot add marketplace "<name>": its network source differs from the one declared for it in settings`

513</h3>

514 

515Ejecutó `marketplace add`, y el catálogo en esa fuente tiene el mismo nombre que un mercado que un archivo de configuración ya declara bajo [`extraKnownMarketplaces`](/docs/es/settings-reference#extraknownmarketplaces) con una fuente diferente. Claude Code rechaza la adición y no registra nada.

516 

517El mensaje termina con la solución: la fuente debe coincidir con la que se declara para este nombre en la configuración, o cambia la declaración. Compare la fuente que pasó contra la entrada `extraKnownMarketplaces` para ese nombre, incluida su `ref`, `path`, y `headers`, luego haga uno de estos:

518 

519* **Use la fuente declarada**: agregue el mercado desde la fuente que la entrada de configuración nombra

520* **Use la nueva fuente**: edite o elimine la entrada `extraKnownMarketplaces`, luego agregue el mercado nuevamente. Si la configuración administrada la declara, pida a su administrador

521 

522<h3 id="failed-to-install-from-the-plugin-menu">

523 `Failed to install: <plugin> (<reason>)`

524</h3>

525 

526Seleccionó plugins para instalar en el menú `/plugin`, ninguno de ellos se instaló, y el menú se cerró con este resumen de lo que falló.

527 

528Algunas razones, como la salida de git después de un clonado fallido, muestran solo su primera línea. Cuando tal razón fue acortada, el resumen termina con `Installing a plugin from its details (Enter) in /plugin shows its full error.`

529 

530Qué hacer depende de si el resumen acortó la razón:

531 

532* Corrija lo que la razón entre paréntesis nombra

533* Cuando la razón fue acortada, ejecute `/plugin`, seleccione el plugin en la pestaña **Discover**, y presione **Enter** para instalarlo desde sus detalles. Si la instalación falla allí, la vista de detalles muestra el error completo

534 

535<h3 id="could-not-move-the-new-copy-of-this-plugin-version">

536 `Could not move the new copy of this plugin version into <path>`

537</h3>

538 

539Cuando instala un plugin, Claude Code descarga una copia fresca de sus archivos y la mueve a la carpeta de esa versión en la [plugin cache](/docs/es/plugins/loading#find-plugins-on-disk). Este mensaje significa que el movimiento falló, generalmente porque otro programa estaba usando la carpeta mientras se ejecutaba la instalación. El código del sistema de archivos aparece entre paréntesis:

540 

541```text theme={null}

542Could not move the new copy of this plugin version into /home/user/.claude/plugins/cache/acme-tools/formatter/1.2.0: the new copy or the version folder stayed busy while the install ran (ENOTEMPTY) — usually a scanner still reading the freshly downloaded files, another program using that folder, or another process re-creating it. The previously installed copy was moved back. Run the install again once other Claude Code sessions or programs using that folder have finished.

543```

544 

545El mensaje dice qué sucedió con la copia que estaba instalada antes, lo que le dice si el plugin aún funciona:

546 

547* `The previously installed copy was moved back`: la versión que tenía aún está instalada

548* `had to be removed first`, `was not moved back`, o `could not be moved back`: esa versión del plugin no está instalada hasta que una instalación tenga éxito

549* Sin tal oración: no había una copia anterior, por lo que la versión aún no está instalada

550 

551En Windows, cuando otro programa mantiene la copia instalada en sí, el mensaje en su lugar dice que esa copia `could not be replaced` y que `It was not replaced and the new copy was discarded`, por lo que la versión que tenía aún está instalada.

552 

553Una lista `Left on disk` nombra carpetas apartadas dentro de la caché. Una instalación posterior de esa versión o una limpieza de caché de plugins las elimina, por lo que no necesita eliminarlas.

554 

555Para corregir la instalación:

556 

557* Cierre otras sesiones de Claude Code, editores y terminales que estén usando la carpeta del plugin bajo `~/.claude/plugins/cache`, luego ejecute la instalación nuevamente

558* Cuando el mensaje dice verificar los permisos de la carpeta de caché de plugins, restaure su permiso de escritura en la carpeta que nombra y libere espacio en disco, luego ejecute la instalación nuevamente

559 

560<h3 id="dependency-errors">

561 Dependency errors

562</h3>

563 

564Un plugin que declara dependencias puede fallar al instalar, o instalar y permanecer deshabilitado, cuando una dependencia no se puede satisfacer. El mensaje lo alcanza en el momento de la instalación o en el momento de la carga:

565 

566* **Durante la instalación**: el rechazo regresa como el mensaje de error de la instalación

567* **Cuando el plugin se carga**: el problema aparece en `claude plugin list` y la pestaña `/plugin` **Errors**, y Claude Code mantiene el plugin afectado deshabilitado hasta que lo resuelva

568 

569La tabla enumera cada mensaje y su solución. Para declarar dependencias como autor, vea [Plugin dependencies](/docs/es/plugins/dependencies).

570 

571| Mensaje | Significado | Cómo resolver |

572| :--------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

573| `Dependency "<dep>" is not installed` | Una dependencia declarada no está instalada. | Instálela en su shell con `claude plugin install <dep>@<marketplace>`, o desinstale el plugin. Si el mercado de la dependencia aún no está registrado, agréguelo y ejecute `/reload-plugins` en su sesión, que instala las dependencias faltantes que puede resolver. |

574| `Dependency "<dep>" is disabled` | La dependencia está instalada pero desactivada. | Habilite la dependencia, o desinstale el plugin que la necesita. |

575| `Requires "<dep>" <range>, installed <version>` | La versión de la dependencia instalada está fuera del rango declarado del plugin. | Actualice la dependencia a una versión en el rango, o desinstale el plugin. |

576| `<Plugin or Dependency> "<name>" has conflicting version requirements` | Ninguna versión satisface cada rango que la fija. El mensaje enumera los rangos. | Desinstale o actualice uno de los plugins en conflicto, o pida al autor ascendente que amplíe su restricción. |

577| `... has version requirements too complex to intersect` o `has an invalid version requirement` | Un rango no es semver válido, o los rangos combinados no se pueden intersectar. | Corrija el rango inválido o simplifique las cadenas `\|\|` largas. |

578| `... has no git tag satisfying <range>` | El repositorio de la dependencia no tiene una etiqueta `<name>--v*` en el rango. | Verifique que las etiquetas ascendentes se lancen con esa convención, o relaje el rango. |

579| `Dependency "<dep>" (required by <plugin>) is in <marketplace>, which is not in the allowlist` | La dependencia está en un mercado diferente, y la resolución entre mercados está desactivada por defecto. | Instale la dependencia usted mismo en el mismo scope, en su shell con `claude plugin install <dep>@<marketplace>` más el `--scope` en el que está instalando el plugin, luego reintente. |

580 

581Para ver estos programáticamente, ejecute `claude plugin list --json` en su shell. Los plugins con problemas llevan un campo `errors` con los mensajes y un campo `errorDetails` con un `type` para cada uno: las primeras dos filas son `dependency-unsatisfied` y la tercera es `dependency-version-unsatisfied`.

582 

583<h2 id="plugin-installed-but-not-working">

584 Plugin installed but not working

585</h2>

586 

587La instalación tuvo éxito, pero las skills, hooks, o servidores del plugin no están haciendo nada. Comience con [Plugin doesn't appear or its skills don't show up](#plugin-doesnt-appear-or-its-skills-dont-show-up), que le dice dónde Claude Code informa lo que cargó, luego coincida con el mensaje.

588 

589<h3 id="plugin-doesnt-appear-or-its-skills-dont-show-up">

590 Plugin doesn't appear or its skills don't show up

591</h3>

592 

593Instaló un plugin y escribió `/` esperando sus skills, o le pidió a Claude que lo use, y nada sucedió.

594 

595Verifique el estado del plugin antes de cambiar nada:

596 

597<Steps>

598 <Step title="Confirm the plugin is installed and enabled">

599 Ejecute `/plugin` y abra **Installed**. Confirme que el plugin está listado y habilitado. `claude plugin list` en su shell imprime la misma lista con la versión, scope, y `Status: ✔ enabled` de cada plugin.

600 </Step>

601 

602 <Step title="Read the Errors tab">

603 Abra la pestaña **Errors** en el mismo panel. Cada entrada empareja un mensaje con una línea de orientación. La mayoría de los mensajes en el resto de esta sección provienen de esa pestaña.

604 </Step>

605 

606 <Step title="Reload if you installed during this session">

607 Si el plugin está instalado y sin errores pero lo instaló durante esta sesión, ejecute `/reload-plugins`. Imprime `Reloaded:` con conteos de plugins, skills, agents, hooks, y servidores. Cuando algo falló agrega `N errors during load. Run /plugin for details.`

608 </Step>

609</Steps>

610 

611Si el plugin se carga sin error y sus skills aún no aparecen, el siguiente paso difiere para su propio plugin y para el de alguien más:

612 

613* **Un plugin que está construyendo**: vea [Plugin loads but its skills are missing](#plugin-loads-but-its-skills-are-missing)

614* **Un plugin que alguien más publicó**: abra **Installed** en `/plugin` y abra el panel de detalles del plugin, que enumera lo que contiene el plugin. Un plugin que no enumera skills allí no tiene ninguno para ofrecer cuando escribe `/`

615 

616<h3 id="run-reload-plugins-to-activate">

617 `Run /reload-plugins to activate.`

618</h3>

619 

620El resumen de instalación en `/plugin` terminó con `Run /reload-plugins to activate.` en lugar de `Plugin is now active.`

621 

622Claude Code no activó el plugin durante la instalación, ya sea porque activarlo [invalidaría la caché de prompt](/docs/es/prompt-caching#enabling-or-disabling-a-plugin) o porque el intento de activación falló.

623 

624No necesita escribir el comando. El panel se cierra y Claude Code ejecuta `/reload-plugins` para usted, o lo pone en cola hasta que termine la respuesta que se está transmitiendo.

625 

626Lea lo que esa recarga imprime:

627 

628* **`Reloaded:` con conteos de plugins, skills, agents, hooks, y servidores**: el plugin ahora está activo. Cuando algo falló al cargar, la línea agrega `N errors during load. Run /plugin for details.`

629* **`This reload changes MCP tools (...) — your next message will re-read the whole conversation instead of using the cache. Run /reload-plugins --force to apply.`**: la recarga agregaría o eliminaría un servidor MCP de plugin, o la herramienta `LSP`, e invalidaría su caché de prompt. Para el caso de LSP la línea comienza `This reload adds the LSP tool` o `This reload removes the LSP tool`. Ejecutelo con `--force` para activar el plugin de todas formas, o inicie una nueva sesión

630 

631Antes de v2.1.268, una instalación que no se activó durante la instalación permaneció pendiente hasta que ejecutó `/reload-plugins` usted mismo.

632 

633Antes de v2.1.246, el conteo de skills en ese resumen incluía solo las entradas `commands/` de un plugin, por lo que una recarga podría cargar las skills `SKILL.md` de un plugin e informar `0 skills`.

634 

635<h3 id="plugin-not-cached-at">

636 `Plugin "<name>" not cached at <path>`

637</h3>

638 

639La pestaña **Errors** muestra esta línea con la orientación `Run /plugin to refresh the plugin cache`. Claude Code tiene un registro de instalación para el plugin, pero el directorio al que apunta el registro falta, por ejemplo después de que limpió la caché.

640 

641Reinstale el plugin desde su shell. `claude plugin install <name>@<marketplace>` descarga nuevamente un plugin cuyo directorio de instalación falta aunque su registro exista:

642 

643```shell theme={null}

644claude plugin install <name>@<marketplace>

645```

646 

647Luego ejecute `/reload-plugins` en su sesión. La entrada de la pestaña **Errors** desaparece y el plugin está de vuelta bajo **Installed**.

648 

649<h3 id="a-plugin-you-disabled-still-loads">

650 `Disabled in ~/.claude/settings.json but still loads`

651</h3>

652 

653Estableció un plugin en `false` en `~/.claude/settings.json`, y su fila en `claude plugin list` o `/plugin` muestra este mensaje seguido de la fuente que lo habilita, como `— project settings enable it, which overrides your user setting`. Un `true` en esa fuente de mayor precedencia está anulando su configuración de usuario.

654 

655Para optar por no participar en un plugin habilitado por proyecto en su máquina, establezca el id en `false` en `.claude/settings.local.json`, que tiene mayor precedencia que el archivo del proyecto. Para las otras fuentes que el mensaje puede nombrar, vea [Disabled in user settings but still loads](/docs/es/plugins/loading#disabled-in-user-settings-but-still-loads).

656 

657Si `claude plugin list` en su lugar marca el plugin `required by your org`, ningún archivo de configuración está involucrado: su organización marca ese plugin sincronizado como requerido en claude.ai, y se carga incluso si lo deshabilitó anteriormente. Vea [Plugins synced from claude.ai](/docs/es/plugins/loading#synced-plugins).

658 

659<h3 id="plugin-is-enabled-in-project-settings-but-isnt-installed-here">

660 `Plugin "<name>" is enabled in project settings but isn't installed here`

661</h3>

662 

663La pestaña **Errors** muestra esta línea para un plugin que el `.claude/settings.json` de su proyecto habilita, con la orientación `Run claude plugin install <name>@<marketplace> --scope project to install it for this project`.

664 

665La configuración de un repositorio puede habilitar un plugin para todos los que lo abren, pero no lo instala. Cuando el plugin proviene de una fuente externa como un repositorio de GitHub o un paquete npm, Claude Code no lo descarga hasta que lo instale usted mismo. Ejecute el comando de la línea de orientación en su shell, luego recargue:

666 

667```shell theme={null}

668claude plugin install <name>@<marketplace> --scope project

669```

670 

671Después de ejecutar `/reload-plugins` en su sesión, la entrada de la pestaña **Errors** se ha ido y el plugin está listado bajo **Installed**.

672 

673Si su organización pre-instala plugins para usted, lo hace a través de configuración administrada en su lugar. Vea [Pre-install and require plugins](/docs/es/plugins/org#pre-install-and-require-plugins).

674 

675<h3 id="failed-to-load-hooks-from-and-hooks-that-dont-fire">

676 `Failed to load hooks from <path>` and hooks that don't fire

677</h3>

678 

679Los hooks de un plugin no se ejecutan. O la pestaña **Errors** muestra un fallo de carga para ellos, los hooks se cargan y ve avisos `<Event> hook error` en la transcripción, o un hook se carga sin error y nunca se dispara.

680 

681<h4 id="hooks-fail-to-load">

682 Hooks fail to load

683</h4>

684 

685La pestaña **Errors** muestra uno de estos mensajes:

686 

687* **`Failed to load hooks from <path>: <reason>`**: `hooks/hooks.json` no es JSON válido o falla el esquema de hooks. La razón nombra el error de análisis o validación. Corrija el archivo. Para detectar un problema de sintaxis JSON en `hooks/hooks.json` antes de publicar el plugin, ejecute `claude plugin validate <plugin-directory>` en su shell

688* **`hooks path not found: <path>`**: el campo `hooks` del manifiesto nombra un archivo que no existe en esa ruta relativa a la raíz del plugin. Corrija la ruta o agregue el archivo

689 

690<h4 id="hook-error-notices-in-the-transcript">

691 `hook error` notices in the transcript

692</h4>

693 

694Un aviso de la forma `... hook error: Failed with non-blocking status code: <stderr>` significa que el hook se ejecutó y su comando falló. Por ejemplo, `Stop hook error: Failed with non-blocking status code: /bin/sh: node: command not found` significa que el shell que Claude Code generó no pudo encontrar `node`. Instálelo, o asegúrese de que esté en el `PATH` del terminal desde el que inicia `claude`.

695 

696Para cualquier otro error, ejecute el comando del hook usted mismo desde el directorio del plugin para ver la salida completa, o capture el stderr completo con [debug logging](/docs/es/hooks#debug-hooks).

697 

698<h4 id="hook-loads-but-never-fires">

699 Hook loads but never fires

700</h4>

701 

702Si un hook se carga sin error pero nunca se dispara, verifique su definición y luego mírelo ejecutarse:

703 

704<Steps>

705 <Step title="Check the event name">

706 Los nombres de eventos distinguen mayúsculas de minúsculas, así que confirme que el suyo coincida exactamente, por ejemplo `PostToolUse`.

707 </Step>

708 

709 <Step title="Check the matcher">

710 Confirme que el `matcher` del hook coincida con el nombre de la herramienta.

711 </Step>

712 

713 <Step title="Trigger the event on purpose">

714 Para un hook `PostToolUse`, pida a Claude que edite un archivo.

715 </Step>

716 

717 <Step title="Read the debug log">

718 Abra el [debug log](/docs/es/hooks#debug-hooks), que registra qué hooks coincidieron. Un hook que se ejecutó aparece allí con su código de salida.

719 </Step>

720</Steps>

721 

722<h3 id="invalid-mcp-server-config-for-and-mcp-servers-that-dont-start">

723 `Invalid MCP server config for "<server>"` and MCP servers that don't start

724</h3>

725 

726Un plugin agrupa un servidor MCP, y la pestaña **Errors** muestra `Invalid MCP server config for "<server>": <error>`, o el servidor está listado pero `/mcp` nunca lo muestra conectado.

727 

728<h4 id="invalid-mcp-server-config-for-server-error">

729 `Invalid MCP server config for "<server>": <error>`

730</h4>

731 

732La configuración del servidor pasa la verificación del esquema, pero Claude Code no puede resolverla para esta sesión. El texto después de los dos puntos nombra la causa y decide la solución:

733 

734* **`Missing environment variables: <names>`**: establezca esas variables en el shell desde el que inicia Claude Code, luego inicie una nueva sesión

735* **`URL is unset or invalid`**: una opción `${user_config.*}` que usa la URL no está establecida. Ejecute `/plugin configure <plugin>` para establecerla

736* **`has an invalid MCP url`** o **`headersHelper for MCP server '<server>' references ${user_config.*}`**: la configuración del plugin en sí es culpable. Corrija la `url` o `headersHelper` en la configuración MCP de su plugin, o infórmelo al autor del plugin si el plugin no es suyo. El caso `headersHelper` tiene su propia entrada bajo [plugin command references user\_config](/docs/es/errors#plugin-command-references-user-config)

737 

738<h4 id="server-is-configured-but-never-connects">

739 Server is configured but never connects

740</h4>

741 

742Ejecute `/mcp` para ver el estado del servidor. Cuando el servidor es saludable, `/mcp` lo enumera como conectado.

743 

744Para leer el error que el servidor imprimió mientras se iniciaba, ejecute `claude --debug` y abra el registro en `~/.claude/debug/<session-id>.txt`. El indicador `--debug` no imprime en la terminal.

745 

746Una entrada de servidor en `.mcp.json` que falla el esquema no aparece en la pestaña **Errors**. Claude Code descarta ese servidor y registra `Invalid MCP server config for <server> in <path>` solo en ese registro de depuración. Para encontrar la entrada sin cargar el plugin, ejecute `claude plugin validate` en su shell en el directorio del plugin, que lo informa como un error.

747 

748Antes de v2.1.281, `claude plugin validate` no verificaba `.mcp.json`.

749 

750<h4 id="server-works-with-plugin-dir-but-fails-after-install">

751 Server works with `--plugin-dir` but fails after install

752</h4>

753 

754Usted es el autor del plugin, y el servidor se inicia cuando carga el plugin desde su directorio de fuente con `--plugin-dir` pero falla una vez que el plugin está instalado.

755 

756Claude Code copia un plugin instalado en su caché, por lo que una ruta que solo funciona desde el directorio de fuente se rompe. Escriba rutas dentro del plugin con `${CLAUDE_PLUGIN_ROOT}`.

757 

758Para rutas que alcanzan fuera del directorio del plugin, vea [Files the plugin references outside its directory aren't found](#files-the-plugin-references-outside-its-directory-arent-found).

759 

760<h3 id="language-server-doesnt-start">

761 Language server doesn't start, uses too much memory, or reports wrong diagnostics

762</h3>

763 

764Instaló un [code intelligence plugin](/docs/es/plugins/code-intelligence) y Claude no ve diagnósticos, o el servidor de lenguaje está usando demasiada memoria o reportando errores que no son reales.

765 

766<h4 id="language-server-doesn’t-start">

767 Language server doesn't start

768</h4>

769 

770El plugin se conecta a un binario de servidor de lenguaje que instala por separado, y Claude Code lo genera por nombre desde su `PATH`.

771 

772La pestaña `/plugin` **Errors** muestra el fallo con su razón, como `Executable not found in $PATH: "<binary>"`, y `claude --debug` lo registra como `LSP server <name> failed to start: <reason>`.

773 

774Instale el binario y confirme que está en el `PATH` del terminal desde el que inicia `claude`, por ejemplo con `which typescript-language-server`. Luego inicie una nueva sesión.

775 

776<h4 id="language-server-uses-too-much-memory">

777 Language server uses too much memory

778</h4>

779 

780Los servidores de lenguaje como `rust-analyzer` y `pyright` indexan todo el proyecto. Deshabilite el plugin con `/plugin disable <plugin>` en una sesión y confíe en las herramientas de búsqueda integradas de Claude en su lugar.

781 

782<h4 id="false-positive-diagnostics-in-a-monorepo">

783 False positive diagnostics in a monorepo

784</h4>

785 

786Un servidor de lenguaje que no está configurado para el espacio de trabajo puede reportar importaciones no resueltas para paquetes internos. No hay nada que corregir en el lado de Claude Code, y los diagnósticos no impiden que Claude edite código.

787 

788<h2 id="build-a-plugin">

789 Build a plugin

790</h2>

791 

792Está desarrollando un plugin y cargándolo con `--plugin-dir` o instalándolo desde un mercado local. Estas entradas cubren los fallos que encuentra mientras desarrolla un plugin. Para que las verificaciones se ejecuten después de cada cambio, vea [Test and debug](/docs/es/plugins/create#test-and-debug).

793 

794Dos fallos que también alcanzan a los usuarios de un plugin tienen sus entradas bajo [Plugin installed but not working](#plugin-installed-but-not-working):

795 

796* **Un hook que no se dispara**: vea [hooks that don't fire](#failed-to-load-hooks-from-and-hooks-that-dont-fire)

797* **Un servidor MCP que no se inicia**: vea [MCP servers that don't start](#invalid-mcp-server-config-for-and-mcp-servers-that-dont-start)

798 

799<h3 id="commands-path-not-found">

800 `commands path not found: <path>`

801</h3>

802 

803La pestaña **Errors** muestra `commands path not found: <absolute path>` con la orientación `Check that the path in your manifest or marketplace config is correct`. El mismo mensaje aparece para `skills`, `agents`, y `hooks`.

804 

805Claude Code resolvió una ruta desde su `plugin.json` o entrada de mercado contra la raíz del plugin y no encontró nada allí. La ruta en el mensaje es la ruta absoluta que verificó, así que compárela con lo que está en el disco. Corrija la ruta o cree el directorio, luego ejecute `/reload-plugins`.

806 

807Las rutas en el manifiesto son relativas a la raíz del plugin y comienzan con `./`. Una ruta que se resuelve fuera de la raíz del plugin se informa como `<component> path escapes plugin directory` en su lugar y se descarta.

808 

809<h3 id="plugin-dir-loads-a-plugin-with-no-components">

810 `--plugin-dir` at a marketplace root doesn't load the plugins under `plugins/`

811</h3>

812 

813Inició `claude --plugin-dir <path>` y no ve error, pero las skills, agents, y hooks del plugin no están allí.

814 

815`--plugin-dir` toma el directorio raíz del plugin, el que contiene `.claude-plugin/plugin.json` y los directorios de componentes como `skills/`. Si lo apunta a una raíz de mercado en su lugar, Claude Code no lee `marketplace.json`, por lo que un plugin bajo `plugins/` no se carga, y no ve error. Antes de v2.1.281, Claude Code cargaba una raíz de mercado como un plugin vacío nombrado después de ese directorio. Apunte el indicador al directorio del plugin en sí:

816 

817```shell theme={null}

818claude --plugin-dir ./my-marketplace/plugins/my-plugin

819```

820 

821Luego abra **Installed** en `/plugin`, donde el panel de detalles del plugin enumera sus componentes.

822 

823<h3 id="files-the-plugin-references-outside-its-directory-arent-found">

824 Files the plugin references outside its directory aren't found

825</h3>

826 

827Un plugin funciona desde su directorio de fuente con `--plugin-dir` pero falla después de instalar, con errores sobre una ruta como `../shared-utils`.

828 

829Claude Code copia un plugin instalado en su caché y lo carga desde allí, por lo que una ruta que alcanza fuera del directorio propio del plugin no apunta a nada en la caché. Mueva los archivos compartidos dentro del directorio del plugin, o haga referencia a ellos a través de un enlace simbólico dentro de él. Para dónde está la caché y cómo se resuelven las rutas, vea [Find plugins on disk](/docs/es/plugins/loading#find-plugins-on-disk).

830 

831<h3 id="claude-plugin-root-shows-forward-slashes-on-windows">

832 `${CLAUDE_PLUGIN_ROOT}` shows forward slashes on Windows

833</h3>

834 

835En Windows, un hook de plugin recibe `${CLAUDE_PLUGIN_ROOT}` como `C:/Users/you/...` en lugar de `C:\Users\you\...`, y un script que esperaba barras invertidas se rompe.

836 

837Claude Code ejecuta hooks de forma de shell a través de Git Bash en Windows y sustituye la raíz del plugin en la forma Win32 de barra inclinada hacia adelante a propósito. Los builtins de Bash, las herramientas MSYS, y los binarios nativos de Windows todos aceptan esa forma.

838 

839Si su script necesita barras invertidas, cambie el hook a una de las formas que mantienen rutas nativas, descritas bajo [exec form and shell form](/docs/es/hooks#exec-form-and-shell-form):

840 

841* Un hook de forma exec, que genera el proceso directamente con una matriz `args`

842* Un hook con `"shell": "powershell"`

843 

844<h3 id="plugin-loads-but-its-skills-are-missing">

845 Plugin loads but its skills are missing

846</h3>

847 

848Su plugin está listado bajo **Installed** sin errores, pero sus skills no se ofrecen cuando escribe `/`.

849 

850Las skills se cargan desde `skills/` en la raíz del plugin y los comandos desde `commands/` en la raíz del plugin. Solo `plugin.json` pertenece dentro de `.claude-plugin/`, y un directorio `skills/` dentro de `.claude-plugin/` no se escanea. Mueva los directorios a la raíz del plugin y ejecute `/reload-plugins`. Después, el panel de detalles del plugin en `/plugin` enumera las skills, y escribir `/` las ofrece.

851 

852Cada skill es un directorio que contiene `SKILL.md`. Una entrada `skills` en el manifiesto que apunta a un archivo `SKILL.md` en lugar de su directorio se informa como `path is a file; skills entries must be directories containing SKILL.md`.

853 

854<h3 id="skill-loads-but-claude-never-invokes-the-skill">

855 Skill loads but Claude never invokes the skill

856</h3>

857 

858La skill de su plugin se ejecuta cuando escribe su comando `/<plugin>:<skill>`, pero Claude nunca la invoca en respuesta a una solicitud simple.

859 

860Verifique estas causas en orden:

861 

862* **La skill establece `disable-model-invocation: true`**: con ese campo establecido, solo usted puede invocar la skill. La skill de plantilla en [Create your first plugin](/docs/es/plugins/create#create-your-first-plugin) lo establece. Elimine la línea de una skill que desea que Claude invoque por su cuenta. [Control who invokes a skill](/docs/es/skills#control-who-invokes-a-skill) cubre el campo

863* **La descripción no coincide con cómo la gente pregunta**: trabaje a través de las verificaciones en [Skill not triggering](/docs/es/skills#skill-not-triggering)

864* **La descripción está truncada**: cuando se instalan muchas skills, Claude Code acorta las descripciones para ajustarse al presupuesto de caracteres del listado, que puede eliminar las palabras clave que Claude necesita para coincidir con una solicitud. Vea [Skill descriptions are cut short](/docs/es/skills#skill-descriptions-are-cut-short)

865 

866Para medir con qué frecuencia la skill se dispara en prompts realistas en lugar de verificar uno a la vez, escriba un caso de eval con un [grader `tool_used: Skill`](/docs/es/plugin-evals#create-your-first-eval-suite) y ejecútelo con `claude plugin eval` después de cada cambio de descripción.

867 

868<h3 id="is-not-a-plugin-or-skill-folder">

869 `<directory> is not a plugin or skill folder` from `claude plugin eval init`

870</h3>

871 

872Ejecutó `claude plugin eval init` desde un directorio que no es la raíz de un plugin, como su directorio de inicio o la raíz de un repositorio que mantiene el plugin en un subdirectorio. `init` escribe la suite bajo el directorio de trabajo, por lo que se detiene en lugar de crear un directorio `evals/` que el plugin nunca vería.

873 

874Cambie a la raíz del plugin, el directorio que contiene `.claude-plugin/plugin.json` o el `SKILL.md` de la skill, y ejecute el comando nuevamente. Para armar la suite en otro lugar a propósito, pase `--eval-dir`. Vea [Test plugins with evals](/docs/es/plugin-evals).

875 

876<h3 id="the-userconfig-dialog-never-appears">

877 The `userConfig` dialog never appears

878</h3>

879 

880Su plugin declara opciones `userConfig`, pero no aparece ningún diálogo de configuración cuando lo instala.

881 

882La instalación interactiva muestra el diálogo, y el comando de shell toma los valores como indicadores en su lugar:

883 

884* **`/plugin install` en una sesión, o la pestaña Discover en `/plugin`**: el diálogo es parte de esta instalación interactiva

885* **`claude plugin install` en su shell**: nunca solicita valores `userConfig`. Guarda cualquier valor `--config KEY=VALUE` que pase, y cuando las opciones permanecen sin establecer imprime `N userConfig options not yet set — run /plugin configure <plugin>@<marketplace> in Claude Code, or pass --config KEY=VALUE.` Cuando cualquiera de las opciones sin establecer es requerida, `(M required)` sigue `not yet set`.

886 

887Si instaló desde el shell, pase los valores con `--config`, un indicador por opción:

888 

889```shell theme={null}

890claude plugin install my-plugin@my-marketplace --config api_url=https://example.com

891```

892 

893Cuando cada opción está establecida, la salida de instalación no lleva ninguna línea `not yet set`. Para abrir el diálogo después en su lugar, ejecute `/plugin configure my-plugin@my-marketplace` en una sesión.

894 

895Si pasa una clave `--config` que el manifiesto no declara, el plugin aún se instala, y el comando imprime `⚠ Installed, but --config not applied: --config key "<key>" isn't declared in this plugin's userConfig.` seguido de las claves que el plugin sí declara.

896 

897<h3 id="claude-plugin-validate-reports-errors">

898 `claude plugin validate` reports errors

899</h3>

900 

901Ejecutó `claude plugin validate <path>`, o `/plugin validate <path>` en una sesión, e imprimió `Found N errors` y `Validation failed`, luego salió con código 1.

902 

903El validador lee el manifiesto en la ruta que proporciona: `.claude-plugin/plugin.json` para un directorio de plugin, o `.claude-plugin/marketplace.json` para un directorio de mercado. Para un mercado, prefija problemas en el manifiesto propio de una entrada con el índice de entrada, como `plugins[1] plugin.json → json: ...`.

904 

905La tabla cubre los mensajes que detienen la validación y dos advertencias, `No frontmatter block found` y `Unknown field '<key>'`, que la detienen solo cuando pasa `--strict`. Otras advertencias, como una descripción faltante, no se enumeran.

906 

907| Mensaje | Causa | Solución |

908| :------------------------------------------------------------------------------------------------------- | :-------------------------------------------------------------------------------- | :--------------------------------------------------------------------------------------------------------------- |

909| `File not found: <path>` | La ruta no tiene manifiesto, o no existe. | Ejecute el comando contra la raíz del plugin o mercado, el directorio que contiene `.claude-plugin/`. |

910| `No manifest found in directory. Expected .claude-plugin/marketplace.json or .claude-plugin/plugin.json` | El directorio no tiene manifiesto `.claude-plugin/`. | Cree el manifiesto, o apunte al directorio correcto. |

911| `Invalid JSON syntax: <parse error>` | El manifiesto, o `hooks/hooks.json`, no es JSON válido. | Corrija el JSON. Hasta que corrija `hooks/hooks.json`, una sesión carga el plugin sin los hooks en ese archivo. |

912| `Path not found: <path>. The runtime loader will report this as a load failure.` | Una ruta de componente en el manifiesto no existe. | Corrija la ruta o cree el directorio. |

913| `Path contains ".." which could be a path traversal attempt: <path>` | Una ruta de componente escapa del directorio del plugin. | Use rutas dentro de la raíz del plugin. |

914| `Path is a file; skills entries must be directories containing SKILL.md` | Una entrada `skills` apunta a `SKILL.md` en lugar de su directorio. | Apunte al directorio padre, o `.` para un `SKILL.md` a nivel de raíz. |

915| `No frontmatter block found` o `YAML frontmatter failed to parse: <error>` | Un archivo de skill, agent, o comando tiene frontmatter YAML faltante o inválido. | Agregue o corrija el frontmatter entre delimitadores `---`. Se informa al validar un directorio de plugin. |

916| `Unknown field '<key>'` | El manifiesto tiene un campo que el esquema no define. | Elimínelo, o use el nombre que el mensaje sugiere. Claude Code ignora campos desconocidos en el tiempo de carga. |

917 

918Ejecute el comando nuevamente después de cada solución hasta que no imprima errores.

919 

920Los campos `plugin.json` están en la [manifest reference](/docs/es/plugins/manifest-reference), y los mensajes a nivel de mercado están bajo [Marketplace validation errors](#marketplace-validation-errors).

921 

922<h3 id="plugin-has-conflicting-manifests">

923 `Plugin <name> has conflicting manifests`

924</h3>

925 

926El plugin falla al cargar con `Plugin <name> has conflicting manifests: both plugin.json and marketplace entry specify components.`

927 

928El plugin tiene su propio `plugin.json`, y su entrada de mercado establece `strict: false` mientras también declara cualquiera de `commands`, `agents`, `skills`, `hooks`, `outputStyles`, o `themes`. Elimine esos campos de la entrada, o establezca `strict: true` en la entrada para que Claude Code los agregue a `plugin.json`. Vea [Strict mode](/docs/es/plugins/marketplace-reference#strict-mode).

929 

930<h3 id="warning-no-commands-found-in-plugin-custom-directory">

931 `Warning: No commands found in plugin <name> custom directory`

932</h3>

933 

934Cuando el plugin se carga, el registro `claude --debug` en `~/.claude/debug/<session-id>.txt` registra `Warning: No commands found in plugin <name> custom directory: <path>. Expected .md files or SKILL.md in subdirectories.` Nada aparece en la sesión o la pestaña **Errors**.

935 

936La ruta `commands` en el manifiesto existe pero no contiene archivos `.md` y no `SKILL.md` en un subdirectorio. Agregue los archivos de comando, o elimine la ruta del manifiesto.

937 

938<h2 id="host-a-marketplace">

939 Host a marketplace

940</h2>

941 

942Publica un mercado y un usuario informa un error, o su propia validación falla. Estas entradas son para el propietario del mercado.

943 

944<h3 id="plugins-with-relative-paths-fail-in-url-based-marketplaces">

945 Plugins with relative paths fail in URL-based marketplaces

946</h3>

947 

948Los usuarios agregaron su mercado con una URL `https://example.com/marketplace.json`. Las instalaciones de plugins cuya `source` es una ruta relativa, como `./plugins/my-plugin`, fallan con `its marketplace entry path does not stay inside the marketplace directory`. Los plugins ya instalados fallan al cargar con `Plugin source path refused`. Ambos mensajes tienen una [entrada de referencia de error](/docs/es/errors#marketplace-entry-path-does-not-stay-inside-the-marketplace-directory).

949 

950Cuando un usuario agrega un mercado basado en URL, Claude Code descarga solo el archivo `marketplace.json` en sí. No obtiene archivos de plugin por ruta relativa desde ese servidor, por lo que una ruta relativa en una entrada apunta a un directorio que nunca fue obtenido. Dé a cada entrada una fuente que Claude Code pueda obtener por su cuenta, como un repositorio de GitHub:

951 

952```json theme={null}

953{ "name": "my-plugin", "source": { "source": "github", "repo": "owner/repo" } }

954```

955 

956Alternativamente, aloje el mercado en un repositorio git y diga a los usuarios que lo agreguen con la URL del repositorio. Para una fuente de git, Claude Code clona todo el repositorio, por lo que las rutas relativas se resuelven. Los tipos de fuente están en la [marketplace reference](/docs/es/plugins/marketplace-reference).

957 

958<h3 id="marketplace-validation-errors">

959 Marketplace validation errors

960</h3>

961 

962Ejecutó `claude plugin validate .` desde su directorio de mercado e informó errores o advertencias en el archivo del mercado en sí.

963 

964`claude plugin validate` también valida cada entrada cuya `source` es una ruta local y advierte cuando la `version` de la entrada no coincide con el manifiesto propio del plugin.

965 

966La tabla enumera los mensajes a nivel de mercado. Los mensajes a nivel de entrada son los mensajes de plugin bajo [`claude plugin validate` reports errors](#claude-plugin-validate-reports-errors), prefijados con `plugins[N] plugin.json →`.

967 

968| Mensaje | Tipo | Solución |

969| :----------------------------------------------------------------------------------------------------------------------- | :---------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------- |

970| `Duplicate plugin name "<name>" found in marketplace` | Error | Dé a cada plugin un `name` único. |

971| `Path contains "..": <path>` bajo `plugins[N].source` | Error | Use rutas relativas a la raíz del mercado sin segmentos `..`. |

972| `Marketplace name cannot contain control or bidirectional-formatting characters` | Error | Elimine el carácter del nombre, como un escape o una nueva línea. |

973| `Plugin name cannot contain control or bidirectional-formatting characters` | Error | Elimine el carácter del `name` del plugin. |

974| `Marketplace has no plugins defined` | Advertencia | Agregue al menos una entrada a `plugins`. |

975| `No marketplace description provided` | Advertencia | Agregue una `description` a nivel superior. |

976| `Plugin name "<name>" is not kebab-case` bajo `plugins[N] plugin.json → name` | Advertencia | Cambie el nombre a letras minúsculas, dígitos, y guiones. Claude Code acepta otras formas, pero la sincronización del mercado de claude.ai las rechaza. |

977| `Entry declares version "<a>" but <path>/plugin.json says "<b>"` | Advertencia | Actualice la entrada para que coincida con `plugin.json`, que es autoritario en el tiempo de instalación. |

978| `Marketplace name "<name>" is reserved in Claude Desktop` | Advertencia | Cambie el nombre del mercado. La sincronización de mercado administrada de Claude Desktop rechaza `org`, `org-provisioned`, y `unknown` en cualquier mayúscula. |

979| `Marketplace name "<name>" is not accepted by Claude Desktop` o `Plugin name "<name>" is not accepted by Claude Desktop` | Advertencia | Cambie el nombre a como máximo 128 caracteres de letras, dígitos, `.`, `_`, y `-`, comenzando con una letra o dígito. |

980 

981Antes de v2.1.247, un nombre de mercado que contiene caracteres de control o de formato bidireccional se informaba solo como `Marketplace name impersonates an official Anthropic/Claude marketplace`.

982 

983<h2 id="blocked-by-your-organization">

984 Blocked by your organization

985</h2>

986 

987Su organización implementa configuración administrada que restringe plugins, y un comando fue rechazado con un mensaje de política. Estas entradas nombran la configuración detrás de cada rechazo para que sepa qué pedir a su administrador. Para el lado del administrador, vea [Manage plugins for your organization](/docs/es/plugins/org).

988 

989<h3 id="marketplace-source-is-blocked-by-enterprise-policy">

990 `Marketplace source '<source>' is blocked by enterprise policy`

991</h3>

992 

993Ejecutó `/plugin marketplace add`, `update`, o una instalación, y Claude Code rechazó con esta línea. Para una fuente de GitHub o git, el host sigue la fuente entre paréntesis, como en `'github:owner/repo' (github.com)`.

994 

995Su administrador estableció `blockedMarketplaces` o `strictKnownMarketplaces` en configuración administrada, y esta fuente no está permitida. Pida a su administrador que permita la fuente, o agregue una de las fuentes permitidas que el mensaje enumera.

996 

997Haga coincidir el resto del mensaje para ver qué tipo de política bloqueó la fuente:

998 

999* **`Allowed sources: <list>`**: el bloqueo proviene de la lista de permisos `strictKnownMarketplaces` en lugar de la lista de bloqueos `blockedMarketplaces`

1000* **`No external marketplaces are allowed.`**: la lista de permisos `strictKnownMarketplaces` está vacía

1001* **Un `Tip:` que el atajo asume github.com**: la lista de permisos permite un host de git por nombre de host, y el atajo `owner/repo` que pasó apunta a github.com. Si el repositorio vive en su host interno, agréguelo nuevamente con su URL completa, como `git@your-git-host.com:owner/repo.git`

1002 

1003Un mercado que agregó antes de que la política se volviera más restrictiva también deja de actualizarse, porque la política se aplica en cada actualización.

1004 

1005<h3 id="marketplace-is-not-in-the-allowed-marketplace-list">

1006 `Marketplace "<name>" is not in the allowed marketplace list`

1007</h3>

1008 

1009La pestaña **Errors** muestra esta línea, o `Marketplace "<name>" is blocked by enterprise policy`, para un mercado que ya tiene registrado.

1010 

1011La misma configuración administrada que bloquea una [marketplace source](#marketplace-source-is-blocked-by-enterprise-policy) se aplica en el tiempo de carga. `strictKnownMarketplaces` no incluye este mercado, o `blockedMarketplaces` lo nombra, por lo que Claude Code deja de cargarlo y sus plugins. Para la variante de lista de permisos, la línea de orientación muestra las fuentes permitidas, o `Contact your administrator to configure allowed marketplace sources`. Para la variante de lista de bloqueos dice `This marketplace source is explicitly blocked by your administrator`.

1012 

1013<h3 id="plugin-is-blocked-by-your-organizations-policy-and-cannot-be-installed">

1014 `Plugin "<name>" is blocked by your organization's policy and cannot be installed`

1015</h3>

1016 

1017Una instalación fue rechazada con esta línea, una habilitación con la misma línea terminando `cannot be enabled`, o una instalación o actualización con una que nombra la razón: `Plugin "<name>" is from marketplace "<marketplace>", which is blocked by your organization's policy`, o `Plugin "<name>" depends on "<dep>", which is blocked by your organization's policy`.

1018 

1019La configuración administrada bloquea este plugin, su mercado, o una dependencia que necesita. Pida a su administrador qué entrada se aplica. Una dependencia bloqueada significa que el plugin no puede instalar hasta que el mercado de la dependencia sea permitido.

1020 

1021<h3 id="plugin-dir-is-disabled-by-your-organizations-managed-settings-disables">

1022 `--plugin-dir is disabled by your organization's managed settings (disableSideloadFlags)`

1023</h3>

1024 

1025Inició `claude` con `--plugin-dir`, `--plugin-url`, `--agents`, o `--mcp-config`. Claude Code salió con este mensaje y `Plugins, custom agents, and MCP servers can only be loaded from sources your administrator has approved.`

1026 

1027Su administrador estableció `disableSideloadFlags` en configuración administrada, que desactiva los indicadores que cargan plugins, agents, y servidores desde rutas arbitrarias. Cargue el plugin desde un mercado aprobado en su lugar, o pida a su administrador que elimine la configuración.

1028 

1029Un mensaje relacionado en la pestaña `/plugin` **Errors** es `--plugin-dir copy of "<name>" ignored: plugin is locked by managed settings`. La configuración administrada habilita o deshabilita ese plugin por nombre, y Claude Code ignora su copia `--plugin-dir` de él para que el indicador no pueda anular la política.

1030 

1031<h3 id="plugins-from-claude-skills-are-blocked-by-your-organizations-managed-s">

1032 `Plugins from ~/.claude/skills/ are blocked by your organization's managed settings`

1033</h3>

1034 

1035Ejecutó `claude plugin init` o `claude plugin enable`, y se detuvo con esta línea. El mensaje nombra `strictKnownMarketplaces or blockedMarketplaces` y pide a su administrador que agregue `{"source":"skills-dir"}` a `strictKnownMarketplaces` o lo elimine de `blockedMarketplaces`.

1036 

1037La fuente `skills-dir` representa plugins que Claude Code carga desde su directorio `~/.claude/skills/`. Pida a su administrador que haga el cambio que el mensaje nombra.

1038 

1039<h3 id="command-sourced-plugins-are-disabled-by-your-organizations-managed-set">

1040 `Command-sourced plugins are disabled by your organization's managed settings`

1041</h3>

1042 

1043Instaló o actualizó un plugin con una fuente `command`, y se detuvo con esta línea y `The plugin was not installed or updated and its command was not run.`

1044 

1045Su administrador estableció `disableCommandPluginSources`, por lo que Claude Code rechaza ejecutar el comando declarado por mercado que produce el plugin. Establecer `allowManagedHooksOnly` solo tiene el mismo efecto cuando `disableCommandPluginSources` no está establecido. Pida a su administrador si el plugin puede publicarse desde un tipo de fuente que la política permite.

1046 

1047<h3 id="marketplace-is-seed-managed">

1048 `Marketplace '<name>' is seed-managed`

1049</h3>

1050 

1051Ejecutó `claude plugin marketplace update <name>`, y falló con `Marketplace '<name>' is seed-managed (<dir>)` y una sugerencia para pedir a su administrador.

1052 

1053Un operador pre-rellenó este mercado a través de `CLAUDE_CODE_PLUGIN_SEED_DIR`, y Claude Code trata un mercado administrado por semilla como de solo lectura. Una `marketplace update` masiva lo omite y actualiza los otros.

1054 

1055Para cambiar el contenido del mercado, pida a la persona que mantiene la imagen de semilla que lo actualice. Para el procedimiento, vea [Seed containers and CI](/docs/es/plugins/org#seed-containers-and-ci).

1056 

1057<h2 id="next-steps">

1058 Next steps

1059</h2>

1060 

1061* [Plugin loading reference](/docs/es/plugins/loading): por qué los scopes, la caché, y la precedencia se comportan de la manera que lo hacen

1062* [Plugin commands reference](/docs/es/plugins/cli-reference): indicadores, valores predeterminados, salida, y códigos de salida para los comandos `claude plugin`

1063* [Install and manage plugins](/docs/es/plugins/install): los pasos de instalación desde el principio

1064* [Manage plugins for your organization](/docs/es/plugins/org#troubleshoot-policy): solución de problemas del lado de la política para administradores

Details

135 Habilitar o deshabilitar un plugin135 Habilitar o deshabilitar un plugin

136</h3>136</h3>

137 137 

138Cuando habilita o deshabilita un [plugin](/docs/es/plugins), lo que el cambio cuesta depende de qué tipos de componentes proporciona el plugin. Los casos a continuación cubren cada tipo de componente, cuándo Claude Code aplica el cambio y qué sucede cuando deshabilita un plugin nuevamente en la misma sesión.138Cuando habilita o deshabilita un [plugin](/docs/es/plugins/overview), lo que el cambio cuesta depende de qué tipos de componentes proporciona el plugin. Los casos a continuación cubren cada tipo de componente, cuándo Claude Code aplica el cambio y qué sucede cuando deshabilita un plugin nuevamente en la misma sesión.

139 139 

140<h4 id="plugin-components-that-keep-the-cache">140<h4 id="plugin-components-that-keep-the-cache">

141 Componentes de plugin que mantienen la caché141 Componentes de plugin que mantienen la caché


147 Plugins que proporcionan servidores MCP147 Plugins que proporcionan servidores MCP

148</h4>148</h4>

149 149 

150Cuando habilita o deshabilita un plugin que proporciona [servidores MCP](/docs/es/plugins-reference#mcp-servers), Claude Code sigue las mismas reglas que cuando [conecta o desconecta un servidor MCP](#connecting-or-disconnecting-an-mcp-server):150Cuando habilita o deshabilita un plugin que proporciona [servidores MCP](/docs/es/plugins/components#mcp-servers), Claude Code sigue las mismas reglas que cuando [conecta o desconecta un servidor MCP](#connecting-or-disconnecting-an-mcp-server):

151 151 

152* Si Claude Code difiere las herramientas del servidor, mantiene la caché.152* Si Claude Code difiere las herramientas del servidor, mantiene la caché.

153* Si Claude Code las carga en el prefijo, la siguiente solicitud vuelve a leer toda la conversación.153* Si Claude Code las carga en el prefijo, la siguiente solicitud vuelve a leer toda la conversación.


156 Plugins de inteligencia de código156 Plugins de inteligencia de código

157</h4>157</h4>

158 158 

159Cuando habilita un [plugin de inteligencia de código](/docs/es/discover-plugins#code-intelligence), Claude obtiene la [herramienta LSP](/docs/es/tools-reference#lsp-tool-behavior).159Cuando habilita un [plugin de inteligencia de código](/docs/es/plugins/code-intelligence), Claude obtiene la [herramienta LSP](/docs/es/tools-reference#lsp-tool-behavior).

160 160 

161<h4 id="when-plugin-changes-apply">161<h4 id="when-plugin-changes-apply">

162 Cuándo se aplican los cambios de plugin162 Cuándo se aplican los cambios de plugin

163</h4>163</h4>

164 164 

165Un cambio que realiza en el menú `/plugin` se realiza a través de [`/reload-plugins`](/docs/es/discover-plugins#apply-plugin-changes-without-restarting), que Claude Code ejecuta por usted cuando cierra el menú. Paga el costo, ya sean anuncios anexados o una relectura completa, en el primer turno después de que se aplique el cambio. Claude Code también puede aplicar un cambio por su cuenta:165Un cambio que realiza en el menú `/plugin` se realiza a través de [`/reload-plugins`](/docs/es/plugins/cli-reference#reload-plugins), que Claude Code ejecuta por usted cuando cierra el menú. Paga el costo, ya sean anuncios anexados o una relectura completa, en el primer turno después de que se aplique el cambio. Claude Code también puede aplicar un cambio por su cuenta:

166 166 

167* Para un plugin con una fuente `command`, Claude Code [puede recargar el plugin por sí solo](/docs/es/plugin-marketplaces#when-claude-code-re-runs-the-command).167* Para un plugin con una fuente `command`, Claude Code [puede recargar el plugin por sí solo](/docs/es/plugins/loading#when-a-command-source-re-runs).

168* Cuando [instala un plugin desde la interfaz `/plugin`](/docs/es/discover-plugins#install-plugins), Claude Code puede activarlo durante la instalación. El resumen de instalación le dice si lo hizo.168* Cuando [instala un plugin desde la interfaz `/plugin`](/docs/es/plugins/install#install-a-plugin), Claude Code puede activarlo durante la instalación. El resumen de instalación le dice si lo hizo.

169* Cuando [mueve la sesión con `/cd`](/docs/es/permissions#move-the-session-to-another-directory) en v2.1.246 o posterior, Claude Code aplica los plugins que la configuración del nuevo directorio habilita como parte del movimiento, sin la advertencia de relectura completa que retiene un `/reload-plugins`.169* Cuando [mueve la sesión con `/cd`](/docs/es/permissions#move-the-session-to-another-directory) en v2.1.246 o posterior, Claude Code aplica los plugins que la configuración del nuevo directorio habilita como parte del movimiento, sin la advertencia de relectura completa que retiene un `/reload-plugins`.

170* En sesiones interactivas, cuando agrega o elimina un plugin en una [carpeta de plugins](/docs/es/plugins#test-your-plugins-locally) que pasó con `--plugin-dir`, el cambio se aplica de inmediato. Si aplicarlo desencadenaría una relectura completa, Claude Code retiene el cambio en su lugar y muestra un aviso para ejecutar `/reload-plugins`. Requiere Claude Code v2.1.265 o posterior.170* En sesiones interactivas, cuando agrega o elimina un plugin en una [carpeta de plugins](/docs/es/plugins/create#load-a-directory-or-archive-for-one-session) que pasó con `--plugin-dir`, el cambio se aplica de inmediato. Si aplicarlo desencadenaría una relectura completa, Claude Code retiene el cambio en su lugar y muestra un aviso para ejecutar `/reload-plugins`. Requiere Claude Code v2.1.265 o posterior.

171 171 

172Cuando `/reload-plugins` se ejecuta y la recarga desencadenaría una relectura completa, Claude Code muestra una advertencia y no aplica la recarga. Ejecute `/reload-plugins --force` para aplicarla de todos modos.172Cuando `/reload-plugins` se ejecuta y la recarga desencadenaría una relectura completa, Claude Code muestra una advertencia y no aplica la recarga. Ejecute `/reload-plugins --force` para aplicarla de todos modos.

173 173 

174`/reload-plugins` también se ejecuta en sesiones sin una terminal interactiva, como la aplicación de escritorio, el SDK del agente y [modo no interactivo](/docs/es/headless) con `-p`, cuando lo escribe directamente en la sesión. Requiere Claude Code v2.1.260 o posterior.174`/reload-plugins` también se ejecuta en sesiones sin una terminal interactiva, como la aplicación de escritorio, el SDK del agente y [modo no interactivo](/docs/es/headless) con `-p`, cuando lo escribe directamente en la sesión. Requiere Claude Code v2.1.260 o posterior.

175 175 

176En esas sesiones, la recarga aplica todo excepto los cambios del servidor MCP del plugin, que [entran en vigor en su próxima sesión](/docs/es/discover-plugins#apply-plugin-changes-without-restarting) y por lo tanto nunca cuestan una relectura completa a mitad de sesión.176En esas sesiones, la recarga aplica todo excepto los cambios del servidor MCP del plugin, que [entran en vigor en su próxima sesión](/docs/es/plugins/cli-reference#reload-plugins) y por lo tanto nunca cuestan una relectura completa a mitad de sesión.

177 177 

178<h4 id="plugins-you-enable-and-then-disable-in-one-session">178<h4 id="plugins-you-enable-and-then-disable-in-one-session">

179 Plugins que habilita y luego deshabilita en una sesión179 Plugins que habilita y luego deshabilita en una sesión

prompt-library.md +29 −28

Details

4 4 

5# Biblioteca de prompts5# Biblioteca de prompts

6 6 

7> Copie y pegue prompts para Claude Code, etiquetados por tarea y rol.7> Prompts para copiar y pegar en Claude Code, etiquetados por tarea y rol.

8 8 

9export const PromptLibrary = ({text = {}, labels = {}, tagLabels = {}, phaseLabels = {}, sourceLabels = {}, catLabels = {}}) => {9export const PromptLibrary = ({text = {}, labels = {}, tagLabels = {}, phaseLabels = {}, sourceLabels = {}, catLabels = {}}) => {

10 const RAW = useMemo(() => [{10 const RAW = useMemo(() => [{


626 return base + (href.startsWith('/en/') ? '/' + locale + href.slice(3) : href);626 return base + (href.startsWith('/en/') ? '/' + locale + href.slice(3) : href);

627 };627 };

628 }, []);628 }, []);

629 const SAFE_HREF = /^(\/(?![\/\\\s])|#|https?:\/\/)/;

629 const linkify = s => {630 const linkify = s => {

630 const out = [];631 const out = [];

631 let last = 0;632 let last = 0;

632 const re = /\[([^\]]+)\]\(([^)]+)\)/g;633 const re = /\[([^\]]+)\]\(([^)]+)\)/g;

633 for (let m; m = re.exec(s); ) {634 for (let m; m = re.exec(s); ) {

634 if (m.index > last) out.push(s.slice(last, m.index));635 if (m.index > last) out.push(s.slice(last, m.index));

635 out.push(<a key={m.index} href={doc(m[2])}>{m[1]}</a>);636 out.push(SAFE_HREF.test(m[2]) ? <a key={m.index} href={doc(m[2])}>{m[1]}</a> : m[1]);

636 last = re.lastIndex;637 last = re.lastIndex;

637 }638 }

638 if (last < s.length) out.push(s.slice(last));639 if (last < s.length) out.push(s.slice(last));


776 </div>777 </div>

777 <div className="pl-label">{L.whyWorks}</div>778 <div className="pl-label">{L.whyWorks}</div>

778 <div className="pl-teaches">{linkify(p.teaches)}</div>779 <div className="pl-teaches">{linkify(p.teaches)}</div>

779 {p.nextHref && p.next && <div className="pl-next">780 {p.nextHref && p.next && SAFE_HREF.test(p.nextHref) && <div className="pl-next">

780 <span className="pl-next-label">{L.makeItStick}</span>781 <span className="pl-next-label">{L.makeItStick}</span>

781 <a href={doc(p.nextHref)}>{codeify(p.next)} →</a>782 <a href={doc(p.nextHref)}>{codeify(p.next)} →</a>

782 </div>}783 </div>}


996 </div>;997 </div>;

997};998};

998 999 

999Esta es una biblioteca de prompts para copiar en Claude Code. Úsela para explorar formas de trabajo que no ha probado, o cuando no está seguro de dónde comenzar.1000Esta es una biblioteca de prompts para copiar en Claude Code. Úsela para explorar formas de trabajo que no ha probado, o cuando no esté seguro de dónde empezar.

1000 1001 

1001Los prompts se recopilan de varias guías de Anthropic, incluyendo [Flujos de trabajo comunes](/docs/es/common-workflows), [Mejores prácticas](/docs/es/best-practices), y [Cómo los equipos de Anthropic usan Claude Code](https://claude.com/blog/how-anthropic-teams-use-claude-code). Son puntos de partida en lugar de scripts. Abra **Por qué funciona esto** bajo cualquier prompt para ver el patrón detrás de él para que pueda escribir el suyo propio.1002Los prompts se recopilan de varias guías de Anthropic, incluyendo [Flujos de trabajo comunes](/docs/es/common-workflows), [Mejores prácticas](/docs/es/best-practices), y [Cómo los equipos de Anthropic usan Claude Code](https://claude.com/blog/how-anthropic-teams-use-claude-code). Son puntos de partida en lugar de scripts. Abra **Por qué funciona esto** bajo cualquier prompt para ver el patrón detrás de él para que pueda escribir el suyo propio.

1002 1003 


1011 noMatch: "Ningún prompt coincide",1012 noMatch: "Ningún prompt coincide",

1012 fillAndCopy: "Rellenar y copiar",1013 fillAndCopy: "Rellenar y copiar",

1013 copyThis: "Copiar este prompt",1014 copyThis: "Copiar este prompt",

1014 hintBefore: "Escriba en el",1015 hintBefore: "Escriba en los",

1015 hintChip: "resaltado",1016 hintChip: "campos destacados",

1016 hintAfter: "campos para personalizar, luego copie.",1017 hintAfter: "para personalizar, luego copie.",

1017 copy: "Copiar",1018 copy: "Copiar",

1018 copied: "Copiado",1019 copied: "Copiado",

1019 whyWorks: "Por qué funciona esto",1020 whyWorks: "Por qué funciona esto",


1030 needsLabel: "Necesita",1031 needsLabel: "Necesita",

1031 needs: {1032 needs: {

1032 tracker: "su rastreador de problemas agregado como un [conector de claude.ai](/docs/es/mcp#use-mcp-servers-from-claude-ai) o [servidor MCP](/docs/es/mcp).",1033 tracker: "su rastreador de problemas agregado como un [conector de claude.ai](/docs/es/mcp#use-mcp-servers-from-claude-ai) o [servidor MCP](/docs/es/mcp).",

1033 gh: "el [CLI de gh](https://cli.github.com) autenticado, o GitHub agregado como un [conector de claude.ai](/docs/es/mcp#use-mcp-servers-from-claude-ai).",1034 gh: "la [CLI gh](https://cli.github.com) autenticada, o GitHub agregado como un [conector de claude.ai](/docs/es/mcp#use-mcp-servers-from-claude-ai).",

1034 browser: "una forma para que Claude renderice y capture una captura de pantalla del resultado. La [aplicación de escritorio](/docs/es/desktop#preview-your-app) tiene esto integrado. En la terminal, instale la [extensión de Chrome](/docs/es/chrome) o un servidor MCP de [Playwright](/docs/es/mcp).",1035 browser: "una forma para que Claude renderice y capture una captura de pantalla del resultado. La [aplicación de escritorio](/docs/es/desktop#preview-your-app) tiene esto integrado. En la terminal, instale la [extensión de Chrome](/docs/es/chrome) o un servidor [MCP](/docs/es/mcp) de Playwright.",

1035 db: "su almacén de datos o almacén de registros agregado como un [conector de claude.ai](/docs/es/mcp#use-mcp-servers-from-claude-ai) o [servidor MCP](/docs/es/mcp)."1036 db: "su almacén de datos o almacén de registros agregado como un [conector de claude.ai](/docs/es/mcp#use-mcp-servers-from-claude-ai) o [servidor MCP](/docs/es/mcp)."

1036 }1037 }

1037};1038};


1060 1061 

1061export const phaseLabels = {1062export const phaseLabels = {

1062 discover: "Descubrir",1063 discover: "Descubrir",

1063 design: "Diseñar",1064 design: "Diseño",

1064 build: "Construir",1065 build: "Construir",

1065 ship: "Enviar",1066 ship: "Enviar",

1066 operate: "Operar"1067 operate: "Operar"


1096export const text = {1097export const text = {

1097 "get-oriented-in-a": {1098 "get-oriented-in-a": {

1098 title: "Orientarse en un repositorio nuevo",1099 title: "Orientarse en un repositorio nuevo",

1099 teaches: "Describa lo que desea saber, no qué archivos leer. Claude explora el proyecto por su cuenta y devuelve un resumen de cómo encaja todo.",1100 teaches: "Describa lo que desea saber, no qué archivos leer. Claude explora el proyecto por su cuenta y devuelve un resumen de cómo encaja.",

1100 next: "Ejecute `/init` para configurar `CLAUDE.md` para que Claude recuerde esto en cada sesión"1101 next: "Ejecute `/init` para configurar `CLAUDE.md` para que Claude recuerde esto en cada sesión"

1101 },1102 },

1102 "explain-unfamiliar-code": {1103 "explain-unfamiliar-code": {


1122 },1123 },

1123 "ask-the-codebase-a": {1124 "ask-the-codebase-a": {

1124 title: "Hacer una pregunta de producto a la base de código",1125 title: "Hacer una pregunta de producto a la base de código",

1125 teaches: "Indique su rol para que la respuesta esté al nivel correcto. Claude explica qué hace realmente el producto desde el código fuente, sin que necesite leerlo.",1126 teaches: "Indique su rol para que la respuesta esté al nivel correcto. Claude explica qué hace realmente el producto desde el código fuente, sin que usted necesite leerlo.",

1126 next: "Establezca un estilo de salida para que Claude siempre presente respuestas a este nivel"1127 next: "Establezca un estilo de salida para que Claude siempre presente respuestas a este nivel"

1127 },1128 },

1128 "plan-a-multi-file": {1129 "plan-a-multi-file": {

1129 title: "Planificar un cambio de varios archivos antes de tocar código",1130 title: "Planificar un cambio de múltiples archivos antes de tocar código",

1130 teaches: "Agregar \"no editar aún\" separa la exploración de los cambios, para que vea el enfoque antes de que se mueva cualquier código. Para hacer que el modo plan sea el predeterminado en cada prompt, presione Shift+Tab para [plan mode](/docs/es/permission-modes#analyze-before-you-edit-with-plan-mode)."1131 teaches: "Agregar \"no editar aún\" separa la exploración de los cambios, para que vea el enfoque antes de que se mueva código. Para hacer que el modo plan sea el predeterminado en cada prompt, presione Shift+Tab para [modo plan](/docs/es/permission-modes#analyze-before-you-edit-with-plan-mode)."

1131 },1132 },

1132 "draft-a-spec-by": {1133 "draft-a-spec-by": {

1133 title: "Redactar una especificación por entrevista",1134 title: "Redactar una especificación por entrevista",


1150 "implement-from-a-screenshot": {1151 "implement-from-a-screenshot": {

1151 title: "Implementar desde una captura de pantalla y auto-verificar",1152 title: "Implementar desde una captura de pantalla y auto-verificar",

1152 teaches: "Esto le da a Claude un bucle de verificación: renderiza, compara contra la imagen de origen, e itera sin que usted señale cada brecha.",1153 teaches: "Esto le da a Claude un bucle de verificación: renderiza, compara contra la imagen de origen, e itera sin que usted señale cada brecha.",

1153 next: "Use `/goal` para mantener a Claude iterando hasta que las capturas de pantalla coincidan"1154 next: "Use `/goal` para mantener a Claude iterando hacia capturas de pantalla coincidentes"

1154 },1155 },

1155 "follow-an-existing-pattern": {1156 "follow-an-existing-pattern": {

1156 title: "Seguir un patrón existente",1157 title: "Seguir un patrón existente",


1162 teaches: "Indique las entradas y salidas, no cómo construirla. Claude encuentra dónde vive código similar y agrega el suyo junto a él."1163 teaches: "Indique las entradas y salidas, no cómo construirla. Claude encuentra dónde vive código similar y agrega el suyo junto a él."

1163 },1164 },

1164 "build-a-small-internal": {1165 "build-a-small-internal": {

1165 title: "Construir una pequeña herramienta interna desde cero",1166 title: "Construir una herramienta interna pequeña desde cero",

1166 teaches: "No necesita un proyecto, un marco o un paso de compilación. Describa la herramienta y pida a Claude que la abra para que la vea funcionando inmediatamente."1167 teaches: "No necesita un proyecto, un marco o un paso de compilación. Describa la herramienta y pida a Claude que la abra para que la vea funcionando inmediatamente."

1167 },1168 },

1168 "work-an-issue-end": {1169 "work-an-issue-end": {


1175 },1176 },

1176 "draft-from-past-examples": {1177 "draft-from-past-examples": {

1177 title: "Redactar un documento a partir de ejemplos anteriores",1178 title: "Redactar un documento a partir de ejemplos anteriores",

1178 teaches: "Señale una carpeta de trabajo terminado en lugar de describir su estilo. Claude aprende la estructura y la voz de lo que ya ha enviado, para que el primer borrador se lea como uno de los suyos.",1179 teaches: "Señale una carpeta de trabajo terminado en lugar de describir su estilo. Claude aprende la estructura y voz de lo que ya ha enviado, para que el primer borrador se lea como uno de los suyos.",

1179 next: "Guarde la voz como una habilidad para que cada borrador comience allí"1180 next: "Guarde la voz como una habilidad para que cada borrador comience allí"

1180 },1181 },

1181 "write-tests-run-them": {1182 "write-tests-run-them": {


1190 "fill-gaps-from-a": {1191 "fill-gaps-from-a": {

1191 title: "Llenar brechas de un informe de cobertura",1192 title: "Llenar brechas de un informe de cobertura",

1192 teaches: "Señale el informe de cobertura en lugar de adivinar qué no se prueba. Claude lee los números reales y escribe pruebas para los archivos que más los necesitan.",1193 teaches: "Señale el informe de cobertura en lugar de adivinar qué no se prueba. Claude lee los números reales y escribe pruebas para los archivos que más los necesitan.",

1193 next: "Establezca esto como un `/goal` para que Claude siga escribiendo pruebas hasta que la cobertura alcance el objetivo"1194 next: "Establezca esto como un `/goal` para que Claude siga escribiendo pruebas hacia el objetivo de cobertura"

1194 },1195 },

1195 "port-code-between-languages": {1196 "port-code-between-languages": {

1196 title: "Portar código a otro idioma",1197 title: "Portar código a otro idioma",

1197 teaches: "Diga qué preservar, no solo el idioma de destino. Nombrar la API o el comportamiento que debe permanecer igual le da a Claude un contrato para verificar el puerto."1198 teaches: "Diga qué preservar, no solo el idioma de destino. Nombrar la API o comportamiento que debe permanecer igual le da a Claude un contrato para verificar el puerto."

1198 },1199 },

1199 "generate-docs-for-code": {1200 "generate-docs-for-code": {

1200 title: "Generar documentación para código sin documentar",1201 title: "Generar documentación para código sin documentar",


1202 },1203 },

1203 "migrate-a-pattern-across": {1204 "migrate-a-pattern-across": {

1204 title: "Migrar un patrón en toda la base de código",1205 title: "Migrar un patrón en toda la base de código",

1205 teaches: "Describa el patrón antiguo y el nuevo. Pedir a Claude que identifique primero cada lugar significa que los sitios de llamada se enumeran en la respuesta, para que pueda verificar que ninguno se perdió. Para una migración en muchos archivos, ejecute [/batch](/docs/es/commands). Claude divide el trabajo en unidades para que apruebe, luego los subagentes en segundo plano realizan los cambios y abren una solicitud de extracción por unidad."1206 teaches: "Describa el patrón antiguo y el nuevo. Pedir a Claude que identifique primero cada lugar significa que los sitios de llamada se enumeran en la respuesta, para que pueda verificar que ninguno se perdió. Para una migración en muchos archivos, ejecute [/batch](/docs/es/commands). Claude divide el trabajo en unidades para que usted apruebe, luego los subagentes en segundo plano hacen los cambios."

1206 },1207 },

1207 "optimize-against-a-measurable": {1208 "optimize-against-a-measurable": {

1208 title: "Optimizar contra un objetivo medible",1209 title: "Optimizar contra un objetivo medible",

1209 teaches: "Indicar la métrica y el objetivo le da a Claude una definición clara de cuándo está hecho.",1210 teaches: "Indicar la métrica y el objetivo le da a Claude una definición clara de cuándo está hecho.",

1210 next: "Establezca esto como un `/goal` para que Claude siga midiendo e iterando hasta que alcance el número"1211 next: "Establezca esto como un `/goal` para que Claude siga midiendo e iterando hacia el número"

1211 },1212 },

1212 "fix-a-precise-visual": {1213 "fix-a-precise-visual": {

1213 title: "Corregir un error visual preciso",1214 title: "Corregir un error visual preciso",


1245 },1246 },

1246 "narrow-the-scope-of": {1247 "narrow-the-scope-of": {

1247 title: "Reducir el alcance de un cambio",1248 title: "Reducir el alcance de un cambio",

1248 teaches: "Cuando la dirección es correcta pero el cambio fue demasiado amplio, pida a Claude que mantenga parte de él en lugar de rebobinar todo. Un límite establecido evita que una pequeña corrección se convierta en una refactorización."1249 teaches: "Cuando la dirección es correcta pero el cambio fue demasiado amplio, pida a Claude que mantenga parte de él en lugar de rebobinar todo. Un límite establecido mantiene una corrección pequeña de convertirse en una refactorización."

1249 },1250 },

1250 "turn-a-correction-into": {1251 "turn-a-correction-into": {

1251 title: "Convertir una corrección en una regla",1252 title: "Convertir una corrección en una regla",


1262 },1263 },

1263 "open-a-pull-request": {1264 "open-a-pull-request": {

1264 title: "Abrir una solicitud de extracción desde un ticket",1265 title: "Abrir una solicitud de extracción desde un ticket",

1265 teaches: "Omita el cambio de contexto entre rastreador, editor y GitHub. Un prompt lee la especificación, realiza el cambio y abre el PR."1266 teaches: "Omita el cambio de contexto entre rastreador, editor y GitHub. Un prompt lee la especificación, hace el cambio y abre la PR."

1266 },1267 },

1267 "draft-release-notes-from": {1268 "draft-release-notes-from": {

1268 title: "Redactar notas de lanzamiento del historial de git",1269 title: "Redactar notas de lanzamiento del historial de git",


1280 "investigate-a-reported-error": {1281 "investigate-a-reported-error": {

1281 title: "Investigar un error reportado",1282 title: "Investigar un error reportado",

1282 teaches: "Describa el síntoma y la ubicación; Claude lee la ruta de código relevante y rastrea las causas probables. Pegue seguimientos de pila o registros si los tiene.",1283 teaches: "Describa el síntoma y la ubicación; Claude lee la ruta de código relevante y rastrea las causas probables. Pegue seguimientos de pila o registros si los tiene.",

1283 next: "Ponga un enlace profundo en su runbook que abra Claude con este prompt rellenado previamente"1284 next: "Ponga un enlace profundo en su runbook que abra Claude con este prompt pre-rellenado"

1284 },1285 },

1285 "fix-a-build-error": {1286 "fix-a-build-error": {

1286 title: "Corregir un error de compilación en la raíz",1287 title: "Corregir un error de compilación en la raíz",

1287 teaches: "Pedir la causa raíz y la verificación evita parches de nivel superficial que suprimen el error sin corregirlo."1288 teaches: "Pedir causa raíz y verificación previene parches de nivel superficial que suprimen el error sin corregirlo."

1288 },1289 },

1289 "investigate-a-production-incident": {1290 "investigate-a-production-incident": {

1290 title: "Investigar un incidente de producción",1291 title: "Investigar un incidente de producción",


1301 },1302 },

1302 "analyze-a-data-file": {1303 "analyze-a-data-file": {

1303 title: "Analizar un archivo de datos",1304 title: "Analizar un archivo de datos",

1304 teaches: "Una pregunta única no necesita un script único. Señale un archivo en su carpeta de proyecto y Claude lo lee directamente, encuentra los patrones y escribe la salida donde le pida.",1305 teaches: "Una pregunta única no necesita un script único. Señale un archivo en su carpeta de proyecto y Claude lo lee directamente, encuentra los patrones y escribe la salida donde usted pida.",

1305 next: "Conecte la fuente de datos a través de MCP en lugar de exportar archivos"1306 next: "Conecte la fuente de datos a través de MCP en lugar de exportar archivos"

1306 },1307 },

1307 "generate-variations-from-performance": {1308 "generate-variations-from-performance": {


1311 },1312 },

1312 "turn-a-recurring-task": {1313 "turn-a-recurring-task": {

1313 title: "Convertir una tarea recurrente en una habilidad",1314 title: "Convertir una tarea recurrente en una habilidad",

1314 teaches: "Nombre los pasos una vez; reutilícelos como un comando. Claude escribe una [habilidad](/docs/es/skills) que cualquiera en su equipo pueda ejecutar."1315 teaches: "Nombre los pasos una vez; reutilícelos como un comando. Claude escribe una [habilidad](/docs/es/skills) que cualquiera en su equipo puede ejecutar."

1315 },1316 },

1316 "add-a-hook-for": {1317 "add-a-hook-for": {

1317 title: "Agregar un hook para comportamiento repetido",1318 title: "Agregar un hook para comportamiento repetido",


1319 },1320 },

1320 "connect-a-tool-with": {1321 "connect-a-tool-with": {

1321 title: "Conectar una herramienta con MCP",1322 title: "Conectar una herramienta con MCP",

1322 teaches: "Conecte la fuente una vez en lugar de pegar datos en cada sesión. Después de la configuración de [MCP](/docs/es/mcp), Claude lee de la herramienta directamente cuando pregunta sobre ella."1323 teaches: "Conecte la fuente una vez en lugar de pegar datos en cada sesión. Después de la configuración de [MCP](/docs/es/mcp), Claude lee de la herramienta directamente cuando usted pregunta sobre ella."

1323 },1324 },

1324 "capture-what-to-remember": {1325 "capture-what-to-remember": {

1325 title: "Capturar qué recordar para la próxima vez",1326 title: "Capturar qué recordar para la próxima vez",

Details

252<Note>252<Note>

253 Trusted Devices está actualmente en beta. Las características y funcionalidades pueden evolucionar a medida que se refina la experiencia.253 Trusted Devices está actualmente en beta. Las características y funcionalidades pueden evolucionar a medida que se refina la experiencia.

254 254 

255 Trusted Devices está disponible en planes Team y Enterprise. Está deshabilitado de forma predeterminada hasta que un propietario lo habilite.255 Trusted Devices está disponible en planes Pro, Max, Team y Enterprise y está deshabilitado de forma predeterminada. En planes Team y Enterprise, un propietario lo habilita para la organización. En planes Pro y Max, usted habilita **Require trusted devices** en su configuración, en la página Cowork o Account.

256</Note>256</Note>

257 257 

258Trusted Devices es una configuración de toda la organización que requiere que los miembros verifiquen su dispositivo antes de poder ver o controlar sesiones de Remote Control desde claude.ai, las aplicaciones móviles de Claude o Claude Desktop. Vincula el acceso a Remote Control a un dispositivo conocido y una autenticación reciente, no solo a una cuenta con sesión iniciada.258Trusted Devices requiere que cada miembro de su organización, o usted solo en un plan Pro o Max, verifique su dispositivo antes de poder ver o controlar sesiones de Remote Control desde claude.ai, las aplicaciones móviles de Claude o Claude Desktop. Vincula el acceso a Remote Control a un dispositivo conocido y una autenticación reciente, no solo a una cuenta con sesión iniciada.

259 259 

260Cuando la configuración está activada, interactuar con una sesión de Remote Control requiere ambas de las siguientes:260Cuando la configuración está activada, interactuar con una sesión de Remote Control requiere ambas de las siguientes:

261 261 


267La configuración se aplica solo a Remote Control. El chat regular de Claude, Claude Code en la terminal y el uso de API no se ven afectados.267La configuración se aplica solo a Remote Control. El chat regular de Claude, Claude Code en la terminal y el uso de API no se ven afectados.

268 268 

269<h3 id="enable-trusted-devices-for-your-organization">269<h3 id="enable-trusted-devices-for-your-organization">

270 Habilite Trusted Devices para su organización270 Habilite Trusted Devices para una organización Team o Enterprise

271</h3>271</h3>

272 272 

273Un propietario habilita la configuración desde la consola de administración de Claude Code.273Un propietario habilita la configuración desde la configuración de la organización de claude.ai.

274 274 

275<Steps>275<Steps>

276 <Step title="Abra la configuración de administración de Claude Code">276 <Step title="Vaya a la página Capabilities">

277 Vaya a [claude.ai/admin-settings/claude-code](https://claude.ai/admin-settings/claude-code). El botón de alternancia **Require trusted devices** aparece bajo la configuración de Remote Control.277 Vaya a [**Organization settings > Capabilities > Remote sessions**](https://claude.ai/admin-settings/capabilities). El botón de alternancia **Require trusted devices** aparece en esa sección.

278 </Step>278 </Step>

279 279 

280 <Step title="Active Require trusted devices">280 <Step title="Active Require trusted devices">

sandboxing.md +2 −2

Details

147* Una regla de solicitud `Bash` simple, o la forma equivalente `Bash(*)`, se omite para comandos que se ejecutan aislados; aún se aplica a comandos que vuelven al flujo de permiso regular. En [modo de plan](/docs/es/permission-modes#analyze-before-you-edit-with-plan-mode), la regla no se omite: solicita comandos aislados también, incluyendo los de solo lectura. Antes de v2.1.212, la omisión se aplicaba en modo de plan también147* Una regla de solicitud `Bash` simple, o la forma equivalente `Bash(*)`, se omite para comandos que se ejecutan aislados; aún se aplica a comandos que vuelven al flujo de permiso regular. En [modo de plan](/docs/es/permission-modes#analyze-before-you-edit-with-plan-mode), la regla no se omite: solicita comandos aislados también, incluyendo los de solo lectura. Antes de v2.1.212, la omisión se aplicaba en modo de plan también

148 148 

149<Info>149<Info>

150 El modo auto-allow funciona independientemente de su configuración de modo de permiso, excepto en [modo de plan](/docs/es/permission-modes#analyze-before-you-edit-with-plan-mode) y, en modo automático, para un comando que lleva [dominios permitidos por comando](#per-command-allowed-domains-in-auto-mode). Incluso si no está en modo "aceptar ediciones", los comandos Bash aislados se ejecutan automáticamente cuando auto-allow está habilitado. Esto significa que los comandos Bash que modifican archivos dentro de los límites del sandbox se ejecutan sin solicitar, incluso en modo Manual, donde las herramientas de edición de archivos solicitarían.150 El modo auto-allow funciona independientemente de su configuración de modo de permiso, con tres excepciones: [modo de plan](/docs/es/permission-modes#analyze-before-you-edit-with-plan-mode), un comando en modo automático que lleva [dominios permitidos por comando](#per-command-allowed-domains-in-auto-mode), y [revisión del clasificador del lado del servidor](/docs/es/permission-modes#how-the-classifier-evaluates-actions) de comandos aislados en modo automático. Incluso si no está en modo "aceptar ediciones", los comandos Bash aislados se ejecutan automáticamente cuando auto-allow está habilitado. Esto significa que los comandos Bash que modifican archivos dentro de los límites del sandbox se ejecutan sin solicitar, incluso en modo Manual, donde las herramientas de edición de archivos solicitarían.

151 151 

152 En modo de plan, auto-allow no amplía las aprobaciones; consulte [modo de plan](/docs/es/permission-modes#analyze-before-you-edit-with-plan-mode) para ver cómo Claude Code bloquea comandos mientras planifica. Antes de v2.1.212, auto-allow ejecutaba comandos aislados sin solicitud en modo de plan también.152 En modo de plan, auto-allow no amplía las aprobaciones; consulte [modo de plan](/docs/es/permission-modes#analyze-before-you-edit-with-plan-mode) para ver cómo Claude Code bloquea comandos mientras planifica. Antes de v2.1.212, auto-allow ejecutaba comandos aislados sin solicitud en modo de plan también.

153</Info>153</Info>


318 Proteger credenciales318 Proteger credenciales

319</h3>319</h3>

320 320 

321La configuración `sandbox.credentials` declara archivos de credenciales y variables de entorno a proteger de los comandos aislados. Cada entrada nombra una ruta de archivo o una variable de entorno y un `mode`. El bloque dedicado `credentials` mantiene las reglas de credenciales agrupadas juntas y separadas de las reglas generales del sistema de archivos. Requiere Claude Code v2.1.187 o posterior.321La configuración `sandbox.credentials` declara archivos de credenciales y variables de entorno a proteger de los comandos aislados. Cada entrada nombra una ruta de archivo o una variable de entorno y un `mode`. El bloque dedicado `credentials` mantiene las reglas de credenciales agrupadas juntas y separadas de las reglas generales del sistema de archivos.

322 322 

323Para entradas con `"mode": "deny"`, las rutas de archivo se deniegan para lecturas dentro del sandbox, la misma restricción que aplica `filesystem.denyRead`, y las variables de entorno se desactivan antes de que se ejecute cada comando aislado. La protección de archivo es parte de la capa del sistema de archivos, por lo que no se aplica si [deshabilita el aislamiento del sistema de archivos](#disable-filesystem-isolation); la protección de variable de entorno aún lo hace.323Para entradas con `"mode": "deny"`, las rutas de archivo se deniegan para lecturas dentro del sandbox, la misma restricción que aplica `filesystem.denyRead`, y las variables de entorno se desactivan antes de que se ejecute cada comando aislado. La protección de archivo es parte de la capa del sistema de archivos, por lo que no se aplica si [deshabilita el aislamiento del sistema de archivos](#disable-filesystem-isolation); la protección de variable de entorno aún lo hace.

324 324 

Details

25 Instalar el plugin25 Instalar el plugin

26</h2>26</h2>

27 27 

28En una sesión de Claude Code en terminal, instale desde el [marketplace oficial de Anthropic](/docs/es/discover-plugins#official-anthropic-marketplace):28En una sesión de Claude Code en terminal, instale desde el [marketplace oficial de Anthropic](/docs/es/plugins/anthropic-marketplaces):

29 29 

30```text theme={null}30```text theme={null}

31/plugin install security-guidance@claude-plugins-official31/plugin install security-guidance@claude-plugins-official


35 35 

36* **Aplicación de escritorio Claude, sesión local o SSH**: abra el [navegador de plugins](/docs/es/desktop#install-plugins) haciendo clic en el botón **+** junto al prompt, luego **Plugins**, luego **Agregar plugin**36* **Aplicación de escritorio Claude, sesión local o SSH**: abra el [navegador de plugins](/docs/es/desktop#install-plugins) haciendo clic en el botón **+** junto al prompt, luego **Plugins**, luego **Agregar plugin**

37* **Extensión de VS Code**: instale desde el [diálogo **Administrar plugins**](/docs/es/vs-code#manage-plugins)37* **Extensión de VS Code**: instale desde el [diálogo **Administrar plugins**](/docs/es/vs-code#manage-plugins)

38* **Sesiones en la nube**: habilite el plugin para su cuenta de claude.ai para que Claude Code lo cargue como un [plugin sincronizado](/docs/es/plugins-reference#synced-plugins). Una sesión en la nube no carga plugins de su configuración de usuario o del archivo `.claude/settings.json` del repositorio, como explica [Lo que se transfiere de su configuración](/docs/es/cloud-environments#what-carries-over-from-your-setup)38* **Sesiones en la nube**: una sesión en la nube no carga plugins de su configuración de usuario o del archivo `.claude/settings.json` del repositorio, como explica [Lo que se transfiere de su configuración](/docs/es/cloud-environments#what-carries-over-from-your-setup). Para plugins que su organización distribuye a través de configuración administrada, consulte [Administrar plugins para su organización](/docs/es/plugins/org)

39 39 

40La instalación en terminal solicita un alcance. Elija alcance de usuario para escribir el plugin en su configuración de usuario, de modo que se cargue en cada nueva sesión local que inicie en esta máquina.40La instalación en terminal solicita un alcance. Elija alcance de usuario para escribir el plugin en su configuración de usuario, de modo que se cargue en cada nueva sesión local que inicie en esta máquina.

41 41 

42Si la instalación falla, haga coincidir el mensaje que Claude Code reporta:42Si la instalación falla, haga coincidir el mensaje que Claude Code reporta:

43 43 

44* `Marketplace "claude-plugins-official" not found`: agregue el marketplace con `/plugin marketplace add anthropics/claude-plugins-official`, luego reintente la instalación.44* `Marketplace "claude-plugins-official" not found`: agregue el marketplace con `/plugin marketplace add anthropics/claude-plugins-official`, luego reintente la instalación.

45* El plugin [no se encuentra en el marketplace](/docs/es/discover-plugins#install-plugins): verifique el nombre del plugin.45* El plugin [no se encuentra en el marketplace](/docs/es/plugins/install#install-a-plugin): verifique el nombre del plugin.

46 46 

47Verifique el resumen de instalación. Si reporta `Run /reload-plugins to activate.`, consulte [Aplicar cambios de plugin sin reiniciar](/docs/es/discover-plugins#apply-plugin-changes-without-restarting) para activar el plugin en su sesión actual.47Verifique el resumen de instalación. Si reporta `Run /reload-plugins to activate.`, consulte [Aplicar cambios de plugin sin reiniciar](/docs/es/plugins/cli-reference#reload-plugins) para activar el plugin en su sesión actual.

48 48 

49<h3 id="enable-for-your-team-in-local-sessions">49<h3 id="enable-for-your-team-in-local-sessions">

50 Habilitar en sesiones locales para su equipo50 Habilitar en sesiones locales para su equipo


279 279 

280* [Code Review](/docs/es/code-review): configurar la revisión multiagente en tiempo de PR280* [Code Review](/docs/es/code-review): configurar la revisión multiagente en tiempo de PR

281* [Automatizar flujos de trabajo con hooks](/docs/es/hooks-guide): construir sus propias verificaciones en los mismos puntos del ciclo de vida281* [Automatizar flujos de trabajo con hooks](/docs/es/hooks-guide): construir sus propias verificaciones en los mismos puntos del ciclo de vida

282* [Descubrir e instalar plugins](/docs/es/discover-plugins#official-anthropic-marketplace): explorar otros plugins oficiales282* [Buscar plugins en el marketplace oficial](/docs/es/plugins/anthropic-marketplaces#find-plugins-in-the-official-marketplace): dónde explorar los otros plugins oficiales

Details

249}249}

250```250```

251 251 

252También puede establecer esta clave en un perfil MDM [administrado por endpoint](/docs/es/managed-settings#delivery-mechanisms) o archivo `managed-settings.json` del sistema para aplicar comportamiento de cierre por error en el primer lanzamiento, antes de que llegue cualquier carga útil de servidor. En Claude Code v2.1.191 o posterior, esta bandera es una excepción a la [regla de precedencia](#settings-precedence) anterior: Claude Code la honra cuando cualquier fuente administrada controlada por administrador la establece, incluso si también está presente una carga útil administrada por servidor en caché, por lo que no ignora un valor entregado por MDM cuando existe configuración administrada por servidor.252También puede establecer esta clave en un perfil MDM [administrado por endpoint](/docs/es/managed-settings#delivery-mechanisms) o archivo `managed-settings.json` del sistema para aplicar comportamiento de cierre por error en el primer lanzamiento, antes de que llegue cualquier carga útil de servidor. Esta bandera es una excepción a la [regla de precedencia](#settings-precedence) anterior: Claude Code la honra cuando cualquier fuente administrada controlada por administrador la establece, incluso si también está presente una carga útil administrada por servidor en caché, por lo que no ignora un valor entregado por MDM cuando existe configuración administrada por servidor.

253 253 

254Cuando un [`policyHelper`](/docs/es/settings-reference#policyhelper) proporciona configuración administrada, su salida reemplaza todas las demás fuentes administradas para las claves que Claude Code lee después del inicio. Para las fuentes de las que Claude Code lee esta clave, consulte [su entrada de configuración](/docs/es/settings-reference#forceremotesettingsrefresh). La entrada `policyHelper` dice de qué fuentes Claude Code lee el asistente y cuándo se ejecuta.254Cuando un [`policyHelper`](/docs/es/settings-reference#policyhelper) proporciona configuración administrada, su salida reemplaza todas las demás fuentes administradas para las claves que Claude Code lee después del inicio. Para las fuentes de las que Claude Code lee esta clave, consulte [su entrada de configuración](/docs/es/settings-reference#forceremotesettingsrefresh). La entrada `policyHelper` dice de qué fuentes Claude Code lee el asistente y cuándo se ejecuta.

255 255 


338 338 

339Ni las claves devueltas por un script [`apiKeyHelper`](/docs/es/settings-reference#apikeyhelper) ni las credenciales de [Workload Identity Federation](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation) activan la búsqueda de configuración.339Ni las claves devueltas por un script [`apiKeyHelper`](/docs/es/settings-reference#apikeyhelper) ni las credenciales de [Workload Identity Federation](https://platform.claude.com/docs/en/manage-claude/workload-identity-federation) activan la búsqueda de configuración.

340 340 

341En una sesión de [Cowork](https://claude.com/docs/cowork/overview) en la aplicación Claude Desktop, Claude Code no obtiene la configuración administrada por servidor de la consola de administración de claude.ai, incluso cuando el usuario inicia sesión con una cuenta de organización o empresa. [Dónde y cuándo se aplica una política](/docs/es/managed-settings#where-and-when-a-policy-applies) cubre qué política llega a las sesiones de Cowork en la máquina del usuario y las sesiones remotas de Cowork. claude.ai sigue aplicando sus listas [`strictKnownMarketplaces`](/docs/es/settings-reference#strictknownmarketplaces) y [`blockedMarketplaces`](/docs/es/settings-reference#blockedmarketplaces) cuando un usuario de Cowork agrega un marketplace desde un repositorio git en claude.ai o desde **Customize** en la pestaña Cowork. [Cómo funcionan las restricciones](/docs/es/plugin-marketplaces#how-restrictions-work) describe esa verificación.341En una sesión de [Cowork](https://claude.com/docs/cowork/overview) en la aplicación Claude Desktop, Claude Code no obtiene la configuración administrada por servidor de la consola de administración de claude.ai, incluso cuando el usuario inicia sesión con una cuenta de organización o empresa. [Dónde y cuándo se aplica una política](/docs/es/managed-settings#where-and-when-a-policy-applies) cubre qué política llega a las sesiones de Cowork en la máquina del usuario y las sesiones remotas de Cowork. claude.ai sigue aplicando sus listas [`strictKnownMarketplaces`](/docs/es/settings-reference#strictknownmarketplaces) y [`blockedMarketplaces`](/docs/es/settings-reference#blockedmarketplaces) cuando un usuario de Cowork agrega un marketplace desde un repositorio git en claude.ai o desde **Customize** en la pestaña Cowork. [Cómo funcionan las restricciones](/docs/es/plugins/org#restrict-what-users-can-install) describe esa verificación.

342 342 

343Si exporta una variable de proveedor `CLAUDE_CODE_USE_*` o una `ANTHROPIC_BASE_URL` no predeterminada en su shell, Claude Code omite la búsqueda de configuración para sus sesiones. [`claude doctor` y `/status` informan sobre la búsqueda omitida y su causa](#verify-settings-delivery).343Si exporta una variable de proveedor `CLAUDE_CODE_USE_*` o una `ANTHROPIC_BASE_URL` no predeterminada en su shell, Claude Code omite la búsqueda de configuración para sus sesiones. [`claude doctor` y `/status` informan sobre la búsqueda omitida y su causa](#verify-settings-delivery).

344 344 

sessions.md +1 −1

Details

37 37 

38Una sesión reanudada restaura la conversación junto con el estado guardado en ella:38Una sesión reanudada restaura la conversación junto con el estado guardado en ella:

39 39 

40* Historial de conversación: el historial completo, incluidas las llamadas a herramientas y los resultados. Una herramienta que aún se estaba ejecutando cuando terminó el proceso anterior, por ejemplo en un bloqueo, no termina ni se ejecuta de nuevo cuando reanuda; Claude continúa sin su salida.40* Historial de conversación: el historial completo, incluidas las llamadas a herramientas y los resultados. Una herramienta que aún se estaba ejecutando cuando terminó el proceso anterior, por ejemplo en un bloqueo, no termina ni se ejecuta de nuevo cuando reanuda. Claude ve la llamada marcada como cortada antes de que se registrara su resultado y se le indica que verifique si tuvo efecto antes de ejecutarla de nuevo, a menos que [`CLAUDE_CODE_RESUME_INTERRUPTED_TURN`](/docs/es/env-vars#variables) esté configurado. Antes de v2.1.281, Claude Code eliminaba la llamada cortada de la conversación o se la mostraba a Claude como una que usted interrumpió.

41* Modelo: la sesión continúa en el modelo que estaba usando. El modelo no se restaura cuando ha sido retirado o no está permitido por `availableModels`, cuando una bandera `--model` o una variable de entorno de la familia `ANTHROPIC_MODEL` elige una en el lanzamiento, o en proveedores que usan ID de implementación específicos del proveedor, como [Amazon Bedrock, Google Cloud's Agent Platform y Microsoft Foundry](/docs/es/third-party-integrations); consulte [configuración de modelo](/docs/es/model-config#setting-your-model) para el orden de resolución.41* Modelo: la sesión continúa en el modelo que estaba usando. El modelo no se restaura cuando ha sido retirado o no está permitido por `availableModels`, cuando una bandera `--model` o una variable de entorno de la familia `ANTHROPIC_MODEL` elige una en el lanzamiento, o en proveedores que usan ID de implementación específicos del proveedor, como [Amazon Bedrock, Google Cloud's Agent Platform y Microsoft Foundry](/docs/es/third-party-integrations); consulte [configuración de modelo](/docs/es/model-config#setting-your-model) para el orden de resolución.

42* Agente: una sesión iniciada con [`--agent`](/docs/es/sub-agents#invoke-subagents-explicitly) o la configuración `agent` continúa como ese agente, manteniendo sus restricciones de herramientas y modelo. Pase `--agent` al reanudar para elegir uno diferente; para la solicitud del sistema en cualquier caso, consulte [Banderas de solicitud del sistema en conversaciones reanudadas](/docs/es/cli-reference#system-prompt-flags-in-resumed-conversations). Claude Code busca el agente en dos lugares: el directorio original de la sesión, siempre que haya [confiado en ese espacio de trabajo](/docs/es/permissions#project-allow-rules-and-workspace-trust), y luego el directorio desde el que reanuda, por lo que un agente con alcance de proyecto aún se carga cuando reanuda desde otro directorio. Si Claude Code no encuentra el agente en ninguno de los dos lugares, la sesión se reanuda con las herramientas predeterminadas y muestra una [advertencia que nombra el agente](/docs/es/errors#session-agent-no-longer-available).42* Agente: una sesión iniciada con [`--agent`](/docs/es/sub-agents#invoke-subagents-explicitly) o la configuración `agent` continúa como ese agente, manteniendo sus restricciones de herramientas y modelo. Pase `--agent` al reanudar para elegir uno diferente; para la solicitud del sistema en cualquier caso, consulte [Banderas de solicitud del sistema en conversaciones reanudadas](/docs/es/cli-reference#system-prompt-flags-in-resumed-conversations). Claude Code busca el agente en dos lugares: el directorio original de la sesión, siempre que haya [confiado en ese espacio de trabajo](/docs/es/permissions#project-allow-rules-and-workspace-trust), y luego el directorio desde el que reanuda, por lo que un agente con alcance de proyecto aún se carga cuando reanuda desde otro directorio. Si Claude Code no encuentra el agente en ninguno de los dos lugares, la sesión se reanuda con las herramientas predeterminadas y muestra una [advertencia que nombra el agente](/docs/es/errors#session-agent-no-longer-available).

43* Modo de permisos: si reanuda desde una terminal con `claude --continue`, `claude --resume <session-id>` o `claude --resume <name>` cuando el nombre coincide con una sesión, sin `-p`, Claude Code restaura el modo de permisos en el que estaba la sesión, excepto en los casos en [modo de permisos al reanudar](#permission-mode-on-resume), que también cubre el selector de sesiones, `/resume` y reanudar con `claude -p`. Pase `--permission-mode` o `--dangerously-skip-permissions` para anular el modo restaurado.43* Modo de permisos: si reanuda desde una terminal con `claude --continue`, `claude --resume <session-id>` o `claude --resume <name>` cuando el nombre coincide con una sesión, sin `-p`, Claude Code restaura el modo de permisos en el que estaba la sesión, excepto en los casos en [modo de permisos al reanudar](#permission-mode-on-resume), que también cubre el selector de sesiones, `/resume` y reanudar con `claude -p`. Pase `--permission-mode` o `--dangerously-skip-permissions` para anular el modo restaurado.

settings.md +5 −1

Details

452 Comparta configuraciones con su equipo452 Comparta configuraciones con su equipo

453</h3>453</h3>

454 454 

455Confirme `.claude/settings.json` para que todos los que clonan el repositorio obtengan los mismos permisos, hooks, telemetría y plugins. Cada compañero de equipo aún puede anularlo para sí mismo en su propio `.claude/settings.local.json`, por lo que las excepciones personales no necesitan una confirmación. Para un archivo de equipo completo, vea [configuraciones compartidas de un equipo](/docs/es/settings-example#a-teams-shared-settings).455Confirme `.claude/settings.json` para que todos los que clonan el repositorio obtengan los mismos permisos, hooks y plugins. Cada compañero de equipo aún puede anularlo para sí mismo en su propio `.claude/settings.local.json`, por lo que las excepciones personales no necesitan una confirmación. Para un archivo de equipo completo, vea [configuraciones compartidas de un equipo](/docs/es/settings-example#a-teams-shared-settings).

456 456 

457Parte de lo que confirma espera hasta que cada compañero de equipo [confíe en la carpeta](/docs/es/permissions#project-allow-rules-and-workspace-trust), y algunas claves nunca surten efecto desde un archivo de repositorio; [Solucione una configuración que no se aplica](#common-cases) cubre ambas.457Parte de lo que confirma espera hasta que cada compañero de equipo [confíe en la carpeta](/docs/es/permissions#project-allow-rules-and-workspace-trust), y algunas claves nunca surten efecto desde un archivo de repositorio; [Solucione una configuración que no se aplica](#common-cases) cubre ambas.

458 458 


743* **Un nivel más alto lo establece.** Otro archivo de configuración, una bandera `--settings`, o una fuente administrada establece la clave por encima de la suya; la [pila](#settings-precedence) dice cuál. Una bandera o variable de entorno también puede anular la clave por su cuenta, decidido clave por clave; la entrada de la clave en la [referencia de configuración](/docs/es/settings-reference) dice cuál usa Claude Code, y la [entrada `env`](/docs/es/settings-reference#env) cubre un valor `env` administrado versus una exportación de shell.743* **Un nivel más alto lo establece.** Otro archivo de configuración, una bandera `--settings`, o una fuente administrada establece la clave por encima de la suya; la [pila](#settings-precedence) dice cuál. Una bandera o variable de entorno también puede anular la clave por su cuenta, decidido clave por clave; la entrada de la clave en la [referencia de configuración](/docs/es/settings-reference) dice cuál usa Claude Code, y la [entrada `env`](/docs/es/settings-reference#env) cubre un valor `env` administrado versus una exportación de shell.

744* **Una clave de seguridad mantiene su valor estricto.** Para algunas claves Claude Code honra el valor restrictivo de cualquier archivo, por lo que un proyecto `true` para [`disableClaudeAiConnectors`](/docs/es/settings-reference#disableclaudeaiconnectors) permanece encendido; vea [Excepciones a la precedencia de configuraciones administradas](#exceptions-to-managed-settings-precedence).744* **Una clave de seguridad mantiene su valor estricto.** Para algunas claves Claude Code honra el valor restrictivo de cualquier archivo, por lo que un proyecto `true` para [`disableClaudeAiConnectors`](/docs/es/settings-reference#disableclaudeaiconnectors) permanece encendido; vea [Excepciones a la precedencia de configuraciones administradas](#exceptions-to-managed-settings-precedence).

745* **El archivo no puede establecer ese valor.** Los valores [`permissions.defaultMode`](/docs/es/settings-reference#permissions-defaultmode) `auto` y `bypassPermissions` no surten efecto desde configuraciones de proyecto o local; establézcalos en configuraciones de usuario o administradas en su lugar, o pase `--permission-mode` para una sesión. Antes de v2.1.257, `bypassPermissions` surtía efecto desde cualquier archivo.745* **El archivo no puede establecer ese valor.** Los valores [`permissions.defaultMode`](/docs/es/settings-reference#permissions-defaultmode) `auto` y `bypassPermissions` no surten efecto desde configuraciones de proyecto o local; establézcalos en configuraciones de usuario o administradas en su lugar, o pase `--permission-mode` para una sesión. Antes de v2.1.257, `bypassPermissions` surtía efecto desde cualquier archivo.

746 

747 Una variable de exportación de telemetría en un bloque [`env`](/docs/es/settings-reference#env) tampoco surte efecto desde configuraciones de proyecto o local, aparte de algunos valores desactivados. [Variables que Claude Code ignora en `env`](/docs/es/settings-reference#variables-claude-code-ignores-in-env) enumera las variables y esos valores.

746* **El archivo está roto.** JSON inválido o un valor rechazado hace que Claude Code omita el archivo o la entrada; vea [Corrija un archivo de configuración roto](#fix-a-broken-settings-file).748* **El archivo está roto.** JSON inválido o un valor rechazado hace que Claude Code omita el archivo o la entrada; vea [Corrija un archivo de configuración roto](#fix-a-broken-settings-file).

747 749 

748<h4 id="a-change-you-made-in-claude-code-is-lost-in-new-sessions">750<h4 id="a-change-you-made-in-claude-code-is-lost-in-new-sessions">


766Dos cosas mantienen una clave en `.claude/settings.json` de aplicarse para todos los que la clonan:768Dos cosas mantienen una clave en `.claude/settings.json` de aplicarse para todos los que la clonan:

767 769 

768* **Claude Code ignora la clave en un archivo de repositorio.** Busque `User, local, or managed`, `User or managed`, `Managed`, o `Global config` en la columna Scope del [índice de configuración](/docs/es/settings-reference#settings-index). Esas claves nunca se aplican desde el archivo compartido, aparte de algunas que un archivo de repositorio aún puede apagar. Cada una de esas entradas lo dice en su línea de Scope. Las claves `Global config` se aplican solo desde `~/.claude.json`.770* **Claude Code ignora la clave en un archivo de repositorio.** Busque `User, local, or managed`, `User or managed`, `Managed`, o `Global config` en la columna Scope del [índice de configuración](/docs/es/settings-reference#settings-index). Esas claves nunca se aplican desde el archivo compartido, aparte de algunas que un archivo de repositorio aún puede apagar. Cada una de esas entradas lo dice en su línea de Scope. Las claves `Global config` se aplican solo desde `~/.claude.json`.

771 

772 Dentro de la clave `env`, las variables de exportación de telemetría nunca se aplican desde el archivo compartido tampoco, aparte de algunos valores desactivados; vea [Variables que Claude Code ignora en `env`](/docs/es/settings-reference#variables-claude-code-ignores-in-env).

769* **La clave espera confianza.** Las reglas `permissions.allow`, `permissions.additionalDirectories`, `extraKnownMarketplaces` y la mayoría de valores [`env`](/docs/es/settings-reference#env) se aplican solo después de que cada compañero de equipo [confíe en la carpeta](/docs/es/permissions#project-allow-rules-and-workspace-trust). Hasta entonces aún ven avisos y no obtienen plugins de un marketplace que el archivo declara. Las reglas `deny` y `ask` se aplican de inmediato.773* **La clave espera confianza.** Las reglas `permissions.allow`, `permissions.additionalDirectories`, `extraKnownMarketplaces` y la mayoría de valores [`env`](/docs/es/settings-reference#env) se aplican solo después de que cada compañero de equipo [confíe en la carpeta](/docs/es/permissions#project-allow-rules-and-workspace-trust). Hasta entonces aún ven avisos y no obtienen plugins de un marketplace que el archivo declara. Las reglas `deny` y `ask` se aplican de inmediato.

770 774 

771<h4 id="permission-rules-combine-differently-than-you-expected">775<h4 id="permission-rules-combine-differently-than-you-expected">

Details

98 Configuración compartida de un equipo98 Configuración compartida de un equipo

99</h2>99</h2>

100 100 

101La configuración compartida de un equipo, confirmada en el repositorio para que todos los que lo clonan obtengan los mismos permisos, hooks, telemetría y marketplace de plugins. Guarde un archivo como este en `.claude/settings.json` en la parte superior del repositorio. Lo que debe saber antes de confirmar uno:101La configuración compartida de un equipo, confirmada en el repositorio para que todos los que lo clonan obtengan los mismos permisos, hooks y marketplace de plugins. Guarde un archivo como este en `.claude/settings.json` en la parte superior del repositorio. Lo que debe saber antes de confirmar uno:

102 102 

103* **Las sesiones en la nube también lo leen.** Una [sesión en la nube](/docs/es/settings#settings-in-cloud-sessions) comienza desde un clon del repositorio, por lo que el archivo confirmado también se aplica allí.103* **Las sesiones en la nube también lo leen.** Una [sesión en la nube](/docs/es/settings#settings-in-cloud-sessions) comienza desde un clon del repositorio, por lo que el archivo confirmado también se aplica allí.

104* **La telemetría va en configuración administrada o personal.** Claude Code ignora las [variables del exportador de OpenTelemetry](/docs/es/settings-reference#variables-claude-code-ignores-in-env) en los archivos de configuración de un repositorio, aparte de algunos valores que desactivan la telemetría. Configúrelas en [configuración administrada](/docs/es/monitoring-usage#administrator-configuration) para su organización, o en el archivo `~/.claude/settings.json` de cada persona.

104* **Las reglas de permiso esperan confianza.** Las reglas de permiso y las entradas de `extraKnownMarketplaces` entran en vigor después de que cada persona [confía en esta carpeta misma](/docs/es/permissions#project-allow-rules-and-workspace-trust), no solo en una carpeta principal; las reglas de denegación y pregunta se aplican en cada sesión, confiable o no.105* **Las reglas de permiso esperan confianza.** Las reglas de permiso y las entradas de `extraKnownMarketplaces` entran en vigor después de que cada persona [confía en esta carpeta misma](/docs/es/permissions#project-allow-rules-and-workspace-trust), no solo en una carpeta principal; las reglas de denegación y pregunta se aplican en cada sesión, confiable o no.

105* **El hook es un script en el repositorio.** El hook de este archivo ejecuta `.claude/hooks/block-rm.sh`; [Cómo se resuelve un hook](/docs/es/hooks#how-a-hook-resolves) explica cómo escribirlo.106* **El hook es un script en el repositorio.** El hook de este archivo ejecuta `.claude/hooks/block-rm.sh`; [Cómo se resuelve un hook](/docs/es/hooks#how-a-hook-resolves) explica cómo escribirlo.

106* **Las reglas coinciden con el comando y la ruta tal como se escriben.** `Bash(git push *)` no coincide con [`git -C . push`](/docs/es/permissions#bash-rule-limits). `Read(./.env)` por sí solo detiene las herramientas de archivo y los comandos que nombran el archivo, como `cat .env`, pero no [`grep -r` ejecutado sobre el directorio](/docs/es/permissions#read-and-edit); el bloque `sandbox` en este archivo cierra esa brecha, porque el sandbox [añade sus rutas de denegación de `Read`](/docs/es/settings-reference#sandbox-filesystem-denyread) a lo que ningún comando en sandbox puede leer.107* **Las reglas coinciden con el comando y la ruta tal como se escriben.** `Bash(git push *)` no coincide con [`git -C . push`](/docs/es/permissions#bash-rule-limits). `Read(./.env)` por sí solo detiene las herramientas de archivo y los comandos que nombran el archivo, como `cat .env`, pero no [`grep -r` ejecutado sobre el directorio](/docs/es/permissions#read-and-edit); el bloque `sandbox` en este archivo cierra esa brecha, porque el sandbox [añade sus rutas de denegación de `Read`](/docs/es/settings-reference#sandbox-filesystem-denyread) a lo que ningún comando en sandbox puede leer.


124 "Read(./secrets/**)"125 "Read(./secrets/**)"

125 ]126 ]

126 },127 },

127 "env": {

128 "CLAUDE_CODE_ENABLE_TELEMETRY": "1",

129 "OTEL_METRICS_EXPORTER": "otlp",

130 "OTEL_EXPORTER_OTLP_PROTOCOL": "grpc",

131 "OTEL_EXPORTER_OTLP_ENDPOINT": "http://collector.example.com:4317"

132 },

133 "hooks": {128 "hooks": {

134 "PreToolUse": [129 "PreToolUse": [

135 {130 {


194 "Read(./secrets/**)"189 "Read(./secrets/**)"

195 ]190 ]

196 },191 },

197 // Envíe métricas de OpenTelemetry al recopilador del equipo sobre gRPC; reemplace el endpoint con la URL de su recopilador

198 "env": {

199 "CLAUDE_CODE_ENABLE_TELEMETRY": "1",

200 "OTEL_METRICS_EXPORTER": "otlp",

201 "OTEL_EXPORTER_OTLP_PROTOCOL": "grpc",

202 "OTEL_EXPORTER_OTLP_ENDPOINT": "http://collector.example.com:4317"

203 },

204 // Antes de cada comando Bash, ejecute un script en el repositorio que pueda bloquearlo192 // Antes de cada comando Bash, ejecute un script en el repositorio que pueda bloquearlo

205 "hooks": {193 "hooks": {

206 "PreToolUse": [194 "PreToolUse": [

Details

626| [`axScreenReader`](#axscreenreader) | Represente [salida amigable con lectores de pantalla](/docs/es/accessibility) | Interfaz y terminal | Cualquier archivo |626| [`axScreenReader`](#axscreenreader) | Represente [salida amigable con lectores de pantalla](/docs/es/accessibility) | Interfaz y terminal | Cualquier archivo |

627| [`bashEditDiffEnabled`](#basheditdiffenabled) | Registre los [archivos que cambió un comando Bash](/docs/es/hooks#bash) en cada modo de permisos | Interfaz y terminal | Usuario o administrado |627| [`bashEditDiffEnabled`](#basheditdiffenabled) | Registre los [archivos que cambió un comando Bash](/docs/es/hooks#bash) en cada modo de permisos | Interfaz y terminal | Usuario o administrado |

628| [`bashOutputMaxChars`](#bashoutputmaxchars) | Establezca cuánta [salida](/docs/es/tools-reference#output-limits) de un comando exitoso recibe Claude en línea | Memoria y contexto | Cualquier archivo |628| [`bashOutputMaxChars`](#bashoutputmaxchars) | Establezca cuánta [salida](/docs/es/tools-reference#output-limits) de un comando exitoso recibe Claude en línea | Memoria y contexto | Cualquier archivo |

629| [`blockedMarketplaces`](#blockedmarketplaces) | Bloquee [fuentes de marketplace de plugins](/docs/es/plugin-marketplaces) para su organización | Plugins y skills | Administrado |629| [`blockedMarketplaces`](#blockedmarketplaces) | Bloquee [fuentes de marketplace de plugins](/docs/es/plugins/overview) para su organización | Plugins y skills | Administrado |

630| [`browserExternalPageTools`](#browserexternalpagetools) | Mantenga las herramientas de Claude fuera de las páginas externas en el panel del navegador [escritorio](/docs/es/desktop) | Herramientas | Administrado |630| [`browserExternalPageTools`](#browserexternalpagetools) | Mantenga las herramientas de Claude fuera de las páginas externas en el panel del navegador [escritorio](/docs/es/desktop) | Herramientas | Administrado |

631| [`channelsEnabled`](#channelsenabled) | Permita [canales](/docs/es/channels#enable-channels-for-your-organization) para su organización | Plugins y skills | Administrado |631| [`channelsEnabled`](#channelsenabled) | Permita [canales](/docs/es/channels#enable-channels-for-your-organization) para su organización | Plugins y skills | Administrado |

632| [`claudeMd`](#claudemd) | Inyecte instrucciones de [CLAUDE.md](/docs/es/memory#deploy-organization-wide-claude-md) en toda la organización desde configuración administrada | Memoria y contexto | Administrado |632| [`claudeMd`](#claudemd) | Inyecte instrucciones de [CLAUDE.md](/docs/es/memory#deploy-organization-wide-claude-md) en toda la organización desde configuración administrada | Memoria y contexto | Administrado |


647| [`disableBrowserExternalNavigation`](#disablebrowserexternalnavigation) | Limite el panel del navegador [escritorio](/docs/es/desktop) a localhost para personas y Claude | Herramientas | Administrado |647| [`disableBrowserExternalNavigation`](#disablebrowserexternalnavigation) | Limite el panel del navegador [escritorio](/docs/es/desktop) a localhost para personas y Claude | Herramientas | Administrado |

648| [`disableBundledSkills`](#disablebundledskills) | Desactive los [skills](/docs/es/skills#bundled-skills) y [flujos de trabajo](/docs/es/workflows) incluidos con Claude Code | Plugins y skills | Cualquier archivo |648| [`disableBundledSkills`](#disablebundledskills) | Desactive los [skills](/docs/es/skills#bundled-skills) y [flujos de trabajo](/docs/es/workflows) incluidos con Claude Code | Plugins y skills | Cualquier archivo |

649| [`disableClaudeAiConnectors`](#disableclaudeaiconnectors) | Desactive los [conectores de claude.ai](/docs/es/mcp#disable-claude-ai-connectors) para que Claude Code no los obtenga | MCP | Cualquier archivo |649| [`disableClaudeAiConnectors`](#disableclaudeaiconnectors) | Desactive los [conectores de claude.ai](/docs/es/mcp#disable-claude-ai-connectors) para que Claude Code no los obtenga | MCP | Cualquier archivo |

650| [`disableCommandPluginSources`](#disablecommandpluginsources) | Bloquee [plugins](/docs/es/plugins) que se instalan ejecutando un comando declarado por marketplace | Plugins y skills | Administrado |650| [`disableCommandPluginSources`](#disablecommandpluginsources) | Bloquee [plugins](/docs/es/plugins/overview) que se instalan ejecutando un comando declarado por marketplace | Plugins y skills | Administrado |

651| [`disableDeepLinkRegistration`](#disabledeeplinkregistration) | Impida que Claude Code registre el controlador [`claude-cli://`](/docs/es/deep-links) | Remoto, escritorio y notificaciones | Cualquier archivo |651| [`disableDeepLinkRegistration`](#disabledeeplinkregistration) | Impida que Claude Code registre el controlador [`claude-cli://`](/docs/es/deep-links) | Remoto, escritorio y notificaciones | Cualquier archivo |

652| [`disableDesktopLocalSessions`](#disabledesktoplocalsessions) | Desactive las [sesiones de Desktop Code](/docs/es/desktop#local-sessions-on-managed-devices) que se ejecutan en el dispositivo, dejando SSH para otros hosts y nube | Remoto, escritorio y notificaciones | Administrado |652| [`disableDesktopLocalSessions`](#disabledesktoplocalsessions) | Desactive las [sesiones de Desktop Code](/docs/es/desktop#local-sessions-on-managed-devices) que se ejecutan en el dispositivo, dejando SSH para otros hosts y nube | Remoto, escritorio y notificaciones | Administrado |

653| [`disabledMcpjsonServers`](#disabledmcpjsonservers) | Rechace servidores específicos del [`.mcp.json`](/docs/es/mcp#project-scope) de un proyecto | MCP | Cualquier archivo |653| [`disabledMcpjsonServers`](#disabledmcpjsonservers) | Rechace servidores específicos del [`.mcp.json`](/docs/es/mcp#project-scope) de un proyecto | MCP | Cualquier archivo |

654| [`disableMobileSimulatorTools`](#disablemobilesimulatortools) | Bloquee las herramientas de Claude en el panel del simulador de iOS [escritorio](/docs/es/desktop) | Herramientas | Administrado |654| [`disableMobileSimulatorTools`](#disablemobilesimulatortools) | Bloquee las herramientas de Claude en el panel del simulador de iOS [escritorio](/docs/es/desktop) | Herramientas | Administrado |

655| [`disableRemoteControl`](#disableremotecontrol) | Desactive [Control Remoto](/docs/es/remote-control) en todas partes donde pueda iniciarse | Remoto, escritorio y notificaciones | Cualquier archivo |655| [`disableRemoteControl`](#disableremotecontrol) | Desactive [Control Remoto](/docs/es/remote-control) en todas partes donde pueda iniciarse | Remoto, escritorio y notificaciones | Cualquier archivo |

656| [`disableSideloadFlags`](#disablesideloadflags) | Rechace las banderas CLI que cargan [plugins](/docs/es/plugins), [subagentes](/docs/es/sub-agents), y [servidores MCP](/docs/es/mcp) | Configuración empresarial y administrada | Administrado |656| [`disableSideloadFlags`](#disablesideloadflags) | Rechace las banderas CLI que cargan [plugins](/docs/es/plugins/overview), [subagentes](/docs/es/sub-agents), y [servidores MCP](/docs/es/mcp) | Configuración empresarial y administrada | Administrado |

657| [`disableSkillShellExecution`](#disableskillshellexecution) | Impida que [skills](/docs/es/skills) y comandos personalizados ejecuten shell en línea | Plugins y skills | Cualquier archivo |657| [`disableSkillShellExecution`](#disableskillshellexecution) | Impida que [skills](/docs/es/skills) y comandos personalizados ejecuten shell en línea | Plugins y skills | Cualquier archivo |

658| [`disableWorkflows`](#disableworkflows) | Desactive los [flujos de trabajo dinámicos](/docs/es/workflows) para todos; use `enableWorkflows` para usted mismo | Hooks y automatización | Cualquier archivo |658| [`disableWorkflows`](#disableworkflows) | Desactive los [flujos de trabajo dinámicos](/docs/es/workflows) para todos; use `enableWorkflows` para usted mismo | Hooks y automatización | Cualquier archivo |

659| [`editorMode`](#editormode) | Use [atajos de teclado vim](/docs/es/interactive-mode#vim-editor-mode) en el indicador de entrada | Interfaz y terminal | Cualquier archivo |659| [`editorMode`](#editormode) | Use [atajos de teclado vim](/docs/es/interactive-mode#vim-editor-mode) en el indicador de entrada | Interfaz y terminal | Cualquier archivo |


662| [`enableAllProjectMcpServers`](#enableallprojectmcpservers) | Apruebe cada servidor en archivos [`.mcp.json`](/docs/es/mcp#project-server-approvals-and-workspace-trust) de proyecto sin un indicador | MCP | Cualquier archivo |662| [`enableAllProjectMcpServers`](#enableallprojectmcpservers) | Apruebe cada servidor en archivos [`.mcp.json`](/docs/es/mcp#project-server-approvals-and-workspace-trust) de proyecto sin un indicador | MCP | Cualquier archivo |

663| [`enableArtifact`](#enableartifact) | Desactive la [herramienta Artifact](/docs/es/artifacts) con un `false` en cualquier archivo; ningún archivo puede activarla de nuevo | Remoto, escritorio y notificaciones | Cualquier archivo |663| [`enableArtifact`](#enableartifact) | Desactive la [herramienta Artifact](/docs/es/artifacts) con un `false` en cualquier archivo; ningún archivo puede activarla de nuevo | Remoto, escritorio y notificaciones | Cualquier archivo |

664| [`enabledMcpjsonServers`](#enabledmcpjsonservers) | Apruebe servidores específicos del [`.mcp.json`](/docs/es/mcp#project-server-approvals-and-workspace-trust) de un proyecto | MCP | Cualquier archivo |664| [`enabledMcpjsonServers`](#enabledmcpjsonservers) | Apruebe servidores específicos del [`.mcp.json`](/docs/es/mcp#project-server-approvals-and-workspace-trust) de un proyecto | MCP | Cualquier archivo |

665| [`enabledPlugins`](#enabledplugins) | Active o desactive [plugins](/docs/es/plugins) individuales por alcance | Plugins y skills | Cualquier archivo |665| [`enabledPlugins`](#enabledplugins) | Active o desactive [plugins](/docs/es/plugins/overview) individuales por alcance | Plugins y skills | Cualquier archivo |

666| [`enableWorkflows`](#enableworkflows) | Active o desactive los [flujos de trabajo dinámicos](/docs/es/workflows) contra el predeterminado de su plan | Hooks y automatización | Cualquier archivo |666| [`enableWorkflows`](#enableworkflows) | Active o desactive los [flujos de trabajo dinámicos](/docs/es/workflows) contra el predeterminado de su plan | Hooks y automatización | Cualquier archivo |

667| [`enforceAvailableModels`](#enforceavailablemodels) | Mantenga la [opción Predeterminada de `/model`](/docs/es/model-config#enforce-the-allowlist-for-the-default-model) dentro de su lista de permitidos `availableModels` | Modelo y respuestas | Cualquier archivo |667| [`enforceAvailableModels`](#enforceavailablemodels) | Mantenga la [opción Predeterminada de `/model`](/docs/es/model-config#enforce-the-allowlist-for-the-default-model) dentro de su lista de permitidos `availableModels` | Modelo y respuestas | Cualquier archivo |

668| [`env`](#env) | Establezca [variables de entorno](/docs/es/env-vars#in-settings-files) para cada sesión y sus subprocesos | Memoria y contexto | Cualquier archivo |668| [`env`](#env) | Establezca [variables de entorno](/docs/es/env-vars#in-settings-files) para cada sesión y sus subprocesos | Memoria y contexto | Cualquier archivo |

669| [`externalEditorContext`](#externaleditorcontext) | Muestre la última respuesta de Claude como comentarios cuando presione [Ctrl+G](/docs/es/interactive-mode#general-controls) para editar | Configuración global | Configuración global |669| [`externalEditorContext`](#externaleditorcontext) | Muestre la última respuesta de Claude como comentarios cuando presione [Ctrl+G](/docs/es/interactive-mode#general-controls) para editar | Configuración global | Configuración global |

670| [`extraKnownMarketplaces`](#extraknownmarketplaces) | Registre [marketplaces](/docs/es/plugin-marketplaces) para un repositorio u organización | Plugins y skills | Cualquier archivo |670| [`extraKnownMarketplaces`](#extraknownmarketplaces) | Registre [marketplaces](/docs/es/plugins/overview) para un repositorio u organización | Plugins y skills | Cualquier archivo |

671| [`fallbackModel`](#fallbackmodel) | Nombre [modelos de respaldo](/docs/es/model-config#fallback-model-chains) para cuando el primario está sobrecargado | Modelo y respuestas | Cualquier archivo |671| [`fallbackModel`](#fallbackmodel) | Nombre [modelos de respaldo](/docs/es/model-config#fallback-model-chains) para cuando el primario está sobrecargado | Modelo y respuestas | Cualquier archivo |

672| [`fastMode`](#fastmode) | Active el [modo rápido](/docs/es/fast-mode) para sesiones donde está disponible | Modelo y respuestas | Cualquier archivo |672| [`fastMode`](#fastmode) | Active el [modo rápido](/docs/es/fast-mode) para sesiones donde está disponible | Modelo y respuestas | Cualquier archivo |

673| [`fastModePerSessionOptIn`](#fastmodepersessionoptin) | Requiera que las personas activen el [modo rápido](/docs/es/fast-mode) en cada sesión | Modelo y respuestas | Cualquier archivo |673| [`fastModePerSessionOptIn`](#fastmodepersessionoptin) | Requiera que las personas activen el [modo rápido](/docs/es/fast-mode) en cada sesión | Modelo y respuestas | Cualquier archivo |


712| [`permissions.deny`](#permissions-deny) | Bloquee [usos de herramientas](/docs/es/permissions#permission-rule-syntax) enumerados, incluidas lecturas de archivos que contienen secretos | Configuración de permisos | Cualquier archivo |712| [`permissions.deny`](#permissions-deny) | Bloquee [usos de herramientas](/docs/es/permissions#permission-rule-syntax) enumerados, incluidas lecturas de archivos que contienen secretos | Configuración de permisos | Cualquier archivo |

713| [`permissions.disableBypassPermissionsMode`](#permissions-disablebypasspermissionsmode) | Impida que alguien entre en el [modo bypassPermissions](/docs/es/permission-modes#skip-all-checks-with-bypasspermissions-mode) | Configuración de permisos | Cualquier archivo |713| [`permissions.disableBypassPermissionsMode`](#permissions-disablebypasspermissionsmode) | Impida que alguien entre en el [modo bypassPermissions](/docs/es/permission-modes#skip-all-checks-with-bypasspermissions-mode) | Configuración de permisos | Cualquier archivo |

714| [`plansDirectory`](#plansdirectory) | Elija dónde [Plan Mode](/docs/es/permission-modes#analyze-before-you-edit-with-plan-mode) escribe archivos de plan | Memoria y contexto | Cualquier archivo |714| [`plansDirectory`](#plansdirectory) | Elija dónde [Plan Mode](/docs/es/permission-modes#analyze-before-you-edit-with-plan-mode) escribe archivos de plan | Memoria y contexto | Cualquier archivo |

715| [`pluginConfigs`](#pluginconfigs) | Almacene las respuestas que dio al diálogo de configuración de un [plugin](/docs/es/plugins) | Plugins y skills | Usuario o administrado |715| [`pluginConfigs`](#pluginconfigs) | Almacene las respuestas que dio al diálogo de configuración de un [plugin](/docs/es/plugins/overview) | Plugins y skills | Usuario o administrado |

716| [`pluginSuggestionMarketplaces`](#pluginsuggestionmarketplaces) | Elija qué [marketplaces](/docs/es/plugin-marketplaces#managed-marketplace-restrictions) pueden mostrar sugerencias de instalación de plugins en `/plugin` | Plugins y skills | Administrado |716| [`pluginSuggestionMarketplaces`](#pluginsuggestionmarketplaces) | Elija qué [marketplaces](/docs/es/plugins/overview) pueden mostrar sugerencias de instalación de plugins en `/plugin` | Plugins y skills | Administrado |

717| [`pluginTrustMessage`](#plugintrustmessage) | Agregue su propio texto a la [advertencia de confianza](/docs/es/plugins) del plugin | Plugins y skills | Administrado |717| [`pluginTrustMessage`](#plugintrustmessage) | Agregue su propio texto a la [advertencia de confianza](/docs/es/plugins/overview) del plugin | Plugins y skills | Administrado |

718| [`policyHelper`](#policyhelper) | Ejecute un ejecutable que calcule [configuración administrada](/docs/es/managed-settings#compute-the-policy-with-a-helper-program) al inicio | Configuración empresarial y administrada | Administrado |718| [`policyHelper`](#policyhelper) | Ejecute un ejecutable que calcule [configuración administrada](/docs/es/managed-settings#compute-the-policy-with-a-helper-program) al inicio | Configuración empresarial y administrada | Administrado |

719| [`policyHelper.path`](#policyhelper-path) | Nombre el [ejecutable auxiliar](/docs/es/managed-settings#compute-the-policy-with-a-helper-program) que ejecuta Claude Code | Configuración empresarial y administrada | Administrado |719| [`policyHelper.path`](#policyhelper-path) | Nombre el [ejecutable auxiliar](/docs/es/managed-settings#compute-the-policy-with-a-helper-program) que ejecuta Claude Code | Configuración empresarial y administrada | Administrado |

720| [`policyHelper.refreshIntervalMs`](#policyhelper-refreshintervalms) | Vuelva a ejecutar el [auxiliar](/docs/es/managed-settings#compute-the-policy-with-a-helper-program) en segundo plano en un intervalo | Configuración empresarial y administrada | Administrado |720| [`policyHelper.refreshIntervalMs`](#policyhelper-refreshintervalms) | Vuelva a ejecutar el [auxiliar](/docs/es/managed-settings#compute-the-policy-with-a-helper-program) en segundo plano en un intervalo | Configuración empresarial y administrada | Administrado |


785| [`sshConfigs`](#sshconfigs) | Agregue [conexiones SSH](/docs/es/desktop#pre-configure-ssh-connections-for-your-team) al menú desplegable del entorno de Desktop | Remoto, escritorio y notificaciones | Usuario o administrado |785| [`sshConfigs`](#sshconfigs) | Agregue [conexiones SSH](/docs/es/desktop#pre-configure-ssh-connections-for-your-team) al menú desplegable del entorno de Desktop | Remoto, escritorio y notificaciones | Usuario o administrado |

786| [`sshHostAllowlist`](#sshhostallowlist) | Limite qué hosts pueden alcanzar las [sesiones SSH de Desktop](/docs/es/desktop#restrict-which-ssh-hosts-users-can-connect-to) | Remoto, escritorio y notificaciones | Administrado |786| [`sshHostAllowlist`](#sshhostallowlist) | Limite qué hosts pueden alcanzar las [sesiones SSH de Desktop](/docs/es/desktop#restrict-which-ssh-hosts-users-can-connect-to) | Remoto, escritorio y notificaciones | Administrado |

787| [`statusLine`](#statusline) | Ejecute su propio comando para representar una [línea de estado](/docs/es/statusline) debajo del indicador | Interfaz y terminal | Cualquier archivo |787| [`statusLine`](#statusline) | Ejecute su propio comando para representar una [línea de estado](/docs/es/statusline) debajo del indicador | Interfaz y terminal | Cualquier archivo |

788| [`strictKnownMarketplaces`](#strictknownmarketplaces) | Enumere los [marketplace](/docs/es/plugin-marketplaces) que los usuarios pueden agregar e instalar | Plugins y skills | Administrado |788| [`strictKnownMarketplaces`](#strictknownmarketplaces) | Enumere los [marketplace](/docs/es/plugins/overview) que los usuarios pueden agregar e instalar | Plugins y skills | Administrado |

789| [`strictPluginOnlyCustomization`](#strictpluginonlycustomization) | Bloquee [skills](/docs/es/skills), [agentes](/docs/es/sub-agents), [hooks](/docs/es/hooks), y [servidores MCP](/docs/es/mcp) de fuentes de usuario y proyecto | Plugins y skills | Administrado |789| [`strictPluginOnlyCustomization`](#strictpluginonlycustomization) | Bloquee [skills](/docs/es/skills), [agentes](/docs/es/sub-agents), [hooks](/docs/es/hooks), y [servidores MCP](/docs/es/mcp) de fuentes de usuario y proyecto | Plugins y skills | Administrado |

790| [`strictPluginOnlyCustomization.agents`](#strictpluginonlycustomization-agents) | Bloquee [agentes](/docs/es/sub-agents) a fuentes de plugin y administradas | Plugins y skills | Administrado |790| [`strictPluginOnlyCustomization.agents`](#strictpluginonlycustomization-agents) | Bloquee [agentes](/docs/es/sub-agents) a fuentes de plugin y administradas | Plugins y skills | Administrado |

791| [`strictPluginOnlyCustomization.hooks`](#strictpluginonlycustomization-hooks) | Bloquee [hooks](/docs/es/hooks) a fuentes de plugin y administradas | Plugins y skills | Administrado |791| [`strictPluginOnlyCustomization.hooks`](#strictpluginonlycustomization-hooks) | Bloquee [hooks](/docs/es/hooks) a fuentes de plugin y administradas | Plugins y skills | Administrado |


794| [`subagentPromptCacheTtl`](#subagentpromptcachettl) | Elija la [duración del caché de indicación](/docs/es/prompt-caching#cache-lifetime) para subagentes y otras solicitudes fuera de la conversación principal | Modelo y respuestas | Cualquier archivo |794| [`subagentPromptCacheTtl`](#subagentpromptcachettl) | Elija la [duración del caché de indicación](/docs/es/prompt-caching#cache-lifetime) para subagentes y otras solicitudes fuera de la conversación principal | Modelo y respuestas | Cualquier archivo |

795| [`subagentStatusLine`](#subagentstatusline) | Reescriba filas en la [pantalla de tareas del subagente](/docs/es/sub-agents) con su propio comando | Interfaz y terminal | Cualquier archivo |795| [`subagentStatusLine`](#subagentstatusline) | Reescriba filas en la [pantalla de tareas del subagente](/docs/es/sub-agents) con su propio comando | Interfaz y terminal | Cualquier archivo |

796| [`switchModelsOnFlag`](#switchmodelsonflag) | Cambie modelos automáticamente o pause cuando un [clasificador de seguridad](/docs/es/model-config#ask-before-switching) marca una solicitud | Modelo y respuestas | Cualquier archivo |796| [`switchModelsOnFlag`](#switchmodelsonflag) | Cambie modelos automáticamente o pause cuando un [clasificador de seguridad](/docs/es/model-config#ask-before-switching) marca una solicitud | Modelo y respuestas | Cualquier archivo |

797| [`syncClaudeAiPlugins`](#syncclaudeaiplugins) | Deje de cargar los [plugins habilitados en su cuenta de claude.ai](/docs/es/plugins-reference#synced-plugins) y deje de descargar nuevos | Plugins y skills | Usuario, local o administrado |797| [`syncClaudeAiPlugins`](#syncclaudeaiplugins) | Deje de cargar los [plugins habilitados en su cuenta de claude.ai](/docs/es/plugins/overview) y deje de descargar nuevos | Plugins y skills | Usuario, local o administrado |

798| [`syncClaudeAiSkills`](#syncclaudeaiskills) | Deje de cargar los [skills habilitados en su cuenta de claude.ai](/docs/es/skills#how-synced-skills-behave) y deje de descargar nuevos | Plugins y skills | Usuario, local o administrado |798| [`syncClaudeAiSkills`](#syncclaudeaiskills) | Deje de cargar los [skills habilitados en su cuenta de claude.ai](/docs/es/skills#how-synced-skills-behave) y deje de descargar nuevos | Plugins y skills | Usuario, local o administrado |

799| [`syntaxHighlightingDisabled`](#syntaxhighlightingdisabled) | Desactive el resaltado de sintaxis en diffs y bloques de código | Interfaz y terminal | Cualquier archivo |799| [`syntaxHighlightingDisabled`](#syntaxhighlightingdisabled) | Desactive el resaltado de sintaxis en diffs y bloques de código | Interfaz y terminal | Cualquier archivo |

800| [`taskOutputMaxChars`](#taskoutputmaxchars) | Removido en v2.1.277, junto con la herramienta `TaskOutput` que dimensionaba | Memoria y contexto | Cualquier archivo |800| [`taskOutputMaxChars`](#taskoutputmaxchars) | Removido en v2.1.277, junto con la herramienta `TaskOutput` que dimensionaba | Memoria y contexto | Cualquier archivo |


2256 `sandbox.credentials`2256 `sandbox.credentials`

2257</h3>2257</h3>

2258 2258 

2259Declare los archivos de credenciales y variables de entorno para [proteger de comandos en sandbox](/docs/es/sandboxing#protect-credentials). Cada entrada nombra un archivo `path` o una variable `name` y un `mode`: `deny` oculta la credencial dentro del sandbox, y `mask` muestra a los comandos en sandbox un marcador de posición mientras el [proxy de sandbox](/docs/es/sandboxing#mask-credentials) sustituye el valor real en solicitudes salientes. Claude Code protege solo las entradas que enumera; no hay una lista de negación de credenciales integrada. Requiere Claude Code v2.1.187 o posterior.2259Declare los archivos de credenciales y variables de entorno para [proteger de comandos en sandbox](/docs/es/sandboxing#protect-credentials). Cada entrada nombra un archivo `path` o una variable `name` y un `mode`: `deny` oculta la credencial dentro del sandbox, y `mask` muestra a los comandos en sandbox un marcador de posición mientras el [proxy de sandbox](/docs/es/sandboxing#mask-credentials) sustituye el valor real en solicitudes salientes. Claude Code protege solo las entradas que enumera; no hay una lista de negación de credenciales integrada.

2260 2260 

2261* **Scope**: [`Any file`](#scopes). Claude Code honra entradas `mask`, `allowPlaintextInject`, `awsPairs` y `sigv4` solo de configuración de usuario, configuración administrada y la bandera `--settings`.2261* **Scope**: [`Any file`](#scopes). Claude Code honra entradas `mask`, `allowPlaintextInject`, `awsPairs` y `sigv4` solo de configuración de usuario, configuración administrada y la bandera `--settings`.

2262* **Type**: object con `files`, `envVars`, `allowPlaintextInject`, `awsPairs` y `sigv4`2262* **Type**: object con `files`, `envVars`, `allowPlaintextInject`, `awsPairs` y `sigv4`


2275}2275}

2276```2276```

2277 2277 

2278La protección de archivo `deny` es parte de la capa del sistema de archivos, por lo que no se aplica cuando [deshabilita el aislamiento del sistema de archivos](/docs/es/sandboxing#disable-filesystem-isolation); la protección de variable de entorno aún lo hace. Requiere Claude Code v2.1.187 o posterior.2278La protección de archivo `deny` es parte de la capa del sistema de archivos, por lo que no se aplica cuando [deshabilita el aislamiento del sistema de archivos](/docs/es/sandboxing#disable-filesystem-isolation); la protección de variable de entorno aún lo hace.

2279 2279 

2280<h4 id="invalid-credential-entries-in-managed-settings">2280<h4 id="invalid-credential-entries-in-managed-settings">

2281 Entradas de credenciales inválidas en configuración administrada2281 Entradas de credenciales inválidas en configuración administrada


2293 `sandbox.credentials.files`2293 `sandbox.credentials.files`

2294</h3>2294</h3>

2295 2295 

2296Proteja archivos o directorios de credenciales de comandos en sandbox. Con `"mode": "deny"`, Claude Code bloquea las lecturas de la ruta dentro del sandbox, el mismo bloqueo de lectura que [`sandbox.filesystem.denyRead`](#sandbox-filesystem-denyread). Con `"mode": "mask"`, los comandos en sandbox en Linux y WSL2 leen una copia centinela del archivo, y el proxy de sandbox sustituye el valor real en solicitudes salientes a `injectHosts` de esa entrada; en macOS el archivo es ilegible dentro del sandbox en su lugar. Requiere Claude Code v2.1.187 o posterior, y `"mode": "mask"` requiere v2.1.221 o posterior.2296Proteja archivos o directorios de credenciales de comandos en sandbox. Con `"mode": "deny"`, Claude Code bloquea las lecturas de la ruta dentro del sandbox, el mismo bloqueo de lectura que [`sandbox.filesystem.denyRead`](#sandbox-filesystem-denyread). Con `"mode": "mask"`, los comandos en sandbox en Linux y WSL2 leen una copia centinela del archivo, y el proxy de sandbox sustituye el valor real en solicitudes salientes a `injectHosts` de esa entrada; en macOS el archivo es ilegible dentro del sandbox en su lugar. `"mode": "mask"` requiere Claude Code v2.1.221 o posterior.

2297 2297 

2298* **Scope**: [`Any file`](#scopes). Claude Code descarta entradas `mask` de `.claude/settings.json` de proyecto y `.claude/settings.local.json` local.2298* **Scope**: [`Any file`](#scopes). Claude Code descarta entradas `mask` de `.claude/settings.json` de proyecto y `.claude/settings.local.json` local.

2299* **Type**: array de objetos, cada uno con `path` y un `mode` de `"deny"` o `"mask"`, más los [campos de máscara opcionales para archivos](#mask-fields-for-files)2299* **Type**: array de objetos, cada uno con `path` y un `mode` de `"deny"` o `"mask"`, más los [campos de máscara opcionales para archivos](#mask-fields-for-files)


2314}2314}

2315```2315```

2316 2316 

2317Las rutas usan los mismos [prefijos](#sandbox-path-prefixes) que la configuración `sandbox.filesystem.*`, y Claude Code fusiona las matrices de todos los ámbitos de configuración que carga la sesión. [Protect credentials](/docs/es/sandboxing#protect-credentials) cubre lo que aún se aplica de fuentes que excluye con `--setting-sources`. Requiere Claude Code v2.1.187 o posterior; las entradas `mask` requieren v2.1.221 o posterior.2317Las rutas usan los mismos [prefijos](#sandbox-path-prefixes) que la configuración `sandbox.filesystem.*`, y Claude Code fusiona las matrices de todos los ámbitos de configuración que carga la sesión. [Protect credentials](/docs/es/sandboxing#protect-credentials) cubre lo que aún se aplica de fuentes que excluye con `--setting-sources`. `mask` entries require Claude Code v2.1.221 or later.

2318 2318 

2319La sustitución `mask` se ejecuta solo a través del proxy de sandbox, así que establezca [`sandbox.network.tlsTerminate`](#sandbox-network-tlsterminate), o [`allowPlaintextInject`](#sandbox-credentials-allowplaintextinject) para redes de prueba HTTP simple. `mask` se aplica a un único archivo, así que enumere cada archivo de credenciales individualmente. Claude Code acepta pero ignora los campos `mask` en una entrada `deny`. [Mask credential files](/docs/es/sandboxing#mask-credential-files) cubre qué fuentes de configuración se honran y cuándo una entrada vuelve a `deny`.2319La sustitución `mask` se ejecuta solo a través del proxy de sandbox, así que establezca [`sandbox.network.tlsTerminate`](#sandbox-network-tlsterminate), o [`allowPlaintextInject`](#sandbox-credentials-allowplaintextinject) para redes de prueba HTTP simple. `mask` se aplica a un único archivo, así que enumere cada archivo de credenciales individualmente. Claude Code acepta pero ignora los campos `mask` en una entrada `deny`. [Mask credential files](/docs/es/sandboxing#mask-credential-files) cubre qué fuentes de configuración se honran y cuándo una entrada vuelve a `deny`.

2320 2320 


2370 `sandbox.credentials.envVars`2370 `sandbox.credentials.envVars`

2371</h3>2371</h3>

2372 2372 

2373Proteja variables de entorno de comandos en sandbox. Con `"mode": "deny"`, Claude Code elimina la variable del entorno de comandos en sandbox. Con `"mode": "mask"`, los comandos en sandbox ven un valor centinela por sesión, y el proxy de sandbox sustituye el valor real en solicitudes salientes a `injectHosts` de esa entrada, para que herramientas como `gh` y `npm` sigan autenticándose sin nunca tener la credencial real. Requiere Claude Code v2.1.187 o posterior, y `"mode": "mask"` requiere v2.1.199 o posterior.2373Proteja variables de entorno de comandos en sandbox. Con `"mode": "deny"`, Claude Code elimina la variable del entorno de comandos en sandbox. Con `"mode": "mask"`, los comandos en sandbox ven un valor centinela por sesión, y el proxy de sandbox sustituye el valor real en solicitudes salientes a `injectHosts` de esa entrada, para que herramientas como `gh` y `npm` sigan autenticándose sin nunca tener la credencial real. `"mode": "mask"` requiere Claude Code v2.1.199 o posterior.

2374 2374 

2375* **Scope**: [`Any file`](#scopes). Claude Code descarta entradas `mask` de `.claude/settings.json` de proyecto y `.claude/settings.local.json` local.2375* **Scope**: [`Any file`](#scopes). Claude Code descarta entradas `mask` de `.claude/settings.json` de proyecto y `.claude/settings.local.json` local.

2376* **Type**: array de objetos, cada uno con `name` y un `mode` de `"deny"` o `"mask"`, más los [campos de máscara opcionales para variables de entorno](#mask-fields-for-environment-variables)2376* **Type**: array de objetos, cada uno con `name` y un `mode` de `"deny"` o `"mask"`, más los [campos de máscara opcionales para variables de entorno](#mask-fields-for-environment-variables)


2391}2391}

2392```2392```

2393 2393 

2394El `name` debe comenzar con una letra o guion bajo y contener solo letras, dígitos y guiones bajos. Claude Code fusiona las matrices de todos los ámbitos de configuración que carga la sesión, y aplica `deny` cuando la misma variable aparece con ambos modos. [Protect credentials](/docs/es/sandboxing#protect-credentials) cubre lo que aún se aplica de fuentes que excluye con `--setting-sources`. Requiere Claude Code v2.1.187 o posterior; las entradas `mask` requieren v2.1.199 o posterior.2394El `name` debe comenzar con una letra o guion bajo y contener solo letras, dígitos y guiones bajos. Claude Code fusiona las matrices de todos los ámbitos de configuración que carga la sesión, y aplica `deny` cuando la misma variable aparece con ambos modos. [Protect credentials](/docs/es/sandboxing#protect-credentials) cubre lo que aún se aplica de fuentes que excluye con `--setting-sources`. `mask` entries require Claude Code v2.1.199 or later.

2395 2395 

2396La sustitución `mask` se ejecuta solo a través del proxy de sandbox, así que establezca [`sandbox.network.tlsTerminate`](#sandbox-network-tlsterminate), o [`allowPlaintextInject`](#sandbox-credentials-allowplaintextinject) para redes de prueba HTTP simple; consulte [Mask environment variables](/docs/es/sandboxing#mask-environment-variables). Claude Code acepta pero ignora los campos `mask` en una entrada `deny`.2396La sustitución `mask` se ejecuta solo a través del proxy de sandbox, así que establezca [`sandbox.network.tlsTerminate`](#sandbox-network-tlsterminate), o [`allowPlaintextInject`](#sandbox-credentials-allowplaintextinject) para redes de prueba HTTP simple; consulte [Mask environment variables](/docs/es/sandboxing#mask-environment-variables). Claude Code acepta pero ignora los campos `mask` en una entrada `deny`.

2397 2397 


2954 `env`2954 `env`

2955</h3>2955</h3>

2956 2956 

2957Establezca variables de entorno para cada sesión y para los subprocesos que Claude Code inicia desde ella. Cualquier variable en la [referencia de variables de entorno](/docs/es/env-vars) puede ir aquí, que es cómo se aplica una a cada sesión o se implementa en su equipo.2957Establezca variables de entorno para cada sesión y para los subprocesos que Claude Code inicia desde ella. La mayoría de variables en la [referencia de variables de entorno](/docs/es/env-vars) pueden ir aquí, que es cómo se aplica una a cada sesión o se implementa en su equipo. La configuración del proyecto y local no puede establecer [algunas de ellas](#variables-claude-code-ignores-in-env).

2958 2958 

2959* **Scope**: [`Any file`](#scopes)2959* **Scope**: [`Any file`](#scopes)

2960* **Type**: objeto que asigna nombres de variables a valores de string2960* **Type**: objeto que asigna nombres de variables a valores de string


2975 Cómo interactúan los valores de `env` con su shell2975 Cómo interactúan los valores de `env` con su shell

2976</h4>2976</h4>

2977 2977 

2978* Un valor aquí sobrescribe la misma variable exportada en su shell, y cuando más de un archivo de configuración establece una variable, se aplica la [más alta precedencia](/docs/es/settings#settings-precedence).2978* Un valor aquí sobrescribe la misma variable exportada en su shell, y cuando más de un archivo de configuración establece una variable, se aplica la [más alta precedencia](/docs/es/settings#settings-precedence). [Variables que Claude Code ignora en `env`](#variables-claude-code-ignores-in-env) enumera las excepciones para la configuración del proyecto y local.

2979* Para cancelar una exportación de shell, establezca la variable en `""`. Claude Code trata un valor vacío como sin establecer para la selección de proveedor, y los subprocesos heredan el valor vacío.2979* Para cancelar una exportación de shell, establezca la variable en `""`. Claude Code trata un valor vacío como sin establecer para la selección de proveedor, y los subprocesos heredan el valor vacío.

2980* `NO_COLOR` y `FORCE_COLOR` establecidos aquí llegan solo a los subprocesos. Para cambiar los colores de la interfaz propia de Claude Code, establézcalos en su shell antes de lanzar `claude`.2980* `NO_COLOR` y `FORCE_COLOR` establecidos aquí llegan solo a los subprocesos. Para cambiar los colores de la interfaz propia de Claude Code, establézcalos en su shell antes de lanzar `claude`.

2981* Los valores aquí son texto sin formato en el archivo de configuración y llegan a cada subproceso que Claude Code inicia. Para un token portador OTLP que rota, use [`otelHeadersHelper`](#otelheadershelper); para credenciales de API, use [`apiKeyHelper`](#apikeyhelper).2981* Los valores aquí son texto sin formato en el archivo de configuración y llegan a cada subproceso que Claude Code inicia. Para un token portador OTLP que rota, use [`otelHeadersHelper`](#otelheadershelper); para credenciales de API, use [`apiKeyHelper`](#apikeyhelper).


2986 2986 

2987* Desde la configuración del usuario, `--settings` y configuración administrada: al inicio, y nuevamente en la sesión en ejecución cuando un cambio guardado altera el `env` fusionado.2987* Desde la configuración del usuario, `--settings` y configuración administrada: al inicio, y nuevamente en la sesión en ejecución cuando un cambio guardado altera el `env` fusionado.

2988* Desde la configuración del proyecto y local: después de confiar en el espacio de trabajo, o al inicio en modo `-p`, que nunca muestra el diálogo de confianza, y nuevamente cuando un cambio guardado altera el `env` fusionado.2988* Desde la configuración del proyecto y local: después de confiar en el espacio de trabajo, o al inicio en modo `-p`, que nunca muestra el diálogo de confianza, y nuevamente cuando un cambio guardado altera el `env` fusionado.

2989* Variables que Claude Code clasifica como seguras, como selección de modelo, tiempos de espera y límites, alternadores de características y configuración de telemetría: al inicio desde cada archivo de configuración, aparte de las [variables que la configuración del proyecto y local no puede establecer](#variables-claude-code-ignores-in-env).2989* Variables que Claude Code clasifica como seguras, como selección de modelo, tiempos de espera y límites, y alternadores de características: al inicio desde cada archivo de configuración, aparte de las [variables que la configuración del proyecto y local no puede establecer](#variables-claude-code-ignores-in-env).

2990* Después de [mover la sesión con `/cd`](/docs/es/permissions#move-the-session-to-another-directory) en v2.1.246 o posterior: los valores de `env` del proyecto y local del nuevo directorio, además de los del directorio anterior.2990* Después de [mover la sesión con `/cd`](/docs/es/permissions#move-the-session-to-another-directory) en v2.1.246 o posterior: los valores de `env` del proyecto y local del nuevo directorio, además de los del directorio anterior.

2991 2991 

2992<h4 id="variables-claude-code-ignores-in-env">2992<h4 id="variables-claude-code-ignores-in-env">


2997 2997 

2998 * Variables que eligen dónde Claude Code almacena o escribe sus propios archivos: `CLAUDE_CONFIG_DIR`, `CLAUDE_CODE_TMPDIR` y las variables de directorio del sistema operativo como `HOME`, `TMPDIR`, `TMP`, `TEMP` y la familia `XDG_*`.2998 * Variables que eligen dónde Claude Code almacena o escribe sus propios archivos: `CLAUDE_CONFIG_DIR`, `CLAUDE_CODE_TMPDIR` y las variables de directorio del sistema operativo como `HOME`, `TMPDIR`, `TMP`, `TEMP` y la familia `XDG_*`.

2999 * Variables que exportan contenido de sesión: [`OTEL_LOG_RAW_API_BODIES`](/docs/es/env-vars#variables) y el par de rastreo beta detallado `ENABLE_BETA_TRACING_DETAILED` y `BETA_TRACING_ENDPOINT`.2999 * Variables que exportan contenido de sesión: [`OTEL_LOG_RAW_API_BODIES`](/docs/es/env-vars#variables) y el par de rastreo beta detallado `ENABLE_BETA_TRACING_DETAILED` y `BETA_TRACING_ENDPOINT`.

3000 * Las variables del exportador [OpenTelemetry](/docs/es/monitoring-usage) que activan la telemetría, eligen dónde va, o eligen qué contenido captura:

3001 

3002 * `CLAUDE_CODE_ENABLE_TELEMETRY`, más el par de telemetría mejorada beta `CLAUDE_CODE_ENHANCED_TELEMETRY_BETA` y `ENABLE_ENHANCED_TELEMETRY_BETA`

3003 * Los selectores de exportador `OTEL_LOGS_EXPORTER`, `OTEL_METRICS_EXPORTER` y `OTEL_TRACES_EXPORTER`

3004 * Las variables de contenido `OTEL_LOG_USER_PROMPTS`, `OTEL_LOG_ASSISTANT_RESPONSES`, `OTEL_LOG_TOOL_CONTENT` y `OTEL_LOG_TOOL_DETAILS`

3005 * Variables `OTEL_EXPORTER_OTLP_*` cuyos nombres terminan en `_ENDPOINT`, `_HEADERS`, `_PROTOCOL`, `_CERTIFICATE`, `_CLIENT_KEY` o `_INSECURE`, en las formas genérica y por señal, como `OTEL_EXPORTER_OTLP_ENDPOINT` y `OTEL_EXPORTER_OTLP_METRICS_HEADERS`

3006 * `OTEL_EXPORTER_PROMETHEUS_HOST` y `OTEL_EXPORTER_PROMETHEUS_PORT`

3007 

3008 Solo estos valores aún se aplican desde la configuración del proyecto y local, porque apagan algo: `none` para los tres selectores de exportador, y un valor apagado como `0` para `OTEL_LOG_USER_PROMPTS`, `OTEL_LOG_TOOL_CONTENT` y `OTEL_LOG_TOOL_DETAILS`. Tal valor anula la misma variable en su configuración del usuario, pero no una que el entorno desde el que inicia Claude Code, un archivo `--settings` o la configuración administrada establece.

3009 

3010 Cuando un archivo de configuración del proyecto o local establece una variable en este grupo, una sesión interactiva local muestra un aviso al inicio. Ejecute `/status` o `claude doctor` para ver cuáles ignoró Claude Code y cuáles apagaron la telemetría; ambos enumeran nombres, nunca valores. Una ejecución no interactiva con `-p` o una sesión del Agent SDK no muestra aviso, así que verifique que su recopilador aún reciba datos después de actualizar. Si no lo hace, establezca las variables en su configuración del usuario, configuración administrada, el entorno del trabajo, o un archivo que pase con `--settings`.

3011 

3012 Ignorar este grupo en la configuración del proyecto y local requiere Claude Code v2.1.282 o posterior.

3000 * Variables que cambian cómo Claude Code se inicia o se sincroniza, como `CLAUDE_CODE_PROCESS_WRAPPER`, `CLAUDE_CODE_SYNC_SKILLS`, `CLAUDE_CODE_SYNC_PLUGINS`, `CLAUDE_CODE_PLUGIN_CACHE_DIR` y `CLAUDE_CODE_PLUGIN_SEED_DIR`.3013 * Variables que cambian cómo Claude Code se inicia o se sincroniza, como `CLAUDE_CODE_PROCESS_WRAPPER`, `CLAUDE_CODE_SYNC_SKILLS`, `CLAUDE_CODE_SYNC_PLUGINS`, `CLAUDE_CODE_PLUGIN_CACHE_DIR` y `CLAUDE_CODE_PLUGIN_SEED_DIR`.

3001 3014 

3002 Antes de v2.1.251, la configuración del proyecto y local podía establecer cada variable que esta lista nombra excepto `HOME`, `XDG_CONFIG_HOME` y las variables que cambian cómo Claude Code se inicia o se sincroniza.3015 Antes de v2.1.251, la configuración del proyecto y local podía establecer las variables en esta lista que eligen dónde Claude Code escribe sus archivos o que exportan contenido de sesión, excepto `HOME` y `XDG_CONFIG_HOME`.

3003* Variables de identidad que los entornos de alojamiento de Claude Code poseen, como `CLAUDE_CODE_REMOTE` y `CLAUDE_CODE_ACCOUNT_UUID`, se ignoran de cada archivo.3016* Variables de identidad que los entornos de alojamiento de Claude Code poseen, como `CLAUDE_CODE_REMOTE` y `CLAUDE_CODE_ACCOUNT_UUID`, se ignoran de cada archivo.

3004* [`CLAUDE_CODE_MESSAGING_SOCKET` y `CLAUDE_CODE_MESSAGING_TOKEN`](/docs/es/env-vars#variables), que Claude Code exporta a sí mismo, se ignoran de cada archivo. Ignorar la variable de socket requiere Claude Code v2.1.224 o posterior, e ignorar el token requiere v2.1.228 o posterior.3017* [`CLAUDE_CODE_MESSAGING_SOCKET` y `CLAUDE_CODE_MESSAGING_TOKEN`](/docs/es/env-vars#variables), que Claude Code exporta a sí mismo, se ignoran de cada archivo. Ignorar la variable de socket requiere Claude Code v2.1.224 o posterior, e ignorar el token requiere v2.1.228 o posterior.

3005* [`CLAUDE_CODE_PROJECT_DIR_NAME`](/docs/es/sessions#name-the-project-directory-yourself), que Claude Code lee solo del entorno de lanzamiento, se ignora de cada archivo; requiere v2.1.234 o posterior.3018* [`CLAUDE_CODE_PROJECT_DIR_NAME`](/docs/es/sessions#name-the-project-directory-yourself), que Claude Code lee solo del entorno de lanzamiento, se ignora de cada archivo; requiere v2.1.234 o posterior.


3030 `plansDirectory`3043 `plansDirectory`

3031</h3>3044</h3>

3032 3045 

3033Elija dónde Claude Code almacena los archivos de plan que escribe en [plan mode](/docs/es/permission-modes#analyze-before-you-edit-with-plan-mode). Claude Code resuelve la ruta relativa a la raíz del proyecto y mantiene el predeterminado cuando la ruta se resuelve fuera de ella.3046Elija dónde Claude Code almacena los archivos de plan que escribe en [Plan Mode](/docs/es/permission-modes#analyze-before-you-edit-with-plan-mode). Claude Code resuelve la ruta relativa a la raíz del proyecto y mantiene el predeterminado cuando la ruta se resuelve fuera de ella.

3034 3047 

3035* **Scope**: [`Any file`](#scopes)3048* **Scope**: [`Any file`](#scopes)

3036* **Type**: string, una ruta relativa a la raíz del proyecto3049* **Type**: string, una ruta relativa a la raíz del proyecto


3464 `respondToBashCommands`3477 `respondToBashCommands`

3465</h3>3478</h3>

3466 3479 

3467Elige si Claude responde después de que ejecutes un comando de shell con el prefijo [`!`](/docs/es/interactive-mode#shell-mode-with-prefix) en el cuadro de entrada. De forma predeterminada, Claude Code agrega la salida del comando a la conversación y Claude responde a ella. Establece esta clave a `false` para agregar la salida al contexto sin una respuesta, para que puedas ejecutar varios comandos y preguntar sobre ellos juntos. Requiere Claude Code v2.1.186 o posterior.3480Elige si Claude responde después de que ejecutes un comando de shell con el prefijo [`!`](/docs/es/interactive-mode#shell-mode-with-prefix) en el cuadro de entrada. De forma predeterminada, Claude Code agrega la salida del comando a la conversación y Claude responde a ella. Establece esta clave a `false` para agregar la salida al contexto sin una respuesta, para que puedas ejecutar varios comandos y preguntar sobre ellos juntos.

3468 3481 

3469* **Scope**: [`Any file`](#scopes)3482* **Scope**: [`Any file`](#scopes)

3470* **Type**: Boolean3483* **Type**: Boolean


3478}3491}

3479```3492```

3480 3493 

3481Consulta [Modo de shell con prefijo `!`](/docs/es/interactive-mode#shell-mode-with-prefix). Requiere Claude Code v2.1.186 o posterior.3494Consulta [Modo de shell con prefijo `!`](/docs/es/interactive-mode#shell-mode-with-prefix).

3482 3495 

3483<h3 id="showclearcontextonplanaccept">3496<h3 id="showclearcontextonplanaccept">

3484 `showClearContextOnPlanAccept`3497 `showClearContextOnPlanAccept`


3985Personalice la atribución que Claude Code añade a los commits de git y solicitudes de extracción. Los commits obtienen un [tráiler de git](https://git-scm.com/docs/git-interpret-trailers) como `Co-Authored-By` de forma predeterminada; las descripciones de solicitudes de extracción obtienen texto sin formato. Establezca cada parte por separado con las subclaves que se indican a continuación.3998Personalice la atribución que Claude Code añade a los commits de git y solicitudes de extracción. Los commits obtienen un [tráiler de git](https://git-scm.com/docs/git-interpret-trailers) como `Co-Authored-By` de forma predeterminada; las descripciones de solicitudes de extracción obtienen texto sin formato. Establezca cada parte por separado con las subclaves que se indican a continuación.

3986 3999 

3987* **Scope**: [`Any file`](#scopes)4000* **Scope**: [`Any file`](#scopes)

3988* **Type**: object con cadenas `commit` y `pr` y un Boolean `sessionUrl`4001* **Type**: objeto con cadenas `commit` y `pr` y un Boolean `sessionUrl`, o `false` para ocultar toda la atribución. El valor `false` requiere Claude Code v2.1.281 o posterior; las versiones anteriores lo rechazan y [omiten todo el archivo de configuración del usuario, proyecto o local](/docs/es/settings#fix-a-broken-settings-file) que lo contiene

3989* **Default**: sin establecer, por lo que Claude Code utiliza la atribución estándar que se muestra en cada subclave4002* **Default**: sin establecer, por lo que Claude Code utiliza la atribución estándar que se muestra en cada subclave

3990 4003 

4004Para ocultar toda la atribución, establezca `attribution` en `false`. En un archivo de configuración que las versiones anteriores también leen, establezca [`commit`](#attribution-commit) y [`pr`](#attribution-pr) en cadenas vacías y [`sessionUrl`](#attribution-sessionurl) en `false` en su lugar.

4005 

3991Este ejemplo reemplaza la atribución del commit, elimina la atribución de la solicitud de extracción y descarta el enlace de sesión:4006Este ejemplo reemplaza la atribución del commit, elimina la atribución de la solicitud de extracción y descarta el enlace de sesión:

3992 4007 

3993```json settings.json theme={null}4008```json settings.json theme={null}


4000}4015}

4001```4016```

4002 4017 

4003Para ocultar toda la atribución, establezca [`commit`](#attribution-commit) y [`pr`](#attribution-pr) en cadenas vacías y [`sessionUrl`](#attribution-sessionurl) en `false`. Una vez que establezca `commit` o `pr`, Claude Code ignora la configuración deprecada `includeCoAuthoredBy` y utiliza su texto predeterminado para cualquiera de los dos que haya dejado sin establecer.4018Una vez que establezca `commit` o `pr`, Claude Code ignora la configuración deprecada `includeCoAuthoredBy` y utiliza su texto predeterminado para cualquiera de los dos que haya dejado sin establecer.

4004 4019 

4005Claude Code le indica a Claude que sus propias instrucciones sobre atribución, como una regla de CLAUDE.md o [memory](/docs/es/memory), tienen prioridad sobre estas líneas de commit y PR, a menos que la línea esté establecida en [managed settings](/docs/es/managed-settings).4020Claude Code le indica a Claude que sus propias instrucciones sobre atribución, como una regla de CLAUDE.md o [memory](/docs/es/memory), tienen prioridad sobre estas líneas de commit y PR, a menos que la línea esté establecida en [managed settings](/docs/es/managed-settings).

4006 4021 


4026}4041}

4027```4042```

4028 4043 

4029Para ocultar toda la atribución hoy, establezca [`attribution.commit`](#attribution-commit) y [`attribution.pr`](#attribution-pr) en cadenas vacías y [`attribution.sessionUrl`](#attribution-sessionurl) en `false`.4044Para ocultar toda la atribución, consulte [`attribution`](#attribution).

4030 4045 

4031<h3 id="includegitinstructions">4046<h3 id="includegitinstructions">

4032 `includeGitInstructions`4047 `includeGitInstructions`


4184* **Se ejecutan hooks administrados y SDK**: hooks de configuración administrada y hooks que el [Agent SDK](/docs/es/agent-sdk/overview) registra en proceso4199* **Se ejecutan hooks administrados y SDK**: hooks de configuración administrada y hooks que el [Agent SDK](/docs/es/agent-sdk/overview) registra en proceso

4185* **Se ejecutan hooks de plugins forzados a habilitarse**: hooks de plugins que su configuración administrada fuerza a habilitar a través de [`enabledPlugins`](#enabledplugins). Claude Code coincide con el ID completo `plugin@marketplace`, por lo que un plugin con el mismo nombre de un marketplace diferente permanece bloqueado. Esto le permite distribuir hooks verificados a través de un marketplace de organización mientras bloquea todo lo demás4200* **Se ejecutan hooks de plugins forzados a habilitarse**: hooks de plugins que su configuración administrada fuerza a habilitar a través de [`enabledPlugins`](#enabledplugins). Claude Code coincide con el ID completo `plugin@marketplace`, por lo que un plugin con el mismo nombre de un marketplace diferente permanece bloqueado. Esto le permite distribuir hooks verificados a través de un marketplace de organización mientras bloquea todo lo demás

4186* **Todo lo demás está bloqueado**: hooks de usuario, proyecto y locales, hooks de otros plugins y hooks declarados en frontmatter de agente4201* **Todo lo demás está bloqueado**: hooks de usuario, proyecto y locales, hooks de otros plugins y hooks declarados en frontmatter de agente

4187* **Los plugins con origen de comando están deshabilitados**: Claude Code también deshabilita plugins con un [origen `command`](/docs/es/plugin-marketplaces#command-sources), incluidos plugins forzados a habilitarse en `enabledPlugins` administrado, a menos que establezca [`disableCommandPluginSources`](#disablecommandpluginsources) explícitamente en `false`4202* **Los plugins con origen de comando están deshabilitados**: Claude Code también deshabilita plugins con un [origen `command`](/docs/es/plugins/marketplace-reference#command-plugin-source), incluidos plugins forzados a habilitarse en `enabledPlugins` administrado, a menos que establezca [`disableCommandPluginSources`](#disablecommandpluginsources) explícitamente en `false`

4188* **Los comandos `headersHelper` del marketplace están bloqueados**: Claude Code también bloquea los comandos [`headersHelper`](/docs/es/plugin-marketplaces#authenticate-archive-downloads) del marketplace a menos que [`disableCommandPluginSources`](#disablecommandpluginsources) esté explícitamente establecido en `false`, excepto para un marketplace que la configuración administrada declara. Requiere Claude Code v2.1.238 o posterior4203* **Los comandos `headersHelper` del marketplace están bloqueados**: Claude Code también bloquea los comandos [`headersHelper`](/docs/es/plugins/host-marketplace#authenticate-archive-downloads) del marketplace a menos que [`disableCommandPluginSources`](#disablecommandpluginsources) esté explícitamente establecido en `false`, excepto para un marketplace que la configuración administrada declara. Requiere Claude Code v2.1.238 o posterior

4189* **La línea de estado y la sugerencia de archivo se reducen a configuración administrada**: Claude Code lee [`statusLine`](/docs/es/statusline), [`fileSuggestion`](#filesuggestion) y [`subagentStatusLine`](/docs/es/statusline#subagent-status-lines) solo de configuración administrada, siguiendo las [puertas de línea de estado y sugerencia de archivo](#status-line-and-file-suggestion-gates)4204* **La línea de estado y la sugerencia de archivo se reducen a configuración administrada**: Claude Code lee [`statusLine`](/docs/es/statusline), [`fileSuggestion`](#filesuggestion) y [`subagentStatusLine`](/docs/es/statusline#subagent-status-lines) solo de configuración administrada, siguiendo las [puertas de línea de estado y sugerencia de archivo](#status-line-and-file-suggestion-gates)

4190 4205 

4191El comando [`/goal`](/docs/es/goal) no puede ejecutarse mientras esta clave está establecida, porque depende de hooks.4206El comando [`/goal`](/docs/es/goal) no puede ejecutarse mientras esta clave está establecida, porque depende de hooks.


4369 Plugins y skills4384 Plugins y skills

4370</h2>4385</h2>

4371 4386 

4372Habilite plugins, registre mercados, restrinja qué fuentes de plugins permite una organización y controle qué skills se cargan. Para instalar y crear plugins, consulte [Plugins](/docs/es/plugins).4387Habilite plugins, registre mercados, restrinja qué fuentes de plugins permite una organización y controle qué skills se cargan. Para instalar y crear plugins, consulte [Plugins](/docs/es/plugins/overview).

4373 4388 

4374<h3 id="disablebundledskills">4389<h3 id="disablebundledskills">

4375 `disableBundledSkills`4390 `disableBundledSkills`


4465 `syncClaudeAiPlugins`4480 `syncClaudeAiPlugins`

4466</h3>4481</h3>

4467 4482 

4468Desactive la descarga de los [plugins habilitados para su cuenta claude.ai](/docs/es/plugins-reference#synced-plugins). Claude Code los descarga en `~/.claude/plugins/synced/` al inicio de sesiones de terminal donde inicia sesión con su cuenta claude.ai, y en sesiones de Cowork y en la nube, y carga cada uno como `<name>@synced`. Establezca `false` para detener esa descarga y dejar de cargar los plugins que ya sincronizó. Claude Code solo respeta `false`: `true` es lo mismo que sin establecer y no activa la sincronización donde de otro modo está desactivada. Requiere Claude Code v2.1.273 o posterior.4483Desactive la descarga de los [plugins habilitados para su cuenta claude.ai](/docs/es/plugins/loading#synced-plugins). Claude Code los descarga en `~/.claude/plugins/synced/` al inicio de sesiones de terminal donde inicia sesión con su cuenta claude.ai y en sesiones de Cowork, y carga cada uno como `<name>@synced`. Establezca `false` para detener esa descarga y dejar de cargar los plugins que ya sincronizó. Claude Code solo respeta `false`: `true` es lo mismo que sin establecer y no activa la sincronización donde de otro modo está desactivada. Requiere Claude Code v2.1.273 o posterior.

4469 4484 

4470* **Scope**: [`User, local, or managed`](#scopes), y archivos pasados con `--settings`. Un repositorio no puede desactivarlo para usted.4485* **Scope**: [`User, local, or managed`](#scopes), y archivos pasados con `--settings`. Un repositorio no puede desactivarlo para usted.

4471* **Type**: Boolean4486* **Type**: Boolean


4514 4529 

4515Bloquee fuentes de mercado de plugins para su organización. Claude Code verifica la lista de bloqueo al agregar mercado y al instalar, actualizar, actualizar y actualizar automáticamente plugins, por lo que un mercado que alguien agregó antes de que establezca la política no puede usarse para obtener plugins tampoco. Las fuentes bloqueadas se verifican antes de la descarga, por lo que nunca tocan el sistema de archivos.4530Bloquee fuentes de mercado de plugins para su organización. Claude Code verifica la lista de bloqueo al agregar mercado y al instalar, actualizar, actualizar y actualizar automáticamente plugins, por lo que un mercado que alguien agregó antes de que establezca la política no puede usarse para obtener plugins tampoco. Las fuentes bloqueadas se verifican antes de la descarga, por lo que nunca tocan el sistema de archivos.

4516 4531 

4517Si establece esta clave en la [consola de administrador de claude.ai](/docs/es/server-managed-settings), claude.ai también la aplica cuando alguien en su organización agrega un mercado desde un repositorio de git en claude.ai, como [Cómo funcionan las restricciones](/docs/es/plugin-marketplaces#how-restrictions-work) describe.4532Si establece esta clave en la [consola de administrador de claude.ai](/docs/es/server-managed-settings), claude.ai también la aplica cuando alguien en su organización agrega un mercado desde un repositorio de git en claude.ai, como [Cómo funcionan las restricciones](/docs/es/plugins/org#restrict-what-users-can-install) describe.

4518 4533 

4519* **Scope**: [`Managed`](#scopes)4534* **Scope**: [`Managed`](#scopes)

4520* **Type**: matriz de objetos de fuente de mercado, en las mismas formas que [`strictKnownMarketplaces`](#allowed-source-types)4535* **Type**: matriz de objetos de fuente de mercado, en las mismas formas que [`strictKnownMarketplaces`](#allowed-source-types)


4530}4545}

4531```4546```

4532 4547 

4533Una entrada `github` puede usar la forma [comodín de propietario](#owner-wildcards) `"owner/*"` para bloquear cada repositorio bajo ese propietario de GitHub, que requiere Claude Code v2.1.223 o posterior. Agregue `{ "source": "skills-dir" }` para evitar que Claude Code cargue plugins [`@skills-dir`](/docs/es/plugins-reference#skills-directory-plugins) desde `~/.claude/skills/` sin restringir ningún mercado. Consulte [Restricciones de mercado administradas](/docs/es/plugin-marketplaces#managed-marketplace-restrictions).4548Una entrada `github` puede usar la forma [comodín de propietario](#owner-wildcards) `"owner/*"` para bloquear cada repositorio bajo ese propietario de GitHub, que requiere Claude Code v2.1.223 o posterior. Agregue `{ "source": "skills-dir" }` para evitar que Claude Code cargue plugins [`@skills-dir`](/docs/es/plugins/loading#plugins-shared-through-a-repository) desde `~/.claude/skills/` sin restringir ningún mercado. Consulte [Restricciones de mercado administradas](/docs/es/plugins/org#restrict-what-users-can-install).

4534 4549 

4535<h3 id="channelsenabled">4550<h3 id="channelsenabled">

4536 `channelsEnabled`4551 `channelsEnabled`


4556 `disableCommandPluginSources`4571 `disableCommandPluginSources`

4557</h3>4572</h3>

4558 4573 

4559Bloquee la [fuente de plugin `command`](/docs/es/plugin-marketplaces#command-sources), que instala un plugin ejecutando un comando declarado por el mercado en la máquina del usuario. Cuando lo establece en `true`, Claude Code nunca ejecuta el comando, no instala ni actualiza plugins de origen de comando, y deja de cargar los ya instalados. Establézcalo en `false` para permitirlos explícitamente. Siempre que bloquea fuentes de comando, ya sea que lo establezca en `true` o lo deje sin establecer bajo [`allowManagedHooksOnly`](#allowmanagedhooksonly), también bloquea comandos [`headersHelper`](/docs/es/plugin-marketplaces#authenticate-archive-downloads) del mercado, excepto para un mercado que la configuración administrada declara. Requiere Claude Code v2.1.229 o posterior, y el bloqueo `headersHelper` requiere v2.1.238 o posterior.4574Bloquee la [fuente de plugin `command`](/docs/es/plugins/marketplace-reference#command-plugin-source), que instala un plugin ejecutando un comando declarado por el mercado en la máquina del usuario. Cuando lo establece en `true`, Claude Code nunca ejecuta el comando, no instala ni actualiza plugins de origen de comando, y deja de cargar los ya instalados. Establézcalo en `false` para permitirlos explícitamente. Siempre que bloquea fuentes de comando, ya sea que lo establezca en `true` o lo deje sin establecer bajo [`allowManagedHooksOnly`](#allowmanagedhooksonly), también bloquea comandos [`headersHelper`](/docs/es/plugins/host-marketplace#authenticate-archive-downloads) del mercado, excepto para un mercado que la configuración administrada declara. Requiere Claude Code v2.1.229 o posterior, y el bloqueo `headersHelper` requiere v2.1.238 o posterior.

4560 4575 

4561* **Scope**: [`Managed`](#scopes)4576* **Scope**: [`Managed`](#scopes)

4562* **Type**: Boolean4577* **Type**: Boolean


4588}4603}

4589```4604```

4590 4605 

4591Un nombre entra en vigor solo cuando el mercado está registrado en la máquina y su fuente registrada también se declara en la misma configuración administrada, ya sea como la entrada [`extraKnownMarketplaces`](#extraknownmarketplaces) para ese nombre o como una entrada de [`strictKnownMarketplaces`](#strictknownmarketplaces). Claude Code ignora un mercado registrado desde una fuente diferente bajo un nombre en la lista de permitidos. El mercado oficial está exento del requisito de fuente: permitir solo su nombre es suficiente, ya que ese nombre solo puede registrarse desde la fuente oficial de Anthropic. Consulte [Sugerir plugins por contexto](/docs/es/plugin-relevance).4606Un nombre entra en vigor solo cuando el mercado está registrado en la máquina y su fuente registrada también se declara en la misma configuración administrada, ya sea como la entrada [`extraKnownMarketplaces`](#extraknownmarketplaces) para ese nombre o como una entrada de [`strictKnownMarketplaces`](#strictknownmarketplaces). Claude Code ignora un mercado registrado desde una fuente diferente bajo un nombre en la lista de permitidos. El mercado oficial está exento del requisito de fuente: permitir solo su nombre es suficiente, ya que ese nombre solo puede registrarse desde la fuente oficial de Anthropic. Consulte [Sugerir plugins por contexto](/docs/es/plugins/relevance).

4592 4607 

4593<h3 id="plugintrustmessage">4608<h3 id="plugintrustmessage">

4594 `pluginTrustMessage`4609 `pluginTrustMessage`


4612 4627 

4613Restrinja qué fuentes de mercado de plugins pueden agregar e instalar plugins las personas en su organización. Claude Code aplica la lista de permitidos al agregar mercado y al instalar, actualizar, actualizar y actualizar automáticamente plugins, antes de cualquier operación de red o sistema de archivos, por lo que un mercado que alguien agregó antes de que establezca la política no puede usarse para obtener plugins una vez que su fuente ya no coincida. Los usuarios bloqueados ven un error que nombra la política administrada.4628Restrinja qué fuentes de mercado de plugins pueden agregar e instalar plugins las personas en su organización. Claude Code aplica la lista de permitidos al agregar mercado y al instalar, actualizar, actualizar y actualizar automáticamente plugins, antes de cualquier operación de red o sistema de archivos, por lo que un mercado que alguien agregó antes de que establezca la política no puede usarse para obtener plugins una vez que su fuente ya no coincida. Los usuarios bloqueados ven un error que nombra la política administrada.

4614 4629 

4615Si establece esta clave en la [consola de administrador de claude.ai](/docs/es/server-managed-settings), claude.ai también la aplica cuando alguien en su organización agrega un mercado desde un repositorio de git en claude.ai, como [Cómo funcionan las restricciones](/docs/es/plugin-marketplaces#how-restrictions-work) describe.4630Si establece esta clave en la [consola de administrador de claude.ai](/docs/es/server-managed-settings), claude.ai también la aplica cuando alguien en su organización agrega un mercado desde un repositorio de git en claude.ai, como [Cómo funcionan las restricciones](/docs/es/plugins/org#restrict-what-users-can-install) describe.

4616 4631 

4617* **Scope**: [`Managed`](#scopes)4632* **Scope**: [`Managed`](#scopes)

4618* **Type**: matriz de objetos de fuente de mercado; consulte [Tipos de fuente permitidos](#allowed-source-types)4633* **Type**: matriz de objetos de fuente de mercado; consulte [Tipos de fuente permitidos](#allowed-source-types)


4630}4645}

4631```4646```

4632 4647 

4633También puede escribir esta clave como `allowedMarketplaces`; [Alias de clave de mercado](#marketplace-key-aliases) describe cómo Claude Code trata el alias y qué versión lo acepta. Esta clave es una puerta de política: controla lo que los usuarios pueden agregar pero no registra nada. Para restringir y preregistrar en un archivo, consulte [Combinar con `extraKnownMarketplaces`](#combine-with-extraknownmarketplaces). Para la vista orientada al usuario, consulte [Restricciones de mercado administradas](/docs/es/plugin-marketplaces#managed-marketplace-restrictions).4648También puede escribir esta clave como `allowedMarketplaces`; [Alias de clave de mercado](#marketplace-key-aliases) describe cómo Claude Code trata el alias y qué versión lo acepta. Esta clave es una puerta de política: controla lo que los usuarios pueden agregar pero no registra nada. Para restringir y preregistrar en un archivo, consulte [Combinar con `extraKnownMarketplaces`](#combine-with-extraknownmarketplaces). Para la vista orientada al usuario, consulte [Restricciones de mercado administradas](/docs/es/plugins/org#restrict-what-users-can-install).

4634 4649 

4635<h4 id="allowed-source-types">4650<h4 id="allowed-source-types">

4636 Tipos de fuente permitidos4651 Tipos de fuente permitidos


4639Cada entrada a continuación muestra una entrada de lista de permitidos por tipo de fuente y los campos que acepta. La mayoría de los tipos coinciden exactamente; `hostPattern` y `pathPattern` coinciden por regex, y las entradas `github` pueden usar un [comodín de propietario](#owner-wildcards).4654Cada entrada a continuación muestra una entrada de lista de permitidos por tipo de fuente y los campos que acepta. La mayoría de los tipos coinciden exactamente; `hostPattern` y `pathPattern` coinciden por regex, y las entradas `github` pueden usar un [comodín de propietario](#owner-wildcards).

4640 4655 

4641| Source | Example entry | Fields |4656| Source | Example entry | Fields |

4642| :------------ | :------------------------------------------------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------ |4657| :------------ | :------------------------------------------------------------------------------------------------------------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------- |

4643| `github` | `{ "source": "github", "repo": "acme-corp/plugins", "ref": "main", "path": "marketplace" }` | `repo` requerido; `ref` es una rama o etiqueta; `path` es un subdirectorio |4658| `github` | `{ "source": "github", "repo": "acme-corp/plugins", "ref": "main", "path": "marketplace" }` | `repo` requerido; `ref` es una rama o etiqueta; `path` es un subdirectorio |

4644| `git` | `{ "source": "git", "url": "https://gitlab.example.com/tools/plugins.git", "ref": "production" }` | `url` requerido; `ref` y `path` como para `github` |4659| `git` | `{ "source": "git", "url": "https://gitlab.example.com/tools/plugins.git", "ref": "production" }` | `url` requerido; `ref` y `path` como para `github` |

4645| `url` | `{ "source": "url", "url": "https://plugins.example.com/marketplace.json", "headers": { "Authorization": "Bearer ${TOKEN}" } }` | `url` requerido; `headers` agrega encabezados HTTP para acceso autenticado |4660| `url` | `{ "source": "url", "url": "https://plugins.example.com/marketplace.json", "headers": { "Authorization": "Bearer ${TOKEN}" } }` | `url` requerido; `headers` agrega encabezados HTTP para acceso autenticado |

4646| `file` | `{ "source": "file", "path": "/opt/acme-corp/plugins/marketplace.json" }` | `path` requerido, la ruta absoluta a un archivo `marketplace.json` |4661| `file` | `{ "source": "file", "path": "/opt/acme-corp/plugins/marketplace.json" }` | `path` requerido, la ruta absoluta a un archivo `marketplace.json` |

4647| `directory` | `{ "source": "directory", "path": "/opt/acme-corp/approved-marketplaces" }` | `path` requerido, la ruta absoluta a un directorio que contiene `.claude-plugin/marketplace.json` |4662| `directory` | `{ "source": "directory", "path": "/opt/acme-corp/approved-marketplaces" }` | `path` requerido, la ruta absoluta a un directorio que contiene `.claude-plugin/marketplace.json` |

4648| `hostPattern` | `{ "source": "hostPattern", "hostPattern": "^github\\.example\\.com$" }` | `hostPattern` requerido, una regex coincidida contra el host del mercado |4663| `hostPattern` | `{ "source": "hostPattern", "hostPattern": "^github\\.example\\.com$" }` | `hostPattern` requerido, una regex coincidida en cualquier lugar del host del mercado; anclela con `^` y `$` para coincidir con el host completo |

4649| `pathPattern` | `{ "source": "pathPattern", "pathPattern": "^/opt/approved/" }` | `pathPattern` requerido, una regex coincidida contra la `path` de fuentes `file` y `directory` |4664| `pathPattern` | `{ "source": "pathPattern", "pathPattern": "^/opt/approved/" }` | `pathPattern` requerido, una regex coincidida en cualquier lugar en la `path` de fuentes `file` y `directory`; comience con `^` para fijar un prefijo |

4650| `skills-dir` | `{ "source": "skills-dir" }` | Sin campos. Opta por el escaneo de plugin `~/.claude/skills/` nuevamente |4665| `skills-dir` | `{ "source": "skills-dir" }` | Sin campos. Opta por el escaneo de plugin `~/.claude/skills/` nuevamente |

4651 4666 

4652Tres tipos de fuente llevan reglas más allá de la tabla:4667Tres tipos de fuente llevan reglas más allá de la tabla:

4653 4668 

4654* **`url`**: un mercado de URL descarga solo el archivo `marketplace.json`, y Claude Code no obtiene archivos de plugin por ruta relativa desde ese servidor, por lo que sus plugins deben usar una [fuente de plugin](/docs/es/plugin-marketplaces#plugin-sources) que no sea una ruta relativa, como una URL de archivo, que puede estar en el mismo host. Para plugins con rutas relativas, use un mercado basado en Git en su lugar. Consulte [Los plugins con rutas relativas fallan en mercados basados en URL](/docs/es/plugin-marketplaces#plugins-with-relative-paths-fail-in-url-based-marketplaces).4669* **`url`**: un mercado de URL descarga solo el archivo `marketplace.json`, y Claude Code no obtiene archivos de plugin por ruta relativa desde ese servidor, por lo que sus plugins deben usar una [fuente de plugin](/docs/es/plugins/marketplace-reference#plugin-sources) que no sea una ruta relativa, como una URL de archivo, que puede estar en el mismo host. Para plugins con rutas relativas, use un mercado basado en Git en su lugar. Consulte [Los plugins con rutas relativas fallan en mercados basados en URL](/docs/es/plugins/troubleshooting#plugins-with-relative-paths-fail-in-url-based-marketplaces).

4655* **`hostPattern`**: úselo para permitir cada mercado en un GitHub Enterprise interno o servidor GitLab sin enumerar cada repositorio. Claude Code compara fuentes `github` contra `github.com`, toma el nombre de host de fuentes `url`, y lo toma de fuentes `git` dependiendo de la forma de [URL de git](https://git-scm.com/docs/git-clone#_git_urls):4670* **`hostPattern`**: úselo para permitir cada mercado en un GitHub Enterprise interno o servidor GitLab sin enumerar cada repositorio. Claude Code compara fuentes `github` contra `github.com`, toma el nombre de host de fuentes `url`, y lo toma de fuentes `git` dependiendo de la forma de [URL de git](https://git-scm.com/docs/git-clone#_git_urls):

4656 4671 

4657 * Una URL con un esquema, como `https://` o `ssh://`: el nombre de host en la URL.4672 * Una URL con un esquema, como `https://` o `ssh://`: el nombre de host en la URL.


4661 Las fuentes `file` y `directory` no tienen host y nunca coinciden con una entrada `hostPattern`.4676 Las fuentes `file` y `directory` no tienen host y nunca coinciden con una entrada `hostPattern`.

4662* **`pathPattern`**: úselo para permitir mercados del sistema de archivos junto con entradas `hostPattern` para fuentes de red. `".*"` permite cada ruta local; un patrón más estrecho como `"^/opt/approved/"` restringe a un directorio.4677* **`pathPattern`**: úselo para permitir mercados del sistema de archivos junto con entradas `hostPattern` para fuentes de red. `".*"` permite cada ruta local; un patrón más estrecho como `"^/opt/approved/"` restringe a un directorio.

4663 4678 

4664Cualquier lista de permitidos, incluso una vacía, también evita que Claude Code cargue plugins [`@skills-dir`](/docs/es/plugins-reference#skills-directory-plugins) desde `~/.claude/skills/`. Agregue la entrada `{ "source": "skills-dir" }` para seguir cargándolos; la entrada no tiene significado fuera de esta clave y `blockedMarketplaces`.4679Cualquier lista de permitidos, incluso una vacía, también evita que Claude Code cargue plugins [`@skills-dir`](/docs/es/plugins/loading#plugins-shared-through-a-repository) desde `~/.claude/skills/`. Agregue la entrada `{ "source": "skills-dir" }` para seguir cargándolos; la entrada no tiene significado fuera de esta clave y `blockedMarketplaces`.

4665 4680 

4666<h4 id="owner-wildcards">4681<h4 id="owner-wildcards">

4667 Comodines de propietario4682 Comodines de propietario


4846 `enabledPlugins`4861 `enabledPlugins`

4847</h3>4862</h3>

4848 4863 

4849Active o desactive [plugins](/docs/es/plugins) individuales, codificados por `plugin-name@marketplace-name`. Un plugin sin entrada en ningún scope vuelve a su valor [`defaultEnabled`](/docs/es/plugins-reference#default-enablement). Cuando habilita o deshabilita un plugin con `/plugin` o `claude plugin enable`, Claude Code escribe esta clave para usted.4864Active o desactive [plugins](/docs/es/plugins/overview) individuales, codificados por `plugin-name@marketplace-name`. Un plugin sin entrada en ningún scope vuelve a su valor [`defaultEnabled`](/docs/es/plugins/manifest-reference#fields). Cuando habilita o deshabilita un plugin con `/plugin` o `claude plugin enable`, Claude Code escribe esta clave para usted.

4850 4865 

4851* **Scope**: [`Any file`](#scopes)4866* **Scope**: [`Any file`](#scopes)

4852* **Type**: objeto que asigna `plugin-name@marketplace-name` a un Boolean4867* **Type**: objeto que asigna `plugin-name@marketplace-name` a un Boolean


4873 4888 

4874La configuración del proyecto tiene precedencia sobre la configuración del usuario, por lo que establecer un plugin en `false` en `~/.claude/settings.json` no deshabilita un plugin que la `.claude/settings.json` del proyecto habilita. Para optar por no participar en un plugin habilitado por proyecto en su máquina, establézcalo en `false` en `.claude/settings.local.json` en su lugar. Los plugins forzados habilitados por configuración administrada no pueden deshabilitarse de esta manera, ya que la configuración administrada anula la configuración local.4889La configuración del proyecto tiene precedencia sobre la configuración del usuario, por lo que establecer un plugin en `false` en `~/.claude/settings.json` no deshabilita un plugin que la `.claude/settings.json` del proyecto habilita. Para optar por no participar en un plugin habilitado por proyecto en su máquina, establézcalo en `false` en `.claude/settings.local.json` en su lugar. Los plugins forzados habilitados por configuración administrada no pueden deshabilitarse de esta manera, ya que la configuración administrada anula la configuración local.

4875 4890 

4876Habilitar un plugin de una fuente externa como un repositorio de GitHub o paquete npm en la `.claude/settings.json` de un proyecto no lo instala para otras personas. En cada ruta que carga plugins, Claude Code reporta el plugin como no instalado hasta que cada usuario lo [instale ellos mismos](/docs/es/discover-plugins#configure-team-marketplaces).4891Habilitar un plugin de una fuente externa como un repositorio de GitHub o paquete npm en la `.claude/settings.json` de un proyecto no lo instala para otras personas. En cada ruta que carga plugins, Claude Code reporta el plugin como no instalado hasta que cada usuario lo [instale ellos mismos](/docs/es/plugins/org#require-plugins-per-repository).

4877 4892 

4878<h3 id="extraknownmarketplaces">4893<h3 id="extraknownmarketplaces">

4879 `extraKnownMarketplaces`4894 `extraKnownMarketplaces`


4908 4923 

4909[Lo que se ejecuta antes de que confíe en una carpeta](/docs/es/permissions#what-runs-before-you-trust-a-folder) compara la puerta de confianza con el otro contenido que un repositorio puede suministrar. También puede escribir esta clave como `additionalMarketplaces`; consulte [Alias de clave de mercado](#marketplace-key-aliases).4924[Lo que se ejecuta antes de que confíe en una carpeta](/docs/es/permissions#what-runs-before-you-trust-a-folder) compara la puerta de confianza con el otro contenido que un repositorio puede suministrar. También puede escribir esta clave como `additionalMarketplaces`; consulte [Alias de clave de mercado](#marketplace-key-aliases).

4910 4925 

4911Establezca `"autoUpdate": true` junto a `source` para hacer que Claude Code actualice ese mercado e instale sus plugins instalados en segundo plano después del inicio. Cuando se omite, `claude-plugins-official` y la mayoría de otros mercados oficiales de Anthropic tienen como predeterminado `true`, y los mercados de terceros tienen como predeterminado `false`. Consulte [Configurar actualizaciones automáticas](/docs/es/discover-plugins#configure-auto-updates).4926Establezca `"autoUpdate": true` junto a `source` para hacer que Claude Code actualice ese mercado e instale sus plugins instalados en segundo plano después del inicio. Cuando se omite, `claude-plugins-official` y la mayoría de otros mercados oficiales de Anthropic tienen como predeterminado `true`, y los mercados de terceros tienen como predeterminado `false`. Consulte [Configurar actualizaciones automáticas](/docs/es/plugins/install#keep-plugins-updated).

4912 4927 

4913Cuando más de un archivo de configuración define una entrada de mercado bajo el mismo nombre, Claude Code usa la entrada del [archivo de precedencia más alta](/docs/es/settings#settings-precedence) completo. Esa entrada reemplaza la entrada de precedencia más baja y no hereda ninguno de sus campos, por lo que una redefinición no puede combinar `source.headers` de credencial de un archivo con una URL que otro archivo controla. Antes de v2.1.228, Claude Code fusionaba entradas del mismo nombre campo por campo, por lo que una entrada en un archivo de precedencia más alta podría heredar campos que no estableció, incluidos `headers` de otro archivo.4928Cuando más de un archivo de configuración define una entrada de mercado bajo el mismo nombre, Claude Code usa la entrada del [archivo de precedencia más alta](/docs/es/settings#settings-precedence) completo. Esa entrada reemplaza la entrada de precedencia más baja y no hereda ninguno de sus campos, por lo que una redefinición no puede combinar `source.headers` de credencial de un archivo con una URL que otro archivo controla. Antes de v2.1.228, Claude Code fusionaba entradas del mismo nombre campo por campo, por lo que una entrada en un archivo de precedencia más alta podría heredar campos que no estableció, incluidos `headers` de otro archivo.

4914 4929 


4925* **`directory`**: una ruta del sistema de archivos local, con `path`, solo para desarrollo4940* **`directory`**: una ruta del sistema de archivos local, con `path`, solo para desarrollo

4926* **`settings`**: un mercado en línea declarado directamente en el archivo de configuración sin un repositorio alojado, con `name` y `plugins`4941* **`settings`**: un mercado en línea declarado directamente en el archivo de configuración sin un repositorio alojado, con `name` y `plugins`

4927 4942 

4928El tipo de fuente `git` funciona con cualquier servicio de alojamiento de git, incluido GitLab autohospedado y Bitbucket. Claude Code clona el repositorio con la misma autenticación que `git clone` usaría en esa máquina: ayudantes de credenciales configurados o claves SSH. Un token de proveedor como `GITHUB_TOKEN` entra en vigor solo a través de un ayudante de credenciales que lo lee. Consulte [Repositorios privados](/docs/es/plugin-marketplaces#private-repositories) para detalles de configuración.4943El tipo de fuente `git` funciona con cualquier servicio de alojamiento de git, incluido GitLab autohospedado y Bitbucket. Claude Code clona el repositorio con la misma autenticación que `git clone` usaría en esa máquina: ayudantes de credenciales configurados o claves SSH. Un token de proveedor como `GITHUB_TOKEN` entra en vigor solo a través de un ayudante de credenciales que lo lee. Consulte [Repositorios privados](/docs/es/plugins/host-marketplace#grant-access-to-a-private-marketplace) para detalles de configuración.

4929 4944 

4930Para fuentes `github` y `git`, Claude Code nunca descarga contenido de [Git LFS](https://git-lfs.com) cuando clona el repositorio de mercado para agregarlo o actualizarlo. Los archivos rastreados por LFS se extraen como archivos de puntero, y la salida de agregar o actualizar reporta cuántos.4945Para fuentes `github` y `git`, Claude Code nunca descarga contenido de [Git LFS](https://git-lfs.com) cuando clona el repositorio de mercado para agregarlo o actualizarlo. Los archivos rastreados por LFS se extraen como archivos de puntero, y la salida de agregar o actualizar reporta cuántos.

4931 4946 

4932El campo `skipLfs` dentro del objeto `source` se acepta y no tiene efecto. Antes de v2.1.274, Claude Code descargaba contenido de LFS a menos que estableciera `"skipLfs": true`.4947El campo `skipLfs` dentro del objeto `source` se acepta y no tiene efecto. Antes de v2.1.274, Claude Code descargaba contenido de LFS a menos que estableciera `"skipLfs": true`.

4933 4948 

4934Para una fuente `url`, establezca `headersHelper` dentro del objeto `source` cuando la credencial en `headers` expira y un comando tiene que producir una nueva. Requiere Claude Code v2.1.238 o posterior. Para lo que el comando debe imprimir y dónde Claude Code lo ejecuta, consulte [Escribir el comando headersHelper](/docs/es/plugin-marketplaces#write-the-headershelper-command), y para los casos donde Claude Code no lo ejecuta, consulte [Cuándo Claude Code omite un comando headersHelper](/docs/es/plugin-marketplaces#when-claude-code-skips-a-headershelper-command-or-drops-its-output). Una vez que establezca `headersHelper` en una URL de mercado `https://`, Claude Code ejecuta el comando en dos puntos, reutilizando la salida de una ejecución durante hasta 60 segundos:4949Para una fuente `url`, establezca `headersHelper` dentro del objeto `source` cuando la credencial en `headers` expira y un comando tiene que producir una nueva. Requiere Claude Code v2.1.238 o posterior. Para lo que el comando debe imprimir y dónde Claude Code lo ejecuta, consulte [Escribir el comando headersHelper](/docs/es/plugins/host-marketplace#write-the-headershelper-command), y para los casos donde Claude Code no lo ejecuta, consulte [Cuándo Claude Code omite un comando headersHelper](/docs/es/plugins/host-marketplace#when-claude-code-skips-a-headershelper-command-or-drops-its-output). Una vez que establezca `headersHelper` en una URL de mercado `https://`, Claude Code ejecuta el comando en dos puntos, reutilizando la salida de una ejecución durante hasta 60 segundos:

4935 4950 

4936* Antes de cada obtención del `marketplace.json` de ese mercado, incluida una actualización posterior. Claude Code envía los encabezados impresos con esa obtención.4951* Antes de cada obtención del `marketplace.json` de ese mercado, incluida una actualización posterior. Claude Code envía los encabezados impresos con esa obtención.

4937* Antes de cada descarga de archivo de plugin en el origen de la URL del mercado, lo que significa el mismo esquema, host y puerto. Claude Code envía la salida con esa descarga, y ninguna otra descarga obtiene los encabezados.4952* Antes de cada descarga de archivo de plugin en el origen de la URL del mercado, lo que significa el mismo esquema, host y puerto. Claude Code envía la salida con esa descarga, y ninguna otra descarga obtiene los encabezados.

4938 4953 

4939Claude Code ignora cualquier `headersHelper` establecido en la `.claude/settings.json` o `.claude/settings.local.json` de un directorio que agregue con [`--add-dir`](/docs/es/permissions#what-runs-before-you-trust-a-folder), en una fuente `url` y en una entrada de plugin en línea por igual, y envía solo los `headers` fijos establecidos en ese archivo. [Cómo los usuarios aceptan un comando headersHelper](/docs/es/plugin-marketplaces#how-users-accept-a-headershelper-command) cubre los otros archivos de configuración.4954Claude Code ignora cualquier `headersHelper` establecido en la `.claude/settings.json` o `.claude/settings.local.json` de un directorio que agregue con [`--add-dir`](/docs/es/permissions#what-runs-before-you-trust-a-folder), en una fuente `url` y en una entrada de plugin en línea por igual, y envía solo los `headers` fijos establecidos en ese archivo. [Cómo los usuarios aceptan un comando headersHelper](/docs/es/plugins/host-marketplace#how-users-accept-a-headershelper-command) cubre los otros archivos de configuración.

4940 4955 

4941Los plugins enumerados en una fuente `settings` deben hacer referencia a fuentes externas como GitHub o npm, y el `name` debe coincidir con la clave de mercado. Aún habilita cada plugin por separado en `enabledPlugins`. Este ejemplo declara un plugin en línea:4956Los plugins enumerados en una fuente `settings` deben hacer referencia a fuentes externas como GitHub o npm, y el `name` debe coincidir con la clave de mercado. Aún habilita cada plugin por separado en `enabledPlugins`. Este ejemplo declara un plugin en línea:

4942 4957 


4962}4977}

4963```4978```

4964 4979 

4965Una entrada de plugin bajo `source: 'settings'` cuya propia `source` es un [`archive`](/docs/es/plugin-marketplaces#zip-archives) puede establecer `headers` para la descarga del archivo. Si el valor que pondría en `headers` es efímero, como un token que su registro acuña bajo demanda, establezca un comando `headersHelper` en su lugar. Una entrada puede establecer ambos. Ambos campos requieren Claude Code v2.1.238 o posterior.4980Una entrada de plugin bajo `source: 'settings'` cuya propia `source` es un [`archive`](/docs/es/plugins/marketplace-reference#archive-plugin-source) puede establecer `headers` para la descarga del archivo. Si el valor que pondría en `headers` es efímero, como un token que su registro acuña bajo demanda, establezca un comando `headersHelper` en su lugar. Una entrada puede establecer ambos. Ambos campos requieren Claude Code v2.1.238 o posterior.

4966 4981 

4967Claude Code envía los `headers` de la entrada, y lo que el comando imprime, con la descarga del archivo de ese plugin y con ninguna otra descarga. Claude Code ejecuta el comando solo cuando un usuario [instala o actualiza ese único plugin por sí solo](/docs/es/plugin-marketplaces#how-users-accept-a-headershelper-command). Tres reglas adicionales dependen de qué archivo contiene la entrada:4982Claude Code envía los `headers` de la entrada, y lo que el comando imprime, con la descarga del archivo de ese plugin y con ninguna otra descarga. Claude Code ejecuta el comando solo cuando un usuario [instala o actualiza ese único plugin por sí solo](/docs/es/plugins/host-marketplace#how-users-accept-a-headershelper-command). Tres reglas adicionales dependen de qué archivo contiene la entrada:

4968 4983 

4969* **`strict`**: a diferencia de una entrada en el `marketplace.json` de un mercado, una entrada en configuración no necesita `"strict": false`, porque un archivo de configuración no lleva campos de manifiesto para en línea. Consulte [Modo estricto](/docs/es/plugin-marketplaces#strict-mode).4984* **`strict`**: a diferencia de una entrada en el `marketplace.json` de un mercado, una entrada en configuración no necesita `"strict": false`, porque un archivo de configuración no lleva campos de manifiesto para en línea. Consulte [Modo estricto](/docs/es/plugins/marketplace-reference#strict-mode).

4970* **Confianza de carpeta**: para una entrada en la `.claude/settings.json` o `.claude/settings.local.json` de un proyecto, Claude Code ejecuta el comando solo después de que el usuario también haya [confiado en esa carpeta](/docs/es/permissions#what-runs-before-you-trust-a-folder).4985* **Confianza de carpeta**: para una entrada en la `.claude/settings.json` o `.claude/settings.local.json` de un proyecto, Claude Code ejecuta el comando solo después de que el usuario también haya [confiado en esa carpeta](/docs/es/permissions#what-runs-before-you-trust-a-folder).

4971* **Filtro de encabezado**: Claude Code elimina [nombres de encabezado de enrutamiento de solicitud e identidad del cliente](/docs/es/plugin-marketplaces#when-claude-code-skips-a-headershelper-command-or-drops-its-output) de una entrada en la `.claude/settings.json` o `.claude/settings.local.json` de un proyecto, porque un repositorio puede suministrar esos archivos. Claude Code aplica el mismo filtro a una entrada de catálogo y a una entrada en la configuración de un directorio `--add-dir`, y ningún filtro a una entrada en su configuración de usuario, un archivo `--settings` o configuración administrada.4986* **Filtro de encabezado**: Claude Code elimina [nombres de encabezado de enrutamiento de solicitud e identidad del cliente](/docs/es/plugins/host-marketplace#when-claude-code-skips-a-headershelper-command-or-drops-its-output) de una entrada en la `.claude/settings.json` o `.claude/settings.local.json` de un proyecto, porque un repositorio puede suministrar esos archivos. Claude Code aplica el mismo filtro a una entrada de catálogo y a una entrada en la configuración de un directorio `--add-dir`, y ningún filtro a una entrada en su configuración de usuario, un archivo `--settings` o configuración administrada.

4972 4987 

4973<h4 id="marketplace-key-aliases">4988<h4 id="marketplace-key-aliases">

4974 Alias de clave de mercado4989 Alias de clave de mercado


4985 `pluginConfigs`5000 `pluginConfigs`

4986</h3>5001</h3>

4987 5002 

4988Almacene las respuestas no sensibles que proporciona al diálogo de configuración [`userConfig`](/docs/es/plugins-reference#user-configuration) de un plugin, codificadas por ID de plugin. Claude Code escribe esta clave en su configuración de usuario cuando completa el diálogo, por lo que no necesita editarla a mano. Claude Code almacena opciones sensibles en el Keychain de macOS en su lugar, retrocediendo a `~/.claude/.credentials.json` cuando el Keychain rechaza la escritura; en plataformas sin un keychain compatible, las almacena en `~/.claude/.credentials.json`.5003Almacene las respuestas no sensibles que proporciona al diálogo de configuración [`userConfig`](/docs/es/plugins/manifest-reference#user-configuration) de un plugin, codificadas por ID de plugin. Claude Code escribe esta clave en su configuración de usuario cuando completa el diálogo, por lo que no necesita editarla a mano. Claude Code almacena opciones sensibles en el Keychain de macOS en su lugar, retrocediendo a `~/.claude/.credentials.json` cuando el Keychain rechaza la escritura; en plataformas sin un keychain compatible, las almacena en `~/.claude/.credentials.json`.

4989 5004 

4990* **Scope**: [`User or managed`](#scopes)5005* **Scope**: [`User or managed`](#scopes)

4991* **Type**: objeto que asigna un ID de plugin a un objeto con un campo `options`, asignando cada nombre de opción a una cadena, número, Boolean o matriz de cadenas, y un campo `mcpServers` opcional que contiene valores de configuración de usuario por servidor en la misma forma5006* **Type**: objeto que asigna un ID de plugin a un objeto con un campo `options`, asignando cada nombre de opción a una cadena, número, Boolean o matriz de cadenas, y un campo `mcpServers` opcional que contiene valores de configuración de usuario por servidor en la misma forma


5233}5248}

5234```5249```

5235 5250 

5236El propio `settings.json` de un plugin también puede proporcionar esta clave; consulte [Envíe configuración predeterminada con su plugin](/docs/es/plugins#ship-default-settings-with-your-plugin).5251El propio `settings.json` de un plugin también puede proporcionar esta clave; consulte [Envíe configuración predeterminada con su plugin](/docs/es/plugins/components#default-settings).

5237 5252 

5238<h3 id="crosssessioninbound">5253<h3 id="crosssessioninbound">

5239 `crossSessionInbound`5254 `crossSessionInbound`


5329 * `"in-process"`: los compañeros de equipo se ejecutan dentro de su panel de terminal principal5344 * `"in-process"`: los compañeros de equipo se ejecutan dentro de su panel de terminal principal

5330 * `"auto"`: paneles divididos cuando se ejecuta dentro de tmux, o dentro de iTerm2 con `it2` en su `PATH` o tmux instalado; en proceso de lo contrario5345 * `"auto"`: paneles divididos cuando se ejecuta dentro de tmux, o dentro de iTerm2 con `it2` en su `PATH` o tmux instalado; en proceso de lo contrario

5331 * `"tmux"`: paneles divididos usando tmux o iTerm2, detectados desde su terminal5346 * `"tmux"`: paneles divididos usando tmux o iTerm2, detectados desde su terminal

5332 * `"iterm2"`: paneles divididos nativos de iTerm2 a través de la CLI `it2`, en Claude Code v2.1.186 o posterior5347 * `"iterm2"`: paneles divididos nativos de iTerm2 a través de la CLI `it2`

5333* **Predeterminado**: `"in-process"`5348* **Predeterminado**: `"in-process"`

5334* **Anulaciones por sesión**: `--teammate-mode` tiene prioridad sobre esta clave para una sesión5349* **Anulaciones por sesión**: `--teammate-mode` tiene prioridad sobre esta clave para una sesión

5335 5350 


5339}5354}

5340```5355```

5341 5356 

5342El valor `iterm2` requiere Claude Code v2.1.186 o posterior.

5343 

5344<span id="worktree-settings" />5357<span id="worktree-settings" />

5345 5358 

5346<h3 id="worktree">5359<h3 id="worktree">


6200 6213 

6201Claude Code aún acepta un `--mcp-config` cuyos servidores son todas entradas `type: "sdk"` en proceso, por lo que el SDK del Agente y la extensión de VS Code siguen funcionando. Los usuarios aún pueden agregar servidores con `claude mcp add` o un archivo `.mcp.json`; para control por servidor, establezca también [`allowedMcpServers`](/docs/es/managed-mcp). Requiere Claude Code v2.1.193 o posterior.6214Claude Code aún acepta un `--mcp-config` cuyos servidores son todas entradas `type: "sdk"` en proceso, por lo que el SDK del Agente y la extensión de VS Code siguen funcionando. Los usuarios aún pueden agregar servidores con `claude mcp add` o un archivo `.mcp.json`; para control por servidor, establezca también [`allowedMcpServers`](/docs/es/managed-mcp). Requiere Claude Code v2.1.193 o posterior.

6202 6215 

6216La misma verificación cubre carpetas de plugins nombradas en la variable de entorno [`CLAUDE_CODE_PLUGIN_DIRS`](/docs/es/env-vars#variables), que requiere Claude Code v2.1.280 o posterior. Cuando la variable nombra una carpeta, Claude Code sale con el mismo error, y el error dice que desestablezca la variable.

6217 

6203En sesiones en la nube, Claude Code también ignora las actualizaciones MCP entregadas por el servidor a mitad de sesión, la ruta detrás de la configuración de sesión en la nube y llamadas `setMcpServers()` del SDK que llegan a esas sesiones. Las entradas `type: "sdk"` en proceso permanecen exentas allí también. Antes de v2.1.239, un `--mcp-config` entregado por el servidor bloqueaba el inicio de una sesión en la nube.6218En sesiones en la nube, Claude Code también ignora las actualizaciones MCP entregadas por el servidor a mitad de sesión, la ruta detrás de la configuración de sesión en la nube y llamadas `setMcpServers()` del SDK que llegan a esas sesiones. Las entradas `type: "sdk"` en proceso permanecen exentas allí también. Antes de v2.1.239, un `--mcp-config` entregado por el servidor bloqueaba el inicio de una sesión en la nube.

6204 6219 

6205<h3 id="forceremotesettingsrefresh">6220<h3 id="forceremotesettingsrefresh">

skills.md +15 −15

Details

129| Proyecto | `.claude/skills/<skill-name>/SKILL.md` | Sesiones en este repositorio. Confirma su cambio para que tu equipo también la obtenga |129| Proyecto | `.claude/skills/<skill-name>/SKILL.md` | Sesiones en este repositorio. Confirma su cambio para que tu equipo también la obtenga |

130| Anidada | `<subdir>/.claude/skills/<skill-name>/SKILL.md` | Sesiones iniciadas en o debajo de `<subdir>`. Una sesión iniciada por encima de ella carga la skill una vez que Claude trabaja en archivos allí. Consulta [monorepos y subdirectorios](#discovery-from-parent-and-nested-directories) |130| Anidada | `<subdir>/.claude/skills/<skill-name>/SKILL.md` | Sesiones iniciadas en o debajo de `<subdir>`. Una sesión iniciada por encima de ella carga la skill una vez que Claude trabaja en archivos allí. Consulta [monorepos y subdirectorios](#discovery-from-parent-and-nested-directories) |

131| Directorio adicional | `.claude/skills/<skill-name>/SKILL.md` en un directorio que pasas con `--add-dir` | Esa sesión. Consulta [directorios fuera del proyecto](#skills-from-additional-directories) |131| Directorio adicional | `.claude/skills/<skill-name>/SKILL.md` en un directorio que pasas con `--add-dir` | Esa sesión. Consulta [directorios fuera del proyecto](#skills-from-additional-directories) |

132| Plugin | `<plugin>/skills/<skill-name>/SKILL.md` | Dondequiera que el [plugin](/docs/es/plugins) esté habilitado, como `/plugin-name:skill-name` |132| Plugin | `<plugin>/skills/<skill-name>/SKILL.md` | Dondequiera que el [plugin](/docs/es/plugins/overview) esté habilitado, como `/plugin-name:skill-name` |

133| Cuenta de claude.ai | Skills habilitadas para tu cuenta de claude.ai | Sesiones de Cowork, sesiones en la nube y sesiones de terminal donde inicias sesión con esa cuenta. Consulta [Skills sincronizadas desde claude.ai](#how-synced-skills-behave) |133| Cuenta de claude.ai | Skills habilitadas para tu cuenta de claude.ai | Sesiones de Cowork, sesiones en la nube y sesiones de terminal donde inicias sesión con esa cuenta. Consulta [Skills sincronizadas desde claude.ai](#how-synced-skills-behave) |

134 134 

135Las carpetas de skills también siguen estas reglas:135Las carpetas de skills también siguen estas reglas:

136 136 

137* **Carpetas con enlaces simbólicos**: una entrada `<skill-name>` en la ubicación enterprise, personal o de proyecto puede ser un enlace simbólico a un directorio en otro lugar del disco. Claude Code lee `SKILL.md` del destino y carga la skill una sola vez incluso si varias ubicaciones apuntan al mismo destino. Las skills de plugins [manejan los enlaces simbólicos de manera diferente](/docs/es/plugins-reference#share-files-within-a-marketplace-with-symlinks).137* **Carpetas con enlaces simbólicos**: una entrada `<skill-name>` en la ubicación enterprise, personal o de proyecto puede ser un enlace simbólico a un directorio en otro lugar del disco. Claude Code lee `SKILL.md` del destino y carga la skill una sola vez incluso si varias ubicaciones apuntan al mismo destino. Las skills de plugins [manejan los enlaces simbólicos de manera diferente](/docs/es/plugins/host-marketplace#share-files-within-a-marketplace-with-symlinks).

138* **Nombre reservado**: no nombres una carpeta de skill `synced`, en ninguna capitalización. Claude Code usa `~/.claude/skills/synced/` para [skills descargadas desde claude.ai](#where-synced-skills-load) y omite una skill que crees con ese nombre en las ubicaciones enterprise, personal y de proyecto.138* **Nombre reservado**: no nombres una carpeta de skill `synced`, en ninguna capitalización. Claude Code usa `~/.claude/skills/synced/` para [skills descargadas desde claude.ai](#where-synced-skills-load) y omite una skill que crees con ese nombre en las ubicaciones enterprise, personal y de proyecto.

139* **Archivos de comando**: un archivo Markdown en `.claude/commands/` es el formato más antiguo y aún funciona. Admite el mismo [frontmatter](#frontmatter-reference) excepto `name` y `paths`. Para encontrar el nombre que escribes para invocarlo, consulta [Cómo una skill obtiene su nombre de comando](#how-a-skill-gets-its-command-name). Prefiere una skill para trabajo nuevo, ya que las skills también admiten [archivos de apoyo](#add-supporting-files).139* **Archivos de comando**: un archivo Markdown en `.claude/commands/` es el formato más antiguo y aún funciona. Admite el mismo [frontmatter](#frontmatter-reference) excepto `name` y `paths`. Para encontrar el nombre que escribes para invocarlo, consulta [Cómo una skill obtiene su nombre de comando](#how-a-skill-gets-its-command-name). Prefiere una skill para trabajo nuevo, ya que las skills también admiten [archivos de apoyo](#add-supporting-files).

140* **Carpeta de skill como plugin**: agrega un `.claude-plugin/plugin.json` a una carpeta de skill y se carga como un [plugin](/docs/es/plugins-reference#skills-directory-plugins) llamado `<name>@skills-dir`, para que pueda agrupar agentes, hooks y servidores MCP. En un `.claude/skills/` de un proyecto, esto requiere aceptar primero el diálogo de confianza del espacio de trabajo.140* **Carpeta de skill como plugin**: agrega un `.claude-plugin/plugin.json` a una carpeta de skill y se carga como un [plugin](/docs/es/plugins/loading#plugins-shared-through-a-repository) llamado `<name>@skills-dir`, para que pueda agrupar agentes, hooks y servidores MCP. En un `.claude/skills/` de un proyecto, esto requiere aceptar primero el diálogo de confianza del espacio de trabajo.

141 141 

142<h3 id="discovery-from-parent-and-nested-directories">142<h3 id="discovery-from-parent-and-nested-directories">

143 Carga skills en monorepos y subdirectorios143 Carga skills en monorepos y subdirectorios


275 275 

276Claude Code observa directorios de skills para cambios de archivo, excepto en [modo bare](/docs/es/headless#start-faster-with-bare-mode). Cuando agregas, editas o eliminas una skill bajo `~/.claude/skills/`, el `.claude/skills/` del proyecto, o un `.claude/skills/` dentro de un directorio `--add-dir`, Claude Code recoge el cambio dentro de la sesión actual, sin un reinicio. Si creas un directorio de skills de nivel superior que no existía cuando se inició la sesión, reinicia Claude Code para que pueda observar el nuevo directorio.276Claude Code observa directorios de skills para cambios de archivo, excepto en [modo bare](/docs/es/headless#start-faster-with-bare-mode). Cuando agregas, editas o eliminas una skill bajo `~/.claude/skills/`, el `.claude/skills/` del proyecto, o un `.claude/skills/` dentro de un directorio `--add-dir`, Claude Code recoge el cambio dentro de la sesión actual, sin un reinicio. Si creas un directorio de skills de nivel superior que no existía cuando se inició la sesión, reinicia Claude Code para que pueda observar el nuevo directorio.

277 277 

278La detección de cambios en vivo cubre solo el texto `SKILL.md`. Para una carpeta de skill que también es un [plugin](/docs/es/plugins-reference#skills-directory-plugins), los cambios en `hooks/`, `.mcp.json`, `agents/` y `output-styles/` necesitan `/reload-plugins` para tomar efecto.278La detección de cambios en vivo cubre solo el texto `SKILL.md`. Para una carpeta de skill que también es un [plugin](/docs/es/plugins/loading#plugins-shared-through-a-repository), los cambios en `hooks/`, `.mcp.json`, `agents/` y `output-styles/` necesitan `/reload-plugins` para tomar efecto.

279 279 

280<h3 id="remove-a-skill">280<h3 id="remove-a-skill">

281 Elimina una skill281 Elimina una skill


285 285 

286* **Skill personal o de proyecto**: elimina el directorio de la skill, `~/.claude/skills/<skill-name>/` o `.claude/skills/<skill-name>/`. Claude Code [la elimina de `/skills` en la sesión actual](#live-change-detection); el contenido que Claude Code ya cargó de ella sigue el [ciclo de vida del contenido de la skill](#skill-content-lifecycle).286* **Skill personal o de proyecto**: elimina el directorio de la skill, `~/.claude/skills/<skill-name>/` o `.claude/skills/<skill-name>/`. Claude Code [la elimina de `/skills` en la sesión actual](#live-change-detection); el contenido que Claude Code ya cargó de ella sigue el [ciclo de vida del contenido de la skill](#skill-content-lifecycle).

287* **Skill enterprise**: un administrador elimina el directorio de la skill desde `.claude/skills/` dentro del [directorio de configuración administrada](/docs/es/managed-settings#delivery-mechanisms), por ejemplo `/etc/claude-code/.claude/skills/<skill-name>/` en Linux.287* **Skill enterprise**: un administrador elimina el directorio de la skill desde `.claude/skills/` dentro del [directorio de configuración administrada](/docs/es/managed-settings#delivery-mechanisms), por ejemplo `/etc/claude-code/.claude/skills/<skill-name>/` en Linux.

288* **Skill de plugin**: deshabilita o desinstala el plugin que la proporciona, desde el menú `/plugin` o con `/plugin uninstall <plugin-name>@<marketplace-name>`. Claude Code descarga las skills del plugin cuando [el cambio se aplica](/docs/es/discover-plugins#apply-plugin-changes-without-restarting) o cuando reinicies.288* **Skill de plugin**: deshabilita o desinstala el plugin que la proporciona, desde el menú `/plugin` o con `/plugin uninstall <plugin-name>@<marketplace-name>`. Claude Code descarga las skills del plugin cuando [el cambio se aplica](/docs/es/plugins/cli-reference#reload-plugins) o cuando reinicies.

289* **Skill sincronizada desde claude.ai**: desactiva la skill para tu cuenta de claude.ai, en el mismo lugar donde la [habilitaste](#skills-in-cowork-and-cloud-sessions). Claude Code la elimina de `~/.claude/skills/synced/` la próxima vez que [sincroniza tus skills](#where-synced-skills-load). Si eliminas el directorio manualmente en su lugar, la próxima sincronización lo descarga nuevamente mientras la skill permanece habilitada en claude.ai.289* **Skill sincronizada desde claude.ai**: desactiva la skill para tu cuenta de claude.ai, en el mismo lugar donde la [habilitaste](#skills-in-cowork-and-cloud-sessions). Claude Code la elimina de `~/.claude/skills/synced/` la próxima vez que [sincroniza tus skills](#where-synced-skills-load). Si eliminas el directorio manualmente en su lugar, la próxima sincronización lo descarga nuevamente mientras la skill permanece habilitada en claude.ai.

290* **Skill agrupada**: establece [`disableBundledSkills`](#bundled-skills) en `true` para desactivar las skills agrupadas, o establece una skill en `"off"` en [`skillOverrides`](#override-skill-visibility-from-settings) para ocultarla.290* **Skill agrupada**: establece [`disableBundledSkills`](#bundled-skills) en `true` para desactivar las skills agrupadas, o establece una skill en `"off"` en [`skillOverrides`](#override-skill-visibility-from-settings) para ocultarla.

291 291 


389 389 

390| Ruta de distribución | Campos de frontmatter que puedes usar |390| Ruta de distribución | Campos de frontmatter que puedes usar |

391| :---------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------- |391| :---------------------------------------------------------------------------------------------------------------------------------------------------- | :----------------------------------------------------------------------------- |

392| Skills de Claude Code en [cualquier nivel](#where-skills-live), incluidos skills de [plugin](/docs/es/plugins) | Cada campo en la tabla anterior |392| Skills de Claude Code en [cualquier nivel](#where-skills-live), incluidos skills de [plugin](/docs/es/plugins/overview) | Cada campo en la tabla anterior |

393| Cargas de skills de claude.ai, la API de Skills y empaquetamiento con `package_skill.py` de [anthropics/skills](https://github.com/anthropics/skills) | `name`, `description`, `license`, `compatibility`, `metadata`, `allowed-tools` |393| Cargas de skills de claude.ai, la API de Skills y empaquetamiento con `package_skill.py` de [anthropics/skills](https://github.com/anthropics/skills) | `name`, `description`, `license`, `compatibility`, `metadata`, `allowed-tools` |

394 394 

395Cuando habilitas un skill personal para tu cuenta de claude.ai, por ejemplo para usarlo en [sesiones de Cowork y nube](#skills-in-cowork-and-cloud-sessions) e incluidas rutinas, lo cargas en claude.ai, por lo que se aplican las mismas reglas.395Cuando habilitas un skill personal para tu cuenta de claude.ai, por ejemplo para usarlo en [sesiones de Cowork y nube](#skills-in-cowork-and-cloud-sessions) e incluidas rutinas, lo cargas en claude.ai, por lo que se aplican las mismas reglas.


411La tabla a continuación muestra de dónde proviene el nombre del comando para cada diseño:411La tabla a continuación muestra de dónde proviene el nombre del comando para cada diseño:

412 412 

413| Ubicación del skill | Fuente del nombre del comando | Ejemplo |413| Ubicación del skill | Fuente del nombre del comando | Ejemplo |

414| :------------------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------ | :---------------------------------------------------------------------------------------------------------------------------------------------------- |414| :------------------------------------------------------------------------------------------------ | :------------------------------------------------------------------------------------------------------------------------ | :-------------------------------------------------------------------------------------------------------------------------------------------- |

415| Directorio de skill bajo `~/.claude/skills/` o `.claude/skills/` | Nombre del directorio | `.claude/skills/deploy-staging/SKILL.md` → `/deploy-staging` |415| Directorio de skill bajo `~/.claude/skills/` o `.claude/skills/` | Nombre del directorio | `.claude/skills/deploy-staging/SKILL.md` → `/deploy-staging` |

416| Directorio [anidado](#where-skills-live) `.claude/skills/`, cuando el nombre choca con otro skill | Ruta del subdirectorio relativa al directorio de trabajo, luego el nombre del directorio de skill | `apps/web/.claude/skills/deploy/SKILL.md` → `/apps/web:deploy` |416| Directorio [anidado](#where-skills-live) `.claude/skills/`, cuando el nombre choca con otro skill | Ruta del subdirectorio relativa al directorio de trabajo, luego el nombre del directorio de skill | `apps/web/.claude/skills/deploy/SKILL.md` → `/apps/web:deploy` |

417| Archivo bajo `.claude/commands/` | Nombre del archivo sin extensión | `.claude/commands/deploy.md` → `/deploy` |417| Archivo bajo `.claude/commands/` | Nombre del archivo sin extensión | `.claude/commands/deploy.md` → `/deploy` |

418| Archivo en un subdirectorio de `.claude/commands/` | Ruta del subdirectorio relativa a `commands/` con cada `/` reemplazado por `:`, luego el nombre del archivo sin extensión | `.claude/commands/frontend/component.md` → `/frontend:component` |418| Archivo en un subdirectorio de `.claude/commands/` | Ruta del subdirectorio relativa a `commands/` con cada `/` reemplazado por `:`, luego el nombre del archivo sin extensión | `.claude/commands/frontend/component.md` → `/frontend:component` |

419| Subdirectorio `skills/` del plugin | Frontmatter `name` o el nombre del directorio, con espacio de nombres por plugin | `my-plugin/skills/review/SKILL.md` → `/my-plugin:review`, o `/my-plugin:fancy` con `name: fancy` |419| Subdirectorio `skills/` del plugin | Frontmatter `name` o el nombre del directorio, con espacio de nombres por plugin | `my-plugin/skills/review/SKILL.md` → `/my-plugin:review`, o `/my-plugin:fancy` con `name: fancy` |

420| `SKILL.md` raíz del plugin | Frontmatter `name`, con el nombre del directorio del plugin como alternativa | `my-plugin/SKILL.md` con `name: review` → `/my-plugin:review`. Consulta [Reglas de comportamiento de ruta](/docs/es/plugins-reference#path-behavior-rules) |420| `SKILL.md` raíz del plugin | Frontmatter `name`, con el nombre del directorio del plugin como alternativa | `my-plugin/SKILL.md` con `name: review` → `/my-plugin:review`. Consulta [un skill único en la raíz del plugin](/docs/es/plugins/components#skills) |

421| Skill [sincronizado desde claude.ai](#how-synced-skills-behave) | El nombre del skill en tu cuenta de claude.ai, con prefijo `anthropic-skills:` | Skill de cuenta `deploy` → `/anthropic-skills:deploy`, o `/deploy` mientras ningún otro comando use ese nombre |421| Skill [sincronizado desde claude.ai](#how-synced-skills-behave) | El nombre del skill en tu cuenta de claude.ai, con prefijo `anthropic-skills:` | Skill de cuenta `deploy` → `/anthropic-skills:deploy`, o `/deploy` mientras ningún otro comando use ese nombre |

422 422 

423En un skill de plugin, el frontmatter `name` reemplaza el nombre del directorio en el último segmento del comando, por lo que `my-plugin/skills/review/SKILL.md` con `name: fancy` se convierte en `/my-plugin:fancy`. El comando desnudo `/fancy` también invoca el skill a menos que otro comando ya use ese nombre. Si el `name` que escribes ya comienza con el prefijo propio del plugin, Claude Code no añade el prefijo nuevamente en v2.1.246 o posterior. Por ejemplo, `name: my-plugin:fancy` sigue siendo `/my-plugin:fancy`. De v2.1.216 a v2.1.245, Claude Code duplicaba el prefijo cuando el `name` ya lo llevaba.423En un skill de plugin, el frontmatter `name` reemplaza el nombre del directorio en el último segmento del comando, por lo que `my-plugin/skills/review/SKILL.md` con `name: fancy` se convierte en `/my-plugin:fancy`. El comando desnudo `/fancy` también invoca el skill a menos que otro comando ya use ese nombre. Si el `name` que escribes ya comienza con el prefijo propio del plugin, Claude Code no añade el prefijo nuevamente en v2.1.246 o posterior. Por ejemplo, `name: my-plugin:fancy` sigue siendo `/my-plugin:fancy`. De v2.1.216 a v2.1.245, Claude Code duplicaba el prefijo cuando el `name` ya lo llevaba.


442| `${CLAUDE_EFFORT}` | El nivel de esfuerzo actual: `low`, `medium`, `high`, `xhigh` o `max`. Ultracode no es un nivel distinto e informa como `xhigh`. Úsalo para adaptar instrucciones de skill a la configuración de esfuerzo activa. |442| `${CLAUDE_EFFORT}` | El nivel de esfuerzo actual: `low`, `medium`, `high`, `xhigh` o `max`. Ultracode no es un nivel distinto e informa como `xhigh`. Úsalo para adaptar instrucciones de skill a la configuración de esfuerzo activa. |

443| `${CLAUDE_SKILL_DIR}` | El directorio que contiene el archivo `SKILL.md` del skill. Para skills de plugin, este es el subdirectorio del skill dentro del plugin, no la raíz del plugin. Úsalo en comandos de inyección bash para hacer referencia a scripts o archivos incluidos con el skill, independientemente del directorio de trabajo actual. |443| `${CLAUDE_SKILL_DIR}` | El directorio que contiene el archivo `SKILL.md` del skill. Para skills de plugin, este es el subdirectorio del skill dentro del plugin, no la raíz del plugin. Úsalo en comandos de inyección bash para hacer referencia a scripts o archivos incluidos con el skill, independientemente del directorio de trabajo actual. |

444| `${CLAUDE_PROJECT_DIR}` | El directorio raíz del proyecto. Esta es la misma ruta que [hooks](/docs/es/hooks#reference-scripts-by-path) y servidores MCP reciben como `CLAUDE_PROJECT_DIR`. Úsalo para hacer referencia a scripts o archivos locales del proyecto, como `${CLAUDE_PROJECT_DIR}/.claude/hooks/helper.sh`, independientemente de dónde esté instalado el skill. |444| `${CLAUDE_PROJECT_DIR}` | El directorio raíz del proyecto. Esta es la misma ruta que [hooks](/docs/es/hooks#reference-scripts-by-path) y servidores MCP reciben como `CLAUDE_PROJECT_DIR`. Úsalo para hacer referencia a scripts o archivos locales del proyecto, como `${CLAUDE_PROJECT_DIR}/.claude/hooks/helper.sh`, independientemente de dónde esté instalado el skill. |

445| `${CLAUDE_PLUGIN_ROOT}` | El directorio de instalación del plugin. Se sustituye solo en skills de plugin. Úsalo para hacer referencia a scripts o archivos incluidos en cualquier lugar del plugin, incluidos recursos compartidos entre los skills del plugin. Consulta [variables de entorno del plugin](/docs/es/plugins-reference#environment-variables). |445| `${CLAUDE_PLUGIN_ROOT}` | El directorio de instalación del plugin. Se sustituye solo en skills de plugin. Úsalo para hacer referencia a scripts o archivos incluidos en cualquier lugar del plugin, incluidos recursos compartidos entre los skills del plugin. Consulta [variables de entorno del plugin](/docs/es/plugins/manifest-reference#environment-variables). |

446| `${CLAUDE_PLUGIN_DATA}` | El [directorio de datos persistentes](/docs/es/plugins-reference#persistent-data-directory) del plugin, que sobrevive a las actualizaciones del plugin. Se sustituye solo en skills de plugin. Úsalo para hacer referencia a dependencias instaladas, archivos generados o cachés que deben sobrevivir a una actualización. |446| `${CLAUDE_PLUGIN_DATA}` | El [directorio de datos persistentes](/docs/es/plugins/components#path-variables-and-persistent-data) del plugin, que sobrevive a las actualizaciones del plugin. Se sustituye solo en skills de plugin. Úsalo para hacer referencia a dependencias instaladas, archivos generados o cachés que deben sobrevivir a una actualización. |

447 447 

448Claude Code sustituye `${CLAUDE_SKILL_DIR}` y `${CLAUDE_PROJECT_DIR}` en dos lugares: el contenido markdown del skill y las reglas Bash en el frontmatter [`allowed-tools`](#frontmatter-reference). En un skill de plugin, Claude Code sustituye `${CLAUDE_PLUGIN_ROOT}` y `${CLAUDE_PLUGIN_DATA}` en los mismos dos lugares. Usar la misma variable en ambos lugares permite que un skill ejecute un script incluido sin un aviso de permiso. El siguiente skill muestra el patrón:448Claude Code sustituye `${CLAUDE_SKILL_DIR}` y `${CLAUDE_PROJECT_DIR}` en dos lugares: el contenido markdown del skill y las reglas Bash en el frontmatter [`allowed-tools`](#frontmatter-reference). En un skill de plugin, Claude Code sustituye `${CLAUDE_PLUGIN_ROOT}` y `${CLAUDE_PLUGIN_DATA}` en los mismos dos lugares. Usar la misma variable en ambos lugares permite que un skill ejecute un script incluido sin un aviso de permiso. El siguiente skill muestra el patrón:

449 449 


892 892 

893La verificación de ambas es una comparación de línea base. Recopile algunos prompts realistas, ejecute cada uno en una sesión nueva con la skill disponible y nuevamente con ella [deshabilitada](#override-skill-visibility-from-settings), y compare los resultados. Una sesión nueva es importante porque el contexto residual de la creación de la skill enmascarará las brechas en las instrucciones escritas.893La verificación de ambas es una comparación de línea base. Recopile algunos prompts realistas, ejecute cada uno en una sesión nueva con la skill disponible y nuevamente con ella [deshabilitada](#override-skill-visibility-from-settings), y compare los resultados. Una sesión nueva es importante porque el contexto residual de la creación de la skill enmascarará las brechas en las instrucciones escritas.

894 894 

895Dos herramientas automatizan esa comparación. Para una skill que se distribuye en un [plugin](/docs/es/plugins), [`claude plugin eval`](/docs/es/plugin-evals) ejecuta cada prompt en una sesión aislada con y sin el plugin, la califica con evaluadores que usted define o que escribe por usted, y sale con un código distinto de cero por debajo de un umbral para que pueda controlar su CI. Para iterar sobre una única skill dentro de una conversación de Claude Code, el plugin skill-creator a continuación ejecuta un bucle similar con su propio formato `evals/evals.json`. Los dos formatos no son intercambiables.895Dos herramientas automatizan esa comparación. Para una skill que se distribuye en un [plugin](/docs/es/plugins/overview), [`claude plugin eval`](/docs/es/plugin-evals) ejecuta cada prompt en una sesión aislada con y sin el plugin, la califica con evaluadores que usted define o que escribe por usted, y sale con un código distinto de cero por debajo de un umbral para que pueda controlar su CI. Para iterar sobre una única skill dentro de una conversación de Claude Code, el plugin skill-creator a continuación ejecuta un bucle similar con su propio formato `evals/evals.json`. Los dos formatos no son intercambiables.

896 896 

897<h3 id="run-evals-with-skill-creator">897<h3 id="run-evals-with-skill-creator">

898 Ejecutar evals con skill-creator898 Ejecutar evals con skill-creator


907Si la instalación falla, haga coincidir el mensaje que Claude Code reporta:907Si la instalación falla, haga coincidir el mensaje que Claude Code reporta:

908 908 

909* `Marketplace "claude-plugins-official" not found`: agregue el marketplace con `/plugin marketplace add anthropics/claude-plugins-official`, luego reintente la instalación.909* `Marketplace "claude-plugins-official" not found`: agregue el marketplace con `/plugin marketplace add anthropics/claude-plugins-official`, luego reintente la instalación.

910* El plugin [no se encuentra en el marketplace](/docs/es/discover-plugins#install-plugins): verifique el nombre del plugin.910* El plugin [no se encuentra en el marketplace](/docs/es/plugins/install#install-a-plugin): verifique el nombre del plugin.

911 911 

912Si el resumen de instalación reporta `Run /reload-plugins to activate.`, Claude Code entonces ejecuta esa recarga para usted. Si la recarga advierte que su próximo mensaje volvería a leer la conversación, ejecute `/reload-plugins --force` para que las skills del plugin estén disponibles en la sesión actual. Luego pida a Claude que evalúe una skill existente, por ejemplo `evaluate my summarize-changes skill with skill-creator`. El plugin lo guía a través de la escritura de casos de prueba y ejecuta el bucle:912Si el resumen de instalación reporta `Run /reload-plugins to activate.`, Claude Code entonces ejecuta esa recarga para usted. Si la recarga advierte que su próximo mensaje volvería a leer la conversación, ejecute `/reload-plugins --force` para que las skills del plugin estén disponibles en la sesión actual. Luego pida a Claude que evalúe una skill existente, por ejemplo `evaluate my summarize-changes skill with skill-creator`. El plugin lo guía a través de la escritura de casos de prueba y ejecuta el bucle:

913 913 


928Los skills se pueden distribuir en diferentes ámbitos según su audiencia:928Los skills se pueden distribuir en diferentes ámbitos según su audiencia:

929 929 

930* **Skills de proyecto**: Confirmar `.claude/skills/` en el control de versiones930* **Skills de proyecto**: Confirmar `.claude/skills/` en el control de versiones

931* **Plugins**: Crear un directorio `skills/` en su [plugin](/docs/es/plugins)931* **Plugins**: Crear un directorio `skills/` en su [plugin](/docs/es/plugins/overview)

932* **Administrado**: Implementar en toda la organización a través de [configuración administrada](/docs/es/managed-settings)932* **Administrado**: Implementar en toda la organización a través de [configuración administrada](/docs/es/managed-settings)

933 933 

934<h3 id="generate-visual-output">934<h3 id="generate-visual-output">


1143 1143 

1144Si el skill se distribuye en un plugin, puede medir con qué frecuencia se activa en solicitudes realistas en lugar de verificar una por una: escriba un caso de evaluación con un [calificador `tool_used: Skill`](/docs/es/plugin-evals#create-your-first-eval-suite) y ejecútelo con `claude plugin eval` después de cada cambio de descripción.1144Si el skill se distribuye en un plugin, puede medir con qué frecuencia se activa en solicitudes realistas en lugar de verificar una por una: escriba un caso de evaluación con un [calificador `tool_used: Skill`](/docs/es/plugin-evals#create-your-first-eval-suite) y ejecútelo con `claude plugin eval` después de cada cambio de descripción.

1145 1145 

1146Para encontrar archivos `SKILL.md` cuyo frontmatter no se analiza, ejecute [`claude plugin validate`](/docs/es/plugin-marketplaces#validate-a-plugin-or-a-directory-without-a-manifest) en el directorio de skills, por ejemplo `claude plugin validate .claude/skills` para skills de proyecto o `claude plugin validate ~/.claude/skills` para skills personales. Requiere Claude Code v2.1.233 o posterior.1146Para encontrar archivos `SKILL.md` cuyo frontmatter no se analiza, ejecute [`claude plugin validate`](/docs/es/plugins/cli-reference#validate-a-directory) en el directorio de skills, por ejemplo `claude plugin validate .claude/skills` para skills de proyecto o `claude plugin validate ~/.claude/skills` para skills personales. Requiere Claude Code v2.1.233 o posterior.

1147 1147 

1148<h3 id="skill-triggers-too-often">1148<h3 id="skill-triggers-too-often">

1149 Skill se activa demasiado a menudo1149 Skill se activa demasiado a menudo


1184* **[Evaluating skill output quality](https://agentskills.io/skill-creation/evaluating-skills)**: el formato del archivo eval y el flujo de trabajo de iteración en agentskills.io1184* **[Evaluating skill output quality](https://agentskills.io/skill-creation/evaluating-skills)**: el formato del archivo eval y el flujo de trabajo de iteración en agentskills.io

1185* **[Skill authoring best practices](https://platform.claude.com/docs/en/agents-and-tools/agent-skills/best-practices)**: orientación de escritura que se aplica en productos Claude1185* **[Skill authoring best practices](https://platform.claude.com/docs/en/agents-and-tools/agent-skills/best-practices)**: orientación de escritura que se aplica en productos Claude

1186* **[Subagents](/docs/es/sub-agents)**: delega tareas a agents especializados1186* **[Subagents](/docs/es/sub-agents)**: delega tareas a agents especializados

1187* **[Plugins](/docs/es/plugins)**: empaqueta y distribuye skills con otras extensiones1187* **[Plugins](/docs/es/plugins/overview)**: empaqueta y distribuye skills con otras extensiones

1188* **[Hooks](/docs/es/hooks)**: automatiza flujos de trabajo alrededor de eventos de herramientas1188* **[Hooks](/docs/es/hooks)**: automatiza flujos de trabajo alrededor de eventos de herramientas

1189* **[Memory](/docs/es/memory)**: gestiona archivos CLAUDE.md para contexto persistente1189* **[Memory](/docs/es/memory)**: gestiona archivos CLAUDE.md para contexto persistente

1190* **[Comandos](/docs/es/commands)**: referencia para comandos integrados y skills agrupados1190* **[Comandos](/docs/es/commands)**: referencia para comandos integrados y skills agrupados

statusline.md +1 −1

Details

1142 1142 

1143Escribe una línea JSON a stdout por cada fila que desees anular, en la forma `{"id": "<task id>", "content": "<row body>"}`. La cadena `content` se renderiza tal cual, incluidos colores ANSI e hipervínculos OSC 8. Omite el `id` de una tarea para mantener el renderizado predeterminado para esa fila; emite una cadena `content` vacía para ocultarla.1143Escribe una línea JSON a stdout por cada fila que desees anular, en la forma `{"id": "<task id>", "content": "<row body>"}`. La cadena `content` se renderiza tal cual, incluidos colores ANSI e hipervínculos OSC 8. Omite el `id` de una tarea para mantener el renderizado predeterminado para esa fila; emite una cadena `content` vacía para ocultarla.

1144 1144 

1145Las mismas puertas de confianza, `disableAllHooks`, y [`allowManagedHooksOnly`](/docs/es/settings-reference#allowmanagedhooksonly) que se aplican a `statusLine` se aplican aquí. Los plugins pueden enviar una `subagentStatusLine` predeterminada en su [`settings.json`](/docs/es/plugins-reference#standard-plugin-layout), pero a diferencia de los hooks, los valores de plugins no se ejecutan bajo `allowManagedHooksOnly` incluso cuando el plugin está forzadamente habilitado en la configuración gestionada `enabledPlugins`.1145Las mismas puertas de confianza, `disableAllHooks`, y [`allowManagedHooksOnly`](/docs/es/settings-reference#allowmanagedhooksonly) que se aplican a `statusLine` se aplican aquí. Los plugins pueden enviar una `subagentStatusLine` predeterminada en su [`settings.json`](/docs/es/plugins/manifest-reference#standard-layout), pero a diferencia de los hooks, los valores de plugins no se ejecutan bajo `allowManagedHooksOnly` incluso cuando el plugin está forzadamente habilitado en la configuración gestionada `enabledPlugins`.

1146 1146 

1147<h2 id="tips">1147<h2 id="tips">

1148 Consejos1148 Consejos

sub-agents.md +16 −14

Details

174| Bandera CLI `--agents` | Sesión actual | 2 | Pasar JSON al lanzar Claude Code |174| Bandera CLI `--agents` | Sesión actual | 2 | Pasar JSON al lanzar Claude Code |

175| `.claude/agents/` | Proyecto actual | 3 | Pedir a Claude, o crear el archivo manualmente |175| `.claude/agents/` | Proyecto actual | 3 | Pedir a Claude, o crear el archivo manualmente |

176| `~/.claude/agents/` | Todos sus proyectos | 4 | Pedir a Claude, o crear el archivo manualmente |176| `~/.claude/agents/` | Todos sus proyectos | 4 | Pedir a Claude, o crear el archivo manualmente |

177| Directorio `agents/` del plugin | Donde el plugin está habilitado | 5 (más baja) | Instalado con [plugins](/docs/es/plugins) |177| Directorio `agents/` del plugin | Donde el plugin está habilitado | 5 (más baja) | Instalado con [plugins](/docs/es/plugins/overview) |

178 178 

179**Los subagentes de proyecto** (`.claude/agents/`) son ideales para subagentes específicos de una base de código. Verifíquelos en control de versiones para que su equipo pueda usarlos y mejorarlos colaborativamente.179**Los subagentes de proyecto** (`.claude/agents/`) son ideales para subagentes específicos de una base de código. Verifíquelos en control de versiones para que su equipo pueda usarlos y mejorarlos colaborativamente.

180 180 

181Los subagentes de proyecto se descubren caminando hacia arriba desde el directorio de trabajo actual, por lo que cada `.claude/agents/` entre allí y la raíz del repositorio se escanea. A partir de v2.1.178, cuando más de uno de estos directorios anidados define el mismo `name`, Claude Code usa la definición más cercana al directorio de trabajo.181Los subagentes de proyecto se descubren caminando hacia arriba desde el directorio de trabajo actual, por lo que cada `.claude/agents/` entre allí y la raíz del repositorio se escanea. Cuando más de uno de estos directorios anidados define el mismo `name`, Claude Code usa la definición más cercana al directorio de trabajo.

182 182 

183Cuando agrega un directorio con `--add-dir` o `/add-dir`, Claude Code también carga su carpeta `.claude/agents/`, junto con sus subagentes de proyecto. Consulte [Directorios adicionales](/docs/es/permissions#additional-directories-grant-file-access-not-configuration) para ver qué otros tipos de configuración se cargan desde `--add-dir`. Para compartir subagentes entre proyectos sin `--add-dir`, use `~/.claude/agents/` o un [plugin](/docs/es/plugins).183Cuando agrega un directorio con `--add-dir` o `/add-dir`, Claude Code también carga su carpeta `.claude/agents/`, junto con sus subagentes de proyecto. Consulte [Directorios adicionales](/docs/es/permissions#additional-directories-grant-file-access-not-configuration) para ver qué otros tipos de configuración se cargan desde `--add-dir`. Para compartir subagentes entre proyectos sin `--add-dir`, use `~/.claude/agents/` o un [plugin](/docs/es/plugins/overview).

184 184 

185**Los subagentes de usuario** (`~/.claude/agents/`) son subagentes personales disponibles en todos sus proyectos.185**Los subagentes de usuario** (`~/.claude/agents/`) son subagentes personales disponibles en todos sus proyectos.

186 186 


238 238 

239**Los subagentes administrados** son implementados por administradores de la organización. Coloque archivos markdown en `.claude/agents/` dentro del [directorio de configuración administrada](/docs/es/managed-settings#delivery-mechanisms), usando el mismo formato de frontmatter que los subagentes de proyecto y usuario. Las definiciones administradas tienen precedencia sobre los subagentes de proyecto y usuario con el mismo nombre.239**Los subagentes administrados** son implementados por administradores de la organización. Coloque archivos markdown en `.claude/agents/` dentro del [directorio de configuración administrada](/docs/es/managed-settings#delivery-mechanisms), usando el mismo formato de frontmatter que los subagentes de proyecto y usuario. Las definiciones administradas tienen precedencia sobre los subagentes de proyecto y usuario con el mismo nombre.

240 240 

241**Los subagentes de plugin** provienen de [plugins](/docs/es/plugins) que ha instalado. Se cargan automáticamente junto a sus subagentes personalizados y aparecen en la lista de @-mention bajo su nombre con alcance. Consulte la [referencia de componentes de plugin](/docs/es/plugins-reference#agents) para obtener detalles sobre la creación de subagentes de plugin.241**Los subagentes de plugin** provienen de [plugins](/docs/es/plugins/overview) que ha instalado. Se cargan automáticamente junto a sus subagentes personalizados y aparecen en la lista de @-mention bajo su nombre con alcance. Consulte la [referencia de componentes de plugin](/docs/es/plugins/components#agents) para obtener detalles sobre la creación de subagentes de plugin.

242 242 

243<Note>243<Note>

244 Por razones de seguridad, los subagentes de plugin no soportan los campos de frontmatter `hooks`, `mcpServers`, o `permissionMode`. Estos campos se ignoran al cargar agentes desde un plugin. Si los necesita, copie el archivo del agente en `.claude/agents/` o `~/.claude/agents/`. También puede agregar reglas a [`permissions.allow`](/docs/es/settings-reference#permissions-allow) en `settings.json` o `settings.local.json`, pero estas reglas se aplican a toda la sesión, no solo al subagente del plugin.244 Por razones de seguridad, los subagentes de plugin no soportan los campos de frontmatter `hooks`, `mcpServers`, o `permissionMode`. Estos campos se ignoran al cargar agentes desde un plugin. Si los necesita, copie el archivo del agente en `.claude/agents/` o `~/.claude/agents/`. También puede agregar reglas a [`permissions.allow`](/docs/es/settings-reference#permissions-allow) en `settings.json` o `settings.local.json`, pero estas reglas se aplican a toda la sesión, no solo al subagente del plugin.


305 305 

306| Campo | Requerido | Descripción |306| Campo | Requerido | Descripción |

307| :---------------- | :-------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |307| :---------------- | :-------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

308| `name` | Sí | Identificador único, como `code-reviewer` o `reviewer-v2`. [Hooks](/docs/es/hooks#subagentstart) reciben este valor como `agent_type`. El nombre del archivo no tiene que coincidir. Los nombres no pueden contener `:`, que está reservado para [identificadores con alcance de plugin](/docs/es/plugins) como `my-plugin:reviewer`. Claude Code no carga un archivo cuyo nombre contiene uno y registra un error en el registro de depuración. Antes de v2.1.218, tales nombres fueron aceptados |308| `name` | Sí | Identificador único, como `code-reviewer` o `reviewer-v2`. [Hooks](/docs/es/hooks#subagentstart) reciben este valor como `agent_type`. El nombre del archivo no tiene que coincidir. Los nombres no pueden contener `:`, que está reservado para [identificadores con alcance de plugin](/docs/es/plugins/overview) como `my-plugin:reviewer`. Claude Code no carga un archivo cuyo nombre contiene uno y registra un error en el registro de depuración. Antes de v2.1.218, tales nombres fueron aceptados |

309| `description` | Sí | Cuándo Claude debe delegar en este subagente |309| `description` | Sí | Cuándo Claude debe delegar en este subagente |

310| `tools` | No | [Herramientas](#available-tools) que el subagente puede usar, como una cadena separada por comas como `Read, Grep, Bash` o una lista YAML. Hereda todas las herramientas disponibles para subagentes si se omite. Si ninguna entrada en la lista se resuelve a una herramienta, el subagente generalmente [falla al lanzarse](/docs/es/errors#agent-would-be-spawned-with-zero-tools) con un error nombrando las entradas. Para precargar Skills en el contexto, use el campo `skills` en lugar de listar `Skill` aquí |310| `tools` | No | [Herramientas](#available-tools) que el subagente puede usar, como una cadena separada por comas como `Read, Grep, Bash` o una lista YAML. Hereda todas las herramientas disponibles para subagentes si se omite. Si ninguna entrada en la lista se resuelve a una herramienta, el subagente generalmente [falla al lanzarse](/docs/es/errors#agent-would-be-spawned-with-zero-tools) con un error nombrando las entradas. Para precargar Skills en el contexto, use el campo `skills` en lugar de listar `Skill` aquí |

311| `disallowedTools` | No | Herramientas a denegar, eliminadas de la lista heredada o especificada. Mismo formato que `tools`. Una entrada con un especificador, como `Bash(git push *)`, aún [elimina la herramienta completa](#available-tools) |311| `disallowedTools` | No | Herramientas a denegar, eliminadas de la lista heredada o especificada. Mismo formato que `tools`. Una entrada con un especificador, como `Bash(git push *)`, aún [elimina la herramienta completa](#available-tools) |


349 349 

350Para ver el registro de depuración, ejecute Claude Code con `--debug`.350Para ver el registro de depuración, ejecute Claude Code con `--debug`.

351 351 

352Un [subagente de plugin](/docs/es/plugins-reference#agents) cuyo frontmatter no tiene `name` o no se analiza aún se carga, bajo su nombre de archivo.352Un [subagente de plugin](/docs/es/plugins/components#agents) cuyo frontmatter no tiene `name` o no se analiza aún se carga, bajo su nombre de archivo.

353 353 

354<h5 id="check-an-agents-directory-before-a-session">354<h5 id="check-an-agents-directory-before-a-session">

355 Verificar un directorio `agents` antes de una sesión355 Verificar un directorio `agents` antes de una sesión

356</h5>356</h5>

357 357 

358Para encontrar archivos en un directorio `agents` cuyo frontmatter no se analiza, ejecute `claude plugin validate` contra el directorio, por ejemplo `.claude/agents` o `~/.claude/agents`. Claude Code verifica solo [el directorio que nombra](/docs/es/plugin-marketplaces#validate-a-plugin-or-a-directory-without-a-manifest), y no marca un archivo cuyo frontmatter se analiza pero no tiene `name`. Requiere Claude Code v2.1.233 o posterior.358Para encontrar archivos en un directorio `agents` cuyo frontmatter no se analiza, ejecute `claude plugin validate` contra el directorio, por ejemplo `.claude/agents` o `~/.claude/agents`. Claude Code verifica solo [el directorio que nombra](/docs/es/plugins/cli-reference#validate-a-directory), y no marca un archivo cuyo frontmatter se analiza pero no tiene `name`. Requiere Claude Code v2.1.233 o posterior.

359 359 

360<h3 id="choose-a-model">360<h3 id="choose-a-model">

361 Elegir un modelo361 Elegir un modelo


573* Un nombre que hace referencia a un servidor que ya configuró573* Un nombre que hace referencia a un servidor que ya configuró

574* Un servidor en línea en un archivo de agente desde `~/.claude/agents/`, en uno que pasa con `--agents` o la opción `agents` del SDK, o en uno que la configuración administrada proporciona574* Un servidor en línea en un archivo de agente desde `~/.claude/agents/`, en uno que pasa con `--agents` o la opción `agents` del SDK, o en uno que la configuración administrada proporciona

575 575 

576A partir de v2.1.153, las restricciones de MCP que se aplican a la sesión principal también cubren servidores declarados en frontmatter de subagentes:576Las restricciones de MCP que se aplican a la sesión principal también cubren servidores declarados en frontmatter de subagentes:

577 577 

578* [`--strict-mcp-config`](/docs/es/cli-reference) y [`--bare`](/docs/es/cli-reference)578* [`--strict-mcp-config`](/docs/es/cli-reference) y [`--bare`](/docs/es/cli-reference)

579* [Configuración de MCP administrada empresarial](/docs/es/managed-mcp)579* [Configuración de MCP administrada empresarial](/docs/es/managed-mcp)


820| `SubagentStart` | Nombre de tipo de agente | Cuando un subagente comienza la ejecución |820| `SubagentStart` | Nombre de tipo de agente | Cuando un subagente comienza la ejecución |

821| `SubagentStop` | Nombre de tipo de agente | Cuando un subagente se completa |821| `SubagentStop` | Nombre de tipo de agente | Cuando un subagente se completa |

822 822 

823Ambos eventos soportan matchers para dirigirse a tipos de agentes específicos por nombre. El valor del matcher es el `name` del frontmatter del agente para subagentes a nivel de proyecto y usuario, o el identificador con alcance de plugin como `my-plugin:db-agent` para [subagentes de plugin](/docs/es/plugins). Un nombre con alcance contiene dos puntos, por lo que se evalúa como una [expresión regular sin anclar](/docs/es/hooks#matcher-patterns); anclarlo con `^` y `$`, como en `^my-plugin:db-agent$`, para coincidir solo con ese agente.823Ambos eventos soportan matchers para dirigirse a tipos de agentes específicos por nombre. El valor del matcher es el `name` del frontmatter del agente para subagentes a nivel de proyecto y usuario, o el identificador con alcance de plugin como `my-plugin:db-agent` para [subagentes de plugin](/docs/es/plugins/components#agents). Un nombre con alcance contiene dos puntos, por lo que se evalúa como una [expresión regular sin anclar](/docs/es/hooks#matcher-patterns); anclarlo con `^` y `$`, como en `^my-plugin:db-agent$`, para coincidir solo con ese agente.

824 824 

825Este ejemplo ejecuta un script de configuración solo cuando el subagente `db-agent` comienza, y un script de limpieza cuando cualquier subagente se detiene:825Este ejemplo ejecuta un script de configuración solo cuando el subagente `db-agent` comienza, y un script de limpieza cuando cualquier subagente se detiene:

826 826 


862 862 

863Mantén las descripciones breves: Claude Code muestra una advertencia de inicio cuando las descripciones combinadas de tus subagentes superan el [límite de 15,000 tokens](/docs/es/errors#agent-descriptions-are-over-the-15000-token-limit), y aún así carga todos los subagentes.863Mantén las descripciones breves: Claude Code muestra una advertencia de inicio cuando las descripciones combinadas de tus subagentes superan el [límite de 15,000 tokens](/docs/es/errors#agent-descriptions-are-over-the-15000-token-limit), y aún así carga todos los subagentes.

864 864 

865Si el subagente se distribuye en un [plugin](/docs/es/plugins/overview), puedes medir con qué fiabilidad Claude delega a él en solicitudes realistas en lugar de verificar una a la vez: [`claude plugin eval`](/docs/es/plugin-evals) ejecuta cada solicitud con y sin el plugin y califica los resultados.

866 

865<h3 id="invoke-subagents-explicitly">867<h3 id="invoke-subagents-explicitly">

866 Invocar subagentes explícitamente868 Invocar subagentes explícitamente

867</h3>869</h3>


887 889 

888Tu mensaje completo aún va a Claude, que escribe el símbolo del sistema de la tarea del subagente en función de lo que solicitaste. El @-mention controla qué subagente invoca Claude, no qué símbolo del sistema recibe.890Tu mensaje completo aún va a Claude, que escribe el símbolo del sistema de la tarea del subagente en función de lo que solicitaste. El @-mention controla qué subagente invoca Claude, no qué símbolo del sistema recibe.

889 891 

890Los subagentes proporcionados por un [plugin](/docs/es/plugins) habilitado aparecen en el typeahead bajo su nombre con alcance, como `my-plugin:code-reviewer` o `my-plugin:review:security` cuando el plugin [organiza agentes en subcarpetas](#choose-the-subagent-scope). Los subagentes de fondo nombrados que se ejecutan actualmente en la sesión también aparecen en el typeahead, mostrando su estado junto al nombre.892Los subagentes proporcionados por un [plugin](/docs/es/plugins/overview) habilitado aparecen en el typeahead bajo su nombre con alcance, como `my-plugin:code-reviewer` o `my-plugin:review:security` cuando el plugin [organiza agentes en subcarpetas](#choose-the-subagent-scope). Los subagentes de fondo nombrados que se ejecutan actualmente en la sesión también aparecen en el typeahead, mostrando su estado junto al nombre.

891 893 

892También puedes escribir la mención manualmente sin usar el selector: `@agent-<name>` para subagentes locales, o `@agent-` seguido del nombre con alcance para subagentes de plugin, por ejemplo `@agent-my-plugin:code-reviewer`. Mientras escribes esta forma, el typeahead muestra coincidencias de archivos en lugar de agentes. La mención del agente aún se resuelve cuando envías.894También puedes escribir la mención manualmente sin usar el selector: `@agent-<name>` para subagentes locales, o `@agent-` seguido del nombre con alcance para subagentes de plugin, por ejemplo `@agent-my-plugin:code-reviewer`. Mientras escribes esta forma, el typeahead muestra coincidencias de archivos en lugar de agentes. La mención del agente aún se resuelve cuando envías.

893 895 


934Los subagentes pueden ejecutarse en primer plano o en fondo:936Los subagentes pueden ejecutarse en primer plano o en fondo:

935 937 

936* **Subagentes en primer plano** bloquean la conversación principal hasta completarse. Los avisos de permiso se te pasan a medida que surgen.938* **Subagentes en primer plano** bloquean la conversación principal hasta completarse. Los avisos de permiso se te pasan a medida que surgen.

937* **Subagentes en fondo** se ejecutan simultáneamente mientras continúas trabajando. Cuando un subagente en fondo llega a una llamada de herramienta que necesita permiso, Claude Code muestra el aviso en tu sesión principal y nombra el subagente que está pidiendo. Aprueba para permitir que el subagente continúe, o presiona Esc para negar esa llamada de herramienta sin detener el subagente. Antes de v2.1.186, los subagentes en fondo negaban automáticamente cualquier llamada de herramienta que hubiera solicitado.939* **Subagentes en fondo** se ejecutan simultáneamente mientras continúas trabajando. Cuando un subagente en fondo llega a una llamada de herramienta que necesita permiso, Claude Code muestra el aviso en tu sesión principal y nombra el subagente que está pidiendo. Aprueba para permitir que el subagente continúe, o presiona Esc para negar esa llamada de herramienta sin detener el subagente.

938 940 

939Para cada subagente que Claude genera con la herramienta Agent, Claude Code elige primer plano o fondo del primero de estos casos que se aplique:941Para cada subagente que Claude genera con la herramienta Agent, Claude Code elige primer plano o fondo del primero de estos casos que se aplique:

940 942 


1131* **Símbolo del sistema**: el símbolo del sistema propio del agente más detalles del entorno que Claude Code añade, no el símbolo del sistema de Claude Code. Los subagentes personalizados definen el suyo en el [cuerpo markdown](#write-subagent-files) o campo `prompt`. Los agentes integrados tienen símbolos del sistema predefinidos.1133* **Símbolo del sistema**: el símbolo del sistema propio del agente más detalles del entorno que Claude Code añade, no el símbolo del sistema de Claude Code. Los subagentes personalizados definen el suyo en el [cuerpo markdown](#write-subagent-files) o campo `prompt`. Los agentes integrados tienen símbolos del sistema predefinidos.

1132* **Mensaje de tarea**: el símbolo del sistema de delegación que Claude escribe cuando entrega el trabajo.1134* **Mensaje de tarea**: el símbolo del sistema de delegación que Claude escribe cuando entrega el trabajo.

1133* **Archivos CLAUDE.md**: cada nivel de la [jerarquía CLAUDE.md](/docs/es/memory#how-claude-md-files-load) que la conversación principal carga, incluyendo `~/.claude/CLAUDE.md`, reglas del proyecto, `CLAUDE.local.md`, archivos de política gestionada, y cualquier archivo [`AGENTS.md`](/docs/es/memory#agents-md) cargado como instrucciones del proyecto. Los agentes Explore y Plan integrados omiten esto. Un subagente cuya definición establece [`omitClaudeMd`](#supported-frontmatter-fields) carga solo los archivos de política gestionada, o ninguno en absoluto cuando la definición viene de [configuración gestionada](#choose-the-subagent-scope).1135* **Archivos CLAUDE.md**: cada nivel de la [jerarquía CLAUDE.md](/docs/es/memory#how-claude-md-files-load) que la conversación principal carga, incluyendo `~/.claude/CLAUDE.md`, reglas del proyecto, `CLAUDE.local.md`, archivos de política gestionada, y cualquier archivo [`AGENTS.md`](/docs/es/memory#agents-md) cargado como instrucciones del proyecto. Los agentes Explore y Plan integrados omiten esto. Un subagente cuya definición establece [`omitClaudeMd`](#supported-frontmatter-fields) carga solo los archivos de política gestionada, o ninguno en absoluto cuando la definición viene de [configuración gestionada](#choose-the-subagent-scope).

1134* **Estado de Git**: una instantánea tomada al inicio de la sesión padre. Ausente cuando el directorio de trabajo no es un repositorio de Git o cuando [`includeGitInstructions`](/docs/es/settings-reference#includegitinstructions) es `false`. Explore y Plan lo omiten independientemente.1136* **Estado de Git**: una instantánea que Claude Code lee de tu repositorio cuando el subagente comienza. Ausente fuera de un repositorio de Git o siempre que la instantánea esté desactivada; consulta [`includeGitInstructions`](/docs/es/settings-reference#includegitinstructions). Explore y Plan lo omiten independientemente.

1135* **Skills precargadas**: contenido completo de cualquier skill nombrada en el campo [`skills`](#preload-skills-into-subagents) del agente. Los agentes integrados no precargan skills.1137* **Skills precargadas**: contenido completo de cualquier skill nombrada en el campo [`skills`](#preload-skills-into-subagents) del agente. Los agentes integrados no precargan skills.

1136* **Roster de hermanos**: un recordatorio del sistema listando `main` y cada otro agente nombrado en la sesión, cada uno un valor `to` válido para [`SendMessage`](#resume-subagents). Requiere Claude Code v2.1.206 o posterior. El roster aparece solo cuando las herramientas del subagente incluyen `SendMessage` y al menos otro agente tiene un nombre, ya sea que Claude lo nombró al generarlo o se ejecuta como un compañero de [equipo de agentes](/docs/es/agent-teams). Es una instantánea tomada cuando el subagente comienza, por lo que los agentes nombrados después no aparecen.1138* **Roster de hermanos**: un recordatorio del sistema listando `main` y cada otro agente nombrado en la sesión, cada uno un valor `to` válido para [`SendMessage`](#resume-subagents). Requiere Claude Code v2.1.206 o posterior. El roster aparece solo cuando las herramientas del subagente incluyen `SendMessage` y al menos otro agente tiene un nombre, ya sea que Claude lo nombró al generarlo o se ejecuta como un compañero de [equipo de agentes](/docs/es/agent-teams). Es una instantánea tomada cuando el subagente comienza, por lo que los agentes nombrados después no aparecen.

1137 1139 


1177 1179 

1178Un subagente que detuviste tú mismo, con `x` en `/tasks` o una solicitud SDK `stop_task`, no se reanuda automáticamente. Si Claude le envía un mensaje, el mensaje es rechazado y Claude es informado de que el agente fue cancelado.1180Un subagente que detuviste tú mismo, con `x` en `/tasks` o una solicitud SDK `stop_task`, no se reanuda automáticamente. Si Claude le envía un mensaje, el mensaje es rechazado y Claude es informado de que el agente fue cancelado.

1179 1181 

1180Mientras [la fila de ese subagente aún está en el panel de subagentes](#run-subagents-in-foreground-or-background), escribe en su transcripción para reanudarlo tú mismo. Después de eso, un mensaje de Claude puede reanudarlo automáticamente de nuevo. Requiere Claude Code v2.1.191 o posterior.1182Mientras [la fila de ese subagente aún está en el panel de subagentes](#run-subagents-in-foreground-or-background), escribe en su transcripción para reanudarlo tú mismo. Después de eso, un mensaje de Claude puede reanudarlo automáticamente de nuevo.

1181 1183 

1182Reanudar comienza una nueva ejecución del agente bajo el mismo ID, por lo que un subagente que ya había fallado o se completó muestra como ejecutándose de nuevo en la lista de tareas y en los eventos de tareas del Agent SDK. Antes de v2.1.205, mantenía su estado anterior fallido o completado mientras la ejecución reanudada estaba trabajando.1184Reanudar comienza una nueva ejecución del agente bajo el mismo ID, por lo que un subagente que ya había fallado o se completó muestra como ejecutándose de nuevo en la lista de tareas y en los eventos de tareas del Agent SDK. Antes de v2.1.205, mantenía su estado anterior fallido o completado mientras la ejecución reanudada estaba trabajando.

1183 1185 


1495 1497 

1496Ahora que entiende subagentes, explore estas características relacionadas:1498Ahora que entiende subagentes, explore estas características relacionadas:

1497 1499 

1498* [Distribuir subagentes con plugins](/docs/es/plugins) para compartir subagentes entre equipos o proyectos1500* [Distribuir subagentes con plugins](/docs/es/plugins/components#agents) para compartir subagentes entre equipos o proyectos

1499* [Ejecutar Claude Code programáticamente](/docs/es/headless) con el Agent SDK para CI/CD y automatización1501* [Ejecutar Claude Code programáticamente](/docs/es/headless) con el Agent SDK para CI/CD y automatización

1500* [Usar servidores MCP](/docs/es/mcp) para dar a los subagentes acceso a herramientas y datos externos1502* [Usar servidores MCP](/docs/es/mcp) para dar a los subagentes acceso a herramientas y datos externos

Details

156 Crear un tema personalizado156 Crear un tema personalizado

157</h3>157</h3>

158 158 

159Además de los ajustes preestablecidos integrados, `/theme` enumera cualquier tema personalizado que haya definido y cualquier tema contribuido por [plugins](/docs/es/plugins-reference#themes) instalados. Seleccione **Nuevo tema personalizado…** al final de la lista para crear uno de forma interactiva: usted nombra el tema y luego elige tokens de color individuales para anular. Presione `Ctrl+E` mientras un tema personalizado está resaltado para editarlo.159Además de los ajustes preestablecidos integrados, `/theme` enumera cualquier tema personalizado que haya definido y cualquier tema contribuido por [plugins](/docs/es/plugins/components#themes-and-output-styles) instalados. Seleccione **Nuevo tema personalizado…** al final de la lista para crear uno de forma interactiva: usted nombra el tema y luego elige tokens de color individuales para anular. Presione `Ctrl+E` mientras un tema personalizado está resaltado para editarlo.

160 160 

161Cada tema personalizado es un archivo JSON en `~/.claude/themes/`. El nombre de archivo sin la extensión `.json` es el slug del tema, y seleccionar el tema almacena `custom:<slug>` como su preferencia de tema. El archivo tiene tres campos opcionales:161Cada tema personalizado es un archivo JSON en `~/.claude/themes/`. El nombre de archivo sin la extensión `.json` es el slug del tema, y seleccionar el tema almacena `custom:<slug>` como su preferencia de tema. El archivo tiene tres campos opcionales:

162 162 

Details

179Claude Code transmite la salida de un comando a un archivo de trabajo mientras se ejecuta el comando; un comando cuya salida supera 5 GB se detiene. Cuando el comando finaliza, Claude Code lee la salida nuevamente desde ese archivo, hasta la ventana de lectura descrita a continuación. La cantidad de salida que llega a Claude en línea depende de si Claude Code trata el resultado como un fallo:179Claude Code transmite la salida de un comando a un archivo de trabajo mientras se ejecuta el comando; un comando cuya salida supera 5 GB se detiene. Cuando el comando finaliza, Claude Code lee la salida nuevamente desde ese archivo, hasta la ventana de lectura descrita a continuación. La cantidad de salida que llega a Claude en línea depende de si Claude Code trata el resultado como un fallo:

180 180 

181| Resultado | Lo que Claude obtiene |181| Resultado | Lo que Claude obtiene |

182| :-------- | :--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |182| :-------- | :-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |

183| Válido | En línea hasta aproximadamente 30.000 caracteres de forma predeterminada; más allá de eso, la ruta de un archivo guardado en el directorio de sesión y truncado más allá de 64 MiB, más una vista previa breve desde el inicio, y Claude lee o busca el archivo cuando necesita el resto |183| Válido | En línea hasta aproximadamente 30.000 caracteres de forma predeterminada; más allá de eso, la ruta de un archivo guardado en el directorio de sesión y truncado más allá de 64 MiB, más una vista previa de hasta los primeros 2.000 caracteres, y Claude lee o busca el archivo cuando necesita el resto |

184| Fallo | En línea hasta aproximadamente 10.000 caracteres; más allá de eso, un extracto de cabeza y cola de ese tamaño cortado de la ventana de lectura, sin ruta de archivo |184| Fallo | En línea hasta aproximadamente 10.000 caracteres; más allá de eso, un extracto de cabeza y cola de ese tamaño cortado de la ventana de lectura, sin ruta de archivo |

185 185 

186Un comando que sale con código 1 cuenta como un resultado válido para la herramienta Bash solo cuando Claude Code reconoce el código de salida 1 como un resultado benigno para ese comando: `grep`, `rg`, `egrep`, `fgrep`, `find`, `diff`, `test`, y `[`, más `git diff` y `git grep`. Todos los demás comandos que salen con código 1 cuentan como un fallo, incluso cuando el código de salida 1 es un resultado informativo benigno: sin coincidencias para `pgrep` y `jq -e`, archivos que difieren para `cmp`.186Un comando que sale con código 1 cuenta como un resultado válido para la herramienta Bash solo cuando Claude Code reconoce el código de salida 1 como un resultado benigno para ese comando: `grep`, `rg`, `egrep`, `fgrep`, `find`, `diff`, `test`, y `[`, más `git diff` y `git grep`. Todos los demás comandos que salen con código 1 cuentan como un fallo, incluso cuando el código de salida 1 es un resultado informativo benigno: sin coincidencias para `pgrep` y `jq -e`, archivos que difieren para `cmp`.


221* `mcp`: [servidores MCP](/docs/es/mcp) locales221* `mcp`: [servidores MCP](/docs/es/mcp) locales

222* `lsp`: [servidores de lenguaje](#lsp-tool-behavior)222* `lsp`: [servidores de lenguaje](#lsp-tool-behavior)

223* `hooks`: comandos de [hook](/docs/es/hooks)223* `hooks`: comandos de [hook](/docs/es/hooks)

224* `plugin`: comandos que ejecutan [plugins](/docs/es/plugins)224* `plugin`: comandos que ejecutan [plugins](/docs/es/plugins/overview)

225* `helper`: comandos auxiliares propios de Claude Code, como `git`225* `helper`: comandos auxiliares propios de Claude Code, como `git`

226* `agent`: procesos secundarios de Claude Code, como [compañeros agentes](/docs/es/agent-teams)226* `agent`: procesos secundarios de Claude Code, como [compañeros agentes](/docs/es/agent-teams)

227 227 


334 Comportamiento de la herramienta LSP334 Comportamiento de la herramienta LSP

335</h2>335</h2>

336 336 

337La herramienta LSP proporciona a Claude inteligencia de código desde un servidor de lenguaje en ejecución. Después de cada edición de archivo, reporta automáticamente errores de tipo y advertencias para que Claude pueda corregir problemas sin un paso de compilación separado. Claude también puede llamarlo directamente para navegar por el código:337La herramienta LSP proporciona a Claude inteligencia de código desde un servidor de lenguaje en ejecución. Después de cada edición de archivo, informa automáticamente de errores de tipo y advertencias para que Claude pueda corregir problemas sin un paso de compilación separado. Claude también puede llamarla directamente para navegar por el código:

338 338 

339* Saltar a la definición de un símbolo339* Saltar a la definición de un símbolo

340* Encontrar todas las referencias a un símbolo340* Encontrar todas las referencias a un símbolo


344* Encontrar implementaciones de una interfaz344* Encontrar implementaciones de una interfaz

345* Rastrear jerarquías de llamadas345* Rastrear jerarquías de llamadas

346 346 

347Claude Code mantiene la herramienta inactiva hasta que instale un [plugin de inteligencia de código](/docs/es/discover-plugins#code-intelligence) para su lenguaje. En [sesiones en la nube](/docs/es/claude-code-on-the-web), Claude Code no inicia servidores de lenguaje de plugins, por lo que la herramienta LSP permanece inactiva allí. Claude Code toma la configuración del servidor de lenguaje del plugin, e instala el binario del servidor por separado.347Claude Code mantiene la herramienta inactiva hasta que instale un [plugin de inteligencia de código](/docs/es/plugins/code-intelligence) para su lenguaje. En [sesiones en la nube](/docs/es/claude-code-on-the-web), Claude Code no inicia servidores de lenguaje de plugins, por lo que la herramienta LSP permanece inactiva allí. Claude Code toma la configuración del servidor de lenguaje del plugin, y usted instala el binario del servidor por su cuenta.

348 348 

349Claude Code devuelve un resultado de error para cada llamada LSP en un archivo cuyo servidor de lenguaje no puede iniciar.349Claude Code devuelve un resultado de error para cada llamada LSP en un archivo cuyo servidor de lenguaje no puede iniciar.

350 350 


376 376 

377La herramienta no está disponible en Amazon Bedrock, Google Cloud's Agent Platform, o Microsoft Foundry. Tampoco está disponible cuando `DISABLE_TELEMETRY` o `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` está establecido.377La herramienta no está disponible en Amazon Bedrock, Google Cloud's Agent Platform, o Microsoft Foundry. Tampoco está disponible cuando `DISABLE_TELEMETRY` o `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC` está establecido.

378 378 

379Los plugins pueden declarar monitores que se inician automáticamente cuando el plugin está activo, en lugar de pedirle a Claude que los inicie. Consulte [monitores de plugins](/docs/es/plugins-reference#monitors).379Los plugins pueden declarar monitores que se inician automáticamente cuando el plugin está activo, en lugar de pedirle a Claude que los inicie. Consulte [monitores de plugins](/docs/es/plugins/components#monitors).

380 380 

381<h3 id="websocket-source">381<h3 id="websocket-source">

382 Fuente de WebSocket382 Fuente de WebSocket

vs-code.md +2 −2

Details

331 Gestionar plugins331 Gestionar plugins

332</h2>332</h2>

333 333 

334La extensión de VS Code incluye una interfaz gráfica para instalar y gestionar [plugins](/docs/es/plugins). Escriba `/plugins` en el cuadro de solicitud para abrir la interfaz **Gestionar plugins**.334La extensión de VS Code incluye una interfaz gráfica para instalar y gestionar [plugins](/docs/es/plugins/overview). Escriba `/plugins` en el cuadro de solicitud para abrir la interfaz **Gestionar plugins**.

335 335 

336<h3 id="install-plugins">336<h3 id="install-plugins">

337 Instalar plugins337 Instalar plugins


394 La gestión de plugins en VS Code utiliza los mismos comandos CLI bajo el capó. Los plugins y marketplaces que configure en la extensión también están disponibles en la CLI, y viceversa.394 La gestión de plugins en VS Code utiliza los mismos comandos CLI bajo el capó. Los plugins y marketplaces que configure en la extensión también están disponibles en la CLI, y viceversa.

395</Note>395</Note>

396 396 

397Para obtener más información sobre el sistema de plugins, consulte [Plugins](/docs/es/plugins) y [Plugin marketplaces](/docs/es/plugin-marketplaces).397Para obtener más información sobre el sistema de plugins, consulte [Plugins](/docs/es/plugins/overview) y [Plugin marketplaces](/docs/es/plugins/overview).

398 398 

399<h2 id="automate-browser-tasks-with-chrome">399<h2 id="automate-browser-tasks-with-chrome">

400 Automatizar tareas del navegador con Chrome400 Automatizar tareas del navegador con Chrome

Details

116 └── my-tool116 └── my-tool

117 ```117 ```

118 118 

119 <a className="digest-feature-link" href="/docs/es/plugins-reference#file-locations-reference">Referencia de plugins</a>119 <a className="digest-feature-link" href="/docs/es/plugins/manifest-reference#standard-layout">Referencia de plugins</a>

120</div>120</div>

121 121 

122<div className="digest-wins">122<div className="digest-wins">

Details

104 <div>Las compilaciones nativas de macOS y Linux reemplazan las herramientas <code>Glob</code> y <code>Grep</code> con <code>bfs</code> y <code>ugrep</code> integrados disponibles a través de Bash, para búsquedas más rápidas sin un viaje de herramienta separado</div>104 <div>Las compilaciones nativas de macOS y Linux reemplazan las herramientas <code>Glob</code> y <code>Grep</code> con <code>bfs</code> y <code>ugrep</code> integrados disponibles a través de Bash, para búsquedas más rápidas sin un viaje de herramienta separado</div>

105 <div><code>--from-pr</code> ahora acepta URLs de solicitud de fusión de GitLab, solicitud de extracción de Bitbucket y PR de GitHub Enterprise además de github.com</div>105 <div><code>--from-pr</code> ahora acepta URLs de solicitud de fusión de GitLab, solicitud de extracción de Bitbucket y PR de GitHub Enterprise además de github.com</div>

106 <div>Modo automático: incluya <code>"\$defaults"</code> en <a href="/docs/es/auto-mode-config"><code>autoMode.allow</code>, <code>soft\_deny</code>, o <code>environment</code></a> para agregar reglas personalizadas junto con la lista integrada en lugar de reemplazarla</div>106 <div>Modo automático: incluya <code>"\$defaults"</code> en <a href="/docs/es/auto-mode-config"><code>autoMode.allow</code>, <code>soft\_deny</code>, o <code>environment</code></a> para agregar reglas personalizadas junto con la lista integrada en lugar de reemplazarla</div>

107 <div>El nuevo comando <a href="/docs/es/plugin-dependencies#tag-plugin-releases-for-version-resolution"><code>claude plugin tag</code></a> crea etiquetas git de lanzamiento para plugins con validación de versión</div>107 <div>El nuevo comando <a href="/docs/es/plugins/dependencies#tag-plugin-releases-for-version-resolution"><code>claude plugin tag</code></a> crea etiquetas git de lanzamiento para plugins con validación de versión</div>

108 <div>Las sesiones de Opus 4.7 ahora se calculan contra la ventana de contexto nativa de 1M del modelo, corrigiendo porcentajes inflados de <code>/context</code> y autocompactación prematura</div>108 <div>Las sesiones de Opus 4.7 ahora se calculan contra la ventana de contexto nativa de 1M del modelo, corrigiendo porcentajes inflados de <code>/context</code> y autocompactación prematura</div>

109 <div><code>/resume</code> en sesiones grandes es hasta un 67% más rápido y ahora ofrece resumir sesiones grandes y obsoletas antes de releerlas</div>109 <div><code>/resume</code> en sesiones grandes es hasta un 67% más rápido y ahora ofrece resumir sesiones grandes y obsoletas antes de releerlas</div>

110 </div>110 </div>

Details

24 claude --plugin-url https://example.com/my-plugin.zip24 claude --plugin-url https://example.com/my-plugin.zip

25 ```25 ```

26 26 

27 <a className="digest-feature-link" href="/docs/es/plugins">Guía de plugins</a>27 <a className="digest-feature-link" href="/docs/es/plugins/overview">Guía de plugins</a>

28</div>28</div>

29 29 

30<div className="digest-feature">30<div className="digest-feature">

Details

59 > /plugin list --enabled59 > /plugin list --enabled

60 ```60 ```

61 61 

62 <a className="digest-feature-link" href="/docs/es/plugins-reference#plugin-list">Comandos de plugins</a>62 <a className="digest-feature-link" href="/docs/es/plugins/cli-reference#plugin-list">Comandos de plugins</a>

63</div>63</div>

64 64 

65<div className="digest-feature">65<div className="digest-feature">

Details

86 <div className="digest-wins-grid">86 <div className="digest-wins-grid">

87 <div>La extensión de VS Code obtiene <a href="/docs/es/vs-code#extension-settings">Vista de enfoque</a>, que oculta la actividad de herramientas detrás de una fila expandible por turno; actívela desde el menú de comandos o con <code>Ctrl+Alt+F</code> (<code>Ctrl+Option+F</code> en Mac)</div>87 <div>La extensión de VS Code obtiene <a href="/docs/es/vs-code#extension-settings">Vista de enfoque</a>, que oculta la actividad de herramientas detrás de una fila expandible por turno; actívela desde el menú de comandos o con <code>Ctrl+Alt+F</code> (<code>Ctrl+Option+F</code> en Mac)</div>

88 <div>Los archivos de credenciales de sandbox aceptan <a href="/docs/es/sandboxing#mask-credential-files"><code>mode: "mask"</code></a> en Linux y WSL2, por lo que los comandos en sandbox leen una copia centinela mientras el proxy de sandbox sustituye el valor real en la salida; el enmascaramiento de credenciales también gana opciones <code>extract</code>, <code>decode</code> consciente de JWT y re-firma de AWS SigV4</div>88 <div>Los archivos de credenciales de sandbox aceptan <a href="/docs/es/sandboxing#mask-credential-files"><code>mode: "mask"</code></a> en Linux y WSL2, por lo que los comandos en sandbox leen una copia centinela mientras el proxy de sandbox sustituye el valor real en la salida; el enmascaramiento de credenciales también gana opciones <code>extract</code>, <code>decode</code> consciente de JWT y re-firma de AWS SigV4</div>

89 <div>Los mercados pueden distribuir un plugin como un <a href="/docs/es/plugin-marketplaces#zip-archives">archivo zip</a> con la nueva fuente <code>archive</code>, descargada sobre HTTPS con un pin SHA-256 opcional, por lo que las instalaciones funcionan sin git o npm</div>89 <div>Los mercados pueden distribuir un plugin como un <a href="/docs/es/plugins/marketplace-reference#archive-plugin-source">archivo zip</a> con la nueva fuente <code>archive</code>, descargada sobre HTTPS con un pin SHA-256 opcional, por lo que las instalaciones funcionan sin git o npm</div>

90 <div><code>/review</code> ahora es un alias de <a href="/docs/es/code-review#review-a-diff-locally"><code>/code-review</code></a>, y <code>/code-review</code> sin nivel de esfuerzo reutiliza el nivel que escribió por última vez</div>90 <div><code>/review</code> ahora es un alias de <a href="/docs/es/code-review#review-a-diff-locally"><code>/code-review</code></a>, y <code>/code-review</code> sin nivel de esfuerzo reutiliza el nivel que escribió por última vez</div>

91 <div>Una sesión que copia con <a href="/docs/es/agent-view#copy-the-session-with-%2Ffork"><code>/fork</code></a> ahora realiza sus cambios de código en un worktree propio en lugar del checkout de la sesión original</div>91 <div>Una sesión que copia con <a href="/docs/es/agent-view#copy-the-session-with-%2Ffork"><code>/fork</code></a> ahora realiza sus cambios de código en un worktree propio en lugar del checkout de la sesión original</div>

92 <div>Los plugins que instala desde <a href="/docs/es/discover-plugins#install-plugins"><code>/plugin</code></a> se activan en la sesión actual cuando es seguro hacerlo; el resumen de instalación reporta <code>Plugin is now active.</code> o le dice que ejecute <code>/reload-plugins</code></div>92 <div>Los plugins que instala desde <a href="/docs/es/plugins/install#install-a-plugin"><code>/plugin</code></a> se activan en la sesión actual cuando es seguro hacerlo; el resumen de instalación reporta <code>Plugin is now active.</code> o le dice que ejecute <code>/reload-plugins</code></div>

93 <div><a href="/docs/es/agent-view#how-file-edits-are-isolated">Las sesiones en segundo plano</a> que cambiaron código en un worktree ahora confirman e impulsan antes de terminar, abren una solicitud de extracción de borrador solo cuando la tarea lo requiere, y siguen las instrucciones de git en su <code>CLAUDE.md</code></div>93 <div><a href="/docs/es/agent-view#how-file-edits-are-isolated">Las sesiones en segundo plano</a> que cambiaron código en un worktree ahora confirman e impulsan antes de terminar, abren una solicitud de extracción de borrador solo cuando la tarea lo requiere, y siguen las instrucciones de git en su <code>CLAUDE.md</code></div>

94 <div>Se elimina el límite de 200 subagentes por sesión, por lo que las sesiones de larga duración ya no rechazan nuevos subagentes; los límites de <a href="/docs/es/sub-agents#concurrent-subagent-limit">concurrencia</a> y profundidad aún se aplican</div>94 <div>Se elimina el límite de 200 subagentes por sesión, por lo que las sesiones de larga duración ya no rechazan nuevos subagentes; los límites de <a href="/docs/es/sub-agents#concurrent-subagent-limit">concurrencia</a> y profundidad aún se aplican</div>

95 <div>La configuración registrada de un repositorio ya no puede activar <a href="/docs/es/remote-control#enable-remote-control-for-all-sessions">Conexión automática de control remoto</a>; establezca <code>remoteControlAtStartup</code> en su configuración de usuario o administrada en su lugar, y la configuración de proyecto y local solo puede desactivarla</div>95 <div>La configuración registrada de un repositorio ya no puede activar <a href="/docs/es/remote-control#enable-remote-control-for-all-sessions">Conexión automática de control remoto</a>; establezca <code>remoteControlAtStartup</code> en su configuración de usuario o administrada en su lugar, y la configuración de proyecto y local solo puede desactivarla</div>

Details

72 <div className="digest-wins-grid">72 <div className="digest-wins-grid">

73 <div>Escriba <code>@</code> en el prompt para <a href="/docs/es/cross-session-messaging#message-another-session">mencionar otra sesión de Claude</a> por nombre, y Claude la mensajea directamente con <code>SendMessage</code>; un nombre simple que coincida exactamente con una sesión activa ahora se entrega sin un paso de confirmación</div>73 <div>Escriba <code>@</code> en el prompt para <a href="/docs/es/cross-session-messaging#message-another-session">mencionar otra sesión de Claude</a> por nombre, y Claude la mensajea directamente con <code>SendMessage</code>; un nombre simple que coincida exactamente con una sesión activa ahora se entrega sin un paso de confirmación</div>

74 <div>Las sesiones interactivas en una máquina mantienen <a href="/docs/es/cross-session-messaging#see-which-sessions-claude-can-reach">nombres únicos</a>: si inicia o cambia el nombre de una sesión con un nombre que otra sesión activa ya usa, Claude Code le da una variante <code>name-word-word</code> y se lo comunica</div>74 <div>Las sesiones interactivas en una máquina mantienen <a href="/docs/es/cross-session-messaging#see-which-sessions-claude-can-reach">nombres únicos</a>: si inicia o cambia el nombre de una sesión con un nombre que otra sesión activa ya usa, Claude Code le da una variante <code>name-word-word</code> y se lo comunica</div>

75 <div>Los marketplaces de plugins aceptan <a href="/docs/es/plugin-marketplaces#command-sources">fuentes de <code>command</code></a>: un comando local imprime el directorio del plugin, que Claude Code re-resuelve cada sesión y aplica sin un reinicio</div>75 <div>Los marketplaces de plugins aceptan <a href="/docs/es/plugins/marketplace-reference#command-plugin-source">fuentes de <code>command</code></a>: un comando local imprime el directorio del plugin, que Claude Code re-resuelve cada sesión y aplica sin un reinicio</div>

76 <div>En Linux y WSL, establezca <a href="/docs/es/tools-reference#memory-limit-on-linux-and-wsl"><code>CLAUDE\_CODE\_TOOL\_MEMORY\_LIMIT</code></a> a un tamaño como <code>4G</code> para limitar la memoria que los comandos de herramientas Bash y PowerShell pueden usar</div>76 <div>En Linux y WSL, establezca <a href="/docs/es/tools-reference#memory-limit-on-linux-and-wsl"><code>CLAUDE\_CODE\_TOOL\_MEMORY\_LIMIT</code></a> a un tamaño como <code>4G</code> para limitar la memoria que los comandos de herramientas Bash y PowerShell pueden usar</div>

77 <div>Las herramientas de seguimiento de tareas, como <code>TaskCreate</code>, <code>TaskUpdate</code> y <code>TodoWrite</code>, <a href="/docs/es/tools-reference#task-tool-availability">ya no están disponibles en Opus 4.8, Sonnet 5, Fable 5, Mythos 5 y modelos posteriores en esas familias</a>; establezca <code>CLAUDE\_CODE\_ENABLE\_TODO\_TOOLS=1</code> para volver a habilitarlas</div>77 <div>Las herramientas de seguimiento de tareas, como <code>TaskCreate</code>, <code>TaskUpdate</code> y <code>TodoWrite</code>, <a href="/docs/es/tools-reference#task-tool-availability">ya no están disponibles en Opus 4.8, Sonnet 5, Fable 5, Mythos 5 y modelos posteriores en esas familias</a>; establezca <code>CLAUDE\_CODE\_ENABLE\_TODO\_TOOLS=1</code> para volver a habilitarlas</div>

78 <div><a href="/docs/es/code-review#review-a-diff-locally"><code>/code-review</code></a> en esfuerzo alto, xhigh y máximo ahora se ejecuta en un agente de fondo como los otros niveles</div>78 <div><a href="/docs/es/code-review#review-a-diff-locally"><code>/code-review</code></a> en esfuerzo alto, xhigh y máximo ahora se ejecuta en un agente de fondo como los otros niveles</div>

79 <div><a href="/docs/es/discover-plugins#install-plugins"><code>/plugin install plugin\@marketplace</code></a> actualiza primero el marketplace, por lo que los plugins recién publicados se instalan sin una actualización manual del marketplace</div>79 <div><a href="/docs/es/plugins/install#install-a-plugin"><code>/plugin install plugin\@marketplace</code></a> actualiza primero el marketplace, por lo que los plugins recién publicados se instalan sin una actualización manual del marketplace</div>

80 <div>La configuración acepta <a href="/docs/es/settings-reference#marketplace-key-aliases"><code>additionalMarketplaces</code> y <code>allowedMarketplaces</code></a> como alias para <code>extraKnownMarketplaces</code> y <code>strictKnownMarketplaces</code></div>80 <div>La configuración acepta <a href="/docs/es/settings-reference#marketplace-key-aliases"><code>additionalMarketplaces</code> y <code>allowedMarketplaces</code></a> como alias para <code>extraKnownMarketplaces</code> y <code>strictKnownMarketplaces</code></div>

81 <div>En modelos más nuevos, Claude puede <a href="/docs/es/tools-reference#write-tool-behavior">sobrescribir un archivo existente con la herramienta Write</a> sin leerlo primero en esta sesión, coincidiendo con las reglas de la herramienta Edit; los modelos más antiguos requieren la lectura</div>81 <div>En modelos más nuevos, Claude puede <a href="/docs/es/tools-reference#write-tool-behavior">sobrescribir un archivo existente con la herramienta Write</a> sin leerlo primero en esta sesión, coincidiendo con las reglas de la herramienta Edit; los modelos más antiguos requieren la lectura</div>

82 <div>La extensión de VS Code puede <a href="/docs/es/vs-code#organize-sessions-into-groups">organizar la lista de sesiones en grupos</a>: haga clic derecho para crear, cambiar el nombre o eliminar un grupo, y Cmd/Ctrl- o Shift-click para mover varias sesiones a la vez</div>82 <div>La extensión de VS Code puede <a href="/docs/es/vs-code#organize-sessions-into-groups">organizar la lista de sesiones en grupos</a>: haga clic derecho para crear, cambiar el nombre o eliminar un grupo, y Cmd/Ctrl- o Shift-click para mover varias sesiones a la vez</div>

Details

54 54 

55 <div className="digest-wins-grid">55 <div className="digest-wins-grid">

56 <div>Establece <a href="/docs/es/settings-reference#maxeffortlevel"><code>maxEffortLevel</code></a> en el nivel superior o por modelo bajo <code>modelSettings</code> para limitar el nivel de esfuerzo en cada proveedor, incluidos Amazon Bedrock, la plataforma de agentes de Google Cloud y Microsoft Foundry; cualquier nivel superior se ejecuta en el límite</div>56 <div>Establece <a href="/docs/es/settings-reference#maxeffortlevel"><code>maxEffortLevel</code></a> en el nivel superior o por modelo bajo <code>modelSettings</code> para limitar el nivel de esfuerzo en cada proveedor, incluidos Amazon Bedrock, la plataforma de agentes de Google Cloud y Microsoft Foundry; cualquier nivel superior se ejecuta en el límite</div>

57 <div>Apunta `--plugin-dir` a una carpeta de plugins para <a href="/docs/es/plugins#test-your-plugins-locally">cargar cada subcarpeta inmediata que tenga un manifiesto</a></div>57 <div>Apunta `--plugin-dir` a una carpeta de plugins para <a href="/docs/es/plugins/create#load-a-directory-or-archive-for-one-session">cargar cada subcarpeta inmediata que tenga un manifiesto</a></div>

58 <div>Si WebFetch no ha terminado de descargar una página dentro de cinco minutos, <a href="/docs/es/tools-reference#webfetch-tool-behavior">la descarga falla con un error de límite de tiempo</a> en lugar de colgarse; establece <code>CLAUDE\_CODE\_WEBFETCH\_DEADLINE\_MS</code> para cambiar el límite, o a <code>0</code> para eliminar el límite</div>58 <div>Si WebFetch no ha terminado de descargar una página dentro de cinco minutos, <a href="/docs/es/tools-reference#webfetch-tool-behavior">la descarga falla con un error de límite de tiempo</a> en lugar de colgarse; establece <code>CLAUDE\_CODE\_WEBFETCH\_DEADLINE\_MS</code> para cambiar el límite, o a <code>0</code> para eliminar el límite</div>

59 <div>Pasa `--json` a <code>claude plugin install</code>, <code>uninstall</code>, <code>update</code>, <code>enable</code> o <code>disable</code> para imprimir el resultado como <a href="/docs/es/plugins-reference#plugin-json-result">un objeto JSON en la última línea de stdout</a></div>59 <div>Pasa `--json` a <code>claude plugin install</code>, <code>uninstall</code>, <code>update</code>, <code>enable</code> o <code>disable</code> para imprimir el resultado como <a href="/docs/es/plugins/cli-reference#plugin-json-result">un objeto JSON en la última línea de stdout</a></div>

60 <div>Cuando el clasificador del modo automático bloquea una acción, la razón que recibe Claude <a href="/docs/es/auto-mode-config#fix-a-denial-with-an-allow-rule-an-environment-entry-or-a-retry">generalmente nombra la regla que coincidió</a>, como <code>\[Data Exfiltration]</code></div>60 <div>Cuando el clasificador del modo automático bloquea una acción, la razón que recibe Claude <a href="/docs/es/auto-mode-config#fix-a-denial-with-an-allow-rule-an-environment-entry-or-a-retry">generalmente nombra la regla que coincidió</a>, como <code>\[Data Exfiltration]</code></div>

61 <div>Cuando escribes <code>/</code> a mitad de un mensaje, ahora puedes elegir de <a href="/docs/es/interactive-mode#complete-a-command-mid-prompt">una lista de comandos coincidentes</a> en lugar de una sola sugerencia. La lista se abre mientras escribes en renderizado a pantalla completa. Una habilidad de plugin también coincide con su nombre sin el prefijo del plugin</div>61 <div>Cuando escribes <code>/</code> a mitad de un mensaje, ahora puedes elegir de <a href="/docs/es/interactive-mode#complete-a-command-mid-prompt">una lista de comandos coincidentes</a> en lugar de una sola sugerencia. La lista se abre mientras escribes en renderizado a pantalla completa. Una habilidad de plugin también coincide con su nombre sin el prefijo del plugin</div>

62 <div>En la extensión de VS Code, haz clic en el recuento de agentes en la parte inferior del cuadro de mensaje para abrir el <a href="/docs/es/vs-code#use-the-prompt-box">mapa de agentes</a>, donde puedes abrir la transcripción de solo lectura de un subagente o detenerlo</div>62 <div>En la extensión de VS Code, haz clic en el recuento de agentes en la parte inferior del cuadro de mensaje para abrir el <a href="/docs/es/vs-code#use-the-prompt-box">mapa de agentes</a>, donde puedes abrir la transcripción de solo lectura de un subagente o detenerlo</div>

workflows.md +1 −1

Details

239 Distribuir un workflow en un plugin239 Distribuir un workflow en un plugin

240</h3>240</h3>

241 241 

242Para compartir un workflow entre equipos o repositorios, inclúyalo en un [plugin](/docs/es/plugins). Coloque el script en un directorio `workflows/` en la raíz del plugin, o apunte a una ubicación diferente con el [`workflows` campo de manifiesto](/docs/es/plugins-reference#component-path-fields).242Para compartir un workflow entre equipos o repositorios, inclúyalo en un [plugin](/docs/es/plugins/overview). Coloque el script en un directorio `workflows/` en la raíz del plugin, o apunte a una ubicación diferente con el [`workflows` campo de manifiesto](/docs/es/plugins/manifest-reference#fields).

243 243 

244Los workflows de plugin se espacian por el nombre del plugin. Un plugin llamado `acme-tools` que contiene un script cuyo `meta.name` es `release-audit` se ejecuta como `/acme-tools:release-audit`.244Los workflows de plugin se espacian por el nombre del plugin. Un plugin llamado `acme-tools` que contiene un script cuyo `meta.name` es `release-audit` se ejecuta como `/acme-tools:release-audit`.

245 245 

worktrees.md +3 −1

Details

256Un worktree obtiene sus propios archivos y rama, pero comparte lo siguiente con el checkout principal:256Un worktree obtiene sus propios archivos y rama, pero comparte lo siguiente con el checkout principal:

257 257 

258* **El directorio `.git` del repositorio**: los comandos de git en un worktree escriben en el directorio `.git` compartido del repositorio principal, y el [sandboxing](/docs/es/sandboxing#filesystem-isolation) permite esas escrituras, por lo que comandos como `git commit` funcionan desde dentro de un worktree con el sandbox habilitado.258* **El directorio `.git` del repositorio**: los comandos de git en un worktree escriben en el directorio `.git` compartido del repositorio principal, y el [sandboxing](/docs/es/sandboxing#filesystem-isolation) permite esas escrituras, por lo que comandos como `git commit` funcionan desde dentro de un worktree con el sandbox habilitado.

259* **Plugins**: los plugins instalados en [ámbito de proyecto](/docs/es/plugins-reference#plugin-installation-scopes) desde el checkout principal también se cargan en worktrees del mismo repositorio, por lo que no necesita reinstalarlos por worktree. Requiere Claude Code v2.1.200 o posterior.259* **Plugins**: los plugins instalados en [ámbito de proyecto](/docs/es/plugins/loading#find-where-a-plugin-is-enabled) desde el checkout principal también se cargan en worktrees del mismo repositorio, por lo que no necesita reinstalarlos por worktree. Requiere Claude Code v2.1.200 o posterior.

260* **Aprobaciones de permisos**: elegir "Sí, y no preguntar de nuevo" para un comando Bash en una sesión de worktree guarda la regla en el `.claude/settings.local.json` del checkout principal, por lo que se aplica en el checkout principal y en cada otro worktree del repositorio, y sobrevive a la eliminación del worktree. En Windows y en los otros casos donde Claude Code [no usa la raíz del repositorio](/docs/es/settings#where-claude-code-looks-for-each-file), la regla permanece con ese worktree. Antes de v2.1.211, una aprobación otorgada en un worktree se guardaba dentro de ese worktree, no se aplicaba en otro lugar, y se perdía cuando se eliminaba el worktree. Consulte [dónde se guardan las aprobaciones](/docs/es/permissions#permission-system).260* **Aprobaciones de permisos**: elegir "Sí, y no preguntar de nuevo" para un comando Bash en una sesión de worktree guarda la regla en el `.claude/settings.local.json` del checkout principal, por lo que se aplica en el checkout principal y en cada otro worktree del repositorio, y sobrevive a la eliminación del worktree. En Windows y en los otros casos donde Claude Code [no usa la raíz del repositorio](/docs/es/settings#where-claude-code-looks-for-each-file), la regla permanece con ese worktree. Antes de v2.1.211, una aprobación otorgada en un worktree se guardaba dentro de ese worktree, no se aplicaba en otro lugar, y se perdía cuando se eliminaba el worktree. Consulte [dónde se guardan las aprobaciones](/docs/es/permissions#permission-system).

261* **Skills, agentes y comandos sin seguimiento**: cuando el checkout del worktree no tiene un directorio `.claude/skills` en su raíz, por ejemplo porque su `.claude/skills` está en gitignore, Claude Code carga los [skills de proyecto](/docs/es/skills#where-skills-live) del checkout principal en la sesión del worktree. En un worktree con su propio directorio `.claude/skills`, solo se carga esa copia.261* **Skills, agentes y comandos sin seguimiento**: cuando el checkout del worktree no tiene un directorio `.claude/skills` en su raíz, por ejemplo porque su `.claude/skills` está en gitignore, Claude Code carga los [skills de proyecto](/docs/es/skills#where-skills-live) del checkout principal en la sesión del worktree. En un worktree con su propio directorio `.claude/skills`, solo se carga esa copia.

262 262 


330 330 

331Emparéjelo con un hook `WorktreeRemove` para limpiar cuando la sesión termina. Consulte la [referencia de hooks](/docs/es/hooks#worktreecreate) para el esquema de entrada y un ejemplo de eliminación.331Emparéjelo con un hook `WorktreeRemove` para limpiar cuando la sesión termina. Consulte la [referencia de hooks](/docs/es/hooks#worktreecreate) para el esquema de entrada y un ejemplo de eliminación.

332 332 

333Un hook `WorktreeCreate` también le permite ejecutar [`/batch`](/docs/es/commands#all-commands) fuera de un repositorio git. Cada subagente `/batch` luego publica su cambio con los comandos de control de versiones de su proyecto y, cuando no puede abrir una solicitud de extracción, informa qué publicó en su lugar. Ejecutar `/batch` fuera de un repositorio git requiere Claude Code v2.1.281 o posterior.

334 

333<h2 id="troubleshooting">335<h2 id="troubleshooting">

334 Solución de problemas336 Solución de problemas

335</h2>337</h2>

Details

66| Característica | Razón |66| Característica | Razón |

67| ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |67| ------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- |

68| [Cloud sessions](/docs/es/claude-code-on-the-web), incluidas las iniciadas desde la [aplicación Desktop](/docs/es/desktop#cloud-sessions) | Requiere almacenamiento del lado del servidor de datos de sesión, incluido el historial de conversaciones con prompts y completaciones. |68| [Cloud sessions](/docs/es/claude-code-on-the-web), incluidas las iniciadas desde la [aplicación Desktop](/docs/es/desktop#cloud-sessions) | Requiere almacenamiento del lado del servidor de datos de sesión, incluido el historial de conversaciones con prompts y completaciones. |

69| [Claude Tag](/docs/es/claude-tag) | Retiene la memoria del canal y las transcripciones de sesión. |69| [Claude Tag](https://claude.com/docs/claude-tag) | Retiene la memoria del canal y las transcripciones de sesión. |

70| [Artefactos](/docs/es/artifacts) | Requiere almacenar contenido de página publicado en infraestructura operada por Anthropic. |70| [Artefactos](/docs/es/artifacts) | Requiere almacenar contenido de página publicado en infraestructura operada por Anthropic. |

71| Envío de comentarios (`/feedback`, `/bug`, `/share`) | Enviar comentarios envía datos de conversación a Anthropic. |71| Envío de comentarios (`/feedback`, `/bug`, `/share`) | Enviar comentarios envía datos de conversación a Anthropic. |

72| [Control remoto](/docs/es/remote-control) | Almacena la transcripción de la sesión en servidores de Anthropic para sincronizar la conversación entre dispositivos. |72| [Control remoto](/docs/es/remote-control) | Almacena la transcripción de la sesión en servidores de Anthropic para sincronizar la conversación entre dispositivos. |