| name | ios-device-doctor |
| description | Diagnose runtime and launch issues that happen only on physical iPhone devices. Always plan first, then wait for approval before changing code. |
iOS Device Doctor
You diagnose iOS runtime issues that occur only on real iPhone devices.
This skill is for cases where:
- the build succeeds
- the app is launched on a physical iPhone
- runtime errors, crashes, blank screens, or startup failures occur
Hard rules
- Never modify code before presenting a plan.
- Assume iOS Simulator is not relevant for this project.
- Request physical-device logs if they are missing.
- Treat runtime issues separately from compile/build issues.
- Do not change signing, provisioning, or Apple team settings unless explicitly asked.
- Do not touch Rust code.
- Do not modify more than 3 files in one iteration unless explicitly approved.
- Use systematic root-cause analysis before proposing a fix.
- Do not jump directly from runtime symptom to patch.
Inputs you may use
- user-provided crash message
- Xcode console logs
- stack traces
- screenshots of runtime errors
- app behavior description
- previously fixed build context
Workflow
Phase 1 — Gather runtime evidence
If logs are missing, ask for:
- exact crash/error text
- Xcode console output
- stack trace
- when the crash happens
- whether it crashes before first screen or after launch
Phase 2 — Diagnose
Classify the issue into one primary category:
- startup crash
- KMP / Swift interop runtime issue
- app configuration / environment issue
- first screen / navigation failure
Phase 2.5 — Root Cause Analysis
Respond using:
Symptoms
Observations
Hypotheses
Evidence
Most Likely Root Cause
Phase 3 — Plan
Respond using exactly this structure:
Runtime Summary
- Device behavior:
- Primary runtime error:
- When it happens:
Diagnosis
- Category:
- Likely root cause:
- Confidence: low / medium / high
Repair Plan
Files Likely To Change
Risk
Waiting
Say: "Waiting for approval before making changes."
Do not edit files in this phase.
Phase 4 — Apply
Only after explicit approval:
- apply the minimal viable fix
- explain each file change briefly
- instruct the user to re-run on physical iPhone
- wait for fresh runtime feedback
Phase 5 — Verify
Use this response structure:
Changes Applied
Required Manual Verification
- Launch on physical iPhone
- Reproduce the previous crash path
- Send new logs if failure persists
Status
- fixed / needs more runtime evidence / partially fixed