aj-geddes/bmad-ux
| Solutioning-phase UX planning skill (optional; activate when the project has a UI). palette, typography, spacing, component specs, WCAG 2.1 AA contract) and EXPERIENCE.md (user journeys, flow diagrams, screen states, error/empty/loading handling). Use when the user says "design the UX", "create UX planning docs", "define the design system", "map the user flows", "UX for this feature", "wireframe the flows", "what are the user journeys", "accessibility design", "WCAG compliance", "design tokens", "responsive design plan", "mobile-first design", or "create DESIGN.md / EXPERIENCE.md". Runs after architecture is drafted and before stories are created. Supports Create / Update / Validate intents.
npx skills add https://github.com/aj-geddes/claude-code-bmad-skills --skill bmad-ux
Produces the two-document UX contract that downstream story authors and the external
dev tool rely on. This is a planning skill. It produces specifications, not code.
Under bmad-output/ (or the folder in config.yaml):
bmad-output/
├── DESIGN.md # Visual system: tokens, components, accessibility contract
└── EXPERIENCE.md # Journeys, flows, states, error/empty/loading specs
Both documents are locked planning artifacts. The external dev tool may read them
but must not edit them. All design decisions should be recorded in decision-log.md.
to decision-log.md explaining what changed and why.
the WCAG checklist; report findings but do not alter the project's code.
Before drafting, read (in order):
bmad-output/config.yaml — project name, track, output folder.bmad-output/project-context.md — user personas, platform targets, constraints.bmad-output/prd.md (if present) — feature list, user stories, acceptance criteria.bmad-output/architecture.md (if present) — component boundaries, API contracts.If any of these are missing, ask the user for the key inputs before proceeding.
Use ${CLAUDE_PLUGIN_ROOT}/skills/bmad-ux/templates/design.template.md.
The document covers:
1. Design Tokens
Commit to concrete values. Placeholders are not acceptable for tokens.
neutral scale. All color pairs used for text must be WCAG 2.1 AA verified.
Minimum 16px body on mobile (prevents iOS zoom). Base unit: 8px.
2. Component Specs
For each component: visual defaults, all interaction states (default / hover / focus /
active / disabled / loading / error / success), responsive behavior, and accessibility
annotations (ARIA roles, aria-label placement, focus-trap rules, min touch target
44×44px on mobile).
Core components to specify: buttons (primary / secondary / destructive), text inputs,
select / checkbox / radio, cards, modals, navigation (desktop + mobile hamburger),
loading/skeleton states, error banners.
3. WCAG 2.1 AA Contract
Enumerate the concrete accessibility requirements the visual system guarantees:
Run the checklist to produce the contract summary:
bash "${CLAUDE_PLUGIN_ROOT}/skills/bmad-ux/scripts/wcag-checklist.sh"
Check specific color pairs with:
python "${CLAUDE_PLUGIN_ROOT}/skills/bmad-ux/scripts/contrast-check.py" #foreground #background
Verify responsive breakpoint rules:
bash "${CLAUDE_PLUGIN_ROOT}/skills/bmad-ux/scripts/responsive-breakpoints.sh"
Use ${CLAUDE_PLUGIN_ROOT}/skills/bmad-ux/templates/experience.template.md.
The document covers:
1. User Journeys
One section per major journey (onboarding, core workflow, settings, error recovery, etc.).
Each journey: goal, persona, entry points, happy-path flow diagram (ASCII or bullet
steps), estimated time, and drop-off risk notes.
2. Screen / State Inventory
For every screen or major view: purpose, layout wireframe (ASCII encouraged),
component hierarchy, and all named states:
aria-live="polite" announced.3. Decision Points & Alternative Paths
For each journey, map the branch points (validation failure, auth required, network
error, timeout, etc.). Each branch: trigger, display, and recovery path.
4. Interaction & Animation Notes
Timing and easing for transitions. Respect prefers-reduced-motion. Note which
animations are decorative vs. meaningful.
For projects with more than four major journeys, fan out parallel subagents:
| Agent | Task | Output file |
|-------|------|-------------|
| Agent 1 | Design tokens + color/contrast pairs → DESIGN.md §1 | bmad-output/ux-tokens-draft.md |
| Agent 2 | Core component specs → DESIGN.md §2 | bmad-output/ux-components-draft.md |
| Agent 3 | WCAG contract + a11y annotations | bmad-output/ux-a11y-draft.md |
| Agent N | One major user journey + screen states | bmad-output/ux-journey-N-draft.md |
Write shared context to bmad-output/ux-shared-context.md (personas, brand intent,
breakpoints) before launching agents. The main context assembles the drafts into the
two final documents and runs the WCAG checklist across all screens.
Example subagent prompt:
Task: Design the [journey name] user flow with full state coverage.
Context: Read bmad-output/ux-shared-context.md for personas, tokens, and component patterns.
Objective: Produce the [journey name] section of EXPERIENCE.md covering: entry points,
happy-path flow diagram, all screen states (loading/empty/error/success), decision
branch map, and accessibility annotations.
Output: Write to bmad-output/ux-journey-[name]-draft.md.
Constraints:
- Follow design tokens from context (colors, spacing, typography).
- WCAG 2.1 AA compliance: 4.5:1 contrast, keyboard accessible, 44px touch targets.
- Design mobile-first (320px), then scale to tablet and desktop.
- Specify all interaction states per component.
- No application code — planning specifications only.
component implementations, or test suites.
entirely and note the decision in decision-log.md.
are approved.
See REFERENCE.md for design pattern library, full breakpoint reference, and
component state matrix.
> ---
> Part of the BMAD Planning & Orchestrator plugin — a Claude Code harness for the BMAD Method by the BMAD Code Organization (https://github.com/bmad-code-org/BMAD-METHOD). Implements the spirit of bmad-ux-designer. All methodology credit belongs to the BMAD Code Organization.
Take aj-geddes/bmad-ux from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.