$npx -y skills add Livsy90/iOS-Performance-Agent-Skills --skill ios-perceived-performanceUse this skill for product-level iOS responsiveness and loading/feedback flows, including perceived latency, time to first feedback, progressive rendering, loading states, skeletons, placeholders, optimistic updates, rollback behavior, high-stakes actions, UI continuity, and resp
| 1 | # iOS Perceived Performance |
| 2 | |
| 3 | ## Purpose |
| 4 | |
| 5 | Use this skill to review whether an iOS screen or flow feels responsive to users, even when raw execution time does not change. |
| 6 | |
| 7 | This skill focuses on user-visible feedback, loading behavior, staged content, continuity, optimistic UI, high-stakes actions, and validation of perceived responsiveness. |
| 8 | |
| 9 | ## When to use this skill |
| 10 | |
| 11 | Use this skill when the task involves: |
| 12 | |
| 13 | - a screen that feels slow, stuck, blank, jumpy, or unresponsive; |
| 14 | - no visible feedback after a tap or gesture; |
| 15 | - delayed first meaningful content; |
| 16 | - loading states, placeholders, skeletons, empty states, retry states, or refresh states; |
| 17 | - progressive rendering, partial content, section-level loading, or stale-while-refreshing UI; |
| 18 | - optimistic updates, pending state, rollback, retries, or local/server reconciliation; |
| 19 | - high-stakes, irreversible, destructive, financial, legal, medical, identity, or security-sensitive actions; |
| 20 | - duplicate submissions or repeated taps during async work; |
| 21 | - perceived latency trade-offs where the product behavior matters as much as the raw duration; |
| 22 | - validation using recordings, UI tests, Instruments, MetricKit, production logs, or user-visible signals. |
| 23 | |
| 24 | ## When not to use this skill |
| 25 | |
| 26 | Do not use this skill for: |
| 27 | |
| 28 | - low-level CPU, allocation, ARC, memory, runtime, or compiler-performance investigations; |
| 29 | - SwiftUI invalidation, identity, layout, or scrolling problems unless the question is about perceived responsiveness; |
| 30 | - Swift Concurrency internals unless task behavior affects visible UI feedback or staged loading; |
| 31 | - app launch performance unless the question is about first useful screen or first interaction from the user's point of view; |
| 32 | - visual redesign requests with no responsiveness, loading, or feedback concern; |
| 33 | - claims that require running the app when no runtime evidence is available. |
| 34 | |
| 35 | Use `ios-performance-profiling`, `swiftui-performance`, `swift-concurrency-performance`, `swift-runtime-performance`, or `ios-launch-performance` when those domains are the primary problem. |
| 36 | |
| 37 | ## Core model |
| 38 | |
| 39 | Users do not experience CPU samples, network traces, database timings, or async task graphs directly. |
| 40 | |
| 41 | They experience: |
| 42 | |
| 43 | - whether the app reacts immediately; |
| 44 | - when useful content first appears; |
| 45 | - whether progress is clear; |
| 46 | - whether the screen stays stable while work continues; |
| 47 | - whether failures and retries are understandable; |
| 48 | - whether pending work feels trustworthy; |
| 49 | - whether actions can be repeated accidentally; |
| 50 | - whether the UI tells the truth about the server-authoritative outcome. |
| 51 | |
| 52 | Start with the user-visible delay or uncertainty before proposing lower-level optimization. |
| 53 | |
| 54 | ## Agent capability boundaries |
| 55 | |
| 56 | The agent can usually inspect and improve: |
| 57 | |
| 58 | - state models for loading, loaded, empty, error, refreshing, pending, syncing, and failed states; |
| 59 | - whether UI changes happen only after async work completes; |
| 60 | - whether user actions receive immediate visual feedback; |
| 61 | - whether refresh clears useful existing content unnecessarily; |
| 62 | - whether a screen can render critical content before secondary content; |
| 63 | - whether optimistic updates have pending, rollback, retry, and conflict behavior; |
| 64 | - whether high-stakes actions wait for confirmation before showing final success; |
| 65 | - whether duplicate submissions are prevented. |
| 66 | |
| 67 | The agent can suggest, but cannot prove without runtime evidence: |
| 68 | |
| 69 | - whether a screen feels fast enough; |
| 70 | - whether a skeleton improves perception; |
| 71 | - whether a deliberate delay is appropriate; |
| 72 | - whether Low Power Mode exposes low performance headroom; |
| 73 | - whether older devices perform acceptably; |
| 74 | - whether a product flow feels trustworthy to users. |
| 75 | |
| 76 | Do not claim that manual or device-based validation was performed unless the user supplied evidence such as a recording, trace, test result, profiling output, or production signal. |
| 77 | |
| 78 | ## Review workflow |
| 79 | |
| 80 | 1. Identify the user-visible symptom: no feedback, blank screen, all-or-nothing loading, jumpy update, unclear progress, unsafe optimism, repeated submission, or distrust. |
| 81 | 2. Locate the state transition that creates the symptom. |
| 82 | 3. Decide whether the first useful improvement is product/UI feedback or low-level performance work. |
| 83 | 4. Check whether the UI acknowledges user actions immediately. |
| 84 | 5. Check whether critical content can appear before secondary content. |
| 85 | 6. Check whether refresh can preserve useful existing content. |
| 86 | 7. Check whether loading, empty, error, retry, refreshing, pending, synced, and failed states are distinct enough. |
| 87 | 8. D |