Spm Build Analysis
Audytuje grafy pakietów Swift i linki pbxproj, aby znaleźć, co faktycznie spowalnia kompilacje Xcode
Testowano · Działa
Co robi ten skill
Analizuje grafy zależności Swift Package Manager, wtyczki pakietów, przypięcia gałęzi i warstwowanie modułów, aby wyjaśnić, dlaczego czyste lub przyrostowe kompilacje Xcode są wolne. Weryfikuje, czy każdy pakiet jest faktycznie połączony w project.pbxproj przed rekomendowaniem zmian, uruchamia dołączony skrypt, który sprawdza zależności przypięte do gałęzi pod kątem dostępnych tagów git, i raportuje wyniki z wpływem na czas rzeczywisty, możliwością działania i wymaganiami zatwierdzenia. Uruchamia się, gdy deweloper wspomina o powolności SPM, czasie rozwiązywania pakietów, narzucie wtyczek kompilacji, cyklicznych lub zbyt dużych modułach, kaskadowym przebudowywaniu makr Swift lub modularizacji dla wydajności kompilacji.
Raport z testu
Pobrano skills/spm-build-analysis/SKILL.md (92 linie, frontmatter parsowany z name+description) i wyrywkowo sprawdzono wszystkie trzy pliki referencyjne plus skrypt — references/spm-analysis-checks.md, references/recommendation-format.md, scripts/check_spm_pins.py wszystkie HTTP 200; brak curl|sh, blobów base64, eksfiltracji sekretów lub tekstu iniekcji gdziekolwiek (skrypt tylko wywołuje `git ls-remote --tags` na URL-ach odczytanych z własnego pbxproj projektu). Zbudowałem syntetyczny fixture (Modules/Package.swift z docelowym @_exported-style umbrella, naruszeniem warstwowania FeatureProfile→FeatureFeed, TCA, platformami iOS+watchOS; App.xcodeproj/project.pbxproj z zdalnym refem Alamofire branch=master; i niepołączonym pakietem Vendor/LegacyCharts na dysku), napisałem bazową odpowiedź, a następnie ponownie uruchomiłem zadanie zgodnie z treścią umiejętności. Konkretne różnice: bazowa wersja zalecała działanie na Vendor/LegacyCharts (fałszywy pozytyw — nie ma XCLocalSwiftPackageReference i nie przyczynia się do czasu kompilacji), podczas gdy krok weryfikacji pbxproj umiejętności wyraźnie go wykluczył; uruchomienie dołączonego skryptu wygenerowało rzeczywiste dane (`Alamofire: branch=master -> tags available (latest: 5.7.1 … 5.9.1)`), więc rekomendacja przypięcia stała się "użyj tagu semver" zamiast zgadywania; a uruchomienie umiejętności wychwyciło zależności test-target-depends-on-umbrella i wyniki mnożenia kompilacji iOS/watchOS, które bazowa wersja pominęła. Koszt: 596 słów vs 174. Nie zmierzono: żadnej rzeczywistej delty czasu kompilacji — nie mam tutaj Xcode/xcodebuild, więc wszystkie wyniki pozostały w statusie benchmark_verification_status "Not yet verified", co jest zgodne z instrukcjami samej umiejętności. Frazy wyzwalające ocenione — POWINIEN zadziałać: (1) "Nasze czyste kompilacje trwają 9 minut i myślę, że to graf zależności SPM, czy możesz spojrzeć na Package.swift?" (2) "Każda drobna edycja przebudowuje połowę aplikacji i intensywnie używamy makr TCA — czy nasza struktura modułów jest winna?" (3) "Jak powinienem podzielić mój 400-plikowy moduł Core, aby kompilacje przyrostowe były szybsze?"; NIE POWINIEN zadziałać: (4) "swift build zawodzi z 'no such module Alamofire' po dodaniu zależności" (błąd kompilacji, nie wydajność kompilacji) (5) "Który pakiet sieciowy powinienem wybrać dla nowej aplikacji iOS, Alamofire czy URLSession?" (wybór zależności). Wszystkie 5 oceniono poprawnie względem opisu. Dokumentacja straciła jeden punkt: nagłówek instalacji w README, tabela 40-checks i wygrane w czasie kompilacji "Community Results" należą do sześciu wtyczek orkiestratora umiejętności, a nie tylko do tego analizatora, a baner linkuje do produktu komercyjnego.
Testowano: 2026-07-21 · Claude Code 2.x (agent harness)
Instalacja
git clone --depth 1 https://github.com/AvdLee/Xcode-Build-Optimization-Agent-Skill.git /tmp/spm-build-analysis-src mkdir -p ~/.claude/skills cp -R /tmp/spm-build-analysis-src/skills/spm-build-analysis ~/.claude/skills/spm-build-analysis # CLI instead (installs all six skills): npx skills add https://github.com/AvdLee/Xcode-Build-Optimization-Agent-Skill # Needs python3 and git for scripts/check_spm_pins.py. # SKILL.md invokes it by relative path (python3 scripts/check_spm_pins.py --project App.xcodeproj), # so run it from the skill directory or substitute the absolute install path.
Komendy i przykładowe prompty
/spm-build-analysisAudytuje grafy pakietów Swift i linki pbxproj, aby znaleźć, co faktycznie spowalnia kompilacje Xcode
Skille uruchamiają się na zwykłe polecenia — bez komend do zapamiętania. Po instalacji aktywują go prompty takie jak te (po angielsku):
Why is my Xcode build so slow with these packagesFind circular dependencies in our SPM package graphCheck for duplicate module builds from config drift