ai-design-context 0.4.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 (288) hide show
  1. package/AGENTS.md +156 -0
  2. package/CHANGELOG.md +71 -0
  3. package/CODE_OF_CONDUCT.md +29 -0
  4. package/CONTRIBUTING.md +128 -0
  5. package/LICENSE +21 -0
  6. package/README.md +283 -0
  7. package/RELEASE_NOTES_v0.1.0.md +45 -0
  8. package/RELEASE_NOTES_v0.3.0.md +47 -0
  9. package/RELEASE_NOTES_v0.4.0.md +29 -0
  10. package/RELEASE_READINESS.md +107 -0
  11. package/ROADMAP.md +60 -0
  12. package/SECURITY.md +40 -0
  13. package/assets/logo.svg +9 -0
  14. package/benchmarks/README.md +19 -0
  15. package/benchmarks/chat.md +37 -0
  16. package/benchmarks/mobile-home-screen.md +38 -0
  17. package/benchmarks/notes-app.md +37 -0
  18. package/benchmarks/settings.md +37 -0
  19. package/benchmarks/shopping-list.md +37 -0
  20. package/benchmarks/todo-app.md +144 -0
  21. package/checklists/DESIGN_QA.md +102 -0
  22. package/checklists/GENERATED_INDEX.md +7 -0
  23. package/docs/AGENT_CONTEXT.md +111 -0
  24. package/docs/BENCHMARK.md +170 -0
  25. package/docs/DESIGNLINT_READINESS.md +110 -0
  26. package/docs/DESIGN_SYSTEM.md +23 -0
  27. package/docs/EVALUATION_RUBRIC.md +154 -0
  28. package/docs/GITHUB_SETUP.md +28 -0
  29. package/docs/GLOSSARY.md +45 -0
  30. package/docs/INDEX.md +109 -0
  31. package/docs/KNOWLEDGE_ENGINE.md +594 -0
  32. package/docs/MOBILE_FIRST.md +18 -0
  33. package/docs/NPM_RELEASE.md +43 -0
  34. package/docs/PATTERN_SPEC.md +113 -0
  35. package/docs/PHILOSOPHY.md +25 -0
  36. package/docs/PRODUCT_THINKING.md +26 -0
  37. package/docs/STYLE_GUIDE.md +49 -0
  38. package/docs/TRACEABILITY.md +45 -0
  39. package/evidence/README.md +64 -0
  40. package/evidence/TEMPLATE.md +46 -0
  41. package/evidence/chat/.gitkeep +1 -0
  42. package/evidence/mobile-home/.gitkeep +1 -0
  43. package/evidence/notes/.gitkeep +1 -0
  44. package/evidence/settings/.gitkeep +1 -0
  45. package/evidence/shopping/.gitkeep +1 -0
  46. package/evidence/todo/.gitkeep +1 -0
  47. package/evidence/todo/2026-06-25-codex-gpt-5/EVALUATION.md +66 -0
  48. package/evidence/todo/2026-06-25-codex-gpt-5/README.md +40 -0
  49. package/evidence/todo/2026-06-25-codex-gpt-5/ai-design-rules/generated-output.md +163 -0
  50. package/evidence/todo/2026-06-25-codex-gpt-5/ai-design-rules/metadata.json +38 -0
  51. package/evidence/todo/2026-06-25-codex-gpt-5/ai-design-rules/notes.md +20 -0
  52. package/evidence/todo/2026-06-25-codex-gpt-5/ai-design-rules/prompt.md +16 -0
  53. package/evidence/todo/2026-06-25-codex-gpt-5/ai-design-rules/scores.md +18 -0
  54. package/evidence/todo/2026-06-25-codex-gpt-5/baseline/generated-output.md +98 -0
  55. package/evidence/todo/2026-06-25-codex-gpt-5/baseline/metadata.json +19 -0
  56. package/evidence/todo/2026-06-25-codex-gpt-5/baseline/notes.md +19 -0
  57. package/evidence/todo/2026-06-25-codex-gpt-5/baseline/prompt.md +9 -0
  58. package/evidence/todo/2026-06-25-codex-gpt-5/baseline/scores.md +18 -0
  59. package/evidence/todo/2026-09-28-codex-paired-todo/EVALUATION.md +70 -0
  60. package/evidence/todo/2026-09-28-codex-paired-todo/README.md +52 -0
  61. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/GENERATION_NOTES.md +133 -0
  62. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/app.js +289 -0
  63. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/context/context-preserving-preview.json +443 -0
  64. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/context/daily-home-surface.json +373 -0
  65. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/context/quick-capture.json +301 -0
  66. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/context/sources-read.txt +36 -0
  67. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/generated-output.md +11 -0
  68. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/index.html +64 -0
  69. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/launch-prompt.md +1 -0
  70. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/metadata.json +55 -0
  71. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/notes.md +15 -0
  72. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/parent-status-message.md +1 -0
  73. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/prompt.md +49 -0
  74. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/runtime-checks.json +776 -0
  75. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/scores.md +20 -0
  76. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/desktop-completed.png +0 -0
  77. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/desktop-default.png +0 -0
  78. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/desktop-detail-reduced-motion.png +0 -0
  79. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/desktop-detail.png +0 -0
  80. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/desktop-empty.png +0 -0
  81. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/desktop-keyboard-focus.png +0 -0
  82. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/desktop-save-error.png +0 -0
  83. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/desktop-saved.png +0 -0
  84. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/desktop-saving.png +0 -0
  85. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/desktop-validation.png +0 -0
  86. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/mobile-completed.png +0 -0
  87. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/mobile-default.png +0 -0
  88. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/mobile-detail-reduced-motion.png +0 -0
  89. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/mobile-detail.png +0 -0
  90. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/mobile-empty.png +0 -0
  91. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/mobile-keyboard-focus.png +0 -0
  92. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/mobile-save-error.png +0 -0
  93. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/mobile-saved.png +0 -0
  94. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/mobile-saving.png +0 -0
  95. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/mobile-validation.png +0 -0
  96. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/source-hashes.json +5 -0
  97. package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/styles.css +122 -0
  98. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/GENERATION_NOTES.md +86 -0
  99. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/app.js +303 -0
  100. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/generated-output.md +11 -0
  101. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/index.html +71 -0
  102. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/launch-prompt.md +1 -0
  103. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/metadata.json +55 -0
  104. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/notes.md +15 -0
  105. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/parent-status-message.md +1 -0
  106. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/prompt.md +49 -0
  107. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/runtime-checks.json +772 -0
  108. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/scores.md +20 -0
  109. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/desktop-completed.png +0 -0
  110. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/desktop-default.png +0 -0
  111. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/desktop-detail-reduced-motion.png +0 -0
  112. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/desktop-detail.png +0 -0
  113. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/desktop-empty.png +0 -0
  114. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/desktop-keyboard-focus.png +0 -0
  115. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/desktop-save-error.png +0 -0
  116. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/desktop-saved.png +0 -0
  117. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/desktop-saving.png +0 -0
  118. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/desktop-validation.png +0 -0
  119. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/mobile-completed.png +0 -0
  120. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/mobile-default.png +0 -0
  121. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/mobile-detail-reduced-motion.png +0 -0
  122. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/mobile-detail.png +0 -0
  123. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/mobile-empty.png +0 -0
  124. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/mobile-keyboard-focus.png +0 -0
  125. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/mobile-save-error.png +0 -0
  126. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/mobile-saved.png +0 -0
  127. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/mobile-saving.png +0 -0
  128. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/mobile-validation.png +0 -0
  129. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/source-hashes.json +5 -0
  130. package/evidence/todo/2026-09-28-codex-paired-todo/baseline/styles.css +9 -0
  131. package/evidence/todo/2026-09-28-codex-paired-todo/capture-ai-design-rules.js +60 -0
  132. package/evidence/todo/2026-09-28-codex-paired-todo/capture-baseline.js +60 -0
  133. package/evidence/todo/2026-09-28-codex-paired-todo/common/brief.md +35 -0
  134. package/evidence/todo/2026-09-28-codex-paired-todo/common/knowledge-files.json +127 -0
  135. package/evidence/todo/2026-09-28-codex-paired-todo/common/knowledge.patch +890 -0
  136. package/evidence/todo/2026-09-28-codex-paired-todo/common/review-context.json +550 -0
  137. package/evidence/todo/2026-09-28-codex-paired-todo/common/seed.json +86 -0
  138. package/evidence/todo/2026-09-28-codex-paired-todo/common/setup.json +47 -0
  139. package/evidence/todo/2026-09-28-codex-paired-todo/common/technical-envelope.md +11 -0
  140. package/evidence/todo/2026-09-28-codex-paired-todo/layout-metrics.json +133 -0
  141. package/evidence/todo/2026-09-28-codex-paired-todo/layout-probe.js +15 -0
  142. package/examples/GENERATED_INDEX.md +8 -0
  143. package/examples/INDEX.md +16 -0
  144. package/examples/README.md +15 -0
  145. package/examples/consequential-action-confirmation-reference.md +83 -0
  146. package/examples/todo-app-benchmark.md +117 -0
  147. package/examples/todo-reference/README.md +29 -0
  148. package/examples/todo-reference/app.js +154 -0
  149. package/examples/todo-reference/favicon.svg +4 -0
  150. package/examples/todo-reference/index.html +67 -0
  151. package/examples/todo-reference/review-evidence/2026-07-15/desktop-default.png +0 -0
  152. package/examples/todo-reference/review-evidence/2026-07-15/desktop-detail.png +0 -0
  153. package/examples/todo-reference/review-evidence/2026-07-15/mobile-detail.png +0 -0
  154. package/examples/todo-reference/review-evidence/2026-07-15/mobile-error.png +0 -0
  155. package/examples/todo-reference/styles.css +241 -0
  156. package/graph/GENERATED_GRAPH.md +71 -0
  157. package/observations/README.md +23 -0
  158. package/observations/accessibility/reduced-interaction-motion.md +49 -0
  159. package/observations/accessibility/textual-error-recovery.md +50 -0
  160. package/observations/accessibility/visible-keyboard-focus.md +49 -0
  161. package/observations/ai/agent-consequential-action-controls.md +56 -0
  162. package/observations/ai/agent-work-visibility-and-intervention.md +51 -0
  163. package/observations/ai/figma-agent-context-and-skills.md +52 -0
  164. package/observations/finance/high-risk-wallet-recovery-flows.md +55 -0
  165. package/observations/finance/market-interface-adaptive-trading-surfaces.md +55 -0
  166. package/observations/interaction/chrome-scoped-view-transitions.md +52 -0
  167. package/observations/interaction/figma-motion-as-system-capability.md +53 -0
  168. package/observations/mobile/mobile-bottom-sheet-choice-contracts.md +55 -0
  169. package/observations/performance/reserved-loading-space.md +51 -0
  170. package/observations/product-repos/pinned-ai-design-rules-integration.md +49 -0
  171. package/observations/visual/apple-liquid-glass-functional-layer.md +52 -0
  172. package/observations/visual/chrome-content-first-adaptive-ui.md +51 -0
  173. package/observations/visual/material-3-expressive-system.md +52 -0
  174. package/package.json +65 -0
  175. package/patterns/GENERATED_INDEX.md +13 -0
  176. package/patterns/INDEX.md +41 -0
  177. package/patterns/README.md +5 -0
  178. package/patterns/consequential-action-confirmation.md +127 -0
  179. package/patterns/context-preserving-preview.md +145 -0
  180. package/patterns/daily-home-surface.md +134 -0
  181. package/patterns/mobile-primary-action.md +110 -0
  182. package/patterns/object-status-list.md +114 -0
  183. package/patterns/progressive-detail.md +113 -0
  184. package/patterns/quick-capture.md +132 -0
  185. package/prompts/CONSEQUENTIAL_ACTION_REVIEW.md +100 -0
  186. package/prompts/DESIGN_EVIDENCE_REVIEW.md +49 -0
  187. package/prompts/GENERATED_INDEX.md +11 -0
  188. package/prompts/INDEX.md +24 -0
  189. package/prompts/PROTOTYPE_REVIEW.md +189 -0
  190. package/prompts/QUICK_CAPTURE_STATE_REVIEW.md +74 -0
  191. package/prompts/TODO_APP_BENCHMARK.md +88 -0
  192. package/registry/objects.json +568 -0
  193. package/registry/relationships.json +972 -0
  194. package/research/GENERATED_INDEX.md +18 -0
  195. package/research/INDEX.md +40 -0
  196. package/research/accessibility/keyboard-focus-and-interaction-motion.md +62 -0
  197. package/research/accessibility/textual-error-recovery.md +57 -0
  198. package/research/performance/reserved-loading-space.md +56 -0
  199. package/research/products/apple-reminders.md +59 -0
  200. package/research/products/arc.md +61 -0
  201. package/research/products/linear.md +62 -0
  202. package/research/products/telegram.md +61 -0
  203. package/research/products/things-3.md +60 -0
  204. package/research/ux/contextual-agentic-interface.md +68 -0
  205. package/research/ux/high-risk-operational-flows.md +89 -0
  206. package/research/ux/motion-as-state-continuity.md +71 -0
  207. package/research/visual/expressive-system-ui-2026.md +75 -0
  208. package/reviews/GENERATED_INDEX.md +9 -0
  209. package/reviews/README.md +25 -0
  210. package/reviews/consequential-action-confirmation-review.md +92 -0
  211. package/reviews/todo-app-benchmark-reference-review.md +86 -0
  212. package/reviews/todo-reference-fixture-review.md +77 -0
  213. package/rules/GENERATED_INDEX.md +23 -0
  214. package/rules/INDEX.md +37 -0
  215. package/rules/accessibility/A11Y-001.md +58 -0
  216. package/rules/accessibility/A11Y-002.md +55 -0
  217. package/rules/accessibility/A11Y-003.md +54 -0
  218. package/rules/accessibility/A11Y-004.md +54 -0
  219. package/rules/ia/IA-001.md +60 -0
  220. package/rules/ia/IA-002.md +61 -0
  221. package/rules/performance/PERF-001.md +55 -0
  222. package/rules/product/PRD-001.md +61 -0
  223. package/rules/product/PRD-002.md +61 -0
  224. package/rules/ux/UX-001.md +58 -0
  225. package/rules/ux/UX-002.md +61 -0
  226. package/rules/ux/UX-003.md +60 -0
  227. package/rules/ux/UX-004.md +61 -0
  228. package/rules/ux/UX-005.md +62 -0
  229. package/rules/ux/UX-006.md +69 -0
  230. package/rules/visual/VIS-001.md +59 -0
  231. package/rules/visual/VIS-002.md +59 -0
  232. package/schema/checklist.schema.json +21 -0
  233. package/schema/common.schema.json +178 -0
  234. package/schema/observation.schema.json +21 -0
  235. package/schema/pattern.schema.json +21 -0
  236. package/schema/prompt.schema.json +21 -0
  237. package/schema/reference-project.schema.json +21 -0
  238. package/schema/research.schema.json +21 -0
  239. package/schema/review.schema.json +21 -0
  240. package/schema/rule.schema.json +21 -0
  241. package/skills/README.md +48 -0
  242. package/skills/accessibility-reviewer/SKILL.md +101 -0
  243. package/skills/agent-context/SKILL.md +34 -0
  244. package/skills/agent-context/agents/openai.yaml +4 -0
  245. package/skills/design-evidence-researcher/SKILL.md +47 -0
  246. package/skills/design-evidence-researcher/agents/openai.yaml +4 -0
  247. package/skills/design-reviewer/SKILL.md +113 -0
  248. package/skills/design-system-architect/SKILL.md +101 -0
  249. package/skills/information-architect/SKILL.md +97 -0
  250. package/skills/interaction-designer/SKILL.md +104 -0
  251. package/skills/knowledge-graph-architect/SKILL.md +96 -0
  252. package/skills/mobile-ux-expert/SKILL.md +105 -0
  253. package/skills/motion-designer/SKILL.md +100 -0
  254. package/skills/performance-reviewer/SKILL.md +97 -0
  255. package/skills/product-designer/SKILL.md +104 -0
  256. package/skills/prompt-architect/SKILL.md +105 -0
  257. package/skills/reference-driven-design/SKILL.md +119 -0
  258. package/skills/ux-reviewer/SKILL.md +99 -0
  259. package/skills/visual-designer/SKILL.md +107 -0
  260. package/starter-kit/AGENTS.md +37 -0
  261. package/starter-kit/BOOTSTRAP.md +13 -0
  262. package/starter-kit/INSTALL_WITH_AGENT.md +133 -0
  263. package/starter-kit/PROJECT_INTEGRATION.md +60 -0
  264. package/starter-kit/README.md +41 -0
  265. package/starter-kit/benchmarks/BENCHMARK_CHECKLIST.md +10 -0
  266. package/starter-kit/docs/DESIGN_DECISIONS.md +22 -0
  267. package/starter-kit/docs/INFORMATION_ARCHITECTURE.md +25 -0
  268. package/starter-kit/docs/PERSONAS.md +14 -0
  269. package/starter-kit/docs/PRD.md +32 -0
  270. package/starter-kit/docs/USER_FLOWS.md +19 -0
  271. package/starter-kit/reviews/DESIGN_REVIEW.md +49 -0
  272. package/starter-kit/templates/FEATURE_TEMPLATE.md +36 -0
  273. package/starter-kit/templates/TASK_TEMPLATE.md +22 -0
  274. package/templates/CHECKLIST_TEMPLATE.md +43 -0
  275. package/templates/OBSERVATION_TEMPLATE.md +41 -0
  276. package/templates/PATTERN_TEMPLATE.md +100 -0
  277. package/templates/PROMPT_TEMPLATE.md +46 -0
  278. package/templates/PROTOTYPE_REVIEW.md +50 -0
  279. package/templates/REFERENCE_PROJECT_TEMPLATE.md +49 -0
  280. package/templates/REVIEW_TEMPLATE.md +55 -0
  281. package/templates/RULE_TEMPLATE.md +57 -0
  282. package/tools/cli.mjs +46 -0
  283. package/tools/context.mjs +342 -0
  284. package/tools/designlint.mjs +77 -0
  285. package/tools/generate-indexes.mjs +621 -0
  286. package/tools/init.mjs +99 -0
  287. package/tools/validate-benchmark-evidence.mjs +248 -0
  288. package/tools/validate-knowledge.mjs +481 -0
