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.
- package/AGENTS.md +156 -0
- package/CHANGELOG.md +71 -0
- package/CODE_OF_CONDUCT.md +29 -0
- package/CONTRIBUTING.md +128 -0
- package/LICENSE +21 -0
- package/README.md +283 -0
- package/RELEASE_NOTES_v0.1.0.md +45 -0
- package/RELEASE_NOTES_v0.3.0.md +47 -0
- package/RELEASE_NOTES_v0.4.0.md +29 -0
- package/RELEASE_READINESS.md +107 -0
- package/ROADMAP.md +60 -0
- package/SECURITY.md +40 -0
- package/assets/logo.svg +9 -0
- package/benchmarks/README.md +19 -0
- package/benchmarks/chat.md +37 -0
- package/benchmarks/mobile-home-screen.md +38 -0
- package/benchmarks/notes-app.md +37 -0
- package/benchmarks/settings.md +37 -0
- package/benchmarks/shopping-list.md +37 -0
- package/benchmarks/todo-app.md +144 -0
- package/checklists/DESIGN_QA.md +102 -0
- package/checklists/GENERATED_INDEX.md +7 -0
- package/docs/AGENT_CONTEXT.md +111 -0
- package/docs/BENCHMARK.md +170 -0
- package/docs/DESIGNLINT_READINESS.md +110 -0
- package/docs/DESIGN_SYSTEM.md +23 -0
- package/docs/EVALUATION_RUBRIC.md +154 -0
- package/docs/GITHUB_SETUP.md +28 -0
- package/docs/GLOSSARY.md +45 -0
- package/docs/INDEX.md +109 -0
- package/docs/KNOWLEDGE_ENGINE.md +594 -0
- package/docs/MOBILE_FIRST.md +18 -0
- package/docs/NPM_RELEASE.md +43 -0
- package/docs/PATTERN_SPEC.md +113 -0
- package/docs/PHILOSOPHY.md +25 -0
- package/docs/PRODUCT_THINKING.md +26 -0
- package/docs/STYLE_GUIDE.md +49 -0
- package/docs/TRACEABILITY.md +45 -0
- package/evidence/README.md +64 -0
- package/evidence/TEMPLATE.md +46 -0
- package/evidence/chat/.gitkeep +1 -0
- package/evidence/mobile-home/.gitkeep +1 -0
- package/evidence/notes/.gitkeep +1 -0
- package/evidence/settings/.gitkeep +1 -0
- package/evidence/shopping/.gitkeep +1 -0
- package/evidence/todo/.gitkeep +1 -0
- package/evidence/todo/2026-06-25-codex-gpt-5/EVALUATION.md +66 -0
- package/evidence/todo/2026-06-25-codex-gpt-5/README.md +40 -0
- package/evidence/todo/2026-06-25-codex-gpt-5/ai-design-rules/generated-output.md +163 -0
- package/evidence/todo/2026-06-25-codex-gpt-5/ai-design-rules/metadata.json +38 -0
- package/evidence/todo/2026-06-25-codex-gpt-5/ai-design-rules/notes.md +20 -0
- package/evidence/todo/2026-06-25-codex-gpt-5/ai-design-rules/prompt.md +16 -0
- package/evidence/todo/2026-06-25-codex-gpt-5/ai-design-rules/scores.md +18 -0
- package/evidence/todo/2026-06-25-codex-gpt-5/baseline/generated-output.md +98 -0
- package/evidence/todo/2026-06-25-codex-gpt-5/baseline/metadata.json +19 -0
- package/evidence/todo/2026-06-25-codex-gpt-5/baseline/notes.md +19 -0
- package/evidence/todo/2026-06-25-codex-gpt-5/baseline/prompt.md +9 -0
- package/evidence/todo/2026-06-25-codex-gpt-5/baseline/scores.md +18 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/EVALUATION.md +70 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/README.md +52 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/GENERATION_NOTES.md +133 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/app.js +289 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/context/context-preserving-preview.json +443 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/context/daily-home-surface.json +373 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/context/quick-capture.json +301 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/context/sources-read.txt +36 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/generated-output.md +11 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/index.html +64 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/launch-prompt.md +1 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/metadata.json +55 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/notes.md +15 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/parent-status-message.md +1 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/prompt.md +49 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/runtime-checks.json +776 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/scores.md +20 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/desktop-completed.png +0 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/desktop-default.png +0 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/desktop-detail-reduced-motion.png +0 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/desktop-detail.png +0 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/desktop-empty.png +0 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/desktop-keyboard-focus.png +0 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/desktop-save-error.png +0 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/desktop-saved.png +0 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/desktop-saving.png +0 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/desktop-validation.png +0 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/mobile-completed.png +0 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/mobile-default.png +0 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/mobile-detail-reduced-motion.png +0 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/mobile-detail.png +0 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/mobile-empty.png +0 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/mobile-keyboard-focus.png +0 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/mobile-save-error.png +0 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/mobile-saved.png +0 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/mobile-saving.png +0 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/screenshots/mobile-validation.png +0 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/source-hashes.json +5 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/ai-design-rules/styles.css +122 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/baseline/GENERATION_NOTES.md +86 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/baseline/app.js +303 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/baseline/generated-output.md +11 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/baseline/index.html +71 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/baseline/launch-prompt.md +1 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/baseline/metadata.json +55 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/baseline/notes.md +15 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/baseline/parent-status-message.md +1 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/baseline/prompt.md +49 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/baseline/runtime-checks.json +772 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/baseline/scores.md +20 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/desktop-completed.png +0 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/desktop-default.png +0 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/desktop-detail-reduced-motion.png +0 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/desktop-detail.png +0 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/desktop-empty.png +0 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/desktop-keyboard-focus.png +0 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/desktop-save-error.png +0 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/desktop-saved.png +0 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/desktop-saving.png +0 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/desktop-validation.png +0 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/mobile-completed.png +0 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/mobile-default.png +0 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/mobile-detail-reduced-motion.png +0 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/mobile-detail.png +0 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/mobile-empty.png +0 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/mobile-keyboard-focus.png +0 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/mobile-save-error.png +0 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/mobile-saved.png +0 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/mobile-saving.png +0 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/baseline/screenshots/mobile-validation.png +0 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/baseline/source-hashes.json +5 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/baseline/styles.css +9 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/capture-ai-design-rules.js +60 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/capture-baseline.js +60 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/common/brief.md +35 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/common/knowledge-files.json +127 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/common/knowledge.patch +890 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/common/review-context.json +550 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/common/seed.json +86 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/common/setup.json +47 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/common/technical-envelope.md +11 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/layout-metrics.json +133 -0
- package/evidence/todo/2026-09-28-codex-paired-todo/layout-probe.js +15 -0
- package/examples/GENERATED_INDEX.md +8 -0
- package/examples/INDEX.md +16 -0
- package/examples/README.md +15 -0
- package/examples/consequential-action-confirmation-reference.md +83 -0
- package/examples/todo-app-benchmark.md +117 -0
- package/examples/todo-reference/README.md +29 -0
- package/examples/todo-reference/app.js +154 -0
- package/examples/todo-reference/favicon.svg +4 -0
- package/examples/todo-reference/index.html +67 -0
- package/examples/todo-reference/review-evidence/2026-07-15/desktop-default.png +0 -0
- package/examples/todo-reference/review-evidence/2026-07-15/desktop-detail.png +0 -0
- package/examples/todo-reference/review-evidence/2026-07-15/mobile-detail.png +0 -0
- package/examples/todo-reference/review-evidence/2026-07-15/mobile-error.png +0 -0
- package/examples/todo-reference/styles.css +241 -0
- package/graph/GENERATED_GRAPH.md +71 -0
- package/observations/README.md +23 -0
- package/observations/accessibility/reduced-interaction-motion.md +49 -0
- package/observations/accessibility/textual-error-recovery.md +50 -0
- package/observations/accessibility/visible-keyboard-focus.md +49 -0
- package/observations/ai/agent-consequential-action-controls.md +56 -0
- package/observations/ai/agent-work-visibility-and-intervention.md +51 -0
- package/observations/ai/figma-agent-context-and-skills.md +52 -0
- package/observations/finance/high-risk-wallet-recovery-flows.md +55 -0
- package/observations/finance/market-interface-adaptive-trading-surfaces.md +55 -0
- package/observations/interaction/chrome-scoped-view-transitions.md +52 -0
- package/observations/interaction/figma-motion-as-system-capability.md +53 -0
- package/observations/mobile/mobile-bottom-sheet-choice-contracts.md +55 -0
- package/observations/performance/reserved-loading-space.md +51 -0
- package/observations/product-repos/pinned-ai-design-rules-integration.md +49 -0
- package/observations/visual/apple-liquid-glass-functional-layer.md +52 -0
- package/observations/visual/chrome-content-first-adaptive-ui.md +51 -0
- package/observations/visual/material-3-expressive-system.md +52 -0
- package/package.json +65 -0
- package/patterns/GENERATED_INDEX.md +13 -0
- package/patterns/INDEX.md +41 -0
- package/patterns/README.md +5 -0
- package/patterns/consequential-action-confirmation.md +127 -0
- package/patterns/context-preserving-preview.md +145 -0
- package/patterns/daily-home-surface.md +134 -0
- package/patterns/mobile-primary-action.md +110 -0
- package/patterns/object-status-list.md +114 -0
- package/patterns/progressive-detail.md +113 -0
- package/patterns/quick-capture.md +132 -0
- package/prompts/CONSEQUENTIAL_ACTION_REVIEW.md +100 -0
- package/prompts/DESIGN_EVIDENCE_REVIEW.md +49 -0
- package/prompts/GENERATED_INDEX.md +11 -0
- package/prompts/INDEX.md +24 -0
- package/prompts/PROTOTYPE_REVIEW.md +189 -0
- package/prompts/QUICK_CAPTURE_STATE_REVIEW.md +74 -0
- package/prompts/TODO_APP_BENCHMARK.md +88 -0
- package/registry/objects.json +568 -0
- package/registry/relationships.json +972 -0
- package/research/GENERATED_INDEX.md +18 -0
- package/research/INDEX.md +40 -0
- package/research/accessibility/keyboard-focus-and-interaction-motion.md +62 -0
- package/research/accessibility/textual-error-recovery.md +57 -0
- package/research/performance/reserved-loading-space.md +56 -0
- package/research/products/apple-reminders.md +59 -0
- package/research/products/arc.md +61 -0
- package/research/products/linear.md +62 -0
- package/research/products/telegram.md +61 -0
- package/research/products/things-3.md +60 -0
- package/research/ux/contextual-agentic-interface.md +68 -0
- package/research/ux/high-risk-operational-flows.md +89 -0
- package/research/ux/motion-as-state-continuity.md +71 -0
- package/research/visual/expressive-system-ui-2026.md +75 -0
- package/reviews/GENERATED_INDEX.md +9 -0
- package/reviews/README.md +25 -0
- package/reviews/consequential-action-confirmation-review.md +92 -0
- package/reviews/todo-app-benchmark-reference-review.md +86 -0
- package/reviews/todo-reference-fixture-review.md +77 -0
- package/rules/GENERATED_INDEX.md +23 -0
- package/rules/INDEX.md +37 -0
- package/rules/accessibility/A11Y-001.md +58 -0
- package/rules/accessibility/A11Y-002.md +55 -0
- package/rules/accessibility/A11Y-003.md +54 -0
- package/rules/accessibility/A11Y-004.md +54 -0
- package/rules/ia/IA-001.md +60 -0
- package/rules/ia/IA-002.md +61 -0
- package/rules/performance/PERF-001.md +55 -0
- package/rules/product/PRD-001.md +61 -0
- package/rules/product/PRD-002.md +61 -0
- package/rules/ux/UX-001.md +58 -0
- package/rules/ux/UX-002.md +61 -0
- package/rules/ux/UX-003.md +60 -0
- package/rules/ux/UX-004.md +61 -0
- package/rules/ux/UX-005.md +62 -0
- package/rules/ux/UX-006.md +69 -0
- package/rules/visual/VIS-001.md +59 -0
- package/rules/visual/VIS-002.md +59 -0
- package/schema/checklist.schema.json +21 -0
- package/schema/common.schema.json +178 -0
- package/schema/observation.schema.json +21 -0
- package/schema/pattern.schema.json +21 -0
- package/schema/prompt.schema.json +21 -0
- package/schema/reference-project.schema.json +21 -0
- package/schema/research.schema.json +21 -0
- package/schema/review.schema.json +21 -0
- package/schema/rule.schema.json +21 -0
- package/skills/README.md +48 -0
- package/skills/accessibility-reviewer/SKILL.md +101 -0
- package/skills/agent-context/SKILL.md +34 -0
- package/skills/agent-context/agents/openai.yaml +4 -0
- package/skills/design-evidence-researcher/SKILL.md +47 -0
- package/skills/design-evidence-researcher/agents/openai.yaml +4 -0
- package/skills/design-reviewer/SKILL.md +113 -0
- package/skills/design-system-architect/SKILL.md +101 -0
- package/skills/information-architect/SKILL.md +97 -0
- package/skills/interaction-designer/SKILL.md +104 -0
- package/skills/knowledge-graph-architect/SKILL.md +96 -0
- package/skills/mobile-ux-expert/SKILL.md +105 -0
- package/skills/motion-designer/SKILL.md +100 -0
- package/skills/performance-reviewer/SKILL.md +97 -0
- package/skills/product-designer/SKILL.md +104 -0
- package/skills/prompt-architect/SKILL.md +105 -0
- package/skills/reference-driven-design/SKILL.md +119 -0
- package/skills/ux-reviewer/SKILL.md +99 -0
- package/skills/visual-designer/SKILL.md +107 -0
- package/starter-kit/AGENTS.md +37 -0
- package/starter-kit/BOOTSTRAP.md +13 -0
- package/starter-kit/INSTALL_WITH_AGENT.md +133 -0
- package/starter-kit/PROJECT_INTEGRATION.md +60 -0
- package/starter-kit/README.md +41 -0
- package/starter-kit/benchmarks/BENCHMARK_CHECKLIST.md +10 -0
- package/starter-kit/docs/DESIGN_DECISIONS.md +22 -0
- package/starter-kit/docs/INFORMATION_ARCHITECTURE.md +25 -0
- package/starter-kit/docs/PERSONAS.md +14 -0
- package/starter-kit/docs/PRD.md +32 -0
- package/starter-kit/docs/USER_FLOWS.md +19 -0
- package/starter-kit/reviews/DESIGN_REVIEW.md +49 -0
- package/starter-kit/templates/FEATURE_TEMPLATE.md +36 -0
- package/starter-kit/templates/TASK_TEMPLATE.md +22 -0
- package/templates/CHECKLIST_TEMPLATE.md +43 -0
- package/templates/OBSERVATION_TEMPLATE.md +41 -0
- package/templates/PATTERN_TEMPLATE.md +100 -0
- package/templates/PROMPT_TEMPLATE.md +46 -0
- package/templates/PROTOTYPE_REVIEW.md +50 -0
- package/templates/REFERENCE_PROJECT_TEMPLATE.md +49 -0
- package/templates/REVIEW_TEMPLATE.md +55 -0
- package/templates/RULE_TEMPLATE.md +57 -0
- package/tools/cli.mjs +46 -0
- package/tools/context.mjs +342 -0
- package/tools/designlint.mjs +77 -0
- package/tools/generate-indexes.mjs +621 -0
- package/tools/init.mjs +99 -0
- package/tools/validate-benchmark-evidence.mjs +248 -0
- 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.
|