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.
Scanned 9/8/2026
Install to Claude Code
npx -y skills add xvirobotics/metaskill --skill build-and-test --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Build And Test?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/xvirobotics-build-and-test-metaskill)More formats (shields.io, HTML) on the badges page.
---
name: build-and-test
description: "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."
user-invocable: true
context: fork
allowed-tools: Bash, Read, Grep
---
You 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:
```bash
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:
```bash
xcodebuild -list -workspace <workspace> 2>/dev/null || xcodebuild -list -project <project>
```
List available simulators to pick an appropriate test destination:
```bash
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
```bash
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
```bash
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.

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!