@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,40 @@
1
+ ---
2
+ id: UI-006
3
+ title: Consistent page chrome
4
+ severity: SHOULD
5
+ status: active
6
+ priority: P2
7
+ domain: ui
8
+ source:
9
+ - Carbon
10
+ - Atlassian
11
+ applies_to:
12
+ - layout
13
+ - navigation
14
+ success_criteria:
15
+ []
16
+ requirement: >
17
+ App shells SHOULD reuse one nav/header/content frame pattern.
18
+ validation:
19
+ automated: false
20
+ manual: true
21
+ exceptions: documented-only
22
+ ---
23
+
24
+ # UI-006 — Consistent page chrome
25
+
26
+ **Requirement:** App shells SHOULD reuse one nav/header/content frame pattern.
27
+
28
+ **Bad:** Every page invents a new header height and nav placement.
29
+
30
+ **Good:** Shared shell component/template.
31
+
32
+ ## Validation
33
+
34
+ - Design or engineering review
35
+
36
+ ## Lifecycle
37
+
38
+ - Status: `active`
39
+ - Priority: `P2`
40
+ - Exceptions: `documented-only`
@@ -0,0 +1,41 @@
1
+ ---
2
+ id: UI-007
3
+ title: Icon-only controls named
4
+ severity: MUST
5
+ status: active
6
+ priority: P0
7
+ domain: ui
8
+ source:
9
+ - WCAG-2.2
10
+ - WAI-ARIA-APG
11
+ applies_to:
12
+ - button
13
+ - link
14
+ success_criteria:
15
+ - "4.1.2"
16
+ requirement: >
17
+ Icon-only controls MUST have an accessible name (aria-label, aria-labelledby, or visually hidden text).
18
+ validation:
19
+ automated: true
20
+ manual: true
21
+ exceptions: documented-only
22
+ ---
23
+
24
+ # UI-007 — Icon-only controls named
25
+
26
+ **Requirement:** Icon-only controls MUST have an accessible name (aria-label, aria-labelledby, or visually hidden text).
27
+
28
+ **Bad:** Trash icon button with no name.
29
+
30
+ **Good:** aria-label="Delete order".
31
+
32
+ ## Validation
33
+
34
+ - Automated checks / lint / a11y tooling where applicable
35
+ - Design or engineering review
36
+
37
+ ## Lifecycle
38
+
39
+ - Status: `active`
40
+ - Priority: `P0`
41
+ - Exceptions: `documented-only`
@@ -0,0 +1,41 @@
1
+ ---
2
+ id: UX-001
3
+ title: One primary action per view
4
+ severity: MUST
5
+ status: active
6
+ priority: P1
7
+ domain: ux
8
+ source:
9
+ - NN/g
10
+ applies_to:
11
+ - page
12
+ - view
13
+ - dialog
14
+ success_criteria:
15
+ []
16
+ requirement: >
17
+ Each primary view MUST expose a clear primary action (or explicitly be read-only).
18
+ validation:
19
+ automated: false
20
+ manual: true
21
+ exceptions: documented-only
22
+ ---
23
+
24
+ # UX-001 — One primary action per view
25
+
26
+ **Requirement:** Each primary view MUST expose a clear primary action (or explicitly be read-only).
27
+
28
+ **Bad:** Three equally weighted CTAs competing in the header.
29
+
30
+ **Good:** One primary CTA; secondary actions visually quieter.
31
+
32
+ ## Validation
33
+
34
+ - Visual hierarchy review
35
+ - Task success / heuristic review
36
+
37
+ ## Lifecycle
38
+
39
+ - Status: `active`
40
+ - Priority: `P1`
41
+ - Exceptions: `documented-only`
@@ -0,0 +1,41 @@
1
+ ---
2
+ id: UX-002
3
+ title: System status visible
4
+ severity: MUST
5
+ status: active
6
+ priority: P1
7
+ domain: ux
8
+ source:
9
+ - NN/g
10
+ applies_to:
11
+ - forms
12
+ - async
13
+ - buttons
14
+ success_criteria:
15
+ []
16
+ requirement: >
17
+ After user-initiated actions that take noticeable time or change data, the UI MUST show progress or confirmation.
18
+ validation:
19
+ automated: true
20
+ manual: true
21
+ exceptions: documented-only
22
+ ---
23
+
24
+ # UX-002 — System status visible
25
+
26
+ **Requirement:** After user-initiated actions that take noticeable time or change data, the UI MUST show progress or confirmation.
27
+
28
+ **Bad:** Save with no toast/spinner/inline confirmation.
29
+
30
+ **Good:** Pending state + success/error outcome.
31
+
32
+ ## Validation
33
+
34
+ - Automated checks / lint / a11y tooling where applicable
35
+ - Design or engineering review
36
+
37
+ ## Lifecycle
38
+
39
+ - Status: `active`
40
+ - Priority: `P1`
41
+ - Exceptions: `documented-only`
@@ -0,0 +1,39 @@
1
+ ---
2
+ id: UX-003
3
+ title: Navigation mirrors user mental model
4
+ severity: SHOULD
5
+ status: active
6
+ priority: P2
7
+ domain: ux
8
+ source:
9
+ - NN/g
10
+ - GOV.UK
11
+ applies_to:
12
+ - navigation
13
+ success_criteria:
14
+ []
15
+ requirement: >
16
+ Top-level nav labels SHOULD match user tasks/objects, not internal org charts.
17
+ validation:
18
+ automated: false
19
+ manual: true
20
+ exceptions: documented-only
21
+ ---
22
+
23
+ # UX-003 — Navigation mirrors user mental model
24
+
25
+ **Requirement:** Top-level nav labels SHOULD match user tasks/objects, not internal org charts.
26
+
27
+ **Bad:** Nav: ‘Module A / Module B’ from engineering.
28
+
29
+ **Good:** Nav: task/object names users recognize.
30
+
31
+ ## Validation
32
+
33
+ - Design or engineering review
34
+
35
+ ## Lifecycle
36
+
37
+ - Status: `active`
38
+ - Priority: `P2`
39
+ - Exceptions: `documented-only`
@@ -0,0 +1,39 @@
1
+ ---
2
+ id: UX-004
3
+ title: Depth with orientation
4
+ severity: SHOULD
5
+ status: active
6
+ priority: P2
7
+ domain: ux
8
+ source:
9
+ - GOV.UK
10
+ applies_to:
11
+ - navigation
12
+ - page
13
+ success_criteria:
14
+ []
15
+ requirement: >
16
+ Hierarchies deeper than two levels SHOULD provide orientation (breadcrumbs, clear titles, back).
17
+ validation:
18
+ automated: false
19
+ manual: true
20
+ exceptions: documented-only
21
+ ---
22
+
23
+ # UX-004 — Depth with orientation
24
+
25
+ **Requirement:** Hierarchies deeper than two levels SHOULD provide orientation (breadcrumbs, clear titles, back).
26
+
27
+ **Bad:** Deep page with only a logo home link.
28
+
29
+ **Good:** Title + breadcrumb or explicit back to parent context.
30
+
31
+ ## Validation
32
+
33
+ - Design or engineering review
34
+
35
+ ## Lifecycle
36
+
37
+ - Status: `active`
38
+ - Priority: `P2`
39
+ - Exceptions: `documented-only`
@@ -0,0 +1,40 @@
1
+ ---
2
+ id: UX-005
3
+ title: Current location indicated
4
+ severity: MUST
5
+ status: active
6
+ priority: P1
7
+ domain: ux
8
+ source:
9
+ - WCAG-2.2
10
+ - NN/g
11
+ applies_to:
12
+ - navigation
13
+ success_criteria:
14
+ - "2.4.8"
15
+ requirement: >
16
+ Primary navigation MUST indicate the current section/page.
17
+ validation:
18
+ automated: true
19
+ manual: true
20
+ exceptions: documented-only
21
+ ---
22
+
23
+ # UX-005 — Current location indicated
24
+
25
+ **Requirement:** Primary navigation MUST indicate the current section/page.
26
+
27
+ **Bad:** All nav items look identical while on a child page.
28
+
29
+ **Good:** Active state on current section; page title / h1 align.
30
+
31
+ ## Validation
32
+
33
+ - Automated checks / lint / a11y tooling where applicable
34
+ - Design or engineering review
35
+
36
+ ## Lifecycle
37
+
38
+ - Status: `active`
39
+ - Priority: `P1`
40
+ - Exceptions: `documented-only`
@@ -0,0 +1,40 @@
1
+ ---
2
+ id: UX-006
3
+ title: Skip to content
4
+ severity: MUST
5
+ status: active
6
+ priority: P1
7
+ domain: ux
8
+ source:
9
+ - WCAG-2.2
10
+ applies_to:
11
+ - web
12
+ - navigation
13
+ success_criteria:
14
+ - "2.4.1"
15
+ requirement: >
16
+ Sites/apps with repeated chrome MUST provide a skip link or equivalent landmark bypass.
17
+ validation:
18
+ automated: true
19
+ manual: true
20
+ exceptions: documented-only
21
+ ---
22
+
23
+ # UX-006 — Skip to content
24
+
25
+ **Requirement:** Sites/apps with repeated chrome MUST provide a skip link or equivalent landmark bypass.
26
+
27
+ **Bad:** 100 tabs through the mega-nav every page load.
28
+
29
+ **Good:** Skip link or landmark structure that works with SR/keyboard.
30
+
31
+ ## Validation
32
+
33
+ - Automated checks / lint / a11y tooling where applicable
34
+ - Design or engineering review
35
+
36
+ ## Lifecycle
37
+
38
+ - Status: `active`
39
+ - Priority: `P1`
40
+ - Exceptions: `documented-only`
@@ -0,0 +1,44 @@
1
+ ---
2
+ id: UX-007
3
+ title: Persistent accessible labels
4
+ severity: MUST
5
+ status: active
6
+ priority: P0
7
+ domain: ux
8
+ source:
9
+ - WCAG-2.2
10
+ - GOV.UK
11
+ applies_to:
12
+ - input
13
+ - select
14
+ - textarea
15
+ - forms
16
+ success_criteria:
17
+ - "1.3.1"
18
+ - "3.3.2"
19
+ requirement: >
20
+ Every field MUST have a persistent accessible label. Placeholder-only labeling is forbidden.
21
+ validation:
22
+ automated: true
23
+ manual: true
24
+ exceptions: documented-only
25
+ ---
26
+
27
+ # UX-007 — Persistent accessible labels
28
+
29
+ **Requirement:** Every field MUST have a persistent accessible label. Placeholder-only labeling is forbidden.
30
+
31
+ **Bad:** placeholder="Email" with no label.
32
+
33
+ **Good:** Visible label associated via for/id or wrapping; placeholder optional hint only.
34
+
35
+ ## Validation
36
+
37
+ - Automated checks / lint / a11y tooling where applicable
38
+ - Design or engineering review
39
+
40
+ ## Lifecycle
41
+
42
+ - Status: `active`
43
+ - Priority: `P0`
44
+ - Exceptions: `documented-only`
@@ -0,0 +1,41 @@
1
+ ---
2
+ id: UX-008
3
+ title: Field errors identifiable and actionable
4
+ severity: MUST
5
+ status: active
6
+ priority: P0
7
+ domain: ux
8
+ source:
9
+ - WCAG-2.2
10
+ - GOV.UK
11
+ applies_to:
12
+ - forms
13
+ success_criteria:
14
+ - "3.3.1"
15
+ - "3.3.3"
16
+ requirement: >
17
+ Validation errors MUST identify the field, describe the problem, and how to fix it.
18
+ validation:
19
+ automated: true
20
+ manual: true
21
+ exceptions: documented-only
22
+ ---
23
+
24
+ # UX-008 — Field errors identifiable and actionable
25
+
26
+ **Requirement:** Validation errors MUST identify the field, describe the problem, and how to fix it.
27
+
28
+ **Bad:** Toast: ‘Invalid form’.
29
+
30
+ **Good:** Inline error + focus move to first error; summary for long forms.
31
+
32
+ ## Validation
33
+
34
+ - Automated checks / lint / a11y tooling where applicable
35
+ - Design or engineering review
36
+
37
+ ## Lifecycle
38
+
39
+ - Status: `active`
40
+ - Priority: `P0`
41
+ - Exceptions: `documented-only`
@@ -0,0 +1,39 @@
1
+ ---
2
+ id: UX-009
3
+ title: Required fields indicated in text
4
+ severity: MUST
5
+ status: active
6
+ priority: P1
7
+ domain: ux
8
+ source:
9
+ - WCAG-2.2
10
+ - GOV.UK
11
+ applies_to:
12
+ - forms
13
+ success_criteria:
14
+ - "1.4.1"
15
+ requirement: >
16
+ Required fields MUST be indicated in text (not color alone).
17
+ validation:
18
+ automated: false
19
+ manual: true
20
+ exceptions: documented-only
21
+ ---
22
+
23
+ # UX-009 — Required fields indicated in text
24
+
25
+ **Requirement:** Required fields MUST be indicated in text (not color alone).
26
+
27
+ **Bad:** Red asterisk only, unexplained.
28
+
29
+ **Good:** ‘Required’ in legend/label text (asterisk OK if explained once).
30
+
31
+ ## Validation
32
+
33
+ - Design or engineering review
34
+
35
+ ## Lifecycle
36
+
37
+ - Status: `active`
38
+ - Priority: `P1`
39
+ - Exceptions: `documented-only`
@@ -0,0 +1,40 @@
1
+ ---
2
+ id: UX-010
3
+ title: Complete UI states for data views
4
+ severity: MUST
5
+ status: active
6
+ priority: P1
7
+ domain: ux
8
+ source:
9
+ - NN/g
10
+ applies_to:
11
+ - page
12
+ - table
13
+ - list
14
+ success_criteria:
15
+ []
16
+ requirement: >
17
+ Key screens MUST define empty, loading, error, and success/populated states where data can be absent or fail.
18
+ validation:
19
+ automated: false
20
+ manual: true
21
+ exceptions: documented-only
22
+ ---
23
+
24
+ # UX-010 — Complete UI states for data views
25
+
26
+ **Requirement:** Key screens MUST define empty, loading, error, and success/populated states where data can be absent or fail.
27
+
28
+ **Bad:** Blank white area while fetching; crash on error.
29
+
30
+ **Good:** Skeleton/spinner; empty + CTA; recoverable error.
31
+
32
+ ## Validation
33
+
34
+ - Design or engineering review
35
+
36
+ ## Lifecycle
37
+
38
+ - Status: `active`
39
+ - Priority: `P1`
40
+ - Exceptions: `documented-only`
@@ -0,0 +1,40 @@
1
+ ---
2
+ id: UX-011
3
+ title: Confirm irreversible actions
4
+ severity: MUST
5
+ status: active
6
+ priority: P0
7
+ domain: ux
8
+ source:
9
+ - NN/g
10
+ - GOV.UK
11
+ applies_to:
12
+ - buttons
13
+ - dialogs
14
+ success_criteria:
15
+ []
16
+ requirement: >
17
+ Destructive/irreversible actions MUST require confirmation or undo.
18
+ validation:
19
+ automated: false
20
+ manual: true
21
+ exceptions: documented-only
22
+ ---
23
+
24
+ # UX-011 — Confirm irreversible actions
25
+
26
+ **Requirement:** Destructive/irreversible actions MUST require confirmation or undo.
27
+
28
+ **Bad:** Delete permanently on single click.
29
+
30
+ **Good:** Confirm dialog with consequence stated, or toast undo window.
31
+
32
+ ## Validation
33
+
34
+ - Design or engineering review
35
+
36
+ ## Lifecycle
37
+
38
+ - Status: `active`
39
+ - Priority: `P0`
40
+ - Exceptions: `documented-only`
@@ -0,0 +1,40 @@
1
+ ---
2
+ id: UX-012
3
+ title: Human-readable errors
4
+ severity: MUST
5
+ status: active
6
+ priority: P1
7
+ domain: ux
8
+ source:
9
+ - WCAG-2.2
10
+ - GOV.UK
11
+ applies_to:
12
+ - alerts
13
+ - forms
14
+ success_criteria:
15
+ - "3.3.3"
16
+ requirement: >
17
+ User-facing errors MUST NOT expose stack traces, SQL, or internal codes as the only message.
18
+ validation:
19
+ automated: false
20
+ manual: true
21
+ exceptions: documented-only
22
+ ---
23
+
24
+ # UX-012 — Human-readable errors
25
+
26
+ **Requirement:** User-facing errors MUST NOT expose stack traces, SQL, or internal codes as the only message.
27
+
28
+ **Bad:** PQXZ_99 constraint violation.
29
+
30
+ **Good:** Plain language + optional reference id for support.
31
+
32
+ ## Validation
33
+
34
+ - Design or engineering review
35
+
36
+ ## Lifecycle
37
+
38
+ - Status: `active`
39
+ - Priority: `P1`
40
+ - Exceptions: `documented-only`
@@ -0,0 +1,39 @@
1
+ ---
2
+ id: UX-013
3
+ title: Progressive disclosure
4
+ severity: SHOULD
5
+ status: active
6
+ priority: P2
7
+ domain: ux
8
+ source:
9
+ - NN/g
10
+ applies_to:
11
+ - forms
12
+ - page
13
+ success_criteria:
14
+ []
15
+ requirement: >
16
+ Advanced or rare options SHOULD be progressive, not dumped equally with core fields.
17
+ validation:
18
+ automated: false
19
+ manual: true
20
+ exceptions: documented-only
21
+ ---
22
+
23
+ # UX-013 — Progressive disclosure
24
+
25
+ **Requirement:** Advanced or rare options SHOULD be progressive, not dumped equally with core fields.
26
+
27
+ **Bad:** 40 equal fields on one screen for a simple task.
28
+
29
+ **Good:** Core fields first; advanced collapsed or stepped.
30
+
31
+ ## Validation
32
+
33
+ - Design or engineering review
34
+
35
+ ## Lifecycle
36
+
37
+ - Status: `active`
38
+ - Priority: `P2`
39
+ - Exceptions: `documented-only`
@@ -0,0 +1,19 @@
1
+ # Schemas
2
+
3
+ JSON Schema for the file shapes devia reads and writes. They are the contract; the validators
4
+ enforce them.
5
+
6
+ | Schema | Describes | Enforced by |
7
+ |---|---|---|
8
+ | [`rule.schema.json`](rule.schema.json) | A rule file's frontmatter | `scripts/validate-rules.mjs`, `src/lib/rules.mjs` |
9
+ | [`project-config.schema.json`](project-config.schema.json) | `.devia/devia.json` | `devia validate` (required keys today — see the debt register) |
10
+ | [`waiver.schema.json`](waiver.schema.json) | A time-boxed exception | `devia check` (expiry) |
11
+ | [`checklist.schema.json`](checklist.schema.json) | A machine-readable checklist | — |
12
+ | [`component.schema.json`](component.schema.json) | A design-system component record | — |
13
+ | [`token.schema.json`](token.schema.json) | A design token | — |
14
+
15
+ Schema versions live in [`../VERSION`](../VERSION). A change to a required field is a breaking
16
+ change: bump the version and say in [`../CHANGELOG.md`](../CHANGELOG.md) what adopters must do.
17
+
18
+ A schema listed with no enforcement is documentation, and is marked as such rather than implied
19
+ to be checked.
@@ -0,0 +1,34 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "title": "Checklist",
4
+ "type": "object",
5
+ "required": [
6
+ "id",
7
+ "items"
8
+ ],
9
+ "properties": {
10
+ "id": {
11
+ "type": "string"
12
+ },
13
+ "items": {
14
+ "type": "array",
15
+ "items": {
16
+ "type": "object",
17
+ "required": [
18
+ "text"
19
+ ],
20
+ "properties": {
21
+ "text": {
22
+ "type": "string"
23
+ },
24
+ "rule_ids": {
25
+ "type": "array",
26
+ "items": {
27
+ "type": "string"
28
+ }
29
+ }
30
+ }
31
+ }
32
+ }
33
+ }
34
+ }