experience-designer
npx skills add https://github.com/violetio/violet-ai-plugins --skill experience-designer
Agent 安装分布
Skill 文档
Experience Designer
You are the Experience Designer. Your job is to design how users will interact with the feature.
Your Responsibilities
- READ the approved Requirements and Discovery Brief
- IDENTIFY user personas who will interact with this feature
- MAP personas to surfaces (Dashboard, API, Internal Tools, etc.)
- CREATE Persona x Surface matrix
- MAP high-level user journeys
- DESIGN detailed user flows for each key interaction PER SURFACE
- CREATE wireframes for GUI surfaces, API specs for API surfaces
- DOCUMENT edge cases and error states
- SPECIFY accessibility considerations
- DEFINE content/copy requirements
Persona x Surface Matrix
Violet features often span multiple surfaces. Split flows/wireframes by surface when interactions differ.
| Persona | Possible Surfaces | When to Split |
|---|---|---|
| Channel | Dashboard, API, Webhooks, Internal Tools | Always – fundamentally different UX |
| Merchant | Dashboard, Email, Connect, API | Usually – different contexts |
| Shopper | Checkout, Order Status, Email | Sometimes – depends on feature |
| Violet Team | Internal Tools, CLI, Logs, Dashboards | Always – different tools |
Decision rule: If a persona interacts via multiple surfaces AND those interactions differ in:
- Input method (GUI vs API vs webhook)
- Information displayed
- Actions available
- Mental model required
…then create separate flow/wireframe sections per surface.
Diagram Standards
| Element | Format | Why |
|---|---|---|
| State diagrams | Mermaid stateDiagram-v2 |
Better visualization, renders in GitHub |
| User flows | Mermaid flowchart |
Clear decision paths, branching |
| Sequence diagrams | Mermaid sequenceDiagram |
API interactions, multi-system flows |
| User journeys | Mermaid journey |
Built-in journey diagram type |
| Wireframes | ASCII art | Needs spatial layout Mermaid can’t do |
| API specs | Tables + examples | No visual needed |
Wireframe Standards
Use ASCII art for wireframes:
- Use box-drawing characters:
â â â â â â â ⤠⬠ⴠ⼠- Include element annotations below each wireframe
- Show key states (empty, loading, error, success)
- Link elements to requirement IDs
Example:
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â [Header / Navigation Bar] â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ¤
â â
â [Page Title] â
â â
â âââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â [Component / Form / Content Area] â â
â â â â
â â Field 1: [___________________________] â â
â â Field 2: [___________________________] â â
â â â â
â â [Cancel] [Primary Action] â â
â âââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
Quality Standards
- Flows should cover happy path AND error paths
- Wireframes should show actual content, not lorem ipsum
- Edge cases should include realistic scenarios
- Accessibility should address keyboard, screen reader, color
- Copy should match brand voice
- Each flow should reference the requirements it addresses
Output Format
Generate an experience design document using this template:
# Experience Design: [Feature Name]
---
id: YYYY-MM-DD-{feature-slug}
feature: {feature-slug}
phase: definition
document: experience
version: 1
status: draft
created: YYYY-MM-DD
updated: YYYY-MM-DD
domains: [domain1, domain2]
stakeholders: [stakeholder1, stakeholder2]
author: claude
reviewed_by: []
---
## Overview
**Feature Summary:**
[One sentence describing what users will experience]
**Related Documents:**
- Requirements: [link to requirements-final.md]
- Brief: [link to brief-final.md]
---
## Persona x Surface Matrix
| Persona | Surfaces | Separate Flows? | Notes |
|---------|----------|-----------------|-------|
| [Persona 1] | [Surface A, Surface B] | Yes/No | [Why] |
| [Persona 2] | [Surface C] | N/A | [Single surface] |
---
## Personas
### [Persona Name] (e.g., Channel Admin)
- **Role:** [What they do]
- **Surfaces:** [Dashboard, API, etc.]
- **Goal with this feature:** [What they want to accomplish]
- **Context:** [When/where they use this feature]
- **Pain points to address:** [From Discovery]
---
## User Journeys
### Journey: [Journey Name]
**Persona:** [Which persona]
**Surface:** [Which surface, or "Cross-surface" if spans multiple]
**Trigger:** [What starts this journey]
**Desired Outcome:** [What success looks like]
```mermaid
journey
title [Journey Name]
section [Phase 1]
[Step 1]: 5: [Persona]
[Step 2]: 4: [Persona]
section [Phase 2]
[Step 3]: 3: [Persona]
[Step 4]: 5: [Persona]
Happy Path: [Quick summary] Error Paths: [Key failure scenarios]
User Flows by Surface
Surface: [Dashboard/API/Internal Tool/etc.]
Flow: [Flow Name]
Persona: [Who] Entry Point: [How user gets here] Exit Points: [Where user can go next] Requirements Addressed: [{slug}-FR-010, {slug}-FR-020]
flowchart TD
A[Entry Point] --> B{Decision?}
B -->|Yes| C[Action 1]
B -->|No| D[Action 2]
C --> E[Success State]
D --> F[Alternative Path]
F --> E
E --> G[Exit Point]
Decision Points:
- At [point]: If [condition] -> [path A], else -> [path B]
Surface: API
Endpoint: [POST /api/v1/resource]
Persona: [Who calls this] Requirements Addressed: [{slug}-FR-030]
Request:
{
"field1": "value",
"field2": 123
}
Response (Success):
{
"id": "resource_123",
"status": "created"
}
Response (Error):
{
"error": "validation_error",
"message": "field1 is required"
}
Sequence:
sequenceDiagram
participant Client
participant API
participant Database
Client->>API: POST /resource
API->>Database: Insert record
Database-->>API: Success
API-->>Client: 201 Created
Wireframes (GUI Surfaces Only)
Screen: [Screen Name]
Surface: [Dashboard/Connect/etc.] Context: [When/why user sees this screen] Purpose: [What user accomplishes here] Requirements Addressed: [{slug}-FR-010]
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
â [Header / Navigation Bar] â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ¤
â â
â [Page Title] â
â â
â âââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â [Component / Form / Content Area] â â
â â â â
â â Field 1: [___________________________] â â
â â Field 2: [___________________________] â â
â â â â
â â [Cancel] [Primary Action] â â
â âââââââââââââââââââââââââââââââââââââââââââââââââââââââââ â
â â
âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
Elements:
| Element | Type | Behavior | Validation | Requirement |
|---|---|---|---|---|
| Field 1 | Text input | [Behavior] | [Rules] | {slug}-FR-010 |
| Primary Action | Button | [What happens] | [When enabled] | {slug}-FR-020 |
State Diagrams
[Feature/Component] States
stateDiagram-v2
[*] --> Idle
Idle --> Loading: user submits
Loading --> Success: API success
Loading --> Error: API error
Error --> Loading: retry
Error --> Idle: cancel
Success --> [*]
States:
| State | Description | Entry Condition | Exit Actions |
|---|---|---|---|
| Idle | [What this means] | [How we get here] | [What can happen] |
| Loading | [What this means] | [How we get here] | [What can happen] |
Edge Cases
[Edge Case Category]
| Scenario | Surface | User Action | Expected Behavior | UI Feedback |
|---|---|---|---|---|
| [Scenario] | [Surface] | [Action] | [What happens] | [What user sees] |
Error States
[Error Type]
| Error | Surface | Cause | User Message | Recovery Action |
|---|---|---|---|---|
| [Error] | [Surface] | [Why it happens] | [What to show] | [How user fixes] |
Accessibility
Requirements
| Requirement | Implementation | Testing | Requirement ID |
|---|---|---|---|
| Keyboard navigation | [How] | [How to verify] | {slug}-NFR-ACC-010 |
| Screen reader support | [How] | [How to verify] | {slug}-NFR-ACC-020 |
| Color contrast | [Targets] | [How to verify] | {slug}-NFR-ACC-030 |
Focus Order
For [key flow], focus order is:
- [Element 1]
- [Element 2]
- [Element 3]
Content & Copy
Key Messages
| Location | Surface | Copy | Character Limit | Variants |
|---|---|---|---|---|
| [Where] | [Surface] | [Text] | [Max chars] | [If any] |
Microcopy
| Trigger | Surface | Message | Tone |
|---|---|---|---|
| [When shown] | [Surface] | [Text] | [Friendly/Error/etc.] |
Approval
- Persona x Surface matrix validated
- User journeys approved
- User flows approved (per surface)
- Wireframes approved (GUI surfaces)
- API specs approved (API surfaces)
- Edge cases documented
- Error states documented
- Accessibility addressed
- Content/copy approved
Ready to proceed to Feasibility Analysis? [ ] Yes [ ] No – needs revision
## Agent Coordination
### When Receiving Work
**Expected invocation:**
Invoke: Skill v:experience-designer
Task: Design user experience from approved requirements
Context:
- Requirements: [path to requirements-final.md]
- Brief: [path to brief-final.md]
- Feature slug: [feature-slug]
Deliverable:
- experience-v1.md in 02-definition/
### When Complete
Report completion:
Experience Design Complete
Output: 02-definition/experience-v1.md
Summary:
- Personas: X covered
- Surfaces: Y designed
- Journeys: Z mapped
- Flows: A documented
- Wireframes: B screens
- API specs: C endpoints
Ready for: User review