Plugin Xcode od Apple do Claude Code: co instaluje

Z przewodnika: Claude Code Comprehensive Guide

Plugin xcode od Apple do Claude Code to 15 linii w oficjalnym marketplace Anthropic i ani jednego pliku: wpis przechowuje jedno polecenie, xcrun agent plugin path --plugin-format claude, a Xcode na własnym Macu użytkownika zapisuje plugin, kiedy to polecenie zostaje uruchomione.12 Wpis scalono 6 listopada 2026 (UTC). W miejscach, które sprawdziłem, nie znalazłem żadnego ogłoszenia ani od Apple, ani od Anthropic.2 W Xcode 27.2 polecenie wypisuje katalog ze 160 plikami: 16 skills i jeden wpis serwera MCP, bez hooków i bez agentów. Inwentarz samego Claude Code szacuje, że do każdej sesji dochodzi około 4463 tokenów, a polecenie bridge’a wskazane przez ten wpis serwera wymieniło w jednej z moich sesji 54 narzędzia.2 Przeczytałem ten katalog i załadowałem go do jednorazowych sesji przez --plugin-dir. Instalacji z marketplace nie zaakceptowałem, a każda sekcja mówi, skąd pochodzą poszczególne stwierdzenia.

TL;DR

  • Wpis w marketplace zawiera polecenie, a nie plugin. Każdy inny wpis, który pobiera treść spoza spisu pluginów, ma SHA commita. W xcode nie ma czego przypiąć i jest to jedyna nazwa na liście wyjątków w walidatorze marketplace.13
  • Instalacja oznacza, że człowiek akceptuje to polecenie. Claude Code wypisuje je i pyta, a flaga, która pozwala ominąć pytanie, nic nie robi, gdy instalację uruchamia agent z wnętrza sesji.6
  • Wszystko można najpierw przeczytać. Polecenie wypisuje katalog, a claude --plugin-dir <dir> plugin details xcode-integration sporządza jego inwentarz bez uruchamiania sesji.72
  • W Xcode 27.2 inwentarz to 16 skills, zero agentów, zero hooków i jeden serwer MCP, który uruchamia xcrun mcpbridge. Sesja pokazuje użytkownikowi na liście 15 z tych skills. Szesnastą jej nagłówek oznacza jako przeznaczoną wyłącznie dla modelu.29
  • Jeśli bridge został już dodany poleceniem claude mcp add, Claude Code pomija kopię z pluginu jako duplikat. Na moim Macu plugin dodał skills i nic poza nimi.28
  • Akceptacja obejmuje ciąg znaków polecenia. To, co polecenie wypisuje, zależy od wybranego Xcode, a tej różnicy nie odnotowuje żadna zmiana w spisie.45

Co trafiło do marketplace

Cały wpis to jeden obiekt JSON. Oto on w brzmieniu, jakie miał w anthropics/claude-plugins-official 11 listopada 2026, niezmienionym od scalenia: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/"
}

Tego dnia spis zawierał 317 pluginów. Posortowałem je według tego, skąd pochodzi ich treść:1

Typ źródła Wpisy Przypięte do SHA commita
Repozytorium git, przez URL 163 Wszystkie 163
Podkatalog repozytorium git 99 Wszystkie 99
Folder wewnątrz repozytorium marketplace 54 Nie dotyczy; folder jest we własnej historii spisu
Polecenie uruchamiane na komputerze użytkownika 1 (xcode) Nie; nie ma czego przypiąć

Historia tego, jak wpis tam trafił, pokazuje, jak bardzo jest on nietypowy. Jeden z kontrybutorów otworzył 18 września 2026 pull request #6259 zatytułowany „Add Xcode plugin (xcode)”. Bot odpowiedział, że repozytorium przyjmuje kontrybucje wyłącznie od członków zespołu Anthropic, a jeden z maintainerów zatwierdził zmianę 19 minut po otwarciu pull requesta. 30 września drugi pull request, #6338, przeniósł ten sam commit na gałąź wewnątrz repozytorium, żeby mogły się wykonać jego sprawdzenia.1

Sprawdzenia w ówczesnej postaci nie przeszły. Trzeci pull request, #7015, podaje, że walidator marketplace odrzucił wpis Xcode w trzech miejscach: wpis nie ma SHA, spacje w jego poleceniu liczą się jako metaznaki powłoki i nie ma w nim URL-a do sklonowania. Poprawka przeniosła workflow na wersję walidatora z nowym parametrem wejściowym command-exempt i ustawiła ten parametr na "xcode". Komentarz nad tą linią nazywa każdą nazwę na liście „listing decision”, która wymaga zatwierdzenia ze strony zespołu operacyjnego marketplace.3 Wszystkie trzy pull requesty zamknięto 6 listopada (UTC) w ciągu dziewięciu minut: #7015 otwarto o 00:49 i scalono o 00:53, #6338 scalono o 00:55, a #6259 zamknięto jako duplikat o 00:58.13

Żadna z dwóch firm nie powiedziała o tym niczego, co udałoby mi się znaleźć. 11 listopada sprawdziłem kanały Apple z aktualnościami dla deweloperów, z wydaniami i z newsroomu, stronę Xcode w witrynie Apple, stronę aktualności Anthropic oraz blog Claude i nie znalazłem żadnej wzmianki o pluginie. Dokumentacja Apple dla zewnętrznych agentów nadal opisuje ręczne dodawanie bridge’a poleceniem claude mcp add i nie wspomina o żadnym pluginie.210 Podstawą do nazywania pluginu pluginem Apple są pole autora we wpisie oraz to, że polecenie jest dostarczane wewnątrz Xcode.

