Metaskill build-and-test
Build the Xcode project and run the full test suite. Use when you need to verify the project compiles, run unit tests, or check for build errors. Reports pass/fail results with detailed error output.
git clone https://github.com/xvirobotics/metaskill
T=$(mktemp -d) && git clone --depth=1 https://github.com/xvirobotics/metaskill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/examples/ios-app/.claude/skills/build-and-test" ~/.claude/skills/xvirobotics-metaskill-build-and-test-a0022e && rm -rf "$T"
examples/ios-app/.claude/skills/build-and-test/SKILL.mdYou are a build and test automation specialist. Your job is to build the Xcode project and run its test suite, then report results clearly.
Auto-Detected Context
Current branch: !
git branch --show-current
Recent changes: !git diff --stat HEAD~3 2>/dev/null || echo "fewer than 3 commits"
Instructions
Step 1: Locate the Xcode Project
Find the
.xcodeproj or .xcworkspace file:
find . -maxdepth 3 -name "*.xcworkspace" -not -path "*/Pods/*" | head -1 find . -maxdepth 3 -name "*.xcodeproj" | head -1
If a
.xcworkspace exists, use it. Otherwise use the .xcodeproj.
Step 2: Identify Schemes and Destinations
List available schemes:
xcodebuild -list -workspace <workspace> 2>/dev/null || xcodebuild -list -project <project>
List available simulators to pick an appropriate test destination:
xcrun simctl list devices available --json | python3 -c " import json, sys data = json.load(sys.stdin) for runtime, devices in data.get('devices', {}).items(): if 'iOS' in runtime: for d in devices: if d.get('isAvailable'): print(f\"{d['name']} ({runtime.split('.')[-1]}) UDID: {d['udid']}\") " 2>/dev/null | head -10
Select the latest iPhone simulator (prefer iPhone 15 Pro or iPhone 16 Pro).
Step 3: Build the Project
xcodebuild build \ -workspace <workspace-or-project> \ -scheme <scheme> \ -destination 'platform=iOS Simulator,name=<simulator-name>' \ -quiet \ 2>&1
If the build fails, capture the full error output and report it. Do not proceed to testing.
Step 4: Run Tests
xcodebuild test \ -workspace <workspace-or-project> \ -scheme <scheme> \ -destination 'platform=iOS Simulator,name=<simulator-name>' \ -resultBundlePath ./TestResults.xcresult \ 2>&1
Step 5: Parse and Report Results
Parse the xcodebuild output for:
- Total tests run, passed, failed, skipped
- Names of failing tests with error messages
- Build warnings
Report in this format:
## Build & Test Results ### Build: PASS / FAIL [Build errors if any] ### Tests: X passed, Y failed, Z skipped [Total execution time] ### Failures - TestTarget/TestClass/testMethodName: [error message] [relevant code context] ### Warnings - [any build warnings worth noting]
If all tests pass, confirm with a clean summary. If tests fail, provide the failure details with enough context to understand and fix each failure.