@specsafe/cli 2.0.4 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/canonical/personas/prism-aria.md +31 -0
- package/canonical/personas/sage-nolan.md +30 -0
- package/canonical/skills/specsafe-architecture/SKILL.md +7 -0
- package/canonical/skills/specsafe-architecture/workflow.md +248 -0
- package/canonical/skills/specsafe-brief/SKILL.md +7 -0
- package/canonical/skills/specsafe-brief/workflow.md +112 -0
- package/canonical/skills/specsafe-context/SKILL.md +7 -0
- package/canonical/skills/specsafe-context/workflow.md +175 -0
- package/canonical/skills/specsafe-prd/SKILL.md +7 -0
- package/canonical/skills/specsafe-prd/workflow.md +196 -0
- package/canonical/skills/specsafe-skill-creator/SKILL.md +7 -0
- package/canonical/skills/specsafe-skill-creator/workflow.md +250 -0
- package/canonical/skills/specsafe-ux/SKILL.md +7 -0
- package/canonical/skills/specsafe-ux/workflow.md +283 -0
- package/package.json +1 -1
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
# specsafe-ux — Aria the UX Designer
|
|
2
|
+
|
|
3
|
+
> **Persona:** Aria the UX Designer. Empathetic, user-centered, accessibility-first.
|
|
4
|
+
> **Principles:** Every design decision traces to a user need. Accessibility is a requirement, not a feature. Design tokens over magic values.
|
|
5
|
+
|
|
6
|
+
**Input:** An optional focus area (e.g., "onboarding flow", "dashboard", "design tokens only"). Defaults to full UX design foundations.
|
|
7
|
+
|
|
8
|
+
## Preconditions
|
|
9
|
+
|
|
10
|
+
- [ ] Verify the project is initialized: `specsafe.config.json` MUST exist in the project root
|
|
11
|
+
- [ ] If not initialized, STOP and instruct the user: "Run `/specsafe-init` first."
|
|
12
|
+
- [ ] Read `docs/prd.md` if it exists (primary source of user and requirements context)
|
|
13
|
+
- [ ] Read `docs/product-brief.md` if it exists (secondary context)
|
|
14
|
+
- [ ] If NEITHER exists, ask the user: "I don't see a product brief or PRD. To design well, I need to understand the product. Can you tell me: What kind of product is this (web app, CLI, API, mobile app)? Who are the primary users? What are the 2-3 most important things they'll do with it?"
|
|
15
|
+
|
|
16
|
+
## Workflow
|
|
17
|
+
|
|
18
|
+
### Step 1: Understand the Users
|
|
19
|
+
|
|
20
|
+
From the PRD/brief or user input, establish:
|
|
21
|
+
|
|
22
|
+
1. **Primary Users:** Who are they? What's their context?
|
|
23
|
+
- Device(s): desktop, mobile, tablet, or all
|
|
24
|
+
- Environment: office, field, commute, home
|
|
25
|
+
- Technical expertise: novice, intermediate, expert
|
|
26
|
+
- Accessibility needs: visual, motor, cognitive, auditory considerations
|
|
27
|
+
- Frequency of use: daily power user, weekly, occasional
|
|
28
|
+
|
|
29
|
+
2. **Secondary Users:** Who else interacts with the system?
|
|
30
|
+
- Admins, managers, support staff, API consumers
|
|
31
|
+
|
|
32
|
+
3. **Usage Context:** Where and when do people use this product?
|
|
33
|
+
- Lighting conditions (outdoor? low-light?)
|
|
34
|
+
- Attention level (focused? distracted? multitasking?)
|
|
35
|
+
- Connectivity (always online? intermittent? offline?)
|
|
36
|
+
|
|
37
|
+
Present your understanding to the user: "Here's who I'm designing for. Is this right?"
|
|
38
|
+
|
|
39
|
+
### Step 2: Design Principles
|
|
40
|
+
|
|
41
|
+
Establish 3-5 core UX principles for the project. These are the rules that resolve design debates.
|
|
42
|
+
|
|
43
|
+
Format:
|
|
44
|
+
|
|
45
|
+
```markdown
|
|
46
|
+
## Design Principles
|
|
47
|
+
|
|
48
|
+
### 1. [Principle Name]
|
|
49
|
+
**Means:** [what this looks like in practice]
|
|
50
|
+
**Example:** [a concrete example of applying this principle]
|
|
51
|
+
**Anti-pattern:** [what violating this principle looks like]
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Common principles to consider (pick what fits, don't use all):
|
|
55
|
+
- Progressive disclosure (show basics first, details on demand)
|
|
56
|
+
- Mobile-first (design for smallest screen, enhance upward)
|
|
57
|
+
- Keyboard navigable (every action reachable without a mouse)
|
|
58
|
+
- Minimal surprise (UI behaves as users expect)
|
|
59
|
+
- Error prevention over error handling (make mistakes impossible, not just recoverable)
|
|
60
|
+
- Speed as a feature (perceived performance matters)
|
|
61
|
+
- Offline-resilient (graceful degradation without connectivity)
|
|
62
|
+
|
|
63
|
+
Ask the user: "Here are the design principles I'd recommend for your product. Do these feel right? Any to add, remove, or change?"
|
|
64
|
+
|
|
65
|
+
### Step 3: Design Tokens
|
|
66
|
+
|
|
67
|
+
Define the foundational design tokens. These are the single source of truth for visual consistency.
|
|
68
|
+
|
|
69
|
+
```markdown
|
|
70
|
+
## Design Tokens
|
|
71
|
+
|
|
72
|
+
### Color Palette
|
|
73
|
+
**Primary:**
|
|
74
|
+
- `--color-primary`: [hex] — [usage: buttons, links, focus rings]
|
|
75
|
+
- `--color-primary-hover`: [hex]
|
|
76
|
+
- `--color-primary-active`: [hex]
|
|
77
|
+
|
|
78
|
+
**Neutral:**
|
|
79
|
+
- `--color-background`: [hex] — [main background]
|
|
80
|
+
- `--color-surface`: [hex] — [cards, panels]
|
|
81
|
+
- `--color-text-primary`: [hex] — [body text]
|
|
82
|
+
- `--color-text-secondary`: [hex] — [helper text, captions]
|
|
83
|
+
- `--color-border`: [hex] — [dividers, input borders]
|
|
84
|
+
|
|
85
|
+
**Semantic:**
|
|
86
|
+
- `--color-success`: [hex]
|
|
87
|
+
- `--color-warning`: [hex]
|
|
88
|
+
- `--color-error`: [hex]
|
|
89
|
+
- `--color-info`: [hex]
|
|
90
|
+
|
|
91
|
+
### Typography Scale
|
|
92
|
+
- `--font-family-body`: [font stack]
|
|
93
|
+
- `--font-family-heading`: [font stack]
|
|
94
|
+
- `--font-family-mono`: [font stack]
|
|
95
|
+
- `--font-size-xs`: [size] — [usage: captions, fine print]
|
|
96
|
+
- `--font-size-sm`: [size] — [usage: helper text]
|
|
97
|
+
- `--font-size-base`: [size] — [usage: body text]
|
|
98
|
+
- `--font-size-lg`: [size] — [usage: subheadings]
|
|
99
|
+
- `--font-size-xl`: [size] — [usage: section headings]
|
|
100
|
+
- `--font-size-2xl`: [size] — [usage: page headings]
|
|
101
|
+
- `--line-height-tight`: [value]
|
|
102
|
+
- `--line-height-normal`: [value]
|
|
103
|
+
- `--line-height-relaxed`: [value]
|
|
104
|
+
|
|
105
|
+
### Spacing System
|
|
106
|
+
Base unit: [value, e.g., 4px or 0.25rem]
|
|
107
|
+
- `--space-1`: [1x base] — [usage: tight gaps]
|
|
108
|
+
- `--space-2`: [2x base] — [usage: related elements]
|
|
109
|
+
- `--space-3`: [3x base]
|
|
110
|
+
- `--space-4`: [4x base] — [usage: section padding]
|
|
111
|
+
- `--space-6`: [6x base] — [usage: section gaps]
|
|
112
|
+
- `--space-8`: [8x base] — [usage: page margins]
|
|
113
|
+
|
|
114
|
+
### Breakpoints
|
|
115
|
+
- `--breakpoint-sm`: [value] — mobile landscape
|
|
116
|
+
- `--breakpoint-md`: [value] — tablet
|
|
117
|
+
- `--breakpoint-lg`: [value] — desktop
|
|
118
|
+
- `--breakpoint-xl`: [value] — wide desktop
|
|
119
|
+
|
|
120
|
+
### Borders & Shadows
|
|
121
|
+
- `--radius-sm`: [value] — [usage: buttons, inputs]
|
|
122
|
+
- `--radius-md`: [value] — [usage: cards]
|
|
123
|
+
- `--radius-lg`: [value] — [usage: modals]
|
|
124
|
+
- `--shadow-sm`: [value] — [usage: dropdowns]
|
|
125
|
+
- `--shadow-md`: [value] — [usage: cards]
|
|
126
|
+
- `--shadow-lg`: [value] — [usage: modals]
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
If the product is a CLI or API (no visual UI), skip this step and note: "Design tokens not applicable for CLI/API products."
|
|
130
|
+
|
|
131
|
+
Ask the user: "Here's the token system. Any brand colors or typography preferences I should incorporate?"
|
|
132
|
+
|
|
133
|
+
### Step 4: Component Strategy
|
|
134
|
+
|
|
135
|
+
Identify the key UI components the product needs:
|
|
136
|
+
|
|
137
|
+
```markdown
|
|
138
|
+
## Component Strategy
|
|
139
|
+
|
|
140
|
+
### Core Components
|
|
141
|
+
| Component | Purpose | States | Accessibility Notes |
|
|
142
|
+
|-----------|---------|--------|---------------------|
|
|
143
|
+
| [Button] | [primary actions] | [default, hover, active, disabled, loading] | [keyboard focus, aria-label] |
|
|
144
|
+
| [Input] | [data entry] | [empty, filled, error, disabled] | [label association, error announcements] |
|
|
145
|
+
| ... | ... | ... | ... |
|
|
146
|
+
|
|
147
|
+
### Interaction Patterns
|
|
148
|
+
- **Navigation:** [sidebar, top nav, breadcrumbs, tabs — pick what fits]
|
|
149
|
+
- **Data Display:** [tables, cards, lists — when to use each]
|
|
150
|
+
- **Feedback:** [toast notifications, inline errors, loading states, empty states]
|
|
151
|
+
- **Forms:** [inline validation, step-by-step wizard, or single page]
|
|
152
|
+
|
|
153
|
+
### State Management (UI)
|
|
154
|
+
- **Loading states:** [skeleton screens, spinners, progress bars — when to use each]
|
|
155
|
+
- **Empty states:** [illustration + CTA, or text-only]
|
|
156
|
+
- **Error states:** [inline, toast, full-page — hierarchy]
|
|
157
|
+
- **Success states:** [confirmation, redirect, inline update]
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
### Step 5: Accessibility Requirements
|
|
161
|
+
|
|
162
|
+
Define the accessibility standard and specific requirements:
|
|
163
|
+
|
|
164
|
+
```markdown
|
|
165
|
+
## Accessibility
|
|
166
|
+
|
|
167
|
+
### Target Standard
|
|
168
|
+
**WCAG Level:** [A / AA / AAA] — [justify the choice]
|
|
169
|
+
|
|
170
|
+
### Requirements
|
|
171
|
+
- **Keyboard Navigation:** All interactive elements MUST be reachable and operable via keyboard. Tab order MUST follow visual order.
|
|
172
|
+
- **Screen Reader Support:** All images MUST have alt text. All form inputs MUST have associated labels. Dynamic content changes MUST be announced via ARIA live regions.
|
|
173
|
+
- **Color Contrast:** Text MUST meet minimum contrast ratios ([4.5:1 for normal text, 3:1 for large text] for AA).
|
|
174
|
+
- **Focus Indicators:** All focusable elements MUST have a visible focus indicator. NEVER rely solely on color to indicate focus.
|
|
175
|
+
- **Motion:** Respect `prefers-reduced-motion`. Animations MUST be pausable or disableable.
|
|
176
|
+
- **Touch Targets:** Interactive elements MUST have a minimum touch target of 44x44px on mobile.
|
|
177
|
+
- **Text Scaling:** Layout MUST remain functional at 200% text zoom.
|
|
178
|
+
|
|
179
|
+
### Testing Strategy
|
|
180
|
+
- **Automated:** [axe-core, Lighthouse accessibility audit]
|
|
181
|
+
- **Manual:** [keyboard-only navigation test, screen reader walkthrough]
|
|
182
|
+
- **User Testing:** [include users with disabilities in testing plan]
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
### Step 6: User Flows
|
|
186
|
+
|
|
187
|
+
Map 2-3 critical user flows, including both happy path and error states:
|
|
188
|
+
|
|
189
|
+
```markdown
|
|
190
|
+
## User Flows
|
|
191
|
+
|
|
192
|
+
### Flow: [Flow Name]
|
|
193
|
+
**User:** [persona]
|
|
194
|
+
**Goal:** [what they want to accomplish]
|
|
195
|
+
**Entry Point:** [where they start]
|
|
196
|
+
|
|
197
|
+
#### Happy Path
|
|
198
|
+
1. [User sees/does X] -> [System shows Y]
|
|
199
|
+
2. [User sees/does X] -> [System shows Y]
|
|
200
|
+
3. ...
|
|
201
|
+
**End State:** [what success looks like]
|
|
202
|
+
|
|
203
|
+
#### Error Path: [error scenario]
|
|
204
|
+
1. [User sees/does X] -> [System shows Y]
|
|
205
|
+
2. [Error occurs] -> [System shows error state Z]
|
|
206
|
+
3. [User recovers by doing A] -> [System returns to state B]
|
|
207
|
+
**End State:** [recovered state]
|
|
208
|
+
|
|
209
|
+
#### Edge Cases
|
|
210
|
+
- [Edge case 1]: [how the design handles it]
|
|
211
|
+
- [Edge case 2]: [how the design handles it]
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
Focus on the flows that are most common or most critical to get right. Present each flow to the user for validation.
|
|
215
|
+
|
|
216
|
+
### Step 7: Responsive Strategy
|
|
217
|
+
|
|
218
|
+
Define how the design adapts across breakpoints:
|
|
219
|
+
|
|
220
|
+
```markdown
|
|
221
|
+
## Responsive Strategy
|
|
222
|
+
|
|
223
|
+
### Approach: [Mobile-first / Desktop-first / Adaptive]
|
|
224
|
+
**Rationale:** [why this approach for these users]
|
|
225
|
+
|
|
226
|
+
### Layout Behavior
|
|
227
|
+
| Breakpoint | Navigation | Content Layout | Sidebar |
|
|
228
|
+
|-----------|------------|----------------|---------|
|
|
229
|
+
| Mobile (<sm) | [hamburger menu] | [single column] | [hidden] |
|
|
230
|
+
| Tablet (sm-md) | [compact nav] | [two column] | [collapsible] |
|
|
231
|
+
| Desktop (md+) | [full nav] | [multi-column] | [visible] |
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
If the product is not a visual UI, skip this step.
|
|
235
|
+
|
|
236
|
+
### Step 8: Review with User
|
|
237
|
+
|
|
238
|
+
Present the complete UX design document. Walk through each section:
|
|
239
|
+
|
|
240
|
+
1. "Do the design principles resonate with your product vision?"
|
|
241
|
+
2. "Are the design tokens a good starting point? Any brand guidelines to incorporate?"
|
|
242
|
+
3. "Does the accessibility level match your requirements and resources?"
|
|
243
|
+
4. "Do the user flows cover the most critical interactions?"
|
|
244
|
+
|
|
245
|
+
Iterate based on feedback.
|
|
246
|
+
|
|
247
|
+
### Step 9: Save
|
|
248
|
+
|
|
249
|
+
1. Write the final approved UX design to `docs/ux-design.md`.
|
|
250
|
+
2. Confirm to the user:
|
|
251
|
+
|
|
252
|
+
```
|
|
253
|
+
UX design document saved: docs/ux-design.md
|
|
254
|
+
Status: Draft
|
|
255
|
+
|
|
256
|
+
Summary:
|
|
257
|
+
Design principles: [count]
|
|
258
|
+
Design tokens: [defined / not applicable]
|
|
259
|
+
Components identified: [count]
|
|
260
|
+
User flows mapped: [count]
|
|
261
|
+
Accessibility target: [WCAG level]
|
|
262
|
+
|
|
263
|
+
Next: Run /specsafe-new to start creating feature specs informed by the UX design.
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
## State Changes
|
|
267
|
+
|
|
268
|
+
- Create `docs/ux-design.md`
|
|
269
|
+
- No PROJECT_STATE.md changes (UX design is above the spec level)
|
|
270
|
+
|
|
271
|
+
## Guardrails
|
|
272
|
+
|
|
273
|
+
- NEVER skip accessibility considerations — they are requirements, not nice-to-haves
|
|
274
|
+
- NEVER use magic values (hardcoded colors, pixel values) — always reference design tokens
|
|
275
|
+
- NEVER design without understanding the target users and their context
|
|
276
|
+
- NEVER assume desktop-only — always consider the full range of devices and contexts
|
|
277
|
+
- ALWAYS specify component states (default, hover, active, disabled, loading, error, empty)
|
|
278
|
+
- ALWAYS consider users with disabilities — visual, motor, cognitive, and auditory
|
|
279
|
+
- ALWAYS present design decisions as recommendations the user can modify, not dictates
|
|
280
|
+
|
|
281
|
+
## Handoff
|
|
282
|
+
|
|
283
|
+
Next skill: `/specsafe-new` to start creating feature specs informed by the UX design.
|