
Spm Build Analysis
Analyze Swift Package Manager dependencies, package plugins, module variants, and...
Install
npx skills add AvdLee/Xcode-Build-Optimization-Agent-Skill --skill spm-build-analysis -g -a claude-code -y- Repository
- AvdLee/Xcode-Build-Optimization-Agent-Skill1.3k
- Category
- Mobile
- Updated
- 2mo ago
- License
- MIT
- Context cost
- Lightabout 1,395 tokens
- Runs scripts
- Yes, review before use
What it does
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.swiftandPackage.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.pbxprojforXCLocalSwiftPackageReferenceentries that reference the package path. - Check
XCSwiftPackageProductDependencyentries 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:
This checkspython3 scripts/check_spm_pins.py --project App.xcodeprojgit ls-remote --tagsfor 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.
