@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,79 @@
1
+ # Locale and Language Tags — i18n/RTL Expertise Module
2
+
3
+ > BCP 47 (RFC 5646) defines language tags: `en-US`, `ar-SA`, `zh-Hans-CN`. Structure, lookup, fallback chain, and locale resolution for i18n.
4
+
5
+ > **Category:** Foundation
6
+ > **Applies to:** All
7
+ > **Key standards:** BCP 47 (RFC 5646), RFC 4647 (matching)
8
+ > **RTL impact:** Low — locale selects RTL; tags don't encode direction
9
+
10
+ ## 1. Core Concepts
11
+
12
+ ### BCP 47 Structure
13
+
14
+ ```
15
+ language ["-" script] ["-" region] ["-" variant] ["-" extension]
16
+ ```
17
+
18
+ | Subtag | Source | Example |
19
+ |--------|--------|---------|
20
+ | language | ISO 639 | en, ar, zh |
21
+ | script | ISO 15924 | Hans, Hant, Latn |
22
+ | region | ISO 3166-1 / UN M.49 | US, SA, 419 |
23
+ | variant | Registered | |
24
+ | extension | u-, t- | u-ca-hebrew |
25
+
26
+ ### Examples
27
+
28
+ - `en` — English
29
+ - `en-US` — American English
30
+ - `ar-SA` — Arabic (Saudi Arabia)
31
+ - `zh-Hans-CN` — Chinese Simplified (China)
32
+ - `sr-Cyrl` — Serbian (Cyrillic script)
33
+ - `en-u-ca-hebrew` — English with Hebrew calendar extension
34
+
35
+ ### Legacy: `iw` = `he`
36
+
37
+ - `iw` was deprecated for Hebrew; use `he`
38
+
39
+ ---
40
+
41
+ ## 2. Fallback Chain
42
+
43
+ When `ar-SA` is requested but a translation is missing:
44
+
45
+ 1. `ar-SA`
46
+ 2. `ar`
47
+ 3. Default (e.g., `en`)
48
+
49
+ Implement via RFC 4647 lookup or framework fallback.
50
+
51
+ ---
52
+
53
+ ## 3. Locale Resolution
54
+
55
+ - **User preference:** `Accept-Language` header, OS locale, app setting
56
+ - **Explicit:** Pass locale to API/component
57
+ - **Default:** Project default when no match
58
+
59
+ ---
60
+
61
+ ## 4. Anti-Patterns
62
+
63
+ 1. **Hardcoding locale** — Use user preference or explicit param
64
+ 2. **No fallback** — Always have a default
65
+ 3. **Using `iw`** — Use `he` for Hebrew
66
+ 4. **Ignoring script** — `zh-Hans` vs `zh-Hant` matter
67
+ 5. **Wrong region** — `es-ES` vs `es-419` (Latin America)
68
+
69
+ ---
70
+
71
+ ## Quick Reference Checklist
72
+
73
+ - [ ] Use BCP 47 tags
74
+ - [ ] Implement fallback chain
75
+ - [ ] Resolve from user preference
76
+ - [ ] Use `he` not `iw`
77
+
78
+ ---
79
+ *Researched: 2026-03-08 | Sources: RFC 5646, W3C BCP 47, IANA registry*
@@ -0,0 +1,61 @@
1
+ # Numbers, Currency, and Units — i18n/RTL Expertise Module
2
+
3
+ > Number formatting varies: decimal separator (`.` vs `,`), grouping, currency symbol position, and numeral system (Western vs Eastern Arabic). Use `Intl.NumberFormat`; never hardcode.
4
+
5
+ > **Category:** Foundation
6
+ > **Applies to:** All
7
+ > **Key standards:** CLDR, Intl API
8
+ > **RTL impact:** Medium — Eastern Arabic numerals (٠١٢٣) in some locales
9
+
10
+ ## 1. Core Concepts
11
+
12
+ ### Decimal and Grouping
13
+
14
+ | Locale | Decimal | Thousands |
15
+ |--------|---------|-----------|
16
+ | en-US | . | , |
17
+ | de-DE | , | . |
18
+ | ar-SA | ٫ (Arabic decimal) | ٬ (Arabic thousands) |
19
+ | fr-FR | , | space |
20
+
21
+ ### Numeral Systems
22
+
23
+ - **Western (0123):** en, de, fr, he-IL
24
+ - **Eastern Arabic (٠١٢٣):** ar-SA, ar-EG, fa-IR
25
+ - **Locale-dependent:** Use `Intl.NumberFormat(locale)` — it picks the right one
26
+
27
+ ### Currency
28
+
29
+ ```javascript
30
+ new Intl.NumberFormat('ar-SA', {
31
+ style: 'currency',
32
+ currency: 'SAR'
33
+ }).format(1234.56);
34
+ // "١٬٢٣٤٫٥٦ ر.س"
35
+ ```
36
+
37
+ ### Units
38
+
39
+ - **Intl.NumberFormat** with `style: 'unit'` for lengths, etc.
40
+ - Or use `Intl` + custom unit strings
41
+
42
+ ---
43
+
44
+ ## 2. Anti-Patterns
45
+
46
+ 1. **Hardcoded decimal separator** — Use Intl
47
+ 2. **Assuming Western numerals** — ar-SA uses Eastern
48
+ 3. **Currency symbol position** — Locale-dependent (before/after, spacing)
49
+ 4. **No currency code** — Use ISO 4217 (USD, EUR, SAR)
50
+
51
+ ---
52
+
53
+ ## Quick Reference Checklist
54
+
55
+ - [ ] Use Intl.NumberFormat
56
+ - [ ] Pass locale and currency
57
+ - [ ] No hardcoded separators
58
+ - [ ] Test with ar-SA (Eastern numerals)
59
+
60
+ ---
61
+ *Researched: 2026-03-08 | Sources: MDN Intl.NumberFormat, CLDR*
@@ -0,0 +1,109 @@
1
+ # Pluralization and Gender — i18n/RTL Expertise Module
2
+
3
+ > Languages have different plural rules (English: 2 forms; Arabic: 6; Japanese: 1) and gender agreement. ICU MessageFormat handles both via `plural` and `select`. Never use `count === 1 ? 'item' : 'items'`.
4
+
5
+ > **Category:** Foundation
6
+ > **Applies to:** All
7
+ > **Key standards:** CLDR plural rules, ICU MessageFormat
8
+ > **RTL impact:** Low — plural/gender are language rules
9
+
10
+ ## 1. Core Concepts
11
+
12
+ ### CLDR Plural Categories
13
+
14
+ - **zero** — Some languages (e.g., Arabic) have explicit zero form
15
+ - **one** — Singular (n=1 in English; varies by language)
16
+ - **two** — Dual (Arabic, Welsh, etc.)
17
+ - **few** — Small quantity (e.g., 2–4 in Russian)
18
+ - **many** — Large quantity (e.g., Polish)
19
+ - **other** — Default; required in every plural rule
20
+
21
+ No language uses all six. English uses one + other. Arabic uses all six.
22
+
23
+ ### ICU MessageFormat: plural
24
+
25
+ ```
26
+ {count, plural,
27
+ zero {لا رسائل}
28
+ one {رسالة واحدة}
29
+ two {رسالتان}
30
+ few {# رسائل}
31
+ many {# رسالة}
32
+ other {# رسالة}
33
+ }
34
+ ```
35
+
36
+ `#` = formatted number.
37
+
38
+ ### ICU MessageFormat: select (gender)
39
+
40
+ ```
41
+ {gender, select,
42
+ male {He}
43
+ female {She}
44
+ other {They}
45
+ } liked this.
46
+ ```
47
+
48
+ ### Locale Examples
49
+
50
+ | Language | Forms | Example |
51
+ |----------|-------|---------|
52
+ | English | one, other | 1 item / 2 items |
53
+ | Arabic | zero, one, two, few, many, other | 6 forms |
54
+ | Hebrew | one, two, other | 3 forms |
55
+ | Russian | one, few, many, other | 4 forms |
56
+ | Japanese | other | 1 form |
57
+ | Polish | one, few, many, other | 4 forms |
58
+
59
+ ---
60
+
61
+ ## 2. Implementation
62
+
63
+ ### JavaScript (formatjs/react-intl)
64
+
65
+ ```tsx
66
+ <FormattedMessage
67
+ id="itemCount"
68
+ defaultMessage="{count, plural, one {# item} other {# items}}"
69
+ values={{ count: 5 }}
70
+ />
71
+ ```
72
+
73
+ ### Dart (Flutter)
74
+
75
+ ```dart
76
+ AppLocalizations.of(context)!.itemCount(5)
77
+ // From ARB: "{count, plural, one {# item} other {# items}}"
78
+ ```
79
+
80
+ ### Nested: plural + select
81
+
82
+ ```
83
+ {count, plural,
84
+ one {{gender, select, male {He has} female {She has} other {They have}} one.}
85
+ other {{gender, select, male {He has} female {She has} other {They have}} #.}
86
+ }
87
+ ```
88
+
89
+ ---
90
+
91
+ ## 3. Anti-Patterns
92
+
93
+ 1. **`count === 1 ? 'item' : 'items'`** — Fails for Arabic, Russian, etc.
94
+ 2. **Missing `other`** — Required in ICU
95
+ 3. **Concatenating** — "You have " + count + " items"; use full message
96
+ 4. **No gender** — French, German, etc. need gender agreement
97
+ 5. **Ordinal as cardinal** — Use `selectordinal` for "1st", "2nd"
98
+
99
+ ---
100
+
101
+ ## Quick Reference Checklist
102
+
103
+ - [ ] Use ICU MessageFormat for plurals
104
+ - [ ] Include `other` in every plural
105
+ - [ ] Use `select` for gender when needed
106
+ - [ ] Never concatenate for plurals
107
+
108
+ ---
109
+ *Researched: 2026-03-08 | Sources: CLDR plurals, ICU MessageFormat, IntlPull guide*
@@ -0,0 +1,236 @@
1
+ # String Externalization — i18n/RTL Expertise Module
2
+
3
+ > Extracting all user-facing strings from code into external resource files so they can be translated without touching source. The foundation of every localization workflow—get this wrong and translators work against the codebase.
4
+
5
+ > **Category:** Foundation
6
+ > **Applies to:** All (Mobile, Web, Backend)
7
+ > **Key standards:** ICU MessageFormat, XLIFF (ISO 21720), gettext PO, ARB
8
+ > **RTL impact:** Medium — externalized strings enable RTL; keys and placeholders must not assume LTR
9
+
10
+ ## 1. Core Concepts
11
+
12
+ ### What This Area Covers
13
+
14
+ String externalization is the practice of moving every user-facing string out of source code into separate resource files. This enables:
15
+ - Translation without code changes
16
+ - Consistent key management across languages
17
+ - Context for translators (descriptions, placeholders, screenshots)
18
+ - Automated extraction and validation
19
+
20
+ ### Why It Matters
21
+
22
+ - **Retrofitting costs 3–5×** — Hunting for hardcoded strings across components, templates, and API responses is expensive
23
+ - **Keys are a contract** — Between developers, translators, and translation management systems
24
+ - **Poor key naming** — Causes 2–3× more time on translation management, reuse errors, and maintenance brittleness
25
+
26
+ ### Common Misconceptions
27
+
28
+ 1. **"We can grep for strings later"** — Strings appear in JSX, templates, error constructors, validation messages, logs. Grep misses many.
29
+ 2. **"Keys can be the English text"** — Ties you to English; renames break translation history.
30
+ 3. **"One big file per language"** — Doesn't scale; no code-splitting, merge conflicts, slow loads.
31
+ 4. **"Translators don't need context"** — "Save" can mean "persist" or "rescue"; "Close" can mean "shut" or "near."
32
+
33
+ ---
34
+
35
+ ## 2. Implementation Patterns
36
+
37
+ ### Key Naming Convention
38
+
39
+ **Hierarchical, feature-based, semantic:**
40
+
41
+ ```
42
+ {namespace}.{component}.{element}.{modifier}
43
+ ```
44
+
45
+ **Examples:**
46
+ - `auth.login.submitButton` — not `loginSubmitButton`
47
+ - `checkout.cart.emptyState.title` — not `emptyCart`
48
+ - `common.errors.networkError` — not `error1`
49
+
50
+ **Rules:**
51
+ - Use consistent casing (camelCase or snake_case project-wide)
52
+ - Keep keys under ~50 characters
53
+ - Avoid positional names (`sidebar.firstItem`, `modal.button1`)
54
+ - No special characters or spaces; alphanumeric + dots/underscores only
55
+
56
+ ### File Formats
57
+
58
+ | Format | Used By | Structure | Plurals |
59
+ |--------|---------|-----------|---------|
60
+ | **ARB** | Flutter/Dart | JSON, `@` metadata | ICU MessageFormat |
61
+ | **JSON** | React, Vue, Node | Key-value, nested or flat | ICU or `_one`/`_other` suffix |
62
+ | **XLIFF** | Enterprise, CAT tools | XML, source+target pairs | Embedded in `<trans-unit>` |
63
+ | **PO** | gettext, Linux, PHP | `msgid`/`msgstr`, `msgid_plural` | `Plural-Forms` header |
64
+ | **strings.xml** | Android | XML, `string`/`plurals` | `quantity` attributes |
65
+ | **Localizable.strings** | iOS | `"key" = "value";` | `.stringsdict` |
66
+
67
+ ### ARB (Flutter) Example
68
+
69
+ ```json
70
+ {
71
+ "@@locale": "en",
72
+ "welcomeMessage": "Hello, {name}!",
73
+ "@welcomeMessage": {
74
+ "description": "Greeting on dashboard",
75
+ "placeholders": {
76
+ "name": {
77
+ "type": "String"
78
+ }
79
+ }
80
+ },
81
+ "itemCount": "{count, plural, =0{No items} one{1 item} other{# items}}",
82
+ "@itemCount": {
83
+ "description": "Cart item count",
84
+ "placeholders": {
85
+ "count": {
86
+ "type": "int"
87
+ }
88
+ }
89
+ }
90
+ }
91
+ ```
92
+
93
+ ### JSON (React/i18next) Example
94
+
95
+ ```json
96
+ {
97
+ "auth": {
98
+ "login": {
99
+ "title": "Sign in",
100
+ "submit": "Log in",
101
+ "forgotPassword": "Forgot password?"
102
+ }
103
+ },
104
+ "common": {
105
+ "save": "Save",
106
+ "cancel": "Cancel"
107
+ }
108
+ }
109
+ ```
110
+
111
+ ### PO (gettext) Example
112
+
113
+ ```
114
+ #: src/components/Login.tsx:42
115
+ msgid "Sign in"
116
+ msgstr ""
117
+
118
+ #: src/components/Cart.tsx:15
119
+ msgid "One item in cart"
120
+ msgid_plural "%d items in cart"
121
+ msgstr[0] ""
122
+ msgstr[1] ""
123
+ ```
124
+
125
+ ### XLIFF 2.0 Snippet
126
+
127
+ ```xml
128
+ <trans-unit id="auth.login.title">
129
+ <source>Sign in</source>
130
+ <target>تسجيل الدخول</target>
131
+ <note>Login screen heading</note>
132
+ </trans-unit>
133
+ ```
134
+
135
+ ### Folder Structure
136
+
137
+ Organize by feature/namespace, not by page or file location:
138
+
139
+ ```
140
+ locales/
141
+ en/
142
+ auth.json
143
+ dashboard.json
144
+ checkout.json
145
+ common.json
146
+ ar/
147
+ auth.json
148
+ dashboard.json
149
+ ...
150
+ ```
151
+
152
+ Enables code-splitting, clear ownership, and lazy loading per namespace.
153
+
154
+ ### Placeholder and Interpolation Rules
155
+
156
+ 1. **Never concatenate** — Use `{name}` or `{{name}}`; let translators control word order.
157
+ 2. **Document placeholders** — Type, purpose, example in metadata.
158
+ 3. **Escape carefully** — Some formats use `{count}` (ICU) vs `{{count}}` (i18next); know your framework.
159
+
160
+ ---
161
+
162
+ ## 3. Locale Variations
163
+
164
+ ### Arabic
165
+ - Long strings for formal register; short for informal. Provide both if needed.
166
+ - Placeholders may need to appear in different positions: "مرحباً {{name}}" vs "Welcome, {{name}}"
167
+ - RTL affects placeholder placement in mixed content.
168
+
169
+ ### German
170
+ - ~30% longer; design for expansion. Keys should not imply length.
171
+ - Compound words: "E-Mail-Adresse" — ensure UI doesn't truncate.
172
+
173
+ ### Japanese / Chinese
174
+ - Often shorter; avoid fixed-width layouts that assume long text.
175
+ - No spaces; line breaks differ. Provide max length hints for translators.
176
+
177
+ ### Hebrew
178
+ - Similar to Arabic for RTL; different typography. Keys and structure are shared; values differ.
179
+
180
+ ---
181
+
182
+ ## 4. Anti-Patterns
183
+
184
+ 1. **Hardcoded strings in components** — Every visible string must be externalized.
185
+ 2. **Keys as English text** — `"Welcome back"` as key; use `auth.welcomeBack`.
186
+ 3. **String concatenation** — `"Hello, " + name`; use `t('greeting', { name })`.
187
+ 4. **No context for translators** — Add descriptions, screenshots, max length.
188
+ 5. **Flat key namespace** — `button1`, `title2`; use hierarchical semantic keys.
189
+ 6. **Inconsistent casing** — Mix of camelCase and snake_case; pick one.
190
+ 7. **Positional keys** — `sidebar.firstItem`; use `navigation.sidebar.dashboard`.
191
+ 8. **Translating in UI only** — API errors, validation, logs shown to users must be externalized.
192
+ 9. **Missing placeholder metadata** — Translators need type and purpose.
193
+ 10. **One giant file** — Split by feature for maintainability and lazy loading.
194
+ 11. **No fallback for missing keys** — Define policy: show key, default locale, or throw.
195
+ 12. **Keys that change** — Renaming breaks translation memory; use stable semantic keys.
196
+ 13. **Embedding HTML in strings** — Prefer structured messages (e.g., rich text components).
197
+ 14. **Translating developer-only strings** — Log messages, debug text—exclude from extraction.
198
+ 15. **No extraction automation** — Manual copy-paste leads to drift; use extraction tools.
199
+
200
+ ---
201
+
202
+ ## 5. Testing Approach
203
+
204
+ ### Extraction Validation
205
+ - Run extraction; ensure no new hardcoded strings
206
+ - CI check: fail if strings appear in code without extraction
207
+
208
+ ### Missing Key Detection
209
+ - Test with a locale that has incomplete translations
210
+ - Verify fallback behavior (key vs default locale)
211
+
212
+ ### Placeholder Coverage
213
+ - Ensure all placeholders documented
214
+ - Test with long/short/empty values, RTL text (e.g., العربية)
215
+
216
+ ### Pseudo-Localization
217
+ - Replace values with expanded/accented text to find truncation
218
+ - Use bracketed placeholders `[KeyName]` to find untranslated keys
219
+
220
+ ---
221
+
222
+ ## Quick Reference Checklist
223
+
224
+ - [ ] All user-facing strings in resource files
225
+ - [ ] Keys are semantic, hierarchical, consistent casing
226
+ - [ ] Placeholders documented (type, purpose)
227
+ - [ ] No string concatenation for sentences
228
+ - [ ] Files organized by feature/namespace
229
+ - [ ] Extraction automated in CI
230
+ - [ ] Missing key policy defined and enforced
231
+ - [ ] Context (descriptions, screenshots) for translators
232
+ - [ ] API/validation/error messages externalized
233
+ - [ ] Test with pseudo-localization and incomplete locales
234
+
235
+ ---
236
+ *Researched: 2026-03-08 | Sources: Locize key naming guide, IntlPull translation keys, Flutter ARB docs, XLIFF spec, gettext PO manual*