@schneiderjoseph/devia 0.1.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 (435) hide show
  1. package/AGENTS.md +149 -0
  2. package/CHANGELOG.md +78 -0
  3. package/GOVERNANCE.md +51 -0
  4. package/LEVELS.md +78 -0
  5. package/LICENSE +21 -0
  6. package/MATURITY.md +79 -0
  7. package/MEMORY.md +122 -0
  8. package/MIGRATION.md +62 -0
  9. package/PRINCIPLES.md +110 -0
  10. package/README.md +125 -0
  11. package/REFERENCES.md +30 -0
  12. package/VERSION +5 -0
  13. package/bin/devia.mjs +13 -0
  14. package/checklists/README.md +39 -0
  15. package/checklists/design/accessibility-review.md +11 -0
  16. package/checklists/design/design-to-code-review.md +10 -0
  17. package/checklists/design/responsive-review.md +7 -0
  18. package/checklists/design/ui-review.md +8 -0
  19. package/checklists/design/ux-review.md +10 -0
  20. package/checklists/engineering/accessibility.md +8 -0
  21. package/checklists/engineering/api.md +12 -0
  22. package/checklists/engineering/architecture.md +8 -0
  23. package/checklists/engineering/database.md +11 -0
  24. package/checklists/engineering/devops.md +9 -0
  25. package/checklists/engineering/disaster-recovery.md +9 -0
  26. package/checklists/engineering/frontend.md +9 -0
  27. package/checklists/engineering/incident.md +9 -0
  28. package/checklists/engineering/performance.md +7 -0
  29. package/checklists/engineering/production.md +26 -0
  30. package/checklists/engineering/release.md +17 -0
  31. package/checklists/engineering/security.md +33 -0
  32. package/checklists/engineering/testing.md +8 -0
  33. package/compliance/COVERAGE.md +46 -0
  34. package/compliance/REQUIREMENTS.md +8 -0
  35. package/compliance/TRACEABILITY.md +160 -0
  36. package/compliance/WAIVERS.md +13 -0
  37. package/package.json +74 -0
  38. package/rules/LIFECYCLE.md +16 -0
  39. package/rules/README.md +166 -0
  40. package/rules/accessibility/A11Y-001.md +42 -0
  41. package/rules/accessibility/A11Y-002.md +41 -0
  42. package/rules/accessibility/A11Y-003.md +40 -0
  43. package/rules/accessibility/A11Y-004.md +40 -0
  44. package/rules/accessibility/A11Y-005.md +39 -0
  45. package/rules/accessibility/A11Y-006.md +42 -0
  46. package/rules/accessibility/A11Y-007.md +39 -0
  47. package/rules/accessibility/A11Y-008.md +40 -0
  48. package/rules/accessibility/A11Y-009.md +41 -0
  49. package/rules/accessibility/A11Y-010.md +40 -0
  50. package/rules/accessibility/A11Y-011.md +39 -0
  51. package/rules/accessibility/A11Y-012.md +39 -0
  52. package/rules/agent/AGT-001.md +42 -0
  53. package/rules/agent/AGT-002.md +39 -0
  54. package/rules/agent/AGT-003.md +38 -0
  55. package/rules/agent/AGT-004.md +39 -0
  56. package/rules/agent/AGT-005.md +38 -0
  57. package/rules/agent/AGT-006.md +38 -0
  58. package/rules/agent/AGT-007.md +38 -0
  59. package/rules/agent/AGT-008.md +38 -0
  60. package/rules/agent/AGT-009.md +39 -0
  61. package/rules/agent/AGT-010.md +38 -0
  62. package/rules/agent/AGT-011.md +38 -0
  63. package/rules/ai/AI-001.md +44 -0
  64. package/rules/ai/AI-002.md +39 -0
  65. package/rules/ai/AI-003.md +40 -0
  66. package/rules/ai/AI-004.md +39 -0
  67. package/rules/ai/AI-005.md +38 -0
  68. package/rules/api/API-001.md +39 -0
  69. package/rules/api/API-002.md +39 -0
  70. package/rules/api/API-003.md +39 -0
  71. package/rules/api/API-004.md +38 -0
  72. package/rules/api/API-005.md +39 -0
  73. package/rules/api/API-006.md +40 -0
  74. package/rules/architecture/ARC-001.md +41 -0
  75. package/rules/architecture/ARC-002.md +43 -0
  76. package/rules/architecture/ARC-003.md +43 -0
  77. package/rules/architecture/ARC-004.md +40 -0
  78. package/rules/architecture/ARC-005.md +39 -0
  79. package/rules/architecture/ARC-006.md +39 -0
  80. package/rules/components/CMP-001.md +39 -0
  81. package/rules/components/CMP-002.md +38 -0
  82. package/rules/components/CMP-003.md +39 -0
  83. package/rules/components/CMP-004.md +40 -0
  84. package/rules/components/CMP-005.md +39 -0
  85. package/rules/content/CNT-001.md +39 -0
  86. package/rules/data-display/DATA-001.md +39 -0
  87. package/rules/data-display/DATA-002.md +39 -0
  88. package/rules/data-display/DATA-003.md +40 -0
  89. package/rules/data-display/DATA-004.md +40 -0
  90. package/rules/database/DB-001.md +43 -0
  91. package/rules/database/DB-002.md +38 -0
  92. package/rules/database/DB-003.md +40 -0
  93. package/rules/database/DB-004.md +44 -0
  94. package/rules/database/DB-005.md +39 -0
  95. package/rules/database/DB-006.md +38 -0
  96. package/rules/database/DB-007.md +40 -0
  97. package/rules/database/DB-008.md +40 -0
  98. package/rules/design-system/DS-001.md +39 -0
  99. package/rules/design-system/DS-002.md +40 -0
  100. package/rules/design-system/DS-003.md +38 -0
  101. package/rules/devops/OPS-001.md +43 -0
  102. package/rules/devops/OPS-002.md +39 -0
  103. package/rules/devops/OPS-003.md +38 -0
  104. package/rules/devops/OPS-004.md +40 -0
  105. package/rules/devops/OPS-005.md +43 -0
  106. package/rules/devops/OPS-006.md +38 -0
  107. package/rules/devops/OPS-007.md +40 -0
  108. package/rules/interaction/INT-001.md +39 -0
  109. package/rules/interaction/INT-002.md +39 -0
  110. package/rules/localization/I18N-001.md +38 -0
  111. package/rules/localization/I18N-002.md +40 -0
  112. package/rules/localization/I18N-003.md +39 -0
  113. package/rules/memory/MEM-001.md +44 -0
  114. package/rules/memory/MEM-002.md +39 -0
  115. package/rules/memory/MEM-003.md +38 -0
  116. package/rules/memory/MEM-004.md +38 -0
  117. package/rules/memory/MEM-005.md +38 -0
  118. package/rules/memory/MEM-006.md +38 -0
  119. package/rules/memory/MEM-007.md +38 -0
  120. package/rules/memory/MEM-008.md +38 -0
  121. package/rules/memory/MEM-009.md +39 -0
  122. package/rules/memory/MEM-010.md +38 -0
  123. package/rules/memory/MEM-011.md +38 -0
  124. package/rules/motion/MOT-001.md +38 -0
  125. package/rules/observability/OBS-001.md +40 -0
  126. package/rules/observability/OBS-002.md +40 -0
  127. package/rules/observability/OBS-003.md +38 -0
  128. package/rules/observability/OBS-004.md +38 -0
  129. package/rules/privacy/PRIV-001.md +38 -0
  130. package/rules/privacy/PRIV-002.md +44 -0
  131. package/rules/privacy/PRIV-003.md +40 -0
  132. package/rules/privacy/PRIV-004.md +41 -0
  133. package/rules/responsive/RWD-001.md +40 -0
  134. package/rules/responsive/RWD-002.md +39 -0
  135. package/rules/responsive/RWD-003.md +39 -0
  136. package/rules/security/SEC-001.md +44 -0
  137. package/rules/security/SEC-002.md +44 -0
  138. package/rules/security/SEC-003.md +41 -0
  139. package/rules/security/SEC-004.md +40 -0
  140. package/rules/security/SEC-005.md +42 -0
  141. package/rules/security/SEC-006.md +40 -0
  142. package/rules/security/SEC-007.md +44 -0
  143. package/rules/security/SEC-008.md +39 -0
  144. package/rules/security/SEC-009.md +40 -0
  145. package/rules/security/SEC-010.md +40 -0
  146. package/rules/security/SEC-011.md +40 -0
  147. package/rules/security/SEC-012.md +40 -0
  148. package/rules/states/STATE-001.md +38 -0
  149. package/rules/states/STATE-002.md +39 -0
  150. package/rules/states/STATE-003.md +39 -0
  151. package/rules/states/STATE-004.md +38 -0
  152. package/rules/testing/TST-001.md +39 -0
  153. package/rules/testing/TST-002.md +39 -0
  154. package/rules/testing/TST-003.md +39 -0
  155. package/rules/testing/TST-004.md +38 -0
  156. package/rules/testing/TST-005.md +40 -0
  157. package/rules/testing/TST-006.md +39 -0
  158. package/rules/ui/UI-001.md +40 -0
  159. package/rules/ui/UI-002.md +38 -0
  160. package/rules/ui/UI-003.md +41 -0
  161. package/rules/ui/UI-004.md +41 -0
  162. package/rules/ui/UI-005.md +41 -0
  163. package/rules/ui/UI-006.md +40 -0
  164. package/rules/ui/UI-007.md +41 -0
  165. package/rules/ux/UX-001.md +41 -0
  166. package/rules/ux/UX-002.md +41 -0
  167. package/rules/ux/UX-003.md +39 -0
  168. package/rules/ux/UX-004.md +39 -0
  169. package/rules/ux/UX-005.md +40 -0
  170. package/rules/ux/UX-006.md +40 -0
  171. package/rules/ux/UX-007.md +44 -0
  172. package/rules/ux/UX-008.md +41 -0
  173. package/rules/ux/UX-009.md +39 -0
  174. package/rules/ux/UX-010.md +40 -0
  175. package/rules/ux/UX-011.md +40 -0
  176. package/rules/ux/UX-012.md +40 -0
  177. package/rules/ux/UX-013.md +39 -0
  178. package/schema/README.md +19 -0
  179. package/schema/checklist.schema.json +34 -0
  180. package/schema/component.schema.json +37 -0
  181. package/schema/project-config.schema.json +70 -0
  182. package/schema/rule.schema.json +104 -0
  183. package/schema/token.schema.json +15 -0
  184. package/schema/waiver.schema.json +33 -0
  185. package/scripts/build-index.mjs +178 -0
  186. package/scripts/validate-links.mjs +43 -0
  187. package/scripts/validate-rules.mjs +42 -0
  188. package/skills/devia/SKILL.md +114 -0
  189. package/src/cli.mjs +107 -0
  190. package/src/commands/check.mjs +483 -0
  191. package/src/commands/doctor.mjs +139 -0
  192. package/src/commands/init.mjs +186 -0
  193. package/src/commands/registry.mjs +154 -0
  194. package/src/commands/rules.mjs +101 -0
  195. package/src/commands/skills.mjs +97 -0
  196. package/src/commands/sync.mjs +83 -0
  197. package/src/commands/validate.mjs +194 -0
  198. package/src/lib/fs.mjs +89 -0
  199. package/src/lib/git.mjs +31 -0
  200. package/src/lib/rules.mjs +85 -0
  201. package/src/lib/ui.mjs +52 -0
  202. package/src/lib/vendor.mjs +74 -0
  203. package/src/lib/version.mjs +19 -0
  204. package/src/lib/yaml.mjs +152 -0
  205. package/standard/README.md +31 -0
  206. package/standard/design/README.md +51 -0
  207. package/standard/design/REFERENCES.md +39 -0
  208. package/standard/design/accessibility/aria.md +7 -0
  209. package/standard/design/accessibility/contrast.md +6 -0
  210. package/standard/design/accessibility/focus.md +6 -0
  211. package/standard/design/accessibility/forms.md +3 -0
  212. package/standard/design/accessibility/keyboard.md +6 -0
  213. package/standard/design/accessibility/reduced-motion.md +3 -0
  214. package/standard/design/accessibility/reflow.md +3 -0
  215. package/standard/design/accessibility/screen-readers.md +3 -0
  216. package/standard/design/accessibility/target-size.md +3 -0
  217. package/standard/design/accessibility/testing.md +3 -0
  218. package/standard/design/accessibility/wcag-2.2.md +16 -0
  219. package/standard/design/accessibility/zoom.md +3 -0
  220. package/standard/design/ai/ai-design-rules.md +8 -0
  221. package/standard/design/ai/anti-patterns.md +1 -0
  222. package/standard/design/ai/compliance-format.md +22 -0
  223. package/standard/design/ai/design-review.md +10 -0
  224. package/standard/design/ai/evals/README.md +1 -0
  225. package/standard/design/ai/instructions.md +7 -0
  226. package/standard/design/ai/prompts/accessibility-review.md +5 -0
  227. package/standard/design/ai/prompts/design-system-review.md +5 -0
  228. package/standard/design/ai/prompts/ui-review.md +5 -0
  229. package/standard/design/ai/prompts/ux-review.md +5 -0
  230. package/standard/design/ai/review-protocol.md +11 -0
  231. package/standard/design/anti-patterns/accessibility.md +7 -0
  232. package/standard/design/anti-patterns/ai-generated.md +6 -0
  233. package/standard/design/anti-patterns/dashboards.md +5 -0
  234. package/standard/design/anti-patterns/forms.md +5 -0
  235. package/standard/design/anti-patterns/responsive.md +5 -0
  236. package/standard/design/anti-patterns/ui.md +6 -0
  237. package/standard/design/anti-patterns/ux.md +5 -0
  238. package/standard/design/components/buttons.md +6 -0
  239. package/standard/design/components/dialogs.md +5 -0
  240. package/standard/design/components/feedback.md +3 -0
  241. package/standard/design/components/forms.md +3 -0
  242. package/standard/design/components/navigation.md +3 -0
  243. package/standard/design/components/tables.md +6 -0
  244. package/standard/design/content/error-messages.md +4 -0
  245. package/standard/design/content/ux-writing.md +5 -0
  246. package/standard/design/data-display/README.md +5 -0
  247. package/standard/design/data-display/currency.md +3 -0
  248. package/standard/design/data-display/dates.md +3 -0
  249. package/standard/design/data-display/density.md +3 -0
  250. package/standard/design/data-display/filtering.md +3 -0
  251. package/standard/design/data-display/localization.md +3 -0
  252. package/standard/design/data-display/numbers.md +3 -0
  253. package/standard/design/data-display/pagination.md +3 -0
  254. package/standard/design/data-display/percentages.md +3 -0
  255. package/standard/design/data-display/sorting.md +3 -0
  256. package/standard/design/data-display/tables.md +3 -0
  257. package/standard/design/data-display/time.md +3 -0
  258. package/standard/design/decisions/ADR-001-token-naming.md +13 -0
  259. package/standard/design/decisions/ADR-002-radius-scale.md +9 -0
  260. package/standard/design/decisions/ADR-003-color-system.md +9 -0
  261. package/standard/design/decisions/ADR-004-component-versioning.md +9 -0
  262. package/standard/design/decisions/README.md +3 -0
  263. package/standard/design/design-system/components.md +9 -0
  264. package/standard/design/design-system/naming.md +19 -0
  265. package/standard/design/design-system/tokens.md +7 -0
  266. package/standard/design/design-system/variants.md +5 -0
  267. package/standard/design/design-system/versioning.md +5 -0
  268. package/standard/design/health/coverage.md +1 -0
  269. package/standard/design/health/dashboard.md +14 -0
  270. package/standard/design/health/maturity-model.md +9 -0
  271. package/standard/design/health/score.md +14 -0
  272. package/standard/design/interaction/README.md +10 -0
  273. package/standard/design/interaction/keyboard.md +3 -0
  274. package/standard/design/interaction/mouse.md +2 -0
  275. package/standard/design/interaction/pen.md +1 -0
  276. package/standard/design/interaction/touch.md +3 -0
  277. package/standard/design/interaction/touchscreen.md +6 -0
  278. package/standard/design/interaction/voice.md +2 -0
  279. package/standard/design/localization/README.md +5 -0
  280. package/standard/design/localization/currency.md +3 -0
  281. package/standard/design/localization/date-time.md +3 -0
  282. package/standard/design/localization/i18n.md +3 -0
  283. package/standard/design/localization/locale-testing.md +3 -0
  284. package/standard/design/localization/number-formatting.md +3 -0
  285. package/standard/design/localization/pluralization.md +3 -0
  286. package/standard/design/localization/rtl.md +3 -0
  287. package/standard/design/localization/text-expansion.md +3 -0
  288. package/standard/design/motion/animation.md +6 -0
  289. package/standard/design/penpot/WORKFLOW.md +27 -0
  290. package/standard/design/platforms/README.md +12 -0
  291. package/standard/design/platforms/desktop/README.md +5 -0
  292. package/standard/design/platforms/mobile/android.md +5 -0
  293. package/standard/design/platforms/mobile/ios.md +5 -0
  294. package/standard/design/platforms/tablet/README.md +5 -0
  295. package/standard/design/platforms/web/README.md +1 -0
  296. package/standard/design/principles/design-principles.md +9 -0
  297. package/standard/design/principles/ui-principles.md +7 -0
  298. package/standard/design/principles/ux-principles.md +14 -0
  299. package/standard/design/references/atlassian.md +3 -0
  300. package/standard/design/references/carbon.md +3 -0
  301. package/standard/design/references/figma-sds.md +5 -0
  302. package/standard/design/references/govuk.md +3 -0
  303. package/standard/design/references/material.md +3 -0
  304. package/standard/design/references/nng.md +3 -0
  305. package/standard/design/references/openui.md +3 -0
  306. package/standard/design/references/primer.md +5 -0
  307. package/standard/design/references/storybook.md +3 -0
  308. package/standard/design/references/uswds.md +3 -0
  309. package/standard/design/references/w3c.md +3 -0
  310. package/standard/design/responsive/desktop.md +4 -0
  311. package/standard/design/responsive/mobile.md +6 -0
  312. package/standard/design/responsive/tablet.md +3 -0
  313. package/standard/design/states/async.md +3 -0
  314. package/standard/design/states/conflict.md +3 -0
  315. package/standard/design/states/empty.md +3 -0
  316. package/standard/design/states/error.md +3 -0
  317. package/standard/design/states/interaction.md +5 -0
  318. package/standard/design/states/loading.md +3 -0
  319. package/standard/design/states/offline.md +3 -0
  320. package/standard/design/states/optimistic.md +3 -0
  321. package/standard/design/states/partial.md +3 -0
  322. package/standard/design/states/permission-denied.md +3 -0
  323. package/standard/design/states/rate-limited.md +3 -0
  324. package/standard/design/states/read-only.md +3 -0
  325. package/standard/design/states/retry.md +3 -0
  326. package/standard/design/states/skeleton.md +3 -0
  327. package/standard/design/states/stale.md +3 -0
  328. package/standard/design/states/success.md +3 -0
  329. package/standard/design/states/timeout.md +3 -0
  330. package/standard/design/states/unsaved-changes.md +3 -0
  331. package/standard/design/ui/color.md +6 -0
  332. package/standard/design/ui/grids.md +5 -0
  333. package/standard/design/ui/icons.md +5 -0
  334. package/standard/design/ui/imagery.md +5 -0
  335. package/standard/design/ui/layout.md +5 -0
  336. package/standard/design/ui/spacing.md +5 -0
  337. package/standard/design/ui/typography.md +6 -0
  338. package/standard/design/ui/visual-design.md +7 -0
  339. package/standard/design/ux/cognitive-load.md +5 -0
  340. package/standard/design/ux/errors.md +6 -0
  341. package/standard/design/ux/feedback.md +5 -0
  342. package/standard/design/ux/forms.md +7 -0
  343. package/standard/design/ux/heuristics.md +14 -0
  344. package/standard/design/ux/information-architecture.md +6 -0
  345. package/standard/design/ux/navigation.md +6 -0
  346. package/standard/design/ux/usability.md +6 -0
  347. package/standard/engineering/README.md +29 -0
  348. package/standard/engineering/REFERENCES.md +42 -0
  349. package/standard/engineering/ai/AI_SECURITY.md +15 -0
  350. package/standard/engineering/ai/PROMPT_SECURITY.md +6 -0
  351. package/standard/engineering/architecture/ADR.md +11 -0
  352. package/standard/engineering/architecture/ARCHITECTURE.md +25 -0
  353. package/standard/engineering/architecture/PRINCIPLES.md +17 -0
  354. package/standard/engineering/architecture/THREAT_MODEL.md +14 -0
  355. package/standard/engineering/backend/API.md +29 -0
  356. package/standard/engineering/backend/BACKGROUND_JOBS.md +12 -0
  357. package/standard/engineering/backend/ERROR_HANDLING.md +26 -0
  358. package/standard/engineering/backend/LOGGING.md +12 -0
  359. package/standard/engineering/compliance/DATA_RETENTION.md +10 -0
  360. package/standard/engineering/compliance/PRIVACY.md +11 -0
  361. package/standard/engineering/database/BACKUPS.md +19 -0
  362. package/standard/engineering/database/DATABASE.md +30 -0
  363. package/standard/engineering/database/MIGRATIONS.md +12 -0
  364. package/standard/engineering/devops/BRANCH_PROTECTION.md +17 -0
  365. package/standard/engineering/devops/CI_CD.md +48 -0
  366. package/standard/engineering/devops/DEPLOYMENT.md +12 -0
  367. package/standard/engineering/devops/DOCKER.md +9 -0
  368. package/standard/engineering/devops/ENVIRONMENTS.md +12 -0
  369. package/standard/engineering/devops/RELEASE.md +6 -0
  370. package/standard/engineering/devops/ROLLBACK.md +9 -0
  371. package/standard/engineering/frontend/ACCESSIBILITY.md +16 -0
  372. package/standard/engineering/frontend/DESIGN_SYSTEM.md +10 -0
  373. package/standard/engineering/frontend/FRONTEND.md +17 -0
  374. package/standard/engineering/frontend/UX.md +15 -0
  375. package/standard/engineering/observability/ALERTING.md +11 -0
  376. package/standard/engineering/observability/INCIDENTS.md +10 -0
  377. package/standard/engineering/observability/MONITORING.md +17 -0
  378. package/standard/engineering/payments/PAYMENTS.md +15 -0
  379. package/standard/engineering/performance/PERFORMANCE.md +19 -0
  380. package/standard/engineering/security/API_SECURITY.md +22 -0
  381. package/standard/engineering/security/ASVS_5.0/V10_MALICIOUS_CODE.md +31 -0
  382. package/standard/engineering/security/ASVS_5.0/V11_BUSINESS_LOGIC.md +31 -0
  383. package/standard/engineering/security/ASVS_5.0/V12_FILES.md +31 -0
  384. package/standard/engineering/security/ASVS_5.0/V13_API.md +31 -0
  385. package/standard/engineering/security/ASVS_5.0/V14_CONFIGURATION.md +31 -0
  386. package/standard/engineering/security/ASVS_5.0/V1_ARCHITECTURE.md +31 -0
  387. package/standard/engineering/security/ASVS_5.0/V2_AUTHENTICATION.md +31 -0
  388. package/standard/engineering/security/ASVS_5.0/V3_SESSION.md +31 -0
  389. package/standard/engineering/security/ASVS_5.0/V4_ACCESS_CONTROL.md +31 -0
  390. package/standard/engineering/security/ASVS_5.0/V5_VALIDATION.md +31 -0
  391. package/standard/engineering/security/ASVS_5.0/V6_CRYPTOGRAPHY.md +31 -0
  392. package/standard/engineering/security/ASVS_5.0/V7_ERROR_HANDLING.md +31 -0
  393. package/standard/engineering/security/ASVS_5.0/V8_DATA_PROTECTION.md +31 -0
  394. package/standard/engineering/security/ASVS_5.0/V9_COMMUNICATION.md +31 -0
  395. package/standard/engineering/security/ASVS_REGISTRY.md +31 -0
  396. package/standard/engineering/security/AUTHENTICATION.md +28 -0
  397. package/standard/engineering/security/AUTHORIZATION.md +27 -0
  398. package/standard/engineering/security/DATA_SECURITY.md +14 -0
  399. package/standard/engineering/security/OWASP_ASVS.md +31 -0
  400. package/standard/engineering/security/SECRETS.md +28 -0
  401. package/standard/engineering/security/SECURITY.md +28 -0
  402. package/standard/engineering/testing/TESTING.md +27 -0
  403. package/templates/agents/AGENTS.md +34 -0
  404. package/templates/agents/CLAUDE.md +33 -0
  405. package/templates/agents/copilot-instructions.md +15 -0
  406. package/templates/agents/cursor.mdc +27 -0
  407. package/templates/agents/windsurfrules.md +17 -0
  408. package/templates/docs/ADR.md +16 -0
  409. package/templates/docs/FEATURE.md +19 -0
  410. package/templates/docs/SECURITY_REPORT.md +15 -0
  411. package/templates/docs/accessibility-review.md +9 -0
  412. package/templates/docs/component.md +9 -0
  413. package/templates/docs/decision-record.md +9 -0
  414. package/templates/docs/design-review.md +9 -0
  415. package/templates/docs/exception.md +9 -0
  416. package/templates/docs/page.md +9 -0
  417. package/templates/docs/pattern.md +9 -0
  418. package/templates/docs/user-flow.md +9 -0
  419. package/templates/github/workflows/app-ci.yml +91 -0
  420. package/templates/project/00_OVERVIEW.md +51 -0
  421. package/templates/project/01_ARCHITECTURE.md +37 -0
  422. package/templates/project/02_SURFACES.md +30 -0
  423. package/templates/project/03_DATA_MODEL.md +31 -0
  424. package/templates/project/04_PERMISSIONS.md +32 -0
  425. package/templates/project/05_FLOWS.md +20 -0
  426. package/templates/project/06_INTEGRATIONS.md +21 -0
  427. package/templates/project/07_DESIGN.md +33 -0
  428. package/templates/project/10_NEVER_ALWAYS.md +26 -0
  429. package/templates/project/11_GAPS.md +18 -0
  430. package/templates/project/12_DEBT.md +19 -0
  431. package/templates/project/13_RECIPES.md +35 -0
  432. package/templates/project/14_INDEX.md +50 -0
  433. package/templates/project/AGENTS.md +51 -0
  434. package/templates/project/README.md +49 -0
  435. package/templates/project/impact-map.yaml +41 -0
