@wazir-dev/cli 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (629) hide show
  1. package/AGENTS.md +111 -0
  2. package/CHANGELOG.md +14 -0
  3. package/CONTRIBUTING.md +101 -0
  4. package/LICENSE +21 -0
  5. package/README.md +314 -0
  6. package/assets/composition-engine.mmd +34 -0
  7. package/assets/demo-script.sh +17 -0
  8. package/assets/logo-dark.svg +14 -0
  9. package/assets/logo.svg +14 -0
  10. package/assets/pipeline.mmd +39 -0
  11. package/assets/record-demo.sh +51 -0
  12. package/docs/README.md +51 -0
  13. package/docs/adapters/context-mode.md +60 -0
  14. package/docs/concepts/architecture.md +87 -0
  15. package/docs/concepts/artifact-model.md +60 -0
  16. package/docs/concepts/composition-engine.md +36 -0
  17. package/docs/concepts/indexing-and-recall.md +160 -0
  18. package/docs/concepts/observability.md +41 -0
  19. package/docs/concepts/roles-and-workflows.md +59 -0
  20. package/docs/concepts/terminology-policy.md +27 -0
  21. package/docs/getting-started/01-installation.md +78 -0
  22. package/docs/getting-started/02-first-run.md +102 -0
  23. package/docs/getting-started/03-adding-to-project.md +15 -0
  24. package/docs/getting-started/04-host-setup.md +15 -0
  25. package/docs/guides/ci-integration.md +15 -0
  26. package/docs/guides/creating-skills.md +15 -0
  27. package/docs/guides/expertise-module-authoring.md +15 -0
  28. package/docs/guides/hook-development.md +15 -0
  29. package/docs/guides/memory-and-learnings.md +34 -0
  30. package/docs/guides/multi-host-export.md +15 -0
  31. package/docs/guides/troubleshooting.md +101 -0
  32. package/docs/guides/writing-custom-roles.md +15 -0
  33. package/docs/plans/2026-03-15-cli-pipeline-integration-design.md +592 -0
  34. package/docs/plans/2026-03-15-cli-pipeline-integration-plan.md +598 -0
  35. package/docs/plans/2026-03-15-docs-enforcement-plan.md +238 -0
  36. package/docs/readmes/INDEX.md +99 -0
  37. package/docs/readmes/features/expertise/README.md +171 -0
  38. package/docs/readmes/features/exports/README.md +222 -0
  39. package/docs/readmes/features/hooks/README.md +103 -0
  40. package/docs/readmes/features/hooks/loop-cap-guard.md +133 -0
  41. package/docs/readmes/features/hooks/post-tool-capture.md +121 -0
  42. package/docs/readmes/features/hooks/post-tool-lint.md +130 -0
  43. package/docs/readmes/features/hooks/pre-compact-summary.md +122 -0
  44. package/docs/readmes/features/hooks/pre-tool-capture-route.md +100 -0
  45. package/docs/readmes/features/hooks/protected-path-write-guard.md +128 -0
  46. package/docs/readmes/features/hooks/session-start.md +119 -0
  47. package/docs/readmes/features/hooks/stop-handoff-harvest.md +125 -0
  48. package/docs/readmes/features/roles/README.md +157 -0
  49. package/docs/readmes/features/roles/clarifier.md +152 -0
  50. package/docs/readmes/features/roles/content-author.md +190 -0
  51. package/docs/readmes/features/roles/designer.md +193 -0
  52. package/docs/readmes/features/roles/executor.md +184 -0
  53. package/docs/readmes/features/roles/learner.md +210 -0
  54. package/docs/readmes/features/roles/planner.md +182 -0
  55. package/docs/readmes/features/roles/researcher.md +164 -0
  56. package/docs/readmes/features/roles/reviewer.md +184 -0
  57. package/docs/readmes/features/roles/specifier.md +162 -0
  58. package/docs/readmes/features/roles/verifier.md +215 -0
  59. package/docs/readmes/features/schemas/README.md +178 -0
  60. package/docs/readmes/features/skills/README.md +63 -0
  61. package/docs/readmes/features/skills/brainstorming.md +96 -0
  62. package/docs/readmes/features/skills/debugging.md +148 -0
  63. package/docs/readmes/features/skills/design.md +120 -0
  64. package/docs/readmes/features/skills/prepare-next.md +109 -0
  65. package/docs/readmes/features/skills/run-audit.md +159 -0
  66. package/docs/readmes/features/skills/scan-project.md +109 -0
  67. package/docs/readmes/features/skills/self-audit.md +176 -0
  68. package/docs/readmes/features/skills/tdd.md +137 -0
  69. package/docs/readmes/features/skills/using-skills.md +92 -0
  70. package/docs/readmes/features/skills/verification.md +120 -0
  71. package/docs/readmes/features/skills/writing-plans.md +104 -0
  72. package/docs/readmes/features/tooling/README.md +320 -0
  73. package/docs/readmes/features/workflows/README.md +186 -0
  74. package/docs/readmes/features/workflows/author.md +181 -0
  75. package/docs/readmes/features/workflows/clarify.md +154 -0
  76. package/docs/readmes/features/workflows/design-review.md +171 -0
  77. package/docs/readmes/features/workflows/design.md +169 -0
  78. package/docs/readmes/features/workflows/discover.md +162 -0
  79. package/docs/readmes/features/workflows/execute.md +173 -0
  80. package/docs/readmes/features/workflows/learn.md +167 -0
  81. package/docs/readmes/features/workflows/plan-review.md +165 -0
  82. package/docs/readmes/features/workflows/plan.md +170 -0
  83. package/docs/readmes/features/workflows/prepare-next.md +167 -0
  84. package/docs/readmes/features/workflows/review.md +169 -0
  85. package/docs/readmes/features/workflows/run-audit.md +191 -0
  86. package/docs/readmes/features/workflows/spec-challenge.md +159 -0
  87. package/docs/readmes/features/workflows/specify.md +160 -0
  88. package/docs/readmes/features/workflows/verify.md +177 -0
  89. package/docs/readmes/packages/README.md +50 -0
  90. package/docs/readmes/packages/ajv.md +117 -0
  91. package/docs/readmes/packages/context-mode.md +118 -0
  92. package/docs/readmes/packages/gray-matter.md +116 -0
  93. package/docs/readmes/packages/node-test.md +137 -0
  94. package/docs/readmes/packages/yaml.md +112 -0
  95. package/docs/reference/configuration-reference.md +159 -0
  96. package/docs/reference/expertise-index.md +52 -0
  97. package/docs/reference/git-flow.md +43 -0
  98. package/docs/reference/hooks.md +87 -0
  99. package/docs/reference/host-exports.md +50 -0
  100. package/docs/reference/launch-checklist.md +172 -0
  101. package/docs/reference/marketplace-listings.md +76 -0
  102. package/docs/reference/release-process.md +34 -0
  103. package/docs/reference/roles-reference.md +77 -0
  104. package/docs/reference/skills.md +33 -0
  105. package/docs/reference/templates.md +29 -0
  106. package/docs/reference/tooling-cli.md +94 -0
  107. package/docs/truth-claims.yaml +222 -0
  108. package/expertise/PROGRESS.md +63 -0
  109. package/expertise/README.md +18 -0
  110. package/expertise/antipatterns/PROGRESS.md +56 -0
  111. package/expertise/antipatterns/backend/api-design-antipatterns.md +1271 -0
  112. package/expertise/antipatterns/backend/auth-antipatterns.md +1195 -0
  113. package/expertise/antipatterns/backend/caching-antipatterns.md +622 -0
  114. package/expertise/antipatterns/backend/database-antipatterns.md +1038 -0
  115. package/expertise/antipatterns/backend/index.md +24 -0
  116. package/expertise/antipatterns/backend/microservices-antipatterns.md +850 -0
  117. package/expertise/antipatterns/code/architecture-antipatterns.md +919 -0
  118. package/expertise/antipatterns/code/async-antipatterns.md +622 -0
  119. package/expertise/antipatterns/code/code-smells.md +1186 -0
  120. package/expertise/antipatterns/code/dependency-antipatterns.md +1209 -0
  121. package/expertise/antipatterns/code/error-handling-antipatterns.md +1360 -0
  122. package/expertise/antipatterns/code/index.md +27 -0
  123. package/expertise/antipatterns/code/naming-and-abstraction.md +1118 -0
  124. package/expertise/antipatterns/code/state-management-antipatterns.md +1076 -0
  125. package/expertise/antipatterns/code/testing-antipatterns.md +1053 -0
  126. package/expertise/antipatterns/design/accessibility-antipatterns.md +1136 -0
  127. package/expertise/antipatterns/design/dark-patterns.md +1121 -0
  128. package/expertise/antipatterns/design/index.md +22 -0
  129. package/expertise/antipatterns/design/ui-antipatterns.md +1202 -0
  130. package/expertise/antipatterns/design/ux-antipatterns.md +680 -0
  131. package/expertise/antipatterns/frontend/css-layout-antipatterns.md +691 -0
  132. package/expertise/antipatterns/frontend/flutter-antipatterns.md +1827 -0
  133. package/expertise/antipatterns/frontend/index.md +23 -0
  134. package/expertise/antipatterns/frontend/mobile-antipatterns.md +573 -0
  135. package/expertise/antipatterns/frontend/react-antipatterns.md +1128 -0
  136. package/expertise/antipatterns/frontend/spa-antipatterns.md +1235 -0
  137. package/expertise/antipatterns/index.md +31 -0
  138. package/expertise/antipatterns/performance/index.md +20 -0
  139. package/expertise/antipatterns/performance/performance-antipatterns.md +1013 -0
  140. package/expertise/antipatterns/performance/premature-optimization.md +623 -0
  141. package/expertise/antipatterns/performance/scaling-antipatterns.md +785 -0
  142. package/expertise/antipatterns/process/ai-coding-antipatterns.md +853 -0
  143. package/expertise/antipatterns/process/code-review-antipatterns.md +656 -0
  144. package/expertise/antipatterns/process/deployment-antipatterns.md +920 -0
  145. package/expertise/antipatterns/process/index.md +23 -0
  146. package/expertise/antipatterns/process/technical-debt-antipatterns.md +647 -0
  147. package/expertise/antipatterns/security/index.md +20 -0
  148. package/expertise/antipatterns/security/secrets-antipatterns.md +849 -0
  149. package/expertise/antipatterns/security/security-theater.md +843 -0
  150. package/expertise/antipatterns/security/vulnerability-patterns.md +801 -0
  151. package/expertise/architecture/PROGRESS.md +70 -0
  152. package/expertise/architecture/data/caching-architecture.md +671 -0
  153. package/expertise/architecture/data/data-consistency.md +574 -0
  154. package/expertise/architecture/data/data-modeling.md +536 -0
  155. package/expertise/architecture/data/event-streams-and-queues.md +634 -0
  156. package/expertise/architecture/data/index.md +25 -0
  157. package/expertise/architecture/data/search-architecture.md +663 -0
  158. package/expertise/architecture/data/sql-vs-nosql.md +708 -0
  159. package/expertise/architecture/decisions/architecture-decision-records.md +640 -0
  160. package/expertise/architecture/decisions/build-vs-buy.md +616 -0
  161. package/expertise/architecture/decisions/index.md +23 -0
  162. package/expertise/architecture/decisions/monolith-to-microservices.md +790 -0
  163. package/expertise/architecture/decisions/technology-selection.md +616 -0
  164. package/expertise/architecture/distributed/cap-theorem-and-tradeoffs.md +800 -0
  165. package/expertise/architecture/distributed/circuit-breaker-bulkhead.md +741 -0
  166. package/expertise/architecture/distributed/consensus-and-coordination.md +796 -0
  167. package/expertise/architecture/distributed/distributed-systems-fundamentals.md +564 -0
  168. package/expertise/architecture/distributed/idempotency-and-retry.md +796 -0
  169. package/expertise/architecture/distributed/index.md +25 -0
  170. package/expertise/architecture/distributed/saga-pattern.md +797 -0
  171. package/expertise/architecture/foundations/architectural-thinking.md +460 -0
  172. package/expertise/architecture/foundations/coupling-and-cohesion.md +770 -0
  173. package/expertise/architecture/foundations/design-principles-solid.md +649 -0
  174. package/expertise/architecture/foundations/domain-driven-design.md +719 -0
  175. package/expertise/architecture/foundations/index.md +25 -0
  176. package/expertise/architecture/foundations/separation-of-concerns.md +472 -0
  177. package/expertise/architecture/foundations/twelve-factor-app.md +797 -0
  178. package/expertise/architecture/index.md +34 -0
  179. package/expertise/architecture/integration/api-design-graphql.md +638 -0
  180. package/expertise/architecture/integration/api-design-grpc.md +804 -0
  181. package/expertise/architecture/integration/api-design-rest.md +892 -0
  182. package/expertise/architecture/integration/index.md +25 -0
  183. package/expertise/architecture/integration/third-party-integration.md +795 -0
  184. package/expertise/architecture/integration/webhooks-and-callbacks.md +1152 -0
  185. package/expertise/architecture/integration/websockets-realtime.md +791 -0
  186. package/expertise/architecture/mobile-architecture/index.md +22 -0
  187. package/expertise/architecture/mobile-architecture/mobile-app-architecture.md +780 -0
  188. package/expertise/architecture/mobile-architecture/mobile-backend-for-frontend.md +670 -0
  189. package/expertise/architecture/mobile-architecture/offline-first.md +719 -0
  190. package/expertise/architecture/mobile-architecture/push-and-sync.md +782 -0
  191. package/expertise/architecture/patterns/cqrs-event-sourcing.md +717 -0
  192. package/expertise/architecture/patterns/event-driven.md +797 -0
  193. package/expertise/architecture/patterns/hexagonal-clean-architecture.md +870 -0
  194. package/expertise/architecture/patterns/index.md +27 -0
  195. package/expertise/architecture/patterns/layered-architecture.md +736 -0
  196. package/expertise/architecture/patterns/microservices.md +753 -0
  197. package/expertise/architecture/patterns/modular-monolith.md +692 -0
  198. package/expertise/architecture/patterns/monolith.md +626 -0
  199. package/expertise/architecture/patterns/plugin-architecture.md +735 -0
  200. package/expertise/architecture/patterns/serverless.md +780 -0
  201. package/expertise/architecture/scaling/database-scaling.md +615 -0
  202. package/expertise/architecture/scaling/feature-flags-and-rollouts.md +757 -0
  203. package/expertise/architecture/scaling/horizontal-vs-vertical.md +606 -0
  204. package/expertise/architecture/scaling/index.md +24 -0
  205. package/expertise/architecture/scaling/multi-tenancy.md +800 -0
  206. package/expertise/architecture/scaling/stateless-design.md +787 -0
  207. package/expertise/backend/embedded-firmware.md +625 -0
  208. package/expertise/backend/go.md +853 -0
  209. package/expertise/backend/index.md +24 -0
  210. package/expertise/backend/java-spring.md +448 -0
  211. package/expertise/backend/node-typescript.md +625 -0
  212. package/expertise/backend/python-fastapi.md +724 -0
  213. package/expertise/backend/rust.md +458 -0
  214. package/expertise/backend/solidity.md +711 -0
  215. package/expertise/composition-map.yaml +443 -0
  216. package/expertise/content/foundations/content-modeling.md +395 -0
  217. package/expertise/content/foundations/editorial-standards.md +449 -0
  218. package/expertise/content/foundations/index.md +24 -0
  219. package/expertise/content/foundations/microcopy.md +455 -0
  220. package/expertise/content/foundations/terminology-governance.md +509 -0
  221. package/expertise/content/index.md +34 -0
  222. package/expertise/content/patterns/accessibility-copy.md +518 -0
  223. package/expertise/content/patterns/index.md +24 -0
  224. package/expertise/content/patterns/notification-content.md +433 -0
  225. package/expertise/content/patterns/sample-content.md +486 -0
  226. package/expertise/content/patterns/state-copy.md +439 -0
  227. package/expertise/design/PROGRESS.md +58 -0
  228. package/expertise/design/disciplines/dark-mode-theming.md +577 -0
  229. package/expertise/design/disciplines/design-systems.md +595 -0
  230. package/expertise/design/disciplines/index.md +25 -0
  231. package/expertise/design/disciplines/information-architecture.md +800 -0
  232. package/expertise/design/disciplines/interaction-design.md +788 -0
  233. package/expertise/design/disciplines/responsive-design.md +552 -0
  234. package/expertise/design/disciplines/usability-testing.md +516 -0
  235. package/expertise/design/disciplines/user-research.md +792 -0
  236. package/expertise/design/foundations/accessibility-design.md +796 -0
  237. package/expertise/design/foundations/color-theory.md +797 -0
  238. package/expertise/design/foundations/iconography.md +795 -0
  239. package/expertise/design/foundations/index.md +26 -0
  240. package/expertise/design/foundations/motion-and-animation.md +653 -0
  241. package/expertise/design/foundations/rtl-design.md +585 -0
  242. package/expertise/design/foundations/spacing-and-layout.md +607 -0
  243. package/expertise/design/foundations/typography.md +800 -0
  244. package/expertise/design/foundations/visual-hierarchy.md +761 -0
  245. package/expertise/design/index.md +32 -0
  246. package/expertise/design/patterns/authentication-flows.md +474 -0
  247. package/expertise/design/patterns/content-consumption.md +789 -0
  248. package/expertise/design/patterns/data-display.md +618 -0
  249. package/expertise/design/patterns/e-commerce.md +1494 -0
  250. package/expertise/design/patterns/feedback-and-states.md +642 -0
  251. package/expertise/design/patterns/forms-and-input.md +819 -0
  252. package/expertise/design/patterns/gamification.md +801 -0
  253. package/expertise/design/patterns/index.md +31 -0
  254. package/expertise/design/patterns/microinteractions.md +449 -0
  255. package/expertise/design/patterns/navigation.md +800 -0
  256. package/expertise/design/patterns/notifications.md +705 -0
  257. package/expertise/design/patterns/onboarding.md +700 -0
  258. package/expertise/design/patterns/search-and-filter.md +601 -0
  259. package/expertise/design/patterns/settings-and-preferences.md +768 -0
  260. package/expertise/design/patterns/social-and-community.md +748 -0
  261. package/expertise/design/platforms/desktop-native.md +612 -0
  262. package/expertise/design/platforms/index.md +25 -0
  263. package/expertise/design/platforms/mobile-android.md +825 -0
  264. package/expertise/design/platforms/mobile-cross-platform.md +983 -0
  265. package/expertise/design/platforms/mobile-ios.md +699 -0
  266. package/expertise/design/platforms/tablet.md +794 -0
  267. package/expertise/design/platforms/web-dashboard.md +790 -0
  268. package/expertise/design/platforms/web-responsive.md +550 -0
  269. package/expertise/design/psychology/behavioral-nudges.md +449 -0
  270. package/expertise/design/psychology/cognitive-load.md +1191 -0
  271. package/expertise/design/psychology/error-psychology.md +778 -0
  272. package/expertise/design/psychology/index.md +22 -0
  273. package/expertise/design/psychology/persuasive-design.md +736 -0
  274. package/expertise/design/psychology/user-mental-models.md +623 -0
  275. package/expertise/design/tooling/open-pencil.md +266 -0
  276. package/expertise/frontend/angular.md +1073 -0
  277. package/expertise/frontend/desktop-electron.md +546 -0
  278. package/expertise/frontend/flutter.md +782 -0
  279. package/expertise/frontend/index.md +27 -0
  280. package/expertise/frontend/native-android.md +409 -0
  281. package/expertise/frontend/native-ios.md +490 -0
  282. package/expertise/frontend/react-native.md +1160 -0
  283. package/expertise/frontend/react.md +808 -0
  284. package/expertise/frontend/vue.md +1089 -0
  285. package/expertise/humanize/domain-rules-code.md +79 -0
  286. package/expertise/humanize/domain-rules-content.md +67 -0
  287. package/expertise/humanize/domain-rules-technical-docs.md +56 -0
  288. package/expertise/humanize/index.md +35 -0
  289. package/expertise/humanize/self-audit-checklist.md +87 -0
  290. package/expertise/humanize/sentence-patterns.md +218 -0
  291. package/expertise/humanize/vocabulary-blacklist.md +105 -0
  292. package/expertise/i18n/PROGRESS.md +65 -0
  293. package/expertise/i18n/advanced/accessibility-and-i18n.md +28 -0
  294. package/expertise/i18n/advanced/bidirectional-text-algorithm.md +38 -0
  295. package/expertise/i18n/advanced/complex-scripts.md +30 -0
  296. package/expertise/i18n/advanced/performance-and-i18n.md +27 -0
  297. package/expertise/i18n/advanced/testing-i18n.md +28 -0
  298. package/expertise/i18n/content/content-adaptation.md +23 -0
  299. package/expertise/i18n/content/locale-specific-formatting.md +23 -0
  300. package/expertise/i18n/content/machine-translation-integration.md +28 -0
  301. package/expertise/i18n/content/translation-management.md +29 -0
  302. package/expertise/i18n/foundations/date-time-calendars.md +67 -0
  303. package/expertise/i18n/foundations/i18n-architecture.md +272 -0
  304. package/expertise/i18n/foundations/locale-and-language-tags.md +79 -0
  305. package/expertise/i18n/foundations/numbers-currency-units.md +61 -0
  306. package/expertise/i18n/foundations/pluralization-and-gender.md +109 -0
  307. package/expertise/i18n/foundations/string-externalization.md +236 -0
  308. package/expertise/i18n/foundations/text-direction-bidi.md +241 -0
  309. package/expertise/i18n/foundations/unicode-and-encoding.md +86 -0
  310. package/expertise/i18n/index.md +38 -0
  311. package/expertise/i18n/platform/backend-i18n.md +31 -0
  312. package/expertise/i18n/platform/flutter-i18n.md +148 -0
  313. package/expertise/i18n/platform/native-android-i18n.md +36 -0
  314. package/expertise/i18n/platform/native-ios-i18n.md +36 -0
  315. package/expertise/i18n/platform/react-i18n.md +103 -0
  316. package/expertise/i18n/platform/web-css-i18n.md +81 -0
  317. package/expertise/i18n/rtl/arabic-specific.md +175 -0
  318. package/expertise/i18n/rtl/hebrew-specific.md +149 -0
  319. package/expertise/i18n/rtl/rtl-animations-and-transitions.md +111 -0
  320. package/expertise/i18n/rtl/rtl-forms-and-input.md +161 -0
  321. package/expertise/i18n/rtl/rtl-fundamentals.md +211 -0
  322. package/expertise/i18n/rtl/rtl-icons-and-images.md +181 -0
  323. package/expertise/i18n/rtl/rtl-layout-mirroring.md +252 -0
  324. package/expertise/i18n/rtl/rtl-navigation-and-gestures.md +107 -0
  325. package/expertise/i18n/rtl/rtl-testing-and-qa.md +147 -0
  326. package/expertise/i18n/rtl/rtl-typography.md +160 -0
  327. package/expertise/index.md +113 -0
  328. package/expertise/index.yaml +216 -0
  329. package/expertise/infrastructure/cloud-aws.md +597 -0
  330. package/expertise/infrastructure/cloud-gcp.md +599 -0
  331. package/expertise/infrastructure/cybersecurity.md +816 -0
  332. package/expertise/infrastructure/database-mongodb.md +447 -0
  333. package/expertise/infrastructure/database-postgres.md +400 -0
  334. package/expertise/infrastructure/devops-cicd.md +787 -0
  335. package/expertise/infrastructure/index.md +27 -0
  336. package/expertise/performance/PROGRESS.md +50 -0
  337. package/expertise/performance/backend/api-latency.md +1204 -0
  338. package/expertise/performance/backend/background-jobs.md +506 -0
  339. package/expertise/performance/backend/connection-pooling.md +1209 -0
  340. package/expertise/performance/backend/database-query-optimization.md +515 -0
  341. package/expertise/performance/backend/index.md +23 -0
  342. package/expertise/performance/backend/rate-limiting-and-throttling.md +971 -0
  343. package/expertise/performance/foundations/algorithmic-complexity.md +954 -0
  344. package/expertise/performance/foundations/caching-strategies.md +489 -0
  345. package/expertise/performance/foundations/concurrency-and-parallelism.md +847 -0
  346. package/expertise/performance/foundations/index.md +24 -0
  347. package/expertise/performance/foundations/measuring-and-profiling.md +440 -0
  348. package/expertise/performance/foundations/memory-management.md +964 -0
  349. package/expertise/performance/foundations/performance-budgets.md +1314 -0
  350. package/expertise/performance/index.md +31 -0
  351. package/expertise/performance/infrastructure/auto-scaling.md +1059 -0
  352. package/expertise/performance/infrastructure/cdn-and-edge.md +1081 -0
  353. package/expertise/performance/infrastructure/index.md +22 -0
  354. package/expertise/performance/infrastructure/load-balancing.md +1081 -0
  355. package/expertise/performance/infrastructure/observability.md +1079 -0
  356. package/expertise/performance/mobile/index.md +23 -0
  357. package/expertise/performance/mobile/mobile-animations.md +544 -0
  358. package/expertise/performance/mobile/mobile-memory-battery.md +416 -0
  359. package/expertise/performance/mobile/mobile-network.md +452 -0
  360. package/expertise/performance/mobile/mobile-rendering.md +599 -0
  361. package/expertise/performance/mobile/mobile-startup-time.md +505 -0
  362. package/expertise/performance/platform-specific/flutter-performance.md +647 -0
  363. package/expertise/performance/platform-specific/index.md +22 -0
  364. package/expertise/performance/platform-specific/node-performance.md +1307 -0
  365. package/expertise/performance/platform-specific/postgres-performance.md +1366 -0
  366. package/expertise/performance/platform-specific/react-performance.md +1403 -0
  367. package/expertise/performance/web/bundle-optimization.md +1239 -0
  368. package/expertise/performance/web/image-and-media.md +636 -0
  369. package/expertise/performance/web/index.md +24 -0
  370. package/expertise/performance/web/network-optimization.md +1133 -0
  371. package/expertise/performance/web/rendering-performance.md +1098 -0
  372. package/expertise/performance/web/ssr-and-hydration.md +918 -0
  373. package/expertise/performance/web/web-vitals.md +1374 -0
  374. package/expertise/quality/accessibility.md +985 -0
  375. package/expertise/quality/evidence-based-verification.md +499 -0
  376. package/expertise/quality/index.md +24 -0
  377. package/expertise/quality/ml-model-audit.md +614 -0
  378. package/expertise/quality/performance.md +600 -0
  379. package/expertise/quality/testing-api.md +891 -0
  380. package/expertise/quality/testing-mobile.md +496 -0
  381. package/expertise/quality/testing-web.md +849 -0
  382. package/expertise/security/PROGRESS.md +54 -0
  383. package/expertise/security/agentic-identity.md +540 -0
  384. package/expertise/security/compliance-frameworks.md +601 -0
  385. package/expertise/security/data/data-encryption.md +364 -0
  386. package/expertise/security/data/data-privacy-gdpr.md +692 -0
  387. package/expertise/security/data/database-security.md +1171 -0
  388. package/expertise/security/data/index.md +22 -0
  389. package/expertise/security/data/pii-handling.md +531 -0
  390. package/expertise/security/foundations/authentication.md +1041 -0
  391. package/expertise/security/foundations/authorization.md +603 -0
  392. package/expertise/security/foundations/cryptography.md +1001 -0
  393. package/expertise/security/foundations/index.md +25 -0
  394. package/expertise/security/foundations/owasp-top-10.md +1354 -0
  395. package/expertise/security/foundations/secrets-management.md +1217 -0
  396. package/expertise/security/foundations/secure-sdlc.md +700 -0
  397. package/expertise/security/foundations/supply-chain-security.md +698 -0
  398. package/expertise/security/index.md +31 -0
  399. package/expertise/security/infrastructure/cloud-security-aws.md +1296 -0
  400. package/expertise/security/infrastructure/cloud-security-gcp.md +1376 -0
  401. package/expertise/security/infrastructure/container-security.md +721 -0
  402. package/expertise/security/infrastructure/incident-response.md +1295 -0
  403. package/expertise/security/infrastructure/index.md +24 -0
  404. package/expertise/security/infrastructure/logging-and-monitoring.md +1618 -0
  405. package/expertise/security/infrastructure/network-security.md +1337 -0
  406. package/expertise/security/mobile/index.md +23 -0
  407. package/expertise/security/mobile/mobile-android-security.md +1218 -0
  408. package/expertise/security/mobile/mobile-binary-protection.md +1229 -0
  409. package/expertise/security/mobile/mobile-data-storage.md +1265 -0
  410. package/expertise/security/mobile/mobile-ios-security.md +1401 -0
  411. package/expertise/security/mobile/mobile-network-security.md +1520 -0
  412. package/expertise/security/smart-contract-security.md +594 -0
  413. package/expertise/security/testing/index.md +22 -0
  414. package/expertise/security/testing/penetration-testing.md +1258 -0
  415. package/expertise/security/testing/security-code-review.md +1765 -0
  416. package/expertise/security/testing/threat-modeling.md +1074 -0
  417. package/expertise/security/testing/vulnerability-scanning.md +1062 -0
  418. package/expertise/security/web/api-security.md +586 -0
  419. package/expertise/security/web/cors-and-headers.md +433 -0
  420. package/expertise/security/web/csrf.md +562 -0
  421. package/expertise/security/web/file-upload.md +1477 -0
  422. package/expertise/security/web/index.md +25 -0
  423. package/expertise/security/web/injection.md +1375 -0
  424. package/expertise/security/web/session-management.md +1101 -0
  425. package/expertise/security/web/xss.md +1158 -0
  426. package/exports/README.md +17 -0
  427. package/exports/hosts/claude/.claude/agents/clarifier.md +42 -0
  428. package/exports/hosts/claude/.claude/agents/content-author.md +63 -0
  429. package/exports/hosts/claude/.claude/agents/designer.md +55 -0
  430. package/exports/hosts/claude/.claude/agents/executor.md +55 -0
  431. package/exports/hosts/claude/.claude/agents/learner.md +51 -0
  432. package/exports/hosts/claude/.claude/agents/planner.md +53 -0
  433. package/exports/hosts/claude/.claude/agents/researcher.md +43 -0
  434. package/exports/hosts/claude/.claude/agents/reviewer.md +54 -0
  435. package/exports/hosts/claude/.claude/agents/specifier.md +47 -0
  436. package/exports/hosts/claude/.claude/agents/verifier.md +71 -0
  437. package/exports/hosts/claude/.claude/commands/author.md +42 -0
  438. package/exports/hosts/claude/.claude/commands/clarify.md +38 -0
  439. package/exports/hosts/claude/.claude/commands/design-review.md +46 -0
  440. package/exports/hosts/claude/.claude/commands/design.md +44 -0
  441. package/exports/hosts/claude/.claude/commands/discover.md +37 -0
  442. package/exports/hosts/claude/.claude/commands/execute.md +48 -0
  443. package/exports/hosts/claude/.claude/commands/learn.md +38 -0
  444. package/exports/hosts/claude/.claude/commands/plan-review.md +42 -0
  445. package/exports/hosts/claude/.claude/commands/plan.md +39 -0
  446. package/exports/hosts/claude/.claude/commands/prepare-next.md +37 -0
  447. package/exports/hosts/claude/.claude/commands/review.md +40 -0
  448. package/exports/hosts/claude/.claude/commands/run-audit.md +41 -0
  449. package/exports/hosts/claude/.claude/commands/spec-challenge.md +41 -0
  450. package/exports/hosts/claude/.claude/commands/specify.md +38 -0
  451. package/exports/hosts/claude/.claude/commands/verify.md +37 -0
  452. package/exports/hosts/claude/.claude/settings.json +34 -0
  453. package/exports/hosts/claude/CLAUDE.md +19 -0
  454. package/exports/hosts/claude/export.manifest.json +38 -0
  455. package/exports/hosts/claude/host-package.json +67 -0
  456. package/exports/hosts/codex/AGENTS.md +19 -0
  457. package/exports/hosts/codex/export.manifest.json +38 -0
  458. package/exports/hosts/codex/host-package.json +41 -0
  459. package/exports/hosts/cursor/.cursor/hooks.json +16 -0
  460. package/exports/hosts/cursor/.cursor/rules/wazir-core.mdc +19 -0
  461. package/exports/hosts/cursor/export.manifest.json +38 -0
  462. package/exports/hosts/cursor/host-package.json +42 -0
  463. package/exports/hosts/gemini/GEMINI.md +19 -0
  464. package/exports/hosts/gemini/export.manifest.json +38 -0
  465. package/exports/hosts/gemini/host-package.json +41 -0
  466. package/hooks/README.md +18 -0
  467. package/hooks/definitions/loop_cap_guard.yaml +21 -0
  468. package/hooks/definitions/post_tool_capture.yaml +24 -0
  469. package/hooks/definitions/pre_compact_summary.yaml +19 -0
  470. package/hooks/definitions/pre_tool_capture_route.yaml +19 -0
  471. package/hooks/definitions/protected_path_write_guard.yaml +19 -0
  472. package/hooks/definitions/session_start.yaml +19 -0
  473. package/hooks/definitions/stop_handoff_harvest.yaml +20 -0
  474. package/hooks/loop-cap-guard +17 -0
  475. package/hooks/post-tool-lint +36 -0
  476. package/hooks/protected-path-write-guard +17 -0
  477. package/hooks/session-start +41 -0
  478. package/llms-full.txt +2355 -0
  479. package/llms.txt +43 -0
  480. package/package.json +79 -0
  481. package/roles/README.md +20 -0
  482. package/roles/clarifier.md +42 -0
  483. package/roles/content-author.md +63 -0
  484. package/roles/designer.md +55 -0
  485. package/roles/executor.md +55 -0
  486. package/roles/learner.md +51 -0
  487. package/roles/planner.md +53 -0
  488. package/roles/researcher.md +43 -0
  489. package/roles/reviewer.md +54 -0
  490. package/roles/specifier.md +47 -0
  491. package/roles/verifier.md +71 -0
  492. package/schemas/README.md +24 -0
  493. package/schemas/accepted-learning.schema.json +20 -0
  494. package/schemas/author-artifact.schema.json +156 -0
  495. package/schemas/clarification.schema.json +19 -0
  496. package/schemas/design-artifact.schema.json +80 -0
  497. package/schemas/docs-claim.schema.json +18 -0
  498. package/schemas/export-manifest.schema.json +20 -0
  499. package/schemas/hook.schema.json +67 -0
  500. package/schemas/host-export-package.schema.json +18 -0
  501. package/schemas/implementation-plan.schema.json +19 -0
  502. package/schemas/proposed-learning.schema.json +19 -0
  503. package/schemas/research.schema.json +18 -0
  504. package/schemas/review.schema.json +29 -0
  505. package/schemas/run-manifest.schema.json +18 -0
  506. package/schemas/spec-challenge.schema.json +18 -0
  507. package/schemas/spec.schema.json +20 -0
  508. package/schemas/usage.schema.json +102 -0
  509. package/schemas/verification-proof.schema.json +29 -0
  510. package/schemas/wazir-manifest.schema.json +173 -0
  511. package/skills/README.md +40 -0
  512. package/skills/brainstorming/SKILL.md +77 -0
  513. package/skills/debugging/SKILL.md +50 -0
  514. package/skills/design/SKILL.md +61 -0
  515. package/skills/dispatching-parallel-agents/SKILL.md +128 -0
  516. package/skills/executing-plans/SKILL.md +70 -0
  517. package/skills/finishing-a-development-branch/SKILL.md +169 -0
  518. package/skills/humanize/SKILL.md +123 -0
  519. package/skills/init-pipeline/SKILL.md +124 -0
  520. package/skills/prepare-next/SKILL.md +20 -0
  521. package/skills/receiving-code-review/SKILL.md +123 -0
  522. package/skills/requesting-code-review/SKILL.md +105 -0
  523. package/skills/requesting-code-review/code-reviewer.md +108 -0
  524. package/skills/run-audit/SKILL.md +197 -0
  525. package/skills/scan-project/SKILL.md +41 -0
  526. package/skills/self-audit/SKILL.md +153 -0
  527. package/skills/subagent-driven-development/SKILL.md +154 -0
  528. package/skills/subagent-driven-development/code-quality-reviewer-prompt.md +26 -0
  529. package/skills/subagent-driven-development/implementer-prompt.md +102 -0
  530. package/skills/subagent-driven-development/spec-reviewer-prompt.md +61 -0
  531. package/skills/tdd/SKILL.md +23 -0
  532. package/skills/using-git-worktrees/SKILL.md +163 -0
  533. package/skills/using-skills/SKILL.md +95 -0
  534. package/skills/verification/SKILL.md +22 -0
  535. package/skills/wazir/SKILL.md +463 -0
  536. package/skills/writing-plans/SKILL.md +30 -0
  537. package/skills/writing-skills/SKILL.md +157 -0
  538. package/skills/writing-skills/anthropic-best-practices.md +122 -0
  539. package/skills/writing-skills/persuasion-principles.md +50 -0
  540. package/templates/README.md +20 -0
  541. package/templates/artifacts/README.md +10 -0
  542. package/templates/artifacts/accepted-learning.md +19 -0
  543. package/templates/artifacts/accepted-learning.template.json +12 -0
  544. package/templates/artifacts/author.md +74 -0
  545. package/templates/artifacts/author.template.json +19 -0
  546. package/templates/artifacts/clarification.md +21 -0
  547. package/templates/artifacts/clarification.template.json +12 -0
  548. package/templates/artifacts/execute-notes.md +19 -0
  549. package/templates/artifacts/implementation-plan.md +21 -0
  550. package/templates/artifacts/implementation-plan.template.json +11 -0
  551. package/templates/artifacts/learning-proposal.md +19 -0
  552. package/templates/artifacts/next-run-handoff.md +21 -0
  553. package/templates/artifacts/plan-review.md +19 -0
  554. package/templates/artifacts/proposed-learning.template.json +12 -0
  555. package/templates/artifacts/research.md +21 -0
  556. package/templates/artifacts/research.template.json +12 -0
  557. package/templates/artifacts/review-findings.md +19 -0
  558. package/templates/artifacts/review.template.json +11 -0
  559. package/templates/artifacts/run-manifest.template.json +8 -0
  560. package/templates/artifacts/spec-challenge.md +19 -0
  561. package/templates/artifacts/spec-challenge.template.json +11 -0
  562. package/templates/artifacts/spec.md +21 -0
  563. package/templates/artifacts/spec.template.json +12 -0
  564. package/templates/artifacts/verification-proof.md +19 -0
  565. package/templates/artifacts/verification-proof.template.json +11 -0
  566. package/templates/examples/accepted-learning.example.json +14 -0
  567. package/templates/examples/author.example.json +152 -0
  568. package/templates/examples/clarification.example.json +15 -0
  569. package/templates/examples/docs-claim.example.json +8 -0
  570. package/templates/examples/export-manifest.example.json +7 -0
  571. package/templates/examples/host-export-package.example.json +11 -0
  572. package/templates/examples/implementation-plan.example.json +17 -0
  573. package/templates/examples/proposed-learning.example.json +13 -0
  574. package/templates/examples/research.example.json +15 -0
  575. package/templates/examples/research.example.md +6 -0
  576. package/templates/examples/review.example.json +17 -0
  577. package/templates/examples/run-manifest.example.json +9 -0
  578. package/templates/examples/spec-challenge.example.json +14 -0
  579. package/templates/examples/spec.example.json +21 -0
  580. package/templates/examples/verification-proof.example.json +21 -0
  581. package/templates/examples/wazir-manifest.example.yaml +65 -0
  582. package/templates/task-definition-schema.md +99 -0
  583. package/tooling/README.md +20 -0
  584. package/tooling/src/adapters/context-mode.js +50 -0
  585. package/tooling/src/capture/command.js +376 -0
  586. package/tooling/src/capture/store.js +99 -0
  587. package/tooling/src/capture/usage.js +270 -0
  588. package/tooling/src/checks/branches.js +50 -0
  589. package/tooling/src/checks/brand-truth.js +110 -0
  590. package/tooling/src/checks/changelog.js +231 -0
  591. package/tooling/src/checks/command-registry.js +36 -0
  592. package/tooling/src/checks/commits.js +102 -0
  593. package/tooling/src/checks/docs-drift.js +103 -0
  594. package/tooling/src/checks/docs-truth.js +201 -0
  595. package/tooling/src/checks/runtime-surface.js +156 -0
  596. package/tooling/src/cli.js +116 -0
  597. package/tooling/src/command-options.js +56 -0
  598. package/tooling/src/commands/validate.js +320 -0
  599. package/tooling/src/doctor/command.js +91 -0
  600. package/tooling/src/export/command.js +77 -0
  601. package/tooling/src/export/compiler.js +498 -0
  602. package/tooling/src/guards/loop-cap-guard.js +52 -0
  603. package/tooling/src/guards/protected-path-write-guard.js +67 -0
  604. package/tooling/src/index/command.js +152 -0
  605. package/tooling/src/index/storage.js +1061 -0
  606. package/tooling/src/index/summarizers.js +261 -0
  607. package/tooling/src/loaders.js +18 -0
  608. package/tooling/src/project-root.js +22 -0
  609. package/tooling/src/recall/command.js +225 -0
  610. package/tooling/src/schema-validator.js +30 -0
  611. package/tooling/src/state-root.js +40 -0
  612. package/tooling/src/status/command.js +71 -0
  613. package/wazir.manifest.yaml +135 -0
  614. package/workflows/README.md +19 -0
  615. package/workflows/author.md +42 -0
  616. package/workflows/clarify.md +38 -0
  617. package/workflows/design-review.md +46 -0
  618. package/workflows/design.md +44 -0
  619. package/workflows/discover.md +37 -0
  620. package/workflows/execute.md +48 -0
  621. package/workflows/learn.md +38 -0
  622. package/workflows/plan-review.md +42 -0
  623. package/workflows/plan.md +39 -0
  624. package/workflows/prepare-next.md +37 -0
  625. package/workflows/review.md +40 -0
  626. package/workflows/run-audit.md +41 -0
  627. package/workflows/spec-challenge.md +41 -0
  628. package/workflows/specify.md +38 -0
  629. package/workflows/verify.md +37 -0
