@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,455 @@
1
+ # Microcopy -- Content Foundation Module
2
+
3
+ > **Category:** Content Foundation
4
+ > **Applies to:** All platforms -- Web, iOS, Android, Desktop
5
+ > **Last updated:** 2026-03-14
6
+ > **Sources:** Nielsen Norman Group, Google Material Writing Guidelines, Apple HIG, Microsoft Writing Style Guide, GOV.UK Content Design Manual, Torrey Podmajersky (Strategic Writing for UX)
7
+
8
+ Microcopy is the small text that guides users through an interface: button labels,
9
+ error messages, tooltips, empty states, confirmation dialogs, and placeholder text.
10
+ It is the most read and least reviewed writing in any product. Bad microcopy creates
11
+ support tickets. Good microcopy prevents them.
12
+
13
+ ---
14
+
15
+ ## 1. Button Labels
16
+
17
+ ### 1.1 Verb-First Pattern
18
+
19
+ Every button label starts with a verb that describes exactly what happens when the
20
+ user clicks. The user should be able to predict the outcome from the label alone.
21
+
22
+ **Pattern:** `[Verb]` or `[Verb] + [Object]`
23
+
24
+ | Do | Don't | Why |
25
+ |------------------------|----------------------|----------------------------------------------|
26
+ | Save changes | OK | "OK" says nothing about the action |
27
+ | Delete account | Yes | "Yes" requires reading the question above |
28
+ | Send invitation | Submit | "Submit" is vague -- submit what? |
29
+ | Export as CSV | Go | "Go" is meaningless without context |
30
+ | Add to cart | Continue | "Continue" doesn't say where |
31
+ | Create project | Done | "Done" implies completion, not creation |
32
+ | Sign in | Log in | Either is fine -- pick one and be consistent |
33
+
34
+ **Rules:**
35
+
36
+ 1. **Use specific verbs over generic ones.** "Save," "Send," "Create," "Delete,"
37
+ "Export" are specific. "Submit," "Process," "Execute," "OK" are generic.
38
+ 2. **Include the object when the action is destructive or ambiguous.** "Delete" alone
39
+ is ambiguous. "Delete account" is unambiguous.
40
+ 3. **Match the verb to the user's mental model.** If the user thinks they are
41
+ "publishing," the button says "Publish" -- not "Save" or "Submit."
42
+ 4. **Limit to 1-3 words.** If you need more than 3 words, the action is probably too
43
+ complex for a single button.
44
+
45
+ ### 1.2 Primary vs Secondary Actions
46
+
47
+ | Position | Purpose | Label pattern | Example |
48
+ |------------|----------------------------|----------------------------|----------------------------|
49
+ | Primary | The action the user came for | Verb + Object | Save changes |
50
+ | Secondary | Alternative or escape | Verb (often "Cancel") | Cancel, Go back, Skip |
51
+ | Tertiary | Less common action | Text link or subtle button | Learn more, Reset defaults |
52
+
53
+ **Rules:**
54
+
55
+ 1. **The primary action label must never be "OK" or "Yes."** These words carry no
56
+ information without the surrounding context, which users don't always read.
57
+ 2. **Pair destructive primaries with safe secondaries.** "Delete account" paired with
58
+ "Keep account" -- not "Delete account" paired with "Cancel."
59
+ 3. **Avoid double-negative pairs.** "Don't save / Cancel" forces the user to parse
60
+ two negatives. Use "Discard / Keep editing" instead.
61
+
62
+ ### 1.3 Platform Conventions
63
+
64
+ | Platform | Typical casing | Primary position | Notes |
65
+ |----------|----------------------|------------------|-------------------------------|
66
+ | iOS | Title Case | Right side | Apple uses noun-style in some |
67
+ | Android | UPPERCASE or Sentence| Right side | M3 uses all-caps by default |
68
+ | Web | Sentence case | Right side | GOV.UK and most SaaS products|
69
+ | macOS | Title Case | Right side | "Save" not "SAVE" |
70
+ | Windows | Sentence case | Right side | Microsoft style guide (2023+) |
71
+
72
+ ---
73
+
74
+ ## 2. Error Messages
75
+
76
+ ### 2.1 The What / Why / How Framework
77
+
78
+ Every error message answers three questions:
79
+
80
+ 1. **What** happened? (State the problem.)
81
+ 2. **Why** did it happen? (Explain the cause -- if the user can understand it.)
82
+ 3. **How** do they fix it? (Give a concrete next step.)
83
+
84
+ **Examples:**
85
+
86
+ ```
87
+ BAD: "Error 422"
88
+ GOOD: "Email address is already in use. Try signing in instead, or use a different email."
89
+
90
+ BAD: "Invalid input"
91
+ GOOD: "Phone number must be 10 digits. You entered 8."
92
+
93
+ BAD: "Something went wrong"
94
+ GOOD: "We couldn't save your changes because the connection was lost. Check your internet and try again."
95
+
96
+ BAD: "Operation failed"
97
+ GOOD: "This file is too large to upload. The maximum size is 25 MB. Your file is 38 MB."
98
+ ```
99
+
100
+ ### 2.2 Error Message Rules
101
+
102
+ 1. **Never show raw error codes or stack traces to end users.** Log them. Show a
103
+ human sentence.
104
+ 2. **Never blame the user.** Say "Password must be at least 8 characters" -- not
105
+ "You entered an invalid password."
106
+ 3. **Use the field name, not "this field."** Say "Email address is required" -- not
107
+ "This field is required."
108
+ 4. **Be specific about constraints.** Say "Username must be 3-20 characters,
109
+ letters and numbers only" -- not "Invalid username."
110
+ 5. **Offer a recovery path.** If the user can fix it, say how. If they cannot,
111
+ say who to contact.
112
+ 6. **Place inline errors next to the field, not in a banner.** Banners at the top
113
+ of the form force the user to scroll up, find the error, scroll back down, and
114
+ fix it.
115
+ 7. **Persist the error until the user fixes it.** Do not auto-dismiss error messages
116
+ on a timer. The user may not have read it yet.
117
+
118
+ ### 2.3 Tone Calibration by Severity
119
+
120
+ | Severity | Tone | Example |
121
+ |-------------|---------------------|----------------------------------------------------------|
122
+ | Validation | Neutral, helpful | "Enter a valid email address, like name@example.com." |
123
+ | System error| Calm, empathetic | "Something went wrong on our end. Try again in a moment."|
124
+ | Data loss | Direct, urgent | "Your draft was not saved. Copy your text before leaving."|
125
+ | Security | Serious, no humor | "Your session has expired. Sign in again to continue." |
126
+
127
+ **Never use humor in error messages.** The user is frustrated. A joke makes it worse.
128
+ ("Oops! Looks like our hamsters stopped running!" is not funny when the user just
129
+ lost 30 minutes of work.)
130
+
131
+ ---
132
+
133
+ ## 3. Tooltips
134
+
135
+ ### 3.1 When to Use Tooltips
136
+
137
+ | Use a tooltip when... | Don't use a tooltip when... |
138
+ |------------------------------------------------|------------------------------------------------|
139
+ | An icon has no visible label | The information is essential to complete a task |
140
+ | A feature needs brief clarification | The content requires more than 1-2 sentences |
141
+ | The label is intentionally brief | The user needs to interact with the content |
142
+ | A truncated value needs its full form shown | Touch devices are the primary platform |
143
+
144
+ ### 3.2 Tooltip Writing Rules
145
+
146
+ 1. **Maximum 150 characters.** If you need more, use an inline hint or a help panel.
147
+ 2. **No period at the end of single-sentence tooltips.** Tooltips are labels, not
148
+ paragraphs.
149
+ 3. **Start with a verb or noun, not "This is..." or "Click here to..."**
150
+ - Do: "Duplicate this project and all its settings"
151
+ - Don't: "This button lets you duplicate the project"
152
+ 4. **Never put critical information only in a tooltip.** Tooltips are invisible on
153
+ touch devices and require precise hover targeting.
154
+ 5. **Avoid nesting actions inside tooltips.** If the tooltip says "Click here to learn
155
+ more," the link should be visible in the interface itself.
156
+
157
+ ---
158
+
159
+ ## 4. Empty States
160
+
161
+ ### 4.1 Empty State Formula
162
+
163
+ Every empty state has three elements:
164
+
165
+ 1. **Illustration or icon** (visual) -- optional but recommended.
166
+ 2. **Explanation** (what this area will contain when populated).
167
+ 3. **Action** (what the user should do to populate it).
168
+
169
+ **Examples:**
170
+
171
+ ```
172
+ WEAK: "No results found."
173
+ STRONG: "No projects yet. Create your first project to get started."
174
+ [Create project]
175
+
176
+ WEAK: "Nothing here."
177
+ STRONG: "No notifications. When teammates mention you or update your tasks,
178
+ you'll see them here."
179
+
180
+ WEAK: "0 items"
181
+ STRONG: "Your cart is empty. Browse our collection to find something you'll love."
182
+ [Start shopping]
183
+ ```
184
+
185
+ ### 4.2 Empty State Types
186
+
187
+ | Type | Cause | Copy tone | Action |
188
+ |-------------------|------------------------------|------------------------------|----------------------------|
189
+ | First-use empty | User hasn't added anything | Encouraging, instructive | CTA to create first item |
190
+ | No results | Search/filter returned 0 | Helpful, suggestive | Suggest broadening filters |
191
+ | Cleared state | User deleted everything | Neutral, confirming | CTA to add new items |
192
+ | Error empty | Data failed to load | Empathetic, recovery-focused | Retry button |
193
+ | Permission empty | User lacks access | Clear, non-blaming | Request access or contact |
194
+
195
+ ### 4.3 Rules
196
+
197
+ 1. **Never show a blank screen.** Every empty state needs at least a text explanation.
198
+ 2. **Use the empty state to teach.** First-use empties are onboarding opportunities.
199
+ 3. **Distinguish "no results" from "error."** "We found nothing" is different from
200
+ "We couldn't search right now."
201
+ 4. **Match the illustration to the product's visual language.** A whimsical cartoon
202
+ in a banking app undermines trust.
203
+
204
+ ---
205
+
206
+ ## 5. Calls to Action (CTAs)
207
+
208
+ ### 5.1 CTA Hierarchy
209
+
210
+ | Level | Visual treatment | Usage | Example |
211
+ |----------|------------------------|----------------------------------------|----------------------|
212
+ | Primary | Filled button, bold | One per screen or section | Start free trial |
213
+ | Secondary| Outlined or ghost | Supporting alternative | View pricing |
214
+ | Tertiary | Text link | Low-priority or navigational | Learn more |
215
+
216
+ ### 5.2 Writing Rules
217
+
218
+ 1. **Lead with the benefit, not the mechanism.** "Start free trial" beats "Click here
219
+ to register for a trial."
220
+ 2. **Create urgency without lying.** "Get 20% off today" is fine if the offer is real.
221
+ "Last chance!" on a permanent page is dishonest.
222
+ 3. **One primary CTA per viewport.** Multiple competing primaries dilute attention.
223
+ Research (CXL Institute) shows that reducing a page from 3 CTAs to 1 increased
224
+ conversion by 28%.
225
+ 4. **Avoid "Click here" and "Learn more" as standalone CTAs.** They fail accessibility
226
+ (screen readers list links out of context) and fail clarity (learn more about what?).
227
+ Use "Read the migration guide" or "View pricing details."
228
+
229
+ ---
230
+
231
+ ## 6. Placeholder Text
232
+
233
+ ### 6.1 Input Placeholders
234
+
235
+ Placeholder text sits inside a form field and disappears when the user types.
236
+
237
+ **Rules:**
238
+
239
+ 1. **Never use placeholder text as the only label.** When the user starts typing, the
240
+ label vanishes and they forget what the field is for. Always pair with a visible
241
+ label above the field.
242
+ 2. **Use placeholders to show format, not purpose.** The label says "Phone number."
243
+ The placeholder shows "(555) 123-4567."
244
+ 3. **Keep placeholders short.** They are constrained by field width. On mobile, a
245
+ placeholder longer than 20 characters may be truncated.
246
+ 4. **Ensure sufficient contrast.** WCAG requires placeholder text to meet 4.5:1
247
+ contrast ratio against the background. Many default placeholder styles fail this.
248
+ Use at least #767676 on white (#ffffff).
249
+
250
+ **Pattern:**
251
+
252
+ | Field label | Placeholder | Why |
253
+ |--------------------|--------------------------|-----------------------------------------|
254
+ | Email address | name@example.com | Shows expected format |
255
+ | Phone number | (555) 123-4567 | Shows expected format with area code |
256
+ | Search | Search by name or ID | Clarifies what's searchable |
257
+ | Password | (no placeholder) | Format hints go below the field |
258
+ | Description | (no placeholder) | Textarea placeholders are rarely read |
259
+
260
+ ---
261
+
262
+ ## 7. Confirmation Dialogs
263
+
264
+ ### 7.1 When to Confirm
265
+
266
+ Use a confirmation dialog only for:
267
+
268
+ 1. **Destructive actions** that cannot be undone (delete account, remove collaborator).
269
+ 2. **Significant actions** that change state in ways users may not intend (publish to
270
+ production, send to 10,000 recipients).
271
+ 3. **Actions with external consequences** (charge a credit card, send an email).
272
+
273
+ **Do not confirm:** saving, navigation, closing non-dirty forms, toggling settings
274
+ that can be toggled back.
275
+
276
+ ### 7.2 Confirmation Dialog Formula
277
+
278
+ ```
279
+ Title: [Verb] [object]?
280
+ Body: [Consequence of this action, in plain language.]
281
+ Primary: [Same verb as title]
282
+ Secondary: Cancel
283
+ ```
284
+
285
+ **Examples:**
286
+
287
+ ```
288
+ Title: Delete this project?
289
+ Body: All files, comments, and history will be permanently removed.
290
+ This cannot be undone.
291
+ Primary: Delete project
292
+ Secondary: Cancel
293
+
294
+ Title: Publish to production?
295
+ Body: This version will replace the current live site immediately.
296
+ 2,340 users will see the changes.
297
+ Primary: Publish
298
+ Secondary: Keep as draft
299
+
300
+ Title: Remove Alex from the team?
301
+ Body: Alex will lose access to all projects. Their existing work will remain.
302
+ Primary: Remove Alex
303
+ Secondary: Cancel
304
+ ```
305
+
306
+ ### 7.3 Rules
307
+
308
+ 1. **The title must state the action, not ask a generic question.** "Delete this
309
+ project?" -- not "Are you sure?"
310
+ 2. **The body must state the consequence.** Users need to understand what will happen,
311
+ not just confirm that they clicked a button.
312
+ 3. **The primary button must match the title verb.** If the title says "Delete," the
313
+ button says "Delete" -- not "OK" or "Yes."
314
+ 4. **Add a friction step for irreversible high-stakes actions.** Require typing the
315
+ project name to confirm deletion. This prevents accidental confirms.
316
+ 5. **Never auto-focus the destructive button.** Focus the safe option (Cancel) so
317
+ keyboard users don't accidentally confirm.
318
+
319
+ ---
320
+
321
+ ## 8. Platform-Specific Constraints
322
+
323
+ ### 8.1 Character Limits
324
+
325
+ | Element | iOS | Android (M3)| Web | Notes |
326
+ |------------------------|-------------|-------------|---------------|--------------------------|
327
+ | Push notification title| 50 chars | 65 chars | 50 chars (PWA)| Truncated with ellipsis |
328
+ | Push notification body | 178 chars | 240 chars | 120 chars | Varies by device/OS |
329
+ | Button label | No hard cap | No hard cap | No hard cap | Aim for 1-3 words |
330
+ | Toast / snackbar | 2 lines max | 2 lines max | 1-2 lines | Auto-dismiss after 4-10s |
331
+ | Tab bar label (iOS) | ~10 chars | ~12 chars | N/A | Single word preferred |
332
+ | Page title (browser) | N/A | N/A | ~55-60 chars | After that, truncated |
333
+ | Meta description | N/A | N/A | ~155 chars | Google truncates beyond |
334
+ | Alt text | No limit | No limit | No limit | Aim for 1-2 sentences |
335
+
336
+ ### 8.2 Truncation Strategies
337
+
338
+ When text exceeds available space, choose a strategy based on information priority:
339
+
340
+ | Strategy | Implementation | When to use |
341
+ |---------------------|-----------------------------|-------------------------------------|
342
+ | Ellipsis (end) | `text-overflow: ellipsis` | Names, titles, single-line labels |
343
+ | Ellipsis (middle) | Custom logic needed | File paths, URLs, email addresses |
344
+ | Line clamp | `-webkit-line-clamp: 2` | Descriptions, previews, card text |
345
+ | Fade out | Gradient overlay | Content teasers, expandable areas |
346
+ | "Show more" toggle | Expand/collapse | Long descriptions, bios |
347
+ | Abbreviation | Content-level shortening | "3 min" vs "3 minutes" |
348
+
349
+ **Rules:**
350
+
351
+ 1. **Always provide access to the full text.** Tooltip on hover, "Show more" on click,
352
+ or a detail view.
353
+ 2. **Never truncate in the middle of a word.** Truncate at word boundaries.
354
+ 3. **Account for locale length variance.** German text is typically 30% longer than
355
+ English. A label that fits in English may truncate in German. Design with 40%
356
+ padding for translated strings.
357
+
358
+ ---
359
+
360
+ ## 9. Common Mistakes in AI-Generated Microcopy
361
+
362
+ ### 9.1 Overly Verbose Labels
363
+
364
+ **The problem:** AI tends to generate complete sentences where a 2-word label suffices.
365
+ "Click this button to save your current changes" instead of "Save changes."
366
+
367
+ **How to fix:** Strip to verb + object. Read the label aloud. If it sounds like a
368
+ sentence, it's too long for a button.
369
+
370
+ ### 9.2 Generic Error Messages
371
+
372
+ **The problem:** AI defaults to "Something went wrong" or "An error occurred" without
373
+ specifics. These messages provide zero diagnostic value to the user.
374
+
375
+ **How to fix:** Apply the What/Why/How framework. If the AI doesn't know the specific
376
+ error, template it: "We couldn't [action] because [reason]. [Recovery step]."
377
+
378
+ ### 9.3 Inconsistent Terminology
379
+
380
+ **The problem:** AI uses "sign in," "log in," "sign on," and "authenticate" in the same
381
+ interface. Each variation makes users wonder if they mean different things.
382
+
383
+ **How to fix:** Maintain a term list (see `terminology-governance.md`). Choose one term
384
+ per concept and enforce it in prompts, linting rules, and review checklists.
385
+
386
+ ### 9.4 Placeholder-as-Label Antipattern
387
+
388
+ **The problem:** AI generates forms with placeholder text but no visible labels. When the
389
+ user clicks a field, the placeholder vanishes and they lose context.
390
+
391
+ **How to fix:** Always pair placeholders with persistent visible labels. Use floating
392
+ labels (the label animates above the field on focus) if vertical space is tight.
393
+
394
+ ### 9.5 Tone Mismatches
395
+
396
+ **The problem:** AI applies a cheerful, casual tone uniformly -- including error states
397
+ and destructive actions. "Oops! We deleted your account!" is inappropriate.
398
+
399
+ **How to fix:** Calibrate tone to severity. Validation errors are neutral. System errors
400
+ are calm. Destructive actions are serious.
401
+
402
+ ---
403
+
404
+ ## 10. Quick Reference Checklist
405
+
406
+ ### Buttons
407
+ - [ ] **Label starts with a verb** (Save, Delete, Send, Create)
408
+ - [ ] **Label is 1-3 words**
409
+ - [ ] **Destructive buttons include the object** (Delete account, not just Delete)
410
+ - [ ] **Primary action is never "OK" or "Yes"**
411
+ - [ ] **No double-negative button pairs** (Don't save / Cancel)
412
+
413
+ ### Error Messages
414
+ - [ ] **Answers What / Why / How**
415
+ - [ ] **Names the specific field** (not "this field")
416
+ - [ ] **States the constraint** (not just "invalid")
417
+ - [ ] **Placed inline next to the field**
418
+ - [ ] **Persists until fixed** (no auto-dismiss)
419
+ - [ ] **No raw error codes or stack traces**
420
+
421
+ ### Empty States
422
+ - [ ] **Explains what will appear here when populated**
423
+ - [ ] **Includes a CTA to populate it** (for first-use empties)
424
+ - [ ] **Distinguishes "no results" from "error"**
425
+ - [ ] **Never shows a blank screen**
426
+
427
+ ### Tooltips
428
+ - [ ] **150 characters maximum**
429
+ - [ ] **No critical information tooltip-only** (fails on touch)
430
+ - [ ] **Starts with a verb or noun** (not "This is...")
431
+
432
+ ### Confirmation Dialogs
433
+ - [ ] **Title states the action** (not "Are you sure?")
434
+ - [ ] **Body states the consequence**
435
+ - [ ] **Primary button matches the title verb**
436
+ - [ ] **Focus defaults to the safe option**
437
+
438
+ ### Placeholders
439
+ - [ ] **Visible label is always present above the field**
440
+ - [ ] **Shows format example, not purpose**
441
+ - [ ] **Meets 4.5:1 contrast ratio**
442
+
443
+ ---
444
+
445
+ **Sources:**
446
+
447
+ - [Nielsen Norman Group -- Error Message Guidelines](https://www.nngroup.com/articles/error-message-guidelines/)
448
+ - [Nielsen Norman Group -- Placeholders in Form Fields Are Harmful](https://www.nngroup.com/articles/form-design-placeholders/)
449
+ - [Nielsen Norman Group -- Confirmation Dialogs](https://www.nngroup.com/articles/confirmation-dialog/)
450
+ - [Material Design 3 -- Writing](https://m3.material.io/foundations/content-design/style-guide)
451
+ - [Apple HIG -- Writing](https://developer.apple.com/design/human-interface-guidelines/writing)
452
+ - [Microsoft Writing Style Guide](https://learn.microsoft.com/en-us/style-guide/welcome/)
453
+ - [GOV.UK Content Design Manual](https://www.gov.uk/guidance/content-design)
454
+ - [Torrey Podmajersky -- Strategic Writing for UX (O'Reilly)](https://www.oreilly.com/library/view/strategic-writing-for/9781492049395/)
455
+ - [CXL Institute -- CTA Research](https://cxl.com/blog/call-to-action/)