Wpis przechowuje polecenie, a nie plugin

Claude Code dodał typ źródła command w wersji 2.1.229, 12 sierpnia 2026.6 Dokumentacja opisuje go jako źródło, którego należy użyć, gdy narzędzie na komputerze użytkownika wytwarza katalog pluginu, a jej przykładem jest IDE, które generuje plugin dla toolchainu wybranego przez użytkownika.4 Kontrakt jest niewielki:

  • Polecenie wypisuje jedną linię, bezwzględną ścieżkę katalogu pluginu, i kończy działanie z kodem 0. Domyślny limit czasu to 60 sekund, a wpis Xcode nie ustawia własnego.41
  • Claude Code uruchamia polecenie przy instalacji lub aktualizacji pluginu, a potem ponownie raz na sesję dla włączonego pluginu, w tle, krótko po jej rozpoczęciu. Rezygnuje z uruchomień w tle, gdy ustawiono CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC.5
  • W trybie link, którego używa wpis Xcode, Claude Code niczego nie kopiuje. Tworzy dowiązania do elementów najwyższego poziomu katalogu i ładuje pliki stamtąd, gdzie leżą. Wersja wynika z rzeczywistej ścieżki katalogu i z jego elementów najwyższego poziomu, a nie z zawartości plików.4
  • Claude Code uruchamia wyłącznie dokładnie to polecenie, które zaakceptował człowiek. Jeśli marketplace zmieni później polecenie lub jego tryb, uruchomienia w tle ustają, dopóki każdy użytkownik nie zaakceptuje nowego.5
  • Organizacja może wyłączyć cały ten typ źródła ustawieniem zarządzanym disableCommandPluginSources.4

Te reguły pasują do nazwy katalogu, której używa Xcode. Na moim Macu polecenie wypisuje ścieżkę zawierającą numer buildu Xcode (nazwę użytkownika zastąpiono):

$ xcrun agent plugin path --plugin-format claude
/Users/<you>/Library/Developer/Xcode/CodingAssistant/ExportedPlugins/27B52/claude

Nowy build Xcode oznacza nową ścieżkę, a to właśnie nowa ścieżka mówi Claude Code, że plugin się zmienił. Gdy katalog był już zbudowany i nie działała aplikacja Xcode, polecenie wracało po około 0,2 sekundy w trzech uruchomieniach z pomiarem czasu. Na moim Macu włączony jest tryb headless MCP w Xcode, czyli wersja zapoznawcza, którą włącza sudo xcrun mcp-server enable i którą omawia jedna z dalszych sekcji. Tutaj pierwsze wywołanie dla każdego buildu Xcode zapisało katalog przez Xcode Service, działający w tle proces pomocniczy wewnątrz bundle’a Xcode, a nie przez aplikację Xcode. Czas mierzyłem tylko dla wywołań, przy których katalog już istniał, i nie uruchamiałem polecenia przy wyłączonym tym trybie.2

Te same reguły zmieniają to, co może objąć przegląd. Dokumentacja bezpieczeństwa Claude Code każe przeczytać źródło pluginu przed instalacją: otworzyć stronę główną albo repozytorium marketplace i znaleźć tam katalog pluginu.7 W przypadku xcode stroną główną jest strona produktowa Xcode w witrynie Apple, a repozytorium zawiera 15 linii przytoczonych wyżej. Treść pluginu istnieje dopiero wtedy, gdy zapisze ją lokalne Xcode, więc przegląd odbywa się na własnym Macu, względem własnego buildu Xcode.

Co Claude Code prosi zaakceptować

Ponieważ instalacja uruchamia program, Claude Code wypisuje polecenie i pyta, zanim je uruchomi. W terminalu pytanie brzmi Run this command now? [y/N].6 Uruchomiłem instalację w Claude Code 2.1.322 z powłoki bez podłączonego terminala, a ona odmówiła, zamiast zapytać. Pierwsze cztery linie jej wyniku: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.

W tym kroku liczą się trzy szczegóły.

Agent nie może zaakceptować za człowieka. -y akceptuje wyświetlone polecenie z własnego terminala użytkownika. Dokumentacja referencyjna CLI podaje, że Claude Code ignoruje tę flagę, gdy instalację uruchamia się wewnątrz sesji, z narzędzia Bash albo z hooka.6 Po poproszeniu Claude Code o zainstalowanie pluginu należy się spodziewać, że odda on polecenie z powrotem użytkownikowi.

Skrypt może zaakceptować jedno, dokładnie określone polecenie. Z --json instalacja zakończona odmową zgłasza obiekt shownCommand, a --accept-command <sha256>, dodane w 2.1.271, akceptuje to polecenie i żadne inne. Dokumentacja referencyjna każe przekazywać tę flagę z własnego terminala, bo wewnątrz sesji Claude Code nie ma ona żadnego skutku, więc agent nie może zaakceptować także przez hash. Dokumentacja wiąże hash z poleceniem, pluginem i spisem marketplace i podaje, że Claude Code pokazuje polecenie ponownie, jeśli którekolwiek z tych trzech się zmieniło.6 Mój obiekt, wyodrębniony z jednolinijkowego wyniku i sformatowany na nowo: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"
}

Wartość należy wziąć z własnego uruchomienia z --json. Wartość powyżej różni się od zwykłego SHA-256 ciągu znaków polecenia, który obliczyłem dla porównania, a dokumentacja podaje, że hash przestaje się liczyć, gdy tylko zmieni się spis. Claude Code może odmówić przyjęcia wartości skopiowanej z tego wpisu.26

