@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,44 @@
1
+ ---
2
+ id: MEM-001
3
+ title: Undecided is never coded as a silent truth
4
+ severity: MUST
5
+ status: active
6
+ domain: memory
7
+ priority: P0
8
+ source:
9
+ - devia
10
+ applies_to:
11
+ - agent
12
+ - repository
13
+ success_criteria:
14
+ []
15
+ requirement: >
16
+ When a rule has not been decided, the implementation MUST make its assumption visible and the open question MUST be recorded in `.devia/11_GAPS.md`. Silent defaults MUST NOT become de facto policy.
17
+ validation:
18
+ automated: false
19
+ manual: true
20
+ exceptions: none
21
+ ---
22
+
23
+ # MEM-001 — Undecided is never coded as a silent truth
24
+
25
+ **Requirement:** When a rule has not been decided, the implementation MUST make its assumption visible and the open question MUST be recorded in `.devia/11_GAPS.md`. Silent defaults MUST NOT become de facto policy.
26
+
27
+ **Bad:** The code rounds down, nobody decided that, and in six months it is 'how it works'.
28
+
29
+ **Good:** A named constant, a comment pointing at the gap line, and a gap entry awaiting a decision.
30
+
31
+ ## Validation
32
+
33
+ - The gap registry contains the open question
34
+ - The code's assumption is visible
35
+
36
+ ## Lifecycle
37
+
38
+ - Status: `active`
39
+ - Priority: `P0`
40
+ - Exceptions: `none`
41
+
42
+ ## See also
43
+
44
+ - [MEMORY.md](../../MEMORY.md)
@@ -0,0 +1,39 @@
1
+ ---
2
+ id: MEM-002
3
+ title: Decided but not built is recorded as debt
4
+ severity: MUST
5
+ status: active
6
+ domain: memory
7
+ priority: P1
8
+ source:
9
+ - devia
10
+ applies_to:
11
+ - agent
12
+ - repository
13
+ success_criteria:
14
+ []
15
+ requirement: >
16
+ When the project has decided a rule and the code does not honour it yet, a debt line MUST be added to `.devia/12_DEBT.md` — even when the agent is not going to fix it now.
17
+ validation:
18
+ automated: false
19
+ manual: true
20
+ exceptions: documented-only
21
+ ---
22
+
23
+ # MEM-002 — Decided but not built is recorded as debt
24
+
25
+ **Requirement:** When the project has decided a rule and the code does not honour it yet, a debt line MUST be added to `.devia/12_DEBT.md` — even when the agent is not going to fix it now.
26
+
27
+ **Bad:** Noticing that a validation is missing and moving on because it was not the task.
28
+
29
+ **Good:** A debt line naming the rule, the place, and what it would take.
30
+
31
+ ## Validation
32
+
33
+ - The debt registry gained a line for what was found
34
+
35
+ ## Lifecycle
36
+
37
+ - Status: `active`
38
+ - Priority: `P1`
39
+ - Exceptions: `documented-only`
@@ -0,0 +1,38 @@
1
+ ---
2
+ id: MEM-003
3
+ title: Debt lines are closed only by the change that discharges them
4
+ severity: MUST
5
+ status: active
6
+ domain: memory
7
+ priority: P1
8
+ source:
9
+ - devia
10
+ applies_to:
11
+ - repository
12
+ success_criteria:
13
+ []
14
+ requirement: >
15
+ A debt line MUST be removed in the same change that makes it false, and MUST be reduced rather than deleted when the work is partly done. Removing a line for tidiness is forbidden.
16
+ validation:
17
+ automated: false
18
+ manual: true
19
+ exceptions: documented-only
20
+ ---
21
+
22
+ # MEM-003 — Debt lines are closed only by the change that discharges them
23
+
24
+ **Requirement:** A debt line MUST be removed in the same change that makes it false, and MUST be reduced rather than deleted when the work is partly done. Removing a line for tidiness is forbidden.
25
+
26
+ **Bad:** Deleting three debt lines during cleanup because they 'look old'.
27
+
28
+ **Good:** The line for the fixed part is removed; the remainder is rewritten to what is still true.
29
+
30
+ ## Validation
31
+
32
+ - Every removed debt line is discharged by the same diff
33
+
34
+ ## Lifecycle
35
+
36
+ - Status: `active`
37
+ - Priority: `P1`
38
+ - Exceptions: `documented-only`
@@ -0,0 +1,38 @@
1
+ ---
2
+ id: MEM-004
3
+ title: Registry identifiers are monotone and never reused
4
+ severity: MUST
5
+ status: active
6
+ domain: memory
7
+ priority: P1
8
+ source:
9
+ - devia
10
+ applies_to:
11
+ - repository
12
+ success_criteria:
13
+ []
14
+ requirement: >
15
+ Gap and debt identifiers MUST increase and MUST NOT be reused after closure, so that an old reference never resolves to a different subject.
16
+ validation:
17
+ automated: true
18
+ manual: true
19
+ exceptions: documented-only
20
+ ---
21
+
22
+ # MEM-004 — Registry identifiers are monotone and never reused
23
+
24
+ **Requirement:** Gap and debt identifiers MUST increase and MUST NOT be reused after closure, so that an old reference never resolves to a different subject.
25
+
26
+ **Bad:** Reusing `G7` for a new gap after the original was closed.
27
+
28
+ **Good:** The next gap is `G23`; `G7` stays closed and readable in history.
29
+
30
+ ## Validation
31
+
32
+ - `devia validate` reports no duplicate or reused id
33
+
34
+ ## Lifecycle
35
+
36
+ - Status: `active`
37
+ - Priority: `P1`
38
+ - Exceptions: `documented-only`
@@ -0,0 +1,38 @@
1
+ ---
2
+ id: MEM-005
3
+ title: Verify before recording
4
+ severity: MUST
5
+ status: active
6
+ domain: memory
7
+ priority: P1
8
+ source:
9
+ - devia
10
+ applies_to:
11
+ - agent
12
+ success_criteria:
13
+ []
14
+ requirement: >
15
+ A gap, debt or never/always line MUST be checked against the code before it is written. A false line is worse than a missing one because it is trusted.
16
+ validation:
17
+ automated: false
18
+ manual: true
19
+ exceptions: documented-only
20
+ ---
21
+
22
+ # MEM-005 — Verify before recording
23
+
24
+ **Requirement:** A gap, debt or never/always line MUST be checked against the code before it is written. A false line is worse than a missing one because it is trusted.
25
+
26
+ **Bad:** Recording 'no rate limiting anywhere' without opening the middleware that implements it.
27
+
28
+ **Good:** The claim is checked, then recorded with the file that shows it.
29
+
30
+ ## Validation
31
+
32
+ - Each new registry line names where the claim was verified
33
+
34
+ ## Lifecycle
35
+
36
+ - Status: `active`
37
+ - Priority: `P1`
38
+ - Exceptions: `documented-only`
@@ -0,0 +1,38 @@
1
+ ---
2
+ id: MEM-006
3
+ title: Sweep the surface you touch
4
+ severity: MUST
5
+ status: active
6
+ domain: memory
7
+ priority: P1
8
+ source:
9
+ - devia
10
+ applies_to:
11
+ - repository
12
+ success_criteria:
13
+ []
14
+ requirement: >
15
+ A change to a shared surface — schema, route family, port, interface, design token — MUST sweep that surface for other violations and record what it finds. Finding nothing is a valid result and MUST be stated.
16
+ validation:
17
+ automated: false
18
+ manual: true
19
+ exceptions: documented-only
20
+ ---
21
+
22
+ # MEM-006 — Sweep the surface you touch
23
+
24
+ **Requirement:** A change to a shared surface — schema, route family, port, interface, design token — MUST sweep that surface for other violations and record what it finds. Finding nothing is a valid result and MUST be stated.
25
+
26
+ **Bad:** Fixing one endpoint's authorization and leaving the four siblings unexamined and unrecorded.
27
+
28
+ **Good:** All five are checked; three are fine; two become debt lines.
29
+
30
+ ## Validation
31
+
32
+ - The report states the swept surface and the outcome
33
+
34
+ ## Lifecycle
35
+
36
+ - Status: `active`
37
+ - Priority: `P1`
38
+ - Exceptions: `documented-only`
@@ -0,0 +1,38 @@
1
+ ---
2
+ id: MEM-007
3
+ title: No perishable facts in overview or index files
4
+ severity: MUST NOT
5
+ status: active
6
+ domain: memory
7
+ priority: P1
8
+ source:
9
+ - devia
10
+ applies_to:
11
+ - repository
12
+ success_criteria:
13
+ []
14
+ requirement: >
15
+ Memory files describing what the project is MUST NOT contain counters, current branches, sprint plans or 'next we will' statements. Perishable facts belong to the registries and the tracker.
16
+ validation:
17
+ automated: true
18
+ manual: true
19
+ exceptions: documented-only
20
+ ---
21
+
22
+ # MEM-007 — No perishable facts in overview or index files
23
+
24
+ **Requirement:** Memory files describing what the project is MUST NOT contain counters, current branches, sprint plans or 'next we will' statements. Perishable facts belong to the registries and the tracker.
25
+
26
+ **Bad:** '42 tests passing, currently building the invoice screen' in `00_OVERVIEW.md`.
27
+
28
+ **Good:** The overview describes the product and the stack; progress lives in the registries.
29
+
30
+ ## Validation
31
+
32
+ - `devia validate` finds no perishable-fact markers
33
+
34
+ ## Lifecycle
35
+
36
+ - Status: `active`
37
+ - Priority: `P1`
38
+ - Exceptions: `documented-only`
@@ -0,0 +1,38 @@
1
+ ---
2
+ id: MEM-008
3
+ title: Memory points at documentation, it does not duplicate it
4
+ severity: MUST
5
+ status: active
6
+ domain: memory
7
+ priority: P1
8
+ source:
9
+ - devia
10
+ applies_to:
11
+ - repository
12
+ success_criteria:
13
+ []
14
+ requirement: >
15
+ Memory files MUST reference the authoritative document or file for detail instead of copying it, so there is exactly one place to change when the detail changes.
16
+ validation:
17
+ automated: false
18
+ manual: true
19
+ exceptions: documented-only
20
+ ---
21
+
22
+ # MEM-008 — Memory points at documentation, it does not duplicate it
23
+
24
+ **Requirement:** Memory files MUST reference the authoritative document or file for detail instead of copying it, so there is exactly one place to change when the detail changes.
25
+
26
+ **Bad:** The full table definition pasted into the memory, drifting from the migration within a week.
27
+
28
+ **Good:** '`invoice` — defined in `migrations/20260812_invoice.sql`, rules in `docs/BILLING.md` §4.'
29
+
30
+ ## Validation
31
+
32
+ - New memory content links rather than copies
33
+
34
+ ## Lifecycle
35
+
36
+ - Status: `active`
37
+ - Priority: `P1`
38
+ - Exceptions: `documented-only`
@@ -0,0 +1,39 @@
1
+ ---
2
+ id: MEM-009
3
+ title: Code and memory ship in the same change
4
+ severity: MUST
5
+ status: active
6
+ domain: memory
7
+ priority: P0
8
+ source:
9
+ - devia
10
+ applies_to:
11
+ - repository
12
+ success_criteria:
13
+ []
14
+ requirement: >
15
+ When a change makes a memory file false, the same change MUST fix it. `impact-map.yaml` names which files each kind of change touches.
16
+ validation:
17
+ automated: true
18
+ manual: true
19
+ exceptions: none
20
+ ---
21
+
22
+ # MEM-009 — Code and memory ship in the same change
23
+
24
+ **Requirement:** When a change makes a memory file false, the same change MUST fix it. `impact-map.yaml` names which files each kind of change touches.
25
+
26
+ **Bad:** A new endpoint merged on Monday; `02_SURFACES.md` updated 'later'.
27
+
28
+ **Good:** The endpoint and the surfaces entry land in the same pull request.
29
+
30
+ ## Validation
31
+
32
+ - `devia doctor` reports no memory lag for the surfaces touched
33
+ - The impact map entry was honoured
34
+
35
+ ## Lifecycle
36
+
37
+ - Status: `active`
38
+ - Priority: `P0`
39
+ - Exceptions: `none`
@@ -0,0 +1,38 @@
1
+ ---
2
+ id: MEM-010
3
+ title: Never/always lines come from real incidents
4
+ severity: SHOULD
5
+ status: active
6
+ domain: memory
7
+ priority: P2
8
+ source:
9
+ - devia
10
+ applies_to:
11
+ - repository
12
+ success_criteria:
13
+ []
14
+ requirement: >
15
+ `10_NEVER_ALWAYS.md` SHOULD grow one line at a time, each earned by a mistake that actually happened or a decision that was actually contested. Speculative rules dilute the file and train agents to skim.
16
+ validation:
17
+ automated: false
18
+ manual: true
19
+ exceptions: documented-only
20
+ ---
21
+
22
+ # MEM-010 — Never/always lines come from real incidents
23
+
24
+ **Requirement:** `10_NEVER_ALWAYS.md` SHOULD grow one line at a time, each earned by a mistake that actually happened or a decision that was actually contested. Speculative rules dilute the file and train agents to skim.
25
+
26
+ **Bad:** Forty generic best-practice lines copied from a blog post.
27
+
28
+ **Good:** Six lines, each traceable to a bug this project actually shipped.
29
+
30
+ ## Validation
31
+
32
+ - Each line names the trap and the correct move
33
+
34
+ ## Lifecycle
35
+
36
+ - Status: `active`
37
+ - Priority: `P2`
38
+ - Exceptions: `documented-only`
@@ -0,0 +1,38 @@
1
+ ---
2
+ id: MEM-011
3
+ title: Never delete a registry line you did not discharge
4
+ severity: MUST NOT
5
+ status: active
6
+ domain: memory
7
+ priority: P0
8
+ source:
9
+ - devia
10
+ applies_to:
11
+ - agent
12
+ success_criteria:
13
+ []
14
+ requirement: >
15
+ An agent MUST NOT remove a gap or debt line to make a report look cleaner, and MUST NOT close a line on the basis that it 'seems handled'. Closure requires naming the change that closed it.
16
+ validation:
17
+ automated: true
18
+ manual: true
19
+ exceptions: none
20
+ ---
21
+
22
+ # MEM-011 — Never delete a registry line you did not discharge
23
+
24
+ **Requirement:** An agent MUST NOT remove a gap or debt line to make a report look cleaner, and MUST NOT close a line on the basis that it 'seems handled'. Closure requires naming the change that closed it.
25
+
26
+ **Bad:** Clearing the debt file during a refactor because it was 'out of date'.
27
+
28
+ **Good:** Each closure names its commit; anything unverified stays open.
29
+
30
+ ## Validation
31
+
32
+ - Removed lines are justified in the same diff
33
+
34
+ ## Lifecycle
35
+
36
+ - Status: `active`
37
+ - Priority: `P0`
38
+ - Exceptions: `none`
@@ -0,0 +1,38 @@
1
+ ---
2
+ id: MOT-001
3
+ title: Motion has a job
4
+ severity: SHOULD
5
+ status: active
6
+ priority: P2
7
+ domain: motion
8
+ source:
9
+ - Material
10
+ applies_to:
11
+ - motion
12
+ success_criteria:
13
+ []
14
+ requirement: >
15
+ Animation SHOULD communicate state/hierarchy, not only decoration.
16
+ validation:
17
+ automated: false
18
+ manual: true
19
+ exceptions: documented-only
20
+ ---
21
+
22
+ # MOT-001 — Motion has a job
23
+
24
+ **Requirement:** Animation SHOULD communicate state/hierarchy, not only decoration.
25
+
26
+ **Bad:** Infinite bouncing logos.
27
+
28
+ **Good:** Short transition on drawer open.
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,40 @@
1
+ ---
2
+ id: OBS-001
3
+ title: Logs are structured, correlated, and free of secrets
4
+ severity: MUST
5
+ status: active
6
+ domain: observability
7
+ priority: P1
8
+ source:
9
+ - Google SRE
10
+ applies_to:
11
+ - service
12
+ - api
13
+ success_criteria:
14
+ []
15
+ requirement: >
16
+ Logs MUST be structured, MUST carry a request or trace identifier, and MUST NOT contain credentials, tokens, full payment data or unnecessary personal data.
17
+ validation:
18
+ automated: true
19
+ manual: true
20
+ exceptions: documented-only
21
+ ---
22
+
23
+ # OBS-001 — Logs are structured, correlated, and free of secrets
24
+
25
+ **Requirement:** Logs MUST be structured, MUST carry a request or trace identifier, and MUST NOT contain credentials, tokens, full payment data or unnecessary personal data.
26
+
27
+ **Bad:** `console.log(request.body)` on a payment route.
28
+
29
+ **Good:** A structured entry with the correlation id, the operation, the outcome and safe identifiers.
30
+
31
+ ## Validation
32
+
33
+ - Grep the diff for raw body or header logging
34
+ - Correlation id present on the new paths
35
+
36
+ ## Lifecycle
37
+
38
+ - Status: `active`
39
+ - Priority: `P1`
40
+ - Exceptions: `documented-only`
@@ -0,0 +1,40 @@
1
+ ---
2
+ id: OBS-002
3
+ title: Errors reach a system a human watches
4
+ severity: MUST
5
+ status: active
6
+ domain: observability
7
+ priority: P1
8
+ source:
9
+ - Google SRE
10
+ applies_to:
11
+ - service
12
+ - web
13
+ success_criteria:
14
+ []
15
+ requirement: >
16
+ Unhandled errors and failed background work MUST be reported to an error tracker or alert channel with enough context to reproduce, and MUST NOT be swallowed by an empty catch.
17
+ validation:
18
+ automated: true
19
+ manual: true
20
+ exceptions: documented-only
21
+ ---
22
+
23
+ # OBS-002 — Errors reach a system a human watches
24
+
25
+ **Requirement:** Unhandled errors and failed background work MUST be reported to an error tracker or alert channel with enough context to reproduce, and MUST NOT be swallowed by an empty catch.
26
+
27
+ **Bad:** `catch (e) {}` and a job that fails silently every night.
28
+
29
+ **Good:** The error is reported with the correlation id and the job name; the failure is visible without asking.
30
+
31
+ ## Validation
32
+
33
+ - No empty catch in the diff
34
+ - The new failure path reports somewhere
35
+
36
+ ## Lifecycle
37
+
38
+ - Status: `active`
39
+ - Priority: `P1`
40
+ - Exceptions: `documented-only`
@@ -0,0 +1,38 @@
1
+ ---
2
+ id: OBS-003
3
+ title: Alerts are actionable and owned
4
+ severity: MUST
5
+ status: active
6
+ domain: observability
7
+ priority: P1
8
+ source:
9
+ - Google SRE
10
+ applies_to:
11
+ - devops
12
+ success_criteria:
13
+ []
14
+ requirement: >
15
+ An alert MUST describe a condition a human can act on, name what to do, and have an owner. Alerts nobody acts on MUST be deleted, not muted.
16
+ validation:
17
+ automated: false
18
+ manual: true
19
+ exceptions: documented-only
20
+ ---
21
+
22
+ # OBS-003 — Alerts are actionable and owned
23
+
24
+ **Requirement:** An alert MUST describe a condition a human can act on, name what to do, and have an owner. Alerts nobody acts on MUST be deleted, not muted.
25
+
26
+ **Bad:** A CPU alert that fires nightly and is ignored by everyone.
27
+
28
+ **Good:** An alert on user-visible error rate, linked to a runbook, owned by a person.
29
+
30
+ ## Validation
31
+
32
+ - Each alert has a runbook link and an owner
33
+
34
+ ## Lifecycle
35
+
36
+ - Status: `active`
37
+ - Priority: `P1`
38
+ - Exceptions: `documented-only`
@@ -0,0 +1,38 @@
1
+ ---
2
+ id: OBS-004
3
+ title: Deployables expose health and readiness
4
+ severity: SHOULD
5
+ status: active
6
+ domain: observability
7
+ priority: P2
8
+ source:
9
+ - devia
10
+ applies_to:
11
+ - service
12
+ success_criteria:
13
+ []
14
+ requirement: >
15
+ A deployable service SHOULD expose a liveness signal and a readiness signal that reflects its dependencies, and readiness SHOULD gate traffic during deploys.
16
+ validation:
17
+ automated: true
18
+ manual: true
19
+ exceptions: documented-only
20
+ ---
21
+
22
+ # OBS-004 — Deployables expose health and readiness
23
+
24
+ **Requirement:** A deployable service SHOULD expose a liveness signal and a readiness signal that reflects its dependencies, and readiness SHOULD gate traffic during deploys.
25
+
26
+ **Bad:** A health endpoint that returns 200 while the database connection is dead.
27
+
28
+ **Good:** Readiness checks the dependencies it truly needs; liveness stays cheap.
29
+
30
+ ## Validation
31
+
32
+ - Readiness fails when a required dependency is down
33
+
34
+ ## Lifecycle
35
+
36
+ - Status: `active`
37
+ - Priority: `P2`
38
+ - Exceptions: `documented-only`
@@ -0,0 +1,38 @@
1
+ ---
2
+ id: PRIV-001
3
+ title: Collect the minimum personal data
4
+ severity: MUST
5
+ status: active
6
+ domain: privacy
7
+ priority: P1
8
+ source:
9
+ - GDPR principles
10
+ applies_to:
11
+ - repository
12
+ success_criteria:
13
+ []
14
+ requirement: >
15
+ Personal data MUST be collected only where a stated product need requires it, and every field MUST have a reason recorded in the data model.
16
+ validation:
17
+ automated: false
18
+ manual: true
19
+ exceptions: documented-only
20
+ ---
21
+
22
+ # PRIV-001 — Collect the minimum personal data
23
+
24
+ **Requirement:** Personal data MUST be collected only where a stated product need requires it, and every field MUST have a reason recorded in the data model.
25
+
26
+ **Bad:** A national identifier collected 'in case we need it later'.
27
+
28
+ **Good:** Only the fields the flow needs, each with a documented purpose.
29
+
30
+ ## Validation
31
+
32
+ - Every personal field in the diff has a stated purpose
33
+
34
+ ## Lifecycle
35
+
36
+ - Status: `active`
37
+ - Priority: `P1`
38
+ - Exceptions: `documented-only`