К основному содержанию
скилл CX Codex

spm-build-analysis — скилл для Claude Code: что делает и установка

Скилл находит узкие места в зависимостях Swift Package Manager, плагинах сборки и структуре модулей Xcode. Пригодится, когда затягивается чистая или инкрементальная сборка проекта.

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add AvdLee/Xcode-Build-Optimization-Agent-Skill --skill spm-build-analysis -a claude-code
Открыть на GitHub

Что делает spm-build-analysis

Скилл проверяет зависимости Swift Package Manager и структуру графа модулей в Xcode. Он исследует Package.swift, Package.resolved, бинарные таргеты и плагины сборки. Агент собирает факты о проблемах, но не имеет права переписывать манифесты или менять источники зависимостей без прямого подтверждения.

Перед рекомендациями агент проверяет project.pbxproj, чтобы убедиться, что локальный пакет из папки Vendor/ реально привязан к таргету через XCLocalSwiftPackageReference и XCSwiftPackageProductDependency. Для зависимостей, привязанных к веткам, запускается скрипт python3 scripts/check_spm_pins.py --project App.xcodeproj. Он проверяет теги через git ls-remote и предлагает зафиксировать конкретную ревизию.

Дробление монолитной библиотеки на модульный SDK не гарантирует ускорение. Это частая ошибка. Каждый отдельный модуль добавляет новые задачи SwiftCompile, SwiftEmitModule и ScanDependencies. Поэтому переход оправдан только тогда, когда проект действительно отсекает лишний неиспользуемый код. Если проблема кроется в настройках проекта или коде, агент передаёт контекст скиллам xcode-project-analyzer или xcode-compilation-analyzer.

Какие задачи решает

  • найти модули с избыточным числом файлов (от 200) для разделения
  • выявить циклы зависимостей между таргетами SPM
  • устранить каскадную пересборку из-за тяжёлых Swift-макросов
  • зафиксировать branch-зависимости на стабильные теги или ревизии
  • обнаружить дублирование компиляции пакетов под разные платформы

Примеры запросов агенту

  • Проанализируй зависимости в Package.swift и найди причины долгой сборки
  • Проверь branch-зависимости через check_spm_pins.py в App.xcodeproj
  • Выясни, почему Swift-макросы вызывают полную пересборку проекта

Как установить spm-build-analysis

1Через Skills CLI (Vercel)

npx skills add AvdLee/Xcode-Build-Optimization-Agent-Skill --skill spm-build-analysis -a claude-code

2Вручную: положить файлы

~/.claude/skills/spm-build-analysis/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/spm-build-analysis/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Из того же набора6

xcode-build-orchestrator Ведёт оптимизацию сборки Xcode в два этапа: сначала замеряет и предлагает план, потом правит код после вашего одобрения. CX Codex +1 3 600установок xcode-build-fixer Скилл применяет одобренные правки сборки Xcode и перепроверяет их бенчмарком. Нужен, когда план оптимизации уже согласован. CX Codex +1 3 600установок xcode-project-analyzer Разбирает настройки Xcode-проекта, схемы и скриптовые фазы и показывает, что тормозит сборку. Правки предлагает, но не вносит без подтверждения. CX Codex +1 3 500установок xcode-build-benchmark Замеряет чистые, кэшированные и инкрементальные сборки Xcode по повторяемому сценарию. Нужен для сравнения времени сборки до и после изменений. CX Codex +1 3 400установок xcode-compilation-analyzer Скилл разбирает, почему Xcode долго собирает Swift-проект: читает тайминги сборки и диагностику фронтенда, находит тяжёлые места в коде и выдаёт план правок. CX Codex +1 3 400установок

Похожие

cocoapods-to-spm Cap-go Переводит iOS-проект Capacitor с CocoaPods на Swift Package Manager и подсказывает, что делать с плагинами без Package.swift. CX Codex +1 796установок capacitor-app-spm-migration capawesome-team Скилл ведёт агента через перенос iOS-зависимостей Capacitor-приложения с CocoaPods на Swift Package Manager. Пригодится, когда ios/ уже оброс кастомными файлами. CX Codex +1 593установок axiom-build CharlesWiltgen Маршрутизирует сбои сборки iOS и macOS, зависания симулятора и ошибки Xcode до разбора кода приложения. CX Codex +1 1 300установок build-run-debug официальный OpenAI Собирает, запускает и помогает отлаживать macOS-приложения через shell-first workflow с Xcode и Swift. CX Codex GP ChatGPT 60установок kotlin-tooling-cocoapods-spm-migration JetBrains Скилл переносит KMP-проект с CocoaPods на Swift Package Manager: меняет Gradle DSL, импорты Kotlin и настройки Xcode. Нужен для поэтапной миграции. CX Codex +1 1 800установок macos-spm-app-packaging Dimillian Скилл помогает собрать macOS-приложение на SwiftPM без проекта Xcode: от скелета до подписи, нотаризации и appcast. CX Codex +1 1 400установок

Рядом в теме «Мобильная разработка»

Всё по теме «Мобильная разработка» →

Вопросы о spm-build-analysis

Как установить spm-build-analysis в Claude Code?

Выполните в терминале команду npx skills add AvdLee/Xcode-Build-Optimization-Agent-Skill --skill spm-build-analysis -a claude-code.

Что делает скилл spm-build-analysis?

Он анализирует граф зависимостей Swift Package Manager, плагины сборки и макросы в проектах Xcode. По результатам агент формирует отчёт с оценкой влияния на чистую и инкрементальную сборку.