Sesja ma własną drogę. Dalsza część komunikatu o odmowie wskazuje drugie miejsce, w którym można zaakceptować: panel szczegółów pluginu pod /plugin. Nie otwierałem tego panelu dla xcode.2

Przed akceptacją warto przeczytać plugin

Polecenie, które marketplace chce uruchomić, można uruchomić samodzielnie. Trzy linie pokazują, do czego instalacja utworzyłaby dowiązania:

# 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"

Linia 2 to udokumentowany sposób na wypisanie tego, co Claude Code znajduje w katalogu pluginu: odczytuje pliki bez uruchamiania sesji.7 Przekazać trzeba nazwę z manifestu pluginu, xcode-integration. Z nazwą ze spisu, xcode, to samo polecenie odpowiada Plugin "xcode" not found.2 W Xcode 27.2 (27B52) i Claude Code 2.1.322 pierwsza część inwentarza brzmiał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

Strona Claude Code o bezpieczeństwie wymienia te części pluginu, które same uruchamiają kod, poza regułami uprawnień rządzącymi wywołaniami narzędzi przez Claude: hooki, monitory, mody oraz procesy serwerów MCP i LSP.7 Katalog Apple ma jedną z nich, serwer MCP. Jego najwyższy poziom zawiera trzy elementy: folder manifestu, .mcp.json i skills/. Na te 160 plików składa się 157 plików Markdown, dwa pliki JSON i jeden skrypt Pythona. Skrypt ma 69 linii i znajduje się wewnątrz skill audit-xcode-security-settings, importuje tylko argparse, json, re i pathlib, a jego własny opis mówi, że filtruje on zapisany wynik ustawień buildu do wpisów istotnych dla bezpieczeństwa. Uruchamia się tylko wtedy, gdy uruchomi go agent.2

claude plugin validate przepuszcza katalog z jednym ostrzeżeniem: manifest nie podaje autora. To samo uruchomienie stosuje podzbiór sprawdzeń, którym podlegają zgłoszenia do katalogu pluginów claude.ai prowadzonego przez Anthropic, czyli osobnego spisu, innego niż oficjalny marketplace. Te sprawdzenia zgłaszają dwa problemy, z powodu których katalog pluginów claude.ai odrzuciłby zgłoszenie, brak README i brak LICENSE, oraz jedno ostrzeżenie, brak ikony. Tego wpisu one nie dotyczą: przewodnik po publikowaniu podaje, że oficjalny marketplace nie przyjmuje zgłoszeń przez portal tamtego katalogu.212 Folder nie podaje własnych warunków licencji. Traktuję go jako część Xcode.

Co dostaje sesja: 16 skills, z czego 15 na liście

Załadowałem katalog do sesji z jednym promptem w pustym projekcie poleceniem claude -p --plugin-dir "$DIR". Plugin załadowany przez --plugin-dir istnieje tylko w tej jednej sesji i niczego nie instaluje.2

Zdarzenie otwierające sesję wymieniło plugin jako xcode-integration@inline, w wersji 1.0.0, a log debugowania odnotował 16 skills załadowanych z niego. Własna lista skills i poleceń z ukośnikiem (slash commands) tej sesji zawierała ich 15. Brakująca, translation-coordinator, ustawia w nagłówku user-invocable: false, czyli ustawienie, które ukrywa skill w menu /, a Claude nadal może ją wywołać.9 Kiedy w tej samej sesji poprosiłem model o wypisanie skills, które ma, wypisał 16 nazw, wśród nich koordynatora. To ostatnie sprawdzenie to relacja samego modelu.2

Każda nazwa ma prefiks xcode-integration:, jak w /xcode-integration:swiftui-specialist. Spis nazywa plugin xcode, a manifest xcode-integration, i dokumentacja referencyjna Claude Code o ładowaniu pluginów podaje, że te dwie nazwy pełnią różne funkcje: nazwa ze spisu jest kluczem instalacji, a nazwa z manifestu to przestrzeń nazw dla komponentów pluginu.5 Prefiks zaobserwowałem przy --plugin-dir. Co do instalacji z marketplace polegam na tej stronie.

Szacunek Claude Code tego, ile kosztuje każda skill, z dalszej części tego samego wyniku, zestawiony z tym, czy pliki danej skill wymieniają któreś z narzędzi bridge’a:2

Skill Zawsze w kontekście Po wywołaniu Wymienione narzędzia bridge’a
app-intents-specialist ~930 ~2.2k Brak
app-intents-whats-new-27 ~780 ~3.3k Brak
swiftui-specialist ~340 ~1.5k Brak
swiftui-whats-new-27 ~340 ~1.6k Brak
adopt-c-bounds-safety ~320 ~740 Brak
building-document-based-swiftui-applications ~310 ~900 Brak
app-resizability ~230 ~6.9k Brak
audit-xcode-security-settings ~210 ~21.7k 11
accessibility-voiceover-specialist ~180 ~6.9k 1
xctrace ~170 ~380 Brak
translation ~160 ~9k 4
translation-coordinator (tylko dla modelu) ~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 Brak

Liczby to tokeny i są szacunkami tego narzędzia. Wiersze są zaokrąglone i sumują się do około 4470; suma podana przez sam Claude Code to widoczne wyżej ~4,463. Na dwie skills App Intents przypada z tego około 1710, bo ich opisy są długie. Szacunek nie obejmuje schematów narzędzi serwera MCP, które według inwentarza są ustalane w czasie działania. To, czego uczy każda skill, opisuję w dłuższym wpisie o skills dostarczanych z Xcode 27 i dwóch drogach wydostania ich na zewnątrz.

Połowa MCP: jeden wpis serwera, tutaj 54 narzędzia

