@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,518 @@
1
+ # Accessibility Copy Patterns
2
+
3
+ > **Module Type:** Pattern
4
+ > **Domain:** Content -- Accessible Text and Screen Reader Communication
5
+ > **Authoritative Sources:** WCAG 2.2, WAI-ARIA Authoring Practices, Apple Accessibility Guidelines, Material Design Accessibility, NNG, WebAIM, Plain Language Action and Information Network (PLAIN)
6
+
7
+ ---
8
+
9
+ ## Quick Reference Checklist
10
+
11
+ 1. Every informative image has alt text describing its purpose, not its appearance
12
+ 2. Decorative images use `alt=""` (empty alt), never omit the attribute
13
+ 3. ARIA labels supplement visual meaning -- never replace visible text
14
+ 4. `aria-live="polite"` for non-urgent updates; `aria-live="assertive"` for critical alerts only
15
+ 5. Live region containers exist in the DOM before content is injected
16
+ 6. Focus management: move focus to the relevant element after state changes
17
+ 7. Body text targets Flesch-Kincaid grade level 8 or lower
18
+ 8. Sentences under 25 words; paragraphs under 5 sentences
19
+ 9. Avoid idioms, metaphors, and culturally specific references in UI copy
20
+ 10. Button and link text is unique and descriptive out of context ("View report" not "Click here")
21
+ 11. Error messages are associated with their fields via `aria-describedby`
22
+ 12. Form labels are visible and persistent -- never placeholder-only
23
+ 13. Instructions don't rely solely on color, shape, or position ("the red button," "on the right")
24
+ 14. Abbreviations are spelled out on first use; avoid acronyms in UI copy
25
+ 15. Reading order matches visual order (DOM order = visual order)
26
+
27
+ ---
28
+
29
+ ## 1. Alt Text Guidelines
30
+
31
+ Alt text provides a text equivalent for non-text content. It is the single most impactful accessibility improvement for image-heavy interfaces (WebAIM Survey, 2024: missing alt text is the #1 accessibility issue users report).
32
+
33
+ ### 1.1 Informative Images
34
+
35
+ Images that convey content or meaning. Alt text should describe the purpose and information the image communicates, not its visual appearance.
36
+
37
+ **Formula:** What information does this image add that isn't in the surrounding text?
38
+
39
+ | Image Type | Bad Alt | Good Alt | Why |
40
+ |-----------|---------|----------|-----|
41
+ | Product photo | "image1.jpg" | "Black leather messenger bag with brass buckle, front view" | Describes the product a shopper needs to evaluate |
42
+ | Chart | "chart" | "Bar chart showing revenue growth from $2M in Q1 to $4.8M in Q4 2024" | Conveys the data, not just the format |
43
+ | User avatar | "avatar" | "Sarah Chen" (or `alt=""` if name is shown adjacent) | Identifies the person |
44
+ | Screenshot | "screenshot" | "Settings page showing the notification preferences panel with email toggled on" | Describes what the user needs to see |
45
+ | Icon with text | "icon" | `alt=""` (decorative -- the adjacent text conveys meaning) | Icon reinforces text; alt would be redundant |
46
+ | Logo | "logo" | "[Company] logo" or "[Company] -- go to homepage" (if linked) | Identifies the brand; linked logos need destination context |
47
+ | Infographic | "infographic" | Brief summary + detailed description via `aria-describedby` or long description link | Complex images need both summary and detail |
48
+
49
+ ### 1.2 Decorative Images
50
+
51
+ Images that serve purely aesthetic purposes -- backgrounds, spacers, visual flourishes.
52
+
53
+ **Rule:** Set `alt=""` (empty string). This tells screen readers to skip the image entirely. Never omit the `alt` attribute -- screen readers will read the filename instead.
54
+
55
+ ```html
56
+ <!-- Correct: decorative image -->
57
+ <img src="divider-wave.svg" alt="" />
58
+
59
+ <!-- Wrong: screen reader says "divider dash wave dot svg" -->
60
+ <img src="divider-wave.svg" />
61
+
62
+ <!-- Wrong: redundant information -->
63
+ <img src="divider-wave.svg" alt="decorative wave divider" />
64
+ ```
65
+
66
+ **Common decorative images:**
67
+ - Background textures and patterns
68
+ - Visual separators and dividers
69
+ - Purely aesthetic illustrations with no informational content
70
+ - Icons that duplicate adjacent text labels
71
+
72
+ ### 1.3 Complex Images
73
+
74
+ Charts, diagrams, maps, and infographics require structured descriptions.
75
+
76
+ **Pattern:** Short alt text summarizing the key takeaway + detailed description elsewhere.
77
+
78
+ ```html
79
+ <figure>
80
+ <img src="revenue-chart.png"
81
+ alt="Revenue doubled in 2024, from $2M in Q1 to $4.8M in Q4"
82
+ aria-describedby="chart-detail" />
83
+ <figcaption id="chart-detail">
84
+ Quarterly revenue: Q1 $2.0M, Q2 $2.4M, Q3 $3.1M, Q4 $4.8M.
85
+ Growth accelerated in Q3 after the enterprise plan launch.
86
+ </figcaption>
87
+ </figure>
88
+ ```
89
+
90
+ ### 1.4 Image Alt Text Decision Tree
91
+
92
+ ```
93
+ Does the image convey information not available in surrounding text?
94
+ +-- YES
95
+ | +-- Is it a simple image? --> Write alt text (under 125 chars)
96
+ | +-- Is it complex (chart, diagram)? --> Short alt + long description
97
+ | +-- Is it a functional image (button, link)? --> Alt describes the action
98
+ +-- NO
99
+ +-- Is it purely decorative? --> alt=""
100
+ +-- Does it duplicate adjacent text? --> alt=""
101
+ +-- Is it a spacer or layout element? --> alt="" (or use CSS instead)
102
+ ```
103
+
104
+ ---
105
+
106
+ ## 2. ARIA Label Conventions
107
+
108
+ ARIA labels provide accessible names and descriptions for elements that lack visible text or whose visible text is insufficient for screen reader context.
109
+
110
+ ### 2.1 When to Use ARIA Labels
111
+
112
+ | Scenario | ARIA Attribute | Example |
113
+ |----------|---------------|---------|
114
+ | Icon-only button | `aria-label` | `<button aria-label="Close dialog"><svg>...</svg></button>` |
115
+ | Redundant visible links | `aria-label` | `<a aria-label="View Q3 report details" href="...">View details</a>` |
116
+ | Navigation landmarks | `aria-label` | `<nav aria-label="Primary">` / `<nav aria-label="Breadcrumb">` |
117
+ | Search input | `aria-label` | `<input type="search" aria-label="Search projects" />` |
118
+ | Group of related controls | `aria-labelledby` | Group label references a visible heading |
119
+ | Field with extra instructions | `aria-describedby` | Links field to hint text or error message |
120
+
121
+ ### 2.2 Rules for ARIA Labels
122
+
123
+ 1. **Visible text first.** If a visible `<label>` or button text works, don't add ARIA. ARIA is a supplement, not a replacement for proper HTML semantics.
124
+ 2. **Be concise.** ARIA labels are read aloud -- keep them short. "Close" not "Click this button to close the dialog window."
125
+ 3. **Be specific.** "Delete project" not "Delete" when multiple delete buttons exist on the page.
126
+ 4. **Match visual labels.** If the button says "Save," the `aria-label` (if needed) should contain "Save" -- users who dictate commands say what they see.
127
+ 5. **Don't duplicate.** If `<button>Save</button>` is clear, adding `aria-label="Save"` is redundant and creates maintenance risk.
128
+ 6. **Landmark labels must be unique.** Two `<nav>` elements need different `aria-label` values so screen readers can distinguish them.
129
+
130
+ ### 2.3 Common ARIA Label Patterns
131
+
132
+ ```html
133
+ <!-- Icon-only buttons -->
134
+ <button aria-label="Search">
135
+ <svg aria-hidden="true">...</svg>
136
+ </button>
137
+
138
+ <!-- Disambiguating repeated actions -->
139
+ <button aria-label="Delete 'Homepage Redesign' project">Delete</button>
140
+ <button aria-label="Delete 'API Migration' project">Delete</button>
141
+
142
+ <!-- Navigation landmarks -->
143
+ <nav aria-label="Primary navigation">...</nav>
144
+ <nav aria-label="Breadcrumb">
145
+ <ol>...</ol>
146
+ </nav>
147
+
148
+ <!-- Complementary regions -->
149
+ <aside aria-label="Related articles">...</aside>
150
+
151
+ <!-- Table with complex header -->
152
+ <table aria-label="Team members and their roles">...</table>
153
+ ```
154
+
155
+ ---
156
+
157
+ ## 3. Screen Reader Announcements
158
+
159
+ Dynamic content changes must be announced to screen reader users who cannot see visual updates.
160
+
161
+ ### 3.1 Live Regions
162
+
163
+ Live regions are containers in the DOM that screen readers monitor for changes. When content changes inside a live region, the screen reader announces the update.
164
+
165
+ **Critical rule:** The live region container must exist in the DOM before content is injected. Adding `aria-live` simultaneously with content will NOT trigger an announcement.
166
+
167
+ ```html
168
+ <!-- Correct: container exists on page load, empty -->
169
+ <div aria-live="polite" id="status"></div>
170
+ <!-- Later, JS injects: "3 results found" -- screen reader announces it -->
171
+
172
+ <!-- Wrong: container and content added simultaneously -->
173
+ <!-- Screen reader may not announce this -->
174
+ ```
175
+
176
+ ### 3.2 Politeness Settings
177
+
178
+ | Setting | Behavior | Use For |
179
+ |---------|----------|---------|
180
+ | `aria-live="polite"` | Announces when user is idle (after current speech) | Search results count, save confirmation, loading complete |
181
+ | `aria-live="assertive"` | Announces immediately, interrupting current speech | Form validation errors, session timeout warnings, critical alerts |
182
+ | `aria-live="off"` | Region is not monitored (default) | Content that changes frequently but doesn't need announcement |
183
+
184
+ **Rule:** Default to `polite`. Use `assertive` only for truly urgent information. Overusing `assertive` creates a noisy, frustrating experience.
185
+
186
+ ### 3.3 Announcement Patterns
187
+
188
+ | Event | Announcement Text | Live Setting |
189
+ |-------|-------------------|-------------|
190
+ | Search results loaded | "[N] results found" or "No results found for '[query]'" | polite |
191
+ | Form saved | "Changes saved" | polite |
192
+ | Item deleted | "[Item name] deleted" | polite |
193
+ | Validation error | "[Field label]: [error message]" | assertive |
194
+ | Session expiring | "Your session expires in 2 minutes. Save your work." | assertive |
195
+ | New notification | "New notification: [summary]" | polite |
196
+ | Loading started | "Loading [content]..." | polite |
197
+ | Loading complete | "[Content] loaded" | polite |
198
+ | Filter applied | "Showing [N] results filtered by [criteria]" | polite |
199
+ | Sort changed | "Sorted by [field], [direction]" | polite |
200
+ | Page navigation | (Handled by browser -- ensure `<title>` updates) | N/A |
201
+ | Toast notification | (Use role="status" on the toast container) | polite |
202
+ | Error alert | (Use role="alert" -- implies assertive + atomic) | assertive |
203
+
204
+ ### 3.4 Visually Hidden Announcements
205
+
206
+ For announcements that should be heard but not seen, use a visually hidden element.
207
+
208
+ ```css
209
+ .sr-only {
210
+ position: absolute;
211
+ width: 1px;
212
+ height: 1px;
213
+ padding: 0;
214
+ margin: -1px;
215
+ overflow: hidden;
216
+ clip: rect(0, 0, 0, 0);
217
+ white-space: nowrap;
218
+ border: 0;
219
+ }
220
+ ```
221
+
222
+ ```html
223
+ <div aria-live="polite" class="sr-only" id="search-status"></div>
224
+ ```
225
+
226
+ ---
227
+
228
+ ## 4. Focus Management
229
+
230
+ When UI state changes, keyboard focus must move to the appropriate element so users don't get lost.
231
+
232
+ ### 4.1 Focus Rules by State Change
233
+
234
+ | State Change | Focus Target | Why |
235
+ |-------------|-------------|-----|
236
+ | Modal opens | First focusable element inside modal | User needs to interact with modal content |
237
+ | Modal closes | Element that triggered the modal | User returns to their previous context |
238
+ | Inline error on submit | First field with an error | User needs to fix the error |
239
+ | Toast appears | Do NOT move focus | Toast is informational; moving focus is disorienting |
240
+ | Content loads (user-initiated) | First element of loaded content | User wanted this content |
241
+ | Content loads (auto) | Do NOT move focus | Unexpected focus change is disorienting |
242
+ | Item deleted from list | Next item in the list (or previous if last) | User's position should remain stable |
243
+ | Tab panel switches | First element in the new panel | User expects to interact with new panel content |
244
+ | Accordion expands | First element in expanded content | Content is now available for interaction |
245
+ | Drawer/sidebar opens | First focusable element in drawer | User needs to interact with drawer content |
246
+ | Drawer/sidebar closes | Element that triggered it | User returns to previous context |
247
+ | Page/route changes | Main content heading (`<h1>`) or skip-link target | User needs orientation on the new page |
248
+
249
+ ### 4.2 Focus Trapping
250
+
251
+ Modals, dialogs, and overlays must trap focus inside them -- Tab and Shift+Tab should cycle within the modal, never escape to the page behind.
252
+
253
+ ```
254
+ Tab from last focusable element --> loops to first focusable element
255
+ Shift+Tab from first focusable element --> loops to last focusable element
256
+ Escape key --> closes modal, returns focus to trigger
257
+ ```
258
+
259
+ ### 4.3 Skip Links
260
+
261
+ Provide a "Skip to main content" link as the first focusable element on every page. It should be visually hidden until focused.
262
+
263
+ ```html
264
+ <a href="#main-content" class="skip-link">Skip to main content</a>
265
+ <!-- ...navigation... -->
266
+ <main id="main-content" tabindex="-1">...</main>
267
+ ```
268
+
269
+ ---
270
+
271
+ ## 5. Cognitive Accessibility
272
+
273
+ Cognitive accessibility ensures content is understandable by users with learning disabilities, attention disorders, low literacy, or who are reading in a non-native language. It benefits all users under stress, multitasking, or time pressure.
274
+
275
+ ### 5.1 Plain Language
276
+
277
+ **Flesch-Kincaid targets:**
278
+ - UI copy (buttons, labels, headings): Grade 6 or lower
279
+ - Help text and instructions: Grade 8 or lower
280
+ - Technical documentation: Grade 10 or lower (with glossary for terms)
281
+ - Legal/compliance copy: Grade 10 or lower (simplified version required alongside legal text)
282
+
283
+ **Plain language rules:**
284
+
285
+ | Rule | Bad | Good |
286
+ |------|-----|------|
287
+ | Use common words | "Utilize the configuration interface" | "Use the settings page" |
288
+ | Use short sentences | "In order to save your changes, you will need to click the save button that is located at the bottom of the form, and then wait for the confirmation." | "Click Save at the bottom of the form. You'll see a confirmation when it's done." |
289
+ | Use active voice | "Your password has been updated by the system" | "We updated your password" |
290
+ | One idea per sentence | "Enter your email and we'll send you a link to reset your password and you can set a new one." | "Enter your email. We'll send you a link to create a new password." |
291
+ | Front-load important info | "Due to maintenance activities scheduled for March 20, some features may be temporarily unavailable." | "Some features may be unavailable on March 20 during maintenance." |
292
+ | Avoid double negatives | "Don't forget to not leave fields blank" | "Fill in all fields" |
293
+ | Be specific | "An error occurred" | "We couldn't save your changes" |
294
+ | Avoid jargon | "Authenticate via SSO" | "Sign in with your company account" |
295
+
296
+ ### 5.2 Chunking
297
+
298
+ Break content into scannable pieces. Users read UI text in an F-pattern -- they scan headings, first words of lines, and highlighted content.
299
+
300
+ | Technique | Application |
301
+ |-----------|------------|
302
+ | Short paragraphs | Maximum 3-4 sentences per paragraph in UI copy |
303
+ | Bullet lists | Use for 3+ parallel items instead of comma-separated lists |
304
+ | Headings | Every section of content gets a descriptive heading |
305
+ | White space | Generous spacing between sections (1.5-2em) |
306
+ | Progressive disclosure | Show summary first; detail on demand ("Show more") |
307
+ | Numbered steps | Use for sequential instructions (1, 2, 3) |
308
+
309
+ ### 5.3 Consistent Terminology
310
+
311
+ Use one term for one concept throughout the entire interface.
312
+
313
+ | Inconsistent | Consistent |
314
+ |-------------|-----------|
315
+ | "Sign in" / "Log in" / "Login" on different pages | "Sign in" everywhere |
316
+ | "Remove" / "Delete" / "Erase" for the same action | "Delete" everywhere |
317
+ | "Workspace" / "Organization" / "Team" for the same concept | "Workspace" everywhere |
318
+ | "Preferences" / "Settings" / "Options" | "Settings" everywhere |
319
+
320
+ ### 5.4 Reading Level Measurement
321
+
322
+ **Flesch-Kincaid Grade Level formula:**
323
+ ```
324
+ 0.39 * (total words / total sentences) + 11.8 * (total syllables / total words) - 15.59
325
+ ```
326
+
327
+ **Practical approach:** Use automated tools (Hemingway Editor, readability-score npm package, Microsoft Word readability statistics) to check critical UI text. Test with users who have low literacy or cognitive disabilities.
328
+
329
+ ### 5.5 Dyslexia-Friendly Patterns
330
+
331
+ An estimated 15-20% of the population has some degree of dyslexia. These patterns improve readability for dyslexic users and benefit all users.
332
+
333
+ | Pattern | Guideline |
334
+ |---------|-----------|
335
+ | Font choice | Sans-serif fonts (Inter, Open Sans, Atkinson Hyperlegible). Avoid fonts where b/d, p/q, or I/l/1 are mirrors. |
336
+ | Font size | Minimum 16px body text; ideally 18-20px |
337
+ | Letter spacing | Slightly wider than default (0.05-0.12em); `letter-spacing: 0.05em` |
338
+ | Word spacing | Slightly wider (0.16em); `word-spacing: 0.16em` |
339
+ | Line height | 1.5 minimum, 1.8 ideal |
340
+ | Line length | 50-70 characters per line (45-75 acceptable range) |
341
+ | Alignment | Left-aligned, never justified (uneven word spacing impedes reading) |
342
+ | Background | Off-white or tinted backgrounds reduce glare (#FAFAFA, cream, light blue) |
343
+ | Text styling | Avoid all-caps for body text; use for short labels only (<3 words) |
344
+ | Paragraphs | Short, with clear visual spacing between them |
345
+
346
+ ---
347
+
348
+ ## 6. Instructions That Don't Rely on Sensory Characteristics
349
+
350
+ WCAG 1.3.3 requires that instructions do not depend solely on shape, color, size, position, or sound.
351
+
352
+ ### 6.1 Anti-Patterns and Fixes
353
+
354
+ | Bad (relies on sensory) | Good (includes text reference) |
355
+ |------------------------|-------------------------------|
356
+ | "Click the green button" | "Click Save" (the button also happens to be green) |
357
+ | "The option on the right" | "The Export option" |
358
+ | "See the red error above" | "See the error message next to the email field" |
359
+ | "Press the round icon" | "Press the Search button" |
360
+ | "The section highlighted in yellow" | "The Billing section" |
361
+ | "You'll hear a beep when done" | "You'll see and hear a confirmation when done" |
362
+
363
+ ---
364
+
365
+ ## 7. Form Accessibility Copy
366
+
367
+ Forms are where accessibility copy matters most. Every field needs a label. Every error needs explanation. Every constraint needs disclosure.
368
+
369
+ ### 7.1 Labels
370
+
371
+ | Rule | Example |
372
+ |------|---------|
373
+ | Visible label above or beside every field | `<label for="email">Email address</label>` |
374
+ | Never use placeholder as the only label | Placeholder disappears on input -- the label doesn't |
375
+ | Required fields marked consistently | "Email address (required)" or asterisk with legend |
376
+ | Group related fields | `<fieldset><legend>Shipping address</legend>...</fieldset>` |
377
+
378
+ ### 7.2 Help Text
379
+
380
+ ```html
381
+ <label for="password">Password</label>
382
+ <input id="password" type="password" aria-describedby="password-help" />
383
+ <span id="password-help">At least 8 characters with one number and one symbol.</span>
384
+ ```
385
+
386
+ Show constraints before the user encounters them, not after they fail validation.
387
+
388
+ ### 7.3 Error Association
389
+
390
+ ```html
391
+ <label for="email">Email address</label>
392
+ <input id="email" type="email" aria-invalid="true" aria-describedby="email-error" />
393
+ <span id="email-error" role="alert">Enter an email address like name@example.com</span>
394
+ ```
395
+
396
+ **Rules:**
397
+ - Link error to field via `aria-describedby`
398
+ - Set `aria-invalid="true"` on the field
399
+ - Use `role="alert"` on the error message for immediate announcement
400
+ - Remove error and `aria-invalid` as soon as input becomes valid
401
+
402
+ ---
403
+
404
+ ## 8. Anti-Patterns
405
+
406
+ ### 8.1 Missing Alt Text
407
+
408
+ The #1 reported accessibility issue (WebAIM Million, 2024). Screen readers say the filename, which is meaningless. **Fix:** Alt text on every informative image; `alt=""` on decorative images.
409
+
410
+ ### 8.2 "Click Here" Links
411
+
412
+ "Click here" and "Read more" are meaningless out of context. Screen reader users navigate by link list -- they hear all links on the page listed. **Fix:** "View the accessibility guidelines" or "Read the Q3 report."
413
+
414
+ ### 8.3 Overusing ARIA
415
+
416
+ Adding ARIA to elements that already have semantic meaning. `<button aria-label="Submit" role="button">Submit</button>` -- the ARIA is redundant and could conflict. **Fix:** Use proper HTML semantics first. Add ARIA only to fill gaps.
417
+
418
+ ### 8.4 Assertive Abuse
419
+
420
+ Using `aria-live="assertive"` for routine updates. Interrupts the user's reading flow constantly. **Fix:** Default to `polite`. Reserve `assertive` for errors and time-critical alerts.
421
+
422
+ ### 8.5 Placeholder-Only Labels
423
+
424
+ Using `placeholder` as the field label. It disappears on input, leaving the user unable to verify what the field is for. Placeholder text has insufficient contrast in most browsers. **Fix:** Always use a visible `<label>`.
425
+
426
+ ### 8.6 Ambiguous Button Text
427
+
428
+ Multiple buttons labeled "Delete" or "Edit" on the same page with no distinguishing context. Screen readers read "Delete. Delete. Delete." **Fix:** Use `aria-label` to add context: "Delete 'Project Atlas'."
429
+
430
+ ### 8.7 Focus Trap Without Escape
431
+
432
+ Trapping focus in a modal but not implementing Escape key to close. The user is stuck. **Fix:** Always bind Escape to close modals and return focus to the trigger.
433
+
434
+ ### 8.8 Color-Only Indicators
435
+
436
+ Using only red/green to indicate error/success states. Users with color blindness cannot distinguish them. **Fix:** Pair color with icons and text labels.
437
+
438
+ ### 8.9 Auto-Playing Media
439
+
440
+ Content that speaks or plays sound immediately, interfering with screen reader audio. **Fix:** Never auto-play with sound. Provide clear play controls.
441
+
442
+ ### 8.10 Moving or Blinking Content
443
+
444
+ Content that moves, blinks, or auto-scrolls without user control. Causes issues for users with vestibular disorders, attention disorders, and seizure conditions. **Fix:** Respect `prefers-reduced-motion`. Provide pause/stop controls. Never flash more than 3 times per second.
445
+
446
+ ---
447
+
448
+ ## 9. Testing Accessibility Copy
449
+
450
+ ### 9.1 Automated Checks
451
+
452
+ | Tool | What It Catches |
453
+ |------|----------------|
454
+ | axe-core | Missing alt text, missing labels, ARIA misuse, contrast |
455
+ | Lighthouse | Alt text, ARIA, heading hierarchy, link text |
456
+ | eslint-plugin-jsx-a11y | Missing alt, missing labels in JSX at build time |
457
+ | pa11y | Automated accessibility audit on rendered pages |
458
+ | Flesch-Kincaid tools | Reading level of UI copy |
459
+
460
+ ### 9.2 Manual Checks
461
+
462
+ | Check | How |
463
+ |-------|-----|
464
+ | Screen reader walkthrough | Use VoiceOver (macOS/iOS), NVDA (Windows), TalkBack (Android) to navigate every screen |
465
+ | Keyboard-only navigation | Unplug the mouse. Tab through every interactive element. Can you reach everything? |
466
+ | Link list test | Open the screen reader's link list. Are all links descriptive out of context? |
467
+ | Heading hierarchy | Open the screen reader's heading list. Does the hierarchy make sense? |
468
+ | Zoom to 200% | Does all content remain visible and usable at 200% browser zoom? |
469
+ | Color contrast | Check all text and interactive elements against WCAG AA (4.5:1 body, 3:1 large/UI) |
470
+
471
+ ---
472
+
473
+ ## 10. Decision Tree
474
+
475
+ ### 10.1 Choosing the Right ARIA Approach
476
+
477
+ ```
478
+ Does the element have visible text that describes its purpose?
479
+ +-- YES
480
+ | +-- Is the text unique on the page? --> No ARIA needed
481
+ | +-- Is the text repeated (multiple "Edit" buttons)? --> Add aria-label with context
482
+ +-- NO
483
+ +-- Is it an icon-only control? --> aria-label with the action name
484
+ +-- Is it a landmark? --> aria-label to distinguish from other landmarks
485
+ +-- Is it a live-updating region? --> aria-live with appropriate politeness
486
+ +-- Is it a complex widget? --> Follow WAI-ARIA Authoring Practices for that pattern
487
+ ```
488
+
489
+ ### 10.2 Choosing Alt Text Strategy
490
+
491
+ ```
492
+ What type of image is it?
493
+ +-- Purely decorative --> alt=""
494
+ +-- Icon next to text label --> alt="" (text provides the meaning)
495
+ +-- Informative photo --> Describe the content and purpose (under 125 chars)
496
+ +-- Complex chart/diagram --> Short alt summary + aria-describedby for details
497
+ +-- Linked image (logo, thumbnail) --> Alt describes the link destination
498
+ +-- Image of text --> Alt contains the text in the image
499
+ +-- User-uploaded content --> Prompt users to add alt text; use AI-generated as fallback
500
+ ```
501
+
502
+ ---
503
+
504
+ ## References
505
+
506
+ - [WCAG 2.2](https://www.w3.org/TR/WCAG22/)
507
+ - [WAI-ARIA Authoring Practices 1.2](https://www.w3.org/WAI/ARIA/apg/)
508
+ - [WebAIM Million - Annual Accessibility Analysis](https://webaim.org/projects/million/)
509
+ - [WebAIM - Alternative Text](https://webaim.org/techniques/alttext/)
510
+ - [Apple - Accessibility](https://developer.apple.com/accessibility/)
511
+ - [Material Design - Accessibility](https://m3.material.io/foundations/accessible-design/overview)
512
+ - [NNG - Accessibility Guidelines](https://www.nngroup.com/topic/accessibility/)
513
+ - [NNG - Plain Language](https://www.nngroup.com/articles/plain-language-experts/)
514
+ - [W3C - ARIA Live Regions](https://developer.mozilla.org/en-US/docs/Web/Accessibility/ARIA/Guides/Live_regions)
515
+ - [PLAIN - Federal Plain Language Guidelines](https://www.plainlanguage.gov/guidelines/)
516
+ - [Hemingway Editor](https://hemingwayapp.com/)
517
+ - [British Dyslexia Association - Dyslexia Friendly Style Guide](https://www.bdadyslexia.org.uk/advice/employers/creating-a-dyslexia-friendly-workplace/dyslexia-friendly-style-guide)
518
+ - [Atkinson Hyperlegible Font](https://brailleinstitute.org/freefont)
@@ -0,0 +1,24 @@
1
+ # Directory Purpose
2
+
3
+ The `patterns` directory catalogs reusable content patterns for writing UI copy, notifications, accessible text, and sample data across applications.
4
+
5
+ # Key Concepts
6
+
7
+ - Writing clear, actionable copy for every UI state
8
+ - Structuring notifications across channels with proper constraints
9
+ - Making content accessible to all users including those with disabilities
10
+ - Generating realistic, unbiased sample content for development and testing
11
+
12
+ # File Map
13
+
14
+ - `state-copy.md` — copy for every UI state: loading, empty, error, success, destructive, offline, timeout
15
+ - `notification-content.md` — push, email, in-app, and system message structure and constraints
16
+ - `accessibility-copy.md` — alt text, ARIA labels, screen reader announcements, cognitive accessibility
17
+ - `sample-content.md` — realistic test data generation, edge cases, bias avoidance, cultural sensitivity
18
+
19
+ # Reading Guide
20
+
21
+ If writing error messages or empty states -> read `state-copy.md`
22
+ If designing push notifications or email templates -> read `notification-content.md`
23
+ If improving screen reader experience or plain language -> read `accessibility-copy.md`
24
+ If generating test fixtures or placeholder content -> read `sample-content.md`