Всегда ли разбиение зависимостей на мелкие модули ускоряет сборку?

Нет. Выделение нескольких модулей увеличивает число задач SwiftCompile, SwiftEmitModule и ScanDependencies. Такой переход ускоряет сборку только в том случае, если позволяет проекту полностью исключить компиляцию ненужного кода.

Исходный текст

SKILL.md · MIT
---
name: spm-build-analysis
description: Analyze Swift Package Manager dependencies, package plugins, module variants, and CI-oriented build overhead that slow Xcode builds. Use when a developer suspects packages, plugins, or dependency graph shape are hurting clean or incremental build performance, mentions SPM slowness, package resolution time, build plugin overhead, duplicate module builds from configuration drift, circular dependencies between modules, oversized modules needing splitting, or modularization best practices.
---

# SPM Build Analysis

Use this skill when package structure, plugins, or dependency configuration are likely contributing to slow Xcode builds.

## Core Rules

- Treat package analysis as evidence gathering first, not a mandate to replace dependencies.
- Separate package-graph issues from project-setting issues.
- Do not rewrite package manifests or dependency sources without explicit approval.

## What To Inspect

- `Package.swift` and `Package.resolved`
- local packages vs remote packages
- package plugin and build-tool usage
- binary target footprint
- dependency layering, repeated imports, and potential cycles
- build logs or timing summaries that show package-related work

## Verification Before Recommending

Before including any local package in a recommendation, verify that it is actually part of the project's dependency graph. A `Vendor/` directory may contain packages that are not linked to any target.

- Check `project.pbxproj` for `XCLocalSwiftPackageReference` entries that reference the package path.
- Check `XCSwiftPackageProductDependency` entries to confirm the package's product is linked to at least one target.
- If a local package exists on disk but is not referenced in the project, do not include it in build-time recommendations.

When recommending version pins for branch-tracked dependencies:

- Use the helper script to scan all branch-pinned dependencies at once:
  ```bash
  python3 scripts/check_spm_pins.py --project App.xcodeproj
  ```
  This checks `git ls-remote --tags` for each branch-pinned package and reports which have tags available for pinning.
- If no tags exist, recommend pinning to a specific commit revision hash for determinism instead.
- Note which packages are branch-pinned because the upstream simply has no tags, versus packages that have tags but are intentionally tracking a branch.

## Focus Areas

- package graph shape and how much work changes trigger downstream
- plugin overhead during local development and CI
- checkout or fetch cost signals that show up in clean environments
- configuration drift that forces duplicate module builds
- risks from package targets that use different macros or options while sharing dependencies
- dependency direction violations (features depending on each other instead of shared lower layers)
- circular dependencies between modules (extract shared contracts into a protocol module)
- oversized modules (200+ files) that widen incremental rebuild scope
- umbrella modules using `@_exported import` that create hidden dependency chains
- missing interface/implementation separation that blocks build parallelism
- test targets depending on the app target instead of the module under test
- Swift macro rebuild cascading: heavy use of Swift macros (e.g., TCA, swift-syntax-based libraries) can cause a trivial source change to cascade into near-full rebuilds because macro expansion invalidates downstream modules
- `swift-syntax` building universally (all architectures) when no prebuilt binary is available, adding significant clean-build overhead
- multi-platform build multiplication: adding a secondary platform target (e.g., watchOS) can cause shared SPM packages to build multiple times (e.g., iOS arm64, iOS x86_64, watchOS arm64), multiplying `SwiftCompile`, `SwiftEmitModule`, and `ScanDependencies` tasks

## Modular SDK Migration Caveat

Migrating a dependency from a monolithic target to a modular multi-target SDK (e.g., replacing one umbrella library with separate Core, RUM, Logs, Trace modules) does not automatically reduce build time. Modular targets increase the number of `SwiftCompile`, `SwiftEmitModule`, and `ScanDependencies` tasks because each target must be compiled, scanned, and emit its module independently. The build-time trade-off depends on the project's parallelism headroom and how many of the modular targets are actually needed.

When considering a modular SDK migration:

- Compare the total `SwiftCompile` task count before and after.
- Benchmark both configurations before recommending the migration for build speed.
- If the motivation is API surface reduction (importing only what you use), note that build time may stay flat or increase while import hygiene improves.
- Only recommend modular SDK migration for build speed when the project currently compiles large portions of the monolithic SDK that it does not use, and the modular alternative lets it skip those unused portions entirely.

## Explicit Module Dependency Angle

When the same module appears multiple times in timing output, investigate whether different package or target options are forcing extra module variants. Uniform options often matter more than shaving a small amount of source code.

## Reporting Format

For each finding, include:

- evidence
- affected package or plugin
- likely clean-build vs incremental-build impact
- CI impact if relevant
- estimated impact
- approval requirement

If the main problem is not package-related, hand off to [`xcode-project-analyzer`](../xcode-project-analyzer/SKILL.md) or [`xcode-compilation-analyzer`](../xcode-compilation-analyzer/SKILL.md) by reading the target skill's SKILL.md and applying its workflow to the same project context.

## Additional Resources

- For the detailed audit checklist, see [references/spm-analysis-checks.md](references/spm-analysis-checks.md)
- For the shared recommendation structure, see [references/recommendation-format.md](references/recommendation-format.md)
- For source citations, see [references/build-optimization-sources.md](references/build-optimization-sources.md)

© AvdLee · MIT · AvdLee/Xcode-Build-Optimization-Agent-Skill

Смотрите также

Спонсоры проекта

Компании, которые помогают держать аналитику открытой