@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,577 @@
1
+ # Dark Mode & Theming
2
+
3
+ > Discipline module for designing, implementing, and maintaining light/dark themes,
4
+ > custom branded themes, high-contrast accessibility modes, and system-preference-aware
5
+ > color scheme switching across web and native platforms.
6
+
7
+ ---
8
+
9
+ ## 1. What This Discipline Covers
10
+
11
+ ### 1.1 Scope
12
+
13
+ Dark mode and theming encompasses every decision that governs how a product's visual
14
+ appearance adapts to user preference, ambient conditions, and accessibility needs.
15
+
16
+ **Core concerns:**
17
+
18
+ - **Light and dark themes** -- two canonical appearance modes every modern product must
19
+ support. Light mode uses dark content on light backgrounds; dark mode reverses this
20
+ relationship with careful adjustments (not simple inversion).
21
+ - **Custom/branded themes** -- variants tied to brand identity, white-labeling, or user
22
+ personalization (accent colors, density, font choices).
23
+ - **High-contrast mode** -- an accessibility-first appearance that maximizes contrast
24
+ ratios beyond standard requirements for users with low vision.
25
+ - **System theme following** -- respecting the OS or browser preference for light/dark
26
+ appearance while offering an explicit override toggle.
27
+ - **Per-surface theming** -- nested or sectional theme overrides within a single
28
+ viewport (e.g., a dark sidebar inside a light app shell).
29
+
30
+ ### 1.2 Why It Matters
31
+
32
+ - **Reduced eye strain**: dark themes lower luminance in low-light conditions.
33
+ - **Battery savings**: on OLED/AMOLED displays, darker pixels consume less power.
34
+ Google confirmed YouTube dark mode reduces battery usage by 15-60%.
35
+ - **Accessibility**: users with photosensitivity, migraine disorders, or low vision
36
+ depend on theme options. WCAG 2.2 and the emerging WCAG 3.0 / APCA standard both
37
+ recognize the need for adaptive color schemes.
38
+ - **User expectation**: over 80% of smartphone users have enabled dark mode at the OS
39
+ level. Failure to support it signals neglect.
40
+ - **Brand expression**: theming architecture enables white-label products, seasonal
41
+ campaigns, and personalization without code changes.
42
+
43
+ ---
44
+
45
+ ## 2. Core Methods & Frameworks
46
+
47
+ ### 2.1 Material Design 3 -- Dark Theme
48
+
49
+ M3 fundamentally changed dark themes. The key shift: **surfaces use tonal elevation,
50
+ not shadows**.
51
+
52
+ **Tonal elevation model:**
53
+
54
+ Elevation is expressed through tonal color overlays derived from the primary color
55
+ slot, rather than drop shadows or opacity overlays. Higher-elevation surfaces receive
56
+ an increasingly prominent tint of the primary color.
57
+
58
+ | Elevation Level | Tonal Overlay | Typical Usage |
59
+ |-----------------|---------------|----------------------------------|
60
+ | Level 0 | 0% tint | Page background |
61
+ | Level 1 | +5% primary | Cards, elevated containers |
62
+ | Level 2 | +8% primary | App bars, menus |
63
+ | Level 3 | +11% primary | Navigation drawers, dialogs |
64
+ | Level 4 | +12% primary | Modals, floating action buttons |
65
+ | Level 5 | +14% primary | Highest-elevation surfaces |
66
+
67
+ **M3 surface color roles:**
68
+
69
+ - `surface` -- base container color for cards, sheets, app bars, menus.
70
+ - `surfaceContainerLowest` through `surfaceContainerHighest` -- five predefined tonal
71
+ variations replacing the old single-surface-plus-overlay approach.
72
+ - `surfaceVariant` -- lower-contrast surface for list rows, chips, data tables.
73
+ - `surfaceTint` -- color used internally for tonal elevation overlays (derived from
74
+ primary); do not set directly.
75
+
76
+ **Why tonal elevation matters:** shadows are nearly invisible on dark backgrounds.
77
+ Tonal elevation makes hierarchy legible in both modes. The tonal tint reinforces
78
+ brand identity because it inherits from the primary color.
79
+
80
+ M3 uses the HCT (Hue, Chroma, Tone) color space. Dark themes select higher-tone
81
+ (lighter) variants of each color role. Saturated colors are desaturated to avoid
82
+ "vibration" against dark backgrounds.
83
+
84
+ Source: [Material Design 3 -- Dark Theme](https://m3.material.io/blog/dark-theme-design-tutorial-video),
85
+ [Tone-based Surfaces](https://m3.material.io/blog/tone-based-surface-color-m3/),
86
+ [Color Roles](https://m3.material.io/styles/color/roles).
87
+
88
+ ### 2.2 Apple Human Interface Guidelines -- Dark Mode
89
+
90
+ Apple centers dark mode on **semantic colors** that automatically adapt to the current
91
+ appearance.
92
+
93
+ | Semantic Name | Light | Dark | Usage |
94
+ |-------------------------------|-----------------|-----------------|---------------------|
95
+ | `systemBackground` | #FFFFFF | #000000 | Primary background |
96
+ | `secondarySystemBackground` | #F2F2F7 | #1C1C1E | Grouped content bg |
97
+ | `tertiarySystemBackground` | #FFFFFF | #2C2C2E | Elevated grouped bg |
98
+ | `label` | #000000 | #FFFFFF | Primary text |
99
+ | `secondaryLabel` | #3C3C43 (60%) | #EBEBF5 (60%) | Secondary text |
100
+ | `separator` | #3C3C43 (29%) | #545458 (65%) | Thin dividers |
101
+
102
+ **Key Apple principles:**
103
+
104
+ 1. Use semantic tokens so the OS handles mode switching automatically.
105
+ 2. Leverage "materials" (translucency layers) that adapt to underlying content.
106
+ 3. Test with the "Increase Contrast" accessibility setting.
107
+ 4. Use medium or semibold weights for small body text in dark mode -- thinner weights
108
+ "bloom" on dark backgrounds.
109
+ 5. Apple uses true black (#000000) for OLED primary backgrounds but layers elevated
110
+ surfaces at #1C1C1E and #2C2C2E for depth.
111
+
112
+ Source: [Apple HIG -- Dark Mode](https://developer.apple.com/design/human-interface-guidelines/dark-mode),
113
+ [Apple HIG -- Color](https://developer.apple.com/design/human-interface-guidelines/color).
114
+
115
+ ### 2.3 Design Tokens for Theming
116
+
117
+ Tokens are organized in a three-tier architecture:
118
+
119
+ ```
120
+ Tier 1: Primitive tokens --color-gray-900: #121212
121
+ Tier 2: Semantic tokens --color-surface-primary: var(--color-gray-900) /* dark */
122
+ Tier 3: Component tokens --card-bg: var(--color-surface-primary)
123
+ ```
124
+
125
+ Theme switching operates at the semantic layer: swap mappings from semantic tokens to
126
+ primitives, and every component inherits the change automatically.
127
+
128
+ The W3C Design Tokens Community Group released the first stable specification (2025.10)
129
+ in October 2025, providing a vendor-neutral JSON format for cross-tool interop.
130
+
131
+ ### 2.4 CSS Custom Properties & `prefers-color-scheme`
132
+
133
+ ```css
134
+ :root {
135
+ color-scheme: light dark;
136
+ --surface: #FFFFFF;
137
+ --text: #212121;
138
+ --accent: #1E88E5;
139
+ }
140
+
141
+ @media (prefers-color-scheme: dark) {
142
+ :root {
143
+ --surface: #121212;
144
+ --text: #E0E0E0;
145
+ --accent: #42A5F5;
146
+ }
147
+ }
148
+
149
+ /* Class-based override for manual toggle */
150
+ :root.dark {
151
+ --surface: #121212;
152
+ --text: #E0E0E0;
153
+ --accent: #42A5F5;
154
+ }
155
+ ```
156
+
157
+ The `color-scheme` property tells the browser to adjust UA-provided UI elements
158
+ (scrollbars, form controls, selection highlights) to match the theme.
159
+ `prefers-color-scheme` is supported in all modern browsers with zero JavaScript.
160
+
161
+ ### 2.5 Contrast & Accessibility
162
+
163
+ **WCAG 2.2 (current regulatory standard):**
164
+
165
+ - Normal text: 4.5:1 minimum (AA). Large text (18pt+): 3:1 minimum (AA).
166
+ - UI components and graphical objects: 3:1 minimum.
167
+
168
+ **APCA / WCAG 3.0 (emerging standard):**
169
+
170
+ APCA measures contrast as Lc (Lightness Contrast) values. Key thresholds: Lc 75
171
+ minimum for body text, Lc 90 preferred. APCA recognizes that light-on-dark and
172
+ dark-on-light do NOT have symmetric contrast perception -- critical for dark mode
173
+ design. WCAG 2.x's symmetric formula misses many dark-mode contrast issues.
174
+
175
+ **Note:** WCAG 2.1/2.2 remains the legal standard. Use APCA as a supplementary check.
176
+
177
+ ---
178
+
179
+ ## 3. Deliverables
180
+
181
+ ### 3.1 Color Token Mapping: Light <-> Dark
182
+
183
+ ```
184
+ Token Name Light Dark Notes
185
+ ------------------------------------------------------------------
186
+ surface.primary #FFFFFF #121212 Main background
187
+ surface.secondary #F5F5F5 #1E1E1E Cards, containers
188
+ surface.elevated #FFFFFF #252525 Modals, popovers
189
+ text.primary #212121 #E0E0E0 Headings, body
190
+ text.secondary #757575 #9E9E9E Captions, hints
191
+ text.disabled #BDBDBD #616161 Disabled labels
192
+ accent.primary #1565C0 #64B5F6 Links, CTAs
193
+ status.error #D32F2F #EF5350 Error states
194
+ status.error.bg #FFEBEE #3D1C1C Error containers
195
+ status.warning #E65100 #FFB74D Warnings
196
+ status.success #2E7D32 #66BB6A Success
197
+ border.default #E0E0E0 #383838 Dividers
198
+ shadow.default rgba(0,0,0,.1) rgba(0,0,0,.4) Elevation shadow
199
+ overlay.scrim rgba(0,0,0,.5) rgba(0,0,0,.7) Modal backdrop
200
+ ```
201
+
202
+ ### 3.2 Component Appearance Audit
203
+
204
+ Systematic review of every component in both modes:
205
+
206
+ | Component | Light OK | Dark OK | Issues Found |
207
+ |------------------|:--------:|:-------:|------------------------|
208
+ | Button (ghost) | Yes | No | Border invisible |
209
+ | Dropdown | Yes | No | Shadow not visible |
210
+ | Modal | Yes | No | Scrim too transparent |
211
+ | Avatar | Yes | No | Ring lost on dark bg |
212
+ | Chart | Yes | No | Gridlines invisible |
213
+
214
+ ### 3.3 Theme Preview
215
+
216
+ Side-by-side captures of key screens (dashboard, forms, empty states) in all themes,
217
+ with contrast ratio annotations on key text/background pairs.
218
+
219
+ ---
220
+
221
+ ## 4. Tools & Techniques
222
+
223
+ ### 4.1 Figma Variables for Themes
224
+
225
+ 1. Create a color variable collection with "Light" and "Dark" modes.
226
+ 2. Define primitive variables (grays, brand, status) with identical values across modes.
227
+ 3. Define semantic variables that reference different primitives per mode.
228
+ 4. Apply semantic variables to components. Switch modes on frames to preview.
229
+
230
+ **Figma-to-code pipeline:**
231
+
232
+ Figma variables -> **Tokens Studio** plugin (export as W3C JSON) -> **Style Dictionary**
233
+ (transform into CSS custom properties, Swift asset catalogs, Kotlin resources).
234
+
235
+ ### 4.2 Design Token Tools
236
+
237
+ | Tool | Role | Key Feature |
238
+ |-------------------|-----------------------------------|----------------------------|
239
+ | Tokens Studio | Figma plugin for token management | Multi-theme modes, Git sync|
240
+ | Style Dictionary | Token transformation engine | Platform-agnostic output |
241
+ | Cobalt UI | W3C format token compiler | Native W3C spec support |
242
+ | Specify | Design data platform | API-driven token delivery |
243
+
244
+ ### 4.3 CSS Architecture
245
+
246
+ **Recommended file structure:**
247
+
248
+ ```
249
+ styles/
250
+ tokens/primitives.css /* raw color values */
251
+ tokens/semantic-light.css /* semantic mappings for light */
252
+ tokens/semantic-dark.css /* semantic mappings for dark */
253
+ themes/theme-switcher.css /* @media + class-based switching */
254
+ components/button.css /* uses only semantic tokens */
255
+ ```
256
+
257
+ **FOIT prevention -- inline in `<head>` before stylesheets:**
258
+
259
+ ```html
260
+ <script>
261
+ (function() {
262
+ var t = localStorage.getItem('theme');
263
+ if (t === 'dark' || (!t && matchMedia('(prefers-color-scheme:dark)').matches))
264
+ document.documentElement.classList.add('dark');
265
+ })();
266
+ </script>
267
+ ```
268
+
269
+ ### 4.4 Contrast Checking Tools
270
+
271
+ | Tool | Standard | Dark Mode Support |
272
+ |------------------|-----------------|-------------------|
273
+ | Stark (Figma) | WCAG 2.2 + APCA | Yes |
274
+ | Polychrom | APCA native | Yes |
275
+ | axe DevTools | WCAG 2.2 | Partial |
276
+ | WebAIM Contrast | WCAG 2.2 | Manual |
277
+
278
+ ---
279
+
280
+ ## 5. Common Failures
281
+
282
+ ### 5.1 Just Inverting Colors
283
+
284
+ Applying `filter: invert(1)` or swapping black/white destroys semantic meaning. Red
285
+ errors become cyan. Brand colors become unrecognizable. Images display as negatives.
286
+ **Fix:** build a proper semantic token layer with intentionally designed values per theme.
287
+
288
+ ### 5.2 Pure Black Backgrounds Causing Halation
289
+
290
+ Using `#000000` as the dark background causes **halation**: bright text appears to glow,
291
+ bleed, or smear. The iris opens wider for bright text on pure black, and astigmatism
292
+ (~33% of the population) worsens the effect. OLED screens also exhibit "black smearing"
293
+ during scrolling.
294
+
295
+ **Fix:** use `#121212` to `#1E1E1E` for surfaces. Use `#E0E0E0` for body text, not
296
+ pure `#FFFFFF`. Reserve pure white for headings only.
297
+
298
+ ### 5.3 Insufficient Contrast in Dark Mode
299
+
300
+ Muted grays on dark gray frequently fail WCAG AA. Colored text (orange, green, red)
301
+ that passes in light mode often fails in dark mode on dark surfaces.
302
+
303
+ **Fix:** audit every text/background combination independently. Use APCA as a
304
+ supplementary check. Never assume a light-mode pair works in dark mode.
305
+
306
+ ### 5.4 Images and Illustrations Not Adapting
307
+
308
+ White-background PNGs on dark surfaces create jarring bright rectangles. Logos with
309
+ dark text on transparent backgrounds become invisible.
310
+
311
+ **Fix:** provide light-on-dark SVG variants. Use `<picture>` with `prefers-color-scheme`
312
+ media. For photos, apply `filter: brightness(0.85)` in dark mode. Use CSS custom
313
+ properties in SVG fills for illustrations.
314
+
315
+ ### 5.5 Shadows Not Working in Dark Mode
316
+
317
+ Dark shadows on dark backgrounds are invisible. Elevation hierarchy collapses.
318
+
319
+ **Fix:** use tonal elevation (lighter surface tints) as the primary indicator. If
320
+ shadows are needed, increase opacity and add subtle borders:
321
+
322
+ ```css
323
+ .dark .card {
324
+ box-shadow: 0 2px 12px rgba(0, 0, 0, 0.5);
325
+ border: 1px solid rgba(255, 255, 255, 0.06);
326
+ }
327
+ ```
328
+
329
+ ### 5.6 Not Testing Both Modes Equally
330
+
331
+ Designing primarily in light mode and retroactively creating dark mode leads to
332
+ invisible borders, lost focus rings, and broken illustrations.
333
+
334
+ **Fix:** design simultaneously with Figma variable modes. Include dark mode test cases
335
+ in every QA pass. Run visual regression tests against both themes.
336
+
337
+ ### 5.7 Saturated Colors Vibrating
338
+
339
+ Same vivid accents in dark mode "vibrate" against dark backgrounds, causing discomfort.
340
+
341
+ **Fix:** desaturate and lighten accents for dark mode. M3 recommends HCT tones 70-90
342
+ for dark theme accents vs. 30-50 for light.
343
+
344
+ ---
345
+
346
+ ## 6. Integration with Development
347
+
348
+ ### 6.1 Web: CSS `prefers-color-scheme`
349
+
350
+ ```css
351
+ :root { color-scheme: light dark; --bg: #FFF; --text: #212121; }
352
+
353
+ @media (prefers-color-scheme: dark) {
354
+ :root:not(.light) { --bg: #121212; --text: #E0E0E0; }
355
+ }
356
+ :root.dark { --bg: #121212; --text: #E0E0E0; }
357
+ :root.light { --bg: #FFFFFF; --text: #212121; }
358
+ ```
359
+
360
+ ### 6.2 Tailwind CSS `dark:` Variant
361
+
362
+ ```css
363
+ /* Tailwind v4+ */
364
+ @import "tailwindcss";
365
+ @custom-variant dark (&:where(.dark, .dark *));
366
+ ```
367
+
368
+ ```html
369
+ <div class="bg-white dark:bg-gray-900 text-gray-900 dark:text-gray-100">
370
+ <p class="text-gray-600 dark:text-gray-400">Body text</p>
371
+ </div>
372
+ ```
373
+
374
+ ### 6.3 iOS System Theme API
375
+
376
+ ```swift
377
+ // UIKit -- adaptive color
378
+ let color = UIColor { traits in
379
+ traits.userInterfaceStyle == .dark
380
+ ? UIColor(red: 0.88, green: 0.88, blue: 0.88, alpha: 1)
381
+ : UIColor(red: 0.13, green: 0.13, blue: 0.13, alpha: 1)
382
+ }
383
+
384
+ // SwiftUI
385
+ @Environment(\.colorScheme) var colorScheme
386
+ ```
387
+
388
+ Use Asset Catalogs with "Any Appearance" and "Dark" variants for automatic resolution.
389
+
390
+ ### 6.4 Android System Theme API
391
+
392
+ ```kotlin
393
+ // Follow system (default in Android 10+)
394
+ AppCompatDelegate.setDefaultNightMode(MODE_NIGHT_FOLLOW_SYSTEM)
395
+
396
+ // Resource qualifiers: values-night/colors.xml for dark overrides
397
+ ```
398
+
399
+ `setDefaultNightMode` is NOT persisted across process restarts. Restore from
400
+ SharedPreferences/DataStore in `Application.onCreate()`.
401
+
402
+ **Jetpack Compose:**
403
+
404
+ ```kotlin
405
+ MaterialTheme(
406
+ colorScheme = if (isSystemInDarkTheme()) darkColorScheme() else lightColorScheme()
407
+ ) { /* content */ }
408
+ ```
409
+
410
+ ### 6.5 Toggle Implementation
411
+
412
+ **Three-state toggle (recommended):** Light | Dark | System (default).
413
+
414
+ **Persistence:**
415
+
416
+ | Platform | Storage | Key |
417
+ |----------|--------------------------|--------------|
418
+ | Web | localStorage (or cookie) | `theme` |
419
+ | iOS | UserDefaults | `appTheme` |
420
+ | Android | DataStore / SharedPrefs | `app_theme` |
421
+ | Flutter | SharedPreferences | `theme_mode` |
422
+
423
+ **System preference change listener (web):**
424
+
425
+ ```js
426
+ window.matchMedia('(prefers-color-scheme: dark)')
427
+ .addEventListener('change', (e) => {
428
+ if (localStorage.getItem('theme') === 'system')
429
+ document.documentElement.classList.toggle('dark', e.matches);
430
+ });
431
+ ```
432
+
433
+ ### 6.6 Theme Transition
434
+
435
+ ```css
436
+ body, body * {
437
+ transition: background-color 200ms ease, color 200ms ease,
438
+ border-color 200ms ease;
439
+ }
440
+ body.no-transition, body.no-transition * { transition: none !important; }
441
+ ```
442
+
443
+ Add `no-transition` on initial load; remove after first paint. Never use
444
+ `transition: all` -- it causes layout thrashing.
445
+
446
+ ---
447
+
448
+ ## 7. Specific Color Recommendations
449
+
450
+ ### 7.1 Dark Mode Surface Palette
451
+
452
+ Do NOT use pure black (#000000). Use this range:
453
+
454
+ | Role | Hex | Usage |
455
+ |---------------------|-----------|-------------------------|
456
+ | Background (base) | `#121212` | Page/app background |
457
+ | Surface (level 1) | `#1E1E1E` | Cards, containers |
458
+ | Surface (level 2) | `#252525` | Elevated cards, drawers |
459
+ | Surface (level 3) | `#2C2C2C` | Dialogs, modals |
460
+ | Surface (level 4) | `#333333` | Tooltips, popovers |
461
+ | Surface (level 5) | `#383838` | Highest elevation |
462
+
463
+ ### 7.2 Dark Mode Text Palette
464
+
465
+ | Role | Hex | Usage |
466
+ |----------------|-----------|--------------------------|
467
+ | High emphasis | `#FFFFFF` | Titles, critical labels |
468
+ | Primary | `#E0E0E0` | Headings, body text |
469
+ | Secondary | `#9E9E9E` | Captions, metadata |
470
+ | Placeholder | `#757575` | Input placeholders |
471
+ | Disabled | `#616161` | Disabled labels |
472
+
473
+ ### 7.3 Dark Mode Accent Adjustments
474
+
475
+ | Purpose | Light Mode | Dark Mode | Adjustment |
476
+ |-----------|------------|------------|-----------------------|
477
+ | Primary | `#1565C0` | `#64B5F6` | Lighter, desaturated |
478
+ | Error | `#D32F2F` | `#EF5350` | Lighter |
479
+ | Warning | `#E65100` | `#FFB74D` | Significantly lighter |
480
+ | Success | `#2E7D32` | `#66BB6A` | Lighter |
481
+ | Link | `#1565C0` | `#82B1FF` | Lighter, desaturated |
482
+
483
+ ### 7.4 Borders and Dividers
484
+
485
+ | Role | Light Mode | Dark Mode |
486
+ |----------------|---------------------|--------------------------|
487
+ | Default border | `rgba(0,0,0,0.12)` | `rgba(255,255,255,0.12)` |
488
+ | Strong border | `rgba(0,0,0,0.24)` | `rgba(255,255,255,0.24)` |
489
+ | Thin divider | `rgba(0,0,0,0.08)` | `rgba(255,255,255,0.08)` |
490
+
491
+ ---
492
+
493
+ ## 8. Quick Reference Checklist
494
+
495
+ ### Design Phase
496
+
497
+ ```
498
+ [ ] Token architecture: primitive -> semantic -> component
499
+ [ ] Light AND dark values for every semantic token
500
+ [ ] Surfaces use #121212-#1E1E1E, NOT pure #000000
501
+ [ ] Body text uses #E0E0E0, not pure #FFFFFF
502
+ [ ] Accents desaturated and lightened for dark mode
503
+ [ ] Status colors adjusted for dark backgrounds
504
+ [ ] Elevation via tonal surface changes, not shadows alone
505
+ [ ] Borders use semi-transparent white, not gray hex values
506
+ [ ] Every component reviewed in BOTH modes simultaneously
507
+ [ ] Illustrations/diagrams have theme-adaptive variants
508
+ [ ] Logo provided in light-on-dark variant
509
+ [ ] Focus indicators visible in both modes
510
+ [ ] Disabled states distinguishable in both modes
511
+ ```
512
+
513
+ ### Contrast Verification
514
+
515
+ ```
516
+ [ ] Body text meets WCAG AA (4.5:1) in BOTH modes
517
+ [ ] Large text meets WCAG AA (3:1) in BOTH modes
518
+ [ ] UI components meet 3:1 in BOTH modes
519
+ [ ] APCA Lc checked as supplementary quality gate
520
+ [ ] Placeholder text contrast verified (often fails dark mode)
521
+ [ ] Chart data series distinguishable in both modes
522
+ ```
523
+
524
+ ### Development
525
+
526
+ ```
527
+ [ ] CSS custom properties with semantic layer
528
+ [ ] prefers-color-scheme as foundation
529
+ [ ] Class-based override for manual toggle
530
+ [ ] color-scheme: light dark on :root
531
+ [ ] Three-state toggle (Light / Dark / System)
532
+ [ ] Preference persisted across sessions
533
+ [ ] FOIT prevention script in <head>
534
+ [ ] System preference change listener registered
535
+ [ ] Images adapt (brightness, srcset, or CSS bg)
536
+ [ ] SVGs use currentColor or custom properties
537
+ [ ] Meta theme-color updates on switch
538
+ ```
539
+
540
+ ### Testing
541
+
542
+ ```
543
+ [ ] Every flow tested in light AND dark mode
544
+ [ ] System preference change triggers correct theme
545
+ [ ] Manual toggle overrides system preference
546
+ [ ] No FOIT on page load
547
+ [ ] Visual regression tests in both themes
548
+ [ ] Accessibility audit in both modes
549
+ [ ] OLED device tested for smearing/halation
550
+ ```
551
+
552
+ ### Platform-Specific
553
+
554
+ ```
555
+ iOS: [ ] Semantic UIColors [ ] Asset catalog Dark variants [ ] Increase Contrast tested
556
+ Android: [ ] values-night/ qualifiers [ ] MODE_NIGHT_FOLLOW_SYSTEM default [ ] Preference in onCreate
557
+ Web: [ ] prefers-color-scheme [ ] localStorage persistence [ ] SSR cookie for server rendering
558
+ ```
559
+
560
+ ---
561
+
562
+ ## 9. References
563
+
564
+ - [Material Design 3 -- Dark Theme](https://m3.material.io/blog/dark-theme-design-tutorial-video)
565
+ - [Material Design 3 -- Tone-based Surfaces](https://m3.material.io/blog/tone-based-surface-color-m3/)
566
+ - [Material Design 3 -- Color Roles](https://m3.material.io/styles/color/roles)
567
+ - [Apple HIG -- Dark Mode](https://developer.apple.com/design/human-interface-guidelines/dark-mode)
568
+ - [Apple HIG -- Color](https://developer.apple.com/design/human-interface-guidelines/color)
569
+ - [Apple -- Supporting Dark Mode](https://developer.apple.com/documentation/uikit/supporting-dark-mode-in-your-interface)
570
+ - [APCA Contrast Algorithm](https://git.apcacontrast.com/documentation/APCA_in_a_Nutshell.html)
571
+ - [W3C Design Tokens Format 2025.10](https://www.designtokens.org/tr/drafts/format/)
572
+ - [MDN -- prefers-color-scheme](https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/At-rules/@media/prefers-color-scheme)
573
+ - [Tailwind CSS -- Dark Mode](https://tailwindcss.com/docs/dark-mode)
574
+ - [Android -- Implement Dark Theme](https://developer.android.com/develop/ui/views/theming/darktheme)
575
+ - [Style Dictionary](https://styledictionary.com/)
576
+ - [Tokens Studio](https://docs.tokens.studio/)
577
+ - [Figma -- Variables Guide](https://help.figma.com/hc/en-us/articles/15339657135383-Guide-to-variables-in-Figma)