@schilling.mark.a/software-methodology 1.0.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 (77) hide show
  1. package/.github/copilot-instructions.md +106 -0
  2. package/LICENSE +21 -0
  3. package/README.md +174 -0
  4. package/atdd-workflow/SKILL.md +117 -0
  5. package/atdd-workflow/references/green-phase.md +38 -0
  6. package/atdd-workflow/references/red-phase.md +62 -0
  7. package/atdd-workflow/references/refactor-phase.md +75 -0
  8. package/bdd-specification/SKILL.md +88 -0
  9. package/bdd-specification/references/example-mapping.md +105 -0
  10. package/bdd-specification/references/gherkin-patterns.md +214 -0
  11. package/cicd-pipeline/SKILL.md +64 -0
  12. package/cicd-pipeline/references/deployment-rollback.md +176 -0
  13. package/cicd-pipeline/references/environment-promotion.md +159 -0
  14. package/cicd-pipeline/references/pipeline-stages.md +198 -0
  15. package/clean-code/SKILL.md +77 -0
  16. package/clean-code/references/behavioral-patterns.md +329 -0
  17. package/clean-code/references/creational-patterns.md +197 -0
  18. package/clean-code/references/enterprise-patterns.md +334 -0
  19. package/clean-code/references/solid.md +230 -0
  20. package/clean-code/references/structural-patterns.md +238 -0
  21. package/continuous-improvement/SKILL.md +69 -0
  22. package/continuous-improvement/references/measurement.md +133 -0
  23. package/continuous-improvement/references/process-update.md +118 -0
  24. package/continuous-improvement/references/root-cause-analysis.md +144 -0
  25. package/dist/atdd-workflow.skill +0 -0
  26. package/dist/bdd-specification.skill +0 -0
  27. package/dist/cicd-pipeline.skill +0 -0
  28. package/dist/clean-code.skill +0 -0
  29. package/dist/continuous-improvement.skill +0 -0
  30. package/dist/green-implementation.skill +0 -0
  31. package/dist/product-strategy.skill +0 -0
  32. package/dist/story-mapping.skill +0 -0
  33. package/dist/ui-design-system.skill +0 -0
  34. package/dist/ui-design-workflow.skill +0 -0
  35. package/dist/ux-design.skill +0 -0
  36. package/dist/ux-research.skill +0 -0
  37. package/docs/INTEGRATION.md +229 -0
  38. package/docs/QUICKSTART.md +126 -0
  39. package/docs/SHARING.md +828 -0
  40. package/docs/SKILLS.md +296 -0
  41. package/green-implementation/SKILL.md +155 -0
  42. package/green-implementation/references/angular-patterns.md +239 -0
  43. package/green-implementation/references/common-rejections.md +180 -0
  44. package/green-implementation/references/playwright-patterns.md +321 -0
  45. package/green-implementation/references/rxjs-patterns.md +161 -0
  46. package/package.json +57 -0
  47. package/product-strategy/SKILL.md +71 -0
  48. package/product-strategy/references/business-model-canvas.md +199 -0
  49. package/product-strategy/references/canvas-alignment.md +108 -0
  50. package/product-strategy/references/value-proposition-canvas.md +159 -0
  51. package/project-templates/context.md.template +56 -0
  52. package/project-templates/test-strategy.md.template +87 -0
  53. package/story-mapping/SKILL.md +104 -0
  54. package/story-mapping/references/backbone.md +66 -0
  55. package/story-mapping/references/release-planning.md +92 -0
  56. package/story-mapping/references/task-template.md +78 -0
  57. package/story-mapping/references/walking-skeleton.md +63 -0
  58. package/ui-design-system/SKILL.md +48 -0
  59. package/ui-design-system/references/accessibility.md +134 -0
  60. package/ui-design-system/references/components.md +257 -0
  61. package/ui-design-system/references/design-tokens.md +209 -0
  62. package/ui-design-system/references/layout.md +136 -0
  63. package/ui-design-system/references/typography.md +114 -0
  64. package/ui-design-workflow/SKILL.md +90 -0
  65. package/ui-design-workflow/references/acceptance-targets.md +144 -0
  66. package/ui-design-workflow/references/component-selection.md +108 -0
  67. package/ui-design-workflow/references/scenario-to-ui.md +151 -0
  68. package/ui-design-workflow/references/screen-flows.md +116 -0
  69. package/ux-design/SKILL.md +75 -0
  70. package/ux-design/references/information-architecture.md +144 -0
  71. package/ux-design/references/interaction-patterns.md +141 -0
  72. package/ux-design/references/onboarding.md +159 -0
  73. package/ux-design/references/usability-evaluation.md +132 -0
  74. package/ux-research/SKILL.md +75 -0
  75. package/ux-research/references/journey-mapping.md +168 -0
  76. package/ux-research/references/mental-models.md +106 -0
  77. package/ux-research/references/personas.md +102 -0
