axiom-build
Use when ANY iOS build fails, test crashes, Xcode misbehaves, or environment issue occurs before debugging code. Covers build failures, compilation errors, dependency conflicts, simulator problems, environment-first diagnostics.
By charleswiltgen · 1,010 installs
npx skills add charleswiltgen/axiom --skill axiom-build
Source repository · Upstream listing
Build & Environment
You MUST use this skill for ANY build, environment, or Xcode related issue before debugging application code.
Bundled tools on Claude Code: if command v <tool finds nothing (hooks off or bare ), use <plugin root /tools/<tool in place of the bare name; <plugin root is two levels above this skill's Base directory for this skill: path.
<! AXIOM AUDITOR INLINE BEGIN — auto maintained by scripts/build inlined auditors.ts; do not hand edit
Can't launch Axiom agents? Where this router sends you to an agent, follow its procedure inline. Over MCP, axiom get agent returns it; elsewhere, read its file below, which needs only file search and read.
Available here: skills/modernization helper.md .
Homed in another suite: axiom security/skills/security privacy scanner.md .
For any other agent, over MCP axiom get agent returns it too; run its xclog, xcsym and xcprof steps with the axiom xclog , axiom xcsym and axiom xcprof tools. Elsewhere, search Axiom's skills for skills/<agent .md ; if there is none, do that work yourself with this suite's skills, using any Axiom tool on your PATH .
<! AXIOM AUDITOR INLINE END
Capture Build and Test Diagnostics
Before the next necessary build or test, resolve tools/axbuild under the actual loaded package in Claude Code ( command v axbuild ; if that finds nothing, tools/axbuild two levels above the Base directory for this skill: path of a loaded Axiom skill) or Codex ( <plugin root /tools/ ), or discover an executable on PATH in Pi. Check executable permission and run its absolute path with help ; assign that observed path to AXBUILD . Never infer an installation path from an example.
Cursor and MCP distributions do not bundle axbuild and expose no axbuild MCP wrapper. Use the saved log fallback below when a verified shell helper is unavailable.
Before every Xcode invocation, run pgrep lx xcodebuild; echo "pgrep exit=$?" : exit 1 means none are running, 0 lists them, and any other exit means the inventory failed. Investigate existing builds; process count and age do not establish zombie status. Never terminate unrelated processes. When interrupted or timed out, axbuild also stops build scripts and other processes descended from its build that Xcode moved into separate process groups, found by parentage when cleanup begins and on each cleanup pass. It reports cleanup incomplete for any such descendant it could not stop or verify (another user's, unreadable, or being debugged). Jobs that had already left the build's process tree, such as daemons or launchd started tools, are neither stopped nor reported. Inspect ownership before stopping anything it lists. Discover the actual scheme and destination before executing:
Preserve caller flags, working directory, environment, test selection, coverage and explicit artifact paths. The wrapper adds absent diagnostic defaults; it never cleans caches or automatically rebuilds. Do not pipe a build through another command.
Inspect command (native outcome) and collection (evidence completeness) separately. Native success can accompany partial collection. The default JSON is bounded to 8,000 UTF 8 bytes; inspect omissions and read artifacts.report relative to the absolute artifacts.run directory for complete records and evaluated values. The startup stderr JSON identifies the run directory before completion. Use diagnostic locations and values rather than rebuilding to redisplay output.
The retained log is the primary compiler source; test results and validated Swift Testing events supplement it. A null failed test count means uncertainty, not zero. Preserve result bundles for attachment export, coverage, console logs and deeper inspection. Native informational commands pass their output through.
Saved log fallback: redirect the necessary native command's stdout/stderr to a unique file, let it finish, record its exit status and inspect that saved file. An xcresult build summary is not equivalent to the compiler log. Read an existing log before considering another build. If a build's output ends in a truncation marker, or before xcodebuild's closing BUILD … or TEST … line, read the saved log or report instead of rebuilding.
<! end of shared section; source: skills/axiom build/SKILL.md, copies regenerated by npm run build:shared
When to Use
Use this router when you encounter:
Build failures ( BUILD FAILED , compilation errors, linker errors)
Test crashes or hangs
Simulator issues (won't boot, device errors)
Xcode misbehavior (stale builds, zombie processes)
Dependency conflicts (CocoaPods, SPM)
Build performance issues (slow compilation)
Environment issues before debugging code
Routing Logic
This router invokes specialized skills based on the specific issue:
1. Environment First Issues → xcode debugging
Triggers :
BUILD FAILED without obvious code cause
Tests crash in clean project
Simulator hangs or won't boot
"No such module" after SPM changes
Zombie xcodebuild processes
Stale builds (old code still running)
Clean build differs from incremental build
Device Hub / predicted vs built issues in Xcode 27 ( OS27 )
Reproducing a device only bug on a simulator (Device Hub) ( OS27 )
Why xcode debugging first : 90% of mysterious issues are environment, not code. Check this BEFORE debugging code.
Invoke : skills/xcode debugging.md
2. Slow Builds → build performance
Triggers :
Compilation takes too long
Type checking bottlenecks
Want to optimize build time
Build Timeline shows slow phases
Invoke : skills/build performance.md
3. SPM Dependency Conflicts → spm conflict resolver (Agent)
Triggers :
SPM resolution failures
"No such module" after adding package
Duplicate symbol linker errors
Version conflicts between packages
Swift 6 package compatibility issues
Package.swift / Package.resolved conflicts
Why spm conflict resolver : Specialized agent that analyzes Package.swift and Package.resolved to diagnose and resolve Swift Package Manager conflicts.
Invoke : Launch spm conflict resolver agent
4. Security & Privacy Audit → security privacy scanner (Agent)
Triggers :
App Store submission prep
Privacy Manifest requirements (iOS 17+)
Hardcoded credentials in code
Sensitive data storage concerns
ATS violations
Required Reason API declarations
Why security privacy scanner : Specialized agent that scans for security vulnerabilities and privacy compliance issues.
Invoke : Launch security privacy scanner agent or /axiom:audit security
5. iOS 17→18 Modernization → modernization helper (Agent)
Triggers :
Migrate ObservableObject to @Observable
Update @StateObject to @State
Adopt modern SwiftUI patterns
Deprecated API cleanup
iOS 17+ migration
Why modernization helper : Specialized agent that scans for legacy patterns and provides migration paths with code examples.
Invoke : Launch modernization helper agent or /axiom:audit modernization
6. Build Failure Auto Fix → build fixer (Agent)
Triggers :
BUILD FAILED with no clear error details
Build sometimes succeeds, sometimes fails
App builds but runs old code
"Unable to boot simulator" error
Want automated environment first diagnostics
Why build fixer : Autonomous agent that checks zombie processes, Derived Data, SPM cache, and simulator state before investigating code. Saves 30+ minutes on environment issues.
Invoke : Launch build fixer agent or /axiom:fix build
7. Slow Build Optimization → build optimizer (Agent)
Triggers :
Builds take too long
Want to identify slow type checking
Expensive build phase scripts
Suboptimal build settings
Want parallelization opportunities
Why build optimizer : Scans Xcode projects for build performance optimizations — slow type checking, expensive scripts, suboptimal settings — to reduce build times by 30 50%.
Invoke : Launch build optimizer agent or /axiom:optimize build
8. General Dependency Issues → build debugging
Triggers :
CocoaPods resolution failures
"Multiple commands produce" errors
Framework version mismatches
Non SPM dependency graph conflicts
Invoke : skills/build debugging.md
9. TestFlight Crash Triage → testflight triage
Triggers :
Beta tester reported a crash
Crash reports in Xcode Organizer
Crash logs aren't symbolicated
TestFlight feedback with screenshots
App was killed but no crash report
Why testflight triage : Systematic workflow for investigating TestFlight crashes and reviewing beta feedback. Covers symbolication, crash interpretation, common patterns, and Claude assisted analysis.
Invoke : See axiom shipping (skills/testflight triage.md)
10. App Store Connect Navigation → app store connect ref
Triggers :
How to find crashes in App Store Connect
ASC metrics dashboard navigation
Understanding crash free users percentage
Comparing crash rates between versions
Exporting crash data from ASC
App Store Connect API for crash data
Why app store connect ref : Reference for navigating ASC crash analysis, metrics dashboards, and data export workflows.
Invoke : See axiom shipping (skills/app store connect ref.md)
11. Crash Log Analysis → crash analyzer (Agent)
Triggers :
User has .ips or .crash file to analyze
User pasted crash report text
Need to parse crash log programmatically
Identify crash pattern from exception type
Check symbolication status
Why crash analyzer : Autonomous agent that parses crash reports, identifies patterns (null pointer, Swift runtime, watchdog, jetsam), and generates actionable analysis.
Invoke : Launch crash analyzer agent or /axiom:analyze crash
12. MetricKit API Reference → metrickit ref
Triggers :
MetricKit setup and subscription
MXMetricPayload parsing (CPU, memory, launches, hitches)
MXDiagnosticPayload parsing (crashes, hangs, disk writes)
MXCallStackTree decoding and symbolication
Field crash/hang collection
Background exit metrics
Why metrickit ref : Complete MetricKit API reference with setup patterns, payload parsing, and integration with crash reporting systems.
Invoke : See axiom performance ( skills/metrickit ref.md )
13. Hang Diagnostics → hang diagnostics
Triggers :
App hangs or freezes
Main thread blocked for 1 second
UI unresponsive to touches
Xcode Organizer shows hang diagnostics
MXHangDiagnostic from MetricKit
Watchdog terminations (app killed during launch/background transition)
Why hang diagnostics : Systematic diagnosis of hangs with decision tree for busy vs blocked main thread, tool selection (Time Profiler, System Trace), and 8 common hang patterns with fixes.
Invoke : See axiom performance ( skills/hang diagnostics.md )
14. Live Debugging → lldb
Triggers :
Need to reproduce a crash interactively
Want to set breakpoints and inspect state
Crash report analyzed, now need live investigation
Need to attach debugger to running app
Why lldb : Crash reports tell you WHAT crashed. LLDB tells you WHY.
Invoke : skills/lldb.md
16. Runtime Console Capture → xclog ref
Triggers :
Need to see what the app is logging at runtime
App crashes but no crash report (need console output)
Silent failures (network, data, auth) with no UI feedback
Want to capture print()/os log() output from simulator
Need structured log output for analysis
"What is the app printing?"
Why xclog ref : Xcode's debug console isn't accessible externally. xclog combines simctl stdout/stderr with log stream JSON to capture everything print(), NSLog(), os log(), and Logger emit — with structured fields (level, subsystem, category) for automated analysis.
Invoke : /axiom:console
15. Code Signing Issues → code signing
Triggers :
"No signing certificate found"
"Provisioning profile doesn't include signing