@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,452 @@
1
+ # Mobile Network -- Performance Expertise Module
2
+
3
+ > Mobile networks are unreliable, high-latency, and bandwidth-constrained compared to desktop. Median 4G latency is 30-70ms RTT; on 3G it is 100-500ms. Network transitions (WiFi to cellular) cause connection drops. Apps must be designed for variable network conditions, not just fast WiFi.
4
+
5
+ > **Impact:** High
6
+ > **Applies to:** Mobile (iOS, Android, Flutter, React Native)
7
+ > **Key metrics:** API response time on mobile networks, Data transferred (MB), Request count per session, Offline capability, Time to first meaningful data
8
+
9
+ ---
10
+
11
+ ## Why This Matters
12
+
13
+ ### The Mobile Network Reality
14
+
15
+ Mobile networks are fundamentally different from wired connections. Engineers who optimize only on office WiFi ship apps that fail in the real world.
16
+
17
+ **Latency by network generation (typical RTT):**
18
+
19
+ | Network | Typical RTT | Theoretical Min | Peak Download |
20
+ |---------|-------------|-----------------|---------------|
21
+ | 2G EDGE | 300-1000ms | 100ms | 384 Kbps |
22
+ | 3G HSPA | 100-500ms | 88ms | 42 Mbps |
23
+ | 4G LTE | 30-70ms | 10-20ms | 300 Mbps |
24
+ | 5G low-band | 15-30ms | 5ms | 1 Gbps |
25
+ | 5G mid-band | 5-15ms | 1ms | 4 Gbps |
26
+
27
+ Source: mvno-index.com; Ericsson Mobility Report 2024; hpbn.co/mobile-networks/
28
+
29
+ A single API call on 3G with DNS + TLS handshake + request/response can take 800ms-2s. Packet loss on cellular is 1-5% (vs <0.1% wired), triggering TCP retransmission delays. Radio state transitions (idle to active) on LTE add 50-100ms; on 3G, 1-2 seconds. **53% of mobile users abandon apps taking >3 seconds to load** (Google/SOASTA). Every 1-second delay causes a 12% decrease in conversions.
30
+
31
+ Real-world median 4G speed in the US: ~30 Mbps (Opensignal 2024); India: ~15 Mbps. Users cycle through 5G/4G/3G/no-signal on trains. Indoor/congested environments reduce throughput by 10x.
32
+
33
+ ### Data Costs in Emerging Markets
34
+
35
+ | Region | Avg cost/1GB | % monthly income for 1GB |
36
+ |---|---|---|
37
+ | India | $0.09 | <0.1% |
38
+ | Indonesia | $1.21 | ~0.5% |
39
+ | Sub-Saharan Africa | $2.40-$15.00 | 2.4%+ (above affordability) |
40
+ | Brazil | $1.50-$3.00 | ~0.5% |
41
+
42
+ Source: cable.co.uk 2024; GSMA Mobile Affordability Report 2024. A 5MB response that could be 500KB with compression is financially punishing in cost-sensitive markets.
43
+
44
+ ---
45
+
46
+ ## Performance Budgets and Targets
47
+
48
+ | Condition | Target (P50) | Acceptable (P95) | Unacceptable |
49
+ |---|---|---|---|
50
+ | WiFi / 5G | <200ms | <500ms | >1s |
51
+ | 4G LTE | <500ms | <1.5s | >3s |
52
+ | 3G | <1.5s | <3s | >5s |
53
+ | 2G / Offline | Instant (cached) | <5s (sync) | No data shown |
54
+
55
+ **Data transfer budgets:** Initial load <200KB, per-screen payload <50KB, background sync <500KB/hr, images <100KB/screen, session total <5MB/10min.
56
+
57
+ **Request count limits:** <=3 per screen load, <=6 concurrent, <=2 background/min, polling >=30s interval (prefer push/SSE/WebSocket).
58
+
59
+ ---
60
+
61
+ ## Measurement and Profiling
62
+
63
+ **Charles Proxy** -- Intercepts HTTP/HTTPS traffic; built-in 3G/4G throttling presets; measures per-request latency and payload size; exports HAR files. **Network Link Conditioner (Apple)** -- System-level simulation with configurable bandwidth, latency, and packet loss. **Android Network Profiler** -- Real-time visualization of requests, sizes, response codes correlated with CPU/memory. **Chrome DevTools** -- Slow 3G (400ms RTT, 400 Kbps) / Fast 3G (150ms RTT, 1.5 Mbps) presets; waterfall charts. **Flipper (Meta)** -- Network plugin for iOS/Android/React Native with database inspector to verify caching. **Wireshark** -- Packet-level analysis for TCP/TLS issues, HTTP/2 multiplexing verification, retransmissions.
64
+
65
+ **Key measurements:** TTFB, total request duration, payload size (compressed vs uncompressed), request count per screen, waterfall dependencies (serial chains), error rate by network type, cache hit ratio.
66
+
67
+ ---
68
+
69
+ ## Common Bottlenecks
70
+
71
+ 1. **Too many serial requests** -- 5 serial requests on 3G (200ms RTT) = 1s of pure network wait
72
+ 2. **Large JSON payloads** -- REST returning full objects wastes 40-60% bandwidth (Postman benchmarks)
73
+ 3. **No response compression** -- Uncompressed JSON is 60-80% larger; gzip saves ~78%, Brotli ~82% (DebugBear)
74
+ 4. **No HTTP caching headers** -- Without Cache-Control/ETag, identical data redownloaded every time; ETags reduce transfer by up to 70% for static resources (MDN)
75
+ 5. **Chatty N+1 APIs** -- Feed screen: 1 request for IDs + N for details + N for avatars = 20+ requests
76
+ 6. **Unoptimized images** -- 2000x2000 JPEG to 375px screen; WebP saves 25-34%, AVIF saves 50% (web.dev)
77
+ 7. **No offline support** -- Blank screen in subway/elevator/rural areas
78
+ 8. **DNS overhead** -- Each unique domain: 20-120ms lookup; 5 domains = 100-600ms
79
+ 9. **TLS handshake cost** -- TLS 1.2: 2 RTTs; on 3G = 400ms. TLS 1.3: 1 RTT. HTTP/3 QUIC: 0-RTT on resume
80
+ 10. **No connection pooling** -- New TCP per request adds 1-3 RTTs overhead
81
+ 11. **Polling instead of push** -- 90%+ of polls return empty; wastes battery and bandwidth
82
+ 12. **Ignoring network state** -- 10MB upload on 2G; HD downloads on metered connections
83
+ 13. **Redundant requests on navigation** -- Back/forward reloads data fetched seconds ago
84
+ 14. **Base64 blobs in JSON** -- 33% size inflation; cannot be streamed or cached independently
85
+ 15. **Synchronous token refresh** -- Expired token blocks all requests, doubling latency
86
+ 16. **Uncompressed request bodies** -- Large POST/PUT JSON sent without compression
87
+
88
+ ---
89
+
90
+ ## Optimization Patterns
91
+
92
+ **Request batching** -- Combine 5 calls into 1. Saves `(N-1) * RTT`: on 3G, 800ms for 5-to-1 batch.
93
+
94
+ **Prefetching** -- Fetch next-screen data during idle time. Reduces perceived latency 50-80% (Google research). Front-loads transfers into single burst at full radio capacity.
95
+
96
+ **Response compression** -- Brotli level 4-6 for dynamic content (~82% ratio). gzip as fallback (~78%). Reduces payloads 60-80%.
97
+
98
+ **HTTP caching** -- Immutable assets: `max-age=31536000, immutable`. Semi-static: `max-age=300` + ETag. Dynamic: `no-cache` + ETag (304 = ~200 bytes vs full payload).
99
+
100
+ **Offline-first** -- UI reads local DB (sub-ms). Background sync when online. App works everywhere. Requires conflict resolution (last-write-wins, CRDT, or server-authoritative).
101
+
102
+ **GraphQL / BFF** -- Client requests exact fields. Reduces payload 40-60% vs full REST objects. One request per screen instead of N generic endpoints.
103
+
104
+ **Protocol Buffers** -- 50-80% smaller than JSON, 2-10x faster parsing (Auth0: 45x serialization in Java). Best for real-time streams, chat, analytics.
105
+
106
+ **Image CDN** -- Device-aware sizing + WebP/AVIF. 95%+ browsers support WebP, 90%+ AVIF. Reduces image data 50-80%.
107
+
108
+ **HTTP/2 and HTTP/3** -- HTTP/2: multiplexing + HPACK header compression. HTTP/3 (QUIC): 0-RTT resume, connection migration (survives WiFi-to-cellular). Google: 14% faster for slowest 10%; Fastly/Wix: 18-33% TTFB improvement.
109
+
110
+ **Cursor pagination** -- Offset at page 1000 of 1M rows: ~500ms. Cursor at any position: ~2ms. Prevents gaps in dynamic feeds.
111
+
112
+ ---
113
+
114
+ ## Anti-Patterns
115
+
116
+ 1. **Polling every 5s** -- Keeps radio active, drains battery. Fix: WebSocket/SSE/push; if unavoidable, 30s+ intervals
117
+ 2. **Full-size image downloads** -- 2MB photo for 150px thumbnail. Fix: CDN with `?w=300&format=webp`
118
+ 3. **No HTTP/2+** -- HTTP/1.1: 6 connections, no header compression. Fix: HTTP/2 minimum; evaluate HTTP/3
119
+ 4. **Ignoring network state** -- Fix: `ConnectivityManager` (Android) / `NWPathMonitor` (iOS); defer large uploads to WiFi
120
+ 5. **No retry backoff** -- Immediate infinite retry hammers servers. Fix: exponential backoff with jitter (1s, 2s, 4s, 8s + random); max 3-5 retries
121
+ 6. **Chatty micro-APIs without aggregation** -- 15 calls per screen. Fix: BFF layer aggregates server-side
122
+ 7. **Individual analytics events** -- Every tap fires HTTP. Fix: batch 20 events or 30s, single compressed request
123
+ 8. **No local cache layer** -- Every screen visit = full reload. Fix: stale-while-revalidate; show cached, refresh background
124
+ 9. **Blocking UI on network** -- White screen/spinner 500ms-3s. Fix: skeleton screens, cached data, optimistic UI
125
+ 10. **Base64 blobs in responses** -- 33% inflation. Fix: return URLs; client fetches/caches binary separately
126
+ 11. **REST without field selection** -- 50 fields returned, 5 needed. Fix: `?fields=id,name,avatar` or GraphQL
127
+ 12. **Many unique API domains** -- Each = DNS + TLS overhead. Fix: single API domain; connection prewarming
128
+
129
+ ---
130
+
131
+ ## Architecture-Level Decisions
132
+
133
+ ### REST vs GraphQL for Mobile
134
+
135
+ | Factor | REST | GraphQL |
136
+ |---|---|---|
137
+ | Over-fetching | Common (full objects) | Eliminated (client selects) |
138
+ | Requests/screen | 3-15 typical | 1-2 typical |
139
+ | Caching | Easy (URL-based, CDN) | Complex (single endpoint) |
140
+ | Payload waste | 40-60% typical | Minimal |
141
+ | Recommendation | Use BFF to optimize | Strong fit for complex UIs |
142
+
143
+ ### Offline-First Sync Strategies
144
+
145
+ | Strategy | Consistency | Complexity | Best For |
146
+ |---|---|---|---|
147
+ | Last-write-wins | Eventual | Low | Settings, preferences |
148
+ | Timestamp merge | Eventual | Medium | Notes, documents |
149
+ | CRDT | Strong eventual | High | Collaborative editing |
150
+ | Server-authoritative | Strong | Medium | Financial transactions |
151
+
152
+ Implementation: local DB (Room/CoreData/Isar) + sync engine + network monitor + retry queue with exponential backoff.
153
+
154
+ ### Data Serialization
155
+
156
+ | Format | Size vs JSON | Parse Speed | Schema | Use Case |
157
+ |---|---|---|---|---|
158
+ | JSON | 1x | 1x | Optional | Most APIs (tooling, debugging) |
159
+ | Protobuf | 0.2-0.5x | 2-10x faster | Required | High-frequency endpoints |
160
+ | FlatBuffers | 0.3-0.6x | 10-100x faster | Required | Gaming, IoT (zero-copy) |
161
+ | MessagePack | 0.5-0.7x | 1.5-3x faster | Optional | Drop-in JSON replacement |
162
+
163
+ ---
164
+
165
+ ## Testing and Regression Prevention
166
+
167
+ **Network simulation in CI** -- Use `toxiproxy` or `comcast` to inject 3G conditions (200ms RTT, 1.5 Mbps, 1% loss). Fail builds exceeding latency budgets.
168
+
169
+ **Payload size monitoring:**
170
+ ```bash
171
+ for endpoint in /api/feed /api/profile /api/settings; do
172
+ size=$(curl -s -o /dev/null -w '%{size_download}' \
173
+ -H "Accept-Encoding: gzip" "https://api.example.com$endpoint")
174
+ [ "$size" -gt 51200 ] && echo "FAIL: $endpoint = ${size}B (limit: 50KB)" && exit 1
175
+ done
176
+ ```
177
+
178
+ **Request count assertions** -- In E2E tests, assert requests per flow. A 3-request screen must not silently become 12.
179
+
180
+ **Offline smoke tests** -- Run critical flows with network disabled. Verify cached data, queued mutations, no crashes.
181
+
182
+ | Regression Metric | Alert Threshold | Tool |
183
+ |---|---|---|
184
+ | P95 API latency (4G sim) | >1.5s | CI + toxiproxy |
185
+ | Compressed payload size | >50KB/response | CI curl check |
186
+ | Requests per screen | >5 | E2E assertion |
187
+ | Offline flow completion | <100% | E2E (airplane mode) |
188
+ | Cache hit ratio | <60% | Analytics dashboard |
189
+
190
+ ---
191
+
192
+ ## Decision Trees
193
+
194
+ ### "My App is Slow on Mobile Networks"
195
+
196
+ ```
197
+ START: Profile with Charles Proxy on simulated 3G
198
+ |
199
+ +-> >5 requests/screen? --> Batch requests, use BFF/GraphQL (target <=3)
200
+ +-> Payloads >50KB compressed? --> Enable Brotli/gzip, add field selection
201
+ +-> Serial request waterfall? --> Parallelize, prefetch, use HTTP/2 multiplexing
202
+ +-> Same data fetched repeatedly? --> Add Cache-Control + ETag, stale-while-revalidate
203
+ +-> Images large/unoptimized? --> Image CDN + device sizing + WebP/AVIF + lazy load
204
+ +-> High TTFB, not bandwidth? --> Check server time, add CDN/edge, HTTP/3, prewarm
205
+ +-> Fails on network transitions? --> Offline-first, retry queue, HTTP/3 connection migration
206
+ ```
207
+
208
+ ### "My App Uses Too Much Data"
209
+
210
+ ```
211
+ Images optimized? --> No: WebP/AVIF at device resolution (saves 50-80%)
212
+ Compression enabled? --> No: Brotli/gzip (saves 60-80% on text)
213
+ Over-fetching? --> Yes: Field selection / GraphQL (saves 40-60%)
214
+ Caching working? --> No: Cache-Control + ETag (304 saves 90%+)
215
+ Frequent polling? --> Yes: Push/WebSocket; min 60s interval
216
+ Analytics batched? --> No: Batch 20 events, compress, send every 30-60s
217
+ ```
218
+
219
+ ---
220
+
221
+ ## Code Examples
222
+
223
+ ### 1. Request Batching (Before/After)
224
+
225
+ ```typescript
226
+ // BEFORE: 5 serial requests = 5 * RTT. On 3G: 1000ms network wait.
227
+ async function loadDashboard() {
228
+ const user = await fetch('/api/user/123');
229
+ const posts = await fetch('/api/user/123/posts');
230
+ const notifications = await fetch('/api/notifications');
231
+ const settings = await fetch('/api/settings');
232
+ const trending = await fetch('/api/trending');
233
+ }
234
+
235
+ // AFTER: 1 batch request = 1 * RTT. On 3G: 200ms. 80% savings.
236
+ async function loadDashboard() {
237
+ const { user, posts, notifications, settings, trending } = await fetch('/api/batch', {
238
+ method: 'POST',
239
+ body: JSON.stringify({ requests: [
240
+ { id: 'user', path: '/api/user/123', fields: ['name', 'avatar'] },
241
+ { id: 'posts', path: '/api/user/123/posts', params: { limit: 10 } },
242
+ { id: 'notifications', path: '/api/notifications', params: { unread: true } },
243
+ { id: 'settings', path: '/api/settings' },
244
+ { id: 'trending', path: '/api/trending', params: { limit: 5 } },
245
+ ]})
246
+ }).then(r => r.json());
247
+ }
248
+ ```
249
+
250
+ ### 2. ETag-Based Caching
251
+
252
+ ```kotlin
253
+ // BEFORE: Always downloads full 15KB response
254
+ suspend fun getProfile(id: String) = httpClient.get("/users/$id").body<Profile>()
255
+
256
+ // AFTER: 304 Not Modified = ~200 bytes (98.7% savings when unchanged)
257
+ suspend fun getProfile(id: String): Profile {
258
+ val cached = cache.get("user_$id")
259
+ val response = httpClient.get("/users/$id") {
260
+ cached?.etag?.let { header("If-None-Match", it) }
261
+ }
262
+ return when (response.status) {
263
+ HttpStatusCode.NotModified -> cached!!.data
264
+ HttpStatusCode.OK -> response.body<Profile>().also {
265
+ cache.put("user_$id", CacheEntry(it, response.headers["ETag"]))
266
+ }
267
+ else -> throw ApiException(response.status)
268
+ }
269
+ }
270
+ ```
271
+
272
+ ### 3. Offline-First Data Layer
273
+
274
+ ```dart
275
+ // BEFORE: Blank screen offline. Fails in subway/elevator.
276
+ Future<List<Post>> getPosts() async {
277
+ final response = await api.get('/posts'); // Fails offline
278
+ return response.data.map((j) => Post.fromJson(j)).toList();
279
+ }
280
+
281
+ // AFTER: Always shows data. Syncs when online.
282
+ Stream<List<Post>> watchPosts() async* {
283
+ yield await localDb.getAllPosts(); // Instant from cache
284
+ if (await connectivity.isConnected) {
285
+ try {
286
+ final fresh = await api.get('/posts');
287
+ await localDb.upsertAll(fresh.data.map(Post.fromJson).toList());
288
+ yield await localDb.getAllPosts(); // Updated data
289
+ } catch (e) { logError('Sync failed', e); } // Cached data still shown
290
+ }
291
+ }
292
+ ```
293
+
294
+ ### 4. Server Compression (nginx)
295
+
296
+ ```nginx
297
+ # BEFORE: 100KB JSON = 100KB transferred
298
+ # AFTER: 100KB JSON = ~20KB (Brotli) or ~25KB (gzip)
299
+ brotli on;
300
+ brotli_comp_level 5;
301
+ brotli_types application/json text/plain text/css application/javascript;
302
+ gzip on;
303
+ gzip_comp_level 6;
304
+ gzip_types application/json text/plain text/css application/javascript;
305
+ gzip_min_length 256;
306
+ ```
307
+
308
+ ### 5. Adaptive Image Loading
309
+
310
+ ```swift
311
+ // BEFORE: 2000x2000 JPEG = 2MB for 150pt avatar
312
+ AsyncImage(url: URL(string: url))
313
+
314
+ // AFTER: 450x450 WebP = ~15KB (99.3% savings)
315
+ let px = Int(150 * UIScreen.main.scale)
316
+ let optimized = "\(url)?w=\(px)&h=\(px)&format=webp&q=80"
317
+ AsyncImage(url: URL(string: optimized)) { $0.resizable().scaledToFill() }
318
+ placeholder: { Circle().fill(Color.gray.opacity(0.3)) }
319
+ .frame(width: 150, height: 150).clipShape(Circle())
320
+ ```
321
+
322
+ ### 6. Network-Aware Behavior
323
+
324
+ ```kotlin
325
+ // BEFORE: Uploads 10MB on 2G. Always requests HD images.
326
+ // AFTER: Adapts to connection type and quality.
327
+ fun uploadMedia(file: File) = when {
328
+ networkMonitor.isWifi -> api.upload("/media", file)
329
+ file.length() > 5_000_000 -> {
330
+ uploadQueue.enqueueForWifi(file)
331
+ showToast("Will upload on WiFi")
332
+ }
333
+ else -> api.upload("/media", compressVideo(file, quality = 0.6))
334
+ }
335
+
336
+ fun loadFeed() = api.getStream("/feed?image_quality=${when (networkMonitor.bandwidth) {
337
+ in 0..500 -> "low" // 2G: thumbnails only
338
+ in 500..5000 -> "medium" // 3G/4G
339
+ else -> "high" // WiFi/5G
340
+ }}")
341
+ ```
342
+
343
+ ### 7. GraphQL vs REST Over-Fetching
344
+
345
+ ```graphql
346
+ # REST GET /api/users/123 returns 50 fields (2.1KB). Mobile card needs 2.
347
+ # GraphQL returns exact fields (120 bytes). 94% smaller.
348
+ query UserCard($id: ID!) {
349
+ user(id: $id) { name, avatarUrl }
350
+ }
351
+ ```
352
+
353
+ ### 8. Exponential Backoff with Jitter
354
+
355
+ ```javascript
356
+ // BEFORE: while(true) { try { return await fetch(url); } catch(e) {} } // infinite hammer
357
+ // AFTER: Backs off exponentially. Jitter prevents thundering herd.
358
+ async function fetchWithBackoff(url, { maxRetries = 4, baseDelay = 1000 } = {}) {
359
+ for (let attempt = 0; attempt <= maxRetries; attempt++) {
360
+ try {
361
+ const res = await fetch(url);
362
+ if (res.ok) return res;
363
+ if (res.status < 500) throw new Error(`Client error: ${res.status}`);
364
+ } catch (e) {
365
+ if (attempt === maxRetries) throw e;
366
+ }
367
+ // 1-2s, 2-4s, 4-8s, 8-16s
368
+ await new Promise(r => setTimeout(r,
369
+ Math.min(baseDelay * 2 ** attempt + Math.random() * baseDelay, 30000)));
370
+ }
371
+ }
372
+ ```
373
+
374
+ ### 9. Connection Prewarming
375
+
376
+ ```swift
377
+ // Prewarm during splash screen: saves ~180ms (DNS+TCP+TLS) on first real request
378
+ func onAppLaunch() {
379
+ showSplashScreen()
380
+ let task = URLSession.shared.dataTask(with: URL(string: "https://api.example.com/healthz")!)
381
+ task.priority = URLSessionTask.highPriority
382
+ task.resume() // By splash end (~500ms), connection is warm
383
+ }
384
+ ```
385
+
386
+ ---
387
+
388
+ ## Quick Reference
389
+
390
+ ### Optimization Checklist
391
+
392
+ | Action | Impact | Effort |
393
+ |---|---|---|
394
+ | Enable Brotli/gzip on all responses | 60-80% less data | Low |
395
+ | Add Cache-Control + ETag | 70% fewer full downloads | Low |
396
+ | Batch multi-request screens into 1 call | 80% less latency | Medium |
397
+ | Return only needed fields | 40-60% smaller payloads | Medium |
398
+ | Image CDN + device sizing + WebP | 50-80% less image data | Medium |
399
+ | Enable HTTP/2; evaluate HTTP/3 | 15-33% faster TTFB | Low |
400
+ | Offline-first local DB + sync | 0ms perceived latency | High |
401
+ | Cursor pagination over offset | Consistent 2ms queries | Medium |
402
+ | Protobuf for high-frequency APIs | 50-80% smaller, 2-10x parse | High |
403
+ | Prefetch next-screen data | 50-80% less perceived wait | Medium |
404
+ | Exponential backoff + jitter | Prevents cascading failures | Low |
405
+ | Adapt behavior to network type | Better UX on slow networks | Medium |
406
+
407
+ ### Latency Budget (4G P50, target 500ms)
408
+
409
+ ```
410
+ DNS: 20ms (prewarmed: 0) | TCP: 30ms (reuse: 0) | TLS: 60ms (1.3/QUIC: 0 resume)
411
+ Request upload: 10ms | Server: 200ms | Response download: 80ms | Parse: 20ms | Render: 80ms
412
+ First request: ~500ms | Warm request: ~310ms
413
+ ```
414
+
415
+ ### Protocol Comparison
416
+
417
+ | Protocol | Handshake RTTs | HoL Blocking | Connection Migration | Header Compression |
418
+ |---|---|---|---|---|
419
+ | HTTP/1.1 | 3 | Yes | No | None |
420
+ | HTTP/2 | 3 | Partial | No | HPACK |
421
+ | HTTP/3 | 1-2 | No | Yes (CID) | QPACK |
422
+
423
+ ### Compression Comparison
424
+
425
+ | Format | Ratio | Compress Speed | Decompress | Support |
426
+ |---|---|---|---|---|
427
+ | gzip | ~78% | Fast | Fast | 100% |
428
+ | Brotli | ~82% | Slow-Medium | Fast | 97%+ |
429
+ | zstd | ~80% | Fast | Very fast | Growing |
430
+
431
+ ---
432
+
433
+ ## Sources
434
+
435
+ - [Android Developers: Optimize Network Access](https://developer.android.com/develop/connectivity/network-ops/network-access-optimization)
436
+ - [High Performance Browser Networking: Mobile Networks](https://hpbn.co/mobile-networks/)
437
+ - [Ericsson Mobility Report](https://www.ericsson.com/en/reports-and-papers/mobility-report/articles/network-optimization-through-analytics)
438
+ - [MVNO Index: Mobile Network Latency](https://mvno-index.com/the-latency-of-the-different-mobile-networks/)
439
+ - [Auth0: Beating JSON with Protobuf](https://auth0.com/blog/beating-json-performance-with-protobuf/)
440
+ - [Protobuf vs JSON Sizes](https://nilsmagnus.github.io/post/proto-json-sizes/)
441
+ - [MDN: HTTP Caching](https://developer.mozilla.org/en-US/docs/Web/HTTP/Guides/Caching)
442
+ - [DebugBear: Brotli vs GZIP](https://www.debugbear.com/blog/http-compression-gzip-brotli)
443
+ - [DebugBear: HTTP/3 vs HTTP/2](https://www.debugbear.com/blog/http3-vs-http2-performance)
444
+ - [Cloudflare: HTTP/2 vs HTTP/1.1](https://www.cloudflare.com/learning/performance/http2-vs-http1.1/)
445
+ - [Postman: GraphQL vs REST](https://blog.postman.com/graphql-vs-rest/)
446
+ - [web.dev: Image Performance](https://web.dev/learn/performance/image-performance)
447
+ - [Google: 53% Abandon >3s](https://www.marketingdive.com/news/google-53-of-mobile-users-abandon-sites-that-take-over-3-seconds-to-load/426070/)
448
+ - [GSMA Mobile Affordability 2024](https://telecomlead.com/4g-lte/mobile-data-becomes-more-affordable-in-2024-but-gender-and-income-gaps-persist-gsma-report-123070)
449
+ - [droidcon: Offline-First Android](https://www.droidcon.com/2025/12/16/the-complete-guide-to-offline-first-architecture-in-android/)
450
+ - [Medium: QUIC + HTTP/3 Latency](https://medium.com/@ThinkingLoop/quic-http-3-the-latency-stack-your-api-deserves-7138bdb2fdd9)
451
+ - [Cursor vs Offset Pagination](https://www.milanjovanovic.tech/blog/understanding-cursor-pagination-and-why-its-so-fast-deep-dive)
452
+ - [Predictive API Prefetching](https://medium.com/@meherun.nesa/predictive-api-caching-and-prefetching-2f6e1d17bb96)