@@ -0,0 +1,116 @@
1
+ # Screen Flows
2
+
3
+ ## What is a Screen Flow?
4
+
5
+ A screen flow documents every screen a feature touches, how they connect, what each screen contains, and how it behaves. It is the design specification that acceptance tests verify against.
6
+
7
+ ## Design Principles
8
+
9
+ **Follow the user, not the feature.** Order screens by the path the user walks, not by technical grouping. A user creating an invoice starts at the list, moves to the form, ends at the detail. Design in that order.
10
+
11
+ **One screen flow per feature.** A feature file maps to one screen flow document. If a feature touches screens that already exist, document what changes on those screens — don't redesign from scratch.
12
+
13
+ **Design for the walking skeleton first.** The minimum viable version of each screen. Depth (sorting, filtering, pagination) comes in later releases.
14
+
15
+ **Annotate with scenario references.** Every design decision should trace back to a specific scenario. This makes acceptance tests straightforward to write.
16
+
17
+ ## Screen Document Structure
18
+
19
+ Each screen within the flow follows this structure:
20
+
21
+ ```markdown
22
+ ### [Screen Name]
23
+
24
+ **Entry from:** [Previous screen] via [action — e.g., "Create button"]
25
+ **Scenario refs:** [TASK-ID], Scenario: [scenario name]
26
+
27
+ #### Layout
28
+ [Describe the spatial arrangement — what's at the top, middle, bottom.
29
+ Use a simple ASCII wireframe or prose description.]
30
+
31
+ #### Data Displayed
32
+ | Element | Source | Format |
33
+ |---------|--------|--------|
34
+ | [Label] | [where data comes from] | [how it's formatted] |
35
+
36
+ #### Actions
37
+ | Action | Control Type | Outcome |
38
+ |--------|-------------|---------|
39
+ | [What user does] | [button/input/select/link] | [what happens next] |
40
+
41
+ #### States
42
+ - **Default:** [what the screen looks like when first loaded]
43
+ - **Loading:** [what the user sees while data is fetching]
44
+ - **Empty:** [what the user sees when there's no data]
45
+ - **Error:** [what the user sees when something fails]
46
+ - **Success:** [what the user sees after a successful action]
47
+
48
+ #### Accessibility
49
+ - [Key keyboard navigation path]
50
+ - [Screen reader label for primary action]
51
+ - [Any ARIA roles or states needed]
52
+ ```
53
+
54
+ ## File Format
55
+
56
+ Create: `/docs/ui-design/screen-flows/[feature-name].md`
57
+
58
+ ```markdown
59
+ # Screen Flow: [Feature Name]
60
+
61
+ **Feature file:** `/features/[domain]/[feature].feature`
62
+ **Story map task:** [TASK-ID]
63
+ **Release:** [Release name]
64
+
65
+ ## Flow Summary
66
+
67
+ [Simple prose description of the user's path through the feature.
68
+ 2-3 sentences maximum.]
69
+
70
+ ## Flow Diagram
71
+
72
+ ```
73
+ [Screen A] --[action]--> [Screen B] --[action]--> [Screen C]
74
+ |
75
+ [error] --> [Screen B with error state]
76
+ ```
77
+
78
+ ## Screens
79
+
80
+ [Screen documents in user-flow order, using the structure above]
81
+ ```
82
+
83
+ ## Notation for Flow Diagrams
84
+
85
+ Keep diagrams simple. ASCII is fine — the point is connectivity, not visual polish.
86
+
87
+ ```
88
+ [List Page] --[Create button]--> [Create Form]
89
+ [Create Form] --[Save]--> [Detail Page]
90
+ [Create Form] --[Cancel]--> [List Page]
91
+ [Create Form] --[validation error]--> [Create Form, error state]
92
+ [Detail Page] --[Edit button]--> [Edit Form]
93
+ [Detail Page] --[Back]--> [List Page]
94
+ ```
95
+
96
+ ## Designing for Existing Screens
97
+
98
+ When a new feature adds to a screen that already exists, document only the delta:
99
+
100
+ ```markdown
101
+ ### Invoice List (modified)
102
+
103
+ **Changes for this feature:**
104
+ - New column: "Status" — displays invoice state (Draft/Sent/Paid/Cancelled)
105
+ - New filter: "Status" dropdown in filter bar
106
+ - New action: "Export" button in toolbar
107
+
108
+ **Unchanged:** Sorting, pagination, search, row selection
109
+ ```
110
+
111
+ ## Common Mistakes
112
+
113
+ - Designing screens that no scenario requires — stick to what the scenarios describe
114
+ - Skipping the empty and error states — these are scenarios too
115
+ - Making screens too dense — if a screen has more than 7 primary actions, it's doing too much. Split into sub-screens or progressive disclosure
116
+ - Ignoring mobile — if the product will be used on mobile, note responsive breakpoints
@@ -0,0 +1,75 @@
1
+ ---
2
+ name: ux-design
3
+ description: UX design skill for information architecture, interaction design patterns, usability evaluation, and onboarding strategy. Use after BDD scenarios are written and before UI design workflow runs. Triggered when the user says "design the experience", "plan the IA", "how should this interact", "is this usable", or "design onboarding". Reads personas, mental models, and feature files. Produces IA documents, interaction specs, and usability evaluations. Ensures the product is findable, learnable, and recoverable before any screens are designed.
4
+ ---
5
+
6
+ # UX Design
7
+
8
+ ## Overview
9
+
10
+ Bridges research and visual design. Takes what ux-research learned about users and what bdd-specification defined as scenarios, then answers the structural questions: How is the product organized? How do controls behave? Will users actually be able to use this? How do first-time users learn it? These questions must be answered before screen flows are designed.
11
+
12
+ ## When to Run This Skill
13
+
14
+ - **New feature with UI:** After scenarios are written, before ui-design-workflow runs
15
+ - **Restructuring existing features:** When navigation is confusing or task completion rates are low
16
+ - **New user segment:** When the product must now serve users with different mental models or skill levels
17
+
18
+ ## Workflow
19
+
20
+ ### Step 1: Define Information Architecture
21
+
22
+ IA is how the product is organized — what lives where, how users find things, how the mental hierarchy maps to navigation. A wrong IA means users can't find what they need. A right IA feels obvious.
23
+
24
+ See `references/information-architecture.md` for structure, navigation patterns, and how to derive IA from mental models.
25
+
26
+ Create: `/docs/ux-design/information-architecture.md`
27
+
28
+ ### Step 2: Define Interaction Patterns
29
+
30
+ Interaction patterns are the rules that govern how controls behave. Consistency across the product means users learn once and apply everywhere. Inconsistency means every screen feels like a new product.
31
+
32
+ See `references/interaction-patterns.md` for the pattern catalog — feedback loops, form behavior, progressive disclosure, error recovery, and state transitions.
33
+
34
+ Create or update: `/docs/ux-design/interaction-patterns.md`
35
+
36
+ ### Step 3: Evaluate Usability
37
+
38
+ Before any screen is designed, evaluate the planned experience against established usability heuristics. Catch problems at the cheapest possible point — on paper, not after implementation.
39
+
40
+ See `references/usability-evaluation.md` for the evaluation framework, heuristics, and how to produce an evaluation report.
41
+
42
+ Create: `/docs/ux-design/usability-evaluation/[feature-name].md`
43
+
44
+ ### Step 4: Design Onboarding Strategy
45
+
46
+ First-time users have no context. They don't know what the product does, where things are, or what to do first. Onboarding bridges that gap — but only if it's designed intentionally.
47
+
48
+ See `references/onboarding.md` for onboarding patterns, when to use each, and how to design for the empty state.
49
+
50
+ Create: `/docs/ux-design/onboarding.md`
51
+
52
+ ## File Structure
53
+
54
+ ```
55
+ docs/ux-design/
56
+ ├── information-architecture.md ← Product organization and navigation
57
+ ├── interaction-patterns.md ← How controls behave across the product
58
+ ├── onboarding.md ← First-time user experience strategy
59
+ └── usability-evaluation/
60
+ └── [feature-name].md ← Evaluation report per feature
61
+ ```
62
+
63
+ ## Integration
64
+
65
+ ```
66
+ ux-research → personas, mental models, journeys
67
+
68
+ bdd-specification → scenarios (Given/When/Then)
69
+
70
+ ux-design (this skill) → IA, interaction patterns, usability check, onboarding
71
+
72
+ ui-design-workflow → screen flows and component specs
73
+ ```
74
+
75
+ IA determines the navigation structure that screen flows follow. Interaction patterns determine how components behave in every screen. Usability evaluation catches problems before screens are designed. Onboarding strategy determines what the empty state and first-use experience look like.
@@ -0,0 +1,144 @@
1
+ # Information Architecture
2
+
3
+ ## What Is Information Architecture?
4
+
5
+ IA is the structure of the product — how content and features are organized, categorized, and labeled so users can find what they need. It determines what appears in the navigation, how pages relate to each other, and what mental categories the product uses.
6
+
7
+ Good IA feels invisible. Users find things where they expect them without thinking about it. Bad IA feels like a maze — users know what they want but can't find it.
8
+
9
+ ## Deriving IA from Mental Models and Story Maps
10
+
11
+ IA is not invented. It is derived from two sources:
12
+
13
+ ### Source 1: Mental Models (from ux-research)
14
+
15
+ Read `/docs/ux-research/mental-models/`. The mental model defines the categories users expect. If the user thinks of their work in terms of "invoices", "customers", and "payments", those are the top-level categories — regardless of how the database is structured.
16
+
17
+ **Rule:** Navigation labels match mental model vocabulary. Never expose system terminology in navigation.
18
+
19
+ ### Source 2: Story Map Backbone (from story-mapping)
20
+
21
+ Read `/docs/story-map/backbone.md`. Each activity on the backbone is a potential top-level navigation item. The backbone is already ordered by user flow — IA follows that order.
22
+
23
+ **Rule:** If an activity has enough tasks to warrant its own section, it becomes a nav item. If it has 1–2 tasks, it may live inside a parent section.
24
+
25
+ ## Navigation Patterns
26
+
27
+ Choose ONE pattern for the product. Do not mix patterns. Consistency is more important than any individual pattern being "better."
28
+
29
+ ### Top Navigation Bar
30
+ **When to use:** 3–6 top-level sections. Desktop-primary products. Products where users switch between sections frequently.
31
+
32
+ ```
33
+ [Logo] [Section A] [Section B] [Section C] [Section D] [User]
34
+ ^^^^^^^^^^
35
+ Active section highlighted
36
+ ```
37
+
38
+ **Rules:**
39
+ - Maximum 6 items. More = group into a dropdown or rethink the IA.
40
+ - Active section is always visually distinct.
41
+ - Sub-sections appear as a secondary nav row or dropdown on hover/click.
42
+
43
+ ### Sidebar Navigation
44
+ **When to use:** 5+ top-level sections with sub-sections. App-style products where users spend long sessions inside one section. Products with hierarchical content.
45
+
46
+ ```
47
+ ┌─────────────┐
48
+ │ [Logo] │
49
+ │ │
50
+ │ [Section A] │ ← active
51
+ │ [Sub 1] │
52
+ │ [Sub 2] │
53
+ │ [Section B] │
54
+ │ [Section C] │
55
+ └─────────────┘
56
+ ```
57
+
58
+ **Rules:**
59
+ - Expandable/collapsible sections keep the sidebar scannable.
60
+ - Active item + active section are both highlighted.
61
+ - On mobile, sidebar becomes a drawer opened by hamburger menu.
62
+
63
+ ### Bottom Navigation (Mobile Only)
64
+ **When to use:** Mobile-first products with 3–5 primary sections. Users need one-thumb access to all major areas.
65
+
66
+ ```
67
+ ┌───────────────────────┐
68
+ │ │
69
+ │ [Content] │
70
+ │ │
71
+ ├───────────────────────┤
72
+ │ [A] [B] [C] [D] │ ← icons + labels, active highlighted
73
+ └───────────────────────┘
74
+ ```
75
+
76
+ **Rules:**
77
+ - Maximum 5 items (4 is ideal).
78
+ - Icons must be universally understood or labeled.
79
+ - Current section is highlighted. Badges show counts (unread, pending).
80
+
81
+ ## Labeling Rules
82
+
83
+ Labels are the words that appear in navigation and headings. They must match the mental model vocabulary exactly.
84
+
85
+ - Use the terms from `/docs/ubiquitous-language.md`
86
+ - Use nouns for sections ("Invoices"), not verbs ("Create Invoice")
87
+ - Use plural for collections ("Invoices", "Customers"), singular for individual items ("Invoice #001")
88
+ - Never use internal system names, database table names, or technical terms in navigation
89
+
90
+ ## Hierarchy Rules
91
+
92
+ - **Maximum depth: 3 levels.** Top section → Sub-section → Detail page. Deeper than 3 means the IA is too complex. Flatten or split.
93
+ - **Breadcrumbs for depth.** Any page more than 2 levels deep shows breadcrumbs so users know where they are and can navigate back.
94
+ - **Current location is always visible.** The user must always be able to answer "where am I?" by looking at the navigation.
95
+
96
+ ## File Format
97
+
98
+ Create: `/docs/ux-design/information-architecture.md`
99
+
100
+ ```markdown
101
+ # Information Architecture
102
+
103
+ **Navigation pattern:** [Top nav / Sidebar / Bottom nav]
104
+ **Source:** Derived from personas [list] and backbone activities [list]
105
+
106
+ ## Navigation Structure
107
+
108
+ ```
109
+ [Section A: Label]
110
+ ├── [Sub-section A1: Label]
111
+ ├── [Sub-section A2: Label]
112
+ └── Detail: [Individual item page]
113
+
114
+ [Section B: Label]
115
+ ├── [Sub-section B1: Label]
116
+ └── Detail: [Individual item page]
117
+ ```
118
+
119
+ ## Section Definitions
120
+
121
+ ### [Section A: Label]
122
+ **Mental model source:** [Which mental model this maps to]
123
+ **Backbone activity:** [Which story map activity]
124
+ **Contains:** [What the user finds here]
125
+ **Entry point:** [How users get here — nav item, link, etc.]
126
+
127
+ ### [Section B: Label]
128
+ [Same structure]
129
+
130
+ ## Labeling Decisions
131
+ | Label used | Why | Alternative rejected | Why rejected |
132
+ |---|---|---|---|
133
+ | [Label] | [Reason — matches mental model / ubiquitous language] | [Alt] | [Why not] |
134
+
135
+ ## Navigation Rules (product-specific)
136
+ - [Any rules specific to this product's IA]
137
+ ```
138
+
139
+ ## Common IA Mistakes
140
+
141
+ - **Organizing by feature instead of by user goal.** "Reports" is a feature. "My Business Health" is a user goal. Organize around what the user wants to accomplish.
142
+ - **Too many top-level sections.** If navigation has 8+ items, users can't scan it. Group related sections. Reduce scope.
143
+ - **Inconsistent labeling.** Calling something "Invoices" in the nav but "Bills" in the content. Pick one term. Use it everywhere.
144
+ - **Burying critical actions.** If the primary action (create invoice) requires more than 2 clicks from any page, the IA is wrong. Primary actions should be reachable from anywhere.
@@ -0,0 +1,141 @@
1
+ # Interaction Patterns
2
+
3
+ ## What Are Interaction Patterns?
4
+
5
+ Interaction patterns are the rules that govern how controls behave. They are product-wide conventions. A button behaves the same way on every screen. A form validates the same way everywhere. An error is presented the same way throughout.
6
+
7
+ Consistency here is the difference between a product that feels like one cohesive tool and a product that feels like a collection of unrelated screens.
8
+
9
+ ## Pattern 1: Feedback Loops
10
+
11
+ Every action the user takes must produce a visible result. Without feedback, users don't know if their action worked, repeat it (causing duplicates), or lose trust.
12
+
13
+ ### Feedback Timing
14
+
15
+ | Action type | Feedback timing | Feedback type |
16
+ |---|---|---|
17
+ | Button click (instant action) | Immediate (< 200ms) | Visual state change on button |
18
+ | Form submission | Immediate (button shows loading) | Loading state, then success or error |
19
+ | Data save (auto-save) | Within 2 seconds | Subtle "Saved" indicator, fades after 3s |
20
+ | Background process | Within 5 seconds | Progress indicator or status update |
21
+ | Long-running process (> 10s) | Ongoing | Progress bar with estimated time, or "We're working on it" |
22
+
23
+ ### Feedback Hierarchy
24
+
25
+ - **Micro-feedback:** Button press ripple, checkbox toggle animation. Confirms the control registered the interaction.
26
+ - **Action feedback:** Toast notification, inline status change. Confirms the action completed.
27
+ - **State feedback:** Page updates, data refreshes. Confirms the result is reflected.
28
+
29
+ **Rule:** Never skip a level. If a button click triggers a save, the user needs micro-feedback (button reacts), action feedback (save confirmed), AND state feedback (the saved data appears).
30
+
31
+ ## Pattern 2: Form Behavior
32
+
33
+ Forms are the most common interaction pattern. Consistency here has the highest impact.
34
+
35
+ ### Validation Timing
36
+
37
+ | Validation type | When to validate | Why |
38
+ |---|---|---|
39
+ | Required field | On blur (when user leaves the field) | Validates too early (on focus) is annoying. Too late (on submit) wastes time. |
40
+ | Format validation (email, phone) | On blur | Same reasoning as required fields |
41
+ | Cross-field validation (password confirm) | On blur of the second field | Can't validate until both fields have values |
42
+ | Business rule validation (unique name) | On blur, requires server call | Must check against existing data |
43
+ | Form-level validation | On submit | Catches anything field-level missed |
44
+
45
+ ### Error Presentation
46
+
47
+ - Field-level errors appear **inline, directly below the field**. Never at the top of the form alone.
48
+ - The field border changes to error state (see ui-design-system components reference).
49
+ - Focus moves to the first field with an error on submit.
50
+ - Error messages are specific: "Email must contain @" not "Invalid input".
51
+ - Error messages suggest correction: "Must be at least 8 characters (currently 5)" not just "Too short".
52
+
53
+ ### Success After Submit
54
+
55
+ - Form disappears or transitions to a confirmation/detail view
56
+ - A success indicator confirms what was created or saved
57
+ - The user can immediately see the result of their action — no need to navigate elsewhere to verify
58
+
59
+ ## Pattern 3: Progressive Disclosure
60
+
61
+ Show only what the user needs right now. Reveal more as their context develops. Overwhelming users with all options at once increases cognitive load and reduces task completion.
62
+
63
+ ### Levels of Disclosure
64
+
65
+ **Level 1 — Default view:** The minimum controls needed for the most common action. Everything else is hidden.
66
+
67
+ **Level 2 — Expanded view:** Additional options revealed when the user indicates they need them (clicks "More options", selects a specific variant, etc.)
68
+
69
+ **Level 3 — Advanced view:** Power-user options behind a clearly labeled "Advanced" toggle or section. Most users never see this.
70
+
71
+ ### When to Disclose
72
+
73
+ | Trigger | Pattern |
74
+ |---|---|
75
+ | User clicks "More options" | Expand additional fields/controls inline |
76
+ | User selects a specific type | Show fields relevant to that type only |
77
+ | User has completed the basic flow | Offer enhancements ("Want to add a discount?") |
78
+ | User explicitly opts in | Show advanced configuration panel |
79
+
80
+ ### Rules
81
+ - The default view must be sufficient to complete the primary task
82
+ - Disclosed content appears adjacent to the trigger, not in a separate location
83
+ - Disclosure state persists within the session — don't collapse it every time
84
+ - Label what's hidden: "3 more options available" not just a vague "More" button
85
+
86
+ ## Pattern 4: Error Recovery
87
+
88
+ Errors will happen. The product's job is to make recovery as painless as possible. A product that handles errors gracefully builds more trust than a product that never has errors but recovers badly when it does.
89
+
90
+ ### Error Categories and Recovery Patterns
91
+
92
+ **Validation error (user input is wrong):**
93
+ - Show inline error message
94
+ - Keep all entered data intact — don't clear the form
95
+ - Focus on the first error field
96
+ - User corrects and resubmits — no penalty, no restart
97
+
98
+ **Not found (resource doesn't exist):**
99
+ - Show a clear message: "[Entity] not found"
100
+ - Suggest what to do next: "Check the ID and try again" or link to the list view
101
+ - Never show a blank page or a generic error code
102
+
103
+ **Permission denied (user can't do this):**
104
+ - Show a clear message: "You don't have permission to [action]"
105
+ - Explain what permission is needed or who to contact
106
+ - Don't hide the feature entirely — that makes it invisible and confusing
107
+
108
+ **Server error (something went wrong on our side):**
109
+ - Show a human-readable message: "Something went wrong. Please try again."
110
+ - Preserve entered data wherever possible
111
+ - Offer a retry button
112
+ - If the error persists, suggest contacting support
113
+
114
+ **Network error (connectivity lost):**
115
+ - Show a connection status indicator
116
+ - Queue actions locally if possible — complete them when reconnected
117
+ - Never lose unsaved work due to a network blip
118
+
119
+ ### Recovery Rules
120
+ - **Never blame the user.** Error messages describe what happened, not what the user did wrong.
121
+ - **Always provide a path forward.** Every error state has at least one action the user can take.
122
+ - **Preserve context.** The user should never have to start over after an error.
123
+
124
+ ## Pattern 5: State Transitions
125
+
126
+ Many entities in the product move through states (Draft → Sent → Paid). How these transitions are presented determines whether the user understands what's happening or is confused by unexplained changes.
127
+
128
+ ### Visibility Rules
129
+ - The current state is always visible on the entity's detail view
130
+ - State is shown as a badge or status indicator (see ui-design-system components)
131
+ - Available transitions (actions the user can take) are shown as buttons, labeled with the resulting state: "Send Invoice" not just "Next"
132
+ - Unavailable transitions are either hidden or shown as disabled with an explanation
133
+
134
+ ### Transition Feedback
135
+ - Transitioning state shows a brief loading indicator
136
+ - After transition, the state badge updates immediately
137
+ - A confirmation message states what changed: "Invoice sent to ACME Corp"
138
+ - If the transition fails, show an error and return to the previous state — no ambiguous in-between
139
+
140
+ ### State Visibility by Persona
141
+ Different personas may see different states. An accountant reviewing invoices sees "Pending Review" and "Approved". A business owner sending invoices sees "Draft" and "Sent". The state model is the same underneath — the UI filters what's relevant per persona.
@@ -0,0 +1,159 @@
1
+ # Onboarding
2
+
3
+ ## Why Onboarding Matters
4
+
5
+ First-time users have zero context. They don't know what the product does, where things are, or what to do first. The first 60 seconds determine whether a user stays or leaves. Onboarding is not a feature — it is the product's first conversation with the user.
6
+
7
+ The goal of onboarding is not to teach the entire product. It is to get the user to their first success as fast as possible. Once they experience success, they are motivated to explore further.
8
+
9
+ ## The First Success Principle
10
+
11
+ Every onboarding strategy must answer one question: **What is the single most valuable thing this user can accomplish in the first session, and how do we get them there with zero friction?**
12
+
13
+ This is the "first success." Everything in onboarding is optimized to reach it. Features, settings, and advanced capabilities wait until after first success.
14
+
15
+ **Example:** For an invoicing product, first success = "User creates and sends their first invoice." Onboarding does not teach reporting, settings, or integrations first. It guides the user straight to creating an invoice.
16
+
17
+ ## Onboarding Patterns
18
+
19
+ Choose the pattern(s) appropriate for the product and primary persona. Most products use a combination.
20
+
21
+ ### Pattern 1: Empty State Design
22
+
23
+ The most important onboarding moment is often the first screen the user sees after signing up — which is empty. An empty screen with no guidance causes immediate abandonment. An empty screen with a clear next step causes immediate engagement.
24
+
25
+ **Structure of an effective empty state:**
26
+ ```
27
+ [Icon or illustration — relates to the domain, not generic]
28
+
29
+ [Headline — what the user will be able to do here]
30
+ "Your invoices will appear here"
31
+
32
+ [Body — one sentence of context]
33
+ "Create your first invoice to get started."
34
+
35
+ [Primary action button — the single most important thing to do]
36
+ [Create Invoice]
37
+
38
+ [Optional: secondary link for users who need context first]
39
+ "Not sure where to start? See how it works →"
40
+ ```
41
+
42
+ **Rules:**
43
+ - Every list, table, or data view has a designed empty state
44
+ - The empty state is not a blank page with a generic "No data" message
45
+ - The primary action in the empty state is the same action that leads to first success
46
+ - The empty state disappears completely once data exists — it is not a persistent element
47
+
48
+ ### Pattern 2: Guided First Action
49
+
50
+ After the user clicks the empty state's primary action, guide them through the first completion without interruption.
51
+
52
+ **How it works:**
53
+ - The form or flow for the first action is pre-populated with sensible defaults wherever possible
54
+ - Required fields are minimal for the first action — reduce friction to zero
55
+ - Helper text or placeholder text explains what to put in each field
56
+ - No optional fields are shown on the first pass (progressive disclosure — see interaction-patterns.md)
57
+ - After completion, a clear success state confirms what was accomplished
58
+
59
+ **Example flow:**
60
+ ```
61
+ 1. Empty state: "Create your first invoice" → [Create Invoice]
62
+ 2. Form appears with:
63
+ - Customer name (helper: "Who is this invoice for?")
64
+ - Amount (helper: "How much do they owe?")
65
+ - Due date (default: 30 days from today)
66
+ - [Send Invoice] button
67
+ 3. Success: "Invoice sent to [Customer]! They'll receive it by email."
68
+ 4. User lands on invoice detail — first success achieved.
69
+ ```
70
+
71
+ ### Pattern 3: Contextual Tooltips
72
+
73
+ After first success, reveal additional capabilities at the point where they become relevant — not all at once.
74
+
75
+ **Rules:**
76
+ - Tooltips appear only when the user navigates to a new area for the first time
77
+ - One tooltip at a time. Never show multiple tooltips simultaneously.
78
+ - Each tooltip explains one thing: what this control does and why it matters
79
+ - Tooltips are dismissible. They do not block interaction.
80
+ - Tooltips do not reappear after dismissal (within the same session or across sessions, depending on product)
81
+ - Tooltips are not shown for controls that are self-explanatory (a button labeled "Save" needs no tooltip)
82
+
83
+ **Trigger rules:**
84
+ - First visit to a new section → show tooltip for the primary action in that section
85
+ - First time a new feature becomes available (e.g., after completing a prerequisite) → show tooltip explaining the new capability
86
+ - Never show tooltips based on time alone ("You've been using this for 5 minutes, here's a tip") — this interrupts flow
87
+
88
+ ### Pattern 4: Progress Indication
89
+
90
+ For products where setup requires multiple steps (profile completion, integrations, configuration), show progress so the user knows what remains.
91
+
92
+ **Structure:**
93
+ ```
94
+ Setup Progress: ██████░░░░ 60% complete
95
+
96
+ ✅ Create account
97
+ ✅ Send first invoice
98
+ ○ Connect bank account
99
+ ○ Set up recurring invoices
100
+ ```
101
+
102
+ **Rules:**
103
+ - Progress indication is only used when there are 3+ distinct setup steps
104
+ - Each step has a clear completion condition — no ambiguity about whether it's done
105
+ - Steps are ordered by value: the most valuable actions first
106
+ - Completing all steps is encouraged but never required — the product is fully usable after first success
107
+ - Progress indication disappears once all steps are complete or after a reasonable time (it does not linger forever)
108
+
109
+ ## Onboarding Strategy Document
110
+
111
+ Create: `/docs/ux-design/onboarding.md`
112
+
113
+ ```markdown
114
+ # Onboarding Strategy
115
+
116
+ **Primary persona:** [Name — from personas]
117
+ **First success definition:** [The single most valuable accomplishment in the first session]
118
+ **Patterns used:** [List: empty state design, guided first action, contextual tooltips, progress indication]
119
+
120
+ ## First Success Flow
121
+
122
+ [Step-by-step description of how the primary persona reaches first success.
123
+ Include what they see at each step, what is pre-populated, what is hidden.]
124
+
125
+ 1. [Step 1 — what the user sees and does]
126
+ 2. [Step 2]
127
+ 3. [Step N — first success achieved]
128
+
129
+ ## Empty States
130
+
131
+ | Screen | Empty state message | Primary action | Secondary link |
132
+ |---|---|---|---|
133
+ | [Screen name] | [Headline] | [Button label] | [Link text → destination] |
134
+ | [Screen name] | [Headline] | [Button label] | [Link text → destination] |
135
+
136
+ ## Contextual Tooltips
137
+
138
+ | Location | Trigger | Tooltip text | Why here |
139
+ |---|---|---|---|
140
+ | [Control or section] | [What triggers it] | [What the tooltip says] | [Why this is the right moment] |
141
+
142
+ ## Progress Steps (if applicable)
143
+
144
+ | Step | Completion condition | Value delivered |
145
+ |---|---|---|
146
+ | [Step name] | [How we know it's done] | [What the user gains] |
147
+
148
+ ## Secondary Persona Onboarding
149
+
150
+ [How does the secondary persona's first experience differ? Do they need a different first success path? Are there empty states specific to their view?]
151
+ ```
152
+
153
+ ## Common Onboarding Mistakes
154
+
155
+ - **Teaching the product before the user has a reason to care.** A video tour on signup teaches nothing — the user has no context to attach the information to. Guide them to first success first. Then teach.
156
+ - **Requiring setup before first value.** If the user must complete a 10-step setup before they can do anything useful, they leave. Make first success possible with zero setup.
157
+ - **Showing everything at once.** A dashboard full of empty widgets and "Get started" prompts everywhere is as confusing as an empty page. One clear next step at a time.
158
+ - **Never letting go.** Tooltips and guides that persist forever become noise. They should fade as the user becomes comfortable. The product should feel clean and uncluttered after the first session.
159
+ - **Ignoring the returning user.** A user who left mid-onboarding and returns should pick up where they left off, not restart. Preserve state.