@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,705 @@
1
+ # Notification Patterns — Design Expertise Module
2
+
3
+ > **Module type:** Pattern
4
+ > **Last updated:** 2026-03-07
5
+ > **Sources:** Apple HIG, Material Design 3, Nielsen Norman Group, WCAG 2.2, Carbon Design System
6
+
7
+ ---
8
+
9
+ ## Quick Reference Checklist
10
+
11
+ - [ ] Every notification has a clear source (app/feature/sender)
12
+ - [ ] Urgency levels classified (critical, important, informational)
13
+ - [ ] Users control preferences per channel and type
14
+ - [ ] Push permission requested only after demonstrated value
15
+ - [ ] Toasts auto-dismiss for informational; persist for actionable
16
+ - [ ] All notifications deep-link to relevant content
17
+ - [ ] Badge counts are accurate and update in real time
18
+ - [ ] Grouped notifications expand to show individual items
19
+ - [ ] Notification center includes mark-all-read and bulk actions
20
+ - [ ] Screen readers announce status messages via aria-live regions
21
+ - [ ] Notification sounds have visual/haptic alternatives
22
+ - [ ] Cross-platform behavior is consistent but platform-adapted
23
+ - [ ] Batching strategy prevents notification fatigue
24
+ - [ ] Expired notifications are pruned automatically
25
+ - [ ] Offline notifications queued and delivered on reconnection
26
+
27
+ ---
28
+
29
+ ## 1. Pattern Anatomy
30
+
31
+ ### 1.1 Delivery Channels
32
+
33
+ #### Push Notifications (Mobile)
34
+
35
+ Remote messages delivered via APNs (Apple Push Notification service) or FCM
36
+ (Firebase Cloud Messaging) to the device's system notification tray.
37
+
38
+ **Anatomy:**
39
+ - App icon — identifies the source application
40
+ - Title — bold, concise headline (40-50 characters max)
41
+ - Body text — supporting detail (90-120 characters visible before truncation)
42
+ - Timestamp — relative ("2m ago") or absolute ("3:42 PM")
43
+ - Media attachment — optional image, video thumbnail, or map preview
44
+ - Action buttons — up to 4 quick actions (iOS) or 3 (Android)
45
+ - Collapse key / thread ID — groups related notifications
46
+
47
+ **Key constraints:** Users must explicitly opt in. Delivery is best-effort, not
48
+ guaranteed. Background processing limits affect timing on iOS. Android notification
49
+ channels (API 26+) give users per-channel control over behavior.
50
+
51
+ #### In-App Notifications (Bell Icon / Notification Center)
52
+
53
+ Persistent in-app inbox accessed via a bell icon in the top navigation bar.
54
+
55
+ **Anatomy:**
56
+ - Bell icon — entry point; displays badge indicator (dot or count)
57
+ - Notification list — reverse-chronological feed
58
+ - Read/unread state — visual differentiation (bold text, background color)
59
+ - Notification item — avatar/icon + title + description + timestamp + action
60
+ - Filter tabs — segment by type (mentions, updates, assignments)
61
+ - Bulk actions — mark all read, clear all, settings link
62
+ - Empty state — friendly message when no notifications exist
63
+
64
+ **Interaction model:** Click bell to open dropdown/panel/drawer. Click individual
65
+ notification to deep-link to source. Hover to reveal secondary actions (dismiss,
66
+ snooze, mute). Scroll to load older notifications.
67
+
68
+ #### Toast / Snackbar
69
+
70
+ Transient, non-modal messages that appear briefly to confirm an action or
71
+ relay status information.
72
+
73
+ **Anatomy:**
74
+ - Container — compact bar, typically 48-64px height
75
+ - Status icon — success/checkmark, error/X, warning/triangle, info/i
76
+ - Message text — single line, concise (under 60 characters)
77
+ - Action button — optional single action ("Undo", "View", "Retry")
78
+ - Dismiss control — close button or auto-dismiss timer
79
+
80
+ **Placement conventions:**
81
+ - Material Design 3: bottom-center, above FAB if present
82
+ - Apple HIG: top-center (macOS) or system banner position (iOS)
83
+ - Web convention: top-right corner is most common
84
+ - Stacking: multiple toasts stack vertically with 8px spacing
85
+
86
+ **Timing guidelines (per MD3 and accessibility research):**
87
+ - Minimum display: 4-5 seconds (WCAG accessibility minimum)
88
+ - Default display: 5-8 seconds for informational
89
+ - Extended display: 10+ seconds or persistent for actionable toasts
90
+ - Auto-pause timer on hover/focus (accessibility requirement)
91
+
92
+ #### Email Notifications
93
+
94
+ Updates delivered to the user's email inbox, extending the notification system
95
+ beyond the app boundary.
96
+
97
+ **Best practices:**
98
+ - One-click unsubscribe (CAN-SPAM / GDPR requirement)
99
+ - Clear sender identification (app name, not "noreply")
100
+ - Deep-link back to the specific content in the app
101
+ - Batch digest emails (daily/weekly) for non-urgent updates
102
+ - Respect user email frequency preferences
103
+ - Subject lines under 50 characters for mobile preview
104
+
105
+ #### Badges (Dot and Count)
106
+
107
+ Small visual indicators overlaid on icons, tabs, or list items to signal
108
+ unread content or pending actions.
109
+
110
+ **Variants:**
111
+ - Dot badge — binary indicator (has/has-not unread); 6-10px diameter
112
+ - Count badge — numeric with "99+" max; 16dp minimum height (MD3)
113
+ - Icon badge — small icon overlay (e.g., alert triangle on settings icon)
114
+
115
+ **Placement:** Top-right corner of parent element, offset by ~25-50% of badge
116
+ diameter. Error color (red) for urgent, primary color for standard. Never
117
+ obscure the parent icon's core meaning.
118
+
119
+ #### Banners
120
+
121
+ Persistent, full-width messages at the top of a screen for system-wide
122
+ announcements or required actions. Remain visible until the user acts or
123
+ dismisses. Not appropriate for transient feedback (use toasts instead).
124
+
125
+ **Urgency mapping:**
126
+ - Critical (error): red/destructive color, blocking action required
127
+ - Warning: yellow/amber, attention needed but not blocking
128
+ - Informational: blue/neutral, contextual awareness
129
+ - Success: green, confirms completion of a significant action
130
+
131
+ #### Notification Preferences / Settings
132
+
133
+ Granular user controls that determine what, how, and when notifications arrive.
134
+
135
+ **Essential preference categories:**
136
+ - By channel: push, email, in-app, SMS (toggle each independently)
137
+ - By type: mentions, replies, assignments, updates, marketing
138
+ - By urgency: critical only, important + critical, all
139
+ - By schedule: quiet hours, notification summary times
140
+ - By source: per-project, per-channel, per-person muting
141
+ - By frequency: immediate, batched (hourly/daily), digest only
142
+
143
+ ### 1.2 Urgency Levels
144
+
145
+ | Level | Delivery | Visual | Sound | DND | Examples |
146
+ |-------|----------|--------|-------|-----|----------|
147
+ | **Critical** | Push + in-app + email | Red/destructive, persistent | Alert + haptic | Bypasses | Security breach, payment failure |
148
+ | **Important** | Push + in-app | Accent color, badge count | Standard | Respects | DMs, @mentions, assignments |
149
+ | **Informational** | In-app only | Neutral, dot badge | None | Respects | Status updates, activity feed |
150
+
151
+ ---
152
+
153
+ ## 2. Best-in-Class Examples
154
+
155
+ ### 2.1 Slack
156
+ - **Granular preferences:** Per-channel overrides (all messages, mentions only, nothing), keyword-based alerts
157
+ - **Badge differentiation:** Red dot for general unread; numeric badge for DMs/mentions — two-tier hierarchy reducing anxiety while maintaining awareness
158
+ - **DND/snooze:** Bell icon snooze with preset durations, clearly communicated to teammates
159
+ - **Cross-platform sync:** Read state syncs across desktop, mobile, web; reading on one device clears others
160
+
161
+ ### 2.2 Linear
162
+ - **Inbox-first approach:** Dedicated inbox view with clean design emphasizing teammate avatars and action descriptions
163
+ - **Subscription model:** Only subscribed issues/projects/teams generate notifications
164
+ - **Keyboard triage:** `e` to archive, `Enter` to open, shift for bulk select — power-user efficiency
165
+ - **Contextual grouping:** Same-issue notifications grouped with latest update + related count
166
+
167
+ ### 2.3 GitHub
168
+ - **Filter queries:** Custom filters (e.g., `repo:org/repo reason:review-requested`) for precise triage
169
+ - **Reason metadata:** Each notification tagged with why you received it (assigned, review-requested, mentioned, subscribed) — reduces "why am I seeing this?" friction
170
+ - **Triage actions:** Mark as done, save for later, unsubscribe from thread
171
+ - **Watching granularity:** Per-repo watch levels (participating, all activity, ignore, custom)
172
+
173
+ ### 2.4 Discord
174
+ - **Cascading hierarchy:** Server > category > channel notification settings, each overridable — most granular consumer notification system
175
+ - **Mention controls:** Separate toggles for @everyone, @here, @role, and @user mentions
176
+ - **Visual badge tiers:** White dot for unread, red badge with count for mentions; muted channels show nothing
177
+
178
+ ### 2.5 Notion
179
+ - **Cross-device escalation:** Desktop notification fires after 10s; mobile push fires only if desktop unacknowledged for 5 minutes — prevents duplicate interruptions
180
+ - **Follow model:** Users "follow" pages to receive updates; unfollowing stops notifications without affecting visibility
181
+ - **Inline context:** Notification shows the specific changed block, not just "page updated"
182
+
183
+ ### 2.6 iOS System Notifications
184
+ - **Notification Summary:** On-device ML sorts batched notifications by relevance at user-scheduled times
185
+ - **Focus modes:** Activity-based filtering (Work, Personal, Sleep, custom) with per-mode allowed apps/people
186
+ - **Four interruption levels:** passive, active, timeSensitive, critical — gold standard for urgency classification
187
+ - **Live Activities:** Real-time glanceable updates on lock screen for ongoing events
188
+
189
+ ### 2.7 Gmail
190
+ - **Priority inbox:** ML separates important from unimportant; only important emails trigger push
191
+ - **Category bundling:** Marketing, social, promotional emails auto-categorized, suppressing notifications
192
+ - **Snooze:** Snooze to reappear at a chosen time — well-understood deferred-action pattern
193
+
194
+ ### 2.8 Figma
195
+ - **Contextual in-app notifications:** Bell icon notifications for comments, file shares, and project updates with direct navigation to the exact comment location on canvas
196
+ - **Email digest control:** Separate toggles for immediate email vs. daily digest for different notification types
197
+ - **@-mention precision:** Notifications trigger only for direct @-mentions in comments, reducing noise from general file activity
198
+ - **Resolved state:** Comment thread resolution clears related notifications, keeping the inbox relevant
199
+
200
+ ---
201
+
202
+ ## 3. User Flow Mapping
203
+
204
+ ### 3.1 Core Delivery Flow
205
+
206
+ ```
207
+ Event occurs (server-side)
208
+ |
209
+ v
210
+ Classify urgency (critical / important / informational)
211
+ |
212
+ v
213
+ Check user preferences
214
+ |--- Channel allowed? (push / email / in-app / SMS)
215
+ |--- Type enabled? (mentions / updates / marketing)
216
+ |--- Schedule permits? (outside quiet hours?)
217
+ |--- Frequency cap reached? (max N per hour?)
218
+ |
219
+ v
220
+ Route to delivery channels
221
+ |--- Push: APNs/FCM --> device notification tray
222
+ |--- Email: SMTP --> user inbox (immediate or digest queue)
223
+ |--- In-app: WebSocket/SSE --> notification center + badge update
224
+ |--- SMS: Twilio/etc --> phone (critical only)
225
+ |
226
+ v
227
+ Track delivery status
228
+ |--- Delivered / Failed / Pending
229
+ |--- Opened / Dismissed / Expired
230
+ ```
231
+
232
+ ### 3.2 User Interaction Flow
233
+
234
+ ```
235
+ Notification arrives
236
+ |
237
+ +-- User sees it (lock screen / banner / badge / toast)
238
+ |
239
+ +-- User Action:
240
+ | |
241
+ | +-- Open ---------> Deep-link to source content
242
+ | | Mark as read, remove from tray
243
+ | |
244
+ | +-- Quick Action --> Execute without opening app
245
+ | | (reply, approve, snooze, archive)
246
+ | |
247
+ | +-- Dismiss ------> Remove from view
248
+ | | Remains unread in notification center
249
+ | |
250
+ | +-- Ignore -------> Remains until auto-dismiss or manual clear
251
+ |
252
+ +-- Post-Action:
253
+ |--- Update badge count
254
+ |--- Sync read state across devices
255
+ |--- Log engagement analytics
256
+ ```
257
+
258
+ ### 3.3 Batch Notifications
259
+
260
+ - **Time-window:** Collect for fixed interval (e.g., 30 min), deliver as summary (LinkedIn, Google Workspace)
261
+ - **Activity-based:** Group by entity — "Patrick and 3 others commented" instead of 4 separate notifications
262
+ - **Scheduled digest:** Daily/weekly email summaries (GitHub, Notion)
263
+ - **Batch anatomy:** Summary line + 2-3 top items + "View all" expand + category breakdown
264
+
265
+ ### 3.4 Notification Grouping
266
+
267
+ Grouping collapses related notifications in the notification center or system tray.
268
+
269
+ **Grouping strategies:**
270
+ - By source — all notifications from the same app grouped together
271
+ - By thread/conversation — messages in the same thread collapsed
272
+ - By entity — all activity on the same issue/document/task grouped
273
+ - By type — all mentions together, all assignments together
274
+ - By time — "Earlier today," "Yesterday," "This week" sections
275
+
276
+ **Grouped notification interaction:**
277
+ - Collapsed view shows count + most recent item
278
+ - Tap/click to expand and see all items in group
279
+ - Bulk actions available on the group level (mark all read, dismiss group)
280
+ - Individual items remain actionable within expanded group
281
+
282
+ ### 3.5 Notification History
283
+
284
+ The notification center serves as the persistent record of all notifications.
285
+
286
+ **Design requirements:**
287
+ - Retention period: define how long notifications persist (30-90 days typical)
288
+ - Search: allow users to search history by keyword or filter
289
+ - Pagination: infinite scroll or "Load more" for large histories
290
+ - State preservation: read/unread state persists across sessions
291
+ - Archive vs. delete: "Mark as done" removes from active view but keeps in
292
+ history; "Delete" permanently removes
293
+ - Filtered views: ability to view only unread, only mentions, only a specific
294
+ project or source
295
+
296
+ ### 3.6 Edge Cases
297
+
298
+ #### Offline Delivery
299
+ - Queue notifications on the server when user is offline
300
+ - Deliver queued notifications on reconnection, ordered chronologically
301
+ - Collapse duplicate/superseded notifications before delivery (e.g., if user
302
+ was mentioned 5 times in the same thread while offline, deliver one grouped
303
+ notification, not five)
304
+ - Show "offline" indicator in notification center when connection is lost
305
+ - Avoid overwhelming users with a burst of notifications on reconnection
306
+
307
+ #### Expired Notifications
308
+ - Notifications with time-bound relevance (e.g., "Meeting starts in 5 min")
309
+ should not be delivered after expiry
310
+ - Set TTL (time-to-live) on push notifications via APNs/FCM
311
+ - Show "Event has passed" for time-bound items rather than original CTA
312
+ - Auto-archive stale notifications in notification center
313
+
314
+ #### Notification Overflow
315
+ - Cap display at "99+" (universal convention)
316
+ - Prioritize newer and higher-urgency in visible list
317
+ - Rate-limit notification generation server-side
318
+ - After N notifications per hour from a single source, batch remainder
319
+ into a summary notification
320
+ - Provide "Clear all" but require confirmation for large batches
321
+
322
+ ---
323
+
324
+ ## 4. Micro-Interactions
325
+
326
+ ### 4.1 Badge Animation
327
+ - **Appear:** Scale-in from 0 to 1.0 with overshoot (1.15) and settle. 280ms, ease-out-back.
328
+ - **Count update:** Pulse to 1.1 scale and back. 150-200ms.
329
+ - **Disappear:** Scale-out to 0 with fade. 180ms, ease-in.
330
+
331
+ ```css
332
+ @keyframes badge-appear {
333
+ 0% { transform: scale(0); opacity: 0; }
334
+ 60% { transform: scale(1.15); opacity: 1; }
335
+ 80% { transform: scale(0.95); }
336
+ 100% { transform: scale(1); }
337
+ }
338
+ ```
339
+
340
+ ### 4.2 Toast Slide-In
341
+ - **Entry:** Slide from edge (bottom-up or top-down) with fade. 250-350ms, ease-out.
342
+ - **Exit:** Reverse slide + fade. 200ms, ease-in.
343
+ - **Stacking:** New toast pushes existing with smooth translateY. 200ms. Max 3-4 visible.
344
+ - **Progress bar:** Thin indicator showing remaining auto-dismiss time; pauses on hover/focus.
345
+
346
+ ### 4.3 Bell Shake
347
+ - Rotational wiggle: 15deg to -12deg to 8deg to -5deg to 0deg. 3-4 oscillations over 500ms.
348
+ - Triggered once on new notification arrival, not continuously.
349
+
350
+ ```css
351
+ @keyframes bell-shake {
352
+ 0% { transform: rotate(0deg); }
353
+ 15% { transform: rotate(15deg); }
354
+ 30% { transform: rotate(-12deg); }
355
+ 45% { transform: rotate(8deg); }
356
+ 60% { transform: rotate(-5deg); }
357
+ 100% { transform: rotate(0deg); }
358
+ }
359
+ ```
360
+
361
+ ### 4.4 Swipe Interactions (Mobile)
362
+
363
+ **Swipe-to-dismiss:**
364
+ - Horizontal swipe (left or right) to dismiss notification
365
+ - Threshold: 30-40% of notification width triggers dismiss
366
+ - Below threshold: spring back to original position (300ms, spring easing)
367
+ - Above threshold: accelerate off-screen + fade out
368
+ - Background color reveals underneath during swipe (red for delete)
369
+
370
+ **Swipe actions (asymmetric):**
371
+ - Swipe right: primary action (mark read) — blue/green background
372
+ - Swipe left: secondary action (snooze/archive) — orange/gray background
373
+ - Partial swipe reveals action icon and label
374
+ - Full swipe executes the action immediately
375
+ - Haptic feedback at the action threshold point
376
+
377
+ ### 4.5 Grouped Expand/Collapse
378
+
379
+ **Expand animation:**
380
+ - Collapsed state shows summary card with count
381
+ - Tap to expand: child notifications fan out below with staggered slide-in
382
+ - Each child slides down with 30-50ms stagger delay
383
+ - Total expand duration: 200-400ms depending on count
384
+ - Parent card remains as header with collapse affordance
385
+
386
+ **Collapse animation:**
387
+ - Reverse of expand with slight acceleration
388
+ - Duration: 250ms total
389
+ - Final child disappearing triggers summary count update
390
+
391
+ ### 4.6 Mark-as-Read Transition
392
+ - Background color transitions from unread highlight to read state (300ms, ease-in-out)
393
+ - Bold text weight transitions to regular weight simultaneously
394
+ - Badge dot fades out over 200ms
395
+ - If last unread item, trigger badge disappear animation on bell icon
396
+
397
+ ### 4.7 Pull-to-Refresh (Notification Center)
398
+ - Standard pull-to-refresh with custom icon animation
399
+ - Notification bell rotates during refresh (180-degree loop)
400
+ - New notifications slide in from top with staggered animation
401
+ - "Up to date" state shows subtle checkmark confirmation
402
+
403
+ ### 4.8 Reduced Motion
404
+
405
+ Respect `prefers-reduced-motion` by disabling all notification animations.
406
+ Replace with instant state changes (opacity swap, no transform).
407
+
408
+ ```css
409
+ @media (prefers-reduced-motion: reduce) {
410
+ .toast-enter, .badge-appear, .bell-shake,
411
+ .notification-expand, .swipe-action { animation: none; }
412
+ .toast { opacity: 1; transform: none; }
413
+ .badge { transform: scale(1); opacity: 1; }
414
+ }
415
+ ```
416
+
417
+ ### 4.9 Animation Timing Reference
418
+
419
+ | Interaction | Duration | Easing |
420
+ |-------------|----------|--------|
421
+ | Badge appear | 280ms | ease-out-back (cubic-bezier 0.34, 1.56, 0.64, 1) |
422
+ | Badge count pulse | 150-200ms | ease-in-out |
423
+ | Badge disappear | 180ms | ease-in |
424
+ | Toast enter | 250-350ms | ease-out |
425
+ | Toast exit | 200ms | ease-in |
426
+ | Bell shake | 500ms | linear (keyframed) |
427
+ | Swipe spring-back | 300ms | spring (underdamped) |
428
+ | Group expand | 200-400ms | ease-out (staggered) |
429
+ | Group collapse | 250ms | ease-in |
430
+ | Mark-as-read bg | 300ms | ease-in-out |
431
+
432
+ ---
433
+
434
+ ## 5. Anti-Patterns
435
+
436
+ **1. Notification overload** — Too many pushes cause opt-out. Research: 1 push/week leads to 10% disabling, 6% uninstalling. Fix: notification budgets, urgency throttling, intelligent batching.
437
+
438
+ **2. No notification preferences** — Binary on/off forces all-or-nothing choice. Fix: granular per-type, per-channel, per-source preferences. Discord's cascading hierarchy is the gold standard.
439
+
440
+ **3. Permission request on first launch** — Requesting push permission before users understand value yields low opt-in. Fix: delay to 4th-6th session (Localytics). Use pre-permission screen explaining value.
441
+
442
+ **4. Notifications without actions** — Informing without providing a way to act forces unnecessary app launches. Fix: every notification should deep-link to relevant content and support quick actions.
443
+
444
+ **5. Unclear notification source** — Users cannot determine which app/feature/person generated it. Fix: always display source. GitHub's "reason" metadata is exemplary.
445
+
446
+ **6. No mark-all-read** — Hundreds of unread items with no bulk action creates anxiety-inducing badge counts. Fix: "Mark all as read" at top, per-category bulk actions, "Clear all" with confirmation.
447
+
448
+ **7. Breaking deep links** — Tapping notification opens home screen instead of referenced content. Fix: robust deep-linking with fallback. Handle deleted/inaccessible content with explanatory message.
449
+
450
+ **8. Notification spam causing opt-out** — Aggressive re-engagement ("You haven't visited in 3 days!") or marketing disguised as transactional erodes trust. Fix: separate transactional from marketing. Respect engagement patterns.
451
+
452
+ **9. No snooze/remind-later** — Can only act now or dismiss permanently. Fix: snooze with preset times (1h, 3h, tomorrow). Gmail's pattern is well-understood.
453
+
454
+ **10. Stale notifications** — Expired/irrelevant/already-actioned items cluttering history. Fix: implement TTL, auto-archive completed events, show "Event has passed" for time-bound items.
455
+
456
+ **11. Toasts blocking content** — Overlaying navigation, submit buttons, or critical content. Fix: position where they don't overlap interactive elements. Ensure always dismissible.
457
+
458
+ **12. Identical cross-channel delivery** — Same notification via push + email + in-app simultaneously. Fix: channel escalation (Notion pattern: desktop first, mobile after 5min inactivity).
459
+
460
+ **13. Ignoring platform conventions** — Custom notification UIs that violate OS patterns. Fix: follow Apple HIG and Material Design 3 for structure and interaction. Customize content, not mechanics.
461
+
462
+ ---
463
+
464
+ ## 6. Accessibility
465
+
466
+ ### 6.1 Screen Reader Announcements (WCAG 4.1.3)
467
+
468
+ Status messages must be programmatically determinable via ARIA roles/properties without requiring focus change.
469
+
470
+ ```html
471
+ <!-- Non-urgent status (toast confirmations, updates) -->
472
+ <div role="status" aria-live="polite" aria-atomic="true">
473
+ <!-- Inject notification text dynamically -->
474
+ </div>
475
+
476
+ <!-- Urgent alerts (errors, critical warnings) -->
477
+ <div role="alert" aria-live="assertive" aria-atomic="true">
478
+ <!-- Inject alert text dynamically -->
479
+ </div>
480
+
481
+ <!-- Notification log (activity feed) -->
482
+ <div role="log" aria-live="polite" aria-relevant="additions">
483
+ <!-- Append new notifications -->
484
+ </div>
485
+ ```
486
+
487
+ **Rules:** Live region container must exist in DOM before content injection. Use `aria-atomic="true"` so full text is read. `role="status"` (polite) for non-urgent; `role="alert"` (assertive) for urgent — use sparingly. Never set `aria-live` on the notification itself; set it on the container.
488
+
489
+ ### 6.2 Focus Management
490
+ - Toasts must NOT steal focus. Use `aria-live` for announcement, not `focus()`.
491
+ - Opening notification center moves focus to list/heading.
492
+ - Each notification is focusable (link/button/listitem).
493
+ - Arrow keys for list navigation. Escape closes panel, returns focus to bell icon.
494
+ - Announce count on open: "Notifications, 5 unread."
495
+
496
+ ### 6.3 Sound Alternatives
497
+ - **Visual:** Screen flash, persistent badge, animated icon (bell shake), LED indicator
498
+ - **Haptic:** Distinct vibration patterns per type (long for critical, double-tap for important, single for informational)
499
+ - **System integration:** Respect iOS "LED Flash for Alerts", hearing aid protocols
500
+
501
+ ### 6.4 Visual Design
502
+ - Never use color alone for urgency (WCAG 1.4.1) — pair with icon + text label
503
+ - Badge colors: 3:1 minimum contrast against background (WCAG 1.4.11)
504
+ - Notification text: 4.5:1 contrast (WCAG 1.4.3)
505
+ - Unread state: use font-weight differentiation, not just color
506
+ - Touch targets: 44x44px (iOS) or 48x48dp (Android) minimum
507
+
508
+ ### 6.5 Cognitive Accessibility
509
+ - Allow disabling non-essential notification categories
510
+ - Provide "notification quiet mode" for batching all non-critical
511
+ - Use plain language, no jargon or anxiety-inducing phrasing ("URGENT," "ACT NOW")
512
+ - Include enough context to understand without opening app (who, what, where)
513
+ - Avoid ever-growing badge counts for non-actionable items
514
+ - Show "You're all caught up" when notification center is empty
515
+
516
+ ### 6.6 Motion Accessibility
517
+ Respect `prefers-reduced-motion`: disable bell shake, badge bounce, toast slide-in, expand/collapse animations. Replace with instant state changes (opacity swap, no transform). Ensure auto-dismiss timing is not the only interaction path.
518
+
519
+ ---
520
+
521
+ ## 7. Cross-Platform Adaptation
522
+
523
+ ### 7.1 iOS
524
+ - **Notification groups:** Custom grouping via `threadIdentifier`. Users expand/collapse.
525
+ - **Notification Summary:** Scheduled delivery of non-urgent notifications. On-device ML ranks by relevance.
526
+ - **Focus modes:** Per-activity filters. Apps declare interruption levels to participate.
527
+ - **Interruption levels:** `.passive` (silent), `.active` (default), `.timeSensitive` (breaks Focus), `.critical` (breaks everything, entitlement required).
528
+ - **Live Activities:** Real-time lock screen updates for ongoing events.
529
+ - **Rich notifications:** Custom UI via Notification Content Extensions.
530
+
531
+ ### 7.2 Android
532
+ - **Notification channels:** Required on API 26+. Per-channel name, importance, sound, vibration. Users customize/disable individually. Importance cannot be changed programmatically after first notification.
533
+ - **Importance levels:** MAX (heads-up + peek), HIGH (heads-up), DEFAULT (sound), LOW (silent), MIN (no status bar), NONE (disabled).
534
+ - **Styles:** BigTextStyle, BigPictureStyle, InboxStyle, MediaStyle, MessagingStyle (enables bubbles + smart replies).
535
+ - **Direct reply:** Inline text input in notification shade.
536
+ - **Bubbles:** Chat-head floating notifications for ongoing conversations.
537
+
538
+ ### 7.3 Web
539
+ - **Notification API:** Browser-native notifications requiring explicit permission. States: `default`, `granted`, `denied`. Once denied, user must change in browser settings.
540
+ - **Permission UX:** Never request on page load. Two-step pattern: custom in-app prompt explaining value, then browser dialog on user click. HTTPS required.
541
+ - **Push API:** Server-initiated via Service Worker, works when browser/tab closed.
542
+ - **Tab indicators:** `document.title` manipulation for unread count ("(3) App Name"). Badge API for favicon (limited support).
543
+
544
+ ### 7.4 In-App Notification Center Layouts
545
+
546
+ **Dropdown panel:** 350-450px wide, max 60vh height. Opens below bell icon.
547
+ Best for web apps with moderate notification volume. Closes on outside click.
548
+
549
+ **Slide-in drawer:** Full-height panel from right edge, 320-400px wide.
550
+ Best for apps with rich notification content and filter/search capabilities.
551
+
552
+ **Full-page view:** Dedicated notification page or screen. Best for mobile
553
+ apps and high-volume systems (GitHub, Linear). Allows deep filtering and search.
554
+
555
+ **Split view:** Notification list on left, detail on right. Best for desktop
556
+ apps with complex notification content requiring preview without navigation.
557
+
558
+ **Responsive adaptation:**
559
+ - Desktop: dropdown panel or side drawer
560
+ - Tablet: full-width drawer or half-sheet modal
561
+ - Mobile: full-screen view with back navigation
562
+
563
+ **Essential features for all layouts:**
564
+ - Unread count in header
565
+ - Filter/segment tabs (All, Unread, Mentions, etc.)
566
+ - Mark all as read button
567
+ - Individual notification actions (archive, mute, snooze)
568
+ - Settings shortcut (gear icon linking to notification preferences)
569
+ - Empty state with clear messaging ("You're all caught up")
570
+ - Loading state for async notification fetch
571
+ - Error state with retry action
572
+
573
+ ---
574
+
575
+ ## 8. Decision Tree
576
+
577
+ ### 8.1 Push vs. In-App vs. Email
578
+
579
+ ```
580
+ User active in app? --> YES --> In-app (toast for feedback, badge for awareness)
581
+ --> NO --> Time-sensitive?
582
+ --> YES --> Critical? --> Push + email + SMS
583
+ --> Push only (respect DND)
584
+ --> NO --> Digest? --> Email summary
585
+ --> Queue for next session (in-app only)
586
+ ```
587
+
588
+ ### 8.2 Urgency Classification
589
+
590
+ ```
591
+ Data loss / security / financial risk? --> CRITICAL (bypass DND, persistent, action required)
592
+ Personally addressed + direct mention? --> IMPORTANT (push + in-app, badge count)
593
+ Subscribed thread activity? --> INFORMATIONAL (in-app only, dot badge)
594
+ General system/product update? --> INFORMATIONAL (banner or digest)
595
+ None of the above? --> Do not notify (use activity log instead)
596
+ ```
597
+
598
+ ### 8.3 When to Batch
599
+
600
+ | Type | Batch Strategy |
601
+ |------|---------------|
602
+ | Transactional (orders, security) | Never batch. Deliver immediately. |
603
+ | Direct communication (DMs, mentions) | Batch only during quiet hours. |
604
+ | Activity updates (likes, follows) | Batch aggressively. "5 people liked your post." |
605
+ | System updates (changelog) | Periodic digests. Weekly email or in-app banner. |
606
+ | Marketing (promotions) | Batch and cap. Max 1-2 per week. |
607
+
608
+ ### 8.4 Toast vs. Banner vs. Modal
609
+
610
+ ```
611
+ Response to user action?
612
+ --> Simple confirmation? --> TOAST ("File saved", auto-dismiss 5-8s)
613
+ --> Requires decision? --> MODAL DIALOG ("Delete? Cannot be undone.")
614
+ --> Undoable action? --> TOAST + action ("Deleted. [Undo]", 8-10s)
615
+ System-wide announcement? --> BANNER (persistent, dismissible, top of viewport)
616
+ Real-time update? --> IN-APP NOTIFICATION (badge + notification center)
617
+ None of the above? --> Do not notify. Update passive indicators.
618
+ ```
619
+
620
+ ---
621
+
622
+ ## Platform Quick Reference
623
+
624
+ ### iOS Interruption Levels
625
+
626
+ | Level | Sound | Banner | Focus | Use For |
627
+ |-------|-------|--------|-------|---------|
628
+ | `.passive` | No | No | Respects | FYI, activity feed |
629
+ | `.active` | Yes | Yes | Respects | DMs, mentions |
630
+ | `.timeSensitive` | Yes | Yes | Breaks through | Expiring invites, reminders |
631
+ | `.critical` | Yes | Yes | Breaks through | Health/security (entitlement required) |
632
+
633
+ ### Android Importance Levels
634
+
635
+ | Level | Sound | Heads-up | Status Bar | Use For |
636
+ |-------|-------|----------|------------|---------|
637
+ | MAX (5) | Yes | Yes (peek) | Yes | Calls, alarms |
638
+ | HIGH (4) | Yes | Yes | Yes | Messages, mentions |
639
+ | DEFAULT (3) | Yes | No | Yes | Updates, reminders |
640
+ | LOW (2) | No | No | No | Recommendations |
641
+ | MIN (1) | No | No | No | Background info |
642
+
643
+ ---
644
+
645
+ ## Implementation Checklist
646
+
647
+ ### Server-Side
648
+
649
+ - [ ] Event-driven notification generation (pub/sub or message queue)
650
+ - [ ] User preference service with per-channel, per-type granularity
651
+ - [ ] Notification template engine with localization support
652
+ - [ ] Rate limiting and notification budget enforcement
653
+ - [ ] Delivery tracking (sent, delivered, opened, dismissed)
654
+ - [ ] Batch/digest aggregation engine with configurable windows
655
+ - [ ] TTL management for time-bound notifications
656
+ - [ ] Offline queue with deduplication on delivery
657
+ - [ ] Channel escalation logic (e.g., in-app first, push after delay)
658
+
659
+ ### Client-Side
660
+
661
+ - [ ] Real-time notification transport (WebSocket / SSE / long polling)
662
+ - [ ] Local notification state management (read/unread, dismissed)
663
+ - [ ] Badge count synchronization across tabs and devices
664
+ - [ ] Deep-link routing for every notification type
665
+ - [ ] Notification permission state management and pre-prompt UX
666
+ - [ ] Offline notification queue with reconnection handling
667
+ - [ ] Accessibility: aria-live regions for all dynamic notifications
668
+ - [ ] Animation system with `prefers-reduced-motion` support
669
+ - [ ] Notification center with filter, search, and bulk actions
670
+
671
+ ### Testing
672
+
673
+ - [ ] Push delivery verified on iOS, Android, and web
674
+ - [ ] Deep-link navigation tested for every notification type
675
+ - [ ] Preferences correctly suppress and allow notifications
676
+ - [ ] Badge counts update accurately across all state changes
677
+ - [ ] Toast auto-dismiss meets 5-second accessibility minimum
678
+ - [ ] Screen reader announces toast/snackbar/banner content
679
+ - [ ] Keyboard navigation works throughout notification center
680
+ - [ ] Focus management correct on open/close of notification panel
681
+ - [ ] Notification behavior correct during DND / Focus modes
682
+ - [ ] Offline-to-online delivery and deduplication verified
683
+ - [ ] Expired notification handling (TTL) tested
684
+ - [ ] Notification overflow behavior at 99+ items
685
+ - [ ] `prefers-reduced-motion` disables all notification animations
686
+ - [ ] Cross-device read-state synchronization
687
+ - [ ] Email unsubscribe link functions correctly
688
+
689
+ ---
690
+
691
+ ## Key Sources
692
+
693
+ - Apple HIG — Notifications (developer.apple.com/design/human-interface-guidelines/notifications)
694
+ - Apple HIG — Managing Notifications (developer.apple.com/design/human-interface-guidelines/managing-notifications)
695
+ - Material Design 3 — Notifications (m3.material.io/foundations/content-design/notifications)
696
+ - Material Design 3 — Badges (m3.material.io/components/badges/guidelines)
697
+ - NNG — Five Mistakes in Push Notifications (nngroup.com/articles/push-notification/)
698
+ - NNG — Indicators, Validations, Notifications (nngroup.com/articles/indicators-validations-notifications/)
699
+ - WCAG 2.2 SC 4.1.3 — Status Messages (w3.org/WAI/WCAG22/Understanding/status-messages.html)
700
+ - W3C — Cognitive Accessibility (w3.org/TR/coga-usable/)
701
+ - Sara Soueidan — Accessible Notifications with ARIA Live Regions (sarasoueidan.com/blog/accessible-notifications-with-aria-live-regions-part-1/)
702
+ - Smashing Magazine — Design Guidelines for Better Notifications UX (smashingmagazine.com/2025/07/design-guidelines-better-notifications-ux/)
703
+ - Carbon Design System — Notification Pattern (carbondesignsystem.com/patterns/notification-pattern/)
704
+ - Android Developers — Notification Channels (developer.android.com/develop/ui/views/notifications/channels)
705
+ - web.dev — Permission UX (web.dev/articles/push-notifications-permissions-ux)