@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,691 @@
1
+ # CSS & Layout Anti-Patterns
2
+
3
+ > CSS anti-patterns are styling decisions that appear to solve a visual problem but create compounding maintenance debt, cross-browser regressions, and accessibility failures. They rarely trigger errors -- the page renders, the feature ships -- but they erode the UI layer until every small design change becomes a high-risk deployment.
4
+
5
+ > **Domain:** Frontend
6
+ > **Anti-patterns covered:** 20
7
+ > **Highest severity:** Critical
8
+
9
+ ## Anti-Patterns
10
+
11
+ ### AP-01: !important Overuse
12
+
13
+ **Also known as:** Specificity Sledgehammer, Nuclear Option
14
+ **Frequency:** Very Common | **Severity:** Critical | **Detection difficulty:** Easy
15
+
16
+ **What it looks like:**
17
+
18
+ ```css
19
+ .sidebar .nav .link { color: blue !important; }
20
+ .sidebar .nav .link.active { color: red !important; } /* override the override */
21
+ body .sidebar .nav .link.active.highlighted {
22
+ color: green !important; /* override the override's override */
23
+ }
24
+ ```
25
+
26
+ **Why developers do it:** A style is not applying due to higher specificity elsewhere. `!important` is the fastest way to "win." Third-party CSS (Bootstrap, Material UI) with high specificity makes it feel like the only escape.
27
+
28
+ **What goes wrong:** Each `!important` raises the floor for every future override, creating an arms race. The cascade -- CSS's core mechanism -- is effectively disabled. NexterWP documented that heavy `!important` usage correlated with 3-4x longer debugging sessions.
29
+
30
+ **The fix:**
31
+
32
+ ```css
33
+ /* BEFORE */
34
+ .sidebar .nav .link { color: blue !important; }
35
+
36
+ /* AFTER: cascade layers */
37
+ @layer base, components, overrides;
38
+ @layer components { .nav-link { color: blue; } }
39
+ @layer overrides { .nav-link.active { color: red; } }
40
+ ```
41
+
42
+ **Detection rule:** Stylelint `declaration-no-important`. Flag files with more than 3 `!important` declarations.
43
+
44
+ ---
45
+
46
+ ### AP-02: Specificity Wars
47
+
48
+ **Also known as:** Specificity Creep, Selector Arms Race
49
+ **Frequency:** Very Common | **Severity:** Critical | **Detection difficulty:** Moderate
50
+
51
+ **What it looks like:**
52
+
53
+ ```css
54
+ .card .header .title { font-size: 18px; }
55
+ .page .content .card .header .title { font-size: 16px; }
56
+ div.page div.content div.card div.header h2.title { font-size: 20px; }
57
+ #main-page .card .header .title { font-size: 14px; }
58
+ ```
59
+
60
+ **Why developers do it:** Each developer sees their style "not working" and responds by outweighing the existing selector. Without an agreed specificity strategy, the stylesheet becomes a competition.
61
+
62
+ **What goes wrong:** Specificity is a one-way ratchet: it only goes up. Eventually the only options are `!important` or inline styles. Refactoring is perilous because removing a high-specificity selector lets other rules "win" unexpectedly. Rendering performance degrades as the browser evaluates increasingly complex selectors.
63
+
64
+ **The fix:**
65
+
66
+ ```css
67
+ /* BEFORE */ .page .content .card .header .title { font-size: 16px; }
68
+ /* AFTER: flat, single-class selectors */
69
+ @layer components {
70
+ .card-title { font-size: 1rem; }
71
+ .card-title--large { font-size: 1.25rem; }
72
+ }
73
+ ```
74
+
75
+ **Detection rule:** Stylelint `selector-max-specificity: "0,3,0"`. Flag selectors with more than 3 combinators.
76
+
77
+ ---
78
+
79
+ ### AP-03: IDs for Styling
80
+
81
+ **Also known as:** ID Selector Abuse, Overpowered Selectors
82
+ **Frequency:** Common | **Severity:** High | **Detection difficulty:** Easy
83
+
84
+ **What it looks like:**
85
+
86
+ ```css
87
+ #header { background: navy; }
88
+ #header #nav { display: flex; }
89
+ #sidebar { width: 300px; }
90
+ ```
91
+
92
+ **Why developers do it:** IDs are already in the HTML for JS hooks or anchor links. Using them in CSS feels natural.
93
+
94
+ **What goes wrong:** One ID selector (`[1,0,0]`) outweighs 10 class selectors (`[0,10,0]`). Component reuse is impossible -- IDs are unique per page. Wikimedia adopted `selector-max-id: 0` after ID-based styles blocked theming across their skin system.
95
+
96
+ **The fix:**
97
+
98
+ ```css
99
+ /* BEFORE */ #header { background: navy; }
100
+ /* AFTER */ .site-header { background: navy; }
101
+ ```
102
+
103
+ **Detection rule:** Stylelint `selector-max-id: 0`.
104
+
105
+ ---
106
+
107
+ ### AP-04: Magic Numbers
108
+
109
+ **Also known as:** Unexplained Constants, Brute-forced Positioning
110
+ **Frequency:** Very Common | **Severity:** High | **Detection difficulty:** Moderate
111
+
112
+ **What it looks like:**
113
+
114
+ ```css
115
+ .dropdown { top: 37px; left: -4px; width: 218px; }
116
+ .modal-overlay { padding-top: 147px; margin-left: -3px; }
117
+ ```
118
+
119
+ **Why developers do it:** Pixel-nudging in DevTools produces numbers that "look right." Under time pressure the value gets committed without a comment or calculation. CSS-Tricks described magic numbers as values "used because it just works."
120
+
121
+ **What goes wrong:** Magic numbers are brittle to any context change (different font, browser, viewport). CSS Wizardry identified them as a primary indicator of "brute-forced" CSS where the developer forced a layout rather than understanding the box model.
122
+
123
+ **The fix:**
124
+
125
+ ```css
126
+ /* BEFORE */ .dropdown { top: 37px; }
127
+ /* AFTER */ .dropdown { top: calc(var(--header-height) + var(--spacing-xs)); }
128
+ ```
129
+
130
+ **Detection rule:** Flag px values above 10 that are not multiples of 4 or 8 and not in a CSS variable. Flag negative margins.
131
+
132
+ ---
133
+
134
+ ### AP-05: No CSS Custom Properties
135
+
136
+ **Also known as:** Hardcoded Tokens, Copy-paste Values
137
+ **Frequency:** Very Common | **Severity:** High | **Detection difficulty:** Easy
138
+
139
+ **What it looks like:**
140
+
141
+ ```css
142
+ .header { background: #1a73e8; }
143
+ .button { background: #1a73e8; }
144
+ .link { color: #1a73e8; }
145
+ /* Brand color change? Find-and-replace across 47 files. */
146
+ ```
147
+
148
+ **Why developers do it:** Legacy codebases predate custom property support (~2017). Developers copy hex codes from the design file directly. Without a design system, there is no single source of truth.
149
+
150
+ **What goes wrong:** Theming and dark mode become impossible without variables. Penpot's developer guide documented that design tokens eliminated theme-switching bugs caused by scattered raw values. Subtle inconsistencies creep in when developers use slightly different shades.
151
+
152
+ **The fix:**
153
+
154
+ ```css
155
+ /* BEFORE */ .header { background: #1a73e8; }
156
+ /* AFTER */
157
+ :root { --color-primary: #1a73e8; }
158
+ .header { background: var(--color-primary); }
159
+ ```
160
+
161
+ **Detection rule:** Flag any hex/rgb/hsl literal appearing more than twice. Stylelint plugin `stylelint-declaration-strict-value`.
162
+
163
+ ---
164
+
165
+ ### AP-06: Hardcoded Pixel Values for Layout
166
+
167
+ **Also known as:** Pixel Rigidity, Non-responsive Sizing
168
+ **Frequency:** Very Common | **Severity:** High | **Detection difficulty:** Moderate
169
+
170
+ **What it looks like:**
171
+
172
+ ```css
173
+ .container { width: 960px; }
174
+ .heading { font-size: 24px; line-height: 32px; }
175
+ ```
176
+
177
+ **Why developers do it:** Pixels map 1:1 to the design file. Relative units (`rem`, `em`, `%`) require understanding cascading font sizes, adding cognitive load.
178
+
179
+ **What goes wrong:** MDN warns that fixed heights cause content overflow. Users who increase browser font size get no benefit because `px` does not scale. WCAG 1.4.4 requires text resizable to 200% without content loss, which pixel-locked layouts break.
180
+
181
+ **The fix:**
182
+
183
+ ```css
184
+ /* BEFORE */ .container { width: 960px; }
185
+ /* AFTER */ .container { width: min(90vw, 60rem); }
186
+ /* BEFORE */ .heading { font-size: 24px; }
187
+ /* AFTER */ .heading { font-size: 1.5rem; }
188
+ ```
189
+
190
+ **Detection rule:** Flag `font-size` using `px`. Flag `width`/`max-width` on layout containers using `px` values over 100.
191
+
192
+ ---
193
+
194
+ ### AP-07: Z-index Wars
195
+
196
+ **Also known as:** Z-index Inflation, Stacking Context Chaos
197
+ **Frequency:** Common | **Severity:** High | **Detection difficulty:** Moderate
198
+
199
+ **What it looks like:**
200
+
201
+ ```css
202
+ .dropdown { z-index: 100; }
203
+ .modal { z-index: 9999; }
204
+ .toast { z-index: 99999; }
205
+ .tooltip { z-index: 999999; }
206
+ ```
207
+
208
+ **Why developers do it:** A new element appears behind something else; the developer picks a higher number. Josh Comeau documented how `transform` and `opacity` create new stacking contexts, making z-index comparisons meaningless across contexts.
209
+
210
+ **What goes wrong:** Smashing Magazine found that teams without a z-index scale averaged 15+ distinct values, with dropdowns above modals, tooltips behind overlays, and accessibility-critical focus traps hidden.
211
+
212
+ **The fix:**
213
+
214
+ ```css
215
+ /* BEFORE */ .modal { z-index: 9999; }
216
+ /* AFTER */
217
+ :root { --z-dropdown: 10; --z-overlay: 30; --z-modal: 40; --z-toast: 50; }
218
+ .modal { z-index: var(--z-modal); }
219
+ ```
220
+
221
+ **Detection rule:** Flag any raw `z-index` value greater than 100. Require z-index values to reference CSS variables.
222
+
223
+ ---
224
+
225
+ ### AP-08: Inline Styles
226
+
227
+ **Also known as:** Style Attribute Abuse, HTML-embedded CSS
228
+ **Frequency:** Common | **Severity:** High | **Detection difficulty:** Easy
229
+
230
+ **What it looks like:**
231
+
232
+ ```html
233
+ <div style="margin-top: 20px; padding: 15px; background: #f0f0f0;
234
+ border-radius: 8px; box-shadow: 0 2px 4px rgba(0,0,0,0.1);">
235
+ <h2 style="font-size: 18px; color: #333;">Title</h2>
236
+ </div>
237
+ ```
238
+
239
+ **Why developers do it:** Inline styles always "work" (highest specificity). React's `style={{ }}` encourages the pattern. Quick fixes during QA produce inline patches that never get refactored.
240
+
241
+ **What goes wrong:** Inline styles cannot use media queries, pseudo-classes, or cascade layers. CSP headers may block them. Salesforce's LWC documentation explicitly categorizes them as an anti-pattern preventing style encapsulation.
242
+
243
+ **The fix:**
244
+
245
+ ```css
246
+ /* Move to stylesheet */
247
+ .card {
248
+ margin-block-start: var(--spacing-md);
249
+ padding: var(--spacing-sm);
250
+ background: var(--surface-secondary);
251
+ }
252
+ ```
253
+
254
+ **Detection rule:** Flag `style=` attributes in HTML/JSX. ESLint plugin `react/no-inline-styles`. Allow only for dynamic values (e.g., `style="--progress: 72%"`).
255
+
256
+ ---
257
+
258
+ ### AP-09: Global CSS Without Scoping
259
+
260
+ **Also known as:** Namespace Pollution, Style Leakage
261
+ **Frequency:** Very Common | **Severity:** Critical | **Detection difficulty:** Moderate
262
+
263
+ **What it looks like:**
264
+
265
+ ```css
266
+ h2 { font-size: 24px; margin: 0; }
267
+ a { color: blue; text-decoration: none; }
268
+ input { border: 1px solid #ccc; padding: 8px; }
269
+ .title { font-weight: bold; } /* which title? */
270
+ .container { max-width: 1200px; } /* whose container? */
271
+ ```
272
+
273
+ **Why developers do it:** Global resets are legitimate, but the boundary between "base" and "component" is blurry. Adding styles to the global sheet is the path of least resistance.
274
+
275
+ **What goes wrong:** QuirksBlog's analysis noted global styles are the primary source of "mysterious" regressions where adding a component in one area breaks styling in another.
276
+
277
+ **The fix:**
278
+
279
+ ```css
280
+ /* BEFORE */ .title { font-weight: bold; }
281
+ /* AFTER: @scope */
282
+ @scope (.card) { .title { font-weight: bold; } }
283
+ /* Or CSS Modules: .title compiles to .card_title_x7f2a */
284
+ ```
285
+
286
+ **Detection rule:** Flag bare element selectors outside reset/base layers. Flag short class names (< 5 chars) in global stylesheets.
287
+
288
+ ---
289
+
290
+ ### AP-10: Deeply Nested Selectors
291
+
292
+ **Also known as:** Selector Inception, Over-qualified Selectors
293
+ **Frequency:** Common | **Severity:** High | **Detection difficulty:** Easy
294
+
295
+ **What it looks like:**
296
+
297
+ ```scss
298
+ .page { .main { .content { .article { .body {
299
+ .link { color: blue; &:hover { color: darkblue; } }
300
+ } } } } }
301
+ /* Compiles to: .page .main .content .article .body .link */
302
+ ```
303
+
304
+ **Why developers do it:** SCSS nesting makes it easy to mirror the DOM tree. It feels like scoping. The gitea project filed an issue to ban deeply nested selectors after maintainability collapsed.
305
+
306
+ **What goes wrong:** The compiled selector is fragile to DOM restructuring. Browser selector matching runs right-to-left, so deep nesting forces traversal up the DOM tree per candidate element. Generated CSS is physically larger.
307
+
308
+ **The fix:**
309
+
310
+ ```css
311
+ /* BEFORE */ .page .main .content .article .body .link { color: blue; }
312
+ /* AFTER */ .article-link { color: blue; }
313
+ ```
314
+
315
+ **Detection rule:** Stylelint `selector-max-compound-selectors: 3`. Enforce max SCSS nesting depth of 3.
316
+
317
+ ---
318
+
319
+ ### AP-11: No Spacing System
320
+
321
+ **Also known as:** Ad-hoc Spacing, Margin Roulette
322
+ **Frequency:** Very Common | **Severity:** High | **Detection difficulty:** Moderate
323
+
324
+ **What it looks like:**
325
+
326
+ ```css
327
+ .card { padding: 17px; margin-bottom: 23px; }
328
+ .sidebar { padding: 12px 19px; }
329
+ .header { margin: 11px 0 14px; }
330
+ ```
331
+
332
+ **Why developers do it:** Each developer eyeballs spacing to match a design comp, producing values that differ by 1-3px.
333
+
334
+ **What goes wrong:** USWDS standardized on 8px spacing because ad-hoc spacing produced visual inconsistency across 200+ government websites. The GC Design System documented that spacing tokens eliminated design-to-code discrepancies.
335
+
336
+ **The fix:**
337
+
338
+ ```css
339
+ /* BEFORE */ .card { padding: 17px; margin-bottom: 23px; }
340
+ /* AFTER */
341
+ :root { --sp-sm: 0.5rem; --sp-md: 1rem; --sp-lg: 1.5rem; --sp-xl: 2rem; }
342
+ .card { padding: var(--sp-md); margin-block-end: var(--sp-lg); }
343
+ ```
344
+
345
+ **Detection rule:** Flag `padding`/`margin` values not referencing a CSS variable or not multiples of 4.
346
+
347
+ ---
348
+
349
+ ### AP-12: Fixed Heights on Content Containers
350
+
351
+ **Also known as:** Height Lock, Content Overflow Trap
352
+ **Frequency:** Common | **Severity:** High | **Detection difficulty:** Moderate
353
+
354
+ **What it looks like:**
355
+
356
+ ```css
357
+ .card-body { height: 200px; }
358
+ .nav-item { height: 44px; overflow: hidden; } /* hides the problem */
359
+ ```
360
+
361
+ **Why developers do it:** The design comp shows a card at 200px tall. Fixed heights make grids look uniform. Developers do not test with longer text or different languages.
362
+
363
+ **What goes wrong:** MDN warns: "A set height can cause content to overflow." German translations average 30% longer than English. `overflow: hidden` merely hides clipped content. WCAG requires text to remain visible at 200% zoom.
364
+
365
+ **The fix:**
366
+
367
+ ```css
368
+ /* BEFORE */ .card-body { height: 200px; }
369
+ /* AFTER */ .card-body { min-height: 12.5rem; }
370
+ ```
371
+
372
+ **Detection rule:** Flag `height` on text-containing elements. Flag `height` paired with `overflow: hidden`.
373
+
374
+ ---
375
+
376
+ ### AP-13: No Logical Properties
377
+
378
+ **Also known as:** Physical-direction Lock, LTR-only CSS
379
+ **Frequency:** Common | **Severity:** Medium | **Detection difficulty:** Easy
380
+
381
+ **What it looks like:**
382
+
383
+ ```css
384
+ .sidebar { margin-left: 20px; padding-right: 16px; border-left: 2px solid #ccc; text-align: left; }
385
+ ```
386
+
387
+ **Why developers do it:** Physical properties have been the default for 25+ years. If the team only targets LTR languages, the problem is invisible.
388
+
389
+ **What goes wrong:** Smashing Magazine documented that teams adding RTL support faced weeks of manually replacing every `left` with `right`. Logical properties (`inline-start`/`inline-end`) flip automatically based on `dir` and `writing-mode`.
390
+
391
+ **The fix:**
392
+
393
+ ```css
394
+ /* BEFORE */ .sidebar { margin-left: 20px; text-align: left; }
395
+ /* AFTER */ .sidebar { margin-inline-start: 1.25rem; text-align: start; }
396
+ ```
397
+
398
+ **Detection rule:** Stylelint `liberty/use-logical-spec`. Flag `margin-left/right`, `padding-left/right`, `text-align: left/right`.
399
+
400
+ ---
401
+
402
+ ### AP-14: Duplicated Style Blocks
403
+
404
+ **Also known as:** Copy-paste CSS, Style Clones
405
+ **Frequency:** Very Common | **Severity:** Medium | **Detection difficulty:** Moderate
406
+
407
+ **What it looks like:**
408
+
409
+ ```css
410
+ .card { background: white; border-radius: 8px; box-shadow: 0 2px 8px rgba(0,0,0,0.1); padding: 16px; }
411
+ .modal { background: white; border-radius: 8px; box-shadow: 0 2px 8px rgba(0,0,0,0.1); padding: 16px; }
412
+ .dropdown { background: white; border-radius: 8px; box-shadow: 0 2px 8px rgba(0,0,0,0.1); padding: 16px; }
413
+ ```
414
+
415
+ **Why developers do it:** Each component was built independently. Without a shared utility or mixin, duplication is faster.
416
+
417
+ **What goes wrong:** Updating the shadow requires finding every copy. Missed copies drift and produce visual inconsistency. The CSS bundle inflates with redundant bytes.
418
+
419
+ **The fix:**
420
+
421
+ ```css
422
+ /* BEFORE: 3 identical blocks */
423
+ /* AFTER: shared composition */
424
+ .surface-elevated {
425
+ background: var(--surface-primary); border-radius: var(--radius-md);
426
+ box-shadow: var(--shadow-sm); padding: var(--spacing-md);
427
+ }
428
+ /* HTML: <div class="card surface-elevated"> */
429
+ ```
430
+
431
+ **Detection rule:** Flag rule blocks with 3+ identical property-value pairs appearing in 2+ selectors. Tool: `csscss`.
432
+
433
+ ---
434
+
435
+ ### AP-15: Media Query Chaos
436
+
437
+ **Also known as:** Breakpoint Sprawl, Query Spaghetti
438
+ **Frequency:** Common | **Severity:** High | **Detection difficulty:** Moderate
439
+
440
+ **What it looks like:**
441
+
442
+ ```css
443
+ /* header.css */ @media (max-width: 768px) { .header { ... } }
444
+ /* nav.css */ @media (max-width: 767px) { .nav { ... } } /* off-by-1! */
445
+ /* card.css */ @media (max-width: 800px) { .card { ... } } /* different bp */
446
+ /* sidebar.css*/ @media (max-width: 375px) { ... } /* device-specific */
447
+ ```
448
+
449
+ **Why developers do it:** Each developer picks breakpoints based on when "it looks broken." `768px` vs `767px` seems equivalent but creates a 1px dead zone.
450
+
451
+ **What goes wrong:** Inconsistent breakpoints create gaps where no query applies, causing layout glitches. Debugging requires mentally combining queries from dozens of files. Device-specific breakpoints chase individual devices rather than content needs.
452
+
453
+ **The fix:**
454
+
455
+ ```css
456
+ /* BEFORE: scattered breakpoints */
457
+ /* AFTER: centralized, mobile-first */
458
+ .card { flex-direction: column; }
459
+ @media (min-width: 48rem) { .card { flex-direction: row; } }
460
+ ```
461
+
462
+ **Detection rule:** Extract all breakpoint values; flag more than 5 distinct values. Flag `max-width`/`min-width` pairs differing by 1px.
463
+
464
+ ---
465
+
466
+ ### AP-16: JavaScript for CSS-solvable Layout
467
+
468
+ **Also known as:** JS-driven Layout, Script-dependent Styling
469
+ **Frequency:** Occasional | **Severity:** High | **Detection difficulty:** Moderate
470
+
471
+ **What it looks like:**
472
+
473
+ ```javascript
474
+ // Equalizing card heights with JS
475
+ const cards = document.querySelectorAll('.card');
476
+ let max = 0;
477
+ cards.forEach(c => { max = Math.max(max, c.offsetHeight); });
478
+ cards.forEach(c => { c.style.height = max + 'px'; });
479
+
480
+ // Viewport detection
481
+ window.addEventListener('resize', () => {
482
+ sidebar.classList.toggle('collapsed', window.innerWidth < 768);
483
+ });
484
+ ```
485
+
486
+ **Why developers do it:** Before Grid/Flexbox/container queries, JS was the only way. Developers trained pre-2015 still reach for it.
487
+
488
+ **What goes wrong:** JS layout runs after paint, causing visible layout shifts (CLS). Resize listeners fire dozens of times per second without throttling. Layout breaks entirely when JS fails. CSS solutions are declarative and hardware-accelerated.
489
+
490
+ **The fix:**
491
+
492
+ ```css
493
+ /* BEFORE: JS equal heights */
494
+ /* AFTER: CSS Grid (equal heights by default) */
495
+ .card-grid {
496
+ display: grid;
497
+ grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
498
+ }
499
+ ```
500
+
501
+ **Detection rule:** Flag JS that reads `offsetHeight`/`offsetWidth` and writes `style.height`/`style.width` in the same function. Flag `resize` listeners toggling classes.
502
+
503
+ ---
504
+
505
+ ### AP-17: Text Overflow Ignored
506
+
507
+ **Also known as:** Clipped Content, Invisible Text
508
+ **Frequency:** Common | **Severity:** Medium | **Detection difficulty:** Hard
509
+
510
+ **What it looks like:**
511
+
512
+ ```css
513
+ .username { width: 120px; /* no overflow handling */ }
514
+ .product-title { /* overflows container on mobile */ }
515
+ ```
516
+
517
+ **Why developers do it:** Testing with "John Doe" and "Product A." Real data includes 60-character names, 200-char URLs, and German compound words.
518
+
519
+ **What goes wrong:** Unhandled overflow causes horizontal scrollbars on mobile, overlapping elements, broken grids, and invisible content. Screen readers announce text that is visually clipped.
520
+
521
+ **The fix:**
522
+
523
+ ```css
524
+ /* BEFORE */ .username { width: 120px; }
525
+ /* AFTER */
526
+ .username {
527
+ max-width: 120px; overflow: hidden;
528
+ text-overflow: ellipsis; white-space: nowrap;
529
+ }
530
+ /* Long unbreakable strings */
531
+ .url-display { overflow-wrap: break-word; word-break: break-all; }
532
+ ```
533
+
534
+ **Detection rule:** Flag elements with fixed `width` but no `overflow` or `text-overflow`. Test with 100+ character strings.
535
+
536
+ ---
537
+
538
+ ### AP-18: Floats for Page Layout
539
+
540
+ **Also known as:** Float-based Grid, Clearfix Architecture
541
+ **Frequency:** Occasional (legacy) | **Severity:** High | **Detection difficulty:** Easy
542
+
543
+ **What it looks like:**
544
+
545
+ ```css
546
+ .col-left { float: left; width: 33.33%; }
547
+ .col-right { float: left; width: 66.66%; }
548
+ .row::after { content: ""; display: table; clear: both; }
549
+ ```
550
+
551
+ **Why developers do it:** Pre-Flexbox (2012) and pre-Grid (2017), floats were the only cross-browser method. Bootstrap 3 (still in use) uses float grids.
552
+
553
+ **What goes wrong:** Floats were designed for text wrapping, not layout. They require clearfix hacks, cannot achieve equal-height columns, and break when content exceeds expected width.
554
+
555
+ **The fix:**
556
+
557
+ ```css
558
+ /* BEFORE: float grid */
559
+ /* AFTER: CSS Grid */
560
+ .row { display: grid; grid-template-columns: 1fr 2fr; gap: var(--spacing-md); }
561
+ ```
562
+
563
+ **Detection rule:** Flag `float: left/right` paired with percentage `width`. Flag `.clearfix` or `clear: both`.
564
+
565
+ ---
566
+
567
+ ### AP-19: Mixing Layout and Component Concerns
568
+
569
+ **Also known as:** Self-placing Components, Margin Ownership Ambiguity
570
+ **Frequency:** Common | **Severity:** Medium | **Detection difficulty:** Hard
571
+
572
+ **What it looks like:**
573
+
574
+ ```css
575
+ .card {
576
+ background: white; border-radius: 8px; padding: 16px; /* component (fine) */
577
+ margin-bottom: 24px; margin-left: 16px; width: 350px; /* layout (problem) */
578
+ }
579
+ ```
580
+
581
+ **Why developers do it:** Adding `margin-bottom` to the card is faster than creating a layout wrapper. The developer does not anticipate reuse in a different context.
582
+
583
+ **What goes wrong:** The component cannot be placed in a different layout without overriding self-imposed margins and width. Spacing becomes unpredictable when margins collapse. The "last child trailing margin" creates edge bugs.
584
+
585
+ **The fix:**
586
+
587
+ ```css
588
+ /* BEFORE: component owns positioning */
589
+ .card { padding: 16px; margin-bottom: 24px; width: 350px; }
590
+ /* AFTER: separate concerns */
591
+ .card { padding: var(--spacing-md); }
592
+ .card-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: var(--spacing-lg); }
593
+ ```
594
+
595
+ **Detection rule:** Flag components declaring `margin` (except `margin: 0`), fixed `width`, or `float`. Only layout containers should define child spacing.
596
+
597
+ ---
598
+
599
+ ### AP-20: Not Testing Across Viewports
600
+
601
+ **Also known as:** Desktop-only Development, Viewport Blindness
602
+ **Frequency:** Very Common | **Severity:** Critical | **Detection difficulty:** Hard
603
+
604
+ **What it looks like:**
605
+
606
+ ```css
607
+ /* Works on 1440px MacBook Pro */
608
+ .dashboard { display: grid; grid-template-columns: 240px 1fr 320px; }
609
+ .hero-text { font-size: 3.5rem; }
610
+ /* Untested: 320px mobile, 768px tablet, 2560px ultra-wide */
611
+ ```
612
+
613
+ **Why developers do it:** Developers work on a single monitor (1280-1440px). DevTools device emulation requires deliberate effort. CI pipelines rarely include visual regression tests.
614
+
615
+ **What goes wrong:** Mobile accounts for 50-60% of web traffic. Untested viewports produce overlapping elements, horizontal scrollbars, unreadable text, and touch targets below WCAG's 44x44px minimum.
616
+
617
+ **The fix:**
618
+
619
+ ```css
620
+ /* BEFORE: single viewport */
621
+ .dashboard { grid-template-columns: 240px 1fr 320px; }
622
+ /* AFTER: responsive */
623
+ .dashboard { grid-template-columns: 1fr; }
624
+ @media (min-width: 48rem) { .dashboard { grid-template-columns: 240px 1fr; } }
625
+ @media (min-width: 75rem) { .dashboard { grid-template-columns: 240px 1fr 320px; } }
626
+ ```
627
+
628
+ **Detection rule:** Run visual regression tests (Playwright, Percy) at 320px, 768px, 1440px in CI. Flag components with grid/flex but zero media queries.
629
+
630
+ ---
631
+
632
+ ## Root Cause Analysis
633
+
634
+ | Root Cause | Contributing Anti-patterns | Systemic Fix |
635
+ |---|---|---|
636
+ | **No design tokens / style guide** | AP-04, AP-05, AP-06, AP-11 (magic numbers, no variables, hardcoded px, no spacing) | Adopt CSS custom properties with spacing/color/typography scales |
637
+ | **Specificity ignorance** | AP-01, AP-02, AP-03, AP-10 (!important, wars, IDs, nesting) | Teach cascade layers (`@layer`), enforce flat selectors, adopt BEM or CSS Modules |
638
+ | **Legacy CSS knowledge** | AP-18, AP-06, AP-13, AP-16 (floats, px, no logical props, JS layout) | Team training on modern CSS: Grid, Flexbox, `clamp()`, container queries |
639
+ | **Component isolation failure** | AP-09, AP-19, AP-14 (global CSS, mixed concerns, duplicated styles) | CSS Modules, `@scope`, or strict BEM naming with lint enforcement |
640
+ | **Single-viewport development** | AP-20, AP-06, AP-12 (no testing, hardcoded px, fixed heights) | Visual regression testing in CI across 3+ viewports; mobile-first workflow |
641
+ | **No linting or CI enforcement** | All anti-patterns | Stylelint with project-specific rules; block merges on violations |
642
+ | **Time pressure / quick fixes** | AP-01, AP-08, AP-04, AP-14 (!important, inline, magic numbers, duplication) | CSS refactoring budget per sprint; CSS-specific review checklist |
643
+ | **Copy-paste from StackOverflow** | AP-04, AP-07, AP-18 (magic numbers, z-index, floats) | Code review requirement for CSS; up-to-date internal style guide |
644
+ | **Missing i18n planning** | AP-13, AP-12, AP-17 (no logical props, fixed heights, text overflow) | Logical properties by default; test with long/RTL strings from sprint 1 |
645
+ | **No CSS architecture strategy** | AP-02, AP-09, AP-15 (specificity, global CSS, media query chaos) | Adopt ITCSS, Cube CSS, or cascade layers; document in ADR |
646
+
647
+ ## Self-Check Questions
648
+
649
+ 1. Search your codebase for `!important`. Is the count under 10? Can you justify each instance?
650
+ 2. What is the highest specificity selector in your stylesheet? Is it above `[0, 3, 0]`?
651
+ 3. Pick any hex color in your CSS -- does it come from a variable? Pick any spacing value -- does it come from a scale?
652
+ 4. List every `z-index` value. Do they follow a documented scale? Are any over 100?
653
+ 5. Resize your app to 320px wide. Is there a horizontal scrollbar? Are touch targets at least 44px?
654
+ 6. Replace a username with 60 characters and a product title with 200 characters. Does the layout survive?
655
+ 7. Add `dir="rtl"` to `<html>`. Do sidebars and margins mirror correctly?
656
+ 8. Search for `float: left` with percentage widths. Can those layouts be Grid or Flexbox?
657
+ 9. Take your `.card` component and place it in a different layout context. Does it work without overrides?
658
+ 10. Extract every breakpoint value from all media queries. How many distinct values? Do any differ by 1px?
659
+ 11. What is the longest compiled selector? More than 3 levels deep?
660
+ 12. Search for `height:` on text-containing elements. Could any be `min-height` instead?
661
+ 13. How many `style=` attributes exist in your HTML/JSX? Are any static styles that belong in a stylesheet?
662
+ 14. Does your JS read element dimensions and set dimensions? Could CSS `clamp()`, Grid, or container queries replace it?
663
+ 15. How many bare element selectors (`h1`, `p`, `a`) exist outside your CSS reset?
664
+
665
+ ## Code Smell Quick Reference
666
+
667
+ | Smell | AKA | Severity | Frequency | Key Signal | First Action |
668
+ |---|---|---|---|---|---|
669
+ | !important Overuse | Specificity Sledgehammer | Critical | Very Common | `!important` count > 10 | Introduce cascade layers |
670
+ | Specificity Wars | Selector Arms Race | Critical | Very Common | 4+ combinator selectors | Flatten to single-class BEM |
671
+ | IDs for Styling | Overpowered Selectors | High | Common | `#id` in stylesheets | Replace with class selectors |
672
+ | Magic Numbers | Unexplained Constants | High | Very Common | Non-standard px values | Extract to CSS variables |
673
+ | No CSS Variables | Hardcoded Tokens | High | Very Common | Same hex in 3+ places | Centralize to `:root` vars |
674
+ | Hardcoded Pixels | Pixel Rigidity | High | Very Common | `font-size` in px | Convert to rem/clamp() |
675
+ | Z-index Wars | Z-index Inflation | High | Common | `z-index: 9999` | Create named z-index scale |
676
+ | Inline Styles | Style Attribute Abuse | High | Common | `style=` in HTML/JSX | Move to stylesheet classes |
677
+ | Global CSS | Namespace Pollution | Critical | Very Common | Bare element selectors | Add @scope or CSS Modules |
678
+ | Deep Nesting | Selector Inception | High | Common | 4+ levels SCSS nesting | Flatten with BEM classes |
679
+ | No Spacing System | Margin Roulette | High | Very Common | Inconsistent px margins | Adopt spacing scale tokens |
680
+ | Fixed Heights | Content Overflow Trap | High | Common | `height` on text containers | Change to `min-height` |
681
+ | No Logical Props | LTR-only CSS | Medium | Common | `margin-left`/`right` | Use inline-start/end |
682
+ | Duplicated Styles | Copy-paste CSS | Medium | Very Common | Identical rule blocks | Extract shared class |
683
+ | Media Query Chaos | Breakpoint Sprawl | High | Common | 5+ distinct breakpoints | Centralize breakpoint tokens |
684
+ | JS for Layout | Script-dependent Styling | High | Occasional | JS reading/writing dims | Replace with CSS Grid |
685
+ | Text Overflow Ignored | Clipped Content | Medium | Common | Fixed width, no overflow | Add text-overflow |
686
+ | Floats for Layout | Clearfix Architecture | High | Occasional | `float` + % width | Convert to CSS Grid |
687
+ | Mixed Concerns | Self-placing Components | Medium | Common | Components with margin | Separate layout/component |
688
+ | No Viewport Testing | Desktop-only Dev | Critical | Very Common | Zero visual regression tests | Add CI viewport tests |
689
+
690
+ ---
691
+ *Researched: 2026-03-08 | Sources: [CSS-Tricks: Magic Numbers in CSS](https://css-tricks.com/magic-numbers-in-css/), [CSS Wizardry: Code Smells in CSS](https://csswizardry.com/2012/11/code-smells-in-css/), [Smashing Magazine: Managing Z-Index in Large Projects](https://www.smashingmagazine.com/2021/02/css-z-index-large-projects/), [Josh Comeau: What The Heck z-index](https://www.joshwcomeau.com/css/stacking-contexts/), [Stylelint: declaration-no-important](https://stylelint.io/user-guide/rules/declaration-no-important/), [Stylelint: selector-max-specificity](https://stylelint.io/user-guide/rules/selector-max-specificity/), [Stylelint: selector-max-id](https://stylelint.io/user-guide/rules/selector-max-id/), [MDN: Sizing Items in CSS](https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/Sizing_items_in_CSS), [Smashing Magazine: Deploying CSS Logical Properties](https://www.smashingmagazine.com/2022/12/deploying-css-logical-properties-on-web-apps/), [USWDS: Spacing Units](https://designsystem.digital.gov/design-tokens/spacing-units/), [Penpot: Design Tokens Guide](https://penpot.app/blog/the-developers-guide-to-design-tokens-and-css-variables/), [Salesforce LWC: CSS Anti-Patterns](https://developer.salesforce.com/docs/platform/lwc/guide/create-components-css-antipatterns.html), [NexterWP: Why Avoid !important](https://nexterwp.com/blog/why-you-should-avoid-using-important-in-css/), [DEV: CSS Specificity Guide](https://dev.to/satyam_gupta_0d1ff2152dcc/css-specificity-explained-a-developers-guide-to-winning-style-wars-182n), [Nick Paolini: Modern CSS Toolkit 2026](https://www.nickpaolini.com/blog/modern-css-toolkit-2026), [QuirksBlog: Scope in CSS](https://www.quirksmode.org/blog/archives/2019/03/scope_in_css.html), [web.dev: CSS Nesting](https://web.dev/learn/css/nesting), [gitea: Disallow deeply nested selectors](https://github.com/go-gitea/gitea/issues/30485)*