SwiftPM Build Inspector
SkillDev toolsDiagnose SwiftPM graph overhead across dependencies, plugins, module variants, branch pins, macros, binary targets, and slow CI or local Xcode builds.
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the SwiftPM Build Inspector skill
What this skill tells your AI
The instructions your AI receives, as published by xopoko/build-swift-apps in skills/swiftpm-build-inspector/SKILL.md and read by ahel’s review.
Bundled commands use $PLUGIN_ROOT ($env:PLUGIN_ROOT in PowerShell; same path suffix) for the plugin root. Set it once: use the host's plugin-root variable when defined (Claude Code: PLUGIN_ROOT="$CLAUDE_PLUGIN_ROOT"), otherwise the absolute path of this plugin's root directory.
Gather evidence before recommending package changes. Do not edit manifests/dependencies without explicit approval.
Inspect
Package.swift,Package.resolved- local vs remote packages
- build-tool/package plugins
- binary targets
- dependency layering, imports, cycles, oversized modules
- timing summaries/logs showing package work
Before recommending a local package, prove it is in the project graph: check XCLocalSwiftPackageReference and XCSwiftPackageProductDependency in project.pbxproj. Ignore on-disk packages that are not linked.
For branch-pinned dependencies:
python3 "$PLUGIN_ROOT/skills/swiftpm-build-inspector/scripts/check_spm_pins.py" --project App.xcodeproj
If tags exist, recommend tag pins when appropriate; otherwise recommend a revision hash for determinism. Distinguish intentional branch tracking from missing-tag upstreams.
Focus Areas
- graph shape and downstream rebuild scope
- plugin overhead in local/CI builds
- clean-environment checkout/fetch cost
- config drift causing duplicate module variants
- dependency direction violations and cycles; extract shared contracts into protocol/interface modules
- oversized modules (~200+ files)
- umbrella modules with
@_exported import - test targets depending on the app target instead of the module under test
- Swift macro or
swift-syntaxcascades - multi-platform build multiplication (iOS/watchOS/tvOS/macOS variants)
Modular SDK migrations do not automatically speed builds. Compare SwiftCompile, SwiftEmitModule, and ScanDependencies task counts and benchmark before recommending for performance; note when the benefit is import hygiene/API surface rather than wait time.
If the same module appears multiple times in timing output, investigate option/variant drift before source shaving.
Report
For each finding include evidence, affected package/plugin, clean vs incremental impact, CI impact, estimated wait-time impact, and approval requirement. If the bottleneck is not package-related, hand off to xcode-project-auditor or xcode-compile-profiler.
References: references/spm-analysis-checks.md, ../../shared/build-optimization/references/recommendation-format.md, build-optimization-sources.md.
Signals
- GitHub stars
- 45
- Forks
- 4
- Last commit
- Aug 2026
Advanced
- Catalog kind
- skill
- Gateway key
swiftpm-build-inspector- Source
- github.com/xopoko/build-swift-apps