Plik .mcp.json deklaruje jeden serwer stdio o nazwie xcode, którego poleceniem jest xcrun mcpbridge. Dokumentacja Apple podaje to samo polecenie do ręcznego podłączenia bridge’a: claude mcp add --transport stdio xcode -- xcrun mcpbridge.10 Moje sesje Claude Code miały już ten wpis. W sesji z wpisem dodanym ręcznie i bez pluginu bridge połączył się w 339 milisekund, przedstawił się jako xcode-tools w wersji 25464 i wymienił 54 narzędzia.2 Mój wcześniejszy wpis podawał dla bridge’a w Xcode 26.3 liczbę 20 narzędzi, którą tamten wpis opiera na moich ówczesnych testach i na zewnętrznym omówieniu krok po kroku, do którego linkuje.

Te 54 narzędzia pogrupowałem według nazw:2

Obszar Narzędzia Przykłady
Pliki i struktura projektu 15 XcodeRead, XcodeWrite, XcodeUpdate, XcodeRM, XcodeNewTarget
Budowanie, uruchamianie i diagnostyka 11 BuildProject, RunProject, GetBuildLog, XcodeRefreshCodeIssuesInFile
Ustawienia buildu, flagi, uprawnienia (entitlements), Info.plist 6 GetTargetBuildSettings, UpdateTargetBuildSetting, AddEntitlement
Testy 5 GetTestList, RunSomeTests, RunAllTests
Interakcja z urządzeniem i symulatorem 5 DeviceInteractionStartSession, DeviceInteractionSynthesize
String Catalogs i lokalizacja 4 LocalizationPlanner, StringCatalogEdit
Raporty o awariach i o wydajności w warunkach rzeczywistych 4 GetTopCrashIssues, GetFieldPerformanceIssueLogs
Podglądy, fragmenty kodu i debugger 3 RenderPreview, RunCodeSnippet, InvokeDebuggerCommand
Dokumentacja 1 DocumentationSearch

Lista sięga dalej, niż sugeruje opis w marketplace. XcodeRM usuwa pliki z projektu i domyślnie przenosi odpowiadające im pliki na dysku do Kosza. InvokeDebuggerCommand wysyła polecenie lldb do aktywnej sesji debugowania Xcode. GetTopCrashIssues opisuje siebie jako narzędzie pobierające sygnatury awarii aplikacji z usługi raportowania awarii Apple.2 Każde z nich to wywołanie narzędzia, więc podlega regułom uprawnień Claude Code. Sam proces serwera działa poza sandboxem, jak serwer MCP każdego pluginu.7

Skills i narzędzia odwołują się do siebie nawzajem. Siedem z 16 skills wymienia narzędzia bridge’a samą nazwą, bez prefiksu. Jedna z tych siedmiu, audit-xcode-security-settings, podaje też ogólną postać z prefiksem mcp__<server>__XcodeGlob, zaznacza, że nazwa serwera zależy od środowiska, i każe agentowi nie wpisywać żadnej na sztywno. Zależność działa też w drugą stronę. Opisy wszystkich czterech narzędzi String Catalog i lokalizacji każą agentowi aktywować skill z pluginu przed wywołaniem narzędzia: LocalizationPlanner i StringCatalogRead wymieniają xcode-integration:translation-coordinator, a StringCatalogContext i StringCatalogEdit wymieniają xcode-integration:translation. Pozostałych 50 opisów nie wymienia żadnej skill.2 Sesja z bridge’em dodanym ręcznie i bez pluginu ma wszystkie cztery narzędzia, a nie ma żadnej z tych dwóch skills. Jedna z osób komentujących scalony pull request zapytała, co daje ten wpis, skoro serwer MCP Xcode już działał.1 Na moim Macu odpowiedzią są skills, a cztery narzędzia samego bridge’a proszą o dwie z nich z nazwy.

Jeśli bridge został już dodany ręcznie

Claude Code szereguje definicje serwerów MCP: najpierw zakres lokalny, projektu i użytkownika, potem serwery dostarczane przez pluginy, a na końcu konektory claude.ai. Serwer, który organizacja dostarcza przez ustawienia zarządzane, stoi ponad nimi wszystkimi. Claude Code porównuje serwer pluginu z pozostałymi według endpointu, więc serwer pluginu z tym samym poleceniem co serwer skonfigurowany samodzielnie liczy się jako duplikat, a Claude Code łączy się raz, używając definicji użytkownika.8

Moje sesje pokazały dokładnie to. Gdy plugin był załadowany obok mojego wpisu xcode z zakresu użytkownika, lista serwerów sesji zawierała xcode ze źródłem user, nie było na niej żadnego wpisu dla serwera pluginu, a log debugowania podał powód (znacznik czasu i poziom logowania usunięto):2

Suppressing plugin MCP server "plugin:xcode-integration:xcode": duplicates manually-configured "xcode"

Praktyczny skutek widać w nazwach. Dopóki wpis dodany ręcznie pozostaje, narzędzia zachowują nazwy mcp__xcode__BuildProject, mcp__xcode__XcodeRead i tak dalej. Dokumentacja nadaje serwerowi pluginu nazwę plugin:<plugin>:<server>, a jego narzędziom postać mcp__plugin_<plugin>_<server>__<tool>, i podaje, że to tej postaci nazwy narzędzia należy używać w regułach uprawnień i matcherach hooków.8 Zgodnie z tą regułą sesja z pluginem i bez wpisu dodanego ręcznie nazywałaby to samo narzędzie mcp__plugin_xcode-integration_xcode__BuildProject. Tego układu nie zmierzyłem, bo moja konfiguracja ma wpis dodany ręcznie. Jeśli reguły zezwalające albo hooki są napisane pod nazwy mcp__xcode__, to usunięcie wpisu dodanego ręcznie po zainstalowaniu pluginu jest, zgodnie z regułą nazewnictwa z dokumentacji, zmianą nazw.

