@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,87 @@
1
+ # Test Strategy
2
+
3
+ ## Overview
4
+ This project uses ATDD with Red-Green-Refactor workflow. All test commands referenced by the atdd-workflow skill come from this file.
5
+
6
+ ## Testing Tools
7
+
8
+ ### Acceptance Testing
9
+ - **Framework**: [TODO: e.g., Playwright, Cypress, Selenium, TestCafe]
10
+ - **Purpose**: End-to-end testing through UI or API
11
+ - **File pattern**: `tests/acceptance/**/*.[test|spec].[ext]`
12
+
13
+ ### Unit Testing
14
+ - **Framework**: [TODO: e.g., Jest, Vitest, Mocha, pytest, JUnit]
15
+ - **Purpose**: Test business logic in isolation
16
+ - **File pattern**: `tests/unit/**/*.[test|spec].[ext]`
17
+
18
+ ### Test Doubles
19
+ - **Library**: [TODO: e.g., Jest mocks, Sinon, Mockito, unittest.mock]
20
+ - **Strategy**: Mock external dependencies (databases, APIs, file systems). Use real objects for domain logic.
21
+
22
+ ### Coverage
23
+ - **Tool**: [TODO: e.g., Istanbul/c8, Coverage.py, JaCoCo]
24
+ - **Minimum**: 90% line coverage
25
+ - **Critical paths**: 100% coverage required
26
+
27
+ ## Test Commands
28
+
29
+ **Claude Code uses these commands. Fill in all of them.**
30
+
31
+ ```bash
32
+ # Run all tests
33
+ [TODO]
34
+
35
+ # Run acceptance tests only
36
+ [TODO]
37
+
38
+ # Run unit tests only
39
+ [TODO]
40
+
41
+ # Generate coverage report
42
+ [TODO]
43
+
44
+ # Watch mode (for TDD loop)
45
+ [TODO]
46
+ ```
47
+
48
+ ## File Structure
49
+
50
+ ```
51
+ tests/
52
+ ├── acceptance/[domain]/ ← End-to-end tests (from Gherkin scenarios)
53
+ ├── unit/[domain]/ ← Unit tests (one behavior per test)
54
+ ├── fixtures/ ← Shared test data
55
+ └── helpers/ ← Page objects, builders, test utilities
56
+ ```
57
+
58
+ ## Test Structure Pattern
59
+
60
+ Follow Arrange-Act-Assert (AAA):
61
+ ```
62
+ Arrange: Set up state and preconditions
63
+ Act: Execute the behavior under test
64
+ Assert: Verify the expected outcome
65
+ ```
66
+
67
+ ## Architecture (for test organization)
68
+ [TODO: Describe your source code structure so tests mirror it]
69
+
70
+ Example:
71
+ - `/src/domain/` → `/tests/unit/domain/`
72
+ - `/src/application/` → `/tests/unit/application/`
73
+
74
+ ## Mock/Stub Strategy
75
+
76
+ ### Mock these:
77
+ - External APIs
78
+ - Databases
79
+ - File systems
80
+ - Email/notification services
81
+ - Time-dependent behavior
82
+
83
+ ### Do NOT mock these:
84
+ - Domain objects
85
+ - Value objects
86
+ - Pure functions
87
+ - Business logic calculations
@@ -0,0 +1,104 @@
1
+ ---
2
+ name: story-mapping
3
+ description: User story mapping for organizing user activities into a navigable map that connects business value to implementable tasks. Use when creating or updating a story map, planning releases, breaking down epics, organizing user tasks, or when the user says "story map", "user journey", "plan release", or "break down epic". Produces backbone.md, walking-skeleton.md, release plans, and individual task files in /docs/story-map/. Output tasks are consumed by bdd-specification skill.
4
+ ---
5
+
6
+ # User Story Mapping
7
+
8
+ ## Overview
9
+
10
+ Organizes user activities and tasks into a structured map that connects value propositions to implementable work. Provides the backbone that BDD specification and ATDD implementation build upon.
11
+
12
+ ## Before Starting — Read Context
13
+
14
+ 1. `/docs/business-model-canvas.md` — business model
15
+ 2. `/docs/value-proposition-canvas.md` — customer jobs, pains, gains (primary source for activities)
16
+ 3. `/docs/ubiquitous-language.md` — domain terminology
17
+ 4. `/docs/story-map/backbone.md` — existing backbone (if updating)
18
+
19
+ ## Workflow Decision
20
+
21
+ **No story map exists?** → Follow "Create Story Map" below
22
+ **Story map exists, adding features?** → Follow "Update Story Map" below
23
+ **Planning a release?** → Follow "Release Planning" below
24
+
25
+ ## Create Story Map
26
+
27
+ ### Step 1: Identify User Activities (Backbone)
28
+
29
+ Source: Value Proposition Canvas — Customer Jobs
30
+
31
+ Each customer job maps to one user activity. Activities are the horizontal spine of the map, ordered by typical user flow.
32
+
33
+ See `references/backbone.md` for structure and file format.
34
+
35
+ Create: `/docs/story-map/backbone.md`
36
+
37
+ ### Step 2: Define Walking Skeleton
38
+
39
+ The thinnest possible path through the system that delivers end-to-end value. One task per activity, minimum viable behavior.
40
+
41
+ See `references/walking-skeleton.md` for structure.
42
+
43
+ Create: `/docs/story-map/walking-skeleton.md`
44
+
45
+ ### Step 3: Break Activities into Tasks
46
+
47
+ For each activity, identify the specific things users do. Each task becomes an individual file.
48
+
49
+ See `references/task-template.md` for file structure.
50
+
51
+ Create: `/docs/story-map/user-tasks/[ACT-ID]-[task-NNN].md`
52
+
53
+ ### Step 4: Plan Release 1
54
+
55
+ Slice vertically — each release delivers end-to-end value across activities. Start with the walking skeleton.
56
+
57
+ See `references/release-planning.md` for approach.
58
+
59
+ Create: `/docs/story-map/releases/r1-mvp.md`
60
+
61
+ ## Update Story Map
62
+
63
+ When adding new features:
64
+ 1. Determine which activity the new task belongs to
65
+ 2. Create task file following the template
66
+ 3. Update backbone.md if a new activity is needed
67
+ 4. Update the relevant release plan
68
+ 5. Update traceability matrix
69
+
70
+ ## Release Planning
71
+
72
+ See `references/release-planning.md` for full guidance on vertical slicing, prioritization, and release scope definition.
73
+
74
+ ## File Structure
75
+
76
+ ```
77
+ docs/story-map/
78
+ ├── backbone.md ← User activities (horizontal spine)
79
+ ├── walking-skeleton.md ← Minimum viable journey
80
+ ├── releases/
81
+ │ ├── r1-mvp.md ← Release 1 scope
82
+ │ └── r2-[name].md ← Release 2 scope
83
+ └── user-tasks/
84
+ ├── ACT-001-task-001.md ← Individual task
85
+ ├── ACT-001-task-002.md
86
+ └── ACT-002-task-001.md
87
+ ```
88
+
89
+ ## Task ID Convention
90
+
91
+ ```
92
+ ACT-[activity number]-task-[task number]
93
+ Example: ACT-001-task-003
94
+ ```
95
+
96
+ ## Integration
97
+
98
+ ```
99
+ story-mapping (this skill) → identifies tasks and acceptance criteria
100
+
101
+ bdd-specification → writes Gherkin feature file for each task
102
+
103
+ atdd-workflow → implements with RED-GREEN-REFACTOR
104
+ ```
@@ -0,0 +1,66 @@
1
+ # Backbone — User Activities
2
+
3
+ ## What is the Backbone?
4
+
5
+ The horizontal spine of the story map. Each entry is a high-level user activity — a goal the user wants to accomplish. Activities are ordered left-to-right by the typical user flow through the system.
6
+
7
+ ## Deriving Activities from Value Proposition Canvas
8
+
9
+ Each Customer Job in the Value Proposition Canvas maps to one User Activity.
10
+
11
+ **Mapping process:**
12
+ 1. Read `/docs/value-proposition-canvas.md`
13
+ 2. List each Customer Job
14
+ 3. Reframe each job as a user activity (present tense, action-oriented)
15
+ 4. Order by typical usage sequence — what does a user do first, second, third?
16
+
17
+ **Example mapping:**
18
+ ```
19
+ Customer Job: "Send invoices to customers quickly"
20
+ → Activity: Invoice Management
21
+
22
+ Customer Job: "Track who owes me money"
23
+ → Activity: Payment Tracking
24
+
25
+ Customer Job: "Understand my business financial health"
26
+ → Activity: Financial Reporting
27
+ ```
28
+
29
+ ## Sequencing Rules
30
+
31
+ Order activities by **typical user flow**, not by:
32
+ - Technical complexity
33
+ - Implementation priority
34
+ - What's easiest to build
35
+
36
+ If activities are independent (user can do them in any order), sequence by frequency — most frequent first.
37
+
38
+ ## File Format
39
+
40
+ Create: `/docs/story-map/backbone.md`
41
+
42
+ ```markdown
43
+ # Story Map Backbone
44
+
45
+ ## User Activities
46
+
47
+ ### ACT-001: [Activity Name]
48
+ **User Goal:** [What the user wants to accomplish]
49
+
50
+ **Value Proposition Link:**
51
+ - Pain relieved: [from VPC]
52
+ - Gain created: [from VPC]
53
+
54
+ **Tasks:** [List task IDs once created]
55
+
56
+ ---
57
+
58
+ ### ACT-002: [Activity Name]
59
+ [same structure]
60
+ ```
61
+
62
+ ## Sizing Guidelines
63
+
64
+ - **Too few activities (1-2):** The system probably has more distinct user goals. Break down further.
65
+ - **Right range (3-7):** Most systems fall here.
66
+ - **Too many activities (8+):** Some activities might belong together. Consider grouping.
@@ -0,0 +1,92 @@
1
+ # Release Planning
2
+
3
+ ## Vertical Slicing
4
+
5
+ Each release must deliver end-to-end value. Slice across activities, not down them.
6
+
7
+ **Anti-pattern — horizontal slicing:**
8
+ ```
9
+ ❌ Release 1: All of Invoice Management (complete)
10
+ ❌ Release 2: All of Payment Tracking (complete)
11
+ ❌ Release 3: All of Financial Reporting (complete)
12
+
13
+ Problem: Release 1 delivers invoicing but user can't track payments.
14
+ No end-to-end value until Release 2.
15
+ ```
16
+
17
+ **Correct — vertical slicing:**
18
+ ```
19
+ ✅ Release 1: Basic invoice creation + basic payment tracking
20
+ ✅ Release 2: Advanced invoice features + payment details + basic reporting
21
+ ✅ Release 3: Full reporting + analytics + integrations
22
+
23
+ Each release: user can create invoices AND track payments (end-to-end value)
24
+ ```
25
+
26
+ ## Prioritization — MoSCoW
27
+
28
+ **Must Have:** Release fails without it. Core value proposition. Walking skeleton tasks.
29
+
30
+ **Should Have:** Important but a workaround exists. Significant value. Can slip to next release if needed.
31
+
32
+ **Could Have:** Nice to have. Minor improvement. Easy to defer.
33
+
34
+ **Won't Have (this release):** Explicitly out of scope. Document why — prevents scope creep.
35
+
36
+ ## Priority Matrix
37
+
38
+ When choosing what goes into a release, consider both axes:
39
+
40
+ | | Low Risk/Complexity | High Risk/Complexity |
41
+ |---|---|---|
42
+ | **High Value** | Do early — quick wins | De-risk early — learn fast |
43
+ | **Low Value** | Do late or defer | Question if needed at all |
44
+
45
+ ## Release File Format
46
+
47
+ Create: `/docs/story-map/releases/r[N]-[name].md`
48
+
49
+ ```markdown
50
+ # Release [N] — [Name]
51
+
52
+ ## Goal
53
+ [What end-to-end capability this release delivers]
54
+
55
+ ## Target Date
56
+ [Date]
57
+
58
+ ## Value Proposition
59
+ - Job to be done: [from VPC]
60
+ - Pain relieved: [from VPC]
61
+ - Gain created: [from VPC]
62
+
63
+ ## Included Tasks
64
+
65
+ ### [Activity Name]
66
+ - ✅ [TASK-ID]: [Task name] — [MoSCoW]
67
+ - ✅ [TASK-ID]: [Task name] — [MoSCoW]
68
+ - ❌ [TASK-ID]: [Task name] — deferred to R[N+1]
69
+
70
+ ### [Activity Name]
71
+ [same pattern]
72
+
73
+ ## Success Metrics
74
+ - [How we know this release succeeded]
75
+ - [Measurable user outcome]
76
+
77
+ ## Risks
78
+ - [Risk] — mitigated by [mitigation]
79
+
80
+ ## Dependencies
81
+ - [What must be ready before this release can ship]
82
+ ```
83
+
84
+ ## Release Sequencing
85
+
86
+ Release 1 always starts with the walking skeleton. Each subsequent release adds depth to existing activities before adding new activities.
87
+
88
+ **Decision:** "Should this go in the current release or next?"
89
+ - Does it block end-to-end value? → Current release
90
+ - Does a workaround exist? → Next release
91
+ - Is it high value + low risk? → Current release
92
+ - Is it high risk? → De-risk now (spike/prototype), implement when understood
@@ -0,0 +1,78 @@
1
+ # Task Template
2
+
3
+ ## File Location
4
+
5
+ `/docs/story-map/user-tasks/[ACT-ID]-task-[NNN].md`
6
+
7
+ Example: `/docs/story-map/user-tasks/ACT-001-task-003.md`
8
+
9
+ ## Template
10
+
11
+ ```markdown
12
+ # [ACT-ID]-task-[NNN]: [Task Name]
13
+
14
+ ## Activity
15
+ [ACT-ID]: [Activity Name]
16
+
17
+ ## User Task
18
+ As a [user role]
19
+ I want to [capability]
20
+ So that [business value]
21
+
22
+ ## Value Proposition Link
23
+ - Pain relieved: [from VPC]
24
+ - Gain created: [from VPC]
25
+
26
+ ## Acceptance Criteria
27
+ - [Observable behavior 1]
28
+ - [Observable behavior 2]
29
+ - [Observable behavior 3]
30
+
31
+ ## Priority
32
+ - **MoSCoW:** Must Have | Should Have | Could Have | Won't Have
33
+ - **Business Value:** High | Medium | Low
34
+ - **Complexity:** High | Medium | Low
35
+
36
+ ## Release
37
+ [Release name — e.g., "Release 1 - MVP"]
38
+
39
+ ## Dependencies
40
+ - [What must exist before this task can be implemented]
41
+
42
+ ## Feature File
43
+ [Path to .feature file — filled in after bdd-specification runs]
44
+
45
+ ## Status
46
+ - [ ] Acceptance criteria defined
47
+ - [ ] Example mapping complete
48
+ - [ ] Scenarios written
49
+ - [ ] Acceptance tests created
50
+ - [ ] Implementation complete
51
+ - [ ] Deployed
52
+
53
+ ## Notes
54
+ [Additional context]
55
+ ```
56
+
57
+ ## Task Sizing
58
+
59
+ **Right size:** Completable in 1-3 days, produces 1 feature file with 2-5 scenarios.
60
+
61
+ **Too large — split by:**
62
+ - CRUD operations (create / read / update / delete as separate tasks)
63
+ - Data complexity (basic first, then edge cases)
64
+ - User roles (different users, different tasks)
65
+ - Happy vs error paths (core behavior first, validation second)
66
+ - Incremental complexity (simple version first, advanced version later)
67
+
68
+ **Too small — combine when:**
69
+ - Task has no standalone user value
70
+ - Task is a single step inside a larger behavior
71
+ - Completing it alone doesn't change what the user can do
72
+
73
+ ## Characteristics of a Good Task
74
+
75
+ - **User-centric:** Written from the user's perspective, not the system's
76
+ - **Valuable:** Completing it delivers observable value to the user
77
+ - **Testable:** Success can be verified with concrete acceptance criteria
78
+ - **Independent:** Can be implemented without depending on other unbuilt tasks (where possible)
@@ -0,0 +1,63 @@
1
+ # Walking Skeleton
2
+
3
+ ## What is the Walking Skeleton?
4
+
5
+ The thinnest possible slice through the entire system that delivers end-to-end value. One task per activity, minimum viable behavior per task. It proves the architecture works and delivers real value before adding depth.
6
+
7
+ ## Rules
8
+
9
+ - Must touch every activity in the backbone (end-to-end)
10
+ - Each included task is reduced to its absolute minimum behavior
11
+ - Explicitly lists what is NOT included and why
12
+ - Becomes the core of Release 1
13
+
14
+ ## Determining Minimum Behavior
15
+
16
+ For each activity, ask: "What is the single simplest version of this that still delivers value?"
17
+
18
+ **Example — Invoice Management activity:**
19
+ - Full behavior: Multi-line items, tax calculation, drafts, editing, voiding, PDF export
20
+ - Walking skeleton: Single line item, no tax, save as final only, no editing
21
+
22
+ **Example — Payment Tracking activity:**
23
+ - Full behavior: Partial payments, multiple payment methods, payment history, reminders
24
+ - Walking skeleton: Mark invoice as paid or unpaid. Nothing else.
25
+
26
+ ## File Format
27
+
28
+ Create: `/docs/story-map/walking-skeleton.md`
29
+
30
+ ```markdown
31
+ # Walking Skeleton — Minimum Viable Journey
32
+
33
+ ## Goal
34
+ [What end-to-end value this delivers]
35
+
36
+ ## User Journey
37
+
38
+ ### 1. [Activity Name] — Simplified
39
+ - ✅ [Task ID]: [Task name]
40
+ - Included: [What's in]
41
+ - Excluded: [What's cut and why]
42
+
43
+ ### 2. [Activity Name] — Simplified
44
+ [same pattern]
45
+
46
+ ### 3. [Activity Name] — Deferred
47
+ - ❌ [Reason — e.g., "Not needed for core value loop"]
48
+
49
+ ## What's NOT in the Walking Skeleton
50
+ - [Feature] — deferred to R2
51
+ - [Feature] — deferred to R2
52
+ - [Feature] — not needed for minimum value delivery
53
+
54
+ ## Success Criteria
55
+ User can:
56
+ 1. [End-to-end action 1]
57
+ 2. [End-to-end action 2]
58
+ 3. [Verify value was delivered]
59
+ ```
60
+
61
+ ## Common Mistake
62
+
63
+ Including too much. The walking skeleton should feel uncomfortably thin. If it feels complete, cut more. Depth comes in subsequent releases.
@@ -0,0 +1,48 @@
1
+ ---
2
+ name: ui-design-system
3
+ description: Design system reference for consistent UI implementation. Use when implementing any UI component or screen, when choosing colors, spacing, typography, or layout, when the user says "style this", "what color should I use", or "follow the design system". Provides design tokens, layout grid rules, typography scale, component specifications, and accessibility standards. Read before writing any presentation layer code. Output of this skill populates /docs/ui-design/design-system.md in each project.
4
+ ---
5
+
6
+ # UI Design System
7
+
8
+ ## Overview
9
+
10
+ Single source of truth for visual and interactive consistency. Every screen, component, and layout decision references this system. Consistency is not optional — it is what makes a product feel professional and usable.
11
+
12
+ ## How to Use This Skill
13
+
14
+ **Starting a new project?** Read `references/design-tokens.md` first — tokens are the foundation everything else builds on. Then populate `/docs/ui-design/design-system.md` in your project with your chosen token values.
15
+
16
+ **Implementing a screen?** Read `references/layout.md` for grid and spacing, `references/typography.md` for text hierarchy, then `references/components.md` for the components you need.
17
+
18
+ **Choosing a color?** Read `references/design-tokens.md` — never use raw color values. Always reference a semantic token.
19
+
20
+ **Checking accessibility?** Read `references/accessibility.md` before shipping any screen.
21
+
22
+ ## Decision Tree — Which Reference to Load
23
+
24
+ ### "I need to choose colors or spacing"
25
+ → Read `references/design-tokens.md`
26
+
27
+ ### "I need to lay out a page or section"
28
+ → Read `references/layout.md`
29
+
30
+ ### "I need to style text or choose a heading level"
31
+ → Read `references/typography.md`
32
+
33
+ ### "I need to implement a button, input, table, or other UI element"
34
+ → Read `references/components.md`
35
+
36
+ ### "I need to check if my UI is accessible"
37
+ → Read `references/accessibility.md`
38
+
39
+ ## Project Setup
40
+
41
+ When starting a new project, create `/docs/ui-design/design-system.md` by populating the token values from `references/design-tokens.md` with your project's actual values. This file becomes the project-specific design system that ui-design-workflow reads.
42
+
43
+ ## Constraints
44
+
45
+ - **Never use raw values.** No hardcoded hex colors, no magic pixel numbers. Everything references a token.
46
+ - **Semantic naming.** Tokens are named for their purpose, not their value. `color.error` not `color.red`.
47
+ - **Accessibility first.** Every color combination must meet WCAG AA. Every interactive element must be keyboard-navigable. Read `references/accessibility.md` before any screen ships.
48
+ - **Consistency over preference.** If a component exists in the system, use it. Do not create a one-off variant because you personally prefer a different look.
@@ -0,0 +1,134 @@
1
+ # Accessibility
2
+
3
+ ## Standard: WCAG AA
4
+
5
+ All UI must meet WCAG 2.1 AA. This is not optional. Every screen, every component, every interaction.
6
+
7
+ ---
8
+
9
+ ## Color Contrast
10
+
11
+ ### Minimum Ratios (WCAG AA)
12
+
13
+ | Text type | Minimum ratio |
14
+ |---|---|
15
+ | Normal text (< 18px or < 14px bold) | 4.5:1 |
16
+ | Large text (≥ 18px or ≥ 14px bold) | 3:1 |
17
+ | UI components and graphical objects | 3:1 |
18
+
19
+ ### Rules
20
+ - Never convey meaning through color alone. Always pair with text, icon, or pattern.
21
+ - Error states: red background/border AND an error icon AND error message text. Not just red.
22
+ - Success states: green background/border AND a checkmark icon AND success message text.
23
+ - Disabled elements are exempt from contrast requirements — but don't use "disabled" as an excuse to make things invisible.
24
+
25
+ ### Token Compliance
26
+
27
+ When choosing token values for your project's design-system.md, verify every foreground/background combination meets the ratios above before committing.
28
+
29
+ ---
30
+
31
+ ## Keyboard Navigation
32
+
33
+ Every interactive element must be reachable and operable via keyboard alone.
34
+
35
+ ### Tab Order
36
+ - Follows the visual reading order (left to right, top to bottom)
37
+ - Never use `tabindex` values other than 0 or -1
38
+ - `tabindex="0"` — include in natural tab order
39
+ - `tabindex="-1"` — focusable programmatically, but not via Tab
40
+
41
+ ### Focus Visibility
42
+ - Every focused element shows a visible focus ring
43
+ - Focus ring: border.width.medium, border.color.focus, offset 2px
44
+ - Never remove the default focus outline without providing a replacement
45
+
46
+ ### Keyboard Interactions by Component
47
+
48
+ **Buttons:** Enter or Space activates
49
+ **Links:** Enter activates
50
+ **Inputs:** Tab moves between fields. Enter submits form (single-input forms only)
51
+ **Select:** Space opens dropdown. Arrow keys navigate options. Enter selects.
52
+ **Modal:** Tab cycles within modal only (focus trap). Escape closes.
53
+ **Tabs:** Arrow keys move between tabs. Enter/Space activates.
54
+ **Table:** Arrow keys navigate cells. Enter activates cell action.
55
+ **Accordion:** Enter/Space toggles panel. Arrow keys move between panels.
56
+
57
+ ---
58
+
59
+ ## Screen Reader Support
60
+
61
+ ### Semantic HTML First
62
+
63
+ Use native HTML elements before ARIA. A `<button>` is better than a `<div role="button">`. A `<nav>` is better than a `<div aria-label="Navigation">`.
64
+
65
+ ### Required ARIA Patterns
66
+
67
+ **Forms:**
68
+ - Every input has an associated `<label>` (via `for`/`id` or wrapping)
69
+ - Helper text linked via `aria-describedby`
70
+ - Error messages linked via `aria-describedby` AND `aria-invalid="true"` on the input
71
+
72
+ **Alerts:**
73
+ - Use `role="alert"` for error messages that appear dynamically
74
+ - Use `aria-live="polite"` for success/info messages that don't need immediate attention
75
+
76
+ **Buttons with icons only (no text label):**
77
+ - Must have `aria-label` describing the action
78
+ - Example: close button → `aria-label="Close modal"`
79
+
80
+ **Images:**
81
+ - Decorative images: `alt=""`
82
+ - Meaningful images: `alt="[description of what the image conveys]"`
83
+ - Never put the filename in alt text
84
+
85
+ **Tables:**
86
+ - Use `<th>` for headers with `scope="col"` or `scope="row"`
87
+ - Use `<caption>` or `aria-label` on the `<table>` to describe its purpose
88
+
89
+ **Navigation:**
90
+ - Wrap in `<nav>` element
91
+ - If multiple nav elements exist, use `aria-label` to distinguish them
92
+ - Active page/item: `aria-current="page"` or `aria-current="true"`
93
+
94
+ **Modals:**
95
+ - `role="dialog"` and `aria-modal="true"`
96
+ - `aria-labelledby` pointing to the modal title
97
+ - Focus moves to the modal on open. Returns to the trigger on close.
98
+
99
+ ### Loading States
100
+ - Announce loading with `aria-live="polite"` — "Loading results..."
101
+ - Announce completion — "Results loaded. Showing 12 invoices."
102
+ - Never use a spinner alone without text. Screen readers can't see it.
103
+
104
+ ---
105
+
106
+ ## Reduced Motion
107
+
108
+ Respect `prefers-reduced-motion: reduce`:
109
+ - Disable or minimize animations
110
+ - Replace motion-based transitions with instant state changes
111
+ - Keep functional animations (loading spinner) but simplify them
112
+
113
+ ---
114
+
115
+ ## Pre-Ship Accessibility Checklist
116
+
117
+ Run this before any screen ships:
118
+
119
+ - [ ] All text meets contrast ratios against its background
120
+ - [ ] Color is not the sole indicator of meaning (status, errors, required fields)
121
+ - [ ] All interactive elements are reachable via keyboard in logical order
122
+ - [ ] Focus is always visible
123
+ - [ ] All form inputs have visible labels
124
+ - [ ] All error messages are associated with their inputs
125
+ - [ ] All images have appropriate alt text
126
+ - [ ] Dynamic content changes are announced via aria-live
127
+ - [ ] Modals trap focus and are dismissible via Escape
128
+ - [ ] Page has exactly one h1
129
+ - [ ] Heading levels are sequential (no skips)
130
+ - [ ] Tables use proper header structure
131
+ - [ ] Navigation landmarks are labeled
132
+ - [ ] Loading and empty states are announced to screen readers
133
+ - [ ] Animations respect prefers-reduced-motion
134
+ - [ ] Touch targets are at least 44×44px on mobile