ClawKit Logo
ClawKitReliability Toolkit
Back to Registry
Official Verified

xcode-build-analyzer

Analyze Xcode build logs — timing, warnings, errors, slow compiles, and build history from DerivedData.

skill-install — Terminal

Install via CLI (Recommended)

clawhub install openclaw/skills/skills/alexissan/xcode-build-analyzer
Or

Xcode Build Analyzer

Analyze Xcode build performance, warnings, errors, and history by reading DerivedData build logs on macOS.

Requirements

  • macOS only — reads from ~/Library/Developer/Xcode/DerivedData/
  • Xcode must be installed and have built at least one project
  • plutil, gunzip, sqlite3 (all pre-installed on macOS)
  • Full Disk Access may be required depending on the process running queries

Key paths

DERIVED_DATA=~/Library/Developer/Xcode/DerivedData

Each project has a folder named <ProjectName>-<hash> containing:

  • info.plist — project workspace path and last accessed date
  • Logs/Build/LogStoreManifest.plist — structured index of all builds (timing, status, warnings, errors)
  • Logs/Build/*.xcactivitylog — gzip-compressed SLF build logs with per-step timing and full compiler output

Important: All queries are read-only. Never modify DerivedData contents.

List all projects in DerivedData

for dir in ~/Library/Developer/Xcode/DerivedData/*-*; do
  [ -d "$dir" ] || continue
  NAME="$(basename "$dir" | sed 's/-[a-z]*$//')"
  WORKSPACE="$(plutil -extract WorkspacePath raw "$dir/info.plist" 2>/dev/null || echo "unknown")"
  LAST_ACCESS="$(plutil -extract LastAccessedDate raw "$dir/info.plist" 2>/dev/null || echo "unknown")"
  echo "$NAME | $WORKSPACE | Last accessed: $LAST_ACCESS"
done

Build history for a project

Parse the LogStoreManifest.plist for structured build data. This is the most reliable source — it contains timing, error/warning counts, and scheme info for every build without needing to decompress logs.

# Replace PROJECT_DIR with the project's DerivedData folder
# To find it: ls ~/Library/Developer/Xcode/DerivedData/ | grep -i "ProjectName"
PROJECT_DIR="$(ls -d ~/Library/Developer/Xcode/DerivedData/PROJECT_NAME-* 2>/dev/null | head -1)"
MANIFEST="$PROJECT_DIR/Logs/Build/LogStoreManifest.plist"

plutil -convert json -o - "$MANIFEST" 2>/dev/null | python3 -c "
import json, sys
from datetime import datetime, timezone, timedelta

data = json.load(sys.stdin)
EPOCH = datetime(2001, 1, 1, tzinfo=timezone.utc)
builds = []

for uid, log in data.get('logs', {}).items():
    start = log.get('timeStartedRecording', 0)
    stop = log.get('timeStoppedRecording', 0)
    duration = stop - start
    obs = log.get('primaryObservable', {})
    dt = EPOCH + timedelta(seconds=start)
    builds.append({
        'date': dt.strftime('%Y-%m-%d %H:%M'),
        'duration': f'{duration:.1f}s',
        'scheme': log.get('schemeIdentifier-schemeName', '?'),
        'status': obs.get('highLevelStatus', '?'),
        'errors': obs.get('totalNumberOfErrors', 0),
        'warnings': obs.get('totalNumberOfWarnings', 0),
        'analyzer': obs.get('totalNumberOfAnalyzerIssues', 0),
        'file': log.get('fileName', ''),
    })

Metadata

Author@alexissan
Stars4473
Views0
Updated2026-05-01
View Author Profile
AI Skill Finder

Not sure this is the right skill?

Describe what you want to build — we'll match you to the best skill from 16,000+ options.

Find the right skill
Add to Configuration

Paste this into your clawhub.json to enable this plugin.

{
  "plugins": {
    "official-alexissan-xcode-build-analyzer": {
      "enabled": true,
      "auto_update": true
    }
  }
}
Safety NoteClawKit audits metadata but not runtime behavior. Use with caution.