@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,789 @@
1
+ # Content Consumption Patterns
2
+
3
+ > Design expertise module for feeds, articles, media players, and all content-consumption surfaces.
4
+ > Covers anatomy, best-in-class examples, user flows, micro-interactions, anti-patterns,
5
+ > accessibility, cross-platform adaptation, and decision frameworks.
6
+
7
+ ---
8
+
9
+ ## 1. Pattern Anatomy
10
+
11
+ ### 1.1 Feeds
12
+
13
+ A feed is a reverse-chronological or algorithmically-ranked stream of content cards
14
+ that updates continuously. Feeds are the dominant content discovery surface on the
15
+ modern web and in mobile applications.
16
+
17
+ **Structural elements:**
18
+
19
+ - **Feed item / card** -- the atomic unit containing headline, media thumbnail,
20
+ metadata (author, timestamp, engagement counts), and action affordances (like,
21
+ share, save). Card anatomy varies by content type but should remain internally
22
+ consistent within a single feed.
23
+ - **Feed header** -- houses filter tabs (For You | Following | Topics), search
24
+ entry point, and optionally a story tray or featured content slot.
25
+ - **Interstitial slots** -- ads, suggested follows, or topic prompts injected
26
+ between organic items at predictable intervals (every 5-8 items is common).
27
+ Interstitials must be visually distinct from organic content to avoid deceptive
28
+ patterns.
29
+ - **Loading boundary** -- the trigger point for fetching the next batch; can be a
30
+ skeleton screen, shimmer placeholder, or "Load More" button depending on the
31
+ scroll strategy.
32
+ - **Empty state** -- shown when the feed has no content (new user, filtered to
33
+ zero results). Must guide the user toward action: "Follow topics to fill your
34
+ feed" or "No results -- try different filters."
35
+
36
+ **Key principles (NNG):**
37
+
38
+ - Show 1.5-2.5 cards in the initial viewport to signal scrollability.
39
+ - Maintain consistent card height/aspect ratio to prevent layout shift.
40
+ - Preserve scroll position on back-navigation; losing position is a top user complaint.
41
+ - Provide clear visual separation between items (whitespace, dividers, or card edges).
42
+ - New content should appear via a non-intrusive banner ("5 new posts") rather than
43
+ auto-inserting at the top, which causes disorienting layout shift.
44
+ - Feed items should communicate content type at a glance (video icon overlay, podcast
45
+ waveform indicator, article read time badge).
46
+
47
+ ### 1.2 Articles / Long-Form Reading
48
+
49
+ Article layouts prioritize sustained reading. The goal is to minimize distractions and
50
+ maximize typographic clarity so users can enter and maintain a flow state.
51
+
52
+ **Structural elements:**
53
+
54
+ - **Hero area** -- headline, byline, publish date, estimated read time, hero image or
55
+ illustration. The hero sets the emotional tone and establishes content credibility.
56
+ - **Body content** -- structured with subheadings (H2/H3), pull quotes, inline images,
57
+ embedded media, and code blocks where relevant. Well-structured body text enables
58
+ both deep reading and scanning.
59
+ - **Progress indicator** -- a thin bar at the top of the viewport showing scroll
60
+ percentage through the article (Medium's signature pattern).
61
+ - **Sticky utilities** -- floating actions for sharing, bookmarking, or adjusting
62
+ reading preferences (font size, theme). These persist without obscuring content.
63
+ - **Table of contents** -- for articles exceeding 2,000 words, a sticky or collapsible
64
+ TOC aids navigation. Can highlight the current section during scroll.
65
+ - **Related content** -- recommended articles at the article's end or in a sidebar
66
+ on wider viewports. Surfaced based on topic, author, or reading history.
67
+ - **Comments / reactions** -- engagement section placed below the article body,
68
+ never interrupting the reading flow.
69
+
70
+ **Typography (NNG, web.dev):**
71
+
72
+ - Body text: 16-20px, line-height 1.5-1.7, measure (line length) of 50-75 characters.
73
+ - Serif or humanist sans-serif fonts improve long-form readability.
74
+ - Adequate paragraph spacing (1em-1.5em between paragraphs).
75
+ - Dark-on-light as default; provide a dark mode toggle for low-light reading.
76
+ - Heading hierarchy must be visually distinct: size, weight, and spacing should
77
+ clearly differentiate H1 from H2 from H3.
78
+
79
+ ### 1.3 Media Players
80
+
81
+ **Video:** playback controls (play/pause, seek with preview thumbnails, volume, fullscreen,
82
+ speed, quality), overlay controls that auto-hide after 3-5s, captions toggle (default on),
83
+ Picture-in-Picture, theater/cinema mode.
84
+
85
+ **Audio:** persistent mini-player (bottom bar across navigation), queue management with
86
+ drag-to-reorder, playback controls (play/pause, skip, shuffle, repeat, seek), now-playing
87
+ view with album art and lyrics.
88
+
89
+ **Performance:** adaptive bitrate streaming (HLS/DASH), preload metadata only until user
90
+ initiates playback, reserve exact player dimensions to prevent CLS (web.dev target: < 0.1).
91
+
92
+ ### 1.4 Carousels
93
+
94
+ NNG research shows users exhibit banner blindness toward carousels. Click-through rates
95
+ drop sharply after slide 1. Auto-forwarding carousels frustrate users by interrupting interaction.
96
+
97
+ **When carousels work:** homogeneous items of equal importance, gallery browsing, touch
98
+ devices where horizontal swipe is natural.
99
+
100
+ **Guidelines:** show partial next item to signal scrollability, provide visible controls
101
+ (arrows + dots), auto-forward at 1s per 3 words (NNG), pause on hover/focus, never
102
+ auto-forward on mobile, limit to 5-7 items.
103
+
104
+ ### 1.5 Stories
105
+
106
+ Full-screen, ephemeral content consumed via tap-to-advance. Pioneered by Snapchat.
107
+
108
+ **Elements:** story tray (horizontal avatar row with unseen indicator rings), full-screen
109
+ viewer with tap zones (left=back, right=forward, hold=pause, swipe-down=dismiss),
110
+ segmented progress bars, interactive overlays (polls, stickers, links).
111
+
112
+ **Principles:** mobile-first, minimal chrome, auto-advance 5-7s for images, full duration
113
+ for video, haptic feedback on interactions.
114
+
115
+ ### 1.6 Reader Mode
116
+
117
+ Strips navigation, ads, and chrome to present article text in an optimized layout.
118
+
119
+ **Approaches:** browser-native (Safari Reader, Firefox Reader View), app-native (Medium,
120
+ Pocket, Apple News), site-provided focus toggle. Features include adjustable font/size/spacing,
121
+ theme options (light/dark/sepia), text-to-speech, read time display, progress persistence.
122
+
123
+ **Implementation:** use semantic HTML (`<article>`, `<main>`, `<h1>`-`<h6>`) so browser
124
+ reader modes extract content correctly.
125
+
126
+ ### 1.7 Infinite Scroll
127
+
128
+ **NNG guidance:** use when content is homogeneous and users browse without a specific goal
129
+ (social, news, galleries). Avoid for goal-oriented tasks, when footer access matters, or
130
+ for users with accessibility/bandwidth constraints.
131
+
132
+ **Requirements:** skeleton loading states, scroll position preservation on back-nav, URL
133
+ reflecting approximate position, "Back to top" button, progress indicator ("Showing 40 of ~200").
134
+
135
+ **Alternatives:** "Load More" button, hybrid pagination, traditional pages.
136
+
137
+ ### 1.8 Pagination
138
+
139
+ **Advantages:** clear position/total awareness, bookmarkable pages, predictable performance,
140
+ footer access, better SEO (web.dev).
141
+
142
+ **Guidelines:** show current page + first/last + 2-3 adjacent, include Prev/Next with
143
+ keyboard shortcuts, persist state in URL, show result range ("21-40 of 312"), on mobile
144
+ consider "Load More" hybrid.
145
+
146
+ ---
147
+
148
+ ## 2. Best-in-Class Examples
149
+
150
+ ### 2.1 Medium
151
+
152
+ **What they do well:**
153
+ - Clean, typographically focused reading with 680px content width and serif body text
154
+ (Charter font), creating a book-like reading environment.
155
+ - Estimated read time displayed on every article card and at the article top, setting
156
+ clear expectations before the user commits.
157
+ - Green scroll progress bar at the top of the viewport provides continuous feedback.
158
+ - Nuanced clap interaction (up to 50 claps per reader) allows graduated appreciation
159
+ beyond a binary like/dislike.
160
+ - Series and publications provide content organization beyond individual posts.
161
+ - Highlighted text can be shared or commented on directly (inline annotation).
162
+
163
+ **Lessons:** read time estimates reduce bounce; progress indicators maintain reading
164
+ momentum; constrained content width improves readability; inline annotations encourage
165
+ deeper engagement.
166
+
167
+ ### 2.2 YouTube
168
+
169
+ **What they do well:**
170
+ - Thumbnail-driven discovery with hover-to-preview (3-second silent GIF on desktop),
171
+ reducing the cost of evaluating whether to watch.
172
+ - Video chapters with labeled timestamps in the seek bar and description dramatically
173
+ improve navigation within long-form content.
174
+ - Picture-in-Picture and mini-player persist playback across page navigation.
175
+ - Shorts (vertical short-form) integrated alongside traditional long-form content using
176
+ TikTok-style vertical swipe interface.
177
+ - Playback speed control (0.25x-2x) and comprehensive caption/subtitle support.
178
+ - Watch Later queue and playlist management for deferred consumption.
179
+ - Theater and fullscreen modes provide graduated levels of immersion.
180
+
181
+ **Lessons:** chapters improve long-content navigation; hover previews reduce evaluation
182
+ cost; persistent mini-player respects user investment in ongoing media; offering both
183
+ short-form and long-form on the same platform serves different consumption modes.
184
+
185
+ ### 2.3 Twitter / X
186
+
187
+ **What they do well:**
188
+ - Dual-timeline model: "For You" (algorithmic) and "Following" (chronological) gives
189
+ users agency over their consumption mode.
190
+ - "Show N new posts" banner prevents layout shift rather than auto-inserting content
191
+ at the top, preserving the user's reading position.
192
+ - Bookmarks for private saving, distinct from public "likes," serving different intents.
193
+ - Lists for curated sub-feeds organized by topic, interest, or social circle.
194
+ - Threaded conversations with visible reply chains and quote retweets for commentary.
195
+ - Media previews inline (images, videos, link cards) with consistent aspect ratios.
196
+ - Real-time update model aligned with the platform's breaking-news identity.
197
+
198
+ **Lessons:** offering both algorithmic and chronological views respects diverse user needs;
199
+ private bookmarks vs. public likes serve fundamentally different intents; non-intrusive
200
+ new-content banners prevent disorienting layout shifts.
201
+
202
+ ### 2.4 Spotify
203
+
204
+ **What they do well:**
205
+ - Persistent bottom mini-player with album art, track info, and core controls visible
206
+ across every screen in the app.
207
+ - "Now Playing" full-screen view with lyrics synced to playback in real time.
208
+ - Discover Weekly and Daily Mix playlists demonstrate personalized algorithmic curation
209
+ that users actively anticipate (habitual engagement).
210
+ - Offline download for premium users with clear download status indicators
211
+ (downloading, downloaded, error).
212
+ - Spotify Connect enables seamless cross-device handoff between phone, desktop, speaker,
213
+ car, and smart TV.
214
+ - TikTok-inspired vertical scroll feed for music and podcast discovery.
215
+ - Queue management with drag-to-reorder provides granular playback control.
216
+
217
+ **Lessons:** persistent players must never block primary content navigation; cross-device
218
+ continuity is a premium differentiator; download/offline status should be immediately
219
+ visible without opening a detail view.
220
+
221
+ ### 2.5 Apple News
222
+
223
+ **What they do well:**
224
+ - Editorially curated "Top Stories" combined with algorithmic "Trending" and personalized
225
+ "For You" sections, blending human judgment with machine learning.
226
+ - Magazine-quality layout with large hero images, typographic hierarchy, and sectioned
227
+ browsing by topic (Apple News Format supports parallax headers, mosaics, pull quotes).
228
+ - Dynamic Type support for system-level font scaling, ensuring accessibility compliance
229
+ across all content.
230
+ - Offline reading: articles are cached automatically for consumption without connectivity.
231
+ - "Save" functionality with a dedicated "Saved" tab in the primary navigation.
232
+ - Publisher branding preserved within a consistent reading chrome.
233
+
234
+ **Lessons:** editorial curation combined with personalization builds trust and discovery;
235
+ Dynamic Type is essential for inclusive design on Apple platforms; offline caching should
236
+ be seamless (automatic), not a manual download action.
237
+
238
+ ### 2.6 Substack
239
+
240
+ **What they do well:**
241
+ - Newsletter-first design: email delivery as primary consumption channel, web as
242
+ secondary. This inverts the typical web-first model and provides reliable delivery
243
+ directly to the user's inbox.
244
+ - Minimal, distraction-free reading layout with wide text measure and generous line
245
+ height -- no sidebar clutter, no ad placements.
246
+ - Threaded discussion section below articles encourages community engagement.
247
+ - Podcast and audio integration within the same publication interface.
248
+ - "Restacks" (similar to retweets) enable cross-publication discovery in the Substack
249
+ app's Notes feed.
250
+ - Clear paywall demarcation: free preview content ends with an explicit boundary
251
+ before subscriber-only sections begin.
252
+
253
+ **Lessons:** email as a consumption channel provides reliable content delivery outside
254
+ algorithmic gatekeeping; clean layouts without sidebars improve reading retention;
255
+ clear paywall boundaries prevent user frustration and build subscription trust.
256
+
257
+ ### 2.7 TikTok
258
+
259
+ **What they do well:**
260
+ - Full-screen vertical video as the sole content unit provides maximum immersion with
261
+ zero chrome distraction.
262
+ - Single-swipe navigation: swipe up = next video. Eliminates choice paralysis by
263
+ removing browsing decisions entirely. Each swipe is a natural punctuation mark.
264
+ - Algorithmic "For You Page" eliminates the need for a social graph to discover
265
+ content -- the algorithm finds content for the user based on engagement signals.
266
+ - Engagement controls positioned on the right edge (like, comment, share, save, sound)
267
+ within easy thumb reach.
268
+ - Sound-on by default, aligned with the immersive full-screen paradigm (but captions
269
+ are essential for accessibility and sound-off contexts).
270
+ - Creator tools integrated directly into the consumption flow, lowering the barrier
271
+ between consuming and creating.
272
+
273
+ **Lessons:** removing navigation decisions increases engagement but raises ethical
274
+ questions about attention capture and compulsive use; full-screen video demands
275
+ sound-aware design (always provide captions); algorithmic discovery can outperform
276
+ social-graph-based discovery for content-first platforms.
277
+
278
+ ---
279
+
280
+ ## 3. User Flow Mapping
281
+
282
+ ### 3.1 Core Flow
283
+ ```
284
+ [Discovery] [Evaluation] [Consumption] [Post-Consumption]
285
+ | | | |
286
+ v v v v
287
+ Browse Feed ---> Preview/Scan ---> Read/Watch/Listen ---> React/Save/Share
288
+ | | | |
289
+ |-- Search |-- Read headline |-- Scroll/seek |-- Like/clap
290
+ |-- Explore |-- View thumbnail |-- Adjust settings |-- Bookmark/save
291
+ |-- Notifications |-- Check read time |-- Pause/resume |-- Share
292
+ |-- Recommendations |-- Scan first para |-- Take notes |-- Comment
293
+ |-- Deep links |-- Check source |-- Highlight |-- Add to list
294
+ ```
295
+
296
+ **Entry points into consumption:**
297
+
298
+ 1. **Feed scroll** -- user opens app/site, begins scrolling the default feed.
299
+ 2. **Search** -- user has intent, types a query, evaluates results.
300
+ 3. **Notification** -- push or in-app alert draws user to specific content.
301
+ 4. **Deep link** -- shared URL opens directly to content.
302
+ 5. **Recommendation** -- algorithmic suggestion (email digest, "You might like").
303
+
304
+ **Transition to consumption:** the tap/click on a feed card is the critical conversion
305
+ point. Reduce friction with fast page load (< 2.5s LCP per web.dev), smooth animation
306
+ into the content view, and immediate content visibility. On mobile, shared-element
307
+ transitions (thumbnail expanding into hero image) provide spatial continuity.
308
+
309
+ ### 3.2 Saving and Bookmarking
310
+
311
+ **User intents for saving:**
312
+
313
+ - "Read later" -- deferring consumption to a more convenient time or context.
314
+ - "Reference" -- saving content for future re-consultation or citation.
315
+ - "Curate" -- collecting content into themed collections, lists, or boards.
316
+ - "Share later" -- saving to forward to others at an appropriate time.
317
+
318
+ **Design requirements:**
319
+
320
+ - One-tap save with clear visual confirmation (icon state change + toast).
321
+ - Organization into folders, collections, or tags for retrieval.
322
+ - A dedicated "Saved" or "Library" section accessible from primary navigation.
323
+ - Cross-device sync so saved content appears on all logged-in surfaces.
324
+ - Offline availability for saved content, especially on mobile.
325
+ - Bulk management: select multiple, move to folder, delete, export.
326
+
327
+ ### 3.3 Sharing
328
+
329
+ ```
330
+ Tap Share --> Share Sheet --> Select Channel --> Confirm/Send
331
+ |
332
+ |-- Copy link (most used; always place first)
333
+ |-- Native share sheet (iOS/Android)
334
+ |-- Direct message within app
335
+ |-- Social platforms (quick-share icons)
336
+ |-- Email
337
+ |-- Embed code (for publishers/bloggers)
338
+ ```
339
+
340
+ **Design considerations:** pre-populate share text with title and URL. Support deep
341
+ links that open to specific content position (timestamp for video, paragraph for
342
+ articles). Track share attribution for analytics without exposing user data. Provide
343
+ "Copied!" confirmation with haptic feedback when copying link.
344
+
345
+ ### 3.4 Offline Reading
346
+
347
+ **Implementation patterns:**
348
+
349
+ - **Automatic caching** -- cache recently viewed and saved articles via Service Worker
350
+ using a cache-first or stale-while-revalidate strategy. Users should not need to
351
+ explicitly "download" content they have already viewed.
352
+ - **Explicit download** -- user taps a download icon; content is stored for offline
353
+ access with clear status indicators (downloading, downloaded, error, update available).
354
+ - **Graceful degradation** -- when offline, show cached content with a subtle banner:
355
+ "You're offline. Showing saved content." Hide actions that require connectivity
356
+ (commenting, sharing) or show them disabled with a tooltip.
357
+ - **Sync on reconnect** -- queue actions taken offline (likes, bookmarks, progress
358
+ updates) and sync when connectivity returns via Background Sync API.
359
+
360
+ **Technical approach (PWA):** Service Worker intercepts fetch requests and serves cached
361
+ responses. IndexedDB stores structured content (article text, metadata). Cache API stores
362
+ media assets. Background Sync API queues mutations for later execution.
363
+
364
+ ### 3.5 Progress Tracking
365
+
366
+ **Types of progress:**
367
+
368
+ - **Scroll progress** -- percentage of article read, shown as a progress bar or
369
+ percentage indicator. The primary metric for text content.
370
+ - **Media progress** -- timestamp position within audio/video content. Enables
371
+ resume-where-you-left-off across sessions and devices.
372
+ - **Series progress** -- which episodes, chapters, or installments have been completed
373
+ in a multi-part series. Shows both individual and overall completion.
374
+ - **Course progress** -- completion status across modules and lessons with milestones.
375
+
376
+ **Implementation:** store progress server-side for authenticated users, localStorage for
377
+ anonymous. Update on scroll events (debounced, every 5-10% increment to avoid excessive
378
+ writes). Display on feed cards: "45% read" or a subtle progress bar on the card thumbnail.
379
+ Allow users to mark content as "finished" or reset to "unread."
380
+
381
+ ### 3.6 Read Position Memory
382
+
383
+ NNG research on spatial memory demonstrates that users build mental models of where they
384
+ are within content. Losing position forces re-orientation, increasing cognitive load and
385
+ causing frustration.
386
+
387
+ **Implementation approaches:**
388
+
389
+ - **Scroll position restoration** -- on back-navigation or app relaunch, restore the
390
+ exact scroll position within an article or feed.
391
+ - **Last-read marker** -- a subtle visual indicator showing where the user previously
392
+ stopped reading (Kindle's "furthest page read" model).
393
+ - **Feed position** -- when returning to a feed, show the last-seen position rather than
394
+ jumping to the top with new content. Store the ID of the last-seen item rather than
395
+ pixel offset (more resilient to content changes).
396
+ - **Cross-device sync** -- sync read position across devices so users can pick up where
397
+ they left off (essential for long-form and serial content).
398
+
399
+ **Technical considerations:** store element anchor (more resilient to layout changes than
400
+ pixel offset) via Intersection Observer. Debounce position updates to avoid excessive
401
+ writes. For feeds, store the last-seen item ID rather than scroll offset.
402
+
403
+ ---
404
+
405
+ ## 4. Micro-Interactions
406
+
407
+ ### 4.1 Pull-to-Refresh
408
+ User pulls down from scroll top. Resistance increases with distance (rubber-band physics).
409
+ Spinner or branded animation appears (threshold: 60-80px). Content refreshes; "Updated just
410
+ now" or "3 new posts" confirms. On web, use `overscroll-behavior: contain` to prevent
411
+ browser-native conflicts.
412
+
413
+ ### 4.2 Scroll Progress Indicator
414
+
415
+ **Variants:**
416
+
417
+ - **Top bar** -- thin horizontal bar filling left-to-right as the user scrolls
418
+ (Medium's signature pattern). Most common and least intrusive.
419
+ - **Side rail** -- vertical progress track on the right side with section markers,
420
+ useful for long articles with distinct sections.
421
+ - **Floating indicator** -- small circle or badge showing percentage or minutes
422
+ remaining. Less common but useful for minimal UIs.
423
+ - **Chapter dots** -- for sectioned content, dots indicating major content divisions
424
+ with the current section highlighted.
425
+
426
+ **Technical implementation:**
427
+
428
+ ```
429
+ progress = scrollTop / (scrollHeight - clientHeight)
430
+ ```
431
+
432
+ Update on `requestAnimationFrame` for smooth rendering. Animate via `transform: scaleX()`
433
+ (GPU-composited) rather than `width` to avoid layout repaints. Use `will-change: transform`
434
+ on the progress element for GPU acceleration.
435
+
436
+ ### 4.3 Bookmark Animation
437
+ Icon fills/changes color on tap (outline to solid). Brief scale-up animation (100ms to 1.2x,
438
+ ease back). Haptic feedback (light impact on iOS, click on Android). Confirmation toast:
439
+ "Saved to Reading List" with Undo action (available for 5+ seconds).
440
+
441
+ ### 4.4 Share Sheet
442
+ Slides up from bottom with spring animation (300-400ms). Dim background overlay. Close on
443
+ tap outside, swipe down, or close button. Hybrid approach: custom sheet with top targets
444
+ (Copy Link, Messages, Twitter, Email) + "More..." for native sheet. "Copied!" with
445
+ checkmark animation for link copy.
446
+
447
+ ### 4.5 Read Time Estimate
448
+ Formula: `Math.ceil(wordCount / 200)` (200-250 WPM average). Add 12s per image, media
449
+ duration for embeds. Display as "X min read" on cards and article headers. Can update
450
+ dynamically: "3 min left" based on scroll position.
451
+
452
+ ### 4.6 Like / Reaction Animations
453
+
454
+ **Patterns across platforms:**
455
+
456
+ - **Twitter/X heart** -- outline to filled red with a brief particle burst animation.
457
+ - **Facebook reactions** -- long-press reveals emoji picker with float-up animation;
458
+ selected reaction scales up with a bounce.
459
+ - **Medium clap** -- cumulative counter with bounce animation per clap; confetti at
460
+ milestones.
461
+ - **TikTok heart** -- floating hearts rise from the tap point with physics-based drift.
462
+
463
+ **Guidelines:** keep animations under 300ms for tap-triggered interactions. Provide both
464
+ visual and haptic feedback. Support undo (un-like) with a reverse animation. Use CSS
465
+ animations or GPU-composited layers to avoid blocking the UI thread.
466
+
467
+ ### 4.7 Content Loading States
468
+
469
+ **Skeleton screens:** render gray placeholder blocks matching the shape and layout of
470
+ incoming content. Use a shimmer animation (subtle left-to-right gradient sweep) to
471
+ indicate active loading. Skeleton screens reduce perceived load time by ~31% compared
472
+ to spinners (Bill Chung, 2020).
473
+
474
+ **Progressive image loading:** load a tiny blurred placeholder (LQIP -- Low Quality Image
475
+ Placeholder) and cross-fade to the full-resolution image on load. Use `loading="lazy"`
476
+ for off-screen images (web.dev). Set explicit `width` and `height` attributes on all
477
+ images to prevent CLS during load.
478
+
479
+ ---
480
+
481
+ ## 5. Anti-Patterns
482
+
483
+ ### 5.1 Autoplay with Sound
484
+ Video/audio playing with sound on load without user initiation. Startles users, causes page
485
+ abandonment, violates accessibility guidelines. Browsers block it by default. **Fix:** autoplay
486
+ muted with visible toggle and captions; respect `prefers-reduced-motion`.
487
+
488
+ ### 5.2 Content Shift During Scroll
489
+ Elements resize or ads load without reserved space, causing content to jump. Users lose
490
+ reading position; mis-taps on mobile. CLS > 0.25 is poor (web.dev). **Fix:** explicit
491
+ dimensions for all media, fixed-size ad containers, `content-visibility: auto` with
492
+ `contain-intrinsic-size`.
493
+
494
+ ### 5.3 Infinite Scroll Without Progress
495
+ Endless scroll with no position/volume indication. Loss of orientation, contributes to
496
+ doomscrolling and regret. NNG warns against this specifically. **Fix:** show item count,
497
+ "Back to Top" button, URL position, hybrid pagination.
498
+
499
+ ### 5.4 No Save/Bookmark Functionality
500
+ Content cannot be saved for later. Users resort to screenshots or self-messaging. Content
501
+ is less likely to be revisited or shared. **Fix:** one-tap save with collections, cross-device
502
+ sync, offline access.
503
+
504
+ ### 5.5 Clickbait Titles
505
+ Headlines promise what the content does not deliver. Erodes trust, increases bounce, damages
506
+ platform credibility. **Fix:** editorial guidelines requiring specificity; honest headlines
507
+ often outperform clickbait in long-term retention.
508
+
509
+ ### 5.6 Interstitials Blocking Content
510
+ Full-screen overlays (email capture, app-install, cookie mega-banners) before engagement.
511
+ Google penalizes intrusive interstitials. Users close reflexively. **Fix:** inline banners,
512
+ bottom sheets, delayed prompts (after 30s or 50% scroll), Smart App Banners.
513
+
514
+ ### 5.7 Auto-Forwarding Carousels
515
+ Carousels rotating at designer-determined pace. Interrupts reading, inaccessible for motor
516
+ impairments. NNG confirms user frustration. **Fix:** pause on hover/focus, slow timing
517
+ (1s/3 words), clear manual controls.
518
+
519
+ ### 5.8 Pagination Without State Preservation
520
+ Page state not in URL; refresh/back resets to page 1. Position loss, pages unshareable.
521
+ **Fix:** reflect page/filters in URL via `replaceState`.
522
+
523
+ ### 5.9 Aggressive Push Notification Prompts
524
+ Permission request on first visit before user has experienced value. High dismissal; denied
525
+ permissions are permanent (browser limitation). **Fix:** prompt after meaningful engagement;
526
+ custom pre-prompt explaining value before browser dialog.
527
+
528
+ ### 5.10 Disabling Text Selection
529
+ CSS `user-select: none` or JS event prevention. Prevents quoting, blocks assistive tech,
530
+ frustrates power users, does not prevent content theft. **Fix:** allow selection; append
531
+ attribution to copied text if needed.
532
+
533
+ ### 5.11 Infinite Feeds Without Stop Mechanism
534
+ No natural stopping point, encouraging compulsive consumption. Exploits variable-ratio
535
+ reinforcement. Under regulatory scrutiny (EU DSA, US KIDS Act). Research: 24.8% increase
536
+ in mindless viewing from autoplay. **Fix:** time reminders, "You're all caught up" markers
537
+ (Instagram), chronological feeds with natural end.
538
+
539
+ ### 5.12 Hidden or Broken Dark Mode
540
+ No dark mode, or dark mode with illegible content (images without backgrounds). Eye strain
541
+ in low-light, broken system-level inversion. **Fix:** robust dark mode via `prefers-color-scheme`,
542
+ test all content types in both themes, use semantic color tokens.
543
+
544
+ ---
545
+
546
+ ## 6. Accessibility
547
+
548
+ ### 6.1 Alternative Text (WCAG 1.1.1)
549
+ Every informative image needs descriptive alt text conveying purpose. Decorative images:
550
+ `alt=""`. Complex images (charts): alt text + `aria-describedby`. Feed thumbnails: describe
551
+ the content, not "thumbnail." Prompt user-uploaded image authors for alt text.
552
+
553
+ ### 6.2 Captions (WCAG 1.2.2, 1.2.4)
554
+ All pre-recorded video with audio requires synchronized captions. Live content needs real-time
555
+ captions where feasible. Include speaker ID, sound effects, musical cues. Support WebVTT.
556
+ Provide caption customization (size, color, background, position). Auto-generated captions
557
+ (ASR) have 10-15% error rates; review before publishing.
558
+
559
+ ### 6.3 Transcripts (WCAG 1.2.1, 1.2.3)
560
+ Audio-only content (podcasts) must have text transcripts. Video should offer transcripts as
561
+ caption alternative. Place on same page, collapsible. Include timestamps. Make searchable.
562
+
563
+ ### 6.4 Reader Mode
564
+ Removes clutter for cognitive disabilities. Provides predictable layout. Enables per-user
565
+ customization. Implement with semantic HTML so browser reader modes extract content correctly.
566
+
567
+ ### 6.5 Adjustable Text Size (WCAG 1.4.4)
568
+ Text resizable to 200% without content loss. Use relative units (rem, em, %). iOS: support
569
+ Dynamic Type via system text styles. Android: use `sp` units. Web: test at 200% zoom.
570
+
571
+ ### 6.6 Reduced Motion (WCAG 2.3.1, web.dev)
572
+ No flashing > 3x/second. Controls to pause/stop auto-playing animation. Respect
573
+ `prefers-reduced-motion`: replace animations with instant state changes or opacity fades,
574
+ show static poster for auto-playing background video, provide explicit Play button.
575
+
576
+ ```css
577
+ @media (prefers-reduced-motion: reduce) {
578
+ *, *::before, *::after {
579
+ animation-duration: 0.01ms !important;
580
+ transition-duration: 0.01ms !important;
581
+ scroll-behavior: auto !important;
582
+ }
583
+ }
584
+ ```
585
+
586
+ ### 6.7 Keyboard and Screen Reader
587
+ All interactions keyboard accessible (WCAG 2.1.1). Media: Space=play/pause, Arrows=seek,
588
+ M=mute, F=fullscreen. Feed items focusable via Tab. Carousels: Arrow key navigation.
589
+ Focus management: move focus to article heading on open, return to feed item on close.
590
+ `aria-live` for dynamic updates. Progress bars: `aria-valuenow/min/max`. Carousel: announce
591
+ "Slide N of M." Infinite scroll: announce new content loads.
592
+
593
+ ---
594
+
595
+ ## 7. Cross-Platform Adaptation
596
+
597
+ ### 7.1 Mobile (< 640px)
598
+
599
+ **Layout:** single-column feed with full-width cards. Bottom navigation bar with content
600
+ categories (Feed, Search, Library, Profile). Full-screen media consumption (stories, videos,
601
+ articles). Swipe gestures for primary navigation (swipe to dismiss, swipe between items).
602
+
603
+ **Content adaptations:**
604
+ - Truncate article previews to 2-3 lines in feed cards.
605
+ - Use a bottom sheet for share/save actions instead of modal dialogs.
606
+ - Collapse secondary metadata (read time, category) into expandable rows.
607
+ - Prioritize thumb-zone placement for primary actions (like, share, save) --
608
+ bottom 40% of screen is the comfortable reach zone.
609
+
610
+ **Performance:** aggressive lazy loading for off-screen images. Reduced image quality with
611
+ high-DPI displays (use `srcset` and `sizes`). Limit initial feed load to 10-15 items.
612
+ Use skeleton screens exclusively (never spinners on mobile).
613
+
614
+ ### 7.2 Tablet (640-1024px)
615
+
616
+ **Layout:** two-column feed (masonry or grid) to leverage horizontal space. Split-view
617
+ for feed + article side-by-side (iPad multitasking model). Sidebar navigation (collapsible)
618
+ replacing bottom tab bar. Landscape mode may show article + comments side-by-side.
619
+
620
+ **Content adaptations:** show more metadata per card (full description, larger thumbnails).
621
+ Reader mode can use wider margins and larger font for a book-like reading experience.
622
+ Video players can use theater mode without fullscreen. Touch targets remain minimum 44x44pt
623
+ (Apple HIG) / 48x48dp (Material Design).
624
+
625
+ ### 7.3 Desktop (> 1024px)
626
+
627
+ **Layout:** multi-column layout: sidebar navigation + feed + detail panel. Maximum content
628
+ width constraint (680-720px for articles, ~1200px for feeds) with centered alignment.
629
+ Persistent sidebar for navigation, bookmarks, and trending content.
630
+
631
+ **Content adaptations:**
632
+ - Hover states for preview (video thumbnails, article summaries).
633
+ - Keyboard shortcuts for power users (J/K=next/prev, S=save, L=like, B=bookmark).
634
+ - Inline expansion: click a feed card to expand the article in-place rather than
635
+ navigating to a new page.
636
+ - Multi-panel reading: article in center, table of contents on left, related on right.
637
+ - Picture-in-Picture for video while browsing other content.
638
+
639
+ ### 7.4 Cross-Platform Continuity
640
+
641
+ **State synchronization:**
642
+ - Read position synced across devices (open article on phone, continue on tablet).
643
+ - Playback position for audio/video maintained across sessions and devices.
644
+ - Save/bookmark state immediately reflected across all logged-in surfaces.
645
+ - Notification state (read/unread) synchronized to prevent duplicate alerting.
646
+
647
+ **Technical approach:** real-time sync via WebSocket or Server-Sent Events for active
648
+ sessions. Periodic sync via REST API for background state. Conflict resolution:
649
+ last-write-wins for position data; union merge for collections (bookmarks, read history).
650
+ Offline queue with reconciliation on reconnect.
651
+
652
+ ### 7.5 Emerging Form Factors
653
+
654
+ **Smartwatch:** headlines only with "Send to Phone" for full reading. Audio content
655
+ playback with basic controls. Notification-driven content consumption.
656
+
657
+ **TV / Large screen (10-foot UI):** large text (minimum 24px effective), focus-based
658
+ navigation with clear focus indicators. Media player with remote-friendly controls.
659
+ D-pad navigation with spatial focus model.
660
+
661
+ **Foldable devices:** adapt layout on fold state change (folded = single column,
662
+ unfolded = split view with feed + article). Use CSS fold APIs and Android Jetpack
663
+ WindowManager for fold detection and hinge awareness.
664
+
665
+ ---
666
+
667
+ ## 8. Decision Tree
668
+
669
+ ### 8.1 Feed vs. Timeline vs. Paginated
670
+ ```
671
+ User intent = Browse/Discover?
672
+ Homogeneous + unbounded --> ALGORITHMIC FEED (TikTok, YouTube Home)
673
+ Homogeneous + bounded --> CURATED GRID (Netflix categories, Spotify playlists)
674
+ Mixed content types --> CHRONOLOGICAL TIMELINE (Twitter Following, Mastodon)
675
+
676
+ User intent = Search/Find?
677
+ --> PAGINATED RESULTS (Google, e-commerce)
678
+
679
+ User intent = Sequential consumption?
680
+ --> LINEAR NAVIGATION (chapters, courses, podcast episodes)
681
+ ```
682
+
683
+ ### 8.2 Infinite Scroll vs. Pagination
684
+ ```
685
+ Entertainment/social, casual browsing --> INFINITE SCROLL
686
+ + progress indicator, back-to-top, position memory, "all caught up" stop
687
+
688
+ Search results or catalog --> PAGINATION
689
+ + generous page size 20-50, keyboard nav, URL state, result count
690
+
691
+ Mix of browsing and goal-oriented --> LOAD MORE BUTTON
692
+ Initial set + "Load 20 More" for user control without pagination friction
693
+
694
+ Editorial/news --> INFINITE SCROLL + SECTION BREAKS
695
+ Section headers ("Earlier Today") + optional "Load More" between sections
696
+
697
+ Footer content needed --> PAGINATION or LOAD MORE
698
+ Infinite scroll makes footers unreachable (NNG)
699
+ ```
700
+
701
+ ### 8.3 Content Layout
702
+ ```
703
+ Long-form text --> Single-column 680-720px, serif font, progress bar
704
+ Short text + media --> Card-based feed with thumbnails
705
+ Short-form video --> Full-screen vertical (TikTok model)
706
+ Long-form video --> Theater/cinema mode (YouTube model)
707
+ Audio-first --> Persistent mini-player + browse UI (Spotify model)
708
+ Image-first --> Grid/masonry with tap-to-expand (Pinterest model)
709
+ ```
710
+
711
+ ---
712
+
713
+ ## 9. Quick Reference Checklist
714
+
715
+ ### Content Structure
716
+ - [ ] Clear hierarchy (headline > subhead > body > metadata)
717
+ - [ ] Read time / media duration displayed
718
+ - [ ] Semantic HTML (article, h1-h6, main)
719
+ - [ ] Explicit image dimensions to prevent CLS
720
+ - [ ] Content width constrained for readability (50-75 char measure)
721
+
722
+ ### Navigation and Discovery
723
+ - [ ] Feed browse AND search available
724
+ - [ ] Clear visual separation between feed items
725
+ - [ ] Content type immediately identifiable
726
+ - [ ] Algorithmic and chronological options both available
727
+ - [ ] New content indicator without layout shift
728
+
729
+ ### Consumption Experience
730
+ - [ ] Scroll/playback progress visually indicated
731
+ - [ ] Position remembered across sessions and devices
732
+ - [ ] Reader mode / distraction-free view for long-form
733
+ - [ ] Adjustable font size, line height, theme
734
+ - [ ] Full media controls (play, pause, seek, speed, volume, captions)
735
+ - [ ] PiP or mini-player persists during navigation
736
+
737
+ ### Saving and Sharing
738
+ - [ ] One-tap save with visual + haptic confirmation
739
+ - [ ] Collections/folders for saved content
740
+ - [ ] Offline availability for saved content
741
+ - [ ] Copy link as first/most prominent share option
742
+ - [ ] Deep links to specific content position
743
+
744
+ ### Performance (web.dev)
745
+ - [ ] LCP < 2.5s, CLS < 0.1, INP < 200ms
746
+ - [ ] Lazy loading for off-screen images
747
+ - [ ] Skeleton screens for loading states
748
+ - [ ] Adaptive media quality by network
749
+
750
+ ### Accessibility (WCAG 2.1 AA)
751
+ - [ ] Alt text on all informative images
752
+ - [ ] Captions on all video, transcripts for audio
753
+ - [ ] Text resizable to 200%
754
+ - [ ] Color contrast 4.5:1 for body text
755
+ - [ ] `prefers-reduced-motion` respected
756
+ - [ ] All interactions keyboard accessible
757
+ - [ ] Focus management on content transitions
758
+ - [ ] `aria-live` for dynamic content updates
759
+
760
+ ### Anti-Pattern Avoidance
761
+ - [ ] No autoplay with sound
762
+ - [ ] No layout shift during scroll
763
+ - [ ] No infinite scroll without progress
764
+ - [ ] No interstitials blocking first-visit content
765
+ - [ ] No auto-forward carousels without pause
766
+ - [ ] No disabled text selection
767
+ - [ ] No missing save/bookmark
768
+ - [ ] No pagination without URL state
769
+
770
+ ---
771
+
772
+ ## Sources
773
+
774
+ - [NNG: Infinite Scrolling: When to Use It, When to Avoid It](https://www.nngroup.com/articles/infinite-scrolling-tips/)
775
+ - [NNG: Carousel Usability: Designing an Effective UI](https://www.nngroup.com/articles/designing-effective-carousels/)
776
+ - [NNG: Microinteractions in User Experience](https://www.nngroup.com/articles/microinteractions/)
777
+ - [NNG: Spatial Memory: Why It Matters for UX Design](https://www.nngroup.com/articles/spatial-memory/)
778
+ - [NNG: Scrolling and Attention](https://www.nngroup.com/articles/scrolling-and-attention/)
779
+ - [NNG: Auto-Forwarding Carousels Annoy Users](https://www.nngroup.com/articles/auto-forwarding/)
780
+ - [web.dev: Cumulative Layout Shift (CLS)](https://web.dev/articles/cls)
781
+ - [web.dev: Optimize CLS](https://web.dev/articles/optimize-cls)
782
+ - [web.dev: Browser-level Image Lazy Loading](https://web.dev/articles/browser-level-image-lazy-loading)
783
+ - [web.dev: prefers-reduced-motion](https://web.dev/articles/prefers-reduced-motion)
784
+ - [W3C: WCAG 2.1](https://www.w3.org/TR/WCAG21/)
785
+ - [W3C WAI: Transcripts](https://www.w3.org/WAI/media/av/transcripts/)
786
+ - [MDN: prefers-reduced-motion](https://developer.mozilla.org/en-US/docs/Web/CSS/@media/prefers-reduced-motion)
787
+ - [MDN: Responsive Web Design](https://developer.mozilla.org/en-US/docs/Learn_web_development/Core/CSS_layout/Responsive_Design)
788
+ - [UX Collective: Interaction Design of Instagram Stories](https://uxdesign.cc/the-powerful-interaction-design-of-instagram-stories-47cdeb30e5b6)
789
+ - [Deceptive Patterns: Exploiting Addiction](https://www.deceptive.design/book/contents/chapter-11)