@@ -0,0 +1,152 @@
1
+ /**
2
+ * Minimal YAML subset parser — enough for rule frontmatter, VERSION and impact maps.
3
+ *
4
+ * Supports: nested mappings, lists of scalars, inline empty list `[]`, block scalars
5
+ * (`>` folded, `|` literal), quoted scalars, `#` comments, booleans and numbers.
6
+ *
7
+ * Deliberately not a full YAML implementation: devia ships no runtime dependencies, and the
8
+ * files it parses are files it also writes. Anything this parser cannot read is a file the
9
+ * standard does not ask anyone to write.
10
+ */
11
+
12
+ function scalar(raw) {
13
+ const v = raw.trim();
14
+ if (v === "" || v === "~" || v === "null") return null;
15
+ if (v === "true") return true;
16
+ if (v === "false") return false;
17
+ if (/^-?\d+$/.test(v)) return Number(v);
18
+ if (/^-?\d*\.\d+$/.test(v)) return Number(v);
19
+ if (/^"(.*)"$/.test(v)) return v.slice(1, -1).replace(/\\"/g, '"');
20
+ if (/^'(.*)'$/.test(v)) return v.slice(1, -1);
21
+ if (v === "[]") return [];
22
+ if (v === "{}") return {};
23
+ if (/^\[.*\]$/.test(v)) {
24
+ return v
25
+ .slice(1, -1)
26
+ .split(",")
27
+ .map((s) => scalar(s))
28
+ .filter((s) => s !== null);
29
+ }
30
+ return v;
31
+ }
32
+
33
+ function stripComment(line) {
34
+ // Only strip a comment that starts the line or follows whitespace outside quotes.
35
+ let out = "";
36
+ let quote = null;
37
+ for (let i = 0; i < line.length; i++) {
38
+ const c = line[i];
39
+ if (quote) {
40
+ out += c;
41
+ if (c === quote && line[i - 1] !== "\\") quote = null;
42
+ continue;
43
+ }
44
+ if (c === '"' || c === "'") {
45
+ quote = c;
46
+ out += c;
47
+ continue;
48
+ }
49
+ if (c === "#" && (i === 0 || /\s/.test(line[i - 1]))) break;
50
+ out += c;
51
+ }
52
+ return out.replace(/\s+$/, "");
53
+ }
54
+
55
+ function indentOf(line) {
56
+ return line.length - line.replace(/^\s+/, "").length;
57
+ }
58
+
59
+ /** Parse a YAML subset document into a plain object. */
60
+ export function parseYaml(text) {
61
+ const lines = String(text)
62
+ .split(/\r?\n/)
63
+ .map(stripComment)
64
+ .map((l, i) => ({ i, raw: l }))
65
+ .filter((l) => l.raw.trim() !== "");
66
+
67
+ let pos = 0;
68
+
69
+ function parseBlock(minIndent) {
70
+ let result = null;
71
+ while (pos < lines.length) {
72
+ const { raw } = lines[pos];
73
+ const ind = indentOf(raw);
74
+ if (ind < minIndent) break;
75
+ const trimmed = raw.trim();
76
+
77
+ // An empty collection written on its own line: `success_criteria:\n []`
78
+ if (trimmed === "[]" || trimmed === "{}") {
79
+ pos++;
80
+ return trimmed === "[]" ? [] : {};
81
+ }
82
+
83
+ if (trimmed.startsWith("- ") || trimmed === "-") {
84
+ if (result === null) result = [];
85
+ if (!Array.isArray(result)) break;
86
+ pos++;
87
+ const item = trimmed === "-" ? "" : trimmed.slice(2);
88
+ if (item.includes(": ") || /:$/.test(item)) {
89
+ // list of mappings: re-parse the item as a mapping line at a deeper indent
90
+ const sub = { i: -1, raw: " ".repeat(ind + 2) + item };
91
+ lines.splice(pos, 0, sub);
92
+ result.push(parseBlock(ind + 2));
93
+ } else {
94
+ result.push(scalar(item));
95
+ }
96
+ continue;
97
+ }
98
+
99
+ const m = trimmed.match(/^([^:]+):\s*(.*)$/);
100
+ if (!m) {
101
+ pos++;
102
+ continue;
103
+ }
104
+ if (result === null) result = {};
105
+ if (Array.isArray(result)) break;
106
+ const key = m[1].trim().replace(/^["']|["']$/g, "");
107
+ const rest = m[2];
108
+ pos++;
109
+
110
+ if (rest === ">" || rest === "|" || rest === ">-" || rest === "|-") {
111
+ const folded = rest.startsWith(">");
112
+ const buf = [];
113
+ while (pos < lines.length && indentOf(lines[pos].raw) > ind) {
114
+ buf.push(lines[pos].raw.trim());
115
+ pos++;
116
+ }
117
+ result[key] = folded ? buf.join(" ").trim() : buf.join("\n");
118
+ continue;
119
+ }
120
+
121
+ if (rest === "") {
122
+ const next = lines[pos];
123
+ if (next && indentOf(next.raw) > ind) {
124
+ result[key] = parseBlock(indentOf(next.raw));
125
+ } else {
126
+ result[key] = null;
127
+ }
128
+ continue;
129
+ }
130
+
131
+ result[key] = scalar(rest);
132
+ }
133
+ return result === null ? {} : result;
134
+ }
135
+
136
+ return parseBlock(0);
137
+ }
138
+
139
+ /** Split `---` frontmatter from a markdown body. */
140
+ export function parseFrontmatter(text) {
141
+ const src = String(text).replace(/^/, "");
142
+ if (!/^---\r?\n/.test(src)) return { data: null, body: src };
143
+ const end = src.indexOf("\n---", 3);
144
+ if (end < 0) return { data: null, body: src, error: "unclosed frontmatter" };
145
+ const raw = src.slice(src.indexOf("\n") + 1, end);
146
+ const body = src.slice(src.indexOf("\n", end + 1) + 1);
147
+ try {
148
+ return { data: parseYaml(raw), body, raw };
149
+ } catch (e) {
150
+ return { data: null, body, error: e.message };
151
+ }
152
+ }
@@ -0,0 +1,31 @@
1
+ # The standard
2
+
3
+ Narrative policy. The enforceable statements live in [`rules/`](../rules/README.md); these pages
4
+ are the reasoning, the detail, and the how.
5
+
6
+ ```text
7
+ rules/ what must be true, with an ID you can cite
8
+ standard/ why, and how to do it
9
+ checklists/ what to walk through before calling something done
10
+ ```
11
+
12
+ | Area | Where | Covers |
13
+ |---|---|---|
14
+ | Engineering | [`engineering/`](engineering/README.md) | Architecture, security (OWASP ASVS 5.0), database, API, testing, devops, observability, performance, privacy, payments, AI features |
15
+ | Design | [`design/`](design/README.md) | UX, UI, accessibility (WCAG 2.2), states, components, data display, localisation, responsive, interaction, anti-patterns |
16
+ | Memory | [`../MEMORY.md`](../MEMORY.md) | Living project memory: registries, sweep discipline, impact map, freshness |
17
+ | Agent | [`../AGENTS.md`](../AGENTS.md) | The work contract every agent operates under |
18
+
19
+ ## Reading order
20
+
21
+ 1. [`../AGENTS.md`](../AGENTS.md) — the contract
22
+ 2. [`../PRINCIPLES.md`](../PRINCIPLES.md) — what never changes
23
+ 3. The domain page for what you are touching
24
+ 4. The matching checklist in [`../checklists/`](../checklists/README.md)
25
+ 5. The rule IDs you will cite in the report
26
+
27
+ ## Adding to the standard
28
+
29
+ A new page here is guidance, not obligation. If it states something a project must do, it needs
30
+ a rule with an ID under [`rules/`](../rules/README.md), a source, and a validation method — see
31
+ [`../GOVERNANCE.md`](../GOVERNANCE.md).
@@ -0,0 +1,51 @@
1
+ # Design standard
2
+
3
+ UX, UI, accessibility and design-system policy for every user-facing surface. The enforceable
4
+ statements are the `A11Y-*`, `UX-*`, `UI-*`, `CMP-*`, `STATE-*`, `DATA-*`, `RWD-*`, `INT-*`,
5
+ `I18N-*`, `DS-*`, `MOT-*` and `CNT-*` rules in [`../../rules/README.md`](../../rules/README.md).
6
+
7
+ ```text
8
+ FOUNDATION (tokens, accessibility baseline)
9
+
10
+ UX (jobs, flows, information architecture)
11
+
12
+ UI (visual system)
13
+
14
+ COMPONENTS → PATTERNS → SCREENS
15
+
16
+ VALIDATION (checklists, accessibility, handoff)
17
+ ```
18
+
19
+ A pretty button does not fix a broken flow.
20
+
21
+ | Area | Pages |
22
+ |---|---|
23
+ | Principles | [`principles/`](principles/design-principles.md), [`ux-principles.md`](principles/ux-principles.md), [`ui-principles.md`](principles/ui-principles.md) |
24
+ | Accessibility | [`accessibility/`](accessibility/wcag-2.2.md) — names, keyboard, focus, contrast, target size, reflow, motion, screen readers, testing |
25
+ | UX | [`ux/`](ux/heuristics.md) — heuristics, forms, errors, feedback, navigation, information architecture, cognitive load |
26
+ | UI | [`ui/`](ui/visual-design.md) — colour, typography, spacing, layout, grids, icons, imagery |
27
+ | Components | [`components/`](components/buttons.md) — buttons, forms, dialogs, tables, navigation, feedback |
28
+ | States | [`states/`](states/loading.md) — loading, empty, error, offline, permission-denied, read-only, stale, optimistic, unsaved changes |
29
+ | Data display | [`data-display/`](data-display/README.md) — tables, currency, dates, numbers, density, sorting, filtering, pagination |
30
+ | Responsive | [`responsive/`](responsive/mobile.md), [`platforms/`](platforms/README.md), [`interaction/`](interaction/README.md) |
31
+ | Localisation | [`localization/`](localization/README.md) — i18n, RTL, pluralisation, text expansion, formats |
32
+ | Design system | [`design-system/`](design-system/tokens.md) — tokens, components, naming, variants, versioning |
33
+ | Anti-patterns | [`anti-patterns/`](anti-patterns/ui.md) — including [`ai-generated.md`](anti-patterns/ai-generated.md) |
34
+ | Content | [`content/`](content/ux-writing.md) — UX writing, error messages |
35
+ | Motion | [`motion/animation.md`](motion/animation.md) |
36
+ | AI review | [`ai/`](ai/instructions.md) — review protocol, compliance format, prompts |
37
+ | Health | [`health/`](health/maturity-model.md) — coverage, score, maturity |
38
+ | Decisions | [`decisions/`](decisions/README.md) — token naming, radius scale, colour system, component versioning |
39
+
40
+ Sources: [`REFERENCES.md`](REFERENCES.md) and [`references/`](references/w3c.md).
41
+
42
+ ## Non-negotiable for any UI change
43
+
44
+ 1. Prefer existing tokens and components over new one-offs (`DS-001`, `DS-002`, `UI-003`, `UI-005`)
45
+ 2. Every interactive control has an accessible name, a keyboard path and visible focus
46
+ (`A11Y-001`, `A11Y-004`, `A11Y-006`)
47
+ 3. Labels are persistent, never placeholder-only (`UX-007`)
48
+ 4. Meaning is never carried by colour alone (`UI-004`)
49
+ 5. States are complete: default, hover, focus, active, disabled, loading, empty, error, success —
50
+ plus permission-denied and offline where they can occur (`STATE-001`, `STATE-002`, `STATE-003`)
51
+ 6. Never claim WCAG conformance without contrast, keyboard and accessible-name evidence
@@ -0,0 +1,39 @@
1
+ # Reference stack for UX/UI, accessibility and design systems
2
+
3
+ There is **no single “OWASP for design”**. This repository defines an **operational standard** derived from normative standards, UX research, established design systems, and web platform guidance. It is **not** itself an international normative body.
4
+
5
+ ## Hierarchy
6
+
7
+ ```text
8
+ LEVEL 1 — NORMATIVE
9
+ W3C WCAG 2.2
10
+ W3C WAI-ARIA + APG
11
+
12
+ LEVEL 2 — UX RESEARCH / GUIDELINES
13
+ Nielsen Norman Group
14
+
15
+ LEVEL 3 — PROVEN DESIGN SYSTEMS
16
+ GOV.UK · USWDS · IBM Carbon · Material · Atlassian · Primer
17
+
18
+ LEVEL 4 — ARCHITECTURE / TOOLING REFERENCES
19
+ OpenUI · W3C Design Tokens (DTCG) · Figma SDS (patterns) · Storybook
20
+ ```
21
+
22
+ ## Links
23
+
24
+ - [WCAG 2.2](https://www.w3.org/TR/WCAG22/)
25
+ - [WAI-ARIA](https://www.w3.org/TR/wai-aria/)
26
+ - [ARIA APG](https://www.w3.org/WAI/ARIA/apg/)
27
+ - [NN/g Heuristics](https://www.nngroup.com/articles/ten-usability-heuristics/)
28
+ - [GOV.UK Design System](https://design-system.service.gov.uk/)
29
+ - [USWDS](https://designsystem.digital.gov/)
30
+ - [IBM Carbon](https://carbondesignsystem.com/)
31
+ - [Material Design](https://m3.material.io/)
32
+ - [Atlassian Design](https://atlassian.design/)
33
+ - [Primer](https://primer.style/)
34
+ - [OpenUI](https://open-ui.org/)
35
+ - [Design Tokens](https://www.w3.org/community/design-tokens/)
36
+ - [Figma SDS](https://github.com/figma/sds)
37
+ - [Storybook](https://storybook.js.org/)
38
+
39
+ Details: [`references/`](references/). Traceability: [`compliance/TRACEABILITY.md`](../../compliance/TRACEABILITY.md).
@@ -0,0 +1,7 @@
1
+ # Aria
2
+
3
+ Canonical rules:
4
+
5
+ - [A11Y-001](../../../rules/accessibility/A11Y-001.md)
6
+ - [A11Y-002](../../../rules/accessibility/A11Y-002.md)
7
+ - [A11Y-003](../../../rules/accessibility/A11Y-003.md)
@@ -0,0 +1,6 @@
1
+ # Contrast
2
+
3
+ Canonical rules:
4
+
5
+ - [A11Y-008](../../../rules/accessibility/A11Y-008.md)
6
+ - [A11Y-009](../../../rules/accessibility/A11Y-009.md)
@@ -0,0 +1,6 @@
1
+ # Focus
2
+
3
+ Canonical rules:
4
+
5
+ - [A11Y-006](../../../rules/accessibility/A11Y-006.md)
6
+ - [A11Y-007](../../../rules/accessibility/A11Y-007.md)
@@ -0,0 +1,3 @@
1
+ # forms
2
+
3
+ See UX-007…UX-009 and accessibility focus management on errors.
@@ -0,0 +1,6 @@
1
+ # Keyboard
2
+
3
+ Canonical rules:
4
+
5
+ - [A11Y-004](../../../rules/accessibility/A11Y-004.md)
6
+ - [A11Y-005](../../../rules/accessibility/A11Y-005.md)
@@ -0,0 +1,3 @@
1
+ # reduced-motion
2
+
3
+ A11Y-012.
@@ -0,0 +1,3 @@
1
+ # reflow
2
+
3
+ A11Y-011 / WCAG 1.4.10.
@@ -0,0 +1,3 @@
1
+ # screen-readers
2
+
3
+ Test critical flows with at least one SR (VoiceOver, NVDA, or TalkBack). Names/roles/values must make sense in order.
@@ -0,0 +1,3 @@
1
+ # target-size
2
+
3
+ A11Y-010 / WCAG 2.5.8.
@@ -0,0 +1,3 @@
1
+ # testing
2
+
3
+ Automate axe/lighthouse a11y where possible; manual keyboard + SR for composites.
@@ -0,0 +1,16 @@
1
+ # WCAG 2.2 baseline
2
+
3
+ Target **WCAG 2.2 Level AA** unless a product explicitly documents a different bar.
4
+
5
+ Primary source: [WCAG 2.2](https://www.w3.org/TR/WCAG22/).
6
+
7
+ This folder translates selected SCs into engineering/design rules. It is **not** a full audit checklist substitute for formal conformance claims.
8
+
9
+ Key themes we enforce as MUST in product UI:
10
+
11
+ - Perceivable: text alternatives, contrast, reflow
12
+ - Operable: keyboard, focus visible, targets, seziures/motion
13
+ - Understandable: labels, errors, consistent nav
14
+ - Robust: name/role/value (ARIA)
15
+
16
+ See also: `contrast.md`, `keyboard.md`, `focus.md`, `aria.md`.
@@ -0,0 +1,3 @@
1
+ # zoom
2
+
3
+ Content usable at 200% zoom (WCAG 1.4.4). Prefer reflow over truncated controls.
@@ -0,0 +1,8 @@
1
+ # AI design rules
2
+
3
+ - Never invent a parallel palette when tokens exist
4
+ - Never remove focus outlines
5
+ - Never use placeholder-only labels
6
+ - Prefer system components over new CSS islands
7
+ - When generating UI, include empty/loading/error states
8
+ - Cite rule IDs (e.g. `A11Y-FOCUS-001`) in PR/compliance summaries
@@ -0,0 +1 @@
1
+ See [`../anti-patterns/ai-generated.md`](../anti-patterns/ai-generated.md).
@@ -0,0 +1,22 @@
1
+ # Compliance output format
2
+
3
+ ```text
4
+ DESIGN REVIEW
5
+
6
+ Status: PASS | FAIL | PASS WITH WARNINGS
7
+
8
+ Violations:
9
+ - RULE-ID — short reason
10
+
11
+ Warnings:
12
+ - RULE-ID — short reason
13
+
14
+ Passed:
15
+ <count>
16
+
17
+ Failed:
18
+ <count>
19
+
20
+ Not verified:
21
+ <count> — list
22
+ ```
@@ -0,0 +1,10 @@
1
+ # AI-assisted design review
2
+
3
+ Agents reviewing UI MUST check:
4
+
5
+ 1. Token usage vs one-offs
6
+ 2. State coverage
7
+ 3. Focus + names + labels
8
+ 4. Contrast risks
9
+ 5. Responsive 320px / desktop
10
+ 6. Rule IDs failed/passed
@@ -0,0 +1 @@
1
+ Store golden eval cases (fixture descriptions → expected violations) in product repos or future `evals/` datasets.
@@ -0,0 +1,7 @@
1
+ # AI instructions
2
+
3
+ 1. Load `AGENTS.md` + relevant `rules/**`
4
+ 2. Prefer citing **rule IDs**
5
+ 3. Never invent parallel tokens
6
+ 4. Return the compliance format in `compliance-format.md`
7
+ 5. List **Not verified** explicitly
@@ -0,0 +1,5 @@
1
+ # Prompt — accessibility-review
2
+
3
+ Review the provided UI/diff against `rules/` and return the DESIGN REVIEW format from `ai/compliance-format.md`.
4
+ Focus domain: **accessibility**.
5
+ List Not verified for anything you could not test.
@@ -0,0 +1,5 @@
1
+ # Prompt — design-system-review
2
+
3
+ Review the provided UI/diff against `rules/` and return the DESIGN REVIEW format from `ai/compliance-format.md`.
4
+ Focus domain: **design-system**.
5
+ List Not verified for anything you could not test.
@@ -0,0 +1,5 @@
1
+ # Prompt — ui-review
2
+
3
+ Review the provided UI/diff against `rules/` and return the DESIGN REVIEW format from `ai/compliance-format.md`.
4
+ Focus domain: **ui**.
5
+ List Not verified for anything you could not test.
@@ -0,0 +1,5 @@
1
+ # Prompt — ux-review
2
+
3
+ Review the provided UI/diff against `rules/` and return the DESIGN REVIEW format from `ai/compliance-format.md`.
4
+ Focus domain: **ux**.
5
+ List Not verified for anything you could not test.
@@ -0,0 +1,11 @@
1
+ # Review protocol
2
+
3
+ ```text
4
+ 1. Identify surface (web/mobile/tablet/desktop)
5
+ 2. Identify input methods
6
+ 3. Collect applicable MUST rules
7
+ 4. Check states matrix
8
+ 5. Check a11y (name, keyboard, focus, contrast)
9
+ 6. Check tokens/components
10
+ 7. Emit DESIGN REVIEW report
11
+ ```
@@ -0,0 +1,7 @@
1
+ # Anti-patterns — accessibility
2
+
3
+ - ❌ Placeholder-as-label
4
+ - ❌ outline:none without replacement
5
+ - ❌ Color-only state
6
+ - ❌ Icon-only action without name
7
+ - ❌ Div soup buttons
@@ -0,0 +1,6 @@
1
+ # Anti-patterns — ai-generated
2
+
3
+ - ❌ Generic ‘AI slop’ aesthetics replacing tokens
4
+ - ❌ Screenshot cloning without tokens
5
+ - ❌ Skeleton everywhere forever
6
+ - ❌ Fake charts as decoration
@@ -0,0 +1,5 @@
1
+ # Anti-patterns — dashboards
2
+
3
+ - ❌ Infinite dashboard cards
4
+ - ❌ Metrics without context or period
5
+ - ❌ Everything equal weight
@@ -0,0 +1,5 @@
1
+ # Anti-patterns — forms
2
+
3
+ - ❌ Placeholder-as-label
4
+ - ❌ Errors only in toasts
5
+ - ❌ Required marked by color alone
@@ -0,0 +1,5 @@
1
+ # Anti-patterns — responsive
2
+
3
+ - ❌ Tiny touch targets
4
+ - ❌ Hover-only critical actions
5
+ - ❌ Desktop-only tables with no mobile strategy
@@ -0,0 +1,6 @@
1
+ # Anti-patterns — ui
2
+
3
+ - ❌ Excessive gradients / glow as decoration
4
+ - ❌ Random border-radius per component
5
+ - ❌ Arbitrary spacing outside the scale
6
+ - ❌ Decorative UI without purpose
@@ -0,0 +1,5 @@
1
+ # Anti-patterns — ux
2
+
3
+ - ❌ Infinite dashboard cards with no primary job
4
+ - ❌ Unnecessary modal for simple confirms that could be inline
5
+ - ❌ Dead ends without recovery
@@ -0,0 +1,6 @@
1
+ # Buttons
2
+
3
+ Canonical rules:
4
+
5
+ - [CMP-001](../../../rules/components/CMP-001.md)
6
+ - [CMP-002](../../../rules/components/CMP-002.md)
@@ -0,0 +1,5 @@
1
+ # Dialogs
2
+
3
+ Canonical rules:
4
+
5
+ - [CMP-005](../../../rules/components/CMP-005.md)
@@ -0,0 +1,3 @@
1
+ # Feedback components
2
+
3
+ Toasts/alerts MUST be reachable to AT (polite/assertive live regions as appropriate). Do not rely on color alone. Destructive confirms follow `ux/errors.md`.
@@ -0,0 +1,3 @@
1
+ # Form controls
2
+
3
+ See [`ux/forms.md`](../ux/forms.md). Controls MUST support: default, hover, focus, disabled, invalid, readonly (as applicable).
@@ -0,0 +1,3 @@
1
+ # Navigation components
2
+
3
+ See `ux/navigation.md`. Landmark roles: `header`, `nav`, `main`, `footer` as appropriate. One `main` per page.
@@ -0,0 +1,6 @@
1
+ # Tables
2
+
3
+ Canonical rules:
4
+
5
+ - [CMP-003](../../../rules/components/CMP-003.md)
6
+ - [CMP-004](../../../rules/components/CMP-004.md)
@@ -0,0 +1,4 @@
1
+ # Error messages
2
+
3
+ Pattern: **what happened** + **how to fix** (+ optional reference id).
4
+ No blame. No raw exceptions. See `ux/errors.md`.
@@ -0,0 +1,5 @@
1
+ # Ux Writing
2
+
3
+ Canonical rules:
4
+
5
+ - [CNT-001](../../../rules/content/CNT-001.md)
@@ -0,0 +1,5 @@
1
+ # Data display
2
+
3
+ Rules: `rules/data-display/` (DATA-001…).
4
+
5
+ Guidance files: numbers, currency, dates, tables, sorting, filtering, pagination, density, localization of data.
@@ -0,0 +1,3 @@
1
+ # currency
2
+
3
+ DATA-001 — always include currency context.
@@ -0,0 +1,3 @@
1
+ # dates
2
+
3
+ DATA-002 — unambiguous dates.
@@ -0,0 +1,3 @@
1
+ # density
2
+
3
+ Comfortable vs compact densitites as tokens; don’t invent per-page densitites.
@@ -0,0 +1,3 @@
1
+ # filtering
2
+
3
+ DATA-004 — visible filters + clear.
@@ -0,0 +1,3 @@
1
+ # localization
2
+
3
+ Data formatting follows locale; see localization/.
@@ -0,0 +1,3 @@
1
+ # numbers
2
+
3
+ Locale-aware grouping; consistent decimals in a column.
@@ -0,0 +1,3 @@
1
+ # pagination
2
+
3
+ Show range and total when known; don’t hide page size if relevant.
@@ -0,0 +1,3 @@
1
+ # percentages
2
+
3
+ Clarify 0–1 vs 0–100; don’t mix.
@@ -0,0 +1,3 @@
1
+ # sorting
2
+
3
+ Indicate active sort column/direction.
@@ -0,0 +1,3 @@
1
+ # tables
2
+
3
+ See CMP-003, CMP-004, DATA-003, DATA-004.
@@ -0,0 +1,3 @@
1
+ # time
2
+
3
+ Include timezone when events cross zones.
@@ -0,0 +1,13 @@
1
+ # ADR-001: Token naming
2
+
3
+ ## Decision
4
+
5
+ Use `{category}.{role}.{variant}.{state?}` semantic names; primitives separate.
6
+
7
+ ## Status
8
+
9
+ Accepted
10
+
11
+ ## Consequences
12
+
13
+ Components bind to semantic tokens (DS-002). Renames are major versions (DS-003).