Ios validation
iOS / macOS platform validation via xcrun simctl + idb. Builds, installs, launches, exercises via deep links or UI taps. Captures screenshots + logs. Cited as platform_skill on iOS gates in deepest-plan output.From its SKILL.md
npx -y skills add krzemienski/deepest-plan-plugin --skill ios-validationAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its file declares
Copied from the file, not written here
The file declares its own license as MIT. That is the author’s claim about this one file, and it is not the same thing as the license GitHub reports for the repository, which is listed with the other numbers below.
SKILL.md
4.0 KB, as published. Nobody here has run it
iOS Validation
Scope
iOS and macOS app validation via real simulator execution. Does NOT handle web-view hybrid apps in depth (use web-validation for the web portion), and does NOT handle XCUITest-based tests (intentionally — they are tests and violate the Iron Rule when used for deepest-plan gates).
Preflight
-
xcode-select -ppoints to a valid Xcode.app -
xcrun simctl list devices booted | grep -q BootedOR a device can be booted -
xcodebuild -list -project {proj}.xcodeprojshows expected schemes - Signing identity available for target scheme
Execution Pattern
# Build for simulator
xcodebuild -project MyApp.xcodeproj -scheme MyApp \
-destination 'platform=iOS Simulator,name=iPhone 15' \
-derivedDataPath ./build \
build 2>&1 | tee e2e-evidence/vgN-build.log
# Install + launch
APP=$(find ./build -name "MyApp.app" | head -1)
xcrun simctl install booted "$APP"
xcrun simctl launch booted com.example.MyApp
# Exercise via deep link OR idb tap
xcrun simctl openurl booted "myapp://preferences"
# or
idb ui tap 200 400
# Capture screenshot
xcrun simctl io booted screenshot e2e-evidence/vgN-screen.png
# Capture logs (last 30 seconds)
xcrun simctl spawn booted log collect \
--output e2e-evidence/vgN-logs.logarchive --last 30s
PASS Criteria Patterns
Good:
- "Screenshot shows dashboard with user email in nav bar (not login screen)"
- "Logs contain 0 entries matching regex
ERROR|FATAL|crashed" - "Deep-link navigation landed on /preferences route (visible heading text)"
Bad (reject):
- "App launches" → does it crash, hang, show correct screen?
- "UI is fine" → specific state?
Gate Template
<validation_gate id="VG-N" blocking="true" platform="ios"
protocol="functional-validation"
platform_skill="ios-validation"
verdict_by="gate-validation-discipline">
<preflight skill="preflight">[simulator booted + build succeeds]</preflight>
<execute>[build, install, launch, exercise via simctl/idb]</execute>
<capture>[screenshots + log archives to e2e-evidence/vgN-*]</capture>
<pass_criteria>[specific UI state + log assertions]</pass_criteria>
<review>[Read tool on .png; log show | grep for error patterns]</review>
<verdict>PASS → next | FAIL → error-recovery → re-run</verdict>
<mock_guard skill="no-mocking-validation-gates">
No XCTest, no UI-testing framework, no stubbed networking. Real simulator only.
</mock_guard>
</validation_gate>
Required Coverage
- Cold launch → target screen renders within N seconds
- Deep-link variants (auth-required, non-auth) → correct routing
- Background → foreground → state preserved
- Error state (no network) → user-visible error, no crash
Common Failure Patterns
| Symptom | Likely cause | Fix |
|---|---|---|
| Build fails with signing error | No provisioning profile | Use CODE_SIGNING_ALLOWED=NO for simulator builds |
| Simulator doesn't open URL | Scheme not registered | Check Info.plist URL Types |
| Blank screenshot | App launching or crashed | Wait + capture log; look for crash trace |
| Logs truncated | Log collection too late | Start log collection BEFORE launch |
Rules
- Always use real simulator — never a UI test harness for gates
- Always wait for settle (launch + render) before screenshot
- Always capture logs in parallel with UI interaction
- Always read screenshot (describe UI state) — don't just check file exists
- Prefer deep links over screen-coordinate taps when available (stable across layouts)
Security Policy
Simulator screenshots may show authenticated user data. Store in e2e-evidence/ (gitignored). Never commit signed-in captures to public repos.