@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,458 @@
1
+ # Rust -- Expertise Module
2
+
3
+ > A Rust developer builds high-performance, memory-safe systems software -- from backend web services and CLI tools to embedded systems and infrastructure. The scope spans safe concurrency, zero-cost abstractions, FFI interop, and production deployment of compiled binaries with minimal runtime overhead.
4
+
5
+ ---
6
+
7
+ ## Core Patterns & Conventions
8
+
9
+ ### Project Structure
10
+
11
+ Standard Cargo layout (per the Cargo Book):
12
+ ```
13
+ my-project/
14
+ Cargo.toml
15
+ src/main.rs # Binary crate root
16
+ src/lib.rs # Library crate root
17
+ src/bin/ # Additional binaries
18
+ tests/ # Integration tests
19
+ benches/ # Benchmarks (Criterion)
20
+ examples/ # Runnable examples
21
+ ```
22
+
23
+ **Cargo Workspace** for larger projects -- share `Cargo.lock` and output directory:
24
+ ```toml
25
+ [workspace]
26
+ resolver = "2"
27
+ members = ["crates/core", "crates/api", "crates/cli", "crates/db", "crates/common"]
28
+
29
+ [workspace.dependencies]
30
+ tokio = { version = "1.44", features = ["full"] }
31
+ serde = { version = "1.0", features = ["derive"] }
32
+ tracing = "0.1"
33
+ ```
34
+
35
+ Centralise dependencies in `[workspace.dependencies]` and inherit with `dep.workspace = true`. Prevents version drift, cuts build times 40-60%. Start with 2-3 crates; split only when coupling causes genuine pain.
36
+
37
+ ### Naming Conventions (RFC 430 & Rust API Guidelines)
38
+
39
+ | Item | Convention | Example |
40
+ |------|-----------|---------|
41
+ | Types, Traits, Enums | `UpperCamelCase` | `HttpRequest`, `IntoIterator` |
42
+ | Functions, methods, variables | `snake_case` | `process_order` |
43
+ | Constants, statics | `SCREAMING_SNAKE_CASE` | `MAX_RETRIES` |
44
+ | Modules, crate names | `snake_case`, no `-rs` suffix | `auth_service` |
45
+ | Acronyms in `snake_case` | Lowercase | `is_xid_start` |
46
+
47
+ Iterator methods: `iter()`, `iter_mut()`, `into_iter()`. Conversions: `as_`, `to_`, `into_` prefixes.
48
+
49
+ ### Architecture Patterns
50
+
51
+ **Layered / Hexagonal** -- Keep `core` crate framework-agnostic. Define traits (ports) in the domain; implement in adapter crates. The domain never imports infrastructure:
52
+ ```rust
53
+ #[async_trait]
54
+ pub trait OrderRepository: Send + Sync {
55
+ async fn find_by_id(&self, id: OrderId) -> Result<Option<Order>, DomainError>;
56
+ async fn save(&self, order: &Order) -> Result<(), DomainError>;
57
+ }
58
+ ```
59
+
60
+ **Actor Model** -- Actix provides actors that own their state, communicate via messages, and run on an async executor. Good for stateful, concurrent systems with isolated failure domains.
61
+
62
+ ### Web Frameworks
63
+
64
+ - **Axum (v0.8)** -- Built by Tokio team, uses Tower middleware. Minimal by design. Best Tokio ecosystem integration. Default choice for most projects.
65
+ - **Actix Web (v4.12)** -- Highest raw throughput (~19-20K req/s vs ~17-18K for Axum). Largest middleware ecosystem. More complex.
66
+ - **Rocket (v0.5)** -- Simplest DX, type-safe routing, built-in form handling. Smallest community.
67
+
68
+ ### Async Patterns (Tokio)
69
+
70
+ Use Tokio (v1.44+) as the default runtime. Critical rules:
71
+ - Tasks yield only at `.await` -- CPU work >100us without `.await` blocks the executor.
72
+ - Use `tokio::task::spawn_blocking` for synchronous/CPU-heavy work.
73
+ - Use `tokio::sync::mpsc` channels for inter-task communication.
74
+ - Never hold a `MutexGuard` across `.await` -- lock, copy, drop, then await.
75
+ - Prefer `async fn` in traits (stable since Rust 1.75) over `Pin<Box<dyn Future>>`.
76
+
77
+ ### Error Handling
78
+
79
+ **Libraries** -- `thiserror` (v2.0) for structured, matchable error enums:
80
+ ```rust
81
+ #[derive(thiserror::Error, Debug)]
82
+ pub enum ServiceError {
83
+ #[error("entity not found: {id}")]
84
+ NotFound { id: String },
85
+ #[error(transparent)]
86
+ Database(#[from] sqlx::Error),
87
+ }
88
+ ```
89
+
90
+ **Applications** -- `anyhow` (v2.0) for ergonomic propagation with `.context()`. Always use `#[from]`/`#[source]` to preserve error chains. Keep variants under ~10 per enum.
91
+
92
+ ### Ownership and Borrowing
93
+
94
+ - Prefer borrowing (`&T`) over cloning. Use `Cow<'a, str>` when allocation is conditional.
95
+ - One `&mut T` XOR many `&T` -- never both simultaneously.
96
+ - `Arc<T>` for shared ownership across threads; `Weak` to break cycles.
97
+ - Accept `&str` or `impl AsRef<str>` for read-only string parameters; `impl Into<String>` when storing.
98
+
99
+ ### Trait Design Patterns
100
+
101
+ **Newtype** -- Wrap primitives for type safety at zero cost: `pub struct UserId(pub Uuid);`
102
+ **Extension Traits** -- Add methods to foreign types without orphan rule violations.
103
+ **Builder Pattern** -- For structs with many optional fields; `.build()` returns `Result<T>`.
104
+
105
+ ### Logging and Observability
106
+
107
+ Use `tracing` (not `log`). Provides structured spans and events for async contexts:
108
+ ```rust
109
+ #[instrument(skip(db), fields(user_id = %user_id))]
110
+ async fn get_user(db: &Pool, user_id: Uuid) -> Result<User> {
111
+ info!("fetching user");
112
+ db.fetch_user(user_id).await
113
+ }
114
+ ```
115
+ - `tracing-subscriber` with JSON layer for production.
116
+ - `tracing-opentelemetry` for distributed tracing.
117
+
118
+ ---
119
+
120
+ ## Anti-Patterns & Pitfalls
121
+
122
+ ### 1. Excessive `.clone()` to Appease the Borrow Checker
123
+ Each clone allocates and copies. Habitual cloning defeats zero-copy and causes slowdowns in hot paths. **Fix:** Restructure to use references, `Cow`, or `Arc`.
124
+
125
+ ### 2. `.unwrap()` / `.expect()` in Production Code
126
+ Both panic on `None`/`Err`, crashing the process. In async servers, one panic kills a worker thread. **Fix:** Use `?`, `map`, `and_then`. Reserve unwrap for tests.
127
+
128
+ ### 3. Blocking the Async Runtime
129
+ Synchronous I/O or CPU-heavy work (>100us) without `.await` starves all tasks on that worker. **Fix:** `tokio::task::spawn_blocking` or `tokio::fs`.
130
+
131
+ ### 4. Holding a Mutex Guard Across `.await`
132
+ `std::sync::MutexGuard` is `!Send`. Even `tokio::sync::Mutex` guards across await points risk deadlocks. **Fix:** Lock, copy, drop guard, then await.
133
+
134
+ ### 5. Stringly-Typed Errors
135
+ `Box<dyn Error>` everywhere prevents programmatic recovery. **Fix:** `thiserror` enums in libraries, `anyhow` in applications.
136
+
137
+ ### 6. Ignoring Clippy Warnings
138
+ Clippy catches real bugs: ignored `Result` values, suboptimal iterator chains, unnecessary allocations. **Fix:** `cargo clippy -- -D warnings` in CI.
139
+
140
+ ### 7. Premature `unsafe`
141
+ Each `unsafe` block opts out of compiler guarantees. Bugs cause UB. **Fix:** Exhaust safe alternatives. Document `// SAFETY:` invariants. Audit with Miri.
142
+
143
+ ### 8. Over-Abstracting with Generics
144
+ Excessive `where` clauses create unreadable signatures and monomorphisation bloat. **Fix:** `impl Trait` for simple cases; `dyn Trait` when static dispatch is unnecessary.
145
+
146
+ ### 9. `Rc`/`Arc` Reference Cycles
147
+ Parent holding `Arc<Child>` + child holding `Arc<Parent>` leaks both. **Fix:** `Weak` for back-pointers. Arena allocators for graphs.
148
+
149
+ ### 10. Applying OOP Inheritance Patterns
150
+ Rust has no inheritance. Forcing class hierarchies via `Any` downcasting fights ownership. **Fix:** Composition over inheritance. Enums for closed sets, traits for open extension.
151
+
152
+ ### 11. Large Enum Variants Wasting Stack Space
153
+ An enum is as large as its biggest variant. One `[u8; 4096]` variant makes every instance 4KB+. **Fix:** `Box` large variants.
154
+
155
+ ### 12. Forgetting Async Cancellation Safety
156
+ When a future is dropped via `select!`, partial work may be lost. **Fix:** Design cancellation-safe operations. Document which futures are safe to cancel.
157
+
158
+ ### 13. Using `String` When `&str` Suffices
159
+ Accepting `String` forces callers to allocate even when they have a `&str`. **Fix:** Accept `&str` for read-only parameters.
160
+
161
+ ---
162
+
163
+ ## Testing Strategy
164
+
165
+ ### Unit Tests (Inline `#[cfg(test)]`)
166
+ Place in the same file; access private functions. Use `#[tokio::test]` for async:
167
+ ```rust
168
+ #[cfg(test)]
169
+ mod tests {
170
+ use super::*;
171
+ #[test]
172
+ fn valid_email() { assert!(validate_email("user@example.com")); }
173
+ }
174
+ ```
175
+
176
+ ### Integration Tests (`tests/` Directory)
177
+ Each file compiles as a separate crate, accesses only the public API. Use `testcontainers` for real database instances in Docker.
178
+
179
+ ### Property-Based Testing (proptest)
180
+ Test invariants across random inputs with automatic shrinking:
181
+ ```rust
182
+ proptest! {
183
+ #[test]
184
+ fn parse_roundtrip(s in "[a-zA-Z0-9]{1,64}") {
185
+ let parsed = MyType::parse(&s).unwrap();
186
+ assert_eq!(parsed.to_string(), s);
187
+ }
188
+ }
189
+ ```
190
+
191
+ ### Mocking (mockall)
192
+ Generate mock trait implementations: `#[automock]` on trait definitions. Set expectations with `.expect_method().returning(|_| ...)`.
193
+
194
+ ### Benchmark Testing (Criterion)
195
+ Statistically rigorous micro-benchmarks with regression detection. Place in `benches/` directory.
196
+
197
+ ### Doc Tests
198
+ Code in `///` comments runs as tests via `cargo test`. Ensures examples stay in sync with the API.
199
+
200
+ ---
201
+
202
+ ## Performance Considerations
203
+
204
+ ### Zero-Cost Abstractions
205
+ Iterators, closures, and generics compile to the same machine code as hand-written loops. Prefer `iter().map().filter().collect()` over manual indexing.
206
+
207
+ ### Memory Allocation Patterns
208
+ - **Stack vs Heap:** Stack is near-instant. `Box<T>` for large values. Avoid boxing small, short-lived values.
209
+ - **Arena Allocation:** `bumpalo` or `typed-arena` for graphs or many short-lived objects. Freed all at once.
210
+ - **Small-String Optimisation:** `compact_str` for strings usually <24 bytes.
211
+
212
+ ### Profiling Tools
213
+
214
+ | Tool | Purpose |
215
+ |------|---------|
216
+ | `cargo flamegraph` | CPU flame graphs via perf/DTrace |
217
+ | `samply` | Sampling profiler with GUI |
218
+ | DHAT (Valgrind) | Heap allocation profiling |
219
+ | `tokio-console` | Async task scheduling visualisation |
220
+ | Criterion | Micro-benchmark regression detection |
221
+
222
+ **Workflow:** Baseline with Criterion, profile with flamegraph, optimise, re-benchmark.
223
+
224
+ ### Async Runtime Tuning
225
+ - Default: one worker thread per core. Override with `#[tokio::main(worker_threads = N)]`.
226
+ - `tokio::task::spawn_blocking` for >100us operations.
227
+ - `FuturesUnordered` or `JoinSet` for concurrent fan-out.
228
+
229
+ ### SIMD and Unsafe Optimisation
230
+ - `std::simd` (nightly) or portable-simd for data-parallel operations (4x+ gains possible).
231
+ - Always benchmark -- thermal throttling can reduce SIMD gains.
232
+ - Minimise `unsafe` scope; validate with Miri.
233
+
234
+ ---
235
+
236
+ ## Security Considerations
237
+
238
+ ### Memory Safety
239
+ Rust's ownership model eliminates use-after-free, double-free, buffer overflows, and data races at compile time.
240
+
241
+ ### Unsafe Code Auditing
242
+ - `cargo-geiger` -- maps all `unsafe` across the dependency tree.
243
+ - `cargo +nightly miri test` -- detects UB in unsafe code at runtime.
244
+ - Document `// SAFETY:` invariants for every `unsafe` block.
245
+
246
+ ### Dependency Auditing
247
+ - **`cargo audit`** -- checks `Cargo.lock` against the RustSec Advisory Database.
248
+ - **`cargo deny`** -- license checks, duplicate deps, source restrictions, advisories. Run in CI.
249
+ - **`cargo vet`** -- supply-chain auditing, tracks reviewed crate versions.
250
+
251
+ ### Cryptography
252
+ - **`rustls`** (v0.23+) for TLS. Pure Rust, audited. Default crypto: `aws-lc-rs`; alternative: `ring`.
253
+ - Never implement custom crypto. Use `ring` or `aws-lc-rs` for primitives.
254
+ - Post-quantum: `pqcrypto` (ML-KEM, ML-DSA).
255
+
256
+ ### Input Validation
257
+ - Validate at the boundary (API handlers, CLI parsers, file readers).
258
+ - Newtypes with validation constructors (e.g., `Email::new()` rejects invalid formats).
259
+ - `#[serde(deny_unknown_fields)]` to reject unexpected JSON fields.
260
+ - `validator` crate for declarative validation rules.
261
+
262
+ ---
263
+
264
+ ## Integration Patterns
265
+
266
+ ### Database
267
+
268
+ - **sqlx (v0.8)** -- Async, compile-time checked SQL. Not an ORM. Best for raw SQL comfort.
269
+ - **Diesel (v2.3)** -- Sync, compile-time schema verification via codegen. Strongest type safety.
270
+ - **SeaORM (v2.0)** -- Async-first dynamic ORM. Familiar to ActiveRecord/Django developers.
271
+
272
+ ### Message Queues
273
+ - **RabbitMQ:** `lapin` -- fully async AMQP 0.9.1 client. Advanced routing, persistent queues.
274
+ - **Kafka:** `rdkafka` -- wraps librdkafka. Consumer groups, rebalancing, transactional production.
275
+ - **Abstraction:** `omniqueue` -- unified interface over Redis, RabbitMQ, SQS.
276
+
277
+ ### gRPC (tonic)
278
+ Built on Hyper and Tower, sharing middleware with Axum. Define services in `.proto`, generate with `tonic-build`. Axum and Tonic can multiplex on the same port via `axum_tonic`.
279
+
280
+ ### REST API (Axum)
281
+ Extractors decompose requests: `Path`, `Query`, `Json`, `State`. Tower layers provide middleware (tracing, CORS, rate limiting, auth) shared with Tonic.
282
+
283
+ ### FFI (C Interop)
284
+ - `#[repr(C)]` on structs for C-compatible layout.
285
+ - `CString`/`CStr` for string exchange. Never pass Rust `String` directly.
286
+ - Never panic across FFI -- use `std::panic::catch_unwind`.
287
+ - `cxx` crate for safe C++/Rust interop with compile-time validation.
288
+
289
+ ---
290
+
291
+ ## DevOps & Deployment
292
+
293
+ ### Build Optimisation
294
+ ```toml
295
+ [profile.release]
296
+ opt-level = 3
297
+ lto = "fat" # 10-20% faster runtime, slower compile
298
+ codegen-units = 1 # Better optimisation, slower compile
299
+ panic = "abort" # Smaller binary, no unwinding
300
+ strip = "symbols" # Strip debug symbols
301
+ ```
302
+
303
+ ### Docker (Multi-Stage with musl)
304
+ ```dockerfile
305
+ FROM rust:1.85-alpine AS builder
306
+ RUN apk add --no-cache musl-dev
307
+ WORKDIR /app
308
+ COPY . .
309
+ RUN cargo build --release --target x86_64-unknown-linux-musl
310
+
311
+ FROM scratch
312
+ COPY --from=builder /app/target/x86_64-unknown-linux-musl/release/my-app /my-app
313
+ USER 1000:1000
314
+ ENTRYPOINT ["/my-app"]
315
+ ```
316
+
317
+ ### CI/CD Pipeline
318
+ Run on every commit: `cargo fmt --check`, `cargo clippy -- -D warnings`, `cargo test --workspace`, `cargo deny check`. Add `cargo-tarpaulin` for coverage.
319
+
320
+ ### Cross-Compilation
321
+ Use `cross` for container-based builds: `cross build --release --target aarch64-unknown-linux-musl`.
322
+
323
+ ### Monitoring
324
+ `metrics` crate + `metrics-exporter-prometheus`. Expose `/metrics` endpoint in Axum.
325
+
326
+ ---
327
+
328
+ ## Decision Trees
329
+
330
+ ### Which Web Framework?
331
+ ```
332
+ Need maximum raw throughput?
333
+ YES --> Actix Web
334
+ NO --> Tokio integration important?
335
+ YES --> Axum (default choice for most teams)
336
+ NO --> Simplicity top priority?
337
+ YES --> Rocket
338
+ NO --> Axum
339
+ ```
340
+
341
+ ### Which Async Runtime?
342
+ ```
343
+ Web service / networked application?
344
+ YES --> Tokio (de facto standard)
345
+ NO --> Embedded / no-std?
346
+ YES --> embassy
347
+ NO --> Tokio
348
+ ```
349
+
350
+ ### Which Database Library?
351
+ ```
352
+ Comfortable with raw SQL + need async?
353
+ YES --> sqlx
354
+ NO --> Maximum compile-time safety?
355
+ YES --> Diesel
356
+ NO --> Familiar ORM style?
357
+ YES --> SeaORM
358
+ NO --> sqlx
359
+ ```
360
+
361
+ ---
362
+
363
+ ## Code Examples
364
+
365
+ ### 1. Axum Handler with Error Mapping
366
+ ```rust
367
+ use axum::{extract::{Path, State}, http::StatusCode, response::IntoResponse, Json};
368
+
369
+ async fn get_order(
370
+ State(pool): State<PgPool>,
371
+ Path(id): Path<Uuid>,
372
+ ) -> Result<Json<Order>, AppError> {
373
+ let order = sqlx::query_as!(Order, "SELECT * FROM orders WHERE id = $1", id)
374
+ .fetch_optional(&pool).await?
375
+ .ok_or(AppError::NotFound)?;
376
+ Ok(Json(order))
377
+ }
378
+
379
+ enum AppError { NotFound, Internal(anyhow::Error) }
380
+
381
+ impl IntoResponse for AppError {
382
+ fn into_response(self) -> axum::response::Response {
383
+ match self {
384
+ Self::NotFound => StatusCode::NOT_FOUND.into_response(),
385
+ Self::Internal(e) => {
386
+ tracing::error!("internal error: {e:#}");
387
+ StatusCode::INTERNAL_SERVER_ERROR.into_response()
388
+ }
389
+ }
390
+ }
391
+ }
392
+
393
+ impl<E: Into<anyhow::Error>> From<E> for AppError {
394
+ fn from(err: E) -> Self { Self::Internal(err.into()) }
395
+ }
396
+ ```
397
+
398
+ ### 2. Async Fan-Out with JoinSet
399
+ ```rust
400
+ use tokio::task::JoinSet;
401
+
402
+ async fn fetch_all_prices(symbols: &[String]) -> anyhow::Result<Vec<(String, f64)>> {
403
+ let mut set = JoinSet::new();
404
+ for sym in symbols {
405
+ let s = sym.clone();
406
+ set.spawn(async move { Ok::<_, anyhow::Error>((s.clone(), fetch_price(&s).await?)) });
407
+ }
408
+ let mut results = Vec::with_capacity(symbols.len());
409
+ while let Some(res) = set.join_next().await { results.push(res??); }
410
+ Ok(results)
411
+ }
412
+ ```
413
+
414
+ ### 3. Newtype with Serde Validation
415
+ ```rust
416
+ #[derive(Debug, Clone, PartialEq, Eq)]
417
+ pub struct EmailAddress(String);
418
+
419
+ impl EmailAddress {
420
+ pub fn new(raw: &str) -> Result<Self, ValidationError> {
421
+ if raw.contains('@') && raw.len() <= 254 {
422
+ Ok(Self(raw.to_lowercase()))
423
+ } else {
424
+ Err(ValidationError::InvalidEmail(raw.into()))
425
+ }
426
+ }
427
+ pub fn as_str(&self) -> &str { &self.0 }
428
+ }
429
+
430
+ impl<'de> serde::Deserialize<'de> for EmailAddress {
431
+ fn deserialize<D: serde::Deserializer<'de>>(d: D) -> Result<Self, D::Error> {
432
+ let s = String::deserialize(d)?;
433
+ Self::new(&s).map_err(serde::de::Error::custom)
434
+ }
435
+ }
436
+ ```
437
+
438
+ ### 4. Instrumented Service with Tracing
439
+ ```rust
440
+ impl OrderService {
441
+ #[instrument(skip(self), fields(order_id = %id))]
442
+ pub async fn cancel_order(&self, id: Uuid) -> Result<(), DomainError> {
443
+ let order = self.repo.find(id).await?
444
+ .ok_or(DomainError::OrderNotFound { order_id: id })?;
445
+ if order.is_shipped() {
446
+ warn!("attempted to cancel shipped order");
447
+ return Err(DomainError::AlreadyShipped { order_id: id });
448
+ }
449
+ self.repo.update_status(id, OrderStatus::Cancelled).await?;
450
+ info!("order cancelled");
451
+ Ok(())
452
+ }
453
+ }
454
+ ```
455
+
456
+ ---
457
+
458
+ *Researched: 2026-03-07 | Sources: [Rust API Guidelines](https://rust-lang.github.io/api-guidelines/naming.html), [RFC 430](https://rust-lang.github.io/rfcs/0430-finalizing-naming-conventions.html), [Cargo Book - Workspaces](https://doc.rust-lang.org/cargo/reference/workspaces.html), [Cargo Book - Profiles](https://doc.rust-lang.org/cargo/reference/profiles.html), [Rust Design Patterns](https://rust-unofficial.github.io/patterns/), [Rust Performance Book](https://nnethercote.github.io/perf-book/profiling.html), [Tokio Tutorial](https://tokio.rs/tokio/tutorial), [Axum Docs](https://docs.rs/axum/latest/axum/), [Tracing Docs](https://docs.rs/tracing), [RustSec](https://rustsec.org/), [Rustls](https://github.com/rustls/rustls), [Effective Rust - FFI](https://effective-rust.com/ffi.html), [Rust Web Frameworks 2026](https://aarambhdevhub.medium.com/rust-web-frameworks-in-2026-axum-vs-actix-web-vs-rocket-vs-warp-vs-salvo-which-one-should-you-2db3792c79a2), [Rust ORMs 2026](https://aarambhdevhub.medium.com/rust-orms-in-2026-diesel-vs-sqlx-vs-seaorm-vs-rusqlite-which-one-should-you-actually-use-706d0fe912f3), [Diesel vs SQLx vs SeaORM 2026](https://reintech.io/blog/diesel-vs-sqlx-vs-seaorm-rust-database-library-comparison-2026), [Rust Error Handling Compared](https://dev.to/leapcell/rust-error-handling-compared-anyhow-vs-thiserror-vs-snafu-2003), [Rust Security Auditing 2026](https://sherlock.xyz/post/rust-security-auditing-guide-2026), [Async Rust Evolution (JetBrains)](https://blog.jetbrains.com/rust/2026/02/17/the-evolution-of-async-rust-from-tokio-to-high-level-applications/), [Rust Testing Patterns](https://dasroot.net/posts/2026/03/rust-testing-patterns-reliable-releases/), [Workspace Best Practices](https://reintech.io/blog/cargo-workspace-best-practices-large-rust-projects)*