Dwie warstwy uprawnień, a instalacja dotyka jednej

Zaakceptowanie polecenia załatwia sprawę po stronie Claude Code. Xcode ma własną bramkę i nic w katalogu pluginu nie może jej otworzyć: katalog nie ma hooków ani kroku instalacyjnego.

Apple dokumentuje tę bramkę dla działającego Xcode. W ustawieniach Intelligence w Xcode, w sekcji Model Context Protocol, menu podręczne o nazwie „Allow External Agents to Use Xcode Tools” oferuje opcje Always, „While Xcode is Open” i Never, a Xcode wyświetla alert, gdy łączy się zewnętrzny agent.10 Informacje o wydaniu Xcode 27 opisują drugi układ, wersję zapoznawczą serwera MCP, który działa bez otwartego workspace’u. Pozostaje on wyłączony do czasu uruchomienia sudo xcrun mcp-server enable i pozwala przyznać agentom z podpisanym kodem uprawnienie do korzystania z projektów w obrębie drzewa katalogów.11

Mój Mac działa w drugim układzie. xcrun mcp-server status zgłasza włączone uprawnienie, jednego dopuszczonego agenta i 11 dopuszczonych folderów.2 Dopuszczonym agentem jest sam Claude Code, rozpoznawany po podpisie kodu, więc spodziewam się, że bridge uruchomiony przez plugin będzie objęty tym samym uprawnieniem. Nie przetestowałem tego. Nie widziałem też, o co Xcode pyta na Macu, na którym nie zatwierdzono żadnego agenta, a plugin jest pierwszym, co uruchamia bridge.

Co się zmienia, gdy zmienia się Xcode

Przypięty wpis w marketplace zmienia się wtedy, gdy zmienia się spis. Wpis Xcode zmienia się wtedy, gdy zmienia się Xcode. Trzy buildy Xcode na moim Macu, wersja release candidate 27.1 (27A9275), beta 27.2 (27B5019j) i 27.2 (27B52), dały trzy katalogi, z 15, 15 i 16 skills. W becie 27.2 skill, którą dwa pozostałe buildy nazywają app-resizability, nosi nazwę uikit-app-modernization, a xctrace istnieje tylko w 27B52.2

Mechanizmem jest uruchomienie raz na sesję. Po aktualizacji Xcode albo po wybraniu innej jego kopii polecenie przy następnym uruchomieniu wypisuje inną ścieżkę, a przy zainstalowanym i włączonym pluginie tym następnym uruchomieniem jest zwykle uruchomienie w tle w kolejnej sesji. Dokumentacja referencyjna o ładowaniu pluginów podaje, że Claude Code instaluje wtedy wynik jako nową wersję i przeładowuje go w działającej sesji interaktywnej, z powiadomieniem, albo prosi o uruchomienie /reload-plugins, gdy przeładowanie na miejscu unieważniłoby cache promptu sesji.5 Wcześniejsza akceptacja pozostaje w mocy, bo ciąg znaków polecenia jest ten sam. Nie obserwowałem tego przeładowania, ponieważ nie zainstalowałem pluginu.

Wynikają z tego dwa nawyki. Po aktualizacji Xcode warto ponownie uruchomić trzy linie przeglądu, tak jak czyta się changelog, i zacząć od pierwszej, bo ścieżka zmienia się wraz z buildem. A jeśli po aktualizacji Xcode polecenie agentowe nic nie wypisuje, najpierw warto poszukać Xcode, którego nie otwierano ręcznie (pgrep -lx Xcode). Na moim Macu inne polecenia xcrun agent zawieszały się, gdy ukryte Xcode czekało na ekranie pierwszego uruchomienia, co jest prawdopodobną przyczyną, którą prześledziłem w dłuższym wpisie. xcrun agent plugin path nie zawiesiło się w żadnym z moich uruchomień. Gdyby kiedykolwiek przekroczyło limit 60 sekund, to według dokumentacji instalacja lub aktualizacja kończy się niepowodzeniem.4

Trzy sposoby podłączenia Xcode do Claude Code

Bridge dodany ręcznie --plugin-dir, jedna sesja Instalacja z marketplace
Polecenie 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 Apple Brak 16 w Xcode 27.2 16 w Xcode 27.2, sądząc po katalogu
Narzędzia bridge’a Tutaj 54, pod nazwami mcp__xcode__<tool> Narzędzia wpisu dodanego ręcznie, jeśli taki istnieje; w przeciwnym razie własny serwer pluginu, czego nie zmierzyłem To samo, sądząc po dokumentacji
Trwa Do usunięcia Jedną sesję Do odinstalowania; dopóki plugin jest włączony, polecenie zwykle uruchamia się ponownie w każdej sesji
Co się zatwierdza Polecenie wpisane samodzielnie Polecenie wpisane samodzielnie Polecenie pokazane przez spis
Zmierzone na potrzeby tego wpisu Tak Tak Tylko komunikat o odmowie

Kluczowe wnioski

Dla deweloperów iOS używających Claude Code: - Najpierw warto uruchomić trzy linie przeglądu. W Xcode 27.2 pokazują one 16 skills, jeden serwer MCP i ani jednego hooka.2 - Instalować należy z własnego terminala poleceniem claude plugin install xcode@claude-plugins-official, a wyświetlone przez nie polecenie porównać z tym ze spisu: xcrun agent plugin path --plugin-format claude.16 - Należy liczyć się z około 4463 tokenami opisów skills w każdej sesji, według szacunku Claude Code, zanim sesja wywoła jakąkolwiek skill.2