@@ -0,0 +1,55 @@
1
+ ---
2
+ id: RULE-00010
3
+ alias: A11Y-002
4
+ slug: textual-input-error-recovery
5
+ title: Textual Input Error Recovery
6
+ object_type: rule
7
+ status: draft
8
+ version: 0.1.0
9
+ category: accessibility
10
+ tags:
11
+ - accessibility
12
+ - errors
13
+ - forms
14
+ maturity: seed
15
+ risk_level: high
16
+ relationships:
17
+ - type: derived_from
18
+ target: RESEARCH-00006
19
+ ---
20
+
21
+ # A11Y-002 Textual Input Error Recovery
22
+
23
+ Status: Draft
24
+ Domain: Accessibility
25
+
26
+ ## Source Research
27
+
28
+ - `research/accessibility/textual-error-recovery.md`
29
+
30
+ ## Why
31
+
32
+ Users cannot reliably recover when a form only changes color, hides the failed field, or says only that submission failed. Textual, field-specific feedback makes the failure understandable and actionable across visual and assistive-technology contexts.
33
+
34
+ ## Rule
35
+
36
+ When input validation detects an error, identify the affected input and describe the error in text. Include a correction hint when the valid value or format is known; color and icons may reinforce, but must not be the only signal.
37
+
38
+ ## Good
39
+
40
+ - “Email: enter an address in the format name@example.com” appears with the invalid email field.
41
+ - A form-level summary names each invalid field and links or moves focus to a recoverable field when appropriate.
42
+ - An error remains understandable after its visual error color is removed.
43
+
44
+ ## Bad
45
+
46
+ - A field border turns red with no textual explanation.
47
+ - A generic “Something went wrong” message replaces field-specific validation feedback.
48
+ - A message says a value is invalid but provides no correction when the required format is known.
49
+
50
+ ## Review
51
+
52
+ - Trigger every client-side and server-returned validation state.
53
+ - Verify that each message identifies the input and describes the failed condition in text.
54
+ - Verify that color, position, or animation is not the only error cue.
55
+ - Check that a known correction is explained without exposing sensitive validation details.
@@ -0,0 +1,54 @@
1
+ ---
2
+ id: RULE-00012
3
+ alias: A11Y-003
4
+ slug: visible-keyboard-focus
5
+ title: Visible Keyboard Focus
6
+ object_type: rule
7
+ status: draft
8
+ version: 0.1.0
9
+ category: accessibility
10
+ tags:
11
+ - accessibility
12
+ - keyboard
13
+ - focus
14
+ maturity: seed
15
+ risk_level: high
16
+ relationships:
17
+ - type: derived_from
18
+ target: RESEARCH-00008
19
+ ---
20
+
21
+ # A11Y-003 Visible Keyboard Focus
22
+
23
+ Status: Draft
24
+ Domain: Accessibility
25
+
26
+ ## Source Research
27
+
28
+ - `research/accessibility/keyboard-focus-and-interaction-motion.md`
29
+
30
+ ## Why
31
+
32
+ Keyboard users cannot operate a flow reliably when focus disappears or its indicator is visually hidden. Focus must communicate the current interaction target for as long as it remains active.
33
+
34
+ ## Rule
35
+
36
+ Every keyboard-operable control must retain a visible focus indicator while it has keyboard focus. Do not remove or render the platform focus state invisible without providing an equally visible replacement.
37
+
38
+ ## Good
39
+
40
+ - A focused input, button, task row, or sheet close control has an indicator that remains visible.
41
+ - A custom control uses a visible `:focus-visible` state or retains the platform default.
42
+ - Keyboard focus remains apparent through validation and recovery states.
43
+
44
+ ## Bad
45
+
46
+ - A global outline reset leaves keyboard users with no focus indication.
47
+ - Focus appears briefly, then fades while the control remains active.
48
+ - A dialog opens without a visible focused control or an understandable keyboard path.
49
+
50
+ ## Review
51
+
52
+ - Navigate the primary flow using only a keyboard.
53
+ - Verify each interactive control has a visible focus state and that it persists.
54
+ - Check focus during loading, validation error, detail open, and close actions.
@@ -0,0 +1,54 @@
1
+ ---
2
+ id: RULE-00013
3
+ alias: A11Y-004
4
+ slug: reduce-non-essential-interaction-motion
5
+ title: Reduce Non-Essential Interaction Motion
6
+ object_type: rule
7
+ status: draft
8
+ version: 0.1.0
9
+ category: accessibility
10
+ tags:
11
+ - accessibility
12
+ - motion
13
+ - reduced-motion
14
+ maturity: seed
15
+ risk_level: high
16
+ relationships:
17
+ - type: derived_from
18
+ target: RESEARCH-00008
19
+ ---
20
+
21
+ # A11Y-004 Reduce Non-Essential Interaction Motion
22
+
23
+ Status: Draft
24
+ Domain: Accessibility
25
+
26
+ ## Source Research
27
+
28
+ - `research/accessibility/keyboard-focus-and-interaction-motion.md`
29
+
30
+ ## Why
31
+
32
+ Non-essential interaction motion can distract users or cause dizziness, nausea, and headaches. A product must not make that motion a requirement for understanding or operating the flow.
33
+
34
+ ## Rule
35
+
36
+ When an interaction triggers non-essential motion, respect a reduced-motion preference or provide an equivalent control that disables the motion. Preserve the same information and function in the non-moving state.
37
+
38
+ ## Good
39
+
40
+ - A sheet opens immediately when reduced motion is enabled while keeping the same focus and close behavior.
41
+ - Decorative parallax or list movement is disabled without hiding content.
42
+ - A transition that explains state also has a static end-state presentation.
43
+
44
+ ## Bad
45
+
46
+ - A user must watch a sliding or zooming transition to know what opened.
47
+ - Reduced motion removes a required control or information instead of only non-essential movement.
48
+ - Decorative motion is added without a way to avoid it.
49
+
50
+ ## Review
51
+
52
+ - List interaction-triggered motion separately from essential scrolling and required information.
53
+ - Enable a reduced-motion preference or control and verify the task remains complete.
54
+ - Confirm loading and error feedback remain visible without motion.
@@ -0,0 +1,60 @@
1
+ ---
2
+ id: RULE-00003
3
+ alias: IA-001
4
+ slug: one-stable-home-surface
5
+ title: One Stable Home Surface
6
+ object_type: rule
7
+ status: draft
8
+ version: 0.1.0
9
+ category: ia
10
+ tags:
11
+ - ia
12
+ - home-surface
13
+ maturity: seed
14
+ risk_level: medium
15
+ relationships:
16
+ - type: derived_from
17
+ target: RESEARCH-00001
18
+ - type: derived_from
19
+ target: RESEARCH-00002
20
+ - type: derived_from
21
+ target: RESEARCH-00003
22
+ ---
23
+
24
+ # IA-001 One Stable Home Surface
25
+
26
+ Status: Draft
27
+ Domain: IA
28
+
29
+ ## Source Research
30
+
31
+ - `research/products/telegram.md`
32
+ - `research/products/things-3.md`
33
+ - `research/products/apple-reminders.md`
34
+
35
+ ## Why
36
+
37
+ Products with many modes become understandable when users can return to one stable home surface. The home surface anchors memory and reduces the cost of switching tasks.
38
+
39
+ ## Rule
40
+
41
+ Give the product one primary home surface that stays recognizable as features, modes, and organization layers grow.
42
+
43
+ ## Good
44
+
45
+ - Users can name where they return after finishing a task.
46
+ - New modes extend the home model instead of replacing it.
47
+ - Navigation supports fast exit and fast return.
48
+ - Advanced grouping is optional.
49
+
50
+ ## Bad
51
+
52
+ - Each feature introduces a new top-level destination with a different mental model.
53
+ - The product has several competing "home" screens.
54
+ - Users must remember which mode they were in to find basic work.
55
+
56
+ ## Review
57
+
58
+ - Identify the product's home surface in one sentence.
59
+ - Check whether each major mode returns to that surface.
60
+ - Check whether new organization adds clarity or creates another product inside the product.
@@ -0,0 +1,61 @@
1
+ ---
2
+ id: RULE-00004
3
+ alias: IA-002
4
+ slug: define-the-object-model-before-screens
5
+ title: Define The Object Model Before Screens
6
+ object_type: rule
7
+ status: draft
8
+ version: 0.1.0
9
+ category: ia
10
+ tags:
11
+ - ia
12
+ - object-model
13
+ maturity: seed
14
+ risk_level: medium
15
+ relationships:
16
+ - type: derived_from
17
+ target: RESEARCH-00004
18
+ - type: derived_from
19
+ target: RESEARCH-00001
20
+ - type: derived_from
21
+ target: RESEARCH-00005
22
+ ---
23
+
24
+ # IA-002 Define The Object Model Before Screens
25
+
26
+ Status: Draft
27
+ Domain: IA
28
+
29
+ ## Source Research
30
+
31
+ - `research/products/linear.md`
32
+ - `research/products/telegram.md`
33
+ - `research/products/arc.md`
34
+
35
+ ## Why
36
+
37
+ Agents often jump into screen layout before defining what the product objects are. This creates navigation, naming, and state inconsistencies.
38
+
39
+ ## Rule
40
+
41
+ Before designing screens, define the core objects, their states, and how users move between them.
42
+
43
+ ## Good
44
+
45
+ - Core objects have clear names and stable relationships.
46
+ - Screens expose the same object model from different views.
47
+ - Statuses and ownership labels mean the same thing everywhere.
48
+ - Navigation mirrors how users think about the work.
49
+
50
+ ## Bad
51
+
52
+ - Similar concepts use different names across screens.
53
+ - A view creates duplicate data instead of another perspective on the same object.
54
+ - Status, ownership, and grouping change meaning by screen.
55
+
56
+ ## Review
57
+
58
+ - List the product's core objects.
59
+ - List the states each object can enter.
60
+ - Check whether every screen maps to those objects and states.
61
+ - Check whether users can switch views without losing the underlying data.
@@ -0,0 +1,55 @@
1
+ ---
2
+ id: RULE-00011
3
+ alias: PERF-001
4
+ slug: reserve-layout-space-for-asynchronous-content
5
+ title: Reserve Layout Space For Asynchronous Content
6
+ object_type: rule
7
+ status: draft
8
+ version: 0.1.0
9
+ category: performance
10
+ tags:
11
+ - performance
12
+ - loading
13
+ - layout-stability
14
+ maturity: seed
15
+ risk_level: medium
16
+ relationships:
17
+ - type: derived_from
18
+ target: RESEARCH-00007
19
+ ---
20
+
21
+ # PERF-001 Reserve Layout Space For Asynchronous Content
22
+
23
+ Status: Draft
24
+ Domain: Performance
25
+
26
+ ## Source Research
27
+
28
+ - `research/performance/reserved-loading-space.md`
29
+
30
+ ## Why
31
+
32
+ When loading media, embeds, or delayed content unexpectedly moves controls and text, users lose orientation and may act on the wrong target. Stable loading geometry makes waiting predictable.
33
+
34
+ ## Rule
35
+
36
+ Reserve the expected layout space for asynchronous content before it arrives. Loading placeholders must preserve the structure and approximate dimensions of the resolved content whenever those dimensions are known.
37
+
38
+ ## Good
39
+
40
+ - An image card declares or derives its aspect ratio before the image is painted.
41
+ - A list row skeleton has the same height and action placement as the loaded row.
42
+ - An embed or dynamic slot reserves a bounded, expected region instead of pushing active content down on arrival.
43
+
44
+ ## Bad
45
+
46
+ - A spinner occupies a smaller region than the content that will replace it, shifting nearby controls after load.
47
+ - Lazy-loaded media appears above an active form or list item without reserved space.
48
+ - A placeholder reserves an arbitrary large area that collapses dramatically when content loads.
49
+
50
+ ## Review
51
+
52
+ - Test slow-network and cache-cold loading states.
53
+ - Compare the loading and resolved layout around primary actions and visible controls.
54
+ - Check media, embeds, list rows, and late-loaded status blocks for unexpected movement.
55
+ - Exclude deliberate user-initiated expansion or reordering from layout-shift findings.
@@ -0,0 +1,61 @@
1
+ ---
2
+ id: RULE-00001
3
+ alias: PRD-001
4
+ slug: daily-actions-first
5
+ title: Daily Actions First
6
+ object_type: rule
7
+ status: draft
8
+ version: 0.1.0
9
+ category: product
10
+ tags:
11
+ - product
12
+ - daily-work
13
+ maturity: seed
14
+ risk_level: medium
15
+ relationships:
16
+ - type: derived_from
17
+ target: RESEARCH-00002
18
+ - type: derived_from
19
+ target: RESEARCH-00001
20
+ - type: derived_from
21
+ target: RESEARCH-00003
22
+ ---
23
+
24
+ # PRD-001 Daily Actions First
25
+
26
+ Status: Draft
27
+ Domain: Product
28
+
29
+ ## Source Research
30
+
31
+ - `research/products/things-3.md`
32
+ - `research/products/telegram.md`
33
+ - `research/products/apple-reminders.md`
34
+
35
+ ## Why
36
+
37
+ Consumer products earn trust through repeated daily actions. If the most common action is buried under structure, decoration, or setup, the product feels heavier than the job it solves.
38
+
39
+ ## Rule
40
+
41
+ Design the main screen around the user's most repeated action before adding secondary navigation, advanced metadata, or decorative sections.
42
+
43
+ ## Good
44
+
45
+ - The primary repeated action is visible without scrolling.
46
+ - The action can be completed without opening a configuration flow.
47
+ - Supporting state is quiet and does not compete with the action.
48
+ - Secondary tools are available but not placed ahead of the daily job.
49
+
50
+ ## Bad
51
+
52
+ - The screen starts with analytics, cards, onboarding copy, or branding while the daily action is hidden.
53
+ - A simple action requires choosing categories, filters, or settings first.
54
+ - The interface optimizes for edge cases before the repeated behavior.
55
+
56
+ ## Review
57
+
58
+ - Name the most repeated action for this product.
59
+ - Confirm the action is reachable in the first viewport.
60
+ - Confirm secondary actions do not visually dominate it.
61
+ - Confirm the rule still fits products where the primary job is review, not creation.
@@ -0,0 +1,61 @@
1
+ ---
2
+ id: RULE-00002
3
+ alias: PRD-002
4
+ slug: low-friction-capture-before-organization
5
+ title: Low-Friction Capture Before Organization
6
+ object_type: rule
7
+ status: draft
8
+ version: 0.1.0
9
+ category: product
10
+ tags:
11
+ - product
12
+ - capture
13
+ maturity: seed
14
+ risk_level: medium
15
+ relationships:
16
+ - type: derived_from
17
+ target: RESEARCH-00003
18
+ - type: derived_from
19
+ target: RESEARCH-00002
20
+ - type: derived_from
21
+ target: RESEARCH-00001
22
+ ---
23
+
24
+ # PRD-002 Low-Friction Capture Before Organization
25
+
26
+ Status: Draft
27
+ Domain: Product
28
+
29
+ ## Source Research
30
+
31
+ - `research/products/apple-reminders.md`
32
+ - `research/products/things-3.md`
33
+ - `research/products/telegram.md`
34
+
35
+ ## Why
36
+
37
+ Everyday products often fail when they ask users to organize information before capturing it. Capture should be fast; organization can happen after the user has recorded the intent.
38
+
39
+ ## Rule
40
+
41
+ Let users add the basic item first, then offer categorization, scheduling, metadata, or smart organization as follow-up actions.
42
+
43
+ ## Good
44
+
45
+ - A user can create the core item with one clear action.
46
+ - Optional fields do not block capture.
47
+ - Smart suggestions are correctable and do not replace user control.
48
+ - Organization improves retrieval without changing the basic model.
49
+
50
+ ## Bad
51
+
52
+ - The creation flow requires category, priority, project, tags, and dates before saving.
53
+ - Smart categorization silently changes user intent.
54
+ - Empty states explain the system instead of helping the user add the first item.
55
+
56
+ ## Review
57
+
58
+ - Try creating the simplest possible item.
59
+ - Count how many required decisions happen before save.
60
+ - Check whether optional metadata can be added later.
61
+ - Check whether automation is reversible.
@@ -0,0 +1,58 @@
1
+ ---
2
+ id: RULE-00005
3
+ alias: UX-001
4
+ slug: thumb-zone-primary-actions
5
+ title: Thumb-Zone Primary Actions
6
+ object_type: rule
7
+ status: draft
8
+ version: 0.1.0
9
+ category: ux
10
+ tags:
11
+ - ux
12
+ - mobile
13
+ - touch
14
+ maturity: seed
15
+ risk_level: high
16
+ relationships:
17
+ - type: derived_from
18
+ target: RESEARCH-00002
19
+ - type: derived_from
20
+ target: RESEARCH-00003
21
+ ---
22
+
23
+ # UX-001 Thumb-Zone Primary Actions
24
+
25
+ Status: Draft
26
+ Domain: UX
27
+
28
+ ## Source Research
29
+
30
+ - `research/products/things-3.md`
31
+ - `research/products/apple-reminders.md`
32
+
33
+ ## Why
34
+
35
+ Mobile consumer workflows depend on fast repeated actions. If the main action sits outside comfortable reach, the product feels slower even when the feature set is correct.
36
+
37
+ ## Rule
38
+
39
+ Place the primary mobile action where it is reachable by thumb and keep destructive or secondary actions away from accidental taps.
40
+
41
+ ## Good
42
+
43
+ - The main action is reachable near the bottom or another established thumb-friendly control area.
44
+ - Secondary actions are visually and spatially distinct.
45
+ - Repeated list actions support quick insertion, completion, and reordering.
46
+
47
+ ## Bad
48
+
49
+ - The primary action is only in a top bar on a tall mobile viewport.
50
+ - Multiple actions compete in the same touch area.
51
+ - Destructive actions sit next to frequent positive actions.
52
+
53
+ ## Review
54
+
55
+ - Test the screen at 390px width.
56
+ - Confirm the primary action is reachable without hand repositioning.
57
+ - Confirm touch targets meet `A11Y-001`.
58
+ - Confirm the layout still works when the list is empty and when it is long.
@@ -0,0 +1,61 @@
1
+ ---
2
+ id: RULE-00006
3
+ alias: UX-002
4
+ slug: progressively-disclose-power
5
+ title: Progressively Disclose Power
6
+ object_type: rule
7
+ status: draft
8
+ version: 0.1.0
9
+ category: ux
10
+ tags:
11
+ - ux
12
+ - progressive-disclosure
13
+ maturity: seed
14
+ risk_level: medium
15
+ relationships:
16
+ - type: derived_from
17
+ target: RESEARCH-00002
18
+ - type: derived_from
19
+ target: RESEARCH-00003
20
+ - type: derived_from
21
+ target: RESEARCH-00001
22
+ ---
23
+
24
+ # UX-002 Progressively Disclose Power
25
+
26
+ Status: Draft
27
+ Domain: UX
28
+
29
+ ## Source Research
30
+
31
+ - `research/products/things-3.md`
32
+ - `research/products/apple-reminders.md`
33
+ - `research/products/telegram.md`
34
+
35
+ ## Why
36
+
37
+ Power features help advanced users but can slow down first use. Progressive disclosure keeps the default path simple while preserving depth.
38
+
39
+ ## Rule
40
+
41
+ Show the minimum controls needed for the current task, and reveal advanced fields, filters, or modes only when they become relevant.
42
+
43
+ ## Good
44
+
45
+ - The default state supports basic completion without explanation.
46
+ - Advanced metadata is discoverable but not visually dominant.
47
+ - Users can add detail after capture.
48
+ - The interface remains usable without learning every feature.
49
+
50
+ ## Bad
51
+
52
+ - Every possible field appears in the first form.
53
+ - Advanced filters are required before the first useful result.
54
+ - The UI hides essential status that users need for comparison or audit.
55
+
56
+ ## Review
57
+
58
+ - Identify which fields are required for the first useful action.
59
+ - Move non-required metadata behind edit, details, filter, or secondary controls.
60
+ - Check that hidden controls are still discoverable.
61
+ - Check that hiding information does not harm collaboration or accountability.
@@ -0,0 +1,60 @@
1
+ ---
2
+ id: RULE-00007
3
+ alias: UX-003
4
+ slug: preserve-context-during-inspection
5
+ title: Preserve Context During Inspection
6
+ object_type: rule
7
+ status: draft
8
+ version: 0.1.0
9
+ category: ux
10
+ tags:
11
+ - ux
12
+ - context
13
+ maturity: seed
14
+ risk_level: medium
15
+ relationships:
16
+ - type: derived_from
17
+ target: RESEARCH-00005
18
+ - type: derived_from
19
+ target: RESEARCH-00004
20
+ - type: derived_from
21
+ target: RESEARCH-00001
22
+ ---
23
+
24
+ # UX-003 Preserve Context During Inspection
25
+
26
+ Status: Draft
27
+ Domain: UX
28
+
29
+ ## Source Research
30
+
31
+ - `research/products/arc.md`
32
+ - `research/products/linear.md`
33
+ - `research/products/telegram.md`
34
+
35
+ ## Why
36
+
37
+ Users lose momentum when every inspection forces a full navigation change. Preview, split, and side-panel patterns reduce context switching when users need to inspect without committing.
38
+
39
+ ## Rule
40
+
41
+ When users need to compare, inspect, or triage items, provide a way to view detail without losing the original context.
42
+
43
+ ## Good
44
+
45
+ - Detail can open in a preview, side panel, split view, or temporary surface.
46
+ - Returning to the list or workspace preserves scroll, filters, and selection.
47
+ - Motion or placement makes it clear where the detail came from.
48
+
49
+ ## Bad
50
+
51
+ - Opening detail resets the list, filters, or scroll position.
52
+ - Users must navigate back and rebuild context after every inspection.
53
+ - Preview surfaces become full editors with too many actions.
54
+
55
+ ## Review
56
+
57
+ - Identify inspection-heavy workflows.
58
+ - Open and close item detail repeatedly.
59
+ - Confirm the source context remains intact.
60
+ - Confirm the preview does not hide essential primary actions.