@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,32 @@
1
+ # Directory Purpose
2
+
3
+ The `design` directory provides a comprehensive guide to User Interface (UI) and User Experience (UX) design, covering visual foundations, psychology, and platform-specific guidelines.
4
+
5
+ # Key Concepts
6
+
7
+ - Visual and interaction design principles
8
+ - Platform-specific UX guidelines
9
+ - Human psychology and cognitive load
10
+ - Reusable UI patterns and flows
11
+
12
+ # File Map
13
+
14
+ - `PROGRESS.md` — tracks completion of design content
15
+ - `index.md` — semantic map of the design directory
16
+
17
+ # Subdirectories
18
+
19
+ - `/disciplines` — research, systems, responsive design, and interaction
20
+ - `/foundations` — typography, color, spacing, a11y, and hierarchy
21
+ - `/patterns` — auth, navigation, forms, and onboarding flows
22
+ - `/platforms` — iOS, Android, desktop, web, and tablet guidelines
23
+ - `/psychology` — mental models, cognitive load, and error psychology
24
+ - `/tooling` — design tool integrations (MCP servers, CLIs, automation)
25
+
26
+ # Reading Guide
27
+
28
+ If starting a new UI from scratch → read `/foundations`
29
+ If designing for a specific device → read `/platforms`
30
+ If mapping out user flows → read `/patterns`
31
+ If optimizing usability → read `/psychology`
32
+ If integrating AI agents with design tools → read `/tooling`
@@ -0,0 +1,474 @@
1
+ # Authentication Flows — Design Pattern Module
2
+
3
+ > **Module Type:** Pattern
4
+ > **Domain:** UI/UX Design Systems
5
+ > **Last Updated:** 2026-03-07
6
+ > **Standards:** Apple HIG, Material Design 3, NIST SP 800-63B-4, WCAG 2.2, FIDO Alliance Design Guidelines
7
+ > **Confidence:** High — synthesized from official platform guidelines, peer-reviewed usability research, and industry case studies
8
+
9
+ ---
10
+
11
+ ## Quick Reference Checklist
12
+
13
+ ### Forms & Input
14
+ - [ ] Every input has a visible `<label>` element (not placeholder-only)
15
+ - [ ] `autocomplete` attributes set (`username`, `current-password`, `new-password`, `one-time-code`)
16
+ - [ ] Password visibility toggle present on all password fields
17
+ - [ ] Password manager autofill not blocked (no `readonly`, no paste-prevention)
18
+ - [ ] Email field uses `type="email"` with `inputmode="email"`
19
+ - [ ] OTP field uses `inputmode="numeric"` with `autocomplete="one-time-code"`
20
+
21
+ ### Error Handling
22
+ - [ ] Errors appear inline next to the relevant field
23
+ - [ ] Error messages use `aria-live="polite"` for screen reader announcement
24
+ - [ ] User input preserved after failed submission (never clear typed email/password)
25
+ - [ ] Generic error for wrong credentials ("Invalid email or password") — never reveal which field is wrong
26
+ - [ ] Focus moves to first error or error summary on submission failure
27
+
28
+ ### Security & Standards
29
+ - [ ] Minimum password length: 15 characters (NIST 800-63B-4 single-factor), 8 characters (multi-factor)
30
+ - [ ] No composition rules (no forced uppercase/lowercase/special character requirements)
31
+ - [ ] No periodic password expiration unless compromise detected
32
+ - [ ] Passwords checked against breach/common-password lists
33
+ - [ ] Rate limiting on login attempts with progressive delays
34
+ - [ ] Session timeout with advance warning and extension option
35
+
36
+ ### Accessibility
37
+ - [ ] Entire flow navigable by keyboard alone (Tab, Enter, Escape)
38
+ - [ ] CAPTCHA has an accessible alternative (audio, proof-of-work, or honeypot)
39
+ - [ ] Time limits for verification codes are generous (minimum 10 minutes)
40
+ - [ ] Color is not the only indicator of password strength or error state
41
+ - [ ] Touch targets minimum 44x44pt (iOS) / 48x48dp (Android)
42
+
43
+ ### Cross-Platform
44
+ - [ ] Sign in with Apple offered when third-party login is present (App Store guideline 4.8)
45
+ - [ ] Passkey support with Conditional UI / autofill integration
46
+ - [ ] Biometric opt-in prompt after first successful traditional login
47
+ - [ ] Deep link handling for magic links works across browsers and apps
48
+
49
+ ---
50
+
51
+ ## 1. Pattern Anatomy
52
+
53
+ ### 1.1 Sign Up (Registration)
54
+
55
+ **Flow:** `[Landing] -> [Registration Form] -> [Email Verification] -> [Onboarding] -> [Authenticated State]`
56
+
57
+ **Key principles:**
58
+ - Minimize fields. Every additional field reduces completion by ~10% (Baymard Institute). Collect only what is essential; defer everything else to onboarding.
59
+ - Show password requirements upfront as a real-time checklist, not after failure.
60
+ - Never require password confirmation fields. Provide a visibility toggle instead.
61
+ - Pre-fill known data (e.g., email from invitation links).
62
+
63
+ **NIST 800-63B-4 password requirements:**
64
+ - Minimum 15 characters (sole authenticator) or 8 characters (with second factor)
65
+ - Maximum of at least 64 characters must be supported
66
+ - No composition rules (no forced uppercase/special character mix)
67
+ - No periodic expiration unless breach detected
68
+ - Must check against known-breach lists and common passwords
69
+ - Unicode characters including spaces and emojis must be accepted
70
+
71
+ ### 1.2 Sign In (Login)
72
+
73
+ **Flow:** `[Sign-in Form] -> [Credential Validation] -> [MFA Challenge (if enabled)] -> [Authenticated State]`
74
+
75
+ **Key principles:**
76
+ - Single-page login (email + password on one screen) is the default best practice. It works with password managers, is faster, and reduces cognitive load.
77
+ - Identifier-first (two-page) is justified only when routing to different backends (SSO detection, federated identity). If used, support autofill across both pages.
78
+ - "Remember me" should default to ON for consumer apps. Default OFF only for banking, healthcare, or shared-device contexts.
79
+ - Position "Forgot password?" adjacent to the password field, not at the bottom of the form.
80
+
81
+ ### 1.3 Password Reset
82
+
83
+ **Flow:** `[Forgot Password] -> [Enter Email] -> [Confirmation] -> [Email with Reset Link] -> [New Password Form] -> [Auto-login]`
84
+
85
+ - Pre-fill email if the user already typed it on the login form.
86
+ - Confirmation screen: "If an account exists with this email, we've sent a reset link" — never confirm/deny account existence.
87
+ - Reset links expire after 30-60 minutes, single-use.
88
+ - After reset, auto-sign the user in. Invalidate all other sessions.
89
+
90
+ ### 1.4 Email Verification
91
+
92
+ **Flow:** `[Registration Complete] -> [Verification Pending] -> [User Opens Email] -> [Click Link] -> [Verified State]`
93
+
94
+ - Allow limited app access before verification (view-only mode). Blocking all access increases drop-off.
95
+ - Provide "Resend verification" button with 60-second cooldown.
96
+ - Handle cross-device link opening: show success message with "Return to app" button.
97
+ - Verification links expire after 24-72 hours.
98
+
99
+ ### 1.5 Social Login (OAuth)
100
+
101
+ **Flow:** `[Login Screen] -> [Select Provider] -> [Redirect to Provider] -> [Authorize] -> [Redirect Back] -> [Authenticated State]`
102
+
103
+ - Use official branded buttons following each provider's strict brand guidelines.
104
+ - Display social options above email/password form with a visual divider ("or").
105
+ - Limit to 2-4 providers to avoid decision paralysis.
106
+ - Handle account collision: when social login email matches an existing account, prompt the user to link (see Section 3.4).
107
+ - Request minimum scopes (email + basic profile only).
108
+
109
+ **App Store Guideline 4.8:** If any third-party social login is offered, you must also offer an option meeting Apple's privacy criteria (limits data to name/email, allows email privacy, no ad tracking). Sign in with Apple satisfies this but is no longer the only acceptable option.
110
+
111
+ ### 1.6 Passwordless — Magic Links
112
+
113
+ **Flow:** `[Enter Email] -> [Send Link] -> ["Check your email"] -> [Click Link] -> [Authenticated State]`
114
+
115
+ - Links expire in 10-15 minutes, single-use.
116
+ - Handle cross-device scenarios: present a confirmation button rather than auto-authenticating when opened in a different browser.
117
+ - Offer a code-based fallback (6-digit OTP alongside the magic link) for email clients that mangle links.
118
+ - Calendly reported registration completion increasing from 43% to 71% after switching to magic links, with mobile users converting 3x better.
119
+
120
+ ### 1.7 Passwordless — Passkeys (WebAuthn)
121
+
122
+ **Conditional UI flow:** `[Page Loads] -> [Browser Shows Passkey in Autofill] -> [User Selects] -> [Biometric/PIN] -> [Authenticated]`
123
+
124
+ **FIDO Alliance Design Guidelines:**
125
+ - Use identifier-first approach: user enters email, system checks for registered passkey.
126
+ - Implement Conditional UI (autofill integration) — this is the highest-conversion pattern.
127
+ - Do NOT rely on a separate "Sign in with Passkey" button alone — research shows low adoption and confusion. Integrate into the existing login flow.
128
+ - Use the canonical FIDO Alliance passkey icon consistently.
129
+ - Offer passkey creation after successful sign-up, not during. Frame as convenience: "Sign in faster next time with your fingerprint or face."
130
+ - Always provide a fallback (password, magic link, OTP).
131
+
132
+ ### 1.8 Multi-Factor Authentication (MFA)
133
+
134
+ **TOTP Setup:** `[Settings] -> [Enable 2FA] -> [QR Code + Manual Key] -> [Scan] -> [Verify Code] -> [Recovery Codes] -> [Active]`
135
+ **TOTP Login:** `[Password OK] -> [Enter 6-Digit Code] -> [Authenticated]`
136
+
137
+ - Show both QR code and manual text key. After setup, show 8-10 single-use recovery codes with download/copy option.
138
+ - Use `inputmode="numeric"` and `autocomplete="one-time-code"` on OTP inputs.
139
+ - Accept codes from adjacent time windows (current +-1 period) for clock skew.
140
+
141
+ **SMS OTP:** NIST 800-63B-4 classifies SMS as a "restricted" authenticator — acceptable but discouraged for high-value scenarios due to SIM-swap vulnerability. Show last 4 digits of phone number. Provide "Resend" with 60-second cooldown.
142
+
143
+ **Push Notification:** Include context in the push (IP, location, device). Implement number matching to prevent MFA fatigue/prompt-bombing. Always provide TOTP or recovery code fallback.
144
+
145
+ ### 1.9 Biometric Authentication
146
+
147
+ - Always use the system-provided biometric prompt (Face ID sheet, BiometricPrompt bottom sheet) — never custom modals. System UI provides instant trust.
148
+ - Biometric should be opt-in, offered after first successful traditional login.
149
+ - Always provide fallback: PIN, password, or pattern.
150
+ - Biometric data never leaves the device; app receives only pass/fail from OS secure hardware.
151
+ - Average biometric unlock: 0.5 seconds vs. 6-12 seconds for password entry.
152
+
153
+ ### 1.10 Single Sign-On (SSO)
154
+
155
+ **Flow:** `[Enter Email] -> [SSO Detected via Domain] -> [Redirect to IdP] -> [Authenticate] -> [SAML/OIDC Assertion] -> [Redirect Back] -> [Authenticated]`
156
+
157
+ - Use email domain detection to auto-route users to the correct IdP.
158
+ - Hide the password field for SSO-enforced domains.
159
+ - Support JIT (Just-In-Time) provisioning: auto-create accounts for users who authenticate via SSO but lack an existing account.
160
+
161
+ ---
162
+
163
+ ## 2. Best-in-Class Examples
164
+
165
+ ### 2.1 Apple — Privacy as a Feature
166
+ Sign in with Apple provides email relay ("Hide My Email"), generating a unique random forwarding address. Face ID/Touch ID is the default for returning users. Passkeys sync across devices via iCloud Keychain. Button design is strictly standardized (SF Pro, specific sizing/colors).
167
+
168
+ ### 2.2 Google — Adaptive Authentication
169
+ Identifier-first flow justified by routing needs (Google accounts, workspace SSO, passkeys). One Tap sign-in provides a low-friction overlay on partner sites. Among the first to deploy passkeys at scale with Conditional UI. Security challenges adapt dynamically — push, TOTP, SMS, security key, or number matching — selecting the lowest-friction, highest-security method available.
170
+
171
+ ### 2.3 Stripe — Transparent Session Management
172
+ Clean single-page login. Clear "Remember this device" explanation. Dashboard shows all active sessions with device info, location, and revocation capability. API keys use color-coded test/live distinction. MFA setup is streamlined with mandatory recovery code download.
173
+
174
+ ### 2.4 Linear — Context-Adaptive Auth
175
+ Email-first flow routes to password, magic link, Google SSO, or SAML based on workspace config. Magic link is a first-class option (not a fallback), matching their email-adjacent workflow. Workspace detection auto-routes after email entry. Same login page serves individuals, small teams, and enterprise SSO.
176
+
177
+ ### 2.5 1Password — Recovery as First-Class UX
178
+ The "Secret Key" (128-bit) supplements the master password, so neither alone can access the vault. The "Emergency Kit" PDF is designed for physical storage — a proactive answer to "what if I lose everything." Biometric unlock for returning sessions. Acts as both a passkey consumer and a passkey manager.
179
+
180
+ ### 2.6 Slack — Multi-Tenancy Done Right
181
+ Workspace-first flow matches the mental model of "signing into my team." Magic link is the default for many users. Multi-workspace simultaneous sessions with easy switching. Admins can enforce SSO and disable password login, with clear UI messaging.
182
+
183
+ ### 2.7 GitHub — Mandatory Security Without Revolt
184
+ 2023-2024 mandatory MFA rollout succeeded through: advance notice, multiple setup reminders, grace period, and support for TOTP, SMS, security keys, and GitHub Mobile push. Clear passkey upgrade prompts. Device verification with email codes and device info. Fine-grained API token permissions with visual selector.
185
+
186
+ ### 2.8 Vercel — Passwordless-First
187
+ No password creation during sign-up — email verification code or magic link by default. Social login (GitHub, GitLab, Bitbucket) matches their developer user base. Proves passwordless-first is viable for a production platform.
188
+
189
+ ---
190
+
191
+ ## 3. User Flow Mapping
192
+
193
+ ### 3.1 Happy Paths
194
+
195
+ **Email/Password Sign-Up:** User clicks "Sign up" -> enters email -> creates password (sees real-time strength meter) -> agrees to terms -> submits -> checks email -> clicks verification link -> sees onboarding.
196
+
197
+ **Social Login:** User clicks "Continue with Google" -> redirected to consent screen -> selects account -> grants permissions -> redirected back -> account created -> sees onboarding.
198
+
199
+ **Magic Link:** User enters email -> clicks "Send magic link" -> opens email -> clicks link -> token validated -> dashboard.
200
+
201
+ **Passkey (Conditional UI):** User taps email field -> browser shows passkey in autofill -> selects passkey -> biometric confirmation -> dashboard.
202
+
203
+ **MFA (TOTP):** User enters email/password -> credentials valid -> enters 6-digit code from authenticator -> dashboard.
204
+
205
+ ### 3.2 Error Flows
206
+
207
+ **Wrong Password:** Error inline: "Invalid email or password." Email preserved, password cleared, cursor in password field. After 5 failures: progressive delay (2s, 4s, 8s). After 10: lockout (15-30 min) with reset password link.
208
+
209
+ **Account Locked:** Form disabled with clear message and timer. "Reset password" link prominent. Email notification sent to account owner.
210
+
211
+ **Expired Link:** "This link has expired." Provide "Send a new link" button with pre-filled email.
212
+
213
+ **Unverified Email:** Credentials accepted but session restricted. Banner with "Resend verification" button. Limited access granted.
214
+
215
+ **Invalid MFA Code:** "Invalid code. Please try again." After 3 failures: suggest recovery code. After 5: temporary MFA lockout. "Lost access?" link always visible.
216
+
217
+ ### 3.3 Recovery Flows
218
+
219
+ **Forgot Password:** Click "Forgot password?" -> email pre-filled from login form -> "If an account exists, we've sent a link" -> click reset link (30-60 min expiry) -> create new password -> auto-login -> all other sessions invalidated -> confirmation email sent.
220
+
221
+ **Lost 2FA Device:** Option 1: Enter one of the saved recovery codes (single-use). Option 2: SMS fallback if configured. Option 3: Contact support with identity verification. All options lead to re-authentication and prompt to set up new 2FA.
222
+
223
+ ### 3.4 Edge Cases
224
+
225
+ **Account Collision (Same Email):** User signs in with Google, email matches existing password account -> prompt: "An account exists. Sign in with your password to link." -> accounts linked, both methods now work.
226
+
227
+ **Session Expiry:** API returns 401 -> try silent refresh token -> if expired: modal "Session expired, please sign in" -> preserve current URL -> after re-auth, return to exact page.
228
+
229
+ **SSO User Attempts Password Login:** Email entered -> SSO-enforced domain detected -> password field hidden -> "Your organization uses SSO" -> redirect to IdP.
230
+
231
+ ---
232
+
233
+ ## 4. Micro-Interactions
234
+
235
+ ### 4.1 Password Visibility Toggle
236
+ Closed-eye/open-eye icon inside the password field, right-aligned. Toggles field between `password` and `text` types. Reverts to hidden on submission. Must have `aria-label` that updates with state. Subtle icon transition (150-200ms ease-in-out).
237
+
238
+ ### 4.2 Password Strength Meter
239
+ Four-segment bar: weak (red), fair (orange), good (yellow-green), strong (green). Segments fill with smooth width transition (200-300ms ease-out). Text label states current strength. Complementary checklist with met/unmet indicators. Use `role="meter"` with `aria-valuenow/valuetext`. Color must not be the sole indicator.
240
+
241
+ **Calculation:** Prioritize length (most important per NIST), breach-list presence, and entropy estimation. Avoid simplistic "must have uppercase" rules.
242
+
243
+ ### 4.3 Loading State During Auth
244
+ Disable submit button immediately on click. Replace text with spinner + "Signing in..." (button width stays fixed). If >3 seconds, add reassurance: "Verifying credentials..." Never show a full-page loader — keep the form visible.
245
+
246
+ ### 4.4 Biometric Prompt Animation
247
+ Always use system-provided prompts. iOS Face ID: pulsing glow during scan, checkmark + success haptic on pass, horizontal shake + error haptic on fail. Android BiometricPrompt: bottom sheet with pulsing icon, checkmark morph on success, red flash + error message on fail. Never create custom biometric UIs.
248
+
249
+ ### 4.5 Success Redirect
250
+ Brief success indicator (green checkmark, 400-600ms) before redirect. For social login returns: "Welcome back, [Name]" with avatar. Smooth page transition (fade/slide). Redirect to the pre-auth deep link, not generic dashboard.
251
+
252
+ ### 4.6 OTP Code Input
253
+ Six individual character boxes with auto-advancing focus. Paste fills all boxes simultaneously. Auto-submit after all digits entered (300ms delay for visual confirmation). Each box highlights on focus, briefly scales on input (1.05x, 100ms). Use `aria-label="Digit N of 6"` per box.
254
+
255
+ ---
256
+
257
+ ## 5. Anti-Patterns
258
+
259
+ ### 5.1 Separate Username/Password Pages Without Justification
260
+ Breaks password manager autofill and doubles perceived effort. Justified only for SSO routing or passkey detection. **Fix:** Default to single-page login.
261
+
262
+ ### 5.2 Password Rules Displayed Only After Failure
263
+ Users create a password, submit, then learn it fails rules. **Fix:** Show requirements upfront as a real-time checklist. Better: follow NIST and eliminate composition rules entirely.
264
+
265
+ ### 5.3 "Remember Me" Defaulting to Off
266
+ Most users expect persistence on personal devices. **Fix:** Default ON for consumer apps. OFF only for banking/healthcare/shared devices.
267
+
268
+ ### 5.4 Email Case Sensitivity
269
+ Treating "User@Example.com" and "user@example.com" as different accounts. **Fix:** Normalize to lowercase before storage and comparison.
270
+
271
+ ### 5.5 Forced Password Change Without Reason
272
+ Periodic rotation leads to weaker passwords (Password1, Password2...). NIST 800-63B-4 explicitly recommends against it. **Fix:** Require changes only on evidence of compromise.
273
+
274
+ ### 5.6 CAPTCHA Before Any Auth Attempt
275
+ Adds friction for 100% of users to stop a rare threat. **Fix:** Use invisible bot detection (Cloudflare Turnstile, proof-of-work). Escalate to visible challenge only after suspicious behavior.
276
+
277
+ ### 5.7 Hiding Social Login Options
278
+ Placing social buttons behind "More options" or below the fold. **Fix:** Display prominently above email/password, separated by a clear divider.
279
+
280
+ ### 5.8 Blocking Password Paste
281
+ Harms security by preventing password manager usage. The UK NCSC explicitly recommends against it. **Fix:** Always allow paste on all input fields.
282
+
283
+ ### 5.9 Clearing Form Fields on Error
284
+ Clearing both email and password after failed login. **Fix:** Preserve email, clear only password, focus cursor in password field.
285
+
286
+ ### 5.10 Error Messages That Leak Information
287
+ "No account with this email" enables account enumeration. **Fix:** Use generic: "Invalid email or password." For resets: "If an account exists, we've sent a link."
288
+
289
+ ### 5.11 No Loading Feedback on Submit
290
+ User clicks "Sign in," nothing changes for 1-3 seconds, clicks again. **Fix:** Immediately disable button, show spinner, debounce submissions.
291
+
292
+ ### 5.12 Requiring Account Creation for One-Time Actions
293
+ Forcing sign-up before a purchase or download. **Fix:** Offer guest checkout. Suggest account creation after the action.
294
+
295
+ ### 5.13 Logout Burying
296
+ Hiding sign-out deep in menus. **Fix:** Place in user avatar menu or profile dropdown, accessible within 2 interactions from any screen.
297
+
298
+ ---
299
+
300
+ ## 6. Accessibility
301
+
302
+ ### 6.1 Form Label Associations (WCAG 1.3.1, 3.3.2)
303
+ Every input needs a visible `<label>` with `for` matching the input's `id`. Never rely on placeholder as the sole label. Group related fields with `<fieldset>` and `<legend>`.
304
+
305
+ ```html
306
+ <!-- Correct -->
307
+ <label for="email">Email address</label>
308
+ <input type="email" id="email" autocomplete="username">
309
+
310
+ <!-- Incorrect -->
311
+ <input type="email" placeholder="Email address">
312
+ ```
313
+
314
+ ### 6.2 Error Announcements (WCAG 3.3.1, 3.3.3, 4.1.3)
315
+ Associate errors with fields via `aria-describedby`. Use `aria-live="polite"` on error containers. Validate on blur or submit — never on every keystroke (disrupts screen readers). On submission failure, move focus to error summary or first invalid field. Errors must be descriptive: "Password must be at least 15 characters" not "Invalid."
316
+
317
+ ```html
318
+ <input type="password" id="password" aria-describedby="pw-error" aria-invalid="true">
319
+ <div id="pw-error" role="alert" aria-live="polite">
320
+ Password must be at least 15 characters. Currently 8 characters.
321
+ </div>
322
+ ```
323
+
324
+ ### 6.3 Keyboard Navigation (WCAG 2.1.1, 2.4.3)
325
+ Entire flow completable via keyboard. Focus order follows visual order. Focus indicators: minimum 2px outline, 3:1 contrast. Modals trap focus and return it on close. Escape closes modals.
326
+
327
+ ### 6.4 CAPTCHA Alternatives (WCAG 3.3.8)
328
+ WCAG 2.2 SC 3.3.8 (Level AA): if auth requires a cognitive function test, an alternative must exist.
329
+
330
+ | Method | Accessibility | Friction | Protection |
331
+ |--------|--------------|----------|------------|
332
+ | Proof-of-work (Turnstile, Friendly Captcha) | Excellent | None | High |
333
+ | Honeypot fields | Good (can false-positive with screen readers) | None | Moderate |
334
+ | Rate limiting + behavioral analysis | Excellent | None | Moderate-High |
335
+ | Image/Audio CAPTCHA | Poor | High | Moderate |
336
+
337
+ **Recommendation:** Proof-of-work or behavioral analysis as primary. Never rely on image CAPTCHA alone.
338
+
339
+ ### 6.5 Time Limits (WCAG 2.2.1)
340
+ Minimum 10 minutes for OTP codes, 30+ minutes for email links. Warn about limits before starting. For TOTP, accept 3-code window (previous + current + next).
341
+
342
+ ### 6.6 Screen Reader MFA Considerations
343
+ OTP boxes: `aria-label="Digit 1 of 6"` through `"Digit 6 of 6"`. QR codes: provide manual entry key as text alternative. Push MFA: provide TOTP/recovery code fallback. Biometric: system prompts are accessible by default.
344
+
345
+ ---
346
+
347
+ ## 7. Cross-Platform Adaptation
348
+
349
+ ### 7.1 iOS
350
+ - **Sign in with Apple:** Required when third-party social login offered (Guideline 4.8). Must have equal or greater prominence. Supports "Hide My Email" relay.
351
+ - **Face ID / Touch ID:** Use LocalAuthentication framework. Include `NSFaceIDUsageDescription` in Info.plist. Always provide passcode fallback. Prompt opt-in after first password login.
352
+ - **Passkeys:** Synced via iCloud Keychain. Use `ASAuthorizationController`. Conditional UI supported in Safari/WKWebView. Cross-device via QR scan.
353
+ - **Keychain:** Set `autocomplete` attributes correctly. Support Associated Domains (`webcredentials`) for app/website credential sharing.
354
+
355
+ ### 7.2 Android
356
+ - **Google Sign-In:** Use Credential Manager API (replaces legacy SDK). One Tap for returning users. Unified API for passkeys and passwords.
357
+ - **Biometric:** Use `BiometricPrompt` (Android 9+), not deprecated `FingerprintManager`. System bottom sheet abstracts sensor type. Set `setAllowedAuthenticators()` for biometric strength. Always include "Use password/PIN" fallback.
358
+ - **Passkeys:** Managed via Credential Manager API. Synced via Google Password Manager. Cross-device via Bluetooth proximity + QR. Conditional UI in Chrome/WebView.
359
+ - **Autofill:** Use `android:autofillHints` — `AUTOFILL_HINT_USERNAME`, `AUTOFILL_HINT_PASSWORD`, `AUTOFILL_HINT_SMS_OTP`. Works with third-party managers.
360
+
361
+ ### 7.3 Web
362
+ - **Passkeys/WebAuthn:** `navigator.credentials.create()`/`.get()`. Conditional UI via `mediation: "conditional"`. Feature-detect: `PublicKeyCredential.isConditionalMediationAvailable`. WebAuthn Level 3 (W3C, January 2025) adds hybrid transport support.
363
+ - **Social Login Buttons:** Follow each provider's brand guidelines. Popup-based OAuth for desktop, redirect for mobile web. Handle popup-blocked with redirect fallback.
364
+ - **Password Managers:** Use `autocomplete="username"`, `current-password`, `new-password`. Never use `autocomplete="off"`. Use standard `<form>` and `<input>` elements.
365
+ - **Sessions:** Secure, HttpOnly, SameSite cookies. Refresh token rotation. Timeout warning modal: "Session expires in 2 min. [Extend] [Sign Out]." Re-auth for sensitive actions even within active sessions.
366
+
367
+ ---
368
+
369
+ ## 8. Decision Tree
370
+
371
+ ### 8.1 Auth Method by App Type
372
+
373
+ | App Type | Primary Auth | Add-On | MFA Policy | Session Length |
374
+ |----------|-------------|--------|------------|---------------|
375
+ | Consumer (social, e-commerce) | Social Login + Email/Password | Passkeys, Magic Links | Optional (sensitive actions only) | 30 days |
376
+ | B2B SaaS | Email/Password + SSO | Magic Links, Passkeys | Required for admins | 7-14 days idle |
377
+ | Enterprise / Internal | SSO (SAML/OIDC) only | Passkeys | Required all users (TOTP/keys) | 4-8 hours absolute |
378
+ | Financial / Healthcare | Email/Password + mandatory MFA | Biometric (mobile) | Required (avoid SMS) | 15-30 min idle |
379
+ | Developer Platform | Email/Password + Social (GitHub) | Passkeys, Magic Links | Required (TOTP + keys) | 14 days |
380
+
381
+ ### 8.2 When to Require MFA
382
+
383
+ **Require:** Admin/elevated privileges, financial data, health records/PII, security settings modification, API key access, regulatory mandate (SOC 2, HIPAA, PCI DSS), user-enabled, org policy.
384
+
385
+ **Recommend (don't require):** Consumer apps with account value, collaborative tools, apps storing sensitive user data, developer platforms.
386
+
387
+ **Skip:** Anonymous/guest access, low-value accounts, read-only content consumption, trusted devices with biometric re-auth.
388
+
389
+ ### 8.3 Passwordless vs. Traditional
390
+
391
+ **Favor passwordless when:** Users are in email-heavy workflows, technically savvy, app is used infrequently (passwords forgotten between sessions), mobile-first audience, you want to eliminate password-related support tickets (40-50% of helpdesk volume).
392
+
393
+ **Favor traditional when:** Low-connectivity environments, users expect it (enterprise norms), offline access needed, user base includes demographics unfamiliar with passwordless.
394
+
395
+ **Best approach:** Offer both. Default to the highest-completion method for your user base. A/B test. Migrate gradually toward passwordless with upgrade prompts.
396
+
397
+ ### 8.4 Passkey Readiness
398
+
399
+ Prerequisites: server supports WebAuthn (FIDO2), user base on supported platforms (iOS 16+, Android 9+, Windows 10+), fallback auth method exists, sign-in supports Conditional UI, passkey enrollment UX designed, cross-device flows tested.
400
+
401
+ All met: implement as upgrade path. Partial: implement for supported platforms with fallback. Mostly unmet: improve existing auth, plan passkey roadmap.
402
+
403
+ ---
404
+
405
+ ## Appendix: Reference Tables
406
+
407
+ ### Autocomplete Attributes
408
+ | Context | `autocomplete` Value |
409
+ |---------|---------------------|
410
+ | Sign in — email/username | `username` |
411
+ | Sign in — password | `current-password` |
412
+ | Sign up — password | `new-password` |
413
+ | MFA — OTP code | `one-time-code` |
414
+ | First name | `given-name` |
415
+ | Last name | `family-name` |
416
+ | Phone (SMS OTP) | `tel` |
417
+
418
+ ### Session Timeouts
419
+ | App Type | Idle Timeout | Absolute Timeout |
420
+ |----------|-------------|-----------------|
421
+ | Banking / Financial | 5-15 min | 4 hours |
422
+ | Healthcare (HIPAA) | 15 min | 8 hours |
423
+ | Enterprise SaaS | 30 min | 8-12 hours |
424
+ | Consumer SaaS | 1-7 days | 30 days |
425
+ | Social Media | 30+ days | 90 days |
426
+
427
+ ### Error Message Templates
428
+ | Scenario | Bad | Good |
429
+ |----------|-----|------|
430
+ | Wrong credentials | "Password is incorrect" | "Invalid email or password." |
431
+ | Account not found | "No account with this email" | "Invalid email or password." |
432
+ | Account locked | "Account locked" | "Too many attempts. Try again in 15 min, or reset your password." |
433
+ | Expired link | "Link expired" | "This link has expired. Request a new one below." |
434
+ | Weak password | "Too weak" | "Must be at least 15 characters. Try a phrase like 'correct horse battery staple'." |
435
+ | MFA code wrong | "Wrong code" | "That code didn't work. Check your authenticator for the latest code." |
436
+ | Session expired | (silent redirect) | "Your session has expired. Sign in again to continue." |
437
+ | SSO required | "Cannot use password" | "Your organization requires SSO. Click 'Sign in with SSO' to continue." |
438
+
439
+ ### Auth Method Comparison
440
+ | Method | Security | Friction | Phishing Resistant | Offline |
441
+ |--------|----------|----------|-------------------|---------|
442
+ | Password only | Low | Medium | No | Yes |
443
+ | Password + SMS OTP | Medium | High | No | No |
444
+ | Password + TOTP | High | Medium | No | Yes |
445
+ | Password + Push | High | Low | Partial | No |
446
+ | Password + Security Key | Very High | Medium | Yes | Yes |
447
+ | Magic Link | Medium | Low | Partial | No |
448
+ | Passkey | Very High | Very Low | Yes | Yes |
449
+ | Biometric (device) | High | Very Low | Yes (local) | Yes |
450
+ | SSO (SAML/OIDC) | High | Low | Depends on IdP | No |
451
+
452
+ ---
453
+
454
+ ## References
455
+
456
+ - **NIST SP 800-63B-4** (August 2025) — [csrc.nist.gov](https://csrc.nist.gov/pubs/sp/800/63/b/4/final)
457
+ - **Apple HIG: Sign in with Apple** — [developer.apple.com](https://developer.apple.com/design/human-interface-guidelines/sign-in-with-apple)
458
+ - **Apple HIG: Managing Accounts** — [developer.apple.com](https://developer.apple.com/design/human-interface-guidelines/managing-accounts)
459
+ - **Material Design 3 Foundations** — [m3.material.io](https://m3.material.io/foundations)
460
+ - **WCAG 2.2** — [w3.org](https://www.w3.org/TR/WCAG22/)
461
+ - **FIDO Alliance Passkey Design Guidelines** — [passkeycentral.org](https://www.passkeycentral.org/design-guidelines/)
462
+ - **Google Passkeys UX** — [developers.google.com](https://developers.google.com/identity/passkeys/ux/user-interface-design)
463
+ - **Google Passkeys User Journeys** — [developers.google.com](https://developers.google.com/identity/passkeys/ux/user-journeys)
464
+ - **Smashing Magazine: Rethinking Authentication UX** — [smashingmagazine.com](https://www.smashingmagazine.com/2022/08/authentication-ux-design-guidelines/)
465
+ - **Smart Interface Design Patterns: 2-Page Login** — [smart-interface-design-patterns.com](https://smart-interface-design-patterns.com/articles/2-page-login-pattern/)
466
+ - **Authgear: Login & Signup UX 2025 Guide** — [authgear.com](https://www.authgear.com/post/login-signup-ux-guide)
467
+ - **NN/g: Password Creation** — [nngroup.com](https://www.nngroup.com/articles/password-creation/)
468
+ - **OWASP Session Management Cheat Sheet** — [cheatsheetseries.owasp.org](https://cheatsheetseries.owasp.org/cheatsheets/Session_Management_Cheat_Sheet.html)
469
+ - **OWASP MFA Cheat Sheet** — [cheatsheetseries.owasp.org](https://cheatsheetseries.owasp.org/cheatsheets/Multifactor_Authentication_Cheat_Sheet.html)
470
+ - **WorkOS: MFA UX Best Practices** — [workos.com](https://workos.com/blog/ux-best-practices-for-mfa)
471
+ - **LogRocket: MFA Design** — [blog.logrocket.com](https://blog.logrocket.com/ux-design/authentication-ui-ux/)
472
+ - **LogRocket: Magic Links UX** — [blog.logrocket.com](https://blog.logrocket.com/ux-design/how-to-use-magic-links/)
473
+ - **Hanko: Passkey Best Practices** — [hanko.io](https://www.hanko.io/blog/the-dos-and-donts-of-integrating-passkeys)
474
+ - **Apple App Store Review Guidelines (4.8)** — [developer.apple.com](https://developer.apple.com/app-store/review/guidelines/)