Dla deweloperów, którzy już używają bridge’a dodanego ręcznie: - Plugin dodaje skills Apple. Claude Code pomija serwer pluginu jako duplikat, a nazwy narzędzi pozostają bez zmian, dopóki pozostaje wpis dodany ręcznie.28 - Narzędzia tłumaczeniowe oczekują pluginu: wszystkie cztery narzędzia String Catalog i lokalizacji każą agentowi aktywować jedną z dwóch skills, które dostarcza tylko plugin.2

Dla zespołów, które sprawdzają narzędzia przed użyciem: - Żaden commit nie przypina treści. Katalog należy przeglądać osobno dla każdego buildu Xcode, a aktualizację Xcode traktować jak aktualizację pluginu.14 - --accept-command <sha256> wiąże instalację skryptową z jednym sprawdzonym poleceniem i spisem, a disableCommandPluginSources wyłącza ten typ źródła dla organizacji.46

Dla autorów marketplace i pluginów: - Źródło command czyni wydawcą narzędzie na komputerze użytkownika. Oficjalny marketplace Anthropic dopuszcza każde takie źródło z nazwy, jako wpisany na listę wyjątek od swojej reguły przypinania.3

FAQ

Czym jest plugin Xcode od Apple do Claude Code?

To wpis o nazwie xcode w oficjalnym marketplace Claude Code prowadzonym przez Anthropic, z „Apple Inc.” jako autorem. Wpis nie zawiera żadnych plików pluginu. Przechowuje polecenie xcrun agent plugin path --plugin-format claude, a na trzech buildach Xcode 27, które wypróbowałem, Xcode zapisało katalog pluginu na moim Macu, kiedy polecenie zostało uruchomione.12

Jak zainstalować plugin Xcode w Claude Code?

Należy uruchomić claude plugin install xcode@claude-plugins-official we własnym terminalu i zaakceptować polecenie, które zostanie wyświetlone. Wewnątrz sesji miejscem akceptacji jest panel szczegółów pluginu pod /plugin, sądząc po komunikacie, który wypisała instalacja zakończona odmową.2 Agent nie może zaakceptować polecenia za człowieka: wewnątrz sesji Claude Code ignoruje -y.6 Sam nie dokończyłem instalacji. W domyślnym zakresie użytkownika plugin, wraz z opisami skills, które zawsze są w kontekście, jest dostępny w każdym projekcie na danym komputerze. --scope local ogranicza go do jednego użytkownika w jednym repozytorium, a --scope project zapisuje go w pliku .claude/settings.json, który commituje się do repozytorium. To włącza plugin dla wszystkich, którzy pracują w tym repozytorium, i niczego nie pobiera na ich komputery, więc każdy współpracownik nadal uruchamia instalację raz na każdy klon. Akceptacja jest osobna dla każdego użytkownika: każda osoba akceptuje polecenie, które pokazuje jej Claude Code. Moja własna próba używała --scope local.26 Do późniejszego usunięcia pluginu ta sama dokumentacja referencyjna podaje claude plugin uninstall xcode@claude-plugins-official, z --scope, jeśli instalacja odbyła się w zakresie innym niż domyślny zakres użytkownika.6

Co zawiera plugin?

W Xcode 27.2 (27B52): 16 skills, plik .mcp.json, który deklaruje jeden serwer uruchamiający xcrun mcpbridge, oraz manifest z trzema polami. Inwentarz Claude Code zgłasza zero agentów, zero hooków i zero serwerów LSP.2

Czy plugin jest potrzebny, jeśli claude mcp add dla xcrun mcpbridge zostało już uruchomione?

Jest potrzebny ze względu na skills. Claude Code traktuje serwer pluginu jako duplikat serwera użytkownika i go pomija, więc narzędzia się nie zmieniają. Skills są nowe, a cztery narzędzia bridge’a, zestaw String Catalog i lokalizacji, każą agentowi najpierw aktywować skill z pluginu.28

Dlaczego Claude Code pokazuje na liście 15 skills, skoro folder ma ich 16?

translation-coordinator ustawia user-invocable: false. Claude Code ukrywa taką skill w menu /, a modelowi nadal pozwala ją wywołać.9 Lista skills sesji pokazała 15, a model zgłosił 16.2

Ile kontekstu zużywa plugin?

plugin details w Claude Code szacuje około 4463 tokenów w każdej sesji na 16 opisów skills. Wywołanie skill kosztuje więcej, od około 380 tokenów dla xctrace do około 21 700 dla audit-xcode-security-settings. Szacunek nie obejmuje schematów narzędzi serwera MCP.2

Co działa na Macu po zainstalowaniu pluginu?

Sądząc po dokumentacji i po katalogu: zaakceptowane polecenie, przy instalacji i zwykle raz na sesję w tle, dopóki plugin jest włączony, oraz proces serwera xcrun mcpbridge, gdy sesja się z nim łączy. Katalog nie ma hooków.25 Wszystko inne to albo wywołanie jednego z narzędzi bridge’a, objęte regułami uprawnień użytkownika, albo tekst skills, który według strony o bezpieczeństwie trafia do kontekstu Claude jako instrukcje i kształtuje to, co Claude robi z narzędziami, które już ma.7 Jedyny skrypt Pythona, w audit-xcode-security-settings, uruchamia się tylko wtedy, gdy uruchomi go agent, a to jest wywołanie narzędzia, również objęte regułami uprawnień użytkownika.

