Spm Build Analysis

Audits Swift Package graphs and pbxproj links to find what actually slows Xcode builds

Tested · Works

Test report

Verdict
Tested · Works
Score
8.4/10
Tested
Jul 21, 2026
Environment
Claude Code 2.x (agent harness)
Upstream re-checked
Aug 10, 2026 · 34ce475

Fetched skills/spm-build-analysis/SKILL.md (92 lines, frontmatter parses with name+description) and spot-checked all three referenced files plus the script — references/spm-analysis-checks.md, references/recommendation-format.md, scripts/check_spm_pins.py all HTTP 200; no curl|sh, base64 blobs, secret exfiltration or injection text anywhere (the script only shells out to `git ls-remote --tags` on URLs read from the project's own pbxproj). I built a synthetic fixture (Modules/Package.swift with an @_exported-style umbrella target, a FeatureProfile→FeatureFeed layering violation, TCA, iOS+watchOS platforms; App.xcodeproj/project.pbxproj with an Alamofire branch=master remote ref; and an unlinked Vendor/LegacyCharts package on disk), wrote a baseline answer, then re-ran the task following the skill body. Concrete deltas: the baseline recommended acting on Vendor/LegacyCharts (a false positive — it has no XCLocalSwiftPackageReference and contributes zero build time), while the skill's pbxproj-verification step explicitly excluded it; running the bundled script produced real data (`Alamofire: branch=master -> tags available (latest: 5.7.1 … 5.9.1)`) so the pin recommendation became "use a semver tag" rather than a guess; and the skill run caught the test-target-depends-on-umbrella and iOS/watchOS build-multiplication findings the baseline missed. Cost: 596 words vs 174. Not measured: any actual build-time delta — I have no Xcode/xcodebuild here, so all findings stayed at benchmark_verification_status "Not yet verified", which is what the skill itself instructs. Trigger phrasings judged — SHOULD fire: (1) "Our clean builds take 9 minutes and I think it's the SPM dependency graph, can you look at Package.swift?" (2) "Every tiny edit rebuilds half the app and we use TCA macros heavily — is our module structure to blame?" (3) "How should I split my 400-file Core module so incremental builds get faster?"; SHOULD NOT fire: (4) "swift build fails with 'no such module Alamofire' after I added the dependency" (compile error, not build performance) (5) "Which networking package should I pick for a new iOS app, Alamofire or URLSession?" (dependency selection). All 5 judged correctly against the description. Docs docked one point: the README's install headline, 40-checks table and "Community Results" build-time wins belong to the six-skill orchestrator plugin, not to this analyzer alone, and the banner links a commercial product.

Scored on four weighted criteria — install, triggering, output vs. baseline, docs. How scoring works

  • Installs cleanly 5/5
  • Triggers reliably 5/5
  • Output vs. baseline 7/10
  • Docs & honesty 4/5

What Spm Build Analysis does

Analyzes Swift Package Manager dependency graphs, package plugins, branch pins, and module layering to explain why Xcode clean or incremental builds are slow. It verifies each package is actually linked in project.pbxproj before recommending changes, runs a bundled script that checks branch-pinned dependencies for available git tags, and reports findings with wall-clock impact, actionability, and approval requirements. Triggers when a developer mentions SPM slowness, package resolution time, build plugin overhead, circular or oversized modules, Swift macro rebuild cascading, or modularization for build performance.

How to install Spm Build Analysis

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.

Skills live in ~/.claude/skills/ (global) or .claude/skills/ (per-project). Restart Claude Code after installing.

Commands — how to trigger Spm Build Analysis

  • /spm-build-analysis Audits Swift Package graphs and pbxproj links to find what actually slows Xcode builds

It also activates on plain-language prompts like these:

  • Why is my Xcode build so slow with these packages
  • Find circular dependencies in our SPM package graph
  • Check for duplicate module builds from config drift

Frequently asked questions

Is the Spm Build Analysis skill free?
Yes. The skill itself is free from AvdLee/Xcode-Build-Optimization-Agent-Skill. SkillProof publishes the install command and an independent test verdict at no cost.
Does Spm Build Analysis work with Claude Code?
We tested it with Claude Code 2.x (agent harness) on Jul 21, 2026. Verdict: Tested · Works. Fetched skills/spm-build-analysis/SKILL.md (92 lines, frontmatter parses with name+description) and spot-checked all three referenced files plus the script — references/spm-analysis-checks.md, references/recommendation-format.md, scripts/check_spm_pins.py all HTTP 200; no curl|sh, base64 blobs, secret exfiltration or injection text anywhere (the script only shells out to `git ls-remote --tags` on URLs read from the project's own pbxproj). I built a synthetic fixture (Modules/Package.swift with an @_exported-style umbrella target, a FeatureProfile→FeatureFeed layering violation, TCA, iOS+watchOS platforms; App.xcodeproj/project.pbxproj with an Alamofire branch=master remote ref; and an unlinked Vendor/LegacyCharts package on disk), wrote a baseline answer, then re-ran the task following the skill body. Concrete deltas: the baseline recommended acting on Vendor/LegacyCharts (a false positive — it has no XCLocalSwiftPackageReference and contributes zero build time), while the skill's pbxproj-verification step explicitly excluded it; running the bundled script produced real data (`Alamofire: branch=master -> tags available (latest: 5.7.1 … 5.9.1)`) so the pin recommendation became "use a semver tag" rather than a guess; and the skill run caught the test-target-depends-on-umbrella and iOS/watchOS build-multiplication findings the baseline missed. Cost: 596 words vs 174. Not measured: any actual build-time delta — I have no Xcode/xcodebuild here, so all findings stayed at benchmark_verification_status "Not yet verified", which is what the skill itself instructs. Trigger phrasings judged — SHOULD fire: (1) "Our clean builds take 9 minutes and I think it's the SPM dependency graph, can you look at Package.swift?" (2) "Every tiny edit rebuilds half the app and we use TCA macros heavily — is our module structure to blame?" (3) "How should I split my 400-file Core module so incremental builds get faster?"; SHOULD NOT fire: (4) "swift build fails with 'no such module Alamofire' after I added the dependency" (compile error, not build performance) (5) "Which networking package should I pick for a new iOS app, Alamofire or URLSession?" (dependency selection). All 5 judged correctly against the description. Docs docked one point: the README's install headline, 40-checks table and "Community Results" build-time wins belong to the six-skill orchestrator plugin, not to this analyzer alone, and the banner links a commercial product.
What is the Spm Build Analysis SkillProof Score?
8.4/10 — installs cleanly 5/5, triggers reliably 5/5, output vs. baseline 7/10, docs & honesty 4/5.
How do I install Spm Build Analysis?
Copy the install command from this page, run it in your terminal, and restart Claude Code. Skills live in ~/.claude/skills/ (global) or .claude/skills/ inside a project.
Can I use Spm Build Analysis with Cursor, Copilot, Gemini CLI, Codex or other AI tools?
The SKILL.md format is native to Claude (Claude Code, Desktop, claude.ai). The instructions inside adapt to other assistants: Cursor rules, GitHub Copilot instructions, Windsurf rules, Custom GPTs, AGENTS.md for OpenAI Codex, and GEMINI.md for Google Gemini CLI — our conversion guides cover each, and the free converter on the tools page does the wrapping for you.