axiom-mcp 3.3.3 → 3.3.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,19 +1,19 @@
1
1
  {
2
- "totalBytes": 9390450,
2
+ "totalBytes": 9391603,
3
3
  "skills": {
4
4
  "count": 237,
5
- "bytes": 5144634
5
+ "bytes": 5145029
6
6
  },
7
7
  "commands": {
8
8
  "count": 12,
9
- "bytes": 31414
9
+ "bytes": 31548
10
10
  },
11
11
  "agents": {
12
12
  "count": 38,
13
- "bytes": 560394
13
+ "bytes": 560596
14
14
  },
15
15
  "searchIndex": {
16
- "bytes": 3654008
16
+ "bytes": 3654430
17
17
  },
18
- "generatedAt": "2026-05-11T02:58:28.727Z"
18
+ "generatedAt": "2026-05-12T04:55:55.271Z"
19
19
  }
package/dist/bundle.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "version": "0.2.0",
3
- "generatedAt": "2026-05-11T02:58:28.727Z",
3
+ "generatedAt": "2026-05-12T04:55:55.271Z",
4
4
  "skills": {
5
5
  "axiom-accessibility": {
6
6
  "name": "axiom-accessibility",
@@ -2233,7 +2233,7 @@
2233
2233
  "axiom-build--xcode-debugging": {
2234
2234
  "name": "axiom-build--xcode-debugging",
2235
2235
  "description": "Check build environment BEFORE debugging code. **Core principle** 80% of \"mysterious\" Xcode issues are environment problems (stale Derived Data, stuck simulators, zombie processes), not code bugs.",
2236
- "content": "\n# Xcode Debugging\n\n## Overview\n\nCheck build environment BEFORE debugging code. **Core principle** 80% of \"mysterious\" Xcode issues are environment problems (stale Derived Data, stuck simulators, zombie processes), not code bugs.\n\n## Example Prompts\n\nThese are real questions developers ask that this skill is designed to answer:\n\n#### 1. \"My build is failing with 'BUILD FAILED' but no error details. I haven't changed anything. What's going on?\"\n→ The skill shows environment-first diagnostics: check Derived Data, simulator states, and zombie processes before investigating code\n\n#### 2. \"Tests passed yesterday with no code changes, but now they're failing. This is frustrating. How do I fix this?\"\n→ The skill explains stale Derived Data and intermittent failures, shows the 2-5 minute fix (clean Derived Data)\n\n#### 3. \"My app builds fine but it's running the old code from before my changes. I restarted Xcode but it still happens.\"\n→ The skill demonstrates that Derived Data caches old builds, shows how deletion forces a clean rebuild\n\n#### 4. \"The simulator says 'Unable to boot simulator' and I can't run tests. How do I recover?\"\n→ The skill covers simulator state diagnosis with simctl and safe recovery patterns (erase/shutdown/reboot)\n\n#### 5. \"I'm getting 'No such module: SomePackage' errors after updating SPM dependencies. How do I fix this?\"\n→ The skill explains SPM caching issues and the clean Derived Data workflow that resolves \"phantom\" module errors\n\n---\n\n## Red Flags — Check Environment First\n\nIf you see ANY of these, suspect environment not code:\n- \"It works on my machine but not CI\"\n- \"Tests passed yesterday, failing today with no code changes\"\n- \"Build succeeds but old code executes\"\n- \"Build sometimes succeeds, sometimes fails\" (intermittent failures)\n- \"Simulator stuck at splash screen\" or \"Unable to install app\"\n- Multiple xcodebuild processes (10+) older than 30 minutes\n\n## Mandatory First Steps\n\n**ALWAYS run these commands FIRST** (before reading code):\n\n```bash\n# 1. Check processes (zombie xcodebuild?)\nps aux | grep -E \"xcodebuild|Simulator\" | grep -v grep\n\n# 2. Check Derived Data size (>10GB = stale)\ndu -sh ~/Library/Developer/Xcode/DerivedData\n\n# 3. Check simulator states (stuck Booting?)\nxcrun simctl list devices | grep -E \"Booted|Booting|Shutting Down\"\n```\n\n#### What these tell you\n- **0 processes + small Derived Data + no booted sims** → Environment clean, investigate code\n- **10+ processes OR >10GB Derived Data OR simulators stuck** → Environment problem, clean first\n- **Stale code executing OR intermittent failures** → Clean Derived Data regardless of size\n\n#### Why environment first\n- Environment cleanup: 2-5 minutes → problem solved\n- Code debugging for environment issues: 30-120 minutes → wasted time\n\n## Quick Fix Workflow\n\n### Finding Your Scheme Name\n\nIf you don't know your scheme name:\n```bash\n# List available schemes\nxcodebuild -list\n```\n\n### For Stale Builds / \"No such module\" Errors\n```bash\n# Clean everything\nxcodebuild clean -scheme YourScheme\nrm -rf ~/Library/Developer/Xcode/DerivedData/*\nrm -rf .build/ build/\n\n# Rebuild\nxcodebuild build -scheme YourScheme \\\n -destination 'platform=iOS Simulator,name=iPhone 16'\n```\n\n### For Simulator Issues\n```bash\n# Shutdown all simulators\nxcrun simctl shutdown all\n\n# If simctl command fails, shutdown and retry\nxcrun simctl shutdown all\nxcrun simctl list devices\n\n# If still stuck, erase specific simulator\nxcrun simctl erase <device-uuid>\n\n# Nuclear option: force-quit Simulator.app\nkillall -9 Simulator\n```\n\n### For Zombie Processes\n```bash\n# Kill all xcodebuild (use cautiously)\nkillall -9 xcodebuild\n\n# Check they're gone\nps aux | grep xcodebuild | grep -v grep\n```\n\n### For Test Failures\n```bash\n# Isolate failing test\nxcodebuild test -scheme YourScheme \\\n -destination 'platform=iOS Simulator,name=iPhone 16' \\\n -only-testing:YourTests/SpecificTestClass\n```\n\n## Simulator Verification (Optional)\n\nAfter applying fixes, verify in simulator with visual confirmation.\n\n### Quick Screenshot Verification\n\n```bash\n# 1. Boot simulator (if not already)\nxcrun simctl boot \"iPhone 16 Pro\"\n\n# 2. Build and install app\nxcodebuild build -scheme YourScheme \\\n -destination 'platform=iOS Simulator,name=iPhone 16 Pro'\n\n# 3. Launch app\nxcrun simctl launch booted com.your.bundleid\n\n# 4. Wait for UI to stabilize\nsleep 2\n\n# 5. Capture screenshot\nxcrun simctl io booted screenshot /tmp/verify-build-$(date +%s).png\n```\n\n### Using Axiom Tools\n\n**Quick screenshot**:\n```bash\n/axiom:screenshot\n```\n\n**Full simulator testing** (with navigation, state setup):\n```bash\n/axiom:test-simulator\n```\n\n### When to Use Simulator Verification\n\nUse when:\n- **Visual fixes** — Layout changes, UI updates, styling tweaks\n- **State-dependent bugs** — \"Only happens in this specific screen\"\n- **Intermittent failures** — Need to reproduce specific conditions\n- **Before shipping** — Final verification that fix actually works\n\n**Pro tip**: If you have debug deep links (see `axiom-swift (skills/deep-link-debugging.md)` skill), you can navigate directly to the screen that was broken:\n```bash\nxcrun simctl openurl booted \"debug://problem-screen\"\nsleep 1\nxcrun simctl io booted screenshot /tmp/fix-verification.png\n```\n\n## Decision Tree\n\n```\nTest/build failing?\n├─ BUILD FAILED with no details?\n│ └─ Clean Derived Data → rebuild\n├─ Build intermittent (sometimes succeeds/fails)?\n│ └─ Clean Derived Data → rebuild\n├─ Build succeeds but old code executes?\n│ └─ Delete Derived Data → rebuild (2-5 min fix)\n├─ \"Unable to boot simulator\"?\n│ └─ xcrun simctl shutdown all → erase simulator\n├─ \"No such module PackageName\"?\n│ └─ Clean + delete Derived Data → rebuild\n├─ Tests hang indefinitely?\n│ └─ Check simctl list → reboot simulator\n├─ Tests crash?\n│ └─ Check ~/Library/Logs/DiagnosticReports/*.crash\n└─ Code logic bug?\n └─ Use systematic-debugging skill instead\n```\n\n## Common Error Patterns\n\n| Error | Fix |\n|-------|-----|\n| `BUILD FAILED` (no details) | Delete Derived Data |\n| `Unable to boot simulator` | `xcrun simctl erase <uuid>` |\n| `No such module` | Clean + delete Derived Data |\n| Tests hang | Check simctl list, reboot simulator |\n| Stale code executing | Delete Derived Data |\n\n## Useful CLI Tools\n\n```bash\n# Show build settings\nxcodebuild -showBuildSettings -scheme YourScheme\n\n# List schemes/targets\nxcodebuild -list\n\n# Verbose output\nxcodebuild -verbose build -scheme YourScheme\n\n# Build without testing (faster)\nxcodebuild build-for-testing -scheme YourScheme\nxcodebuild test-without-building -scheme YourScheme\n\n# Version and build number management (agvtool)\nxcrun agvtool what-marketing-version # Current version (e.g., 2.0)\nxcrun agvtool what-version # Current build number\nxcrun agvtool next-version -all # Bump build number\nxcrun agvtool new-version -all 42 # Set specific build number\nxcrun agvtool new-marketing-version 2.1 # Set marketing version\n\n# Validate asset catalogs\nxcrun amlint Assets.xcassets # Lint for issues before build\n```\n\n- `xcsym crash <file>` — Structured crash symbolication with LLM-friendly JSON output. Use for any `.ips`, MetricKit, or legacy `.crash` text file. See `axiom-tools (skills/xcsym-ref.md)`.\n\n## Physical Device Management (devicectl)\n\n`devicectl` is the modern CLI for physical device operations (replaces legacy `idevice*` tools).\n\n```bash\n# List connected devices\nxcrun devicectl list devices\n\n# Install app on device\nxcrun devicectl device install app --device <udid> MyApp.app\n\n# Launch app on device\nxcrun devicectl device process launch --device <udid> com.your.bundleid\n\n# List installed apps\nxcrun devicectl device info apps --device <udid>\n\n# List running processes\nxcrun devicectl device info processes --device <udid>\n```\n\n**When to use**: Physical device debugging when the issue doesn't reproduce in Simulator — install, launch, and inspect from CLI.\n\n## Crash Log Analysis\n\n```bash\n# Recent crashes\nls -lt ~/Library/Logs/DiagnosticReports/*.crash | head -5\n\n# Symbolicate a single address (if you have .dSYM)\nxcrun atos -o YourApp.app.dSYM/Contents/Resources/DWARF/YourApp \\\n -arch arm64 -l 0x100000000 0x<address>\n\n# Symbolicate an entire crash log at once (LLDB Python script, may vary by Xcode version)\nxcrun crashlog MyCrash.ips\n```\n\n## Common Mistakes\n\n❌ **Debugging code before checking environment** — Always run mandatory steps first\n\n❌ **Ignoring simulator states** — \"Booting\" can hang 10+ minutes, shutdown/reboot immediately\n\n❌ **Assuming git changes caused the problem** — Derived Data caches old builds despite code changes\n\n❌ **Running full test suite when one test fails** — Use `-only-testing` to isolate\n\n## Real-World Impact\n\n**Before** 30+ min debugging \"why is old code running\"\n**After** 2 min environment check → clean Derived Data → problem solved\n\n**Key insight** Check environment first, debug code second.\n",
2236
+ "content": "\n# Xcode Debugging\n\n## Overview\n\nCheck build environment BEFORE debugging code. **Core principle** 80% of \"mysterious\" Xcode issues are environment problems (stale Derived Data, stuck simulators, zombie processes), not code bugs.\n\n## Example Prompts\n\nThese are real questions developers ask that this skill is designed to answer:\n\n#### 1. \"My build is failing with 'BUILD FAILED' but no error details. I haven't changed anything. What's going on?\"\n→ The skill shows environment-first diagnostics: check Derived Data, simulator states, and zombie processes before investigating code\n\n#### 2. \"Tests passed yesterday with no code changes, but now they're failing. This is frustrating. How do I fix this?\"\n→ The skill explains stale Derived Data and intermittent failures, shows the 2-5 minute fix (clean Derived Data)\n\n#### 3. \"My app builds fine but it's running the old code from before my changes. I restarted Xcode but it still happens.\"\n→ The skill demonstrates that Derived Data caches old builds, shows how deletion forces a clean rebuild\n\n#### 4. \"The simulator says 'Unable to boot simulator' and I can't run tests. How do I recover?\"\n→ The skill covers simulator state diagnosis with simctl and safe recovery patterns (erase/shutdown/reboot)\n\n#### 5. \"I'm getting 'No such module: SomePackage' errors after updating SPM dependencies. How do I fix this?\"\n→ The skill explains SPM caching issues and the clean Derived Data workflow that resolves \"phantom\" module errors\n\n---\n\n## Red Flags — Check Environment First\n\nIf you see ANY of these, suspect environment not code:\n- \"It works on my machine but not CI\"\n- \"Tests passed yesterday, failing today with no code changes\"\n- \"Build succeeds but old code executes\"\n- \"Build sometimes succeeds, sometimes fails\" (intermittent failures)\n- \"Simulator stuck at splash screen\" or \"Unable to install app\"\n- Multiple xcodebuild processes (10+) older than 30 minutes\n\n## Mandatory First Steps\n\n**ALWAYS run these commands FIRST** (before reading code):\n\n```bash\n# 1. Check processes (zombie xcodebuild?)\n# \\bxcodebuild\\b is word-bounded so it skips the `xcodebuildmcp` MCP server\nps aux | grep -E '\\bxcodebuild\\b|Simulator' | grep -v grep\n\n# 2. Check Derived Data size (>10GB = stale)\ndu -sh ~/Library/Developer/Xcode/DerivedData\n\n# 3. Check simulator states (stuck Booting?)\nxcrun simctl list devices | grep -E \"Booted|Booting|Shutting Down\"\n```\n\n#### What these tell you\n- **0 processes + small Derived Data + no booted sims** → Environment clean, investigate code\n- **10+ processes OR >10GB Derived Data OR simulators stuck** → Environment problem, clean first\n- **Stale code executing OR intermittent failures** → Clean Derived Data regardless of size\n\n#### Why environment first\n- Environment cleanup: 2-5 minutes → problem solved\n- Code debugging for environment issues: 30-120 minutes → wasted time\n\n## Quick Fix Workflow\n\n### Finding Your Scheme Name\n\nIf you don't know your scheme name:\n```bash\n# List available schemes\nxcodebuild -list\n```\n\n### For Stale Builds / \"No such module\" Errors\n```bash\n# Clean everything\nxcodebuild clean -scheme YourScheme\nrm -rf ~/Library/Developer/Xcode/DerivedData/*\nrm -rf .build/ build/\n\n# Rebuild\nxcodebuild build -scheme YourScheme \\\n -destination 'platform=iOS Simulator,name=iPhone 16'\n```\n\n### For Simulator Issues\n```bash\n# Shutdown all simulators\nxcrun simctl shutdown all\n\n# If simctl command fails, shutdown and retry\nxcrun simctl shutdown all\nxcrun simctl list devices\n\n# If still stuck, erase specific simulator\nxcrun simctl erase <device-uuid>\n\n# Nuclear option: force-quit Simulator.app\nkillall -9 Simulator\n```\n\n### For Zombie Processes\n```bash\n# Kill all xcodebuild (use cautiously)\nkillall -9 xcodebuild\n\n# Check they're gone (-w skips the `xcodebuildmcp` MCP server)\nps aux | grep -w xcodebuild | grep -v grep\n```\n\n### For Test Failures\n```bash\n# Isolate failing test\nxcodebuild test -scheme YourScheme \\\n -destination 'platform=iOS Simulator,name=iPhone 16' \\\n -only-testing:YourTests/SpecificTestClass\n```\n\n## Simulator Verification (Optional)\n\nAfter applying fixes, verify in simulator with visual confirmation.\n\n### Quick Screenshot Verification\n\n```bash\n# 1. Boot simulator (if not already)\nxcrun simctl boot \"iPhone 16 Pro\"\n\n# 2. Build and install app\nxcodebuild build -scheme YourScheme \\\n -destination 'platform=iOS Simulator,name=iPhone 16 Pro'\n\n# 3. Launch app\nxcrun simctl launch booted com.your.bundleid\n\n# 4. Wait for UI to stabilize\nsleep 2\n\n# 5. Capture screenshot\nxcrun simctl io booted screenshot /tmp/verify-build-$(date +%s).png\n```\n\n### Using Axiom Tools\n\n**Quick screenshot**:\n```bash\n/axiom:screenshot\n```\n\n**Full simulator testing** (with navigation, state setup):\n```bash\n/axiom:test-simulator\n```\n\n### When to Use Simulator Verification\n\nUse when:\n- **Visual fixes** — Layout changes, UI updates, styling tweaks\n- **State-dependent bugs** — \"Only happens in this specific screen\"\n- **Intermittent failures** — Need to reproduce specific conditions\n- **Before shipping** — Final verification that fix actually works\n\n**Pro tip**: If you have debug deep links (see `axiom-swift (skills/deep-link-debugging.md)` skill), you can navigate directly to the screen that was broken:\n```bash\nxcrun simctl openurl booted \"debug://problem-screen\"\nsleep 1\nxcrun simctl io booted screenshot /tmp/fix-verification.png\n```\n\n## Decision Tree\n\n```\nTest/build failing?\n├─ BUILD FAILED with no details?\n│ └─ Clean Derived Data → rebuild\n├─ Build intermittent (sometimes succeeds/fails)?\n│ └─ Clean Derived Data → rebuild\n├─ Build succeeds but old code executes?\n│ └─ Delete Derived Data → rebuild (2-5 min fix)\n├─ \"Unable to boot simulator\"?\n│ └─ xcrun simctl shutdown all → erase simulator\n├─ \"No such module PackageName\"?\n│ └─ Clean + delete Derived Data → rebuild\n├─ Tests hang indefinitely?\n│ └─ Check simctl list → reboot simulator\n├─ Tests crash?\n│ └─ Check ~/Library/Logs/DiagnosticReports/*.crash\n└─ Code logic bug?\n └─ Use systematic-debugging skill instead\n```\n\n## Common Error Patterns\n\n| Error | Fix |\n|-------|-----|\n| `BUILD FAILED` (no details) | Delete Derived Data |\n| `Unable to boot simulator` | `xcrun simctl erase <uuid>` |\n| `No such module` | Clean + delete Derived Data |\n| Tests hang | Check simctl list, reboot simulator |\n| Stale code executing | Delete Derived Data |\n\n## Useful CLI Tools\n\n```bash\n# Show build settings\nxcodebuild -showBuildSettings -scheme YourScheme\n\n# List schemes/targets\nxcodebuild -list\n\n# Verbose output\nxcodebuild -verbose build -scheme YourScheme\n\n# Build without testing (faster)\nxcodebuild build-for-testing -scheme YourScheme\nxcodebuild test-without-building -scheme YourScheme\n\n# Version and build number management (agvtool)\nxcrun agvtool what-marketing-version # Current version (e.g., 2.0)\nxcrun agvtool what-version # Current build number\nxcrun agvtool next-version -all # Bump build number\nxcrun agvtool new-version -all 42 # Set specific build number\nxcrun agvtool new-marketing-version 2.1 # Set marketing version\n\n# Validate asset catalogs\nxcrun amlint Assets.xcassets # Lint for issues before build\n```\n\n- `xcsym crash <file>` — Structured crash symbolication with LLM-friendly JSON output. Use for any `.ips`, MetricKit, or legacy `.crash` text file. See `axiom-tools (skills/xcsym-ref.md)`.\n\n## Physical Device Management (devicectl)\n\n`devicectl` is the modern CLI for physical device operations (replaces legacy `idevice*` tools).\n\n```bash\n# List connected devices\nxcrun devicectl list devices\n\n# Install app on device\nxcrun devicectl device install app --device <udid> MyApp.app\n\n# Launch app on device\nxcrun devicectl device process launch --device <udid> com.your.bundleid\n\n# List installed apps\nxcrun devicectl device info apps --device <udid>\n\n# List running processes\nxcrun devicectl device info processes --device <udid>\n```\n\n**When to use**: Physical device debugging when the issue doesn't reproduce in Simulator — install, launch, and inspect from CLI.\n\n## Crash Log Analysis\n\n```bash\n# Recent crashes\nls -lt ~/Library/Logs/DiagnosticReports/*.crash | head -5\n\n# Symbolicate a single address (if you have .dSYM)\nxcrun atos -o YourApp.app.dSYM/Contents/Resources/DWARF/YourApp \\\n -arch arm64 -l 0x100000000 0x<address>\n\n# Symbolicate an entire crash log at once (LLDB Python script, may vary by Xcode version)\nxcrun crashlog MyCrash.ips\n```\n\n## Common Mistakes\n\n❌ **Debugging code before checking environment** — Always run mandatory steps first\n\n❌ **Ignoring simulator states** — \"Booting\" can hang 10+ minutes, shutdown/reboot immediately\n\n❌ **Assuming git changes caused the problem** — Derived Data caches old builds despite code changes\n\n❌ **Running full test suite when one test fails** — Use `-only-testing` to isolate\n\n## Real-World Impact\n\n**Before** 30+ min debugging \"why is old code running\"\n**After** 2 min environment check → clean Derived Data → problem solved\n\n**Key insight** Check environment first, debug code second.\n",
2237
2237
  "skillType": "discipline",
2238
2238
  "source": "axiom",
2239
2239
  "tags": [
@@ -2294,287 +2294,294 @@
2294
2294
  "heading": "1. Check processes (zombie xcodebuild?)",
2295
2295
  "level": 1,
2296
2296
  "startLine": 43,
2297
- "endLine": 45,
2298
- "charCount": 97
2297
+ "endLine": 43,
2298
+ "charCount": 41
2299
+ },
2300
+ {
2301
+ "heading": "\\bxcodebuild\\b is word-bounded so it skips the `xcodebuildmcp` MCP server",
2302
+ "level": 1,
2303
+ "startLine": 44,
2304
+ "endLine": 46,
2305
+ "charCount": 135
2299
2306
  },
2300
2307
  {
2301
2308
  "heading": "2. Check Derived Data size (>10GB = stale)",
2302
2309
  "level": 1,
2303
- "startLine": 46,
2304
- "endLine": 48,
2310
+ "startLine": 47,
2311
+ "endLine": 49,
2305
2312
  "charCount": 90
2306
2313
  },
2307
2314
  {
2308
2315
  "heading": "3. Check simulator states (stuck Booting?)",
2309
2316
  "level": 1,
2310
- "startLine": 49,
2311
- "endLine": 61,
2317
+ "startLine": 50,
2318
+ "endLine": 62,
2312
2319
  "charCount": 575
2313
2320
  },
2314
2321
  {
2315
2322
  "heading": "Quick Fix Workflow",
2316
2323
  "level": 2,
2317
- "startLine": 62,
2318
- "endLine": 67,
2324
+ "startLine": 63,
2325
+ "endLine": 68,
2319
2326
  "charCount": 96
2320
2327
  },
2321
2328
  {
2322
2329
  "heading": "List available schemes",
2323
2330
  "level": 1,
2324
- "startLine": 68,
2325
- "endLine": 73,
2331
+ "startLine": 69,
2332
+ "endLine": 74,
2326
2333
  "charCount": 101
2327
2334
  },
2328
2335
  {
2329
2336
  "heading": "Clean everything",
2330
2337
  "level": 1,
2331
- "startLine": 74,
2332
- "endLine": 78,
2338
+ "startLine": 75,
2339
+ "endLine": 79,
2333
2340
  "charCount": 124
2334
2341
  },
2335
2342
  {
2336
2343
  "heading": "Rebuild",
2337
2344
  "level": 1,
2338
- "startLine": 79,
2339
- "endLine": 85,
2345
+ "startLine": 80,
2346
+ "endLine": 86,
2340
2347
  "charCount": 140
2341
2348
  },
2342
2349
  {
2343
2350
  "heading": "Shutdown all simulators",
2344
2351
  "level": 1,
2345
- "startLine": 86,
2346
- "endLine": 88,
2352
+ "startLine": 87,
2353
+ "endLine": 89,
2347
2354
  "charCount": 52
2348
2355
  },
2349
2356
  {
2350
2357
  "heading": "If simctl command fails, shutdown and retry",
2351
2358
  "level": 1,
2352
- "startLine": 89,
2353
- "endLine": 92,
2359
+ "startLine": 90,
2360
+ "endLine": 93,
2354
2361
  "charCount": 98
2355
2362
  },
2356
2363
  {
2357
2364
  "heading": "If still stuck, erase specific simulator",
2358
2365
  "level": 1,
2359
- "startLine": 93,
2360
- "endLine": 95,
2366
+ "startLine": 94,
2367
+ "endLine": 96,
2361
2368
  "charCount": 76
2362
2369
  },
2363
2370
  {
2364
2371
  "heading": "Nuclear option: force-quit Simulator.app",
2365
2372
  "level": 1,
2366
- "startLine": 96,
2367
- "endLine": 101,
2373
+ "startLine": 97,
2374
+ "endLine": 102,
2368
2375
  "charCount": 101
2369
2376
  },
2370
2377
  {
2371
2378
  "heading": "Kill all xcodebuild (use cautiously)",
2372
2379
  "level": 1,
2373
- "startLine": 102,
2374
- "endLine": 104,
2380
+ "startLine": 103,
2381
+ "endLine": 105,
2375
2382
  "charCount": 61
2376
2383
  },
2377
2384
  {
2378
- "heading": "Check they're gone",
2385
+ "heading": "Check they're gone (-w skips the `xcodebuildmcp` MCP server)",
2379
2386
  "level": 1,
2380
- "startLine": 105,
2381
- "endLine": 110,
2382
- "charCount": 95
2387
+ "startLine": 106,
2388
+ "endLine": 111,
2389
+ "charCount": 140
2383
2390
  },
2384
2391
  {
2385
2392
  "heading": "Isolate failing test",
2386
2393
  "level": 1,
2387
- "startLine": 111,
2388
- "endLine": 116,
2394
+ "startLine": 112,
2395
+ "endLine": 117,
2389
2396
  "charCount": 165
2390
2397
  },
2391
2398
  {
2392
2399
  "heading": "Simulator Verification (Optional)",
2393
2400
  "level": 2,
2394
- "startLine": 117,
2395
- "endLine": 123,
2401
+ "startLine": 118,
2402
+ "endLine": 124,
2396
2403
  "charCount": 149
2397
2404
  },
2398
2405
  {
2399
2406
  "heading": "1. Boot simulator (if not already)",
2400
2407
  "level": 1,
2401
- "startLine": 124,
2402
- "endLine": 126,
2408
+ "startLine": 125,
2409
+ "endLine": 127,
2403
2410
  "charCount": 71
2404
2411
  },
2405
2412
  {
2406
2413
  "heading": "2. Build and install app",
2407
2414
  "level": 1,
2408
- "startLine": 127,
2409
- "endLine": 130,
2415
+ "startLine": 128,
2416
+ "endLine": 131,
2410
2417
  "charCount": 124
2411
2418
  },
2412
2419
  {
2413
2420
  "heading": "3. Launch app",
2414
2421
  "level": 1,
2415
- "startLine": 131,
2416
- "endLine": 133,
2422
+ "startLine": 132,
2423
+ "endLine": 134,
2417
2424
  "charCount": 61
2418
2425
  },
2419
2426
  {
2420
2427
  "heading": "4. Wait for UI to stabilize",
2421
2428
  "level": 1,
2422
- "startLine": 134,
2423
- "endLine": 136,
2429
+ "startLine": 135,
2430
+ "endLine": 137,
2424
2431
  "charCount": 38
2425
2432
  },
2426
2433
  {
2427
2434
  "heading": "5. Capture screenshot",
2428
2435
  "level": 1,
2429
- "startLine": 137,
2430
- "endLine": 167,
2436
+ "startLine": 138,
2437
+ "endLine": 168,
2431
2438
  "charCount": 876
2432
2439
  },
2433
2440
  {
2434
2441
  "heading": "Decision Tree",
2435
2442
  "level": 2,
2436
- "startLine": 168,
2437
- "endLine": 189,
2443
+ "startLine": 169,
2444
+ "endLine": 190,
2438
2445
  "charCount": 652
2439
2446
  },
2440
2447
  {
2441
2448
  "heading": "Common Error Patterns",
2442
2449
  "level": 2,
2443
- "startLine": 190,
2444
- "endLine": 199,
2450
+ "startLine": 191,
2451
+ "endLine": 200,
2445
2452
  "charCount": 324
2446
2453
  },
2447
2454
  {
2448
2455
  "heading": "Useful CLI Tools",
2449
2456
  "level": 2,
2450
- "startLine": 200,
2451
- "endLine": 202,
2457
+ "startLine": 201,
2458
+ "endLine": 203,
2452
2459
  "charCount": 28
2453
2460
  },
2454
2461
  {
2455
2462
  "heading": "Show build settings",
2456
2463
  "level": 1,
2457
- "startLine": 203,
2458
- "endLine": 205,
2464
+ "startLine": 204,
2465
+ "endLine": 206,
2459
2466
  "charCount": 71
2460
2467
  },
2461
2468
  {
2462
2469
  "heading": "List schemes/targets",
2463
2470
  "level": 1,
2464
- "startLine": 206,
2465
- "endLine": 208,
2471
+ "startLine": 207,
2472
+ "endLine": 209,
2466
2473
  "charCount": 40
2467
2474
  },
2468
2475
  {
2469
2476
  "heading": "Verbose output",
2470
2477
  "level": 1,
2471
- "startLine": 209,
2472
- "endLine": 211,
2478
+ "startLine": 210,
2479
+ "endLine": 212,
2473
2480
  "charCount": 62
2474
2481
  },
2475
2482
  {
2476
2483
  "heading": "Build without testing (faster)",
2477
2484
  "level": 1,
2478
- "startLine": 212,
2479
- "endLine": 215,
2485
+ "startLine": 213,
2486
+ "endLine": 216,
2480
2487
  "charCount": 133
2481
2488
  },
2482
2489
  {
2483
2490
  "heading": "Version and build number management (agvtool)",
2484
2491
  "level": 1,
2485
- "startLine": 216,
2486
- "endLine": 222,
2492
+ "startLine": 217,
2493
+ "endLine": 223,
2487
2494
  "charCount": 403
2488
2495
  },
2489
2496
  {
2490
2497
  "heading": "Validate asset catalogs",
2491
2498
  "level": 1,
2492
- "startLine": 223,
2493
- "endLine": 228,
2499
+ "startLine": 224,
2500
+ "endLine": 229,
2494
2501
  "charCount": 298
2495
2502
  },
2496
2503
  {
2497
2504
  "heading": "Physical Device Management (devicectl)",
2498
2505
  "level": 2,
2499
- "startLine": 229,
2500
- "endLine": 233,
2506
+ "startLine": 230,
2507
+ "endLine": 234,
2501
2508
  "charCount": 148
2502
2509
  },
2503
2510
  {
2504
2511
  "heading": "List connected devices",
2505
2512
  "level": 1,
2506
- "startLine": 234,
2507
- "endLine": 236,
2513
+ "startLine": 235,
2514
+ "endLine": 237,
2508
2515
  "charCount": 54
2509
2516
  },
2510
2517
  {
2511
2518
  "heading": "Install app on device",
2512
2519
  "level": 1,
2513
- "startLine": 237,
2514
- "endLine": 239,
2520
+ "startLine": 238,
2521
+ "endLine": 240,
2515
2522
  "charCount": 85
2516
2523
  },
2517
2524
  {
2518
2525
  "heading": "Launch app on device",
2519
2526
  "level": 1,
2520
- "startLine": 240,
2521
- "endLine": 242,
2527
+ "startLine": 241,
2528
+ "endLine": 243,
2522
2529
  "charCount": 95
2523
2530
  },
2524
2531
  {
2525
2532
  "heading": "List installed apps",
2526
2533
  "level": 1,
2527
- "startLine": 243,
2528
- "endLine": 245,
2534
+ "startLine": 244,
2535
+ "endLine": 246,
2529
2536
  "charCount": 71
2530
2537
  },
2531
2538
  {
2532
2539
  "heading": "List running processes",
2533
2540
  "level": 1,
2534
- "startLine": 246,
2535
- "endLine": 251,
2541
+ "startLine": 247,
2542
+ "endLine": 252,
2536
2543
  "charCount": 214
2537
2544
  },
2538
2545
  {
2539
2546
  "heading": "Crash Log Analysis",
2540
2547
  "level": 2,
2541
- "startLine": 252,
2542
- "endLine": 254,
2548
+ "startLine": 253,
2549
+ "endLine": 255,
2543
2550
  "charCount": 30
2544
2551
  },
2545
2552
  {
2546
2553
  "heading": "Recent crashes",
2547
2554
  "level": 1,
2548
- "startLine": 255,
2549
- "endLine": 257,
2555
+ "startLine": 256,
2556
+ "endLine": 258,
2550
2557
  "charCount": 75
2551
2558
  },
2552
2559
  {
2553
2560
  "heading": "Symbolicate a single address (if you have .dSYM)",
2554
2561
  "level": 1,
2555
- "startLine": 258,
2556
- "endLine": 261,
2562
+ "startLine": 259,
2563
+ "endLine": 262,
2557
2564
  "charCount": 158
2558
2565
  },
2559
2566
  {
2560
2567
  "heading": "Symbolicate an entire crash log at once (LLDB Python script, may vary by Xcode version)",
2561
2568
  "level": 1,
2562
- "startLine": 262,
2563
- "endLine": 265,
2569
+ "startLine": 263,
2570
+ "endLine": 266,
2564
2571
  "charCount": 121
2565
2572
  },
2566
2573
  {
2567
2574
  "heading": "Common Mistakes",
2568
2575
  "level": 2,
2569
- "startLine": 266,
2570
- "endLine": 275,
2576
+ "startLine": 267,
2577
+ "endLine": 276,
2571
2578
  "charCount": 384
2572
2579
  },
2573
2580
  {
2574
2581
  "heading": "Real-World Impact",
2575
2582
  "level": 2,
2576
- "startLine": 276,
2577
- "endLine": 282,
2583
+ "startLine": 277,
2584
+ "endLine": 283,
2578
2585
  "charCount": 210
2579
2586
  }
2580
2587
  ],
@@ -31958,7 +31965,7 @@
31958
31965
  "axiom-tools": {
31959
31966
  "name": "axiom-tools",
31960
31967
  "description": "Use when asking how to use Axiom, what skills are available, getting started with Axiom, capturing iOS simulator console output with xclog, or symbolicating .ips/MetricKit/.crash/.xccrashpoint files with xcsym.",
31961
- "content": "\n# Axiom Tools & Onboarding\n\nThis suite covers Axiom itself — how to use it, what's available, and the tools that ship with it.\n\n## Routing\n\n| Question | Read |\n|----------|------|\n| \"How do I use Axiom?\" / \"What skills are available?\" | [skills/getting-started.md](skills/getting-started.md) |\n| \"How do I capture console output?\" / \"What is xclog?\" | [skills/xclog-ref.md](skills/xclog-ref.md) |\n| \"How do I symbolicate a crash?\" / \"What is xcsym?\" / \"Why is my crash unsymbolicated?\" | [skills/xcsym-ref.md](skills/xcsym-ref.md) |\n\n## Using Axiom Skills\n\nThe content below is the core discipline for Axiom's routing system — it establishes the rule that Axiom skills must be checked before any iOS/Swift response.\n\n<EXTREMELY-IMPORTANT>\nIf you think there is even a 1% chance an Axiom skill might apply to your iOS/Swift task, you ABSOLUTELY MUST check for the skill.\n\nIF AN AXIOM SKILL APPLIES TO YOUR iOS/SWIFT TASK, YOU DO NOT HAVE A CHOICE. YOU MUST USE IT.\n\nThis is not negotiable. This is not optional. You cannot rationalize your way out of this.\n</EXTREMELY-IMPORTANT>\n\n## The Rule\n\n**Check for Axiom skills BEFORE ANY RESPONSE when working with iOS/Swift projects.** This includes clarifying questions. Even 1% chance means check first.\n\n## Red Flags — iOS-Specific Rationalizations\n\nThese thoughts mean STOP—you're rationalizing:\n\n| Thought | Reality |\n|---------|---------|\n| \"This is just a simple build issue\" | Build failures have patterns. Check axiom-build first. |\n| \"I can fix this SwiftUI bug quickly\" | SwiftUI issues have hidden gotchas. Check axiom-swiftui first. |\n| \"Let me just add this database column\" | Schema changes risk data loss. Check axiom-data first. |\n| \"This async code looks straightforward\" | Swift concurrency has subtle rules. Check axiom-concurrency first. |\n| \"I'll debug the memory leak manually\" | Leak patterns are documented. Check axiom-performance first. |\n| \"Let me explore the Xcode project first\" | Axiom skills tell you HOW to explore. Check first. |\n| \"I remember how to do this from last time\" | iOS changes constantly. Skills are up-to-date. |\n| \"This iOS/platform version doesn't exist\" | Your training ended January 2025. Invoke Axiom skills for post-cutoff facts. |\n| \"The user just wants a quick answer\" | Quick answers without patterns create tech debt. Check skills first. |\n| \"This doesn't need a formal workflow\" | If an Axiom skill exists for it, use it. |\n| \"I'll gather info first, then check skills\" | Skills tell you WHAT info to gather. Check first. |\n\n## Skill Priority for iOS Development\n\nWhen multiple Axiom skills could apply, use this priority:\n\n1. **Environment/Build first** (axiom-build) — Fix the environment before debugging code\n2. **Architecture patterns** (axiom-swiftui, axiom-data, axiom-concurrency) — These determine HOW to structure the solution\n3. **Implementation details** (axiom-integration, axiom-ai, axiom-vision) — These guide specific feature work\n\nExamples:\n- \"Xcode build failed\" → axiom-build first (environment)\n- \"Add SwiftUI screen\" → axiom-swiftui first (architecture), then maybe axiom-integration if using system features\n- \"App is slow\" → axiom-performance first (diagnose), then fix the specific domain\n- \"Network request failing\" → axiom-build first (environment check), then axiom-networking (implementation)\n\n## iOS Project Detection\n\nAxiom skills apply when:\n- Working directory contains `.xcodeproj` or `.xcworkspace`\n- User mentions iOS, Swift, Xcode, SwiftUI, UIKit\n- User asks about Apple frameworks (SwiftData, CloudKit, etc.)\n- User reports iOS-specific errors (concurrency, memory, build failures)\n\n## Using Axiom Router Skills\n\nAxiom uses **router skills** for progressive disclosure:\n\n1. Check the appropriate router skill first (axiom-build, axiom-swiftui, axiom-data, etc.)\n2. Router will invoke the specialized skill(s) you actually need\n3. Follow the specialized skill exactly\n\n**Do not skip the router.** Routers have decision logic to select the right specialized skill.\n\n### Multi-Domain Questions\n\nWhen a question spans multiple domains, **invoke ALL relevant routers — don't stop after the first one.**\n\nExamples:\n- \"My SwiftUI view doesn't update when SwiftData changes\" → invoke **both** axiom-swiftui AND axiom-data\n- \"My widget isn't showing updated data from SwiftData\" → invoke **both** axiom-integration AND axiom-data\n- \"My Foundation Models session freezes the UI\" → invoke **both** axiom-ai AND axiom-concurrency\n- \"My Core Data saves lose data from background tasks\" → invoke **both** axiom-data AND axiom-concurrency\n\n**How to tell**: If the question mentions symptoms from two different domains, or involves two different frameworks, invoke both routers. Each router has cross-domain routing guidance for common overlaps.\n\n## Backward Compatibility\n\n- Direct skill invocation still works: `/skill axiom-concurrency`\n- Commands work unchanged: `/axiom:fix-build`, `/axiom:audit-accessibility`\n- Agents work via routing or direct command invocation\n\n## When Axiom Skills Don't Apply\n\nSkip Axiom skills for:\n- Non-iOS/Swift projects (Android, web, backend)\n- Generic programming questions unrelated to Apple platforms\n- Questions about Claude Code itself (use claude-code-guide skill)\n\nBut when in doubt for iOS/Swift work: **check first, decide later.**\n\n## Resources\n\n**Skills**: axiom-swiftui, axiom-concurrency, axiom-data, axiom-build, axiom-performance\n\n**Axiom tools**: `xclog` (simulator console capture, `skills/xclog-ref.md`), `xcsym` (crash symbolication for `.ips`, MetricKit, legacy `.crash` text files, and Xcode Organizer `.xccrashpoint` bundles, `skills/xcsym-ref.md`)\n",
31968
+ "content": "\n# Axiom Tools & Onboarding\n\nThis suite covers Axiom itself — how to use it, what's available, and the tools that ship with it.\n\n## Routing\n\n| Question | Read |\n|----------|------|\n| \"How do I use Axiom?\" / \"What skills are available?\" | [skills/getting-started.md](skills/getting-started.md) |\n| \"How do I capture console output?\" / \"What is xclog?\" | [skills/xclog-ref.md](skills/xclog-ref.md) |\n| \"How do I symbolicate a crash?\" / \"What is xcsym?\" / \"Why is my crash unsymbolicated?\" | [skills/xcsym-ref.md](skills/xcsym-ref.md) |\n\n## Using Axiom Skills\n\nThe content below is the core discipline for Axiom's routing system — it establishes the rule that Axiom skills must be checked before any iOS/Swift response.\n\n<EXTREMELY-IMPORTANT>\nIf you think there is even a 1% chance an Axiom skill might apply to your iOS/Swift task, you ABSOLUTELY MUST check for the skill.\n\nIF AN AXIOM SKILL APPLIES TO YOUR iOS/SWIFT TASK, YOU DO NOT HAVE A CHOICE. YOU MUST USE IT.\n\nThis is not negotiable. This is not optional. You cannot rationalize your way out of this.\n</EXTREMELY-IMPORTANT>\n\n## The Rule\n\n**Check for Axiom skills BEFORE ANY RESPONSE when working with iOS/Swift projects.** This includes clarifying questions. Even 1% chance means check first.\n\n## Red Flags — iOS-Specific Rationalizations\n\nThese thoughts mean STOP—you're rationalizing:\n\n| Thought | Reality |\n|---------|---------|\n| \"This is just a simple build issue\" | Build failures have patterns. Check axiom-build first. |\n| \"I can fix this SwiftUI bug quickly\" | SwiftUI issues have hidden gotchas. Check axiom-swiftui first. |\n| \"Let me just add this database column\" | Schema changes risk data loss. Check axiom-data first. |\n| \"This async code looks straightforward\" | Swift concurrency has subtle rules. Check axiom-concurrency first. |\n| \"I'll debug the memory leak manually\" | Leak patterns are documented. Check axiom-performance first. |\n| \"Let me explore the Xcode project first\" | Axiom skills tell you HOW to explore. Check first. |\n| \"I remember how to do this from last time\" | iOS changes constantly. Skills are up-to-date. |\n| \"This iOS/platform version doesn't exist\" | If it postdates your training, you can't know that. Apple shipped iOS 26 at WWDC 2025 (18 → 26, 19-25 skipped). Invoke Axiom skills for post-cutoff facts. |\n| \"The user just wants a quick answer\" | Quick answers without patterns create tech debt. Check skills first. |\n| \"This doesn't need a formal workflow\" | If an Axiom skill exists for it, use it. |\n| \"I'll gather info first, then check skills\" | Skills tell you WHAT info to gather. Check first. |\n\n## Skill Priority for iOS Development\n\nWhen multiple Axiom skills could apply, use this priority:\n\n1. **Environment/Build first** (axiom-build) — Fix the environment before debugging code\n2. **Architecture patterns** (axiom-swiftui, axiom-data, axiom-concurrency) — These determine HOW to structure the solution\n3. **Implementation details** (axiom-integration, axiom-ai, axiom-vision) — These guide specific feature work\n\nExamples:\n- \"Xcode build failed\" → axiom-build first (environment)\n- \"Add SwiftUI screen\" → axiom-swiftui first (architecture), then maybe axiom-integration if using system features\n- \"App is slow\" → axiom-performance first (diagnose), then fix the specific domain\n- \"Network request failing\" → axiom-build first (environment check), then axiom-networking (implementation)\n\n## iOS Project Detection\n\nAxiom skills apply when:\n- Working directory contains `.xcodeproj` or `.xcworkspace`\n- User mentions iOS, Swift, Xcode, SwiftUI, UIKit\n- User asks about Apple frameworks (SwiftData, CloudKit, etc.)\n- User reports iOS-specific errors (concurrency, memory, build failures)\n\n## Using Axiom Router Skills\n\nAxiom uses **router skills** for progressive disclosure:\n\n1. Check the appropriate router skill first (axiom-build, axiom-swiftui, axiom-data, etc.)\n2. Router will invoke the specialized skill(s) you actually need\n3. Follow the specialized skill exactly\n\n**Do not skip the router.** Routers have decision logic to select the right specialized skill.\n\n### Multi-Domain Questions\n\nWhen a question spans multiple domains, **invoke ALL relevant routers — don't stop after the first one.**\n\nExamples:\n- \"My SwiftUI view doesn't update when SwiftData changes\" → invoke **both** axiom-swiftui AND axiom-data\n- \"My widget isn't showing updated data from SwiftData\" → invoke **both** axiom-integration AND axiom-data\n- \"My Foundation Models session freezes the UI\" → invoke **both** axiom-ai AND axiom-concurrency\n- \"My Core Data saves lose data from background tasks\" → invoke **both** axiom-data AND axiom-concurrency\n\n**How to tell**: If the question mentions symptoms from two different domains, or involves two different frameworks, invoke both routers. Each router has cross-domain routing guidance for common overlaps.\n\n## Backward Compatibility\n\n- Direct skill invocation still works: `/skill axiom-concurrency`\n- Commands work unchanged: `/axiom:fix-build`, `/axiom:audit-accessibility`\n- Agents work via routing or direct command invocation\n\n## When Axiom Skills Don't Apply\n\nSkip Axiom skills for:\n- Non-iOS/Swift projects (Android, web, backend)\n- Generic programming questions unrelated to Apple platforms\n- Questions about Claude Code itself (use claude-code-guide skill)\n\nBut when in doubt for iOS/Swift work: **check first, decide later.**\n\n## Resources\n\n**Skills**: axiom-swiftui, axiom-concurrency, axiom-data, axiom-build, axiom-performance\n\n**Axiom tools**: `xclog` (simulator console capture, `skills/xclog-ref.md`), `xcsym` (crash symbolication for `.ips`, MetricKit, legacy `.crash` text files, and Xcode Organizer `.xccrashpoint` bundles, `skills/xcsym-ref.md`)\n",
31962
31969
  "skillType": "router",
31963
31970
  "source": "axiom",
31964
31971
  "category": "general",
@@ -32007,7 +32014,7 @@
32007
32014
  "level": 2,
32008
32015
  "startLine": 29,
32009
32016
  "endLine": 46,
32010
- "charCount": 1275
32017
+ "charCount": 1353
32011
32018
  },
32012
32019
  {
32013
32020
  "heading": "Skill Priority for iOS Development",
@@ -35891,7 +35898,7 @@
35891
35898
  "status": {
35892
35899
  "name": "status",
35893
35900
  "description": "Project health dashboard - shows environment status and suggests improvements",
35894
- "content": "\nYou are a project health analyzer. Provide a quick dashboard of the iOS project state.\n\n## Gather Information\n\nRun these checks and format as a dashboard:\n\n### Environment Health\n```bash\n# Zombie processes\npgrep -f xcodebuild | wc -l\n\n# Derived Data size\ndu -sh ~/Library/Developer/Xcode/DerivedData 2>/dev/null\n\n# Simulator status (JSON for reliable parsing)\nxcrun simctl list devices -j | jq '.devices | to_entries[] | .value[] | select(.state == \"Booted\") | {name, udid}'\n\n# Tool availability\necho \"jq: $(command -v jq &>/dev/null && echo 'installed' || echo 'NOT INSTALLED')\"\necho \"axe: $(command -v axe &>/dev/null && echo 'installed (UI automation available)' || echo 'not installed (optional)')\"\n```\n\n### Project Analysis\n```bash\n# Count SwiftUI views\nfind . -name \"*.swift\" -exec grep -l \"struct.*View.*body\" {} \\; | wc -l\n\n# Check for potential issues\ngrep -r \"Timer\\|NotificationCenter\\.default\\.addObserver\" --include=\"*.swift\" | wc -l\n\n# iOS deployment target\ngrep -r \"IPHONEOS_DEPLOYMENT_TARGET\" *.xcodeproj/project.pbxproj 2>/dev/null | head -1\n```\n\n### Format as Dashboard\n\n```\nAxiom Project Status\n=====================\n\nEnvironment\n Xcodebuild processes: [count] [warning if > 3]\n Derived Data: [size] [warning if > 10GB]\n Simulators running: [count]\n jq: [installed/NOT INSTALLED]\n axe: [installed/not installed (optional)]\n\nProject Analysis\n SwiftUI views: [count]\n Potential memory patterns: [count] [warning if > 0]\n Deployment target: iOS [version]\n\nSuggested Actions\n [Based on findings, suggest 2-3 most relevant audits or skills]\n [If jq not installed: \"Install jq for reliable simulator control: brew install jq\"]\n [If axe installed: \"AXe UI automation available for simulator-tester agent\"]\n```\n"
35901
+ "content": "\nYou are a project health analyzer. Provide a quick dashboard of the iOS project state.\n\n## Gather Information\n\nRun these checks and format as a dashboard:\n\n### Environment Health\n```bash\n# Zombie xcodebuild processes (-x = exact process name; -f would also count\n# the long-running `xcodebuildmcp` MCP server, which is not a zombie build)\npgrep -x xcodebuild | wc -l\n\n# Derived Data size\ndu -sh ~/Library/Developer/Xcode/DerivedData 2>/dev/null\n\n# Simulator status (JSON for reliable parsing)\nxcrun simctl list devices -j | jq '.devices | to_entries[] | .value[] | select(.state == \"Booted\") | {name, udid}'\n\n# Tool availability\necho \"jq: $(command -v jq &>/dev/null && echo 'installed' || echo 'NOT INSTALLED')\"\necho \"axe: $(command -v axe &>/dev/null && echo 'installed (UI automation available)' || echo 'not installed (optional)')\"\n```\n\n### Project Analysis\n```bash\n# Count SwiftUI views\nfind . -name \"*.swift\" -exec grep -l \"struct.*View.*body\" {} \\; | wc -l\n\n# Check for potential issues\ngrep -r \"Timer\\|NotificationCenter\\.default\\.addObserver\" --include=\"*.swift\" | wc -l\n\n# iOS deployment target\ngrep -r \"IPHONEOS_DEPLOYMENT_TARGET\" *.xcodeproj/project.pbxproj 2>/dev/null | head -1\n```\n\n### Format as Dashboard\n\n```\nAxiom Project Status\n=====================\n\nEnvironment\n Xcodebuild processes: [count] [warning if > 3]\n Derived Data: [size] [warning if > 10GB]\n Simulators running: [count]\n jq: [installed/NOT INSTALLED]\n axe: [installed/not installed (optional)]\n\nProject Analysis\n SwiftUI views: [count]\n Potential memory patterns: [count] [warning if > 0]\n Deployment target: iOS [version]\n\nSuggested Actions\n [Based on findings, suggest 2-3 most relevant audits or skills]\n [If jq not installed: \"Install jq for reliable simulator control: brew install jq\"]\n [If axe installed: \"AXe UI automation available for simulator-tester agent\"]\n```\n"
35895
35902
  },
35896
35903
  "test-simulator": {
35897
35904
  "name": "test-simulator",
@@ -35951,7 +35958,7 @@
35951
35958
  "name": "build-fixer",
35952
35959
  "description": "Use this agent when the user mentions Xcode build failures, build errors, or environment issues. Automatically diagnoses and fixes Xcode build failures using environment-first diagnostics - saves 30+ minutes by checking zombie processes, Derived Data, SPM cache, and simulator state before code investigation.\n\n<example>\nuser: \"My build is failing with BUILD FAILED but no error details\"\nassistant: [Automatically launches build-fixer agent]\n</example>\n\n<example>\nuser: \"Xcode says 'No such module' after I updated packages\"\nassistant: [Launches build-fixer agent]\n</example>\n\n<example>\nuser: \"Tests passed yesterday but now they're failing and I haven't changed anything\"\nassistant: [Launches build-fixer agent]\n</example>\n\n<example>\nuser: \"My app builds but it's running old code\"\nassistant: [Launches build-fixer agent]\n</example>\n\n<example>\nuser: \"Getting 'Unable to boot simulator' error\"\nassistant: [Launches build-fixer agent]\n</example>\n\n<example>\nuser: \"Build sometimes succeeds, sometimes fails\"\nassistant: [Launches build-fixer agent]\n</example>\n\nExplicit command: Users can also invoke this agent directly with `/axiom:fix-build`\n",
35953
35960
  "model": "sonnet",
35954
- "content": "\n# Build Fixer Agent\n\nYou are an expert at diagnosing and fixing Xcode build failures using **environment-first diagnostics**.\n\n## Core Principle\n\n**80% of \"mysterious\" Xcode issues are environment problems (stale Derived Data, stuck simulators, zombie processes), not code bugs.**\n\nEnvironment cleanup takes 2-5 minutes. Code debugging for environment issues wastes 30-120 minutes.\n\n## Your Mission\n\nWhen the user reports a build failure:\n1. Run mandatory environment checks FIRST (never skip)\n2. Identify the specific issue type\n3. Apply the appropriate fix automatically\n4. Verify the fix worked\n5. Report results clearly\n\n## Mandatory First Steps\n\n**ALWAYS run these diagnostic commands FIRST** before any investigation:\n\n```bash\n# Optional: Detect CI/CD environment (adjusts diagnostics)\necho \"CI env: ${CI:-not set}, GitHub Actions: ${GITHUB_ACTIONS:-not set}\"\n\n# 0. Verify you're in the project directory\nls -la | grep -E \"\\.xcodeproj|\\.xcworkspace\"\n# If nothing shows, you're in wrong directory\n\n# 1. Check for zombie xcodebuild processes (with elapsed time)\nps -eo pid,etime,command | grep -E \"xcodebuild|Simulator\" | grep -v grep\n# Format: PID ELAPSED COMMAND\n# ELAPSED shows how long process has been running (e.g., 1:23:45 = 1 hour 23 min 45 sec)\n# Processes running > 30 minutes are likely zombies\n\n# 2. Check Derived Data size (>10GB = stale)\ndu -sh ~/Library/Developer/Xcode/DerivedData\n\n# 3. Check simulator states (stuck Booting?) - JSON for reliable parsing\nxcrun simctl list devices -j | jq '.devices | to_entries[] | .value[] | select(.state == \"Booted\" or .state == \"Booting\" or .state == \"Shutting Down\") | {name, udid, state}'\n```\n\n### Interpreting Results\n\n**Clean environment** (probably a code issue):\n- Project/workspace file found in current directory\n- 0-2 xcodebuild processes (all < 10 minutes old)\n- Derived Data < 10GB\n- No simulators stuck in Booting/Shutting Down\n\n**Environment problem** (apply fixes below):\n- No project/workspace file found (wrong directory!)\n- 10+ xcodebuild processes OR any process > 30 minutes old (zombies)\n- Derived Data > 10GB (stale cache)\n- Simulators stuck in Booting state\n- Any intermittent failures\n\n## Red Flags: Environment Not Code\n\nIf user mentions ANY of these, it's definitely an environment issue:\n- \"It works on my machine but not CI\"\n- \"Tests passed yesterday, failing today with no code changes\"\n- \"Build succeeds but old code executes\"\n- \"Build sometimes succeeds, sometimes fails\"\n- \"Simulator stuck at splash screen\"\n- \"Unable to install app\"\n\n## CI/CD Environment Detection\n\nWhen running in CI/CD environments, some diagnostics don't apply and fixes need adjustment.\n\n### Detecting CI/CD Context\n\nCheck for environment variables that indicate CI/CD:\n\n```bash\n# Check if running in CI/CD\nif [ -n \"$CI\" ] || [ -n \"$GITHUB_ACTIONS\" ] || [ -n \"$JENKINS_URL\" ] || [ -n \"$GITLAB_CI\" ]; then\n echo \"Running in CI/CD environment\"\nelse\n echo \"Running on local machine\"\nfi\n```\n\n### CI/CD-Specific Adjustments\n\n**When in CI/CD:**\n\n1. **Skip simulator checks** - CI runners often use headless simulators or none at all\n2. **Derived Data is fresh** - Most CI systems start with clean environment each run\n3. **Focus on:**\n - SPM cache issues (common in CI)\n - Package resolution failures\n - Xcode version mismatches\n - Missing provisioning profiles\n - Code signing issues\n\n**CI/CD-Specific Fixes:**\n\n```bash\n# For CI/CD package resolution issues\nrm -rf .build/\nrm -rf ~/Library/Caches/org.swift.swiftpm/\nxcodebuild -resolvePackageDependencies -scheme <ACTUAL_SCHEME_NAME>\n\n# For CI/CD build failures\nxcodebuild clean build -scheme <ACTUAL_SCHEME_NAME> \\\n -destination 'platform=iOS Simulator,name=iPhone 16' \\\n -allowProvisioningUpdates\n```\n\n**Downloading Simulator Runtimes (CI/CD Setup):**\n\nFor CI/CD environments that need specific simulator runtimes:\n\n```bash\n# Download iOS simulator runtime for current Xcode\nxcodebuild -downloadPlatform iOS\n\n# Download specific iOS version\nxcodebuild -downloadPlatform iOS -buildVersion 18.0\n\n# Download to specific location (for caching/sharing)\nxcodebuild -downloadPlatform iOS -exportPath ~/Downloads\n\n# Download universal variant (works on Intel + Apple Silicon)\nxcodebuild -downloadPlatform iOS -architectureVariant universal\n\n# Download all platforms at once\nxcodebuild -downloadAllPlatforms\n\n# After downloading, install with three steps:\n# 1. Select Xcode version\nxcode-select -s /Applications/Xcode.app\n\n# 2. Run first launch setup\nxcodebuild -runFirstLaunch\n\n# 3. Import platform (if downloaded to custom location)\nxcodebuild -importPlatform \"~/Downloads/iOS 18 Simulator Runtime.dmg\"\n\n# Check for newer components between releases\nxcodebuild -runFirstLaunch -checkForNewerComponents\n```\n\n**Use for**: CI/CD initial setup, missing simulator errors, version-specific testing\n\n**Red Flags for CI/CD:**\n- \"Works locally but fails in CI\" → Usually SPM cache or Xcode version mismatch\n- \"Intermittent CI failures\" → Network issues downloading packages\n- \"CI hangs indefinitely\" → Timeout on package resolution, check network\n\n### When to Report CI/CD Context\n\nIf running in CI/CD, mention this in your diagnosis:\n\n```markdown\n### Environment Context\n- Running in: [GitHub Actions/Jenkins/GitLab CI/Local]\n- Diagnostics adjusted for CI/CD environment\n```\n\n## Fix Workflows\n\n### 1. For Zombie Processes\n\nIf you see 10+ xcodebuild processes OR any processes with elapsed time > 30 minutes:\n\n```bash\n# First, review process ages from the check above\n# Look for ELAPSED times like 35:12 (35 min) or 1:23:45 (1 hr 23 min) - these are zombies\n\n# Kill all xcodebuild processes\nkillall -9 xcodebuild\n\n# Verify they're gone (with elapsed time)\nps -eo pid,etime,command | grep xcodebuild | grep -v grep\n\n# Also kill stuck Simulator processes if needed\nkillall -9 Simulator\n```\n\n### 2. For Stale Derived Data / \"No such module\" Errors\n\nIf Derived Data is large OR user reports \"No such module\" OR intermittent failures:\n\n```bash\n# First, find the scheme name\nxcodebuild -list\n\n# If xcodebuild -list fails, check:\n# 1. Are you in the project directory? (should have .xcodeproj or .xcworkspace)\n# 2. Run: ls -la | grep -E \"\\.xcodeproj|\\.xcworkspace\"\n# 3. If missing, cd to correct directory\n# 4. If .xcworkspace exists, use: xcodebuild -list -workspace YourApp.xcworkspace\n# 5. If .xcodeproj exists, use: xcodebuild -list -project YourApp.xcodeproj\n\n# Clean everything (use the actual scheme name from above)\nxcodebuild clean -scheme <ACTUAL_SCHEME_NAME>\nrm -rf ~/Library/Developer/Xcode/DerivedData/*\nrm -rf .build/ build/\n\n# Rebuild with appropriate destination\nxcodebuild build -scheme <ACTUAL_SCHEME_NAME> \\\n -destination 'platform=iOS Simulator,name=iPhone 16'\n```\n\n**CRITICAL**:\n- Use the actual scheme name from `xcodebuild -list`, not a placeholder\n- If `xcodebuild -list` fails, verify you're in the correct directory with a workspace/project file\n\n### 3. For SPM Cache Issues / \"No such module\" with Swift Packages\n\nIf user reports \"No such module\" with Swift Package Manager dependencies OR packages won't resolve:\n\n```bash\n# Clean SPM cache (this fixes 90% of SPM issues)\nrm -rf ~/Library/Caches/org.swift.swiftpm/\nrm -rf ~/Library/Developer/Xcode/DerivedData/*\nrm -rf .build/\n\n# Reset package resolution\nxcodebuild -resolvePackageDependencies -scheme <ACTUAL_SCHEME_NAME>\n\n# Verify packages resolved\nxcodebuild -list\n\n# Rebuild\nxcodebuild build -scheme <ACTUAL_SCHEME_NAME> \\\n -destination 'platform=iOS Simulator,name=iPhone 16'\n```\n\n**When to use this**:\n- \"No such module\" errors for Swift Package dependencies\n- Package resolution failures\n- \"Package.resolved\" conflicts\n- After switching git branches with different package versions\n\n### 4. For Simulator Issues\n\nIf user reports \"Unable to boot simulator\" or simulators stuck:\n\n```bash\n# Shutdown all simulators\nxcrun simctl shutdown all\n\n# List devices with JSON for reliable parsing\nxcrun simctl list devices -j | jq '.devices | to_entries[] | .value[] | select(.isAvailable == true) | {name, udid, state}'\n\n# Get UUID for a specific device (e.g., iPhone 16) using JSON\nUDID=$(xcrun simctl list devices -j | jq -r '.devices | to_entries[] | .value[] | select(.name | contains(\"iPhone 16\")) | select(.isAvailable == true) | .udid' | head -1)\n\nif [ -z \"$UDID\" ]; then\n echo \"No iPhone 16 simulator found. Available simulators:\"\n xcrun simctl list devices -j | jq '.devices | to_entries[] | .value[] | select(.isAvailable == true) | {name, udid}'\nelse\n echo \"iPhone 16 UUID: $UDID\"\n # Erase the stuck simulator using the extracted UUID\n xcrun simctl erase \"$UDID\"\nfi\n\n# Find and erase all simulators stuck in Booting state\nxcrun simctl list devices -j | jq -r '.devices | to_entries[] | .value[] | select(.state == \"Booting\") | .udid' | while read UDID; do\n echo \"Erasing stuck simulator: $UDID\"\n xcrun simctl erase \"$UDID\"\ndone\n\n# Nuclear option if nothing works\nkillall -9 Simulator\n```\n\n### 5. For Test Failures (No Code Changes)\n\nIf tests are failing but user hasn't changed code:\n\n```bash\n# Clean Derived Data first\nrm -rf ~/Library/Developer/Xcode/DerivedData/*\n\n# Run tests again\nxcodebuild test -scheme <ACTUAL_SCHEME_NAME> \\\n -destination 'platform=iOS Simulator,name=iPhone 16'\n```\n\n### 6. For Old Code Executing\n\nIf build succeeds but old code runs:\n\n```bash\n# This is ALWAYS a Derived Data issue\nrm -rf ~/Library/Developer/Xcode/DerivedData/*\n\n# Force clean rebuild\nxcodebuild clean build -scheme <ACTUAL_SCHEME_NAME>\n```\n\n## Decision Tree\n\nUse this to determine which fix to apply:\n\n```\nUser reports build failure\n↓\nRun mandatory checks (directory, processes, Derived Data, simulators)\n↓\nIdentify issue:\n├─ No project/workspace file → Report \"wrong directory\" to user\n├─ (following checks apply if directory verified)\n↓\n├─ 10+ xcodebuild processes OR any process > 30min → Kill zombie processes (§1)\n├─ Derived Data > 10GB → Clean Derived Data + rebuild (§2)\n├─ \"No such module\" (SPM) → Clean SPM cache + resolve packages (§3)\n├─ \"No such module\" (local) → Clean Derived Data + rebuild (§2)\n├─ Package resolution failures → Clean SPM cache (§3)\n├─ Intermittent failures → Clean Derived Data + rebuild (§2)\n├─ Old code executing → Clean Derived Data + rebuild (§6)\n├─ \"Unable to boot simulator\" → Shutdown/erase simulator (§4)\n├─ Tests failing (no code changes) → Clean + retest (§5)\n└─ All checks clean → Report \"environment is clean, likely code issue\"\n```\n\n## Output Format\n\nProvide a clear, structured report:\n\n```markdown\n## Build Failure Diagnosis Complete\n\n### Environment Context\n- Running in: [Local/GitHub Actions/Jenkins/GitLab CI/etc.]\n- CI/CD detected: [yes/no]\n\n### Environment Check Results\n- Project directory: [verified/not found]\n- Xcodebuild processes: [count] (oldest: [elapsed time]) (clean/zombie)\n- Derived Data size: [size] (clean/stale)\n- Simulator state: [status] (clean/stuck) (skip if CI/CD)\n\n### Issue Identified\n[Specific issue type]\n\n### Fix Applied\n1. [Command 1 with actual output]\n2. [Command 2 with actual output]\n3. [Command 3 with actual output]\n\n### Verification\n[Result of rebuild/retest - success or needs more work]\n\n### Next Steps\n[What user should do next]\n```\n\n## Audit Guidelines\n\n1. **ALWAYS run the 4 mandatory checks first** - never skip (directory, processes, Derived Data, simulators)\n2. **Detect CI/CD context** - check for CI environment variables and adjust diagnostics\n3. **Check process elapsed time** - processes > 30 minutes are zombies, kill them\n4. **Use actual scheme names** from `xcodebuild -list` - never use placeholders\n5. **Handle xcodebuild -list failures** - verify directory and provide recovery steps\n6. **Show command output** - don't just say \"I ran X\", show the result\n7. **Verify fixes worked** - run the build/test again to confirm\n8. **If fix doesn't work** - escalate to user with specific next steps\n\n## When to Stop and Report\n\nIf you encounter:\n- Permission denied errors → Report to user\n- Xcode not installed → Report to user\n- `xcodebuild -list` fails (no workspace/project found) → Report to user, verify correct directory\n- Network issues preventing package resolution → Report to user\n- Workspace file corruption → Report to user (needs manual intervention)\n- All environment checks clean + fix attempts fail → Report \"environment is clean, recommend systematic code debugging\"\n\n## Error Pattern Recognition\n\nCommon errors and their fixes:\n\n| Error Message | Fix | Section |\n|---------------|-----|---------|\n| `xcodebuild: error: Could not resolve package dependencies` | Wrong directory or Clean SPM cache | §0/§3 |\n| `The workspace named \"X\" does not contain a scheme` | Wrong directory, verify location | §0 |\n| `BUILD FAILED` (no details) | Clean Derived Data | §2 |\n| `No such module: <name>` (SPM package) | Clean SPM cache + resolve | §3 |\n| `No such module: <name>` (local) | Clean Derived Data | §2 |\n| `Package resolution failed` | Clean SPM cache | §3 |\n| `Unable to boot simulator` | Erase simulator (skip in CI/CD) | §4 |\n| `Command PhaseScriptExecution failed` | Clean Derived Data | §2 |\n| `Multiple commands produce` | Check for duplicate files (manual) | - |\n| Old code executing | Delete Derived Data | §6 |\n| Tests hang indefinitely | Reboot simulator (or timeout in CI/CD) | §4 |\n| `Works locally but fails in CI` | SPM cache or Xcode version mismatch | §3/CI |\n| `Intermittent CI failures` | Network issues, retry package download | CI |\n\n## Resources\n\n**WWDC**: 2019-413 (Testing in Xcode)\n\n**Docs**: /xcode/downloading-and-installing-additional-xcode-components, /xcode/troubleshooting-simulator\n\n**Tech Notes**: TN2339 (Building from Command Line with Xcode)\n\n## Related\n\nFor test execution: `test-runner` agent\nFor test debugging: `test-debugger` agent\nFor simulator testing: `simulator-tester` agent\nFor SPM conflicts: `spm-conflict-resolver` agent\n"
35961
+ "content": "\n# Build Fixer Agent\n\nYou are an expert at diagnosing and fixing Xcode build failures using **environment-first diagnostics**.\n\n## Core Principle\n\n**80% of \"mysterious\" Xcode issues are environment problems (stale Derived Data, stuck simulators, zombie processes), not code bugs.**\n\nEnvironment cleanup takes 2-5 minutes. Code debugging for environment issues wastes 30-120 minutes.\n\n## Your Mission\n\nWhen the user reports a build failure:\n1. Run mandatory environment checks FIRST (never skip)\n2. Identify the specific issue type\n3. Apply the appropriate fix automatically\n4. Verify the fix worked\n5. Report results clearly\n\n## Mandatory First Steps\n\n**ALWAYS run these diagnostic commands FIRST** before any investigation:\n\n```bash\n# Optional: Detect CI/CD environment (adjusts diagnostics)\necho \"CI env: ${CI:-not set}, GitHub Actions: ${GITHUB_ACTIONS:-not set}\"\n\n# 0. Verify you're in the project directory\nls -la | grep -E \"\\.xcodeproj|\\.xcworkspace\"\n# If nothing shows, you're in wrong directory\n\n# 1. Check for zombie xcodebuild processes (with elapsed time)\n# \\bxcodebuild\\b — word-bounded so it does not also list the long-running\n# `xcodebuildmcp` MCP server (a node process), which is not a zombie build\nps -eo pid,etime,command | grep -E '\\bxcodebuild\\b|Simulator' | grep -v grep\n# Format: PID ELAPSED COMMAND\n# ELAPSED shows how long process has been running (e.g., 1:23:45 = 1 hour 23 min 45 sec)\n# Processes running > 30 minutes are likely zombies\n\n# 2. Check Derived Data size (>10GB = stale)\ndu -sh ~/Library/Developer/Xcode/DerivedData\n\n# 3. Check simulator states (stuck Booting?) - JSON for reliable parsing\nxcrun simctl list devices -j | jq '.devices | to_entries[] | .value[] | select(.state == \"Booted\" or .state == \"Booting\" or .state == \"Shutting Down\") | {name, udid, state}'\n```\n\n### Interpreting Results\n\n**Clean environment** (probably a code issue):\n- Project/workspace file found in current directory\n- 0-2 xcodebuild processes (all < 10 minutes old)\n- Derived Data < 10GB\n- No simulators stuck in Booting/Shutting Down\n\n**Environment problem** (apply fixes below):\n- No project/workspace file found (wrong directory!)\n- 10+ xcodebuild processes OR any process > 30 minutes old (zombies)\n- Derived Data > 10GB (stale cache)\n- Simulators stuck in Booting state\n- Any intermittent failures\n\n## Red Flags: Environment Not Code\n\nIf user mentions ANY of these, it's definitely an environment issue:\n- \"It works on my machine but not CI\"\n- \"Tests passed yesterday, failing today with no code changes\"\n- \"Build succeeds but old code executes\"\n- \"Build sometimes succeeds, sometimes fails\"\n- \"Simulator stuck at splash screen\"\n- \"Unable to install app\"\n\n## CI/CD Environment Detection\n\nWhen running in CI/CD environments, some diagnostics don't apply and fixes need adjustment.\n\n### Detecting CI/CD Context\n\nCheck for environment variables that indicate CI/CD:\n\n```bash\n# Check if running in CI/CD\nif [ -n \"$CI\" ] || [ -n \"$GITHUB_ACTIONS\" ] || [ -n \"$JENKINS_URL\" ] || [ -n \"$GITLAB_CI\" ]; then\n echo \"Running in CI/CD environment\"\nelse\n echo \"Running on local machine\"\nfi\n```\n\n### CI/CD-Specific Adjustments\n\n**When in CI/CD:**\n\n1. **Skip simulator checks** - CI runners often use headless simulators or none at all\n2. **Derived Data is fresh** - Most CI systems start with clean environment each run\n3. **Focus on:**\n - SPM cache issues (common in CI)\n - Package resolution failures\n - Xcode version mismatches\n - Missing provisioning profiles\n - Code signing issues\n\n**CI/CD-Specific Fixes:**\n\n```bash\n# For CI/CD package resolution issues\nrm -rf .build/\nrm -rf ~/Library/Caches/org.swift.swiftpm/\nxcodebuild -resolvePackageDependencies -scheme <ACTUAL_SCHEME_NAME>\n\n# For CI/CD build failures\nxcodebuild clean build -scheme <ACTUAL_SCHEME_NAME> \\\n -destination 'platform=iOS Simulator,name=iPhone 16' \\\n -allowProvisioningUpdates\n```\n\n**Downloading Simulator Runtimes (CI/CD Setup):**\n\nFor CI/CD environments that need specific simulator runtimes:\n\n```bash\n# Download iOS simulator runtime for current Xcode\nxcodebuild -downloadPlatform iOS\n\n# Download specific iOS version\nxcodebuild -downloadPlatform iOS -buildVersion 18.0\n\n# Download to specific location (for caching/sharing)\nxcodebuild -downloadPlatform iOS -exportPath ~/Downloads\n\n# Download universal variant (works on Intel + Apple Silicon)\nxcodebuild -downloadPlatform iOS -architectureVariant universal\n\n# Download all platforms at once\nxcodebuild -downloadAllPlatforms\n\n# After downloading, install with three steps:\n# 1. Select Xcode version\nxcode-select -s /Applications/Xcode.app\n\n# 2. Run first launch setup\nxcodebuild -runFirstLaunch\n\n# 3. Import platform (if downloaded to custom location)\nxcodebuild -importPlatform \"~/Downloads/iOS 18 Simulator Runtime.dmg\"\n\n# Check for newer components between releases\nxcodebuild -runFirstLaunch -checkForNewerComponents\n```\n\n**Use for**: CI/CD initial setup, missing simulator errors, version-specific testing\n\n**Red Flags for CI/CD:**\n- \"Works locally but fails in CI\" → Usually SPM cache or Xcode version mismatch\n- \"Intermittent CI failures\" → Network issues downloading packages\n- \"CI hangs indefinitely\" → Timeout on package resolution, check network\n\n### When to Report CI/CD Context\n\nIf running in CI/CD, mention this in your diagnosis:\n\n```markdown\n### Environment Context\n- Running in: [GitHub Actions/Jenkins/GitLab CI/Local]\n- Diagnostics adjusted for CI/CD environment\n```\n\n## Fix Workflows\n\n### 1. For Zombie Processes\n\nIf you see 10+ xcodebuild processes OR any processes with elapsed time > 30 minutes:\n\n```bash\n# First, review process ages from the check above\n# Look for ELAPSED times like 35:12 (35 min) or 1:23:45 (1 hr 23 min) - these are zombies\n\n# Kill all xcodebuild processes\nkillall -9 xcodebuild\n\n# Verify they're gone (with elapsed time). -w xcodebuild ignores `xcodebuildmcp`.\nps -eo pid,etime,command | grep -w xcodebuild | grep -v grep\n\n# Also kill stuck Simulator processes if needed\nkillall -9 Simulator\n```\n\n### 2. For Stale Derived Data / \"No such module\" Errors\n\nIf Derived Data is large OR user reports \"No such module\" OR intermittent failures:\n\n```bash\n# First, find the scheme name\nxcodebuild -list\n\n# If xcodebuild -list fails, check:\n# 1. Are you in the project directory? (should have .xcodeproj or .xcworkspace)\n# 2. Run: ls -la | grep -E \"\\.xcodeproj|\\.xcworkspace\"\n# 3. If missing, cd to correct directory\n# 4. If .xcworkspace exists, use: xcodebuild -list -workspace YourApp.xcworkspace\n# 5. If .xcodeproj exists, use: xcodebuild -list -project YourApp.xcodeproj\n\n# Clean everything (use the actual scheme name from above)\nxcodebuild clean -scheme <ACTUAL_SCHEME_NAME>\nrm -rf ~/Library/Developer/Xcode/DerivedData/*\nrm -rf .build/ build/\n\n# Rebuild with appropriate destination\nxcodebuild build -scheme <ACTUAL_SCHEME_NAME> \\\n -destination 'platform=iOS Simulator,name=iPhone 16'\n```\n\n**CRITICAL**:\n- Use the actual scheme name from `xcodebuild -list`, not a placeholder\n- If `xcodebuild -list` fails, verify you're in the correct directory with a workspace/project file\n\n### 3. For SPM Cache Issues / \"No such module\" with Swift Packages\n\nIf user reports \"No such module\" with Swift Package Manager dependencies OR packages won't resolve:\n\n```bash\n# Clean SPM cache (this fixes 90% of SPM issues)\nrm -rf ~/Library/Caches/org.swift.swiftpm/\nrm -rf ~/Library/Developer/Xcode/DerivedData/*\nrm -rf .build/\n\n# Reset package resolution\nxcodebuild -resolvePackageDependencies -scheme <ACTUAL_SCHEME_NAME>\n\n# Verify packages resolved\nxcodebuild -list\n\n# Rebuild\nxcodebuild build -scheme <ACTUAL_SCHEME_NAME> \\\n -destination 'platform=iOS Simulator,name=iPhone 16'\n```\n\n**When to use this**:\n- \"No such module\" errors for Swift Package dependencies\n- Package resolution failures\n- \"Package.resolved\" conflicts\n- After switching git branches with different package versions\n\n### 4. For Simulator Issues\n\nIf user reports \"Unable to boot simulator\" or simulators stuck:\n\n```bash\n# Shutdown all simulators\nxcrun simctl shutdown all\n\n# List devices with JSON for reliable parsing\nxcrun simctl list devices -j | jq '.devices | to_entries[] | .value[] | select(.isAvailable == true) | {name, udid, state}'\n\n# Get UUID for a specific device (e.g., iPhone 16) using JSON\nUDID=$(xcrun simctl list devices -j | jq -r '.devices | to_entries[] | .value[] | select(.name | contains(\"iPhone 16\")) | select(.isAvailable == true) | .udid' | head -1)\n\nif [ -z \"$UDID\" ]; then\n echo \"No iPhone 16 simulator found. Available simulators:\"\n xcrun simctl list devices -j | jq '.devices | to_entries[] | .value[] | select(.isAvailable == true) | {name, udid}'\nelse\n echo \"iPhone 16 UUID: $UDID\"\n # Erase the stuck simulator using the extracted UUID\n xcrun simctl erase \"$UDID\"\nfi\n\n# Find and erase all simulators stuck in Booting state\nxcrun simctl list devices -j | jq -r '.devices | to_entries[] | .value[] | select(.state == \"Booting\") | .udid' | while read UDID; do\n echo \"Erasing stuck simulator: $UDID\"\n xcrun simctl erase \"$UDID\"\ndone\n\n# Nuclear option if nothing works\nkillall -9 Simulator\n```\n\n### 5. For Test Failures (No Code Changes)\n\nIf tests are failing but user hasn't changed code:\n\n```bash\n# Clean Derived Data first\nrm -rf ~/Library/Developer/Xcode/DerivedData/*\n\n# Run tests again\nxcodebuild test -scheme <ACTUAL_SCHEME_NAME> \\\n -destination 'platform=iOS Simulator,name=iPhone 16'\n```\n\n### 6. For Old Code Executing\n\nIf build succeeds but old code runs:\n\n```bash\n# This is ALWAYS a Derived Data issue\nrm -rf ~/Library/Developer/Xcode/DerivedData/*\n\n# Force clean rebuild\nxcodebuild clean build -scheme <ACTUAL_SCHEME_NAME>\n```\n\n## Decision Tree\n\nUse this to determine which fix to apply:\n\n```\nUser reports build failure\n↓\nRun mandatory checks (directory, processes, Derived Data, simulators)\n↓\nIdentify issue:\n├─ No project/workspace file → Report \"wrong directory\" to user\n├─ (following checks apply if directory verified)\n↓\n├─ 10+ xcodebuild processes OR any process > 30min → Kill zombie processes (§1)\n├─ Derived Data > 10GB → Clean Derived Data + rebuild (§2)\n├─ \"No such module\" (SPM) → Clean SPM cache + resolve packages (§3)\n├─ \"No such module\" (local) → Clean Derived Data + rebuild (§2)\n├─ Package resolution failures → Clean SPM cache (§3)\n├─ Intermittent failures → Clean Derived Data + rebuild (§2)\n├─ Old code executing → Clean Derived Data + rebuild (§6)\n├─ \"Unable to boot simulator\" → Shutdown/erase simulator (§4)\n├─ Tests failing (no code changes) → Clean + retest (§5)\n└─ All checks clean → Report \"environment is clean, likely code issue\"\n```\n\n## Output Format\n\nProvide a clear, structured report:\n\n```markdown\n## Build Failure Diagnosis Complete\n\n### Environment Context\n- Running in: [Local/GitHub Actions/Jenkins/GitLab CI/etc.]\n- CI/CD detected: [yes/no]\n\n### Environment Check Results\n- Project directory: [verified/not found]\n- Xcodebuild processes: [count] (oldest: [elapsed time]) (clean/zombie)\n- Derived Data size: [size] (clean/stale)\n- Simulator state: [status] (clean/stuck) (skip if CI/CD)\n\n### Issue Identified\n[Specific issue type]\n\n### Fix Applied\n1. [Command 1 with actual output]\n2. [Command 2 with actual output]\n3. [Command 3 with actual output]\n\n### Verification\n[Result of rebuild/retest - success or needs more work]\n\n### Next Steps\n[What user should do next]\n```\n\n## Audit Guidelines\n\n1. **ALWAYS run the 4 mandatory checks first** - never skip (directory, processes, Derived Data, simulators)\n2. **Detect CI/CD context** - check for CI environment variables and adjust diagnostics\n3. **Check process elapsed time** - processes > 30 minutes are zombies, kill them\n4. **Use actual scheme names** from `xcodebuild -list` - never use placeholders\n5. **Handle xcodebuild -list failures** - verify directory and provide recovery steps\n6. **Show command output** - don't just say \"I ran X\", show the result\n7. **Verify fixes worked** - run the build/test again to confirm\n8. **If fix doesn't work** - escalate to user with specific next steps\n\n## When to Stop and Report\n\nIf you encounter:\n- Permission denied errors → Report to user\n- Xcode not installed → Report to user\n- `xcodebuild -list` fails (no workspace/project found) → Report to user, verify correct directory\n- Network issues preventing package resolution → Report to user\n- Workspace file corruption → Report to user (needs manual intervention)\n- All environment checks clean + fix attempts fail → Report \"environment is clean, recommend systematic code debugging\"\n\n## Error Pattern Recognition\n\nCommon errors and their fixes:\n\n| Error Message | Fix | Section |\n|---------------|-----|---------|\n| `xcodebuild: error: Could not resolve package dependencies` | Wrong directory or Clean SPM cache | §0/§3 |\n| `The workspace named \"X\" does not contain a scheme` | Wrong directory, verify location | §0 |\n| `BUILD FAILED` (no details) | Clean Derived Data | §2 |\n| `No such module: <name>` (SPM package) | Clean SPM cache + resolve | §3 |\n| `No such module: <name>` (local) | Clean Derived Data | §2 |\n| `Package resolution failed` | Clean SPM cache | §3 |\n| `Unable to boot simulator` | Erase simulator (skip in CI/CD) | §4 |\n| `Command PhaseScriptExecution failed` | Clean Derived Data | §2 |\n| `Multiple commands produce` | Check for duplicate files (manual) | - |\n| Old code executing | Delete Derived Data | §6 |\n| Tests hang indefinitely | Reboot simulator (or timeout in CI/CD) | §4 |\n| `Works locally but fails in CI` | SPM cache or Xcode version mismatch | §3/CI |\n| `Intermittent CI failures` | Network issues, retry package download | CI |\n\n## Resources\n\n**WWDC**: 2019-413 (Testing in Xcode)\n\n**Docs**: /xcode/downloading-and-installing-additional-xcode-components, /xcode/troubleshooting-simulator\n\n**Tech Notes**: TN2339 (Building from Command Line with Xcode)\n\n## Related\n\nFor test execution: `test-runner` agent\nFor test debugging: `test-debugger` agent\nFor simulator testing: `simulator-tester` agent\nFor SPM conflicts: `spm-conflict-resolver` agent\n"
35955
35962
  },
35956
35963
  "build-optimizer": {
35957
35964
  "name": "build-optimizer",
@@ -36690,8 +36697,8 @@
36690
36697
  4,
36691
36698
  22,
36692
36699
  6,
36693
- 123,
36694
- 370
36700
+ 131,
36701
+ 378
36695
36702
  ],
36696
36703
  "13": [
36697
36704
  4,
@@ -38077,8 +38084,8 @@
38077
38084
  3.990476190476189,
38078
38085
  13.971428571428572,
38079
38086
  4.328571428571427,
38080
- 43.94761904761905,
38081
- 612.3999999999999
38087
+ 43.98571428571429,
38088
+ 612.4380952380951
38082
38089
  ],
38083
38090
  "storedFields": {
38084
38091
  "0": {
@@ -47342,6 +47349,17 @@
47342
47349
  }
47343
47350
  }
47344
47351
  ],
47352
+ [
47353
+ "xcodebuildmcp",
47354
+ {
47355
+ "3": {
47356
+ "12": 2
47357
+ },
47358
+ "4": {
47359
+ "12": 2
47360
+ }
47361
+ }
47362
+ ],
47345
47363
  [
47346
47364
  "xcodebuild",
47347
47365
  {
@@ -47351,7 +47369,7 @@
47351
47369
  "4": {
47352
47370
  "8": 14,
47353
47371
  "9": 8,
47354
- "12": 16,
47372
+ "12": 15,
47355
47373
  "37": 2,
47356
47374
  "98": 2,
47357
47375
  "146": 5,
@@ -76796,6 +76814,17 @@
76796
76814
  }
76797
76815
  }
76798
76816
  ],
76817
+ [
76818
+ "bxcodebuild",
76819
+ {
76820
+ "3": {
76821
+ "12": 1
76822
+ },
76823
+ "4": {
76824
+ "12": 2
76825
+ }
76826
+ }
76827
+ ],
76799
76828
  [
76800
76829
  "bytecode",
76801
76830
  {
@@ -79656,26 +79685,6 @@
79656
79685
  }
79657
79686
  }
79658
79687
  ],
79659
- [
79660
- "bounded",
79661
- {
79662
- "3": {
79663
- "189": 1
79664
- },
79665
- "4": {
79666
- "15": 1,
79667
- "60": 1,
79668
- "67": 2,
79669
- "80": 4,
79670
- "127": 1,
79671
- "131": 1,
79672
- "171": 2,
79673
- "189": 2,
79674
- "190": 4,
79675
- "200": 1
79676
- }
79677
- }
79678
- ],
79679
79688
  [
79680
79689
  "boundaries",
79681
79690
  {
@@ -79751,6 +79760,28 @@
79751
79760
  }
79752
79761
  }
79753
79762
  ],