Którego Xcode potrzeba?

xcrun agent plugin odpowiedziało we wszystkich trzech buildach na moim Macu: w wersji release candidate 27.1 (27A9275), w becie 27.2 (27B5019j) i w 27.2 (27B52). Nie próbowałem wcześniejszego Xcode, a żadne informacje o wydaniu Xcode 27 opublikowane przez Apple nie wspominają o tym poleceniu.211

Co zmierzyłem

Jeden Mac, 10 i 11 listopada 2026. Liczby należy traktować jako obserwacje jednego dewelopera, a nie jako dokumentację Apple czy Anthropic.2

  • Mac i narzędzia: macOS 27.0 (26A428), wybrane Xcode 27.2 (27B52), Claude Code 2.1.322. Tryb headless MCP w Xcode był włączony.
  • Spis: anthropics/claude-plugins-official na commicie 43fd1f9, czyli head w obu dniach.
  • Odczytane bez sesji: katalog, który wypisuje xcrun agent plugin path --plugin-format claude, claude --plugin-dir <dir> plugin details, claude plugin validate oraz liczba plików według typu.
  • Sesje: cztery sesje claude -p z jednym promptem w pustym projekcie, żadnej nie zapisano. Trzy załadowały plugin przez --plugin-dir. Jedna miała tylko mój bridge dodany ręcznie i zapytała wyszukiwarkę narzędzi Claude Code o narzędzia bridge’a. Żadna sesja nie wywołała narzędzia bridge’a.
  • Instalacja: odmowa zgodna z założeniami, w powłoce bez terminala. Polecenia nigdy nie zaakceptowałem.
  • Opisy narzędzi: 54 schematy narzędzi w postaci, w jakiej interaktywna sesja Claude Code załadowała je przez wyszukiwarkę narzędzi z mojego bridge’a dodanego ręcznie. Sesja nie wywołała żadnego narzędzia.
  • Sprawdzenia nieobecności: kanały Apple z aktualnościami dla deweloperów, z wydaniami i z newsroomu, strona Xcode w witrynie Apple, strona aktualności Anthropic oraz blog Claude, pobrane 11 listopada i przeszukane pod kątem pluginu.
  • Nie zweryfikowano: interaktywne pytanie i panel szczegółów; wszystko, co następuje po instalacji z marketplace, w tym uruchomienie w tle, przeładowanie po aktualizacji Xcode i ciąg znaków wersji; własny serwer pluginu działający bez wpisu dodanego ręcznie; to, o co Xcode pyta, gdy bridge pluginu jest pierwszym agentem, jakiego widzi; jakiekolwiek Xcode inne niż 27B52 w pomiarach sesji; Mac z wyłączonym trybem headless.

Same skills, druga droga wyjścia z Xcode (xcrun agent skills export) i zawieszenie, na które trafiłem w Xcode 27.2, są opisane we wpisie Xcode 27 dostarcza agent skills, które można wyeksportować wszędzie. Dwa serwery MCP uczyniły Claude Code systemem budowania iOS omawia bridge dodany ręcznie, a Serwery MCP to nowa powierzchnia ataku wyjaśnia, dlaczego listę narzędzi serwera warto przeczytać. Całą konfigurację opisuje przewodnik po tworzeniu aplikacji iOS z agentami AI.

