@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,778 @@
1
+ # Error Psychology — Design Expertise Module
2
+
3
+ > Error psychology studies why humans make errors, how errors affect emotional and cognitive states, and how interface design can prevent, tolerate, and recover from errors gracefully. This module spans cognitive error taxonomy (Don Norman), systemic failure models (James Reason), emotional consequences of repeated failure (Seligman, Dollard), manufacturing-derived mistake-proofing (Shingo), and their concrete application to UI/UX design across platforms.
4
+
5
+ ---
6
+
7
+ ## 1. The Science of Human Error
8
+
9
+ ### 1.1 Slips vs. Mistakes — Don Norman's Error Taxonomy
10
+
11
+ Don Norman, in *The Design of Everyday Things* (1988, revised 2013), established the foundational distinction between two classes of human error based on where in the cognitive cycle the breakdown occurs.
12
+
13
+ **Slips — Correct intention, wrong execution.**
14
+ The user has the right goal but performs the wrong action. Slips occur at lower cognitive levels (execution, perception, interpretation) and are subconscious, automatic-behavior failures.
15
+
16
+ | Slip Type | Mechanism | Example |
17
+ |-----------|-----------|---------|
18
+ | **Capture slip** | A frequently performed action "captures" the intended one | Opening email out of habit when you meant to open the calendar |
19
+ | **Description-similarity** | Wrong action on an object resembling the target | Dragging a file to the wrong folder because two icons look alike |
20
+ | **Mode error** | System is in a different mode than the user assumes | Typing text in a spreadsheet cell that is in formula-edit mode |
21
+ | **Memory-lapse slip** | Forgetting to complete a step in a sequence | Sending an email without the attachment |
22
+
23
+ **Mistakes — Wrong intention, correct execution.**
24
+ The user forms an incorrect goal or plan but executes it properly. Mistakes occur at higher cognitive levels (goal formation, planning, evaluation) and are conscious, deliberate-reasoning failures.
25
+
26
+ | Mistake Type | Mechanism | Example |
27
+ |--------------|-----------|---------|
28
+ | **Rule-based** | Correct diagnosis, wrong action plan | Choosing "Reply All" when a private reply was appropriate |
29
+ | **Knowledge-based** | Incorrect or incomplete mental model | Believing deleting a shared Google Doc removes only your copy |
30
+ | **Memory-lapse** | Forgetting a goal or evaluation step | Starting a wizard, forgetting the purpose, selecting wrong options |
31
+
32
+ **Design implication:** Slips require better constraints, affordances, and forcing functions. Mistakes require better feedback, conceptual models, and information architecture.
33
+
34
+ ### 1.2 The Swiss Cheese Model — James Reason
35
+
36
+ James Reason introduced the Swiss Cheese Model in *Human Error* (1990). Originally developed for aviation and healthcare safety, it provides a powerful framework for understanding how errors propagate through systems.
37
+
38
+ **Core concept:** Every defensive layer in a system (training, UI design, validation, confirmation dialogs, server-side checks) has gaps — like holes in slices of Swiss cheese. A catastrophic error occurs only when holes in multiple layers momentarily align, allowing a "trajectory of accident opportunity" to pass through all defenses.
39
+
40
+ **Four levels of failure in Reason's model:**
41
+
42
+ ```
43
+ Level 1: Organizational influences
44
+ (Company decides to skip usability testing to meet deadline)
45
+ |
46
+ Level 2: Unsafe supervision / process gaps
47
+ (No design review for destructive actions)
48
+ |
49
+ Level 3: Preconditions for unsafe acts
50
+ (User is fatigued, rushing, on mobile with poor connectivity)
51
+ |
52
+ Level 4: Unsafe acts — the user's slip or mistake
53
+ (User taps "Delete All" instead of "Delete Selected")
54
+ ```
55
+
56
+ **Application to UI design — multiple independent defense layers:**
57
+
58
+ 1. **Constraint layer** — Make the dangerous action harder to reach (progressive disclosure, spatial separation)
59
+ 2. **Warning layer** — Confirmation dialog with specific consequences stated
60
+ 3. **Recovery layer** — Undo functionality, soft-delete with retention period
61
+ 4. **Audit layer** — Server-side logging enabling manual recovery
62
+
63
+ A single defense (e.g., a confirmation dialog) is insufficient. When any single layer fails (user clicks "Confirm" out of habit, undo window expires), the remaining layers still protect against permanent damage.
64
+
65
+ ### 1.3 Error Prevention vs. Error Recovery
66
+
67
+ Two complementary strategies exist for handling errors, and mature design systems employ both.
68
+
69
+ **Error Prevention** — Eliminate error-prone conditions before they arise.
70
+ - Constraints that make invalid states unrepresentable (date pickers instead of free text)
71
+ - Defaults that guide toward correct choices
72
+ - Disabling actions until prerequisites are met
73
+ - Progressive disclosure that hides complexity until needed
74
+
75
+ **Error Recovery** — Minimize damage and effort when errors inevitably occur.
76
+ - Undo/redo stacks that let users reverse actions
77
+ - Auto-save and draft preservation
78
+ - Clear error messages with actionable fix instructions
79
+ - Forgiving input parsing (accepting "212-555-1234" or "2125551234" or "(212) 555-1234")
80
+
81
+ **The critical insight:** Prevention is always preferable, but recovery is always necessary. No prevention system is perfect — the Swiss Cheese Model guarantees gaps. Systems that invest only in prevention leave users stranded when errors slip through. Systems that invest only in recovery create a frustrating, error-heavy experience. NNG's Heuristic #5 (Error Prevention) and Heuristic #9 (Help Users Recognize, Diagnose, and Recover from Errors) encode this dual strategy directly.
82
+
83
+ ### 1.4 The Frustration-Aggression Hypothesis
84
+
85
+ Proposed by Dollard, Doob, Miller, Mowrer, and Sears at Yale (1939): frustration — the blocking of goal-directed behavior — produces an instigation to aggression. Revised by Miller (1941): frustration creates readiness to respond aggressively, but aggression is one possible outcome among several.
86
+
87
+ **Manifestations in digital interfaces:**
88
+
89
+ | Response | Behavioral Signal | Example |
90
+ |----------|-------------------|---------|
91
+ | **Aggression** | Rage clicks (3+ clicks on same element in 2 seconds) | Button appears clickable but does nothing |
92
+ | **Fixation** | Repeating the same failed action | Resubmitting a form returning the same vague error |
93
+ | **Withdrawal** | Abandoning the task entirely | Closing the tab after the third failed login |
94
+ | **Regression** | Reverting to simpler strategies | Calling phone support instead of using self-service |
95
+
96
+ **Design implication:** Every error state is a frustration event. Cumulative errors compound non-linearly. One error with easy recovery keeps users engaged. Three errors in succession drives abandonment — not because any single error was catastrophic, but because accumulated frustration exceeded tolerance.
97
+
98
+ ### 1.5 Learned Helplessness from Repeated Errors
99
+
100
+ Martin Seligman's learned helplessness theory (1967): organisms exposed to repeated, uncontrollable negative events stop trying to improve their situation — even when escape becomes possible.
101
+
102
+ **In user interfaces:** When users repeatedly encounter errors they cannot resolve (vague messages, incomprehensible validation, forms that clear on failure), they develop digital learned helplessness:
103
+
104
+ - **Low self-efficacy:** "I'm not good with computers"
105
+ - **Premature abandonment:** Giving up at the first difficulty on future tasks
106
+ - **Support dependency:** Calling support for tasks they could handle independently
107
+ - **Platform avoidance:** Switching to competitors entirely
108
+
109
+ **The vicious cycle:** Vague error -> user cannot fix -> tries random changes -> more errors -> frustration compounds -> user concludes "this is too hard for me" -> helplessness established -> avoids similar tasks in future.
110
+
111
+ **Design antidote:** Ensure every error state provides a clear, achievable path forward. Consistent success at recovery builds **learned mastery** — the opposite of helplessness.
112
+
113
+ ### 1.6 Error Tolerance
114
+
115
+ Error tolerance means designing systems that absorb errors gracefully rather than punishing users for inevitable mistakes.
116
+
117
+ **Three dimensions:**
118
+ 1. **Input tolerance** — Accept varied formats, ignore harmless deviations (phone: `(212) 555-1234` or `2125551234`)
119
+ 2. **State tolerance** — Preserve user progress despite errors (auto-save, retaining form values on validation failure)
120
+ 3. **Action tolerance** — Allow reversal of unintended actions (multi-level undo, soft delete with recovery period)
121
+
122
+ **Key principle:** The cost of an error to the user should be proportional to the ease of making that error. Easy-to-make errors must be easy to reverse.
123
+
124
+ ### 1.7 Poka-Yoke — Mistake-Proofing from Manufacturing
125
+
126
+ Poka-yoke ("mistake-proofing") was developed by Shigeo Shingo at Toyota in the 1960s. Instead of training workers to avoid mistakes, redesign the system so mistakes become impossible or immediately detectable.
127
+
128
+ **Two types:**
129
+
130
+ | Type | Manufacturing Example | UI Example |
131
+ |------|----------------------|------------|
132
+ | **Prevention** (makes errors impossible) | USB-C fits only one way | Disabled submit until required fields valid |
133
+ | **Detection** (makes errors visible) | Dashboard warning light | Red border on email field missing "@" |
134
+
135
+ **Six poka-yoke strategies for UI:**
136
+ 1. **Elimination** — Remove error opportunity (auto-fill address from ZIP lookup)
137
+ 2. **Replacement** — Constrained inputs replace free-text (dropdowns, pickers, sliders)
138
+ 3. **Prevention** — Make errors logically impossible (`maxlength`, `type="email"`, grayed-out buttons)
139
+ 4. **Facilitation** — Make correct action easier than incorrect (smart defaults, autocomplete)
140
+ 5. **Detection** — Catch errors immediately (real-time password strength, address verification)
141
+ 6. **Mitigation** — Reduce consequences (soft-delete, "undo send" window, auto-save)
142
+
143
+ ---
144
+
145
+ ## 2. Design Implications — 15 Rules for Error-Resilient Interfaces
146
+
147
+ ### Rule 1: Prevent Errors with Constraints
148
+
149
+ **Principle:** The most effective error message never appears. Use constraints to make errors structurally impossible.
150
+
151
+ **Rule:** For every input, ask: "Can I constrain this to eliminate invalid states?" Use pickers, dropdowns, toggles instead of free-text when the valid set is known.
152
+
153
+ ```
154
+ BAD: Free text "Date of Birth" -> Users type "March 7th", "3/7/26", "07-03-2026"
155
+ GOOD: Three dropdowns [Month v] [Day v] [Year v] or a date picker
156
+ -> Invalid dates not selectable, zero parsing errors
157
+ ```
158
+
159
+ ### Rule 2: Use Confirmation for Destructive Actions Only
160
+
161
+ **Principle:** Confirmation dialogs interrupt flow to ensure intent before high-consequence actions, but lose effectiveness when overused.
162
+
163
+ **Rule:** Reserve confirmation exclusively for irreversible actions. State the specific consequence — never use generic "Are you sure?"
164
+
165
+ ```
166
+ BAD: "Are you sure?" [Cancel] [OK]
167
+ GOOD: "Permanently delete 847 customer records? This cannot be undone."
168
+ [Cancel] [Delete 847 Records]
169
+ -> Consequence quantified, button names the exact action
170
+ ```
171
+
172
+ **NNG finding:** Confirmation effectiveness depends on rarity. Frequent dialogs train users to click "Confirm" without reading — a capture slip.
173
+
174
+ ### Rule 3: Provide Undo Instead of Confirmation
175
+
176
+ **Principle:** Undo respects agency, is less disruptive, and does not suffer from habituation.
177
+
178
+ **Rule:** For reversible actions, prefer undo over confirmation. Show a toast with undo action after the operation completes.
179
+
180
+ ```
181
+ CONFIRMATION (inferior): Dialog -> user reads -> clicks Archive -> done
182
+ UNDO (superior): Archive immediately -> toast "Archived. [Undo]" for 8 sec
183
+ -> User continues uninterrupted, clicks Undo only if mistaken
184
+ ```
185
+
186
+ **When undo is NOT sufficient:** Sending to 10,000 recipients, permanent data purge, financial transactions, external API triggers.
187
+
188
+ ### Rule 4: Error Messages Must Explain + Suggest Fix
189
+
190
+ **Principle:** An error message must: (1) state what happened, (2) explain why, (3) tell how to fix it.
191
+
192
+ **Rule:** Every error must contain a plain-language description and at least one actionable suggestion. Never blame the user. Keep under 14 words (90% comprehension) or 8 words (100% comprehension).
193
+
194
+ ```
195
+ TERRIBLE: "Error 0x80070005"
196
+ BAD: "Invalid input"
197
+ MEDIOCRE: "Please enter a valid email address"
198
+ GOOD: "This email is missing an '@'. Example: name@company.com"
199
+ EXCELLENT: "No account for alex@gmial.com. Did you mean alex@gmail.com?"
200
+ ```
201
+
202
+ **Baymard finding:** For complex fields (card number, phone, password), prepare 4-7 specific messages per field. Generic "invalid" messages increase recovery time by up to 5x.
203
+
204
+ ### Rule 5: Inline Validation — Timed Correctly
205
+
206
+ **Rule:** Validate on blur (when user leaves the field), never while still typing. Remove error indicators immediately when corrected.
207
+
208
+ ```
209
+ BAD: User types "a" in email -> immediately shows "invalid email" (premature)
210
+ GOOD: User types "alex@gmial", tabs away -> shows "Did you mean gmail.com?"
211
+ BEST: First interaction: validate on blur. After error shown: validate on
212
+ keyup (green check the moment input becomes valid — positive reinforcement)
213
+ ```
214
+
215
+ **Research (Wroblewski):** Proper inline validation: 22% fewer errors, 42% faster completion, 31% higher satisfaction.
216
+
217
+ ### Rule 6: Never Clear Form Fields on Error
218
+
219
+ **Rule:** Always preserve all user input when displaying validation errors. Highlight only fields needing correction. Never reset the form.
220
+
221
+ ```
222
+ DESTRUCTIVE: 12-field form -> submit -> "Username taken" -> ALL fields cleared
223
+ PRESERVING: 12-field form -> submit -> username highlighted red
224
+ "The username 'alex_dev' is taken. Available: alex_dev1, alexdev_"
225
+ All other fields retain values
226
+ ```
227
+
228
+ **Baymard finding:** 34% of e-commerce sites clear credit card details on validation error — a leading cause of checkout abandonment.
229
+
230
+ ### Rule 7: Auto-Save to Prevent Data Loss
231
+
232
+ **Principle:** Users should never lose work because of a browser crash, accidental navigation, network interruption, or session timeout.
233
+
234
+ **Rule:** Implement auto-save for any form or content creation flow where data entry takes more than 30 seconds. Provide clear "Saved" / "Saving..." status indicators. Warn users before navigating away from unsaved changes. Maintain drafts as recoverable objects.
235
+
236
+ ```
237
+ AUTO-SAVE IMPLEMENTATION:
238
+
239
+ 1. Trigger: Save on blur (field exit) + every 30 seconds during
240
+ active typing + on beforeunload event
241
+
242
+ 2. Feedback:
243
+ - During save: "Saving..." (subtle spinner)
244
+ - After save: "Saved just now" or "Saved 2 min ago"
245
+ - On failure: "Changes not saved — check your connection"
246
+ [Retry] [Save locally]
247
+
248
+ 3. Recovery:
249
+ - On return after crash: "We found a draft from March 7
250
+ at 2:34 PM. [Resume draft] [Discard]"
251
+ - Draft management: Drafts visible in a dedicated section
252
+ (as in Gmail, Twitter/X, Notion)
253
+
254
+ 4. Navigation guard:
255
+ - Browser beforeunload: "You have unsaved changes.
256
+ Leave anyway?"
257
+ ```
258
+
259
+ **Caution:** Auto-save should be used cautiously for data with financial, security, or privacy implications. A user editing their bank account number should not have partial edits auto-saved mid-change. In these cases, explicit save with confirmation is more appropriate.
260
+
261
+ ### Rule 8: Every Error State Must Offer a Forward Path
262
+
263
+ **Principle:** When errors occur, the system should minimize damage, preserve context, and provide a clear path to recovery. The user should never reach a dead end.
264
+
265
+ **Rule:** Every error state must offer at least one forward path. Provide retry options, alternative actions, and help resources. Never show an error without an actionable next step.
266
+
267
+ ```
268
+ DEAD END (no recovery path):
269
+ "Something went wrong."
270
+ [OK]
271
+ -> User clicks OK and is returned to... where? What now?
272
+
273
+ RECOVERABLE (clear forward paths):
274
+ "We couldn't process your payment. Your card was not charged."
275
+
276
+ What you can do:
277
+ - [Try again] — retry the same payment
278
+ - [Use a different card] — switch payment method
279
+ - [Save cart for later] — preserve selections without paying
280
+ - [Contact support] — get human help (est. wait: 2 min)
281
+
282
+ Error reference: PAY-4092 (if you contact support)
283
+ ```
284
+
285
+ **Network error pattern:**
286
+ ```
287
+ MOBILE NETWORK LOSS:
288
+ "You're offline. Your changes are saved on this device
289
+ and will sync when you're back online."
290
+ [View saved changes] [Continue editing offline]
291
+ -> No data loss, no panic, clear expectation setting
292
+ ```
293
+
294
+ ### Rule 9: Progressive Disclosure Reduces Error Opportunity
295
+
296
+ **Rule:** Break complex flows into sequential steps. Show advanced options only when requested.
297
+
298
+ ```
299
+ HIGH ERROR SURFACE: Single page, 25 fields -> cognitive overload, scattered errors
300
+ LOW ERROR SURFACE: Step 1: Address (5 fields) -> Step 2: Shipping (1 choice)
301
+ -> Step 3: Payment (4 fields) -> Step 4: Review -> Place Order
302
+ Each step validated before proceeding
303
+ ```
304
+
305
+ **NNG:** Progressive disclosure improves learnability, efficiency, and error rate.
306
+
307
+ ### Rule 10: Separate Destructive from Routine Actions
308
+
309
+ **Rule:** Place destructive actions in physically and visually distinct locations. Require different interaction patterns.
310
+
311
+ ```
312
+ DANGEROUS: [Save] [Delete Account] <- adjacent, same size, one-click
313
+ SAFE: [Save Changes] <- primary position
314
+ ─── Danger Zone ───
315
+ [Delete Account] <- separated, red, requires typing "DELETE"
316
+ ```
317
+
318
+ ### Rule 11: Forgiving Input Parsing
319
+
320
+ **Rule:** Accept all reasonable format variations. Parse and normalize on the backend. Show normalized format for confirmation.
321
+
322
+ ```
323
+ RIGID: Phone rejects "(212) 555-1234", demands "212-555-1234" only
324
+ FORGIVING: Accepts any format -> strips non-digits -> validates -> displays "(212) 555-1234"
325
+ ```
326
+
327
+ ### Rule 12: Contextual Help at Error-Prone Points
328
+
329
+ **Rule:** Add helper text, tooltips, and examples to fields with high error rates. Place help adjacent to the input.
330
+
331
+ ```
332
+ WITHOUT: CVV: [___] -> 18% error rate
333
+ WITH: CVV: [___] (?) "3 digits on back of card" [card image] -> significantly lower
334
+ ```
335
+
336
+ ### Rule 13: Show System Status During Long Operations
337
+
338
+ **Rule:** For operations >1 second, show progress. For >4 seconds, show estimated time. Never leave the screen unchanged.
339
+
340
+ ```
341
+ NO STATUS: "Submit Payment" -> screen frozen 8 sec -> user clicks again -> double charge
342
+ WITH STATUS: "Submit Payment" -> "Processing..." (button disabled) -> "Verifying..." -> "Confirmed!"
343
+ ```
344
+
345
+ ### Rule 14: Design Error States as First-Class UI States
346
+
347
+ **Principle:** Error states are not edge cases — they are regular states that every user will encounter. They deserve the same design attention as success states.
348
+
349
+ **Rule:** Design every screen's error state intentionally during the design phase, not as an afterthought during development. Create specific empty states, error states, and partial-failure states in your design system.
350
+
351
+ ```
352
+ STATES EVERY SCREEN NEEDS:
353
+
354
+ 1. Loading state -> Skeleton screen or spinner
355
+ 2. Empty state -> Helpful prompt to add content
356
+ 3. Populated state -> Normal view with data
357
+ 4. Error state -> Clear message + recovery action
358
+ 5. Partial state -> Some data loaded, some failed
359
+ 6. Offline state -> What's available without network
360
+ 7. Permission state -> What to do if access is denied
361
+
362
+ PARTIAL FAILURE EXAMPLE:
363
+ Dashboard with 4 widgets:
364
+ - Widget 1: Data loaded successfully
365
+ - Widget 2: Data loaded successfully
366
+ - Widget 3: "Couldn't load sales data. [Retry]"
367
+ - Widget 4: Data loaded successfully
368
+ -> Don't blank the entire page because one API call failed
369
+ -> Show what you can, fail gracefully where you can't
370
+ ```
371
+
372
+ ### Rule 15: Smart Defaults Reduce Decision Errors
373
+
374
+ **Rule:** Pre-select the statistically most common choice. Allow easy override. Never use defaults that serve the business at the user's expense (dark pattern territory).
375
+
376
+ ```
377
+ NO DEFAULT: Shipping: ( ) Standard ( ) Express ( ) Overnight
378
+ SMART: Shipping: ( ) Standard (*) Express ( ) Overnight
379
+ "Most customers choose Express (2-3 days, $5.99)"
380
+ ```
381
+
382
+ ---
383
+
384
+ ## 3. Measurement — Quantifying Error Impact
385
+
386
+ ### 3.1 Error Rate Metrics
387
+
388
+ **Task Error Rate:** Percentage of task attempts that include at least one error.
389
+ ```
390
+ Task Error Rate = (Tasks with errors / Total task attempts) x 100
391
+
392
+ Benchmarks:
393
+ - Simple tasks (login, search): < 5% error rate
394
+ - Moderate tasks (checkout, forms): < 15% error rate
395
+ - Complex tasks (multi-step config): < 25% error rate
396
+ ```
397
+
398
+ **Error Frequency:** Average number of errors per task completion.
399
+ ```
400
+ Error Frequency = Total errors observed / Total tasks completed
401
+
402
+ Interpretation:
403
+ - 0.0 - 0.3: Excellent — errors are rare
404
+ - 0.3 - 1.0: Acceptable — occasional errors, manageable
405
+ - 1.0 - 2.0: Concerning — users struggle regularly
406
+ - 2.0+: Critical — interface is fundamentally broken
407
+ ```
408
+
409
+ **Error Severity Classification:**
410
+
411
+ | Severity | Definition | Example |
412
+ |----------|-----------|---------|
413
+ | **Cosmetic** | No functional impact | Typo in label |
414
+ | **Minor** | Brief confusion, self-corrects in seconds | Misleading icon |
415
+ | **Major** | Significant effort to recover | Form cleared on submit |
416
+ | **Critical** | Data loss or task abandonment | Payment double-charged |
417
+ | **Catastrophic** | Irreversible real-world consequences | Wrong medical record updated |
418
+
419
+ ### 3.2 Recovery Metrics
420
+
421
+ **Error Recovery Rate:** Percentage of errors from which users successfully recover without external help.
422
+ ```
423
+ Recovery Rate = (Self-recovered errors / Total errors) x 100
424
+
425
+ Target: > 85% self-recovery rate
426
+ Below 70%: Error messages and recovery paths need redesign
427
+ ```
428
+
429
+ **Mean Time to Recovery (MTTR):** Average time from error occurrence to successful task resumption.
430
+ ```
431
+ MTTR = Sum of all recovery times / Number of recovered errors
432
+
433
+ Benchmarks:
434
+ - < 10 seconds: Good — user barely notices the error
435
+ - 10-30 seconds: Acceptable — noticeable but not frustrating
436
+ - 30-120 seconds: Poor — significant workflow disruption
437
+ - > 120 seconds: Critical — users are likely to abandon
438
+ ```
439
+
440
+ **Error-to-Abandonment Rate:** Percentage of error encounters that result in task abandonment.
441
+ ```
442
+ Abandonment = (Tasks abandoned after error / Total tasks with errors) x 100
443
+
444
+ Benchmarks:
445
+ - < 5%: Errors are well-handled, recovery paths work
446
+ - 5-15%: Some error paths need improvement
447
+ - 15-30%: Significant usability problem
448
+ - > 30%: Critical — errors are driving users away
449
+ ```
450
+
451
+ ### 3.3 User Frustration Signals
452
+
453
+ | Signal | Detection | Threshold |
454
+ |--------|-----------|-----------|
455
+ | Rage clicks | 3+ clicks on same element in 2 sec | Any occurrence |
456
+ | Dead clicks | Clicks on non-interactive elements | >5% of total clicks |
457
+ | Form abandonment | Started but not submitted | >40% |
458
+ | Error page bounces | Leaves immediately after error | >60% |
459
+ | Backtracking | Returns to same step repeatedly | >2 returns |
460
+ | Session rage quit | Session ends within 30 sec of error | Correlate with error events |
461
+
462
+ **Attitudinal indicators:** SUS <68, NPS drop after error-heavy flows, CES >5/7, qualitative feedback with "frustrating," "broken," "gave up."
463
+
464
+ ### 3.4 Error Message Effectiveness Testing
465
+
466
+ **A/B testing error messages:**
467
+ ```
468
+ Methodology:
469
+ 1. Identify the 10 most frequently triggered error messages
470
+ 2. For each, create 2-3 variant messages:
471
+ - Variant A: Current message
472
+ - Variant B: Rewritten with specific problem + suggested fix
473
+ - Variant C: Rewritten with specific problem + auto-fix option
474
+ 3. Measure per variant:
475
+ - Recovery rate (% who fix the error and continue)
476
+ - Recovery time (seconds from error to correction)
477
+ - Abandonment rate (% who leave after the error)
478
+ - Repeat error rate (% who trigger the same error again)
479
+ 4. Run for 2-4 weeks until statistical significance
480
+ 5. Deploy the best-performing variant
481
+ ```
482
+
483
+ **Usability testing error scenarios:**
484
+ ```
485
+ Protocol:
486
+ 1. Give participants tasks that naturally trigger errors
487
+ 2. Observe and record:
488
+ - Does the user notice the error message?
489
+ - Does the user understand what went wrong?
490
+ - Does the user know how to fix it?
491
+ - How long does recovery take?
492
+ - What is the user's emotional state? (think-aloud)
493
+ 3. Post-task: "On a scale of 1-7, how easy was it to
494
+ recover from the error?"
495
+ 4. Iterate on messages scoring below 5
496
+ ```
497
+
498
+ **Field-level error analytics:**
499
+ ```
500
+ Track per field:
501
+ - Error trigger rate (% of users who trigger validation)
502
+ - Most common error type per field
503
+ - Field-level abandonment (users who leave at this field)
504
+ - Correction success rate (% who fix error and continue)
505
+ - Average attempts to resolve (1 = first try, higher = struggling)
506
+
507
+ Fields with > 20% error rate need redesign, not just
508
+ better error messages.
509
+ ```
510
+
511
+ ---
512
+
513
+ ## 4. Dark Patterns Warning — Weaponized Error States
514
+
515
+ Error states can be deliberately designed to manipulate users against their interests. These deceptive patterns weaponize error psychology to prevent users from taking actions the business wants to block (like canceling subscriptions).
516
+
517
+ ### 4.1 Fake Error Messages to Prevent Cancellation
518
+
519
+ **Pattern:** When a user attempts to cancel a subscription or delete an account, the system displays a fake or exaggerated error message to block the action.
520
+
521
+ ```
522
+ DARK PATTERN:
523
+ User clicks "Cancel Subscription"
524
+ -> "An error occurred. Please try again later."
525
+ -> User tries again -> same "error"
526
+ -> User gives up, remains subscribed
527
+ -> No actual error occurred — the system faked it
528
+
529
+ ETHICAL ALTERNATIVE:
530
+ User clicks "Cancel Subscription"
531
+ -> "Your subscription will end on March 31, 2026.
532
+ You'll keep access until then."
533
+ -> [Keep Subscription] [Confirm Cancellation]
534
+ -> Clean, honest, respectful process
535
+ ```
536
+
537
+ ### 4.2 Hidden Unsubscribe Errors
538
+
539
+ **Pattern:** Unsubscribe links in emails lead to pages that display errors, require login, or claim the action "couldn't be completed."
540
+
541
+ ```
542
+ DARK PATTERN:
543
+ User clicks "Unsubscribe" in email footer
544
+ -> "We're sorry, something went wrong. Please try again
545
+ or contact support."
546
+ -> No actual error — the unsubscribe was simply blocked
547
+
548
+ ETHICAL ALTERNATIVE:
549
+ User clicks "Unsubscribe"
550
+ -> "You've been unsubscribed from marketing emails.
551
+ You'll still receive transactional emails (receipts,
552
+ security alerts)."
553
+ -> [Resubscribe] if they change their mind
554
+ -> Immediate, one-click, no barriers
555
+ ```
556
+
557
+ ### 4.3 Confirmshaming via Error-Adjacent Language
558
+
559
+ **Pattern:** The option to decline is phrased to make the user feel guilty, using the visual language of error states (red text, warning icons) on legitimate choices.
560
+
561
+ ```
562
+ DARK PATTERN:
563
+ "Upgrade to Premium for $9.99/month?"
564
+ [Yes, upgrade me!]
565
+ [No, I don't want to save money] <- styled like an error/warning
566
+
567
+ ETHICAL ALTERNATIVE:
568
+ "Upgrade to Premium for $9.99/month?"
569
+ [Upgrade] [No thanks]
570
+ -> Neutral language, equal visual weight
571
+ ```
572
+
573
+ ### 4.4 Obstruction via False Complexity (Roach Motel)
574
+
575
+ **Pattern:** Making cancellation deliberately complex with multiple steps, each appearing to fail or requiring information the user must search for.
576
+
577
+ ```
578
+ ROACH MOTEL:
579
+ Sign up: 1 click, 2 fields, 30 seconds
580
+ Cancel: 5 pages, a phone call, a "retention specialist,"
581
+ a fake error on the final confirmation page
582
+
583
+ Amazon Prime cancellation (pre-lawsuit):
584
+ -> 6 clicks through multiple screens with manipulative copy
585
+ -> Each screen designed to look like an error or dead end
586
+ -> FTC lawsuit resulted in $25 million fine
587
+ ```
588
+
589
+ ### 4.5 Legal and Regulatory Context
590
+
591
+ Manipulative error patterns are increasingly illegal:
592
+
593
+ - **GDPR (EU):** Requires "freely given" consent; dark patterns invalidate consent
594
+ - **Digital Services Act (EU):** Explicitly bans manipulative interface designs
595
+ - **FTC (US):** Has prosecuted Amazon, ABCmouse, Epic Games for deceptive flows
596
+ - **CCPA (California):** Prohibits dark-pattern approaches to opt-out requests
597
+ - **Consumer protection laws worldwide** are increasingly classifying fake errors as fraud
598
+
599
+ ---
600
+
601
+ ## 5. Platform-Specific Error Considerations
602
+
603
+ ### 5.1 Mobile-Specific Error Patterns
604
+
605
+ **Fat Finger Errors:**
606
+ Touch targets on mobile are inherently imprecise. The average adult fingertip covers approximately 10mm (~40px), but many mobile interfaces use targets smaller than this.
607
+
608
+ ```
609
+ MITIGATION STRATEGIES:
610
+ - Minimum touch target: 48x48dp (Android Material), 44x44pt (Apple HIG)
611
+ - Minimum spacing between destructive and safe actions: 16dp
612
+ - Increase tap target size for destructive actions beyond minimums
613
+ - Use swipe-to-delete with undo instead of tap-to-delete
614
+ - Add haptic feedback on destructive action activation
615
+ ```
616
+
617
+ **Network Loss and Intermittent Connectivity:**
618
+ Mobile users frequently move between network states. Forms and actions must handle transitions gracefully.
619
+
620
+ ```
621
+ OFFLINE STRATEGY:
622
+ 1. Queue actions when offline (optimistic UI)
623
+ 2. Show clear offline indicator (not an error — a state)
624
+ 3. Sync automatically when connection returns
625
+ 4. Resolve conflicts with clear user prompts:
626
+ "You edited this offline, but someone else also made changes.
627
+ [Keep yours] [Keep theirs] [Merge]"
628
+
629
+ TIMEOUT HANDLING:
630
+ - Don't show "Error" for slow connections
631
+ - Show: "This is taking longer than usual.
632
+ [Keep waiting] [Try again] [Save and try later]"
633
+ - Never silently fail — always inform the user of the outcome
634
+ ```
635
+
636
+ **Small Screen Form Errors:**
637
+ Error messages compete for precious screen real estate on mobile.
638
+
639
+ ```
640
+ MOBILE FORM ERROR PATTERNS:
641
+ - Inline errors below the field (not a banner at the top
642
+ that requires scrolling up)
643
+ - Auto-scroll to the first error field after submission
644
+ - Red border + icon + text (triple redundancy)
645
+ - Collapse resolved errors to recover screen space
646
+ - Never use modals for form errors on mobile — they obscure
647
+ the form and prevent correction
648
+ ```
649
+
650
+ **Gesture Errors:**
651
+ Mobile introduces gesture-based errors that desktop does not have: accidental swipe-to-delete (always provide undo toast), accidental pull-to-refresh mid-form (preserve form state), accidental back-swipe on iOS (warn if unsaved changes), accidental long-press (never trigger destructive actions on long-press alone).
652
+
653
+ ### 5.2 Desktop-Specific Error Patterns
654
+
655
+ **Complex Form Errors:**
656
+ Desktop forms tend to be longer and more complex due to available screen space.
657
+
658
+ ```
659
+ DESKTOP FORM STRATEGIES:
660
+ - Error summary at top with anchor links to each error field:
661
+
662
+ "Please fix 3 errors:
663
+ 1. Email address -> missing @ symbol
664
+ 2. Phone number -> too few digits
665
+ 3. ZIP code -> doesn't match selected state"
666
+
667
+ Each item links to its field for quick navigation
668
+ - Multi-column forms need clear error-to-field association
669
+ (arrow indicators, not just color)
670
+ - Tab-key navigation must reach error messages
671
+ - Error messages must be announced by screen readers
672
+ ```
673
+
674
+ **Keyboard Shortcut Errors:**
675
+ Desktop users rely on shortcuts, creating unique slip opportunities.
676
+ - Ctrl+Z (undo) must work consistently across all interactions
677
+ - Ctrl+W (close tab) while editing must trigger beforeunload warning
678
+ - Accidental Ctrl+A then typing replaces all text — undo must restore fully
679
+ - Ctrl+S (save) must never trigger unintended side effects
680
+
681
+ ### 5.3 Cross-Platform Undo Patterns
682
+
683
+ | Platform | Undo Mechanism | Discoverability |
684
+ |----------|---------------|-----------------|
685
+ | Desktop web | Ctrl/Cmd+Z | High |
686
+ | iOS | Shake to undo | <10% of users discover it |
687
+ | Android | No system gesture | App must provide explicit undo |
688
+
689
+ **Cross-platform rule:** Always provide an explicit, visible undo mechanism (toast/snackbar with [Undo] action). Never rely solely on platform gestures. Display undo for 8-10 seconds (5 is too short for delayed realization).
690
+
691
+ ### 5.4 Accessibility and Error States
692
+
693
+ - Never use color alone for errors (WCAG 1.4.1) — use color + icon + text
694
+ - Error text must meet 4.5:1 contrast (WCAG 1.4.3)
695
+ - Use `role="alert"` or `aria-live="assertive"` for screen reader announcement
696
+ - Associate errors with fields via `aria-describedby`
697
+ - Set `aria-invalid="true"` on error fields
698
+ - Move focus to first error field on submission
699
+ - Use plain language, provide input examples, avoid time-limited error displays
700
+
701
+ ---
702
+
703
+ ## 6. Quick Reference Checklist
704
+
705
+ ### Prevention
706
+ ```
707
+ [ ] Constrained inputs (pickers/dropdowns) where valid set is known
708
+ [ ] Smart defaults for common choices
709
+ [ ] Disabled states for impossible actions
710
+ [ ] Progressive disclosure — only relevant fields visible
711
+ [ ] Forgiving input parsing — accept varied formats
712
+ [ ] Destructive actions spatially separated from routine ones
713
+ [ ] Contextual help (tooltips/examples) on error-prone fields
714
+ [ ] Progress indicators for operations >1 second
715
+ [ ] Double-submit prevention (disable button after click)
716
+ [ ] Autocomplete for known-good values
717
+ ```
718
+
719
+ ### Recovery
720
+ ```
721
+ [ ] Undo via toast for reversible actions
722
+ [ ] Form fields preserved on validation error
723
+ [ ] Auto-save for flows >30 seconds
724
+ [ ] Error messages explain problem + suggest fix
725
+ [ ] Inline validation on blur, not while typing
726
+ [ ] Error indicators removed on correction
727
+ [ ] Every error state offers at least one forward action
728
+ [ ] Partial failure shown (not full-page blank)
729
+ [ ] Navigation guard for unsaved changes
730
+ [ ] Drafts, deleted items, and versions recoverable
731
+ ```
732
+
733
+ ### Error Message Quality
734
+ ```
735
+ [ ] States what went wrong (specific)
736
+ [ ] Suggests how to fix (actionable)
737
+ [ ] Plain language (no jargon or codes as headline)
738
+ [ ] Does not blame user
739
+ [ ] Concise (<14 words primary)
740
+ [ ] Inline next to field
741
+ [ ] Triple-redundant (color + icon + text)
742
+ [ ] Accessible (screen reader, keyboard)
743
+ [ ] Tested with real users
744
+ ```
745
+
746
+ ### Dark Pattern Audit
747
+ ```
748
+ [ ] Cancel/unsubscribe same effort as signup
749
+ [ ] All error messages genuine (no fake errors)
750
+ [ ] Decline options phrased neutrally
751
+ [ ] Unsubscribe link functional and immediate
752
+ [ ] Compliant with GDPR/DSA/FTC rules
753
+ ```
754
+
755
+ ### Measurement
756
+ ```
757
+ [ ] Task error rate tracked per flow
758
+ [ ] Recovery rate >85%
759
+ [ ] MTTR <30 seconds
760
+ [ ] Abandonment after error <15%
761
+ [ ] Rage click detection enabled
762
+ [ ] Field error rates tracked (redesign at >20%)
763
+ [ ] Error messages A/B tested quarterly
764
+ ```
765
+
766
+ ---
767
+
768
+ ## Key References
769
+
770
+ - **Norman, D.** (2013). *The Design of Everyday Things: Revised and Expanded Edition*. Basic Books.
771
+ - **Reason, J.** (1990). *Human Error*. Cambridge University Press.
772
+ - **Seligman, M.** (1975). *Helplessness: On Depression, Development, and Death*. W.H. Freeman.
773
+ - **Shingo, S.** (1986). *Zero Quality Control: Source Inspection and the Poka-Yoke System*. Productivity Press.
774
+ - **Dollard, J., et al.** (1939). *Frustration and Aggression*. Yale University Press.
775
+ - **Nielsen Norman Group.** [10 Usability Heuristics](https://www.nngroup.com/articles/ten-usability-heuristics/), [Error Prevention](https://www.nngroup.com/articles/slips/), [Error-Message Guidelines](https://www.nngroup.com/articles/error-message-guidelines/), [Confirmation Dialogs](https://www.nngroup.com/articles/confirmation-dialog/), [Progressive Disclosure](https://www.nngroup.com/articles/progressive-disclosure/)
776
+ - **Baymard Institute.** [Inline Form Validation](https://baymard.com/blog/inline-form-validation), [Adaptive Validation Errors](https://baymard.com/blog/adaptive-validation-error-messages), [Retain Data on Error](https://baymard.com/blog/preserve-card-details-on-error)
777
+ - **Wroblewski, L.** Inline Validation in Web Forms (22% fewer errors, 42% faster, 31% higher satisfaction).
778
+ - **MeasuringU.** [Measuring Errors in UX](https://measuringu.com/errors-ux/)