@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,27 @@
1
+ # Directory Purpose
2
+
3
+ The `frontend` directory provides framework-specific guidelines, best practices, and architectural standards for client-side applications (web, mobile, and desktop).
4
+
5
+ # Key Concepts
6
+
7
+ - Framework-specific state management and rendering
8
+ - Organizing client-side codebases
9
+ - Native vs cross-platform development paradigms
10
+
11
+ # File Map
12
+
13
+ - `index.md` — semantic map of the frontend directory
14
+ - `angular.md` — RxJS, modules, and Angular CLI standards
15
+ - `desktop-electron.md` — IPC communication, security, and main/renderer processes
16
+ - `flutter.md` — widget trees, BLoC/Provider, and performance
17
+ - `native-android.md` — Kotlin, Jetpack Compose, and Android SDK guidelines
18
+ - `native-ios.md` — Swift, SwiftUI, and iOS SDK guidelines
19
+ - `react-native.md` — TypeScript architecture, Expo, state management, navigation, performance, EAS
20
+ - `react.md` — hooks, context, Next.js, and functional components
21
+ - `vue.md` — Composition API, Pinia, and Nuxt.js guidelines
22
+
23
+ # Reading Guide
24
+
25
+ If building a web app → read `react.md`, `vue.md`, or `angular.md`
26
+ If building a mobile app → read `flutter.md`, `native-ios.md`, `native-android.md`, or `react-native.md`
27
+ If building a desktop app → read `desktop-electron.md`
@@ -0,0 +1,409 @@
1
+ # Native Android -- Expertise Module
2
+
3
+ > A Native Android specialist designs, builds, and maintains Android applications using Kotlin and Jetpack Compose,
4
+ > applying modern architecture patterns (MVVM/MVI + Clean Architecture), optimizing for performance across diverse
5
+ > device configurations, and shipping through the Google Play ecosystem with robust CI/CD and quality tooling.
6
+
7
+ ---
8
+
9
+ ## Core Patterns & Conventions
10
+
11
+ ### Project Structure (Multi-Module with Convention Plugins)
12
+
13
+ Follow the modularization strategy from Google's Now in Android reference app. Organize by feature and layer, using a `build-logic` composite build for convention plugins.
14
+
15
+ ```
16
+ project-root/
17
+ build-logic/convention/ # Shared Gradle convention plugins
18
+ gradle/libs.versions.toml # Single version catalog
19
+ app/ # Application module (thin shell)
20
+ core/
21
+ common/ | data/ | database/ | datastore/ | domain/ | model/ | network/ | ui/ | testing/
22
+ feature/
23
+ home/ | settings/ | profile/ # Feature modules: UI + ViewModel
24
+ ```
25
+
26
+ Convention plugins replace 43+ lines of module config with a 3-line plugin application. Always use `build-logic/` composite build (not `buildSrc`) for better build cache performance.
27
+
28
+ **Current versions (early 2026):** Kotlin 2.1.x, AGP 8.7+ (9.0 alpha), Compose BOM 2025.01+, Gradle 8.6+ Kotlin DSL, Target SDK 35 (required by Play Store since Aug 2025).
29
+
30
+ ### Naming Conventions & Code Style
31
+
32
+ - Follow [Kotlin coding conventions](https://kotlinlang.org/docs/coding-conventions.html).
33
+ - Composable functions emitting UI: `PascalCase` (`UserProfile`). Returning a value: `camelCase` (`rememberScrollState`).
34
+ - State holders: `*UiState`. ViewModels: `*ViewModel`. Use cases: verb-noun (`GetUserProfileUseCase`).
35
+ - Repository interfaces in `domain/`, implementations in `data/` suffixed `Impl` or prefixed `Offline`/`Network`.
36
+ - Test classes mirror source: `HomeViewModelTest`, `UserRepositoryTest`.
37
+
38
+ ### Architecture Patterns
39
+
40
+ **MVVM with UDF** (Google-recommended default): View (Compose) observes `UiState` via `StateFlow` from ViewModel, which delegates to Use Cases and exposes immutable state.
41
+
42
+ **MVI** for complex screens: single sealed `UiEvent` type flows into ViewModel; reducer produces new immutable state; side effects via `Channel`/`SharedFlow`.
43
+
44
+ **Clean Architecture layers:** Presentation (`:feature:*`) -> Domain (`:core:domain`, pure Kotlin) <- Data (`:core:data/network/database`). Dependencies point inward.
45
+
46
+ ### Jetpack Compose UI Patterns
47
+
48
+ - **State hoisting:** Stateless composables receive state as params, emit events via lambdas. Hoist to lowest common ancestor. Never pass `ViewModel` or `MutableState` down.
49
+ - **Slots API:** Use `@Composable` content lambdas for flexible layouts. Components handle decoration/interaction, not content.
50
+ - **Previews:** Every UI composable needs `@Preview`. Use `@PreviewParameter` for variants.
51
+
52
+ ### State Management
53
+
54
+ ```kotlin
55
+ sealed interface HomeUiState {
56
+ data object Loading : HomeUiState
57
+ data class Success(val items: List<Item>) : HomeUiState
58
+ data class Error(val message: String) : HomeUiState
59
+ }
60
+
61
+ class HomeViewModel(private val getItemsUseCase: GetItemsUseCase) : ViewModel() {
62
+ val uiState: StateFlow<HomeUiState> = getItemsUseCase()
63
+ .map<List<Item>, HomeUiState> { HomeUiState.Success(it) }
64
+ .catch { emit(HomeUiState.Error(it.message ?: "Unknown error")) }
65
+ .stateIn(viewModelScope, SharingStarted.WhileSubscribed(5_000), HomeUiState.Loading)
66
+ }
67
+ ```
68
+
69
+ - `StateFlow` for UI state, `SharedFlow` for one-time events. Collect with `collectAsStateWithLifecycle()`.
70
+
71
+ ### Navigation (Type-Safe Routes, Navigation 2.8+)
72
+
73
+ ```kotlin
74
+ @Serializable data object Home
75
+ @Serializable data class Detail(val id: String)
76
+
77
+ NavHost(navController, startDestination = Home) {
78
+ composable<Home> { HomeScreen(onItemClick = { navController.navigate(Detail(it.id)) }) }
79
+ composable<Detail> { it.toRoute<Detail>().let { route -> DetailScreen(id = route.id) } }
80
+ }
81
+ ```
82
+
83
+ Replace all string-based routes with `@Serializable` types for compile-time safety. Extract in ViewModels via `SavedStateHandle.toRoute<T>()`.
84
+
85
+ ### Data Flow, Error Handling, Logging
86
+
87
+ - **Repository pattern:** Interface in domain, implementation combines network + local cache. Returns `Flow<T>` for observable, `suspend fun` for one-shot. Offline-first: emit cached, then refresh.
88
+ - **Use Cases:** Single `operator fun invoke()`. Compose repositories or apply business rules.
89
+ - **Errors:** `kotlin.Result` for simple cases; sealed classes (`DataError.Network`, `DataError.NoConnection`) for domain errors. Never catch `CancellationException`. Map exceptions at the repository boundary.
90
+ - **Logging:** Timber (auto-tags, no-op in release). `StrictMode` in debug. Crashlytics tree for production error forwarding.
91
+
92
+ ---
93
+
94
+ ## Anti-Patterns & Pitfalls
95
+
96
+ ### 1. Catching CancellationException in Coroutines
97
+ Creates zombie coroutines that break structured concurrency. Use `ensureActive()` or re-throw explicitly.
98
+
99
+ ### 2. Overloading the ViewModel
100
+ ViewModels handling API calls, validation, analytics, permissions, and navigation become untestable monoliths. Delegate to Use Cases and Repositories.
101
+
102
+ ### 3. Performing Side Effects in Composition
103
+ Composables recompose unpredictably. Side effects in composition cause duplicate API calls and analytics events. Use `LaunchedEffect` / `SideEffect`.
104
+
105
+ ### 4. Modeling One-Time Events as State
106
+ A snackbar stored in `UiState` re-fires on config changes. Use `Channel` or `SharedFlow` for events.
107
+
108
+ ### 5. Skipping `remember` / `derivedStateOf`
109
+ Expensive computations re-run on every recomposition. Cache with `remember`; throttle with `derivedStateOf`.
110
+
111
+ ### 6. Passing Mutable Types Down Compose Tree
112
+ `MutableState`, `MutableList`, or `ViewModel` in child composables breaks UDF, prevents reuse, kills previews. Pass immutable state down, lambdas up.
113
+
114
+ ### 7. Using GlobalScope for Background Work
115
+ Leaks coroutines beyond lifecycle. Use `viewModelScope`, `lifecycleScope`, or lifecycle-bound custom scopes.
116
+
117
+ ### 8. Ignoring Compose Stability
118
+ Unstable parameters (stdlib `List`, `var` fields) force recomposition. Use `@Immutable`/`@Stable` or enable strong skipping mode (default since Compose compiler 1.5.4+).
119
+
120
+ ### 9. Blocking the Main Thread
121
+ Synchronous I/O causes ANRs. Use `withContext(Dispatchers.IO)` for all network, DB, and file operations.
122
+
123
+ ### 10. Hardcoding Secrets in Source Code
124
+ API keys in source are extractable from APKs. Use `local.properties` (gitignored), CI-injected BuildConfig, or Keystore.
125
+
126
+ ### 11. Not Handling Process Death
127
+ Android kills background apps. Use `SavedStateHandle`, `rememberSaveable`, and persistent storage (Room/DataStore).
128
+
129
+ ### 12. Leaking Activity Context
130
+ Static/long-lived references to Activity prevent GC. Use `applicationContext` for singletons and long-lived operations.
131
+
132
+ ### 13. Skipping R8 Configuration
133
+ Missing keep rules cause runtime crashes when reflection-based libraries are stripped. Test release builds early.
134
+
135
+ ### 14. Testing Flows Without Turbine
136
+ Raw `collect` in tests is timing-dependent and flaky. Turbine provides deterministic `awaitItem()` and timeout control.
137
+
138
+ ---
139
+
140
+ ## Testing Strategy
141
+
142
+ ### Unit Testing (JUnit 5 + MockK + Turbine)
143
+
144
+ ```kotlin
145
+ @ExtendWith(MainDispatcherExtension::class)
146
+ class HomeViewModelTest {
147
+ private val getItemsUseCase = mockk<GetItemsUseCase>()
148
+
149
+ @Test
150
+ fun `emits success state when items load`() = runTest {
151
+ every { getItemsUseCase() } returns flowOf(listOf(testItem))
152
+ val viewModel = HomeViewModel(getItemsUseCase)
153
+ viewModel.uiState.test {
154
+ assertIs<HomeUiState.Loading>(awaitItem())
155
+ assertIs<HomeUiState.Success>(awaitItem())
156
+ }
157
+ }
158
+ }
159
+ ```
160
+
161
+ - **JUnit 5** (`@ExtendWith`, `@Nested`, `@ParameterizedTest`), **MockK** (`mockk`, `coEvery`, `verify`), **Turbine** 1.1+ for Flow testing, **kotlinx-coroutines-test** (`runTest`, `StandardTestDispatcher`).
162
+
163
+ ### UI Testing (Compose Testing)
164
+
165
+ - `createComposeRule()` for pure Compose tests. Add `testTag` to interactive elements.
166
+ - Prefer semantic matchers (`onNodeWithText`) over test tags. Use `performScrollToNode` for lazy layouts.
167
+
168
+ ### Integration & Screenshot Testing
169
+
170
+ - **Hilt**: `@HiltAndroidTest` + `@TestInstallIn` for module replacement. **Room**: in-memory DB. **Network**: `MockWebServer`.
171
+ - **Paparazzi** (JVM-only, no emulator) or **Roborazzi** (Robolectric-based) for screenshot tests. Test light/dark, font scales, screen sizes. Run on every PR.
172
+
173
+ ### Test Organization
174
+
175
+ - Test pyramid: many unit, fewer integration, fewest UI/E2E.
176
+ - Shared fixtures in `:core:testing`. `test/` for JVM tests, `androidTest/` for instrumented.
177
+ - CI: unit tests on every commit, screenshot tests on PR, instrumented tests nightly.
178
+
179
+ ---
180
+
181
+ ## Performance Considerations
182
+
183
+ ### Compose Performance
184
+ - **Stability:** `@Immutable`/`@Stable` annotations. Strong skipping mode (default 1.5.4+). Provide stable `key` to lazy layout items; use `contentType` for heterogeneous lists.
185
+ - **Defer reads:** Pass lambda `() -> State` to defer to draw phase. Use `derivedStateOf` for rapidly changing state.
186
+ - **Avoid allocations in composition:** No object creation or list mapping in composable bodies. Use `remember`.
187
+
188
+ ### App Startup
189
+ - **Baseline Profiles:** Ship with APK/AAB for AOT compilation. Meta reports up to 40% improvement. Generate via `benchmark-macro-junit4`.
190
+ - **App Startup library** (`androidx.startup`) for ordered initialization. Minimize `Application.onCreate()`. Defer non-critical init.
191
+
192
+ ### Memory & Battery
193
+ - **LeakCanary** (debug): auto-detects leaks. Use `LeakAssertions.assertNoLeaks()` in UI tests.
194
+ - `collectAsStateWithLifecycle()` stops collection when UI not visible. Unregister callbacks in lifecycle methods.
195
+ - **WorkManager** for deferrable work (respects Doze). Batch network requests. **Coil/Glide** with caching.
196
+
197
+ ### R8 Optimization
198
+ - `isMinifyEnabled = true` + `isShrinkResources = true` for release. Use `proguard-android-optimize.txt` (non-optimizing deprecated from AGP 9.0).
199
+ - `-repackageclasses` saves DEX space. R8 full mode for deep whole-program optimization. Test release builds early; use mapping files for deobfuscation.
200
+
201
+ ---
202
+
203
+ ## Security Considerations
204
+
205
+ ### Keystore & Encrypted Storage
206
+ - **Android Keystore**: hardware-backed, keys non-extractable even on rooted devices. **EncryptedSharedPreferences** or DataStore with encryption for sensitive data. `MasterKey.Builder` with `AES256_GCM`.
207
+
208
+ ### Network Security
209
+ - `network_security_config.xml`: disable cleartext (`cleartextTrafficPermitted="false"`), pin certificates with backup pins, debug-only CAs for proxy tools.
210
+ - OkHttp `CertificatePinner` for programmatic pinning. Enforce TLS 1.2+.
211
+
212
+ ### Biometric Authentication
213
+ - **BiometricPrompt API** with `CryptoObject` for crypto-bound biometric auth (not just UI gating). Check `BiometricManager.canAuthenticate()`. Handle fallback to device credential.
214
+
215
+ ### Obfuscation & Provider Security
216
+ - R8 obfuscation + `-allowaccessmodification`. Google Play Integrity API for tamper detection.
217
+ - `android:exported="false"` on ContentProviders. Sanitize all provider inputs (SQL injection). Prefer `FileProvider` for file sharing.
218
+
219
+ ---
220
+
221
+ ## Integration Patterns
222
+
223
+ ### Networking: Retrofit + OkHttp (or Ktor for KMP)
224
+
225
+ ```kotlin
226
+ interface UserApi {
227
+ @GET("users/{id}") suspend fun getUser(@Path("id") id: String): UserDto
228
+ @POST("users") suspend fun createUser(@Body user: CreateUserRequest): UserDto
229
+ }
230
+
231
+ val okHttpClient = OkHttpClient.Builder()
232
+ .addInterceptor(AuthInterceptor(tokenProvider))
233
+ .addInterceptor(HttpLoggingInterceptor().apply {
234
+ level = if (BuildConfig.DEBUG) Level.BODY else Level.NONE
235
+ }).build()
236
+ ```
237
+
238
+ Use **kotlinx.serialization** over Gson/Moshi (no reflection). **Ktor Client** for KMP projects.
239
+
240
+ ### Dependency Injection: Hilt (or Koin)
241
+
242
+ ```kotlin
243
+ @Module @InstallIn(SingletonComponent::class)
244
+ object NetworkModule {
245
+ @Provides @Singleton
246
+ fun provideUserApi(client: OkHttpClient): UserApi = Retrofit.Builder()
247
+ .baseUrl(BuildConfig.API_BASE_URL).client(client)
248
+ .addConverterFactory(Json.asConverterFactory("application/json".toMediaType()))
249
+ .build().create()
250
+ }
251
+ ```
252
+
253
+ Hilt for production apps (compile-time, scoped, testable). Koin for small projects or KMP.
254
+
255
+ ### Room, WorkManager, Firebase
256
+
257
+ - **Room** with KSP (not KAPT). Return `Flow<T>` from DAOs. Encapsulate in `:core:database`. Migration tests with `MigrationTestHelper`.
258
+ - **WorkManager** for deferrable guaranteed work. `CoroutineWorker` + `@HiltWorker`. Constraints (network, battery). Not for immediate tasks.
259
+ - **Firebase:** Crashlytics (upload mapping files), Analytics, Remote Config, App Distribution, FCM. Use Firebase BOM.
260
+
261
+ ---
262
+
263
+ ## DevOps & Deployment
264
+
265
+ ### Build System
266
+
267
+ ```toml
268
+ # gradle/libs.versions.toml
269
+ [versions]
270
+ kotlin = "2.1.21"
271
+ agp = "8.7.3"
272
+ compose-bom = "2025.01.01"
273
+ [plugins]
274
+ android-application = { id = "com.android.application", version.ref = "agp" }
275
+ kotlin-compose = { id = "org.jetbrains.kotlin.plugin.compose", version.ref = "kotlin" }
276
+ ```
277
+
278
+ Gradle Kotlin DSL exclusively. Version catalogs + convention plugins in `build-logic/`. Enable Gradle configuration cache and build cache.
279
+
280
+ ### CI/CD & Deployment
281
+
282
+ - **GitHub Actions**: cache Gradle, run `./gradlew check`, assemble, deploy to Firebase App Distribution (service account credentials; token auth deprecated).
283
+ - **Build variants**: `debug` (`.debug` suffix), `release` (minified), `benchmark` (baseline profiles). Product flavors for environment (dev/staging/prod).
284
+ - **Play Store**: publish AAB (not APK). Use Play-managed signing. Staged rollouts: 1% -> 5% -> 20% -> 100%.
285
+ - **Monitoring**: Crashlytics + mapping files, Firebase Performance, Android Vitals. Target 99.5%+ crash-free rate.
286
+
287
+ ---
288
+
289
+ ## Decision Trees
290
+
291
+ ### Compose vs XML Views
292
+
293
+ ```
294
+ New project or feature?
295
+ YES -> Jetpack Compose (XML is in maintenance mode; Compose is Google's recommended toolkit)
296
+ NO (brownfield with XML) -> Adopt incrementally via ComposeView; migrate screen by screen
297
+ Key: Compose reduces boilerplate ~50%. Team skill is the main blocker, not technical merit.
298
+ ```
299
+
300
+ ### Hilt vs Koin
301
+
302
+ ```
303
+ Large / enterprise (50+ modules, multiple teams)?
304
+ -> Hilt (compile-time validation, 15-20% faster startup, official testing APIs)
305
+ KMP requirement?
306
+ -> Koin (KMP-compatible, no Android-specific codegen)
307
+ Small project / prototype?
308
+ -> Koin (5-min setup) or either
309
+ Key: Hilt catches errors at compile time; Koin crashes at runtime.
310
+ ```
311
+
312
+ ### Which Architecture Pattern?
313
+
314
+ ```
315
+ Simple CRUD? -> MVVM + UDF (Google default, StateFlow + sealed UiState)
316
+ Complex interactions? -> MVI (single Intent type, Reducer, predictable state transitions)
317
+ Cross-platform logic? -> Clean Architecture + MVVM/MVI (pure Kotlin domain layer)
318
+ Key: Start simple. Add domain layer or MVI when complexity warrants it.
319
+ ```
320
+
321
+ ---
322
+
323
+ ## Code Examples
324
+
325
+ ### Example 1: Complete Screen (ViewModel + Compose)
326
+
327
+ ```kotlin
328
+ @HiltViewModel
329
+ class ProfileViewModel @Inject constructor(
330
+ private val getUserUseCase: GetUserUseCase, savedStateHandle: SavedStateHandle
331
+ ) : ViewModel() {
332
+ private val userId: String = savedStateHandle.toRoute<ProfileRoute>().userId
333
+ val uiState: StateFlow<ProfileUiState> = getUserUseCase(userId)
334
+ .map<User, ProfileUiState> { ProfileUiState.Success(it) }
335
+ .catch { emit(ProfileUiState.Error(it.message ?: "Failed to load")) }
336
+ .stateIn(viewModelScope, SharingStarted.WhileSubscribed(5_000), ProfileUiState.Loading)
337
+ }
338
+
339
+ @Composable
340
+ fun ProfileScreen(viewModel: ProfileViewModel = hiltViewModel()) {
341
+ val uiState by viewModel.uiState.collectAsStateWithLifecycle()
342
+ when (uiState) {
343
+ is ProfileUiState.Loading -> CircularProgressIndicator(Modifier.testTag("loading"))
344
+ is ProfileUiState.Success -> Column(Modifier.padding(16.dp)) {
345
+ Text((uiState as ProfileUiState.Success).user.name, style = MaterialTheme.typography.headlineMedium)
346
+ }
347
+ is ProfileUiState.Error -> Text((uiState as ProfileUiState.Error).message, color = MaterialTheme.colorScheme.error)
348
+ }
349
+ }
350
+ ```
351
+
352
+ ### Example 2: Offline-First Repository
353
+
354
+ ```kotlin
355
+ class UserRepositoryImpl @Inject constructor(
356
+ private val api: UserApi, private val dao: UserDao, private val io: CoroutineDispatcher
357
+ ) : UserRepository {
358
+ override fun getUser(id: String): Flow<User> = dao.observeUser(id)
359
+ .map { it.toDomain() }
360
+ .onStart { runCatching { dao.upsert(api.getUser(id).toEntity()) }
361
+ .onFailure { if (it is CancellationException) throw it; Timber.w(it) } }
362
+ .flowOn(io)
363
+ }
364
+ ```
365
+
366
+ ### Example 3: Convention Plugin
367
+
368
+ ```kotlin
369
+ // build-logic/convention/src/main/kotlin/AndroidFeatureConventionPlugin.kt
370
+ class AndroidFeatureConventionPlugin : Plugin<Project> {
371
+ override fun apply(target: Project) = with(target) {
372
+ pluginManager.apply { apply("com.android.library"); apply("org.jetbrains.kotlin.android")
373
+ apply("org.jetbrains.kotlin.plugin.compose"); apply("com.google.dagger.hilt.android") }
374
+ extensions.configure<LibraryExtension> { defaultConfig.targetSdk = 35 }
375
+ dependencies { add("implementation", project(":core:ui")); add("implementation", project(":core:domain")) }
376
+ }
377
+ }
378
+ // Usage: plugins { id("myapp.android.feature") }
379
+ ```
380
+
381
+ ### Example 4: Room DAO with Flow
382
+
383
+ ```kotlin
384
+ @Dao
385
+ interface UserDao {
386
+ @Query("SELECT * FROM users WHERE id = :id") fun observeUser(id: String): Flow<UserEntity>
387
+ @Upsert suspend fun upsert(user: UserEntity)
388
+ @Transaction @Query("SELECT * FROM users INNER JOIN teams ON users.team_id = teams.id WHERE teams.name = :teamName")
389
+ fun getUsersWithTeam(teamName: String): Flow<List<UserWithTeam>>
390
+ }
391
+ ```
392
+
393
+ ### Example 5: WorkManager with Hilt
394
+
395
+ ```kotlin
396
+ @HiltWorker
397
+ class SyncWorker @AssistedInject constructor(
398
+ @Assisted context: Context, @Assisted params: WorkerParameters,
399
+ private val syncRepository: SyncRepository
400
+ ) : CoroutineWorker(context, params) {
401
+ override suspend fun doWork(): Result = try {
402
+ syncRepository.syncAll(); Result.success()
403
+ } catch (e: Exception) { if (runAttemptCount < 3) Result.retry() else Result.failure() }
404
+ }
405
+ ```
406
+
407
+ ---
408
+
409
+ *Researched: 2026-03-07 | Sources: [Android Developers - Compose](https://developer.android.com/compose), [Android Architecture Guide](https://developer.android.com/topic/architecture), [Now in Android (GitHub)](https://github.com/android/nowinandroid), [Compose Performance](https://developer.android.com/develop/ui/compose/performance), [Compose Stability](https://developer.android.com/develop/ui/compose/performance/stability), [Navigation Type Safety](https://developer.android.com/guide/navigation/design/type-safety), [Baseline Profiles](https://developer.android.com/topic/performance/baselineprofiles/overview), [R8 Shrinking](https://developer.android.com/build/shrink-code), [Meta Baseline Profiles](https://engineering.fb.com/2025/10/01/android/accelerating-our-android-apps-with-baseline-profiles/), [Hilt vs Koin (droidcon)](https://www.droidcon.com/2025/11/26/hilt-vs-koin-the-hidden-cost-of-runtime-injection-and-why-compile-time-di-wins/), [Room Database](https://developer.android.com/training/data-storage/room), [WorkManager](https://developer.android.com/topic/libraries/architecture/workmanager), [LeakCanary](https://square.github.io/leakcanary/), [Kotlin 2.1.20](https://kotlinlang.org/docs/whatsnew2120.html), [Android Security 2025](https://medium.com/@hiren6997/5-modern-android-security-practices-you-cant-ignore-in-2025-6560558be99e), [Android Networking 2025](https://medium.com/@hiren6997/the-state-of-android-networking-in-2025-retrofit-ktor-and-beyond-7a5a5317802c), [Gradle Version Catalogs](https://docs.gradle.org/current/userguide/version_catalogs.html), [Modularization Patterns](https://developer.android.com/topic/modularization/patterns), [Compose API Guidelines](https://developer.android.com/develop/ui/compose/api-guidelines)*