Źródła


  1. Anthropic, anthropics/claude-plugins-official, .claude-plugin/marketplace.json na commicie 43fd1f9, odczytany 10 listopada 2026 i ponownie 11 listopada, kiedy ten commit nadal był headem. Źródło wpisu xcode oraz liczb: 317 pluginów, z których 163 mają źródło url, a 99 źródło git-subdir, każdy z nich z polem sha, 54 to ścieżki wewnątrz repozytorium, a jeden ma źródło command. Pull request #6338 dodał ten wpis: otwarty 30 września 2026, scalony 6 listopada 2026 o 00:55 UTC, 15 linii w jednym pliku, z opisem mówiącym, że przenosi on zmianę z #6259 na gałąź wewnątrz repozytorium, żeby mogły się wykonać jego sprawdzenia, oraz z komentarzem z 9 listopada, w którym padło pytanie, co ten wpis daje ponad istniejący serwer MCP Xcode. Pull request #6259, „Add Xcode plugin (xcode)”: otwarty 18 września 2026 o 23:12 UTC, automatyczna odpowiedź mówiąca, że repozytorium przyjmuje kontrybucje wyłącznie od członków zespołu Anthropic, zatwierdzająca recenzja o 23:31 UTC, zamknięty jako duplikat 6 listopada 2026 o 00:58 UTC. ↩↩↩↩↩↩↩↩↩↩↩

  2. Pomiary i sprawdzenia autora, 10 i 11 listopada 2026, na maszynie i wersjach wymienionych w sekcji „Co zmierzyłem”. Źródła: wynik xcrun agent plugin path, claude plugin install (z --json i bez), claude --plugin-dir <dir> plugin details, claude plugin validate, claude --help i xcrun mcp-server status; zawartość katalogu pluginu, w tym nagłówek każdej skill i przeszukanie każdego pliku skills pod kątem 54 nazw narzędzi bridge’a; zdarzenie otwierające i log debugowania czterech sesji Claude Code z jednym promptem; 54 opisy narzędzi bridge’a w postaci, w jakiej otrzymała je sesja interaktywna; SHA-256 ciągu znaków polecenia; oraz zapisane kopie stron wymienionych w punkcie „Sprawdzenia nieobecności”. Liczby to liczby plików, folderów i nazw narzędzi z tych źródeł. Liczby tokenów to szacunki Claude Code. ↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩↩

  3. Anthropic, anthropics/claude-plugins-official, pull request #7015, „ci(validate-plugins): re-pin validator and allow the xcode command source”, otwarty i scalony 6 listopada 2026 (00:49 i 00:53 UTC). Źródło informacji o trzech błędach walidatora dla wpisu Xcode, o ustawieniu command-exempt: "xcode" oraz o komentarzu w workflow, który nazywa każdą zwolnioną nazwę „listing decision”, wymagającą zatwierdzenia ze strony zespołu operacyjnego marketplace. ↩↩↩↩

  4. Anthropic, dokumentacja Claude Code, Marketplace reference, sekcje „command plugin source” i „Copy mode and link mode”, pobrana 11 listopada 2026. Źródło informacji o tym, kiedy używać źródła command, i jego przykładu z IDE, o kontrakcie jednej linii wyniku, o domyślnym 60-sekundowym timeout, o warunkach, w których instalacja lub aktualizacja kończy się niepowodzeniem, o tym, że tryb link ładuje katalog na miejscu z wersją wyprowadzoną z jego ścieżki i elementów najwyższego poziomu, oraz o ustawieniu disableCommandPluginSources. ↩↩↩↩↩↩↩↩

  5. Anthropic, dokumentacja Claude Code, Plugin loading reference oraz Host and maintain a marketplace, pobrane 11 listopada 2026. Źródło informacji o tym, kiedy źródło typu command uruchamia się ponownie (przy każdej instalacji lub aktualizacji oraz raz na sesję w tle), o przeładowaniu, gdy zmienia się jego wynik, o różnicy między nazwą wpisu pluginu a nazwą z jego manifestu oraz o regule, że Claude Code uruchamia wyłącznie dokładnie to polecenie, które zaakceptował użytkownik. ↩↩↩↩↩↩

  6. Anthropic, dokumentacja Claude Code, Plugin commands reference, pobrana 11 listopada 2026: pytanie Run this command now? [y/N], ignorowanie -y wewnątrz sesji Claude Code, odmowa, gdy nie jest podłączony żaden terminal, oraz --accept-command <sha256> z obiektem shownCommand. Wersje i daty pochodzą z changelogu Claude Code: źródła command w 2.1.229 (12 sierpnia 2026) i --accept-command w 2.1.271 (14 września 2026). To, co obejmuje każdy zakres instalacji, pochodzi ze strony Install and manage plugins, pobranej tego samego dnia. ↩↩↩↩↩↩↩↩↩↩↩

  7. Anthropic, dokumentacja Claude Code, Plugin security and trust, pobrana 11 listopada 2026. Źródło informacji o tym, co plugin może uruchamiać sam, o tym, że reguły uprawnień obejmują wywołania narzędzi przez Claude, a nie własne procesy pluginu, o tym, że serwery MCP działają poza sandboxem, oraz o krokach przeglądu, w tym o claude --plugin-dir <plugin directory> plugin details <plugin name>. ↩↩↩↩↩↩

  8. Anthropic, dokumentacja Claude Code, Connect Claude Code to tools via MCP, sekcja „Scope hierarchy and precedence”, oraz Add components to a plugin, pobrane 11 listopada 2026. Źródło informacji o kolejności pierwszeństwa, o tym, że serwery pluginów są rozpoznawane jako duplikaty według endpointu, oraz o nazwach serwera i narzędzi pluginu. ↩↩↩↩↩

  9. Anthropic, dokumentacja Claude Code, Extend Claude with skills, pobrana 11 listopada 2026. Źródło informacji o tym, że user-invocable: false ukrywa skill w menu /, podczas gdy Claude nadal może ją wywołać, oraz o tym, że skills pluginów mają przestrzeń nazw w postaci /plugin-name:skill-name. ↩↩↩

  10. Apple, Giving external agents access to Xcode, pobrana 11 listopada 2026 i niezmieniona względem mojej kopii z 10 listopada. Źródło informacji o ustawieniu „Allow External Agents to Use Xcode Tools” i jego trzech opcjach, o alercie, gdy łączy się zewnętrzny agent, oraz o claude mcp add --transport stdio xcode -- xcrun mcpbridge jako udokumentowanej konfiguracji. W tym dniu strona nie wspominała o pluginie. ↩↩↩

  11. Apple, Xcode 27 Release Notes, pobrane 11 listopada 2026. Źródło informacji o wersji zapoznawczej serwera MCP, który działa bez otwartego workspace’u Xcode, o sudo xcrun mcp-server enable oraz o przyznawaniu uprawnień agentom z podpisanym kodem w obrębie drzewa katalogów. Przeszukałem tę stronę oraz informacje o wydaniu Xcode 27.1, 27.2 i bety 27.3 pod kątem xcrun agent i nie znalazłem żadnego trafienia. ↩↩

  12. Anthropic, dokumentacja Claude Code, Publish and distribute a plugin, pobrana 11 listopada 2026. Źródło informacji o tym, że oficjalny marketplace nie przyjmuje zgłoszeń przez portal katalogu pluginów. ↩

Powiązane artykuły

Hooki w pracy z Apple Development: wzorce, które ratują projekt

Agent iOS ma dostęp do kluczy podpisujących, kompilacji i pliku projektu. Hooki ograniczają zasięg potencjalnych szkód. …

12 min czytania

Code with Claude SF 2026: Co Anthropic rzeczywiście wypuściło

Podsumowanie Code with Claude SF 2026: podwojone limity Claude Code, umowa SpaceX Colossus 1, 10 szablonów agentów finan…

10 min czytania