79763
+ [
79764
+ "bounded",
79765
+ {
79766
+ "3": {
79767
+ "12": 1,
79768
+ "189": 1
79769
+ },
79770
+ "4": {
79771
+ "12": 1,
79772
+ "15": 1,
79773
+ "60": 1,
79774
+ "67": 2,
79775
+ "80": 4,
79776
+ "127": 1,
79777
+ "131": 1,
79778
+ "171": 2,
79779
+ "189": 2,
79780
+ "190": 4,
79781
+ "200": 1
79782
+ }
79783
+ }
79784
+ ],
79754
79785
  [
79755
79786
  "bound",
79756
79787
  {
@@ -189978,10 +190009,12 @@
189978
190009
  "123": 1
189979
190010
  },
189980
190011
  "3": {
190012
+ "12": 1,
189981
190013
  "123": 1
189982
190014
  },
189983
190015
  "4": {
189984
190016
  "7": 1,
190017
+ "12": 1,
189985
190018
  "44": 1,
189986
190019
  "46": 1,
189987
190020
  "57": 1,
@@ -197455,9 +197488,13 @@
197455
197488
  [
197456
197489
  "skips",
197457
197490
  {
197491
+ "3": {
197492
+ "12": 2
197493
+ },
197458
197494
  "4": {
197459
197495
  "2": 2,
197460
197496
  "10": 1,
197497
+ "12": 2,
197461
197498
  "116": 1,
197462
197499
  "122": 1,
197463
197500
  "125": 1,
@@ -200827,12 +200864,16 @@
200827
200864
  "10": 1,
200828
200865
  "11": 1
200829
200866
  },
200867
+ "3": {
200868
+ "12": 1
200869
+ },
200830
200870
  "4": {
200831
200871
  "0": 1,
200832
200872
  "4": 1,
200833
200873
  "8": 2,
200834
200874
  "10": 1,
200835
200875
  "11": 3,
200876
+ "12": 1,
200836
200877
  "15": 1,
200837
200878
  "19": 1,
200838
200879
  "21": 2,
@@ -209859,6 +209900,7 @@
209859
209900
  "207": 1
209860
209901
  },
209861
209902
  "3": {
209903
+ "12": 2,
209862
209904
  "86": 2,
209863
209905
  "118": 3,
209864
209906
  "144": 1
@@ -209868,6 +209910,7 @@
209868
209910
  "4": 5,
209869
209911
  "5": 4,
209870
209912
  "8": 1,
209913
+ "12": 2,
209871
209914
  "18": 11,
209872
209915
  "19": 13,
209873
209916
  "20": 12,
@@ -244271,6 +244314,7 @@
244271
244314
  "162": 1
244272
244315
  },
244273
244316
  "3": {
244317
+ "12": 2,
244274
244318
  "160": 2,
244275
244319
  "207": 1,
244276
244320
  "208": 3,
@@ -244278,6 +244322,7 @@
244278
244322
  },
244279
244323
  "4": {
244280
244324
  "7": 3,
244325
+ "12": 2,
244281
244326
  "156": 6,
244282
244327
  "160": 16,
244283
244328
  "162": 5,
@@ -286267,7 +286312,17 @@
286267
286312
  "check",
286268
286313
  "processes",
286269
286314
  "zombie",
286270
- "xcodebuild",
286315
+ "xcodebuild"
286316
+ ],
286317
+ "\\bxcodebuild\\b is word-bounded so it skips the `xcodebuildmcp` MCP server": [
286318
+ "bxcodebuild",
286319
+ "word",
286320
+ "bounded",
286321
+ "so",
286322
+ "skips",
286323
+ "xcodebuildmcp",
286324
+ "mcp",
286325
+ "server",
286271
286326
  "ps",
286272
286327
  "aux",
286273
286328
  "grep",
@@ -286440,11 +286495,15 @@
286440
286495
  "cautiously",
286441
286496
  "killall"
286442
286497
  ],
286443
- "Check they're gone": [
286498
+ "Check they're gone (-w skips the `xcodebuildmcp` MCP server)": [
286444
286499
  "check",
286445
286500
  "they",
286446
286501
  "re",
286447
286502
  "gone",
286503
+ "skips",
286504
+ "xcodebuildmcp",
286505
+ "mcp",
286506
+ "server",
286448
286507
  "ps",
286449
286508
  "aux",
286450
286509
  "grep",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "axiom-mcp",
3
- "version": "3.3.3",
3
+ "version": "3.3.4",
4
4
  "description": "MCP server for Axiom development skills, agents, and commands",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",