Configures Claude Code hooks and Codex hooks.json/notify. Use when adding PreToolUse guards, Stop hooks, managed hooks, format-on-save, preflight, audits, or worktree/budget hooks.
日本語の概要は準備中です。原文の説明を表示しています。
Guides iOS testing with XCTest, XCUITest, Swift Testing, simctl, and xcresult. Use when choosing destinations, controlling flakes, or parsing test artifacts for native apps.
インストールする前に、エージェントに与えられる指示の中身を確認できます。
High-signal iOS test execution and flake control for XCTest, XCUITest, Swift Testing, xcodebuild, xcresult, and simctl.
Pair this skill with software-ios-native when the work is part of a native iOS rewrite or a Codex / Claude Code implementation loop.
Core docs:
| Need | Go to |
|---|---|
| Run the iOS test workflow | ## Workflow |
| Load current defaults and command patterns | ## Defaults and ## xcodebuild Patterns |
| Control flakes and destinations | ## Flake Control |
| Load templates and references | ## Navigation |
xcresult artifacts always enabled.-workspace or -project-scheme and optional -testPlanxcresult, coverage, screenshots, logs, diagnostics| Command | Purpose |
|---|---|
xcodebuild -list -workspace MyApp.xcworkspace | List schemes |
xcodebuild -scheme MyApp -showdestinations | Show valid destinations |
xcodebuild -scheme MyApp -showTestPlans | Show available test plans |
xcrun xctrace list devices | List physical and simulator devices |
xcrun simctl list devices available | List available simulators |
xcrun simctl boot "<simulator-name>" | Boot a simulator |
xcrun simctl bootstatus booted -b | Wait for boot completion |
xcrun simctl uninstall booted <bundle-id> | Remove stale installed app before a smoke pass |
Persist booted UDID to .simulator-udid (gitignored) in the select-simulator.sh step | Stop scripts read this file back and call xcrun simctl shutdown <UDID> plus xcrun simctl terminate <UDID> <bundle-id> — terminating exactly the simulator that was booted. Replaces pkill -f Simulator, which shotguns unrelated dev / CI simulators. The UDID file is the contract between run and stop scripts. |
xcodebuild test -scheme MyApp -destination 'platform=iOS Simulator,name=<simulator-name>,OS=latest' -resultBundlePath TestResults.xcresult | Run tests on a simulator |
xcodebuild test -scheme MyApp -destination 'platform=iOS,id=<UDID>' -resultBundlePath TestResults.xcresult | Run tests on a device |
xcodebuild build-for-testing ... then xcodebuild test-without-building ... | Faster reruns |
xcrun xcresulttool get test-results summary --path TestResults.xcresult | Pass/fail and counts (get test-results tests for the tree). The deprecated object API requires --legacy; check xcrun xcresulttool get object --help for the selected Xcode |
xcodebuild ... -destination "generic/platform=iOS" build | Compile-only build without a simulator; use when simulator services are unavailable or you only need compile/link proof |
xcodebuild archive -scheme MyApp -destination 'generic/platform=iOS' -archivePath MyApp.xcarchive | Exercise the archive/signing path (produces an .xcarchive; -exportArchive makes the .ipa). Use before calling a release candidate ready |
-resultBundlePath, and add coverage or diagnostics only when they serve the task.xcresult first, then reproduce a single failing test with -only-testing.generic/platform=iOS for compile-only proof and route service recovery to software-ios-runtime-debugging.xcresult, destinations, and flake control after the app is buildable and installable..app bundles, missing executables, or install/launch failures, route to software-ios-runtime-debugging.# Enumerate before an expensive run
xcodebuild test \
-scheme MyApp \
-testPlan Smoke \
-destination 'platform=iOS Simulator,name=<simulator-name>,OS=latest' \
-enumerate-tests \
-test-enumeration-format json
# Target one test
xcodebuild test \
-scheme MyApp \
-destination 'platform=iOS Simulator,name=<simulator-name>,OS=latest' \
-only-testing:MyAppUITests/LoginFlowTests/testHappyPath \
-resultBundlePath TestResults.xcresult
# Parallelize only when the suite is isolation-safe
xcodebuild test \
-scheme MyApp \
-destination 'platform=iOS Simulator,name=<simulator-name>,OS=latest' \
-parallel-testing-enabled YES \
-maximum-parallel-testing-workers 4 \
-resultBundlePath TestResults.xcresult
# Controlled retry for CI triage
xcodebuild test \
-scheme MyApp \
-destination 'platform=iOS Simulator,name=<simulator-name>,OS=latest' \
-retry-tests-on-failure \
-test-iterations 2 \
-test-repetition-relaunch-enabled YES \
-collect-test-diagnostics on-failure \
-resultBundlePath TestResults.xcresult
# Prove a flake locally
xcodebuild test \
-scheme MyApp \
-destination 'platform=iOS Simulator,name=<simulator-name>,OS=latest' \
-only-testing:MyAppUITests/LoginFlowTests/testHappyPath \
-run-tests-until-failure \
-test-iterations 25
waitForExistence, expectations, and state-based assertions over sleeps.-testLanguage and -testRegion when locale affects assertions.For auth, onboarding, billing, and other backend-coupled flows, prefer a fixture-backed launch-environment harness over live credentials. Keep user variants explicit, keep the fixture branch in the same function as the real path, and treat .accessibilityIdentifier() strings as part of the test contract.
Load references/e2e-harness-and-selectors.md for:
Xcode test plans (.xctestplan) control which tests run, with what configuration, and in which environment. Use them to manage matrix-style test execution:
-testLanguage / -testRegion overrides per configuration.-testPlan PlanName in xcodebuild.AI-native test tools (Maestro MCP and others) complement XCUITest; keep deterministic PR-gate smoke in XCUITest. For tool positioning and the decision framework, load qa-testing-mobile/references/ai-native-testing.md. Vendor capability claims change quickly — verify them against the vendor's current docs before recommending one.
| Scenario | Use Instead |
|---|---|
| Product architecture, app implementation, SwiftUI rewrite, or Xcode agent workflow | software-ios-native |
| Build/install failures, stale app suspicion, bundle executable missing, or simulator/package debugging | software-ios-runtime-debugging |
| Cross-platform mobile test strategy | qa-testing-mobile |
| Release-wide quality strategy | qa-testing-strategy |
| Resource | Purpose |
|---|---|
| references/e2e-harness-and-selectors.md | Deterministic fixture harnesses, selector discipline, and E2E landing rules |
| references/swift-testing.md | Swift Testing assertions, traits, confirmations, SDK-dependent features, and XCTest migration |
| references/xctest-patterns.md | XCTest patterns for unit, integration, and performance tests |
| references/xcuitest-patterns.md | XCUITest authoring and flake control |
| references/simulator-commands.md | Current simctl commands worth using in automation |
| references/snapshot-testing-ios.md | Snapshot testing with current caveats |
| references/ios-ci-general.md | Provider-neutral iOS CI guidance, including archive-path and fresh-clone checks |
| references/ios-ci-github-actions.md | GitHub Actions specifics and runner drift checks |
| references/ios-version-and-vision-pro.md | iOS 26 Liquid Glass snapshot impact, visionOS 26 destination syntax, Reality Composer Pro asset testing, hand-tracking simulator limits |
| ../qa-testing-mobile/references/localization-testing.md | Layered localization coverage for mobile UI and backend-served content |
| ../qa-testing-accessibility/SKILL.md | Accessibility-specific QA gates, screen-reader coverage, and conformance boundary guidance |
| data/sources.json | Curated external references |
| Script | Purpose |
|---|---|
| scripts/xcresult_to_junit.py | Convert .xcresult to JUnit XML (Xcode 16+, fixtures from Xcode 27; stdlib only). Counts Test Case nodes, reads failures from their children, and exits 4 if its counts disagree with xcresulttool get test-results summary. Regression test: python3 -m unittest discover -s scripts/tests |
| scripts/README.md | Usage guide and CI integration examples (GitHub Actions, Bitrise) |
| Template | Purpose |
|---|---|
| assets/template-ios-ui-test-stability-checklist.md | Review checklist for UI-test determinism |
## Workflow, ## xcodebuild Patterns, and ## Flake Control for the baseline sequence## Resources and ## Templates for deeper materialsWhen prior decisions or pitfalls are relevant, consult learnings.consolidated.md if present; use learnings.md only for needed history or as the available fallback. Otherwise skip both.
After applying it, if you encountered a pattern worth remembering, a mistake worth preventing, or a domain fact that surprised you, append one dated bullet to learnings.md via agents-skills-feedback-loop/scripts/append_learning.py. Do not modify SKILL.md itself.
まだレビューはありません。使ってみた感想をお寄せください。
概要と使いどころ
Configures Claude Code hooks and Codex hooks.json/notify. Use when adding PreToolUse guards, Stop hooks, managed hooks, format-on-save, preflight, audits, or worktree/budget hooks.
日本語の概要は準備中です。原文の説明を表示しています。
Configures and hardens Claude Code and Codex MCP servers. Use when connecting databases, APIs, SaaS, building servers, or serving a clearance-filtered knowledge base.
日本語の概要は準備中です。原文の説明を表示しています。
Owns instruction files: AGENTS.md, CLAUDE.md, personal and repo rules. Use when writing, pruning, auditing them, sharing rules across Claude and Codex, or fixing ignored rules.
日本語の概要は準備中です。原文の説明を表示しています。
Creates and audits agent skills: SKILL.md, references, scripts, runtime metadata. Use when writing, validating, or security-reviewing a skill, or fixing truncated skill listings.
日本語の概要は準備中です。原文の説明を表示しています。
Adds per-skill learnings loops for dated patterns, mistakes, and domain facts. Use when wiring skill memory, consolidation, or drift audits.
日本語の概要は準備中です。原文の説明を表示しています。
Chooses subagent, team, workflow, or debate and launches it on Claude Code or Codex. Use when delegating, running agent review boards, or installing shared agents.
日本語の概要は準備中です。原文の説明を表示しています。