@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: SEC-011
3
+ title: Dependency and secret scanning run in CI
4
+ severity: MUST
5
+ status: active
6
+ domain: security
7
+ priority: P1
8
+ source:
9
+ - OpenSSF Scorecard
10
+ - OWASP ASVS 5.0 V14
11
+ applies_to:
12
+ - repository
13
+ success_criteria:
14
+ []
15
+ requirement: >
16
+ CI MUST run a dependency audit and a secret scan on every pull request, and MUST fail the build on a known critical finding unless a human records an explicit, time-bounded acceptance.
17
+ validation:
18
+ automated: true
19
+ manual: false
20
+ exceptions: documented-only
21
+ ---
22
+
23
+ # SEC-011 — Dependency and secret scanning run in CI
24
+
25
+ **Requirement:** CI MUST run a dependency audit and a secret scan on every pull request, and MUST fail the build on a known critical finding unless a human records an explicit, time-bounded acceptance.
26
+
27
+ **Bad:** The audit runs weekly by email and nobody reads it.
28
+
29
+ **Good:** The audit is a required check; a critical advisory blocks the merge.
30
+
31
+ ## Validation
32
+
33
+ - The workflow contains both jobs
34
+ - Both are required checks in branch protection
35
+
36
+ ## Lifecycle
37
+
38
+ - Status: `active`
39
+ - Priority: `P1`
40
+ - Exceptions: `documented-only`
@@ -0,0 +1,40 @@
1
+ ---
2
+ id: SEC-012
3
+ title: Credentials are stored irreversibly and compared safely
4
+ severity: MUST
5
+ status: active
6
+ domain: security
7
+ priority: P0
8
+ source:
9
+ - OWASP ASVS 5.0 V6
10
+ applies_to:
11
+ - service
12
+ - database
13
+ success_criteria:
14
+ []
15
+ requirement: >
16
+ Passwords MUST be stored with a current memory-hard hash (argon2id or bcrypt with a modern cost). API tokens MUST be stored hashed. Secret comparisons MUST be constant time.
17
+ validation:
18
+ automated: false
19
+ manual: true
20
+ exceptions: none
21
+ ---
22
+
23
+ # SEC-012 — Credentials are stored irreversibly and compared safely
24
+
25
+ **Requirement:** Passwords MUST be stored with a current memory-hard hash (argon2id or bcrypt with a modern cost). API tokens MUST be stored hashed. Secret comparisons MUST be constant time.
26
+
27
+ **Bad:** SHA-256 without a salt, or `token === storedToken`.
28
+
29
+ **Good:** argon2id with per-credential salt; tokens stored as hashes; comparisons use a timing-safe function.
30
+
31
+ ## Validation
32
+
33
+ - Read the hashing configuration
34
+ - Confirm no reversible storage of a credential
35
+
36
+ ## Lifecycle
37
+
38
+ - Status: `active`
39
+ - Priority: `P0`
40
+ - Exceptions: `none`
@@ -0,0 +1,38 @@
1
+ ---
2
+ id: STATE-001
3
+ title: Interaction state set
4
+ severity: MUST
5
+ status: active
6
+ priority: P1
7
+ domain: states
8
+ source:
9
+ - devia
10
+ applies_to:
11
+ - components
12
+ success_criteria:
13
+ []
14
+ requirement: >
15
+ Interactive components MUST define default, hover (if pointer), focus-visible, active, and disabled as applicable.
16
+ validation:
17
+ automated: false
18
+ manual: true
19
+ exceptions: documented-only
20
+ ---
21
+
22
+ # STATE-001 — Interaction state set
23
+
24
+ **Requirement:** Interactive components MUST define default, hover (if pointer), focus-visible, active, and disabled as applicable.
25
+
26
+ **Bad:** Only default styles shipped.
27
+
28
+ **Good:** Full interaction matrix in component spec.
29
+
30
+ ## Validation
31
+
32
+ - Design or engineering review
33
+
34
+ ## Lifecycle
35
+
36
+ - Status: `active`
37
+ - Priority: `P1`
38
+ - Exceptions: `documented-only`
@@ -0,0 +1,39 @@
1
+ ---
2
+ id: STATE-002
3
+ title: Async outcome states
4
+ severity: MUST
5
+ status: active
6
+ priority: P1
7
+ domain: states
8
+ source:
9
+ - NN/g
10
+ applies_to:
11
+ - async
12
+ - forms
13
+ success_criteria:
14
+ []
15
+ requirement: >
16
+ Async operations MUST expose pending, success, and failure (with retry when safe).
17
+ validation:
18
+ automated: false
19
+ manual: true
20
+ exceptions: documented-only
21
+ ---
22
+
23
+ # STATE-002 — Async outcome states
24
+
25
+ **Requirement:** Async operations MUST expose pending, success, and failure (with retry when safe).
26
+
27
+ **Bad:** Spinner forever on failure.
28
+
29
+ **Good:** Error + Retry.
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,39 @@
1
+ ---
2
+ id: STATE-003
3
+ title: Permission-denied and read-only
4
+ severity: MUST
5
+ status: active
6
+ priority: P1
7
+ domain: states
8
+ source:
9
+ - NN/g
10
+ applies_to:
11
+ - page
12
+ - forms
13
+ success_criteria:
14
+ []
15
+ requirement: >
16
+ When the user lacks permission, the UI MUST explain denial (not a blank/broken page).
17
+ validation:
18
+ automated: false
19
+ manual: true
20
+ exceptions: documented-only
21
+ ---
22
+
23
+ # STATE-003 — Permission-denied and read-only
24
+
25
+ **Requirement:** When the user lacks permission, the UI MUST explain denial (not a blank/broken page).
26
+
27
+ **Bad:** Empty screen for forbidden resource.
28
+
29
+ **Good:** Permission denied message + next step.
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,38 @@
1
+ ---
2
+ id: STATE-004
3
+ title: Unsaved changes
4
+ severity: SHOULD
5
+ status: active
6
+ priority: P2
7
+ domain: states
8
+ source:
9
+ - NN/g
10
+ applies_to:
11
+ - forms
12
+ success_criteria:
13
+ []
14
+ requirement: >
15
+ Views with unsaved edits SHOULD warn before destructive navigation.
16
+ validation:
17
+ automated: false
18
+ manual: true
19
+ exceptions: documented-only
20
+ ---
21
+
22
+ # STATE-004 — Unsaved changes
23
+
24
+ **Requirement:** Views with unsaved edits SHOULD warn before destructive navigation.
25
+
26
+ **Bad:** Back discards form silently.
27
+
28
+ **Good:** Leave without saving? confirm.
29
+
30
+ ## Validation
31
+
32
+ - Design or engineering review
33
+
34
+ ## Lifecycle
35
+
36
+ - Status: `active`
37
+ - Priority: `P2`
38
+ - Exceptions: `documented-only`
@@ -0,0 +1,39 @@
1
+ ---
2
+ id: TST-001
3
+ title: Business rules are covered by automated tests
4
+ severity: MUST
5
+ status: active
6
+ domain: testing
7
+ priority: P0
8
+ source:
9
+ - devia
10
+ applies_to:
11
+ - repository
12
+ success_criteria:
13
+ []
14
+ requirement: >
15
+ Every rule that decides money, access, state transitions or eligibility MUST have an automated test, including the boundary and the refusal path — not only the happy case.
16
+ validation:
17
+ automated: true
18
+ manual: true
19
+ exceptions: none
20
+ ---
21
+
22
+ # TST-001 — Business rules are covered by automated tests
23
+
24
+ **Requirement:** Every rule that decides money, access, state transitions or eligibility MUST have an automated test, including the boundary and the refusal path — not only the happy case.
25
+
26
+ **Bad:** A discount rule with one test that proves it applies, and none that prove it stops applying.
27
+
28
+ **Good:** Tests for below, at, and above the threshold, plus the rejection path.
29
+
30
+ ## Validation
31
+
32
+ - The rule's boundaries appear in the test names
33
+ - The test fails when the rule is inverted
34
+
35
+ ## Lifecycle
36
+
37
+ - Status: `active`
38
+ - Priority: `P0`
39
+ - Exceptions: `none`
@@ -0,0 +1,39 @@
1
+ ---
2
+ id: TST-002
3
+ title: Authorization and isolation paths are tested
4
+ severity: MUST
5
+ status: active
6
+ domain: testing
7
+ priority: P0
8
+ source:
9
+ - OWASP ASVS 5.0 V4
10
+ applies_to:
11
+ - repository
12
+ success_criteria:
13
+ []
14
+ requirement: >
15
+ Tests MUST prove that an unauthorized actor is refused and that one tenant cannot reach another's data. Absence of such a test is a P0 gap even when the code looks correct.
16
+ validation:
17
+ automated: false
18
+ manual: true
19
+ exceptions: none
20
+ ---
21
+
22
+ # TST-002 — Authorization and isolation paths are tested
23
+
24
+ **Requirement:** Tests MUST prove that an unauthorized actor is refused and that one tenant cannot reach another's data. Absence of such a test is a P0 gap even when the code looks correct.
25
+
26
+ **Bad:** Only the authenticated-happy-path is tested; the 403 case is assumed.
27
+
28
+ **Good:** A test per sensitive route asserting 401/403, plus a cross-tenant read and write test.
29
+
30
+ ## Validation
31
+
32
+ - Refusal tests exist for the routes touched
33
+ - Cross-tenant tests exist
34
+
35
+ ## Lifecycle
36
+
37
+ - Status: `active`
38
+ - Priority: `P0`
39
+ - Exceptions: `none`
@@ -0,0 +1,39 @@
1
+ ---
2
+ id: TST-003
3
+ title: Never disable or weaken a test to make CI pass
4
+ severity: MUST NOT
5
+ status: active
6
+ domain: testing
7
+ priority: P0
8
+ source:
9
+ - devia
10
+ applies_to:
11
+ - repository
12
+ success_criteria:
13
+ []
14
+ requirement: >
15
+ Skipping, deleting, loosening an assertion, or widening a tolerance to turn CI green is forbidden. Either fix the code, or record the failure as debt and stop.
16
+ validation:
17
+ automated: true
18
+ manual: true
19
+ exceptions: none
20
+ ---
21
+
22
+ # TST-003 — Never disable or weaken a test to make CI pass
23
+
24
+ **Requirement:** Skipping, deleting, loosening an assertion, or widening a tolerance to turn CI green is forbidden. Either fix the code, or record the failure as debt and stop.
25
+
26
+ **Bad:** `it.skip` added in the same commit as the feature that broke it.
27
+
28
+ **Good:** The regression is fixed, or the change is reverted and a debt line is opened.
29
+
30
+ ## Validation
31
+
32
+ - Diff contains no new skip, `only`, or removed assertion
33
+ - Coverage did not drop silently
34
+
35
+ ## Lifecycle
36
+
37
+ - Status: `active`
38
+ - Priority: `P0`
39
+ - Exceptions: `none`
@@ -0,0 +1,38 @@
1
+ ---
2
+ id: TST-004
3
+ title: Every bug fix ships with a regression test
4
+ severity: MUST
5
+ status: active
6
+ domain: testing
7
+ priority: P1
8
+ source:
9
+ - devia
10
+ applies_to:
11
+ - repository
12
+ success_criteria:
13
+ []
14
+ requirement: >
15
+ A defect fix MUST include a test that fails before the fix and passes after it.
16
+ validation:
17
+ automated: false
18
+ manual: true
19
+ exceptions: documented-only
20
+ ---
21
+
22
+ # TST-004 — Every bug fix ships with a regression test
23
+
24
+ **Requirement:** A defect fix MUST include a test that fails before the fix and passes after it.
25
+
26
+ **Bad:** A one-line fix with the note 'tested manually'.
27
+
28
+ **Good:** A test reproducing the reported input, committed with the fix.
29
+
30
+ ## Validation
31
+
32
+ - The test fails when the fix is reverted
33
+
34
+ ## Lifecycle
35
+
36
+ - Status: `active`
37
+ - Priority: `P1`
38
+ - Exceptions: `documented-only`
@@ -0,0 +1,40 @@
1
+ ---
2
+ id: TST-005
3
+ title: Critical journeys are covered end to end
4
+ severity: SHOULD
5
+ status: active
6
+ domain: testing
7
+ priority: P2
8
+ source:
9
+ - devia
10
+ applies_to:
11
+ - web
12
+ - api
13
+ success_criteria:
14
+ []
15
+ requirement: >
16
+ The few journeys the product cannot afford to break — sign in, pay, submit, export — SHOULD have an end-to-end test that exercises the real stack.
17
+ validation:
18
+ automated: false
19
+ manual: true
20
+ exceptions: documented-only
21
+ ---
22
+
23
+ # TST-005 — Critical journeys are covered end to end
24
+
25
+ **Requirement:** The few journeys the product cannot afford to break — sign in, pay, submit, export — SHOULD have an end-to-end test that exercises the real stack.
26
+
27
+ **Bad:** Thorough unit tests and a checkout that has never been driven end to end.
28
+
29
+ **Good:** One end-to-end test per critical journey, run before release.
30
+
31
+ ## Validation
32
+
33
+ - The journey list exists in `.devia/05_FLOWS.md`
34
+ - Each has a test or a named manual step
35
+
36
+ ## Lifecycle
37
+
38
+ - Status: `active`
39
+ - Priority: `P2`
40
+ - Exceptions: `documented-only`
@@ -0,0 +1,39 @@
1
+ ---
2
+ id: TST-006
3
+ title: Tests are deterministic and independent
4
+ severity: MUST
5
+ status: active
6
+ domain: testing
7
+ priority: P1
8
+ source:
9
+ - devia
10
+ applies_to:
11
+ - repository
12
+ success_criteria:
13
+ []
14
+ requirement: >
15
+ Tests MUST NOT depend on execution order, wall-clock time, network access, or state left by another test. A flaky test is fixed or removed, never retried into green.
16
+ validation:
17
+ automated: true
18
+ manual: true
19
+ exceptions: documented-only
20
+ ---
21
+
22
+ # TST-006 — Tests are deterministic and independent
23
+
24
+ **Requirement:** Tests MUST NOT depend on execution order, wall-clock time, network access, or state left by another test. A flaky test is fixed or removed, never retried into green.
25
+
26
+ **Bad:** A test that passes locally and fails in CI because it assumes today's date.
27
+
28
+ **Good:** Time and randomness are injected; each test sets up and tears down its own data.
29
+
30
+ ## Validation
31
+
32
+ - Run the suite twice in a different order
33
+ - No retry loop hides a flake
34
+
35
+ ## Lifecycle
36
+
37
+ - Status: `active`
38
+ - Priority: `P1`
39
+ - Exceptions: `documented-only`
@@ -0,0 +1,40 @@
1
+ ---
2
+ id: UI-001
3
+ title: Type from tokens
4
+ severity: MUST
5
+ status: active
6
+ priority: P1
7
+ domain: ui
8
+ source:
9
+ - Carbon
10
+ - Material
11
+ applies_to:
12
+ - typography
13
+ success_criteria:
14
+ []
15
+ requirement: >
16
+ UI text sizes/weights/line-heights MUST use design tokens (or the system type scale), not random px values.
17
+ validation:
18
+ automated: true
19
+ manual: true
20
+ exceptions: documented-only
21
+ ---
22
+
23
+ # UI-001 — Type from tokens
24
+
25
+ **Requirement:** UI text sizes/weights/line-heights MUST use design tokens (or the system type scale), not random px values.
26
+
27
+ **Bad:** font-size: 13.5px inline on one card.
28
+
29
+ **Good:** --font-size-sm / role token.
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,38 @@
1
+ ---
2
+ id: UI-002
3
+ title: Readable body measure
4
+ severity: SHOULD
5
+ status: active
6
+ priority: P2
7
+ domain: ui
8
+ source:
9
+ - NN/g
10
+ applies_to:
11
+ - typography
12
+ success_criteria:
13
+ []
14
+ requirement: >
15
+ Long-form reading SHOULD keep a comfortable line length (roughly 45–75 characters where practical).
16
+ validation:
17
+ automated: false
18
+ manual: true
19
+ exceptions: documented-only
20
+ ---
21
+
22
+ # UI-002 — Readable body measure
23
+
24
+ **Requirement:** Long-form reading SHOULD keep a comfortable line length (roughly 45–75 characters where practical).
25
+
26
+ **Bad:** Full-bleed 200-char lines of body text.
27
+
28
+ **Good:** Constrained content width for articles/help.
29
+
30
+ ## Validation
31
+
32
+ - Design or engineering review
33
+
34
+ ## Lifecycle
35
+
36
+ - Status: `active`
37
+ - Priority: `P2`
38
+ - Exceptions: `documented-only`
@@ -0,0 +1,41 @@
1
+ ---
2
+ id: UI-003
3
+ title: Semantic tokens over raw hex
4
+ severity: MUST
5
+ status: active
6
+ priority: P1
7
+ domain: ui
8
+ source:
9
+ - DTCG
10
+ - Carbon
11
+ applies_to:
12
+ - color
13
+ - components
14
+ success_criteria:
15
+ []
16
+ requirement: >
17
+ Product UI MUST consume semantic tokens, not scattered raw hex (except in token definitions).
18
+ validation:
19
+ automated: true
20
+ manual: true
21
+ exceptions: documented-only
22
+ ---
23
+
24
+ # UI-003 — Semantic tokens over raw hex
25
+
26
+ **Requirement:** Product UI MUST consume semantic tokens, not scattered raw hex (except in token definitions).
27
+
28
+ **Bad:** #ff3b30 hard-coded in 12 components.
29
+
30
+ **Good:** Components reference danger / primary tokens.
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,41 @@
1
+ ---
2
+ id: UI-004
3
+ title: Not color alone
4
+ severity: MUST
5
+ status: active
6
+ priority: P0
7
+ domain: ui
8
+ source:
9
+ - WCAG-2.2
10
+ applies_to:
11
+ - status
12
+ - forms
13
+ - charts
14
+ success_criteria:
15
+ - "1.4.1"
16
+ requirement: >
17
+ Status and meaning MUST NOT be conveyed by color alone.
18
+ validation:
19
+ automated: true
20
+ manual: true
21
+ exceptions: documented-only
22
+ ---
23
+
24
+ # UI-004 — Not color alone
25
+
26
+ **Requirement:** Status and meaning MUST NOT be conveyed by color alone.
27
+
28
+ **Bad:** Red/green dots only for status.
29
+
30
+ **Good:** Color + text/icon/pattern.
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: UI-005
3
+ title: Spacing scale
4
+ severity: MUST
5
+ status: active
6
+ priority: P1
7
+ domain: ui
8
+ source:
9
+ - Carbon
10
+ - Material
11
+ applies_to:
12
+ - layout
13
+ - components
14
+ success_criteria:
15
+ []
16
+ requirement: >
17
+ Spacing MUST use the system scale (e.g. 4/8-based tokens), not arbitrary values.
18
+ validation:
19
+ automated: true
20
+ manual: true
21
+ exceptions: documented-only
22
+ ---
23
+
24
+ # UI-005 — Spacing scale
25
+
26
+ **Requirement:** Spacing MUST use the system scale (e.g. 4/8-based tokens), not arbitrary values.
27
+
28
+ **Bad:** margin: 13px 7px.
29
+
30
+ **Good:** space.3 / --space-3.
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`