El plugin de Xcode de Apple para Claude Code: qué instala
El plugin xcode de Apple para Claude Code son 15 líneas en el marketplace oficial de Anthropic y ningún archivo: la entrada guarda un solo comando, xcrun agent plugin path --plugin-format claude, y el Xcode de tu propia Mac escribe el plugin cuando ese comando se ejecuta.12 La entrada se fusionó el 6 de noviembre de 2026 (UTC). No encontré ningún anuncio de Apple ni de Anthropic en los lugares que revisé.2 En Xcode 27.2, el comando imprime un directorio de 160 archivos: 16 skills y una entrada de servidor MCP, sin hooks y sin agentes. El inventario del propio Claude Code estima unos 4.463 tokens añadidos a cada sesión, y el comando del bridge que nombra esa entrada de servidor listó 54 herramientas en una sesión mía.2 Leí el directorio y lo cargué en sesiones desechables con --plugin-dir. No he aceptado la instalación desde el marketplace, y cada sección dice de dónde viene cada afirmación.
En resumen
- La entrada del marketplace contiene un comando, no un plugin. Todas las demás entradas que obtienen su contenido de fuera del catálogo llevan un SHA de commit.
xcodeno tiene nada que fijar, y es el único nombre de una lista de exenciones en el validador del marketplace.13 - Instalar significa que una persona acepta ese comando. Claude Code lo imprime y pregunta, y el flag que se salta la pregunta no hace nada cuando un agente ejecuta la instalación desde dentro de una sesión.6
- Puedes leerlo todo antes. El comando imprime el directorio, y
claude --plugin-dir <dir> plugin details xcode-integrationhace su inventario sin iniciar una sesión.72 - En Xcode 27.2, el inventario son 16 skills, cero agentes, cero hooks y un servidor MCP que ejecuta
xcrun mcpbridge. Una sesión te lista 15 de los skills. El encabezado del decimosexto lo marca como exclusivo para el modelo.29 - Si ya añadiste el bridge con
claude mcp add, Claude Code omite la copia del plugin por ser un duplicado. En mi Mac, el plugin añadió los skills y nada más.28 - La aceptación cubre la cadena del comando. Lo que el comando imprime depende del Xcode que tengas seleccionado, y ningún cambio en el catálogo señala la diferencia.45
Qué llegó al marketplace
Todo lo que el plugin tiene en el catálogo es un solo objeto JSON. Aquí está, tal como estaba en anthropics/claude-plugins-official el 11 de noviembre de 2026, sin cambios desde la fusión:1
{
"name": "xcode",
"displayName": "Xcode",
"description": "Work with Xcode projects from Claude Code: build, run, and test schemes, render SwiftUI previews, drive simulators and devices, read build logs and diagnostics, and search Apple developer documentation.",
"author": {
"name": "Apple Inc."
},
"category": "development",
"source": {
"source": "command",
"command": "xcrun agent plugin path --plugin-format claude",
"mode": "link"
},
"homepage": "https://developer.apple.com/xcode/"
}
Ese día el catálogo tenía 317 plugins. Los clasifiqué según de dónde viene su contenido:1
| Tipo de origen | Entradas | Fijadas a un SHA de commit |
|---|---|---|
| Un repositorio git, por URL | 163 | Las 163 |
| Un subdirectorio de un repositorio git | 99 | Las 99 |
| Una carpeta dentro del repositorio del marketplace | 54 | No aplica; la carpeta está en el historial del propio catálogo |
| Un comando que se ejecuta en tu máquina | 1 (xcode) |
No; no hay nada que fijar |
El registro de cómo llegó la entrada al catálogo muestra lo inusual que es. Un colaborador abrió el pull request #6259, titulado «Add Xcode plugin (xcode)», el 18 de septiembre de 2026. Un bot respondió que el repositorio solo acepta contribuciones de miembros del equipo de Anthropic, y un mantenedor aprobó el cambio 19 minutos después de que se abriera. El 30 de septiembre, un segundo pull request, el #6338, llevó el mismo commit a una rama dentro del repositorio para que sus verificaciones pudieran ejecutarse.1
Las verificaciones no pasaron tal como estaban escritas. Un tercer pull request, el #7015, dice que el validador del marketplace dio por inválida la entrada de Xcode en tres puntos: no tiene SHA, los espacios de su comando cuentan como metacaracteres de shell y no tiene una URL que clonar. La corrección pasó el workflow a una versión del validador con un nuevo parámetro de entrada command-exempt y le asignó a ese parámetro el valor "xcode". El comentario que está encima de la línea llama a cada nombre de la lista una «listing decision» que necesita el visto bueno de operaciones del marketplace.3 Los tres pull requests se cerraron el 6 de noviembre (UTC) en un lapso de nueve minutos: el #7015 se abrió a las 00:49 y se fusionó a las 00:53, el #6338 se fusionó a las 00:55 y el #6259 se cerró como duplicado a las 00:58.13
Ninguna de las dos compañías ha dicho nada al respecto, que yo haya podido encontrar. El 11 de noviembre revisé los feeds de noticias para desarrolladores, de lanzamientos y de Newsroom de Apple, la página de Xcode de Apple, la página de noticias de Anthropic y el blog de Claude, y no encontré ninguna mención del plugin. La documentación de Apple para agentes externos sigue describiendo cómo añadir el bridge a mano con claude mcp add y no menciona ningún plugin.210 La base para decir que el plugin es de Apple es el campo de autor de la entrada y el hecho de que el comando viene dentro de Xcode.
La entrada guarda un comando, no un plugin
Claude Code añadió el tipo de origen command en la versión 2.1.229, el 12 de agosto de 2026.6 La documentación lo describe como el origen que hay que usar cuando una herramienta en la máquina del usuario produce el directorio del plugin, y su ejemplo es un IDE que genera un plugin para la cadena de herramientas que el usuario tiene seleccionada.4 El contrato es pequeño:
- El comando imprime una línea, la ruta absoluta de un directorio de plugin, y termina con código de salida 0. El límite de tiempo predeterminado es de 60 segundos, y la entrada de Xcode no fija uno propio.41
- Claude Code ejecuta el comando cuando instalas o actualizas el plugin, y de nuevo una vez por sesión para un plugin habilitado, en segundo plano, poco después del inicio de la sesión. Se salta las ejecuciones en segundo plano cuando
CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFICestá definida.5 - En el modo
link, el que usa la entrada de Xcode, Claude Code no copia nada. Crea enlaces a las entradas de nivel superior del directorio y carga los archivos donde están. La versión sale de la ruta real del directorio y de sus entradas de nivel superior, no del contenido de los archivos.4 - Claude Code ejecuta solo el comando exacto que una persona aceptó. Si más adelante un marketplace cambia el comando o su modo, las ejecuciones en segundo plano se detienen hasta que cada usuario acepte el nuevo.5
- Una organización puede desactivar el tipo de origen entero con el ajuste administrado
disableCommandPluginSources.4
Esas reglas encajan con el nombre de directorio que usa Xcode. En mi Mac, el comando imprime una ruta que lleva el número de compilación de Xcode (con el nombre de usuario reemplazado):
$ xcrun agent plugin path --plugin-format claude
/Users/<you>/Library/Developer/Xcode/CodingAssistant/ExportedPlugins/27B52/claude
Una nueva compilación de Xcode significa una ruta nueva, y una ruta nueva es lo que le indica a Claude Code que el plugin cambió. Con el directorio ya generado y sin ninguna app Xcode en ejecución, el comando regresó en unos 0,2 segundos en tres ejecuciones cronometradas. Mi Mac tiene activado el modo MCP headless de Xcode, la vista previa que sudo xcrun mcp-server enable activa y que cubre una sección posterior. Aquí, la primera llamada para cada compilación de Xcode escribió el directorio a través de Xcode Service, un proceso auxiliar en segundo plano dentro del bundle de Xcode, no a través de la app Xcode. Solo cronometré llamadas contra un directorio que ya existía, y no he ejecutado el comando con ese modo desactivado.2
Las mismas reglas cambian lo que una revisión puede abarcar. La documentación de seguridad de Claude Code te dice que leas el código fuente de un plugin antes de instalarlo: abre la página principal o el repositorio del marketplace y busca ahí el directorio del plugin.7 En el caso de xcode, la página principal es la página de producto de Xcode de Apple y el repositorio contiene las 15 líneas de arriba. El contenido del plugin existe solo una vez que tu Xcode lo ha escrito, así que la revisión ocurre en tu Mac, contra tu compilación de Xcode.
Qué te pide aceptar Claude Code
Como la instalación ejecuta un programa, Claude Code imprime el comando y pregunta antes de ejecutarlo. En una terminal, la pregunta es Run this command now? [y/N].6 Ejecuté la instalación en Claude Code 2.1.322 desde un shell sin terminal conectada, y se negó en lugar de preguntar. Las primeras cuatro líneas de su salida:2
$ claude plugin install xcode@claude-plugins-official --scope local
"xcode" is installed by running a command from marketplace "claude-plugins-official" on this machine:
xcrun agent plugin path --plugin-format claude
(mode "link": its output directory is used in place (linked, not copied))
Not an interactive terminal, so the command was only displayed, not accepted. Run this in your own terminal (outside the Claude Code session) to confirm the command shown above.
De ese paso importan tres detalles.
Un agente no puede aceptar por ti. -y acepta el comando mostrado desde tu propia terminal. La referencia de la CLI dice que Claude Code ignora el flag cuando la instalación se ejecuta dentro de una sesión, desde la herramienta Bash o desde un hook.6 Si le pides a Claude Code que instale el plugin, cuenta con que te devuelva el comando.
Un script puede aceptar un comando exacto. Con --json, la instalación rechazada informa un objeto shownCommand, y --accept-command <sha256>, añadido en 2.1.271, acepta ese comando y ningún otro. La referencia dice que lo pases desde tu propia terminal, porque el flag no tiene efecto dentro de una sesión de Claude Code, así que un agente tampoco puede aceptar por hash. La documentación vincula el hash al comando, al plugin y al catálogo del marketplace, y dice que Claude Code vuelve a mostrar el comando si alguno de los tres cambió.6 El mío, extraído del resultado de una sola línea y reformateado:2
"shownCommand": {
"kind": "command_source",
"pluginId": "xcode@claude-plugins-official",
"command": "xcrun agent plugin path --plugin-format claude",
"mode": "link",
"catalogRevision": "gcs:43fd1f9db0941b2b83cb62268e35970d4a67c202",
"sha256": "b6a49a80f0917b25ceb38fa52e95dacca7ad78893aeb9f0463c62b3d73ca1a48"
}
Toma el valor de tu propia ejecución con --json. El valor de arriba difiere de un SHA-256 simple de la cadena del comando, que calculé para comparar, y la documentación dice que un hash deja de valer en cuanto el catálogo cambia. Claude Code puede rechazar un valor copiado de este artículo.26
Una sesión tiene su propia vía. El resto del mensaje de rechazo nombra un segundo lugar donde aceptar: el panel de detalles del plugin en /plugin. No he abierto ese panel para xcode.2
Lee el plugin antes de aceptarlo
El comando que el marketplace quiere ejecutar es uno que puedes ejecutar tú mismo. Tres líneas te muestran lo que la instalación enlazaría:
# 1. Ask Xcode for the directory. The first call for an Xcode build writes it.
DIR="$(xcrun agent plugin path --plugin-format claude)"
# 2. Inventory it without starting a session.
claude --plugin-dir "$DIR" plugin details xcode-integration
# 3. Read the one file that starts a process.
cat "$DIR/.mcp.json"
La línea 2 es la forma documentada de listar lo que Claude Code encuentra en un directorio de plugin: lee los archivos sin iniciar una sesión.7 El nombre que hay que pasar es el del manifiesto del plugin, xcode-integration. Con el nombre del catálogo, xcode, el mismo comando responde Plugin "xcode" not found.2 En Xcode 27.2 (27B52) y Claude Code 2.1.322, la primera parte del inventario decía:2
xcode-integration 1.0.0
Description: Xcode-managed plugin for skills and services that integrate with the IDE.
Source: xcode-integration@inline
Component inventory
Skills (16) accessibility-dynamic-type-specialist, accessibility-sufficient-contrast-specialist, accessibility-voiceover-specialist, adopt-c-bounds-safety, app-intents-specialist, app-intents-whats-new-27, app-resizability, audit-xcode-security-settings, building-document-based-swiftui-applications, device-interaction, modernize-tests, swiftui-specialist, swiftui-whats-new-27, translation, translation-coordinator, xctrace
Agents (0)
Hooks (0)
MCP servers (1) xcode (tool schemas resolved at runtime; not counted)
LSP servers (0)
Projected token cost
Always-on: ~4,463 tok added to every session
La página de seguridad de Claude Code enumera las partes de un plugin que ejecutan código por sí solas, fuera de las reglas de permisos que rigen las llamadas a herramientas de Claude: hooks, monitores, mods y procesos de servidores MCP y LSP.7 El directorio de Apple tiene una de esas, el servidor MCP. Su nivel superior contiene tres entradas: la carpeta del manifiesto, .mcp.json y skills/. Los 160 archivos son 157 archivos Markdown, dos archivos JSON y un script de Python. El script tiene 69 líneas y está dentro del skill audit-xcode-security-settings, importa solo argparse, json, re y pathlib, y su propia descripción dice que filtra una salida guardada de ajustes de compilación hasta dejar las entradas relevantes para la seguridad. Solo se ejecuta si un agente lo ejecuta.2
claude plugin validate aprueba el directorio con una advertencia: el manifiesto no nombra ningún autor. La misma ejecución aplica un subconjunto de las verificaciones de envío del directorio de claude.ai de Anthropic, un listado distinto del marketplace oficial. Esas verificaciones informan dos problemas por los que ese directorio rechazaría un envío, la falta de README y la falta de LICENSE, y una advertencia, la falta de ícono. No afectan a la inclusión de este plugin en el catálogo: la guía de publicación dice que el marketplace oficial no acepta envíos a través del portal de ese directorio.212 La carpeta no declara términos de licencia propios. Yo la trato como parte de Xcode.
Qué recibe una sesión: 16 skills, 15 de ellos listados
Cargué el directorio en sesiones de un solo prompt, en un proyecto vacío, con claude -p --plugin-dir "$DIR". Un plugin cargado con --plugin-dir dura solo esa sesión y no instala nada.2
El evento inicial de la sesión listó el plugin como xcode-integration@inline, versión 1.0.0, y el registro de depuración anotó 16 skills cargados desde él. La propia lista de skills y slash commands de la sesión tenía 15 de ellos. El que falta, translation-coordinator, fija user-invocable: false en su encabezado, el ajuste que oculta un skill del menú / y deja que Claude pueda invocarlo.9 Cuando le pedí al modelo, en la misma sesión, que imprimiera los skills que tenía, imprimió 16 nombres, entre ellos el coordinador. Esa última comprobación es el informe del propio modelo.2
Todos los nombres llevan el prefijo xcode-integration:, como en /xcode-integration:swiftui-specialist. El catálogo llama al plugin xcode y el manifiesto lo llama xcode-integration, y la referencia de carga de Claude Code dice que los dos nombres cumplen funciones distintas: el nombre del catálogo es la clave de instalación, y el nombre del manifiesto es el espacio de nombres de los componentes del plugin.5 Observé el prefijo con --plugin-dir. Para una instalación desde el marketplace, me baso en esa página.
La estimación de Claude Code de lo que cuesta cada skill, tomada del resto de la misma salida, junto a si los archivos del skill nombran alguna de las herramientas del bridge:2
| Skill | Siempre en contexto | Al invocarlo | Herramientas del bridge que nombra |
|---|---|---|---|
app-intents-specialist |
~930 | ~2.2k | Ninguna |
app-intents-whats-new-27 |
~780 | ~3.3k | Ninguna |
swiftui-specialist |
~340 | ~1.5k | Ninguna |
swiftui-whats-new-27 |
~340 | ~1.6k | Ninguna |
adopt-c-bounds-safety |
~320 | ~740 | Ninguna |
building-document-based-swiftui-applications |
~310 | ~900 | Ninguna |
app-resizability |
~230 | ~6.9k | Ninguna |
audit-xcode-security-settings |
~210 | ~21.7k | 11 |
accessibility-voiceover-specialist |
~180 | ~6.9k | 1 |
xctrace |
~170 | ~380 | Ninguna |
translation |
~160 | ~9k | 4 |
translation-coordinator (solo para el modelo) |
~150 | ~4.2k | 4 |
accessibility-dynamic-type-specialist |
~140 | ~3.6k | 1 |
accessibility-sufficient-contrast-specialist |
~120 | ~4.9k | 1 |
device-interaction |
~50 | ~4.6k | 4 |
modernize-tests |
~40 | ~3.5k | Ninguna |
Las cifras son tokens, y son estimaciones de la herramienta. Las filas están redondeadas y suman unos 4.470; el total del propio Claude Code son los ~4.463 de arriba. Los dos skills de App Intents representan unos 1.710 de ese total, porque sus descripciones son largas. La estimación deja fuera los esquemas de herramientas del servidor MCP, que según el inventario se resuelven en tiempo de ejecución. Lo que enseña cada skill está en mi artículo más largo sobre los skills que trae Xcode 27 y las dos formas de sacarlos.
La mitad MCP: una entrada de servidor, 54 herramientas aquí
El .mcp.json declara un servidor stdio llamado xcode cuyo comando es xcrun mcpbridge. La documentación de Apple da el mismo comando para conectar el bridge a mano: claude mcp add --transport stdio xcode -- xcrun mcpbridge.10 Mis sesiones de Claude Code ya tenían esa entrada. En una sesión con la entrada añadida a mano y sin el plugin, el bridge se conectó en 339 milisegundos, se identificó como xcode-tools versión 25464 y listó 54 herramientas.2 Un artículo mío anterior citaba 20 herramientas para el bridge en Xcode 26.3, un recuento que ese artículo basa en mis pruebas de entonces y en un tutorial de terceros que enlaza.
Agrupé las 54 por nombre:2
| Área | Herramientas | Ejemplos |
|---|---|---|
| Archivos y estructura del proyecto | 15 | XcodeRead, XcodeWrite, XcodeUpdate, XcodeRM, XcodeNewTarget |
| Compilación, ejecución y diagnósticos | 11 | BuildProject, RunProject, GetBuildLog, XcodeRefreshCodeIssuesInFile |
| Ajustes de compilación, flags, entitlements, Info.plist | 6 | GetTargetBuildSettings, UpdateTargetBuildSetting, AddEntitlement |
| Pruebas | 5 | GetTestList, RunSomeTests, RunAllTests |
| Interacción con dispositivos y simuladores | 5 | DeviceInteractionStartSession, DeviceInteractionSynthesize |
| String Catalogs y localización | 4 | LocalizationPlanner, StringCatalogEdit |
| Informes de fallos y de rendimiento en campo | 4 | GetTopCrashIssues, GetFieldPerformanceIssueLogs |
| Vistas previas, snippets y el depurador | 3 | RenderPreview, RunCodeSnippet, InvokeDebuggerCommand |
| Documentación | 1 | DocumentationSearch |
La lista llega más lejos de lo que sugiere la descripción del marketplace. XcodeRM elimina archivos del proyecto y, de forma predeterminada, mueve los archivos subyacentes al Basurero. InvokeDebuggerCommand envía un comando de lldb a la sesión de depuración activa de Xcode. GetTopCrashIssues se describe a sí misma como una herramienta que recupera las firmas de fallos de tu app desde el servicio de informes de fallos de Apple.2 Cada una de estas es una llamada a una herramienta, así que las reglas de permisos de Claude Code se le aplican. El proceso del servidor en sí se ejecuta fuera del sandbox, como el servidor MCP de cualquier plugin.7
Los skills y las herramientas se remiten entre sí. Siete de los 16 skills nombran herramientas del bridge por su nombre simple. Uno de los siete, audit-xcode-security-settings, da además la forma genérica con prefijo mcp__<server>__XcodeGlob, dice que el nombre del servidor varía según el entorno y le indica al agente que no escriba uno fijo en el código. La dependencia va también en el otro sentido. Las descripciones de las cuatro herramientas de String Catalogs y localización le indican al agente que active un skill del plugin antes de llamar a la herramienta: LocalizationPlanner y StringCatalogRead nombran xcode-integration:translation-coordinator, y StringCatalogContext y StringCatalogEdit nombran xcode-integration:translation. Las otras 50 descripciones no nombran ningún skill.2 Una sesión con el bridge añadido a mano y sin el plugin tiene las cuatro herramientas y ninguno de los dos skills. Alguien que comentó en el pull request fusionado preguntó qué aporta la inclusión en el catálogo, dado que el servidor MCP de Xcode ya funcionaba.1 En mi Mac la respuesta son los skills, y cuatro de las propias herramientas del bridge piden dos de ellos por su nombre.
Si ya añadiste el bridge a mano
Claude Code ordena por precedencia las definiciones de servidores MCP: primero los ámbitos local, de proyecto y de usuario, luego los servidores que aportan los plugins y luego los conectores de claude.ai. Un servidor que una organización aporta mediante ajustes administrados queda por encima de todos ellos. Claude Code compara el servidor de un plugin con los demás por endpoint, de modo que un servidor de plugin con el mismo comando que uno que tú configuraste cuenta como duplicado, y Claude Code se conecta una sola vez, usando tu definición.8
Mis sesiones mostraron exactamente eso. Con el plugin cargado junto a mi entrada xcode de ámbito de usuario, la lista de servidores de la sesión tenía xcode con el origen user y ninguna entrada para el servidor del plugin, y el registro de depuración decía por qué (marca de tiempo y nivel de registro recortados):2
Suppressing plugin MCP server "plugin:xcode-integration:xcode": duplicates manually-configured "xcode"
El efecto práctico está en los nombres. Mientras la entrada añadida a mano siga ahí, las herramientas conservan los nombres mcp__xcode__BuildProject, mcp__xcode__XcodeRead, etcétera. La documentación le da al servidor de un plugin el nombre plugin:<plugin>:<server> y a sus herramientas la forma mcp__plugin_<plugin>_<server>__<tool>, y dice que la forma de las herramientas es la que hay que usar en las reglas de permisos y en los matchers de hooks.8 Según esa regla, una sesión con el plugin y sin la entrada añadida a mano llamaría a la misma herramienta mcp__plugin_xcode-integration_xcode__BuildProject. No medí esa combinación, porque mi configuración tiene la entrada añadida a mano. Si tienes reglas de permisos de tipo allow o hooks escritos contra nombres mcp__xcode__, quitar la entrada añadida a mano después de instalar el plugin es un cambio de nombre, según la regla de nombres de la documentación.
Dos capas de permisos, y la instalación toca una
Aceptar el comando resuelve el lado de Claude Code. Xcode mantiene su propia barrera, y nada en el directorio del plugin puede abrirla: el directorio no tiene hooks ni paso de instalación.
Apple documenta esa barrera para un Xcode en ejecución. En la configuración de Intelligence de Xcode, en Model Context Protocol, un menú desplegable llamado «Allow External Agents to Use Xcode Tools» ofrece Always, «While Xcode is Open» y Never, y Xcode te avisa cuando un agente externo se conecta.10 Las notas de la versión de Xcode 27 describen una segunda modalidad, una vista previa de un servidor MCP que se ejecuta sin un workspace abierto. Permanece desactivada hasta que ejecutas sudo xcrun mcp-server enable, y te permite conceder a agentes con firma de código permiso para usar proyectos dentro de un árbol de directorios.11
Mi Mac funciona con la segunda modalidad. xcrun mcp-server status informa que el permiso está habilitado, con un agente permitido y 11 carpetas permitidas.2 El agente permitido es el propio Claude Code, identificado por su firma de código, así que espero que un bridge iniciado por el plugin quede cubierto por la misma concesión. No lo he probado. Tampoco he visto qué pregunta Xcode en una Mac donde no has aprobado ningún agente y el plugin es lo primero que inicia el bridge.
Qué cambia cuando cambia Xcode
Una entrada de marketplace fijada cambia cuando cambia el catálogo. La entrada de Xcode cambia cuando cambia Xcode. Tres compilaciones de Xcode en mi Mac, la versión candidata de 27.1 (27A9275), la beta de 27.2 (27B5019j) y 27.2 (27B52), produjeron tres directorios, con 15, 15 y 16 skills. En la beta de 27.2, el skill que las otras dos compilaciones llaman app-resizability se llama uikit-app-modernization, y xctrace existe solo en 27B52.2
El mecanismo es la ejecución de una vez por sesión. Actualiza Xcode, o selecciona otra copia, y el comando imprime una ruta distinta la próxima vez que se ejecute, que con un plugin instalado y habilitado es normalmente la ejecución en segundo plano de la siguiente sesión. La referencia de carga dice que Claude Code instala entonces el resultado como una versión nueva y lo recarga en la sesión interactiva en curso, con una notificación, o te pide que ejecutes /reload-plugins cuando recargarlo en el momento invalidaría la caché de prompts de la sesión.5 Tu aceptación anterior sigue vigente, porque la cadena del comando es la misma. No he visto ocurrir esa recarga, ya que no he instalado el plugin.
De ahí salen dos hábitos. Vuelve a ejecutar las tres líneas de revisión después de una actualización de Xcode, como leerías un registro de cambios, y empieza por la primera línea, porque la ruta cambia con la compilación. Y si un comando de agente no imprime nada después de una actualización de Xcode, busca primero un Xcode que no abriste (pgrep -lx Xcode). En mi Mac, otros comandos de xcrun agent se quedaron colgados mientras un Xcode oculto esperaba en su pantalla de primer inicio, la causa probable que rastreé en el artículo más largo. xcrun agent plugin path no se colgó en ninguna de mis ejecuciones. Si alguna vez supera el límite de 60 segundos, la documentación dice que la instalación o la actualización falla.4
Tres formas de conectar Xcode a Claude Code
| Bridge añadido a mano | --plugin-dir, una sesión |
Instalación desde el marketplace | |
|---|---|---|---|
| Comando | claude mcp add --transport stdio xcode -- xcrun mcpbridge |
claude --plugin-dir "$(xcrun agent plugin path --plugin-format claude)" |
claude plugin install xcode@claude-plugins-official |
| Skills de Apple | Ninguno | 16 en Xcode 27.2 | 16 en Xcode 27.2, a juzgar por el directorio |
| Herramientas del bridge | 54 aquí, con nombres mcp__xcode__<tool> |
Las de la entrada añadida a mano cuando existe una; si no, las del servidor propio del plugin, algo que no medí | Lo mismo, a juzgar por la documentación |
| Dura | Hasta que lo quitas | Una sesión | Hasta que lo desinstalas; mientras el plugin está habilitado, el comando normalmente se ejecuta de nuevo en cada sesión |
| Qué apruebas | Un comando que tú escribiste | Un comando que tú escribiste | Un comando que el catálogo te muestra |
| Medido para este artículo | Sí | Sí | Solo el mensaje de rechazo |
Puntos clave
Para desarrolladores de iOS que usan Claude Code:
- Ejecuta primero las tres líneas de revisión. En Xcode 27.2 muestran 16 skills, un servidor MCP y ningún hook.2
- Instala desde tu propia terminal con claude plugin install xcode@claude-plugins-official, y compara el comando que muestra con el del catálogo: xcrun agent plugin path --plugin-format claude.16
- Cuenta con unos 4.463 tokens de descripciones de skills en cada sesión, según la estimación de Claude Code, antes de que una sesión invoque ningún skill.2
Para desarrolladores que ya usan el bridge añadido a mano: - El plugin añade los skills de Apple. Claude Code omite el servidor del plugin por ser un duplicado, y los nombres de tus herramientas se quedan como están mientras la entrada añadida a mano siga ahí.28 - Las herramientas de traducción cuentan con el plugin: las cuatro herramientas de String Catalogs y localización le indican al agente que active uno de dos skills que solo el plugin aporta.2
Para equipos que revisan las herramientas antes de usarlas:
- Ningún commit fija el contenido. Revisa el directorio por cada compilación de Xcode, y trata una actualización de Xcode como una actualización del plugin.14
- --accept-command <sha256> vincula una instalación mediante scripts a un comando y un catálogo revisados, y disableCommandPluginSources desactiva el tipo de origen para una organización.46
Para autores de marketplaces y de plugins:
- Un origen command hace que quien publica sea la herramienta que está en la máquina del usuario. El marketplace oficial de Anthropic admite cada uno por su nombre, como una exención listada a su regla de fijación.3
Preguntas frecuentes
¿Qué es el plugin de Xcode de Apple para Claude Code?
Una entrada llamada xcode en el marketplace oficial de Claude Code de Anthropic, con «Apple Inc.» como autor. La entrada no contiene ningún archivo de plugin. Guarda el comando xcrun agent plugin path --plugin-format claude, y en las tres compilaciones de Xcode 27 que probé, Xcode escribió el directorio del plugin en mi Mac cuando el comando se ejecutó.12
¿Cómo instalo el plugin de Xcode en Claude Code?
Ejecuta claude plugin install xcode@claude-plugins-official en tu propia terminal y acepta el comando que muestra. Dentro de una sesión, el lugar donde aceptar es el panel de detalles del plugin en /plugin, a juzgar por el mensaje que imprimió la instalación rechazada.2 Un agente no puede aceptar el comando por ti: Claude Code ignora -y dentro de una sesión.6 Yo no he completado la instalación. En el ámbito de usuario, el predeterminado, tienes el plugin, y sus descripciones de skills siempre activas, en todos los proyectos de la máquina. --scope local lo limita a ti en un solo repositorio, y --scope project lo registra en .claude/settings.json, un archivo que incluyes en tus commits. Eso habilita el plugin para todos los que trabajan en el repositorio y no descarga nada en sus máquinas, así que cada colaborador de todos modos ejecuta la instalación una vez por clon. La aceptación es por usuario: cada persona acepta el comando que Claude Code le muestra. Mi propio intento usó --scope local.26 Para quitar el plugin más adelante, la misma referencia da claude plugin uninstall xcode@claude-plugins-official, con --scope cuando lo instalaste en un ámbito distinto del de usuario, el predeterminado.6
¿Qué contiene el plugin?
En Xcode 27.2 (27B52): 16 skills, un .mcp.json que declara un servidor que ejecuta xcrun mcpbridge y un manifiesto de tres campos. El inventario de Claude Code informa cero agentes, cero hooks y cero servidores LSP.2
¿Necesito el plugin si ya ejecuté claude mcp add para xcrun mcpbridge?
Lo necesitas por los skills. Claude Code trata el servidor del plugin como un duplicado del tuyo y lo omite, así que las herramientas no cambian. Los skills son nuevos, y cuatro herramientas del bridge, el grupo de String Catalogs y localización, le indican al agente que active primero un skill del plugin.28
¿Por qué Claude Code lista 15 skills si la carpeta tiene 16?
translation-coordinator fija user-invocable: false. Claude Code oculta un skill así del menú / y aun así deja que el modelo lo invoque.9 La lista de skills de la sesión mostró 15, y el modelo informó 16.2
¿Cuánto contexto usa el plugin?
El plugin details de Claude Code estima unos 4.463 tokens en cada sesión para las 16 descripciones de skills. Invocar un skill cuesta más, desde unos 380 tokens para xctrace hasta unos 21.700 para audit-xcode-security-settings. La estimación excluye los esquemas de herramientas del servidor MCP.2
¿Qué se ejecuta en mi Mac después de instalarlo?
A juzgar por la documentación y el directorio: el comando aceptado, en la instalación y normalmente una vez por sesión en segundo plano mientras el plugin está habilitado, y el proceso del servidor xcrun mcpbridge cuando una sesión se conecta a él. El directorio no tiene hooks.25 Todo lo demás es una llamada a una de las herramientas del bridge, algo que tus reglas de permisos cubren, o texto de skills, que según la página de seguridad entra en el contexto de Claude como instrucciones y moldea lo que Claude hace con las herramientas que ya tiene.7 El único script de Python, en audit-xcode-security-settings, solo se ejecuta si un agente lo ejecuta, y esa es una llamada a una herramienta que tus reglas de permisos también cubren.
¿Qué Xcode necesito?
xcrun agent plugin respondió en las tres compilaciones de mi Mac: la versión candidata de 27.1 (27A9275), una beta de 27.2 (27B5019j) y 27.2 (27B52). No he probado un Xcode anterior, y ninguna de las notas de la versión de Xcode 27 de Apple menciona el comando.211
Qué medí
Una sola Mac, el 10 y el 11 de noviembre de 2026. Toma los números como las observaciones de un solo desarrollador, no como documentación de Apple ni de Anthropic.2
- Mac y herramientas: macOS 27.0 (26A428), Xcode 27.2 (27B52) seleccionado, Claude Code 2.1.322. El modo MCP headless de Xcode estaba activado.
- Catálogo:
anthropics/claude-plugins-officialen el commit43fd1f9, el head en ambos días. - Leído sin una sesión: el directorio que imprime
xcrun agent plugin path --plugin-format claude,claude --plugin-dir <dir> plugin details,claude plugin validatey un recuento de archivos por tipo. - Sesiones: cuatro sesiones
claude -pde un solo prompt en un proyecto vacío, ninguna guardada. Tres cargaron el plugin con--plugin-dir. Una tenía solo mi bridge añadido a mano y le pidió a la búsqueda de herramientas de Claude Code las herramientas del bridge. Ninguna sesión llamó a una herramienta del bridge. - Instalación: rechazada por diseño en un shell sin terminal. Nunca acepté el comando.
- Descripciones de las herramientas: los 54 esquemas de herramientas tal como una sesión interactiva de Claude Code los cargó desde mi bridge añadido a mano mediante la búsqueda de herramientas. La sesión no llamó a ninguna herramienta.
- Comprobaciones de ausencia: los feeds de noticias para desarrolladores, de lanzamientos y de Newsroom de Apple, la página de Xcode de Apple, la página de noticias de Anthropic y el blog de Claude, obtenidos el 11 de noviembre y revisados en busca del plugin.
- Sin verificar: la pregunta interactiva y el panel de detalles; todo lo que viene después de una instalación desde el marketplace, incluidas la ejecución en segundo plano, la recarga tras una actualización de Xcode y la cadena de versión; el servidor propio del plugin en ejecución sin una entrada añadida a mano; qué pregunta Xcode cuando el bridge del plugin es el primer agente que ve; cualquier Xcode distinto de 27B52 para las mediciones de sesión; una Mac con el modo headless desactivado.
Los skills en sí, la segunda ruta para salir de Xcode (xcrun agent skills export) y el cuelgue con el que me topé en Xcode 27.2 están en Xcode 27 trae agent skills que puedes exportar a cualquier parte. Dos servidores MCP convirtieron a Claude Code en un sistema de compilación para iOS cubre el bridge añadido a mano, y Los servidores MCP son la nueva superficie de ataque cubre por qué la lista de herramientas de un servidor merece una lectura. La configuración en su conjunto está en la guía de desarrollo para iOS con agentes.
Referencias
-
Anthropic,
anthropics/claude-plugins-official,.claude-plugin/marketplace.jsonen el commit 43fd1f9, leído el 10 de noviembre de 2026 y de nuevo el 11 de noviembre, cuando ese commit seguía siendo el head. Fuente de la entradaxcodey de los recuentos: 317 plugins, de los cuales 163 tienen un origenurly 99 un origengit-subdir, todos con un camposha, 54 son rutas dentro del repositorio y uno es un origencommand. El pull request #6338 añadió la entrada: abierto el 30 de septiembre de 2026, fusionado el 6 de noviembre de 2026 a las 00:55 UTC, 15 líneas en un solo archivo, con una descripción que dice que lleva el cambio del #6259 a una rama dentro del repositorio para que sus verificaciones puedan ejecutarse, y un comentario del 9 de noviembre que pregunta qué aporta la inclusión en el catálogo frente al servidor MCP de Xcode ya existente. El pull request #6259, «Add Xcode plugin (xcode)»: abierto el 18 de septiembre de 2026 a las 23:12 UTC, una respuesta automática que dice que el repositorio solo acepta contribuciones de miembros del equipo de Anthropic, una revisión aprobatoria a las 23:31 UTC, cerrado como duplicado el 6 de noviembre de 2026 a las 00:58 UTC. ↩↩↩↩↩↩↩↩↩↩↩ -
Mediciones y comprobaciones del autor, 10 y 11 de noviembre de 2026, en la máquina y las versiones enumeradas en «Qué medí». Fuentes: la salida de
xcrun agent plugin path,claude plugin install(con y sin--json),claude --plugin-dir <dir> plugin details,claude plugin validate,claude --helpyxcrun mcp-server status; el contenido del directorio del plugin, incluido el encabezado de cada skill y una búsqueda de los 54 nombres de herramientas del bridge en cada archivo de skill; el evento inicial y el registro de depuración de cuatro sesiones de Claude Code de un solo prompt; las 54 descripciones de herramientas del bridge tal como las recibió una sesión interactiva; un SHA-256 de la cadena del comando; y copias guardadas de las páginas nombradas en «Comprobaciones de ausencia». Los recuentos son recuentos de archivos, carpetas y nombres de herramientas de esas fuentes. Las cifras de tokens son estimaciones de Claude Code. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩ -
Anthropic,
anthropics/claude-plugins-official, pull request #7015, «ci(validate-plugins): re-pin validator and allow the xcode command source», abierto y fusionado el 6 de noviembre de 2026 (00:49 y 00:53 UTC). Fuente de los tres fallos del validador en la entrada de Xcode, del ajustecommand-exempt: "xcode"y del comentario del workflow que llama a cada nombre exento una «listing decision» que requiere el visto bueno de operaciones del marketplace. ↩↩↩↩ -
Anthropic, documentación de Claude Code, Marketplace reference, secciones «command plugin source» y «Copy mode and link mode», obtenida el 11 de noviembre de 2026. Fuente de cuándo usar un origen
commandy de su ejemplo del IDE, del contrato de salida de una línea, deltimeoutpredeterminado de 60 segundos, de las condiciones en las que una instalación o una actualización falla, de que el modo link carga el directorio en su ubicación original con una versión derivada de su ruta y de sus entradas de nivel superior, y del ajustedisableCommandPluginSources. ↩↩↩↩↩↩↩↩ -
Anthropic, documentación de Claude Code, Plugin loading reference y Host and maintain a marketplace, obtenidas el 11 de noviembre de 2026. Fuente de cuándo vuelve a ejecutarse un origen de tipo command (en cada instalación o actualización, y una vez por sesión en segundo plano), de la recarga cuando su salida cambia, de la diferencia entre el nombre de entrada de un plugin y el nombre de su manifiesto, y de la regla de que Claude Code ejecuta solo el comando exacto que un usuario aceptó. ↩↩↩↩↩↩
-
Anthropic, documentación de Claude Code, Plugin commands reference, obtenida el 11 de noviembre de 2026: la pregunta
Run this command now? [y/N], que-yse ignora dentro de una sesión de Claude Code, el rechazo cuando no hay una terminal conectada, y--accept-command <sha256>con el objetoshownCommand. Versiones y fechas tomadas del registro de cambios de Claude Code: los orígenescommanden 2.1.229 (12 de agosto de 2026) y--accept-commanden 2.1.271 (14 de septiembre de 2026). Lo que cubre cada ámbito de instalación viene de Install and manage plugins, obtenida el mismo día. ↩↩↩↩↩↩↩↩↩↩↩ -
Anthropic, documentación de Claude Code, Plugin security and trust, obtenida el 11 de noviembre de 2026. Fuente de lo que un plugin puede ejecutar por sí solo, de que las reglas de permisos cubren las llamadas a herramientas de Claude y no los procesos propios de un plugin, de que los servidores MCP se ejecutan fuera del sandbox, y de los pasos de revisión, incluido
claude --plugin-dir <plugin directory> plugin details <plugin name>. ↩↩↩↩↩↩ -
Anthropic, documentación de Claude Code, Connect Claude Code to tools via MCP, sección «Scope hierarchy and precedence», y Add components to a plugin, obtenidas el 11 de noviembre de 2026. Fuente del orden de precedencia, de que los servidores de plugins se identifican como duplicados por endpoint, y de los nombres del servidor y de las herramientas de un plugin. ↩↩↩↩↩
-
Anthropic, documentación de Claude Code, Extend Claude with skills, obtenida el 11 de noviembre de 2026. Fuente de que
user-invocable: falseoculta un skill del menú/mientras Claude todavía puede invocarlo, y de que los skills de un plugin llevan un espacio de nombres con la forma/plugin-name:skill-name. ↩↩↩ -
Apple, Giving external agents access to Xcode, obtenida el 11 de noviembre de 2026 y sin cambios respecto de mi copia del 10 de noviembre. Fuente del ajuste «Allow External Agents to Use Xcode Tools» y de sus tres opciones, del aviso cuando un agente externo se conecta, y de
claude mcp add --transport stdio xcode -- xcrun mcpbridgecomo la configuración documentada. En esa fecha, la página no mencionaba ningún plugin. ↩↩↩ -
Apple, Xcode 27 Release Notes, obtenidas el 11 de noviembre de 2026. Fuente de la vista previa de un servidor MCP que se ejecuta sin un workspace de Xcode abierto, de
sudo xcrun mcp-server enabley de las concesiones de permisos a agentes con firma de código dentro de un árbol de directorios. Busquéxcrun agenten esta página y en las notas de la versión de Xcode 27.1, de 27.2 y de la beta de 27.3, y no encontré ninguna coincidencia. ↩↩ -
Anthropic, documentación de Claude Code, Publish and distribute a plugin, obtenida el 11 de noviembre de 2026. Fuente de que el marketplace oficial no acepta envíos a través del portal del directorio de plugins. ↩