@@ -0,0 +1,699 @@
1
+ # Mobile iOS -- Design Expertise Module
2
+
3
+ > Comprehensive reference for designing native-quality iOS applications. Covers Apple's
4
+ > design philosophy, layout systems, component conventions, typography, system integration,
5
+ > and common pitfalls. Designed as a living checklist and decision guide for product
6
+ > designers and engineers building on the iOS platform.
7
+
8
+ > **Category:** Platform
9
+ > **Applies to:** Mobile (iOS)
10
+ > **Key sources:** Apple Human Interface Guidelines (HIG), WWDC 2023-2025 sessions, iOS SDK documentation
11
+
12
+ ---
13
+
14
+ ## 1. Platform Design Language
15
+
16
+ ### 1.1 Apple HIG Philosophy
17
+
18
+ Apple's Human Interface Guidelines rest on four foundational pillars that govern every
19
+ design decision across the platform:
20
+
21
+ **Clarity**
22
+ - Every element on screen must have a clear purpose.
23
+ - Eliminate unnecessary complexity; users should understand the interface at a glance.
24
+ - Text must be legible at every size. Icons must be precise and lucid.
25
+ - Use whitespace deliberately to establish hierarchy and reduce cognitive load.
26
+
27
+ **Deference**
28
+ - The UI should never compete with the user's content.
29
+ - Fluid motion and a crisp interface help people understand and interact with content
30
+ while never distracting from it.
31
+ - Translucency, blurs, and layering suggest depth without overwhelming the foreground.
32
+ - Chrome should recede; content should dominate.
33
+
34
+ **Depth**
35
+ - Visual layers and realistic motion convey hierarchy and facilitate understanding.
36
+ - Transitions and animations provide a sense of depth, helping users comprehend
37
+ spatial relationships between screens and elements.
38
+ - Parallax, scaling, and layered interfaces reinforce the sense of navigable space.
39
+
40
+ **Consistency**
41
+ - Adopt platform conventions to create a design that continuously adapts across window
42
+ sizes and displays.
43
+ - Familiar controls and standard gestures reduce the learning curve.
44
+ - Consistent behavior across the app and the system builds user trust.
45
+
46
+ ### 1.2 iOS Design Principles
47
+
48
+ **Direct Manipulation**
49
+ - People expect to interact directly with on-screen objects through gestures.
50
+ - Pinch to zoom, swipe to scroll, drag to reorder -- actions map intuitively to outcomes.
51
+ - Immediate visual feedback confirms every interaction.
52
+
53
+ **Feedback**
54
+ - Every user action must produce a perceptible response: visual, auditory, or haptic.
55
+ - Animations should not be decorative; they communicate cause and effect.
56
+ - Loading states, progress indicators, and state transitions keep users informed.
57
+
58
+ **Metaphors**
59
+ - Virtual objects and actions should reference real-world counterparts where helpful.
60
+ - Switches toggle, sliders slide, pages turn -- familiar metaphors reduce learning effort.
61
+ - Avoid metaphors that break down or confuse when taken too literally.
62
+
63
+ **User Control**
64
+ - People, not the app, are in control. The app can suggest or warn, but it does not
65
+ make irreversible decisions without explicit consent.
66
+ - Provide undo, cancel, and confirmation for destructive actions.
67
+ - Allow users to back out of any flow at any point.
68
+
69
+ ### 1.3 What Makes an App "Native"
70
+
71
+ An iOS app feels native when it:
72
+
73
+ - Uses standard UIKit/SwiftUI components (or customizes them within expected parameters).
74
+ - Respects system gestures: swipe-back navigation, pull-to-refresh, edge swipes.
75
+ - Supports Dynamic Type and respects the user's accessibility preferences.
76
+ - Integrates with system features: ShareSheet, Spotlight, Widgets, Quick Actions.
77
+ - Follows iOS navigation paradigms: tab bars for top-level, push navigation for drill-down.
78
+ - Uses SF Pro (or SF-derived system fonts) and the standard iOS spacing system.
79
+ - Provides haptic feedback at appropriate moments (toggles, destructive confirms, selections).
80
+ - Responds to system appearance: Dark Mode, tinted icons, Reduce Motion, Bold Text.
81
+ - Adapts to all current screen sizes without visual breakage.
82
+ - Performs at 60fps (120fps on ProMotion displays) with no dropped frames.
83
+
84
+ An app feels like a "cross-platform port" when it:
85
+
86
+ - Uses a hamburger/drawer menu instead of a tab bar for primary navigation.
87
+ - Places primary actions in a floating action button (FAB) -- an Android/Material pattern.
88
+ - Applies Material Design ripple effects instead of iOS highlight states.
89
+ - Uses custom fonts everywhere with no Dynamic Type support.
90
+ - Ignores the safe area, causing content to clip behind the notch or home indicator.
91
+ - Lacks swipe-back gesture support for navigation.
92
+ - Shows Android-style toast notifications instead of iOS banners or alerts.
93
+ - Has a bottom navigation bar that does not match iOS tab bar conventions (wrong height,
94
+ wrong icon style, labels missing).
95
+
96
+ ### 1.4 iOS 17/18 Design Updates
97
+
98
+ **iOS 17 Additions**
99
+ - *Interactive Widgets:* Widgets can now contain buttons and toggles that perform actions
100
+ without opening the app. Design tappable areas with minimum 44pt touch targets.
101
+ - *StandBy Mode:* A glanceable, always-on display activated when the iPhone is charging
102
+ on its side. Only the `systemSmall` widget family is available. Design for viewing at
103
+ a distance with high-contrast, large type.
104
+ - *Dynamic Island Enhancements:* Live Activities gained default SwiftUI animations for
105
+ data updates. Content must be concentric with the Dynamic Island's pill shape -- rounded
106
+ shapes nest inside with even margins.
107
+ - *Contact Posters:* Full-screen contact cards with custom photos, Memoji, and typography.
108
+
109
+ **iOS 18 Additions**
110
+ - *Home Screen Customization:* App icons and widgets can be freely placed anywhere on the
111
+ grid, breaking the rigid top-left alignment. Icons support automatic tinting and dark
112
+ mode variants.
113
+ - *Control Center Redesign:* Multiple pages of controls, resizable buttons, and support
114
+ for third-party controls. Designers should provide appropriately-sized SF Symbols for
115
+ control center integrations.
116
+ - *App Locking & Hiding:* Apps can be locked behind biometric/passcode authentication or
117
+ hidden entirely in a dedicated folder. Design should account for locked states gracefully.
118
+ - *Tinted Icon Mode:* System-wide monochrome tinting of app icons. Ensure app icons remain
119
+ recognizable in silhouette form.
120
+
121
+ **iOS 26 / Liquid Glass (WWDC 2025)**
122
+ - *Liquid Glass Material:* A translucent material that reflects and refracts its
123
+ surroundings, dynamically transforming controls, navigation elements, app icons,
124
+ widgets, and more. Real-time light bending, specular highlights responding to device
125
+ motion, and adaptive shadows.
126
+ - *Adaptive Tab Bars:* Tab bars and sidebars crafted from Liquid Glass. When users scroll,
127
+ tab bars shrink to bring focus to content; scrolling back up causes them to expand
128
+ fluidly.
129
+ - *Visual Continuity:* The design extends uniformly across iOS 26, iPadOS 26, macOS
130
+ Tahoe 26, watchOS 26, and tvOS 26, establishing deeper cross-platform harmony while
131
+ preserving each platform's distinct qualities.
132
+ - *Bolder Typography:* Left-aligned, bolder system typography with concentricity --
133
+ a unified rhythm between hardware and software form factors.
134
+
135
+ ---
136
+
137
+ ## 2. Layout & Navigation Patterns
138
+
139
+ ### 2.1 Tab Bar
140
+
141
+ The tab bar is the primary navigation pattern for top-level destinations in iOS.
142
+
143
+ | Property | Value / Guideline |
144
+ |-----------------------|---------------------------------------------------------|
145
+ | Height | 49pt (standard), extends into safe area on notched devices |
146
+ | Maximum tabs | 5 on iPhone (3-5 recommended); more acceptable on iPad |
147
+ | Minimum tabs | 2 (below 2, tab bar is unnecessary) |
148
+ | Icon size | 25x25pt (@1x), 50x50pt (@2x), 75x75pt (@3x) |
149
+ | Labels | Always include text labels below icons |
150
+ | Position | Always at the bottom of the screen |
151
+ | Visibility | Always visible; never hidden behind gestures or scrolls |
152
+ | Badge support | Numeric or dot badges for notifications |
153
+ | Active state | Filled icon + tint color; inactive = outline + gray |
154
+
155
+ **Design rules:**
156
+ - Use tab bars strictly for navigation, never for actions (e.g., no "compose" tab).
157
+ - Each tab should lead to a distinct section, not a variation of the same content.
158
+ - The tab bar should persist across all screens within a tab's hierarchy.
159
+ - On iOS 26 (Liquid Glass): tab bars shrink during scroll and expand on scroll-back.
160
+
161
+ ### 2.2 Navigation Bar
162
+
163
+ The navigation bar provides context and controls at the top of a view hierarchy.
164
+
165
+ | Property | Value / Guideline |
166
+ |-----------------------|---------------------------------------------------------|
167
+ | Standard height | 44pt (content area, excluding status bar) |
168
+ | Large title height | ~96pt when expanded, collapses to 44pt on scroll |
169
+ | Status bar height | 54pt (Dynamic Island devices), 44pt (notch), 20pt (legacy) |
170
+ | Back button | System chevron + previous screen's title (auto-truncated)|
171
+ | Right bar items | Max 1-2 action buttons; use SF Symbols |
172
+ | Title alignment | Centered (inline mode) or left-aligned (large title mode)|
173
+
174
+ **Large title mode:**
175
+ - Use for top-level screens (first screen in a tab's hierarchy).
176
+ - The title collapses smoothly to inline mode on scroll.
177
+ - Title font is 34pt bold (system `.largeTitle` style).
178
+
179
+ **Inline mode:**
180
+ - Use for detail/secondary screens.
181
+ - Title font is 17pt semibold, centered.
182
+
183
+ **Design rules:**
184
+ - Always provide a back button (system handles this automatically with push navigation).
185
+ - Never replace the system back gesture (swipe from left edge).
186
+ - Avoid placing more than two buttons on the right side of the navigation bar.
187
+ - Search bars can be embedded below the navigation bar and collapse on scroll.
188
+
189
+ ### 2.3 Sheet Presentations
190
+
191
+ Sheets are modal presentations that slide up from the bottom.
192
+
193
+ **System detents:**
194
+ - `.medium` -- approximately half the screen height. Disabled automatically in landscape.
195
+ - `.large` -- full screen height (standard modal behavior).
196
+ - Custom detents: `.fraction(0.25)` for quarter-height, `.height(200)` for fixed pixel
197
+ height, or fully custom calculated heights.
198
+
199
+ **Design rules:**
200
+ - When multiple detents are specified, the system adds a drag indicator automatically.
201
+ - Use `.medium` for quick contextual tasks (filter panels, short forms).
202
+ - Use `.large` for full-content views (compose screens, detailed forms).
203
+ - Sheets can be made non-dismissible (`interactiveDismissDisabled(true)`) -- use
204
+ sparingly, only when data loss would occur.
205
+ - In landscape, all sheets default to `.large` regardless of specified detents.
206
+ - Background content behind a `.medium` sheet remains interactive by default (can be
207
+ disabled with `presentationBackgroundInteraction`).
208
+
209
+ ### 2.4 Safe Areas
210
+
211
+ Safe areas prevent content from being obscured by system UI elements.
212
+
213
+ | Region | Inset (approx.) |
214
+ |------------------------------|--------------------------------------------------------|
215
+ | Top (Dynamic Island devices) | 59pt |
216
+ | Top (notch devices) | 44pt |
217
+ | Top (legacy, no notch) | 20pt (status bar only) |
218
+ | Bottom (home indicator) | 34pt |
219
+ | Bottom (home button devices) | 0pt |
220
+ | Landscape leading/trailing | 44pt (notch side) + additional for curved edges |
221
+
222
+ **Design rules:**
223
+ - Never place interactive controls outside safe areas.
224
+ - Background colors/images may extend edge-to-edge (behind safe areas).
225
+ - Always use Auto Layout or SwiftUI's `.safeAreaInset()` -- never hardcode inset values.
226
+ - Test layouts on smallest (iPhone SE) and largest (Pro Max) devices in both orientations.
227
+ - The home indicator area is not tappable; do not place buttons there.
228
+
229
+ ### 2.5 Screen Sizes
230
+
231
+ iOS uses a point-based coordinate system that abstracts physical pixel density.
232
+
233
+ | Device Family | Screen (points) | Scale | Physical Pixels |
234
+ |----------------------------|-------------------|-------|--------------------|
235
+ | iPhone SE (3rd gen) | 375 x 667 | @2x | 750 x 1334 |
236
+ | iPhone 14 / 15 / 16 | 393 x 852 | @3x | 1179 x 2556 |
237
+ | iPhone 14/15/16 Plus | 430 x 932 | @3x | 1290 x 2796 |
238
+ | iPhone 15/16 Pro | 393 x 852 | @3x | 1179 x 2556 |
239
+ | iPhone 15/16 Pro Max | 430 x 932 | @3x | 1290 x 2796 |
240
+ | iPhone 16 Pro | 402 x 874 | @3x | 1206 x 2622 |
241
+ | iPhone 16 Pro Max | 440 x 956 | @3x | 1320 x 2868 |
242
+ | iPhone 16e | 390 x 844 | @3x | 1170 x 2532 |
243
+
244
+ **Design rules:**
245
+ - Design at @1x (points), export assets at @1x, @2x, @3x (or use vector/PDF/SVG).
246
+ - Use flexible layouts that adapt to any width between 320pt and 440pt.
247
+ - Test on the smallest supported device (SE at 375pt) and largest (Pro Max at 440pt).
248
+ - Avoid pixel-perfect fixed layouts; use constraint-based or stack-based approaches.
249
+ - On larger iPhones (Plus/Pro Max) in landscape, split views may be available.
250
+
251
+ ### 2.6 Split View on Larger iPhones
252
+
253
+ - iPhone Plus and Pro Max devices support `UISplitViewController` in landscape.
254
+ - The primary column shows a list/master view; the secondary shows detail.
255
+ - Design both columns as independently usable views.
256
+ - In portrait, the split view collapses to a single-column navigation stack.
257
+ - Not all apps benefit from split view -- only enable it if your content model is
258
+ list-detail oriented.
259
+
260
+ ---
261
+
262
+ ## 3. Component Conventions
263
+
264
+ ### 3.1 Action Sheets vs. Alerts
265
+
266
+ **Alerts (`UIAlertController` with `.alert` style)**
267
+ - Use for important information that requires acknowledgment or a binary decision.
268
+ - Maximum 2 buttons preferred (e.g., "Cancel" / "Delete").
269
+ - Appears centered on screen as a modal dialog.
270
+ - Title should be short; message is optional but should be concise.
271
+ - Destructive actions use red text (`.destructive` style).
272
+
273
+ **Action Sheets (`UIAlertController` with `.actionSheet` style)**
274
+ - Use to offer 2-4 choices related to an intentional action the user just took.
275
+ - Appears anchored to the bottom of the screen (iPhone) or as a popover (iPad).
276
+ - Always include a Cancel button.
277
+ - Avoid more than 4 buttons total (including Cancel) -- scrolling action sheets are
278
+ difficult to use without accidentally tapping.
279
+ - Use when the user needs to choose *how* to proceed (e.g., "Save Draft" / "Delete Draft"
280
+ / "Cancel" when dismissing a compose screen).
281
+
282
+ **When to use which:**
283
+ - Alert = "Something happened, acknowledge it" or "Are you sure?"
284
+ - Action Sheet = "You started something, how do you want to proceed?"
285
+
286
+ ### 3.2 Context Menus
287
+
288
+ - Triggered by long-press (touch-and-hold) on any element.
289
+ - The element lifts and a menu of actions appears with a blurred background.
290
+ - Include a preview of the item when relevant (e.g., link previews, image previews).
291
+ - Actions should be contextually relevant to the pressed element.
292
+ - Group related actions with separators.
293
+ - Destructive actions appear in red at the bottom of the menu.
294
+ - Context menus replace the deprecated peek-and-pop (3D Touch) interaction.
295
+
296
+ ### 3.3 Pull-to-Refresh
297
+
298
+ - Standard pattern for refreshing list/scroll content.
299
+ - The system provides `UIRefreshControl` -- use it as-is; do not build custom pull
300
+ mechanisms that deviate from expected behavior.
301
+ - The spinner appears below the navigation bar and pushes content down.
302
+ - End the refresh promptly; never leave the spinner visible for more than a few seconds
303
+ without content updating.
304
+
305
+ ### 3.4 Swipe Actions
306
+
307
+ **Trailing swipe (right-to-left gesture):**
308
+ - Reserved for destructive or terminal actions: Delete, Archive, Mute.
309
+ - Delete actions should be red. Archive can be purple or blue (following Mail conventions).
310
+ - Full swipe should trigger the first (primary) action.
311
+
312
+ **Leading swipe (left-to-right gesture):**
313
+ - Reserved for non-destructive, additive actions: Pin, Unread, Flag, Favorite.
314
+ - Use green, blue, or orange to signal constructive intent.
315
+
316
+ **Design rules:**
317
+ - Maximum 3 actions per side (but prefer 1-2 for usability).
318
+ - Each action needs an icon and a text label.
319
+ - Maintain consistency: the same swipe direction should mean the same type of action
320
+ across the entire app.
321
+ - Provide the same actions in context menus for discoverability (swipe actions are hidden).
322
+
323
+ ### 3.5 iOS Keyboard Types & Input Accessories
324
+
325
+ **Keyboard types** (set via `keyboardType`):
326
+ - `.default` -- standard QWERTY, general text input.
327
+ - `.emailAddress` -- includes `@` and `.` prominently displayed.
328
+ - `.URL` -- includes `/`, `.`, and `.com` shortcut.
329
+ - `.numberPad` -- digits 0-9 only, no return key.
330
+ - `.decimalPad` -- digits 0-9 plus decimal point.
331
+ - `.phonePad` -- phone number layout with `+`, `*`, `#`.
332
+ - `.numbersAndPunctuation` -- numbers with common punctuation.
333
+ - `.twitter` -- includes `@` and `#` (social media handles).
334
+ - `.webSearch` -- includes a prominent "Go" button.
335
+ - `.asciiCapable` -- standard keyboard without emoji access.
336
+
337
+ **Design rules for keyboard input:**
338
+ - Always use the most specific keyboard type for the field (email fields get email
339
+ keyboard, phone fields get phone pad, etc.).
340
+ - When the keyboard appears, scroll the active field into view -- never let the keyboard
341
+ obscure the input.
342
+ - Use input accessory views (toolbar above the keyboard) for "Done", "Next", "Previous"
343
+ navigation between fields.
344
+ - For numeric-only inputs that need a "Done" button, add a custom input accessory view
345
+ since the number pad has no return key.
346
+ - Set `textContentType` to enable AutoFill (`.emailAddress`, `.password`,
347
+ `.oneTimeCode`, `.fullStreetAddress`, etc.).
348
+
349
+ ### 3.6 Haptic Feedback Patterns
350
+
351
+ iOS provides three feedback generator types via `UIFeedbackGenerator`:
352
+
353
+ **UIImpactFeedbackGenerator**
354
+ - Styles: `.light`, `.medium`, `.heavy`, `.soft`, `.rigid`
355
+ - Use for: confirming a physical interaction -- a snap into place, a collision, a weight
356
+ landing. Example: snapping a dragged item into a drop zone.
357
+
358
+ **UINotificationFeedbackGenerator**
359
+ - Types: `.success`, `.warning`, `.error`
360
+ - Success: light double-tap. Warning: medium single tap. Error: triple tap with
361
+ increasing intensity.
362
+ - Use for: communicating the result of an action. Example: payment succeeded, form
363
+ validation failed, warning threshold reached.
364
+
365
+ **UISelectionFeedbackGenerator**
366
+ - Single subtle tick.
367
+ - Use for: scrolling through discrete options (picker wheel, segment changes, slider
368
+ snapping to values). Example: rotating a date picker.
369
+
370
+ **Design rules:**
371
+ - Call `prepare()` before triggering feedback to reduce latency (the Taptic Engine
372
+ enters a prepared state for several seconds).
373
+ - Never use haptics purely for decoration or novelty.
374
+ - Match haptic type to its documented meaning -- users learn to recognize system-defined
375
+ patterns. Do not pick a haptic "because it feels good."
376
+ - Pair haptics with visual and/or auditory feedback for multimodal reinforcement.
377
+ - Respect the system's "Vibration" setting -- `UIFeedbackGenerator` automatically
378
+ honors this preference.
379
+ - Avoid overuse: too many haptics desensitize the user and reduce the signal value.
380
+
381
+ ### 3.7 System Integration Points
382
+
383
+ **ShareSheet (Activity View)**
384
+ - Presented via `UIActivityViewController`.
385
+ - Shows a standard share interface with AirDrop, Messages, Mail, and third-party
386
+ extensions.
387
+ - Provide app-specific actions that appear before system actions (e.g., "Copy Link",
388
+ "Add to Collection").
389
+ - Supply the correct activity items: `URL`, `String`, `UIImage`, or custom
390
+ `UIActivityItemSource` objects.
391
+
392
+ **Home Screen Quick Actions (3D Touch / Haptic Touch)**
393
+ - Provide up to 4 quick actions accessible via long-press on the app icon.
394
+ - Each action needs a title, optional subtitle, and an SF Symbol icon.
395
+ - Prioritize the most common user tasks (e.g., "New Message", "Search", "Recent Order").
396
+ - Actions should deep-link to the relevant screen immediately.
397
+
398
+ **Spotlight Integration**
399
+ - Index app content with `CSSearchableItem` so it appears in Spotlight search.
400
+ - Provide App Shortcuts via App Intents framework for action-based Spotlight results.
401
+ - Each shortcut needs a short title and a system image (SF Symbol).
402
+ - Focus on habitual, essential actions the user performs frequently.
403
+
404
+ **Widgets**
405
+ - Available in small, medium, large, and extra-large (iPad) sizes.
406
+ - Must use SwiftUI and WidgetKit -- no UIKit.
407
+ - Design for glanceability: show the most important information at a glance.
408
+ - Interactive widgets (iOS 17+): support buttons and toggles that execute actions via
409
+ App Intents without launching the app.
410
+ - Provide ample margins; avoid extending content to widget edges.
411
+ - Use the system-provided background; avoid custom backgrounds for consistency.
412
+ - Text should use the system font in dark gray/black for legibility.
413
+
414
+ **Live Activities & Dynamic Island**
415
+ - Live Activities display real-time data on the Lock Screen and in the Dynamic Island.
416
+ - Maximum active duration: 8 hours (system auto-ends after this).
417
+ - Compact presentation: two elements flanking the TrueDepth camera. Keep content minimal.
418
+ - Expanded presentation: shows when the user long-presses the compact view. Can display
419
+ richer information with leading, trailing, center, and bottom regions.
420
+ - Design principle: concentricity -- rounded shapes nest inside each other with even
421
+ margins, harmonizing with the Dynamic Island's pill shape.
422
+ - Lock Screen presentation: a banner-style widget below the time. Design for glanceability.
423
+ - Use SwiftUI animations for data transitions (default animations are provided from iOS 17).
424
+ - Avoid placing critical interactive elements in the compact view -- it is primarily
425
+ informational.
426
+
427
+ ---
428
+
429
+ ## 4. Typography & Spacing System
430
+
431
+ ### 4.1 SF Pro Type Scale
432
+
433
+ Apple's system font is SF Pro, available in two optical variants:
434
+ - **SF Pro Display:** Optimized for sizes 20pt and above. Tighter letter spacing.
435
+ - **SF Pro Text:** Optimized for sizes below 20pt. Wider letter spacing for readability.
436
+
437
+ The system automatically selects the correct variant based on the text style used.
438
+
439
+ **iOS Dynamic Type text styles at the default "Large" size:**
440
+
441
+ | Text Style | Default Size | Weight | Typical Use |
442
+ |-----------------|-------------|------------|--------------------------------------|
443
+ | `.largeTitle` | 34pt | Regular | Top-level screen titles |
444
+ | `.title1` | 28pt | Regular | Section titles |
445
+ | `.title2` | 22pt | Regular | Subsection titles |
446
+ | `.title3` | 20pt | Regular | Grouped content titles |
447
+ | `.headline` | 17pt | Semibold | Emphasized body text, row titles |
448
+ | `.body` | 17pt | Regular | Primary readable content |
449
+ | `.callout` | 16pt | Regular | Secondary descriptive text |
450
+ | `.subheadline` | 15pt | Regular | Tertiary labels, metadata |
451
+ | `.footnote` | 13pt | Regular | Timestamps, auxiliary info |
452
+ | `.caption1` | 12pt | Regular | Captions, annotations |
453
+ | `.caption2` | 11pt | Regular | Smallest readable text |
454
+
455
+ **Historical context:**
456
+ - iOS 7 introduced 6 text styles: headline, subheadline, body, footnote, caption1, caption2.
457
+ - iOS 9 added title1, title2, title3, callout.
458
+ - iOS 11 added largeTitle.
459
+
460
+ ### 4.2 Dynamic Type Support
461
+
462
+ Dynamic Type allows users to choose their preferred text size from the system Settings.
463
+ Supporting it is required for App Store editorial features and expected for accessibility.
464
+
465
+ **Size categories (smallest to largest):**
466
+ `xSmall` | `Small` | `Medium` | **`Large` (default)** | `xLarge` | `xxLarge` | `xxxLarge` |
467
+ `AX1` | `AX2` | `AX3` | `AX4` | `AX5`
468
+
469
+ The last five (AX1-AX5) are "Accessibility" sizes for users with visual impairments.
470
+
471
+ **Design rules:**
472
+ - Use system text styles (`UIFont.preferredFont(forTextStyle:)` in UIKit, `.font(.body)`
473
+ in SwiftUI) instead of hardcoded font sizes.
474
+ - If using custom fonts, register them for Dynamic Type scaling with
475
+ `UIFontMetrics.default.scaledFont(for:)`.
476
+ - Test at the smallest (xSmall) and largest (AX5) sizes.
477
+ - At larger accessibility sizes, layouts may need to reflow: horizontal arrangements
478
+ should stack vertically, and truncation should be replaced by wrapping.
479
+ - `.caption2` will not scale below 11pt regardless of the user's size preference -- this
480
+ is the platform's minimum readable size.
481
+ - Never clamp text at a fixed size; always allow it to scale with the user's preference.
482
+
483
+ ### 4.3 iOS Spacing System
484
+
485
+ iOS uses an 8pt base unit for spacing, with 4pt as the half-step for fine adjustments.
486
+
487
+ | Spacing Token | Value | Use Case |
488
+ |------------------------|---------|---------------------------------------------|
489
+ | Content margin | 16pt | Leading/trailing padding for screen content |
490
+ | Compact margin | 8pt | Tighter layouts, widget interiors |
491
+ | Section spacing | 35pt | Vertical gap between grouped sections |
492
+ | List row height | 44pt | Minimum tappable height for list rows |
493
+ | Inter-element gap | 8pt | Standard gap between sibling elements |
494
+ | Fine gap | 4pt | Tight spacing (icon-to-label, badge offset) |
495
+ | Touch target minimum | 44x44pt | Apple's minimum recommended touch target |
496
+
497
+ ### 4.4 List Insets and Section Spacing
498
+
499
+ **Grouped list style (`.insetGrouped`):**
500
+ - Leading/trailing inset: 20pt from screen edge (creating the "card" appearance).
501
+ - Section header height: varies; typically 18pt font with 6pt top/bottom padding.
502
+ - Section footer: smaller font (13pt), used for explanatory text.
503
+ - Row separator: 1px line, inset from the leading edge by the cell's text margin.
504
+
505
+ **Plain list style:**
506
+ - Content extends edge-to-edge.
507
+ - Section headers are sticky (pin to top during scroll).
508
+ - Row separator extends full width.
509
+
510
+ **Design rules:**
511
+ - Maintain at least 8pt vertical gap between heading levels.
512
+ - Use at least 4pt between a subheading and its body text.
513
+ - Group related controls into sections with descriptive headers and footers.
514
+ - Footer text in settings-style screens should explain the effect of the controls above.
515
+
516
+ ---
517
+
518
+ ## 5. Common Mistakes
519
+
520
+ ### 5.1 Patterns That Make an App Feel Non-Native
521
+
522
+ **Navigation anti-patterns:**
523
+ - Using a hamburger/drawer menu as the primary navigation instead of a tab bar. iOS users
524
+ expect bottom tab bars; hamburger menus hide destinations and reduce engagement.
525
+ - Placing navigation at the top of the screen in a custom toolbar that does not match
526
+ the system navigation bar's behavior (no large titles, no swipe-back support).
527
+ - Implementing a floating action button (FAB) for the primary action. This is a Material
528
+ Design pattern. On iOS, primary actions belong in the navigation bar (right side) or
529
+ as a toolbar button.
530
+
531
+ **Visual anti-patterns:**
532
+ - Applying Material Design ripple effects on tap instead of iOS's highlight/opacity
533
+ dimming behavior.
534
+ - Using sharp-cornered cards or containers when iOS uses a standard 10-13pt corner radius.
535
+ - Implementing Android-style snackbars or toast messages instead of iOS banners, alerts,
536
+ or in-context status messages.
537
+ - Using custom checkbox or radio button styles instead of iOS toggles (`UISwitch`) and
538
+ system-standard selection indicators.
539
+ - Bottom sheets that do not use the system's detent behavior (no drag indicator, no
540
+ snap points, no background interaction support).
541
+
542
+ **Interaction anti-patterns:**
543
+ - Disabling or overriding the system swipe-back gesture for navigation.
544
+ - Not supporting pull-to-refresh on scrollable content that could be updated.
545
+ - Ignoring haptic feedback entirely, or using it indiscriminately.
546
+ - Using a back arrow (`<-`) custom icon instead of the system chevron (`<`).
547
+
548
+ **Layout anti-patterns:**
549
+ - Hardcoding layout values instead of using Auto Layout / SwiftUI flexible layouts.
550
+ - Ignoring safe areas, causing content to render behind the notch, Dynamic Island,
551
+ or home indicator.
552
+ - Not testing on iPhone SE (smallest) and Pro Max (largest) screen sizes.
553
+ - Designing only for portrait orientation when users may rotate their device.
554
+
555
+ ### 5.2 Android Patterns Wrongly Used on iOS
556
+
557
+ | Android Pattern | iOS Equivalent |
558
+ |---------------------------|------------------------------------------------------|
559
+ | Hamburger / drawer menu | Tab bar (bottom, 3-5 tabs) |
560
+ | Floating Action Button | Navigation bar button (right) or toolbar button |
561
+ | Material ripple effect | Opacity dim / highlight state |
562
+ | Snackbar / Toast | Banner notification, in-context message, or alert |
563
+ | Top tabs (ViewPager) | Segmented control or top scope bar |
564
+ | Bottom sheet (Material) | Sheet with `.presentationDetents` (system behavior) |
565
+ | Checkbox | UISwitch toggle or checkmark accessory |
566
+ | Navigation drawer | Tab bar + push navigation |
567
+ | Edge-to-edge status bar | Respect safe area insets |
568
+ | Back arrow (`<-`) | System chevron (`<`) with previous title |
569
+
570
+ ### 5.3 Performance-Impacting Design Choices
571
+
572
+ - **Overuse of blur effects:** Multiple overlapping `UIVisualEffectView` layers are
573
+ GPU-intensive. Limit blur usage to 1-2 layers maximum.
574
+ - **Unoptimized images:** Serving full-resolution photos in thumbnail contexts. Always
575
+ downscale images to the display size before rendering.
576
+ - **Excessive animations:** Complex, long-duration animations (>0.3s) on every
577
+ interaction cause perceived slowness. Keep transitions under 300ms.
578
+ - **Main thread blocking:** Performing network calls, image processing, or database
579
+ queries on the main thread causes visible frame drops. All heavy work must be async.
580
+ - **Over-rendering in lists:** Complex cell layouts with shadows, rounded corners, and
581
+ gradient backgrounds on every visible cell. Pre-render shadows with
582
+ `shadowPath` and enable `shouldRasterize` judiciously.
583
+ - **Memory-heavy view hierarchies:** Deeply nested view hierarchies (10+ levels) slow
584
+ layout passes. Flatten view hierarchies where possible.
585
+ - **Large asset bundles:** Including @3x assets without @2x or @1x wastes memory on
586
+ older devices. Use asset catalogs with all required scales, or use SF Symbols / PDFs.
587
+
588
+ ---
589
+
590
+ ## 6. iOS Design Correctness Checklist
591
+
592
+ Use this checklist to verify that a design meets iOS platform standards before handoff
593
+ to development or before App Store submission.
594
+
595
+ ### Navigation & Structure
596
+
597
+ - [ ] Primary navigation uses a tab bar with 3-5 tabs (not a hamburger menu).
598
+ - [ ] Tab bar is always visible and positioned at the screen bottom.
599
+ - [ ] Navigation bar uses large titles on top-level screens and inline titles on detail screens.
600
+ - [ ] System swipe-back gesture is preserved and functional on all push-navigated screens.
601
+ - [ ] Sheets use system detents (`.medium`, `.large`, or custom) with a drag indicator.
602
+
603
+ ### Layout & Responsiveness
604
+
605
+ - [ ] All content respects safe area insets (no clipping behind notch, Dynamic Island, or home indicator).
606
+ - [ ] Layout tested on iPhone SE (375pt width) and Pro Max (440pt width) in both orientations.
607
+ - [ ] Touch targets are at least 44x44pt for all interactive elements.
608
+ - [ ] Content margins are 16pt (standard) or 20pt (inset grouped lists).
609
+ - [ ] Design adapts gracefully when text is scaled to the largest Dynamic Type size (AX5).
610
+
611
+ ### Typography & Visual
612
+
613
+ - [ ] Text uses system text styles (`.body`, `.headline`, `.caption1`, etc.) or fonts
614
+ registered with `UIFontMetrics` for Dynamic Type support.
615
+ - [ ] SF Pro (or system font) is used for UI chrome; custom fonts are reserved for
616
+ brand-specific content areas.
617
+ - [ ] Dark Mode is fully supported with appropriate color contrast in both appearances.
618
+ - [ ] Destructive actions are colored red; primary actions use the app's tint color.
619
+
620
+ ### Components & Interactions
621
+
622
+ - [ ] Action sheets are used for contextual choices (not alerts); alerts are used for
623
+ confirmations and acknowledgments.
624
+ - [ ] Swipe actions follow convention: trailing for destructive, leading for constructive.
625
+ - [ ] Haptic feedback is used for meaningful state changes (toggles, confirmations, selections)
626
+ and matches the correct feedback type.
627
+ - [ ] Keyboard type matches the input field's content type (email, URL, number, phone).
628
+ - [ ] Pull-to-refresh is implemented on refreshable content using `UIRefreshControl`.
629
+
630
+ ### System Integration
631
+
632
+ - [ ] ShareSheet uses `UIActivityViewController` with appropriate item types.
633
+ - [ ] Home Screen Quick Actions provide 1-4 high-value shortcuts with SF Symbol icons.
634
+ - [ ] Widgets (if applicable) are SwiftUI-based, glanceable, and support interactive
635
+ elements on iOS 17+.
636
+ - [ ] App content is indexed for Spotlight search where relevant.
637
+
638
+ ### Performance & Quality
639
+
640
+ - [ ] Scrolling maintains 60fps (120fps on ProMotion) with no visible frame drops.
641
+ - [ ] Images are appropriately sized for their display context (not full-res in thumbnails).
642
+ - [ ] No main-thread blocking operations during user interaction.
643
+
644
+ ---
645
+
646
+ ## Appendix A: Key Dimensions Quick Reference
647
+
648
+ ```
649
+ Status Bar Height
650
+ Dynamic Island devices: 59pt (including island)
651
+ Notch devices: 44pt
652
+ Legacy (no notch): 20pt
653
+
654
+ Navigation Bar: 44pt (content area)
655
+ Tab Bar: 49pt (content area)
656
+ Toolbar: 44pt
657
+
658
+ Home Indicator: 34pt (bottom safe area)
659
+ Corner Radius (standard): 10-13pt (system cards, grouped lists)
660
+ Minimum Touch Target: 44 x 44pt
661
+
662
+ Standard Content Margins: 16pt (leading/trailing)
663
+ Base Spacing Unit: 8pt
664
+ Half-Step Unit: 4pt
665
+ ```
666
+
667
+ ## Appendix B: SF Symbol Usage Guidelines
668
+
669
+ - Use SF Symbols for all system-integrated iconography (tab bars, navigation bars,
670
+ toolbars, action sheets, quick actions, widgets).
671
+ - SF Symbols come in nine weights (ultralight through black) and three scales
672
+ (small, medium, large) to match text alongside them.
673
+ - Rendering modes: monochrome (single tint), hierarchical (layered opacity), palette
674
+ (custom multi-color), multicolor (fixed system colors).
675
+ - Use hierarchical rendering for depth in toolbar icons.
676
+ - Use multicolor for status indicators (e.g., battery, wifi) where color carries meaning.
677
+ - Custom symbols can be created in the SF Symbols app and exported for use in Xcode.
678
+ - Always prefer an existing SF Symbol over a custom icon when one is available -- users
679
+ recognize system icons, reducing cognitive load.
680
+
681
+ ## Appendix C: Accessibility Beyond Dynamic Type
682
+
683
+ - **VoiceOver:** Every interactive element must have an accessibility label. Images need
684
+ descriptions. Decorative images should be hidden from VoiceOver.
685
+ - **Reduce Motion:** When enabled, replace spring animations and parallax effects with
686
+ simple dissolves. Check `UIAccessibility.isReduceMotionEnabled`.
687
+ - **Bold Text:** When enabled, all text should render in a heavier weight. System fonts
688
+ handle this automatically; custom fonts need manual support.
689
+ - **Increase Contrast:** When enabled, reduce translucency and increase border/separator
690
+ contrast. Check `UIAccessibility.isDarkerSystemColorsEnabled`.
691
+ - **Button Shapes:** When enabled, text buttons should show an underline or background
692
+ shape to indicate tappability.
693
+ - **Color Blindness:** Never rely on color alone to convey information. Pair color with
694
+ icons, labels, or patterns.
695
+ - **Minimum contrast ratio:** 4.5:1 for body text, 3:1 for large text (per WCAG 2.1 AA).
696
+
697
+ ---
698
+
699
+ *Researched: 2026-03-07 | Sources: Apple Human Interface Guidelines (developer.apple.com/design/human-interface-guidelines), WWDC 2023 sessions (Design Dynamic Live Activities, Design Shortcuts for Spotlight, Keep Up with the Keyboard), WWDC 2025 (Get to Know the New Design System, Liquid Glass introduction), iOS SDK documentation (UIFeedbackGenerator, UIActivityViewController, WidgetKit), ios-resolution.com, learnui.design iOS font size guidelines, uxpin.com iOS vs Android comparison*