agentsclimarketplace

Ux brief

Skill alexiolan/craft-skills/skills/ux-brief

Generate a structured UX brief for a feature before implementation — diagnosis + prioritized patches + success criteria — that downstream implementer agents (Sonnet, Qwen3.6, Haiku) execute without clarification. Invoked by architect/craft when the spec contains UI components. Solo frontend-design by default; combined mode (frontend-design + ui-ux-pro-max) for complex UI based on spec complexity tag.From its SKILL.md

Install
npx -y skills add alexiolan/craft-skills --skill ux-brief

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

One thing to look at

  • 17 stars17 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

SKILL.md

8.6 KB, as published. Nobody here has run it

UX Brief

Produce a per-feature ux-brief.md that translates a spec into concrete, implementable UX patches for downstream agents. The brief is the design contract that develop/implement agents read alongside the plan.

When to invoke

Architect / craft call this skill when:

  • The feature involves new or modified UI (components, pages, forms, tables, modals)
  • A spec file exists at .claude/plans/specs/ or .claude/plans/
  • .claude/aesthetic-direction.md exists (if not, invoke aesthetic-direction first)

Skip for backend-only changes, configuration changes, or pure refactors with no UI surface area.

Input

  • $ARGUMENTS: path to the spec file (or the feature plan file if no separate spec exists)
  • Reads: .claude/aesthetic-direction.md, project CLAUDE.md, target UI files

Process

Step 1: Complexity gate (hybrid inference + override)

Determine whether this feature needs solo frontend-design or combined (frontend-design + ui-ux-pro-max).

1a — Explicit override (authoritative): Parse the spec's YAML frontmatter. If complexity: is present with tags, use those:

---
title: ...
complexity: [comparison, data-dense]
---

Recognized complexity tags: comparison, dashboard, complex-form, data-dense, multi-step, table-heavy.

1b — Inference (fallback): If no explicit tag, scan the spec text for keywords:

Keyword in specImplied complexity
"compare", "comparison", "side-by-side"comparison
"dashboard", "metrics", "KPI", "analytics"dashboard
"multi-step form", "wizard", "checkout"complex-form, multi-step
"table", "grid of N columns", "data-dense"data-dense, table-heavy
Small/simple form (1-3 fields), button, toggle, single modal(no tag — solo)

If inference is borderline, pick solo and note in the brief: > Predicted complexity: {reasoning}. Add complexity: [...] to the spec frontmatter to override.

1c — Decision:

  • Any complexity tag matches → combined mode
  • No tags / none match → solo mode

Step 2: Check skill availability

FD=$(find ~/.claude/plugins -type d -name "frontend-design" 2>/dev/null | head -1)
PM=$(find ~/.claude/plugins -type d -name "ui-ux-pro-max" 2>/dev/null | head -1)

[ -n "$FD" ] && echo "FD_AVAILABLE" || echo "FD_UNAVAILABLE"
[ -n "$PM" ] && echo "PM_AVAILABLE" || echo "PM_UNAVAILABLE"

Gate:

  • FD_UNAVAILABLE → Abort this skill. Log: "frontend-design skill is required for UX brief generation. Install it or run the feature without design-layer gating." Architect continues without a brief.
  • Solo mode OR PM_UNAVAILABLE in combined mode → run solo (Step 3a)
  • Combined mode AND both available → run combined (Step 3b)

Step 3a: Solo mode

Dispatch an agent (general-purpose type, opus model) with this instruction:

You are producing a UX brief for downstream implementation agents.

Mandatory first step: invoke the frontend-design:frontend-design skill via the Skill tool. Do NOT invoke ui-ux-pro-max; this run is isolated.

Read, in this order:
1. .claude/aesthetic-direction.md — the project's design contract (HARD constraint)
2. Project CLAUDE.md (parent + project-level)
3. The spec: {spec-path}
4. The target UI files mentioned in the spec + any existing implementation being replaced

Produce .claude/plans/YYYY-MM-DD-{feature}/ux-brief.md with this structure:

# {Feature} — UX Brief

## Aesthetic anchor
Reference .claude/aesthetic-direction.md. 1-2 sentences on how this feature fits.

## UX jobs-to-be-done (ranked)
1. Primary: ...
2. Secondary: ...
3. Tertiary: ...

## Diagnosis (P0/P1/P2)
### P0 · <problem>
- Where: file:line
- Symptom: ...
- Root cause: UX principle violated

### (repeat for each)

## Patches (same priority order)
### Patch for "<problem>"
- Pattern: named UX pattern
- Why this over alternatives: principled 1-2 sentence justification (cite UX principle — JTBD, progressive disclosure, Fitts, Hick, pre-attentive, negativity bias, F-pattern, spatial co-location, color-contrast)
- Touch: exact file paths + component names
- Tokens to use: specific project Tailwind/DaisyUI/CSS-variable primitives from aesthetic-direction + observed in code
- Interaction spec: hover/focus/click/keyboard (1-3 bullets)
- Mobile behavior: explicit strategy
- A11y notes: contrast / ARIA / keyboard
- **Layout-parity guard** (MANDATORY if patch adds conditional chrome to a shared component): specify min-height, placeholder slot, or unconditional container so winner-vs-non-winner items do not desync.
- Effort: S / M / L

## Out of scope
3-5 items with 1-line reason each

## Success criteria
Testable checklist (≤7 items). Downstream agent knows they are done when these pass.

## Quality bar
- Actionability: a Sonnet or Haiku agent must implement any patch without asking clarifying questions.
- Specificity over taste: exact tokens, exact files, exact conditions.
- Respect the existing architecture: no rewrites, patches fit the current DDD structure.
- UX reasoning cites principles, not feelings.
- Prioritize by leverage: P0 is biggest UX win per unit of effort.

Hard constraints:
- NO HTML mockup files.
- Stay inside the project's existing DaisyUI/Tailwind/CSS-variable vocabulary (read from aesthetic-direction.md).
- NO aesthetic-novelty proposals.
- Do not propose changes outside the feature's stated scope.
- For every patch that adds conditional UI to a shared component, the Layout-parity guard field is non-optional.

Return a 4-sentence summary: (1) top 3 P0 problems, (2) top 3 patches, (3) what frontend-design specifically contributed to reasoning, (4) path to the brief file.

Step 3b: Combined mode

Same as Step 3a with these differences:

  1. The agent first invokes frontend-design:frontend-design to establish principle lens (voice, hierarchy discipline, attention architecture).
  2. Then invokes ui-ux-pro-max:ui-ux-pro-max to add pattern catalog (KPI strip, winner-per-metric, progressive-disclosure, error-summary, touch-target-size, color-not-only, direct-labeling) and a11y checklist rule citations.
  3. The agent must reconcile conflicts: favor frontend-design for voice/principle, pro-max for pattern specificity + a11y citations. Note conflicts in a short "Skill reconciliation" section.
  4. The brief is written to the same location.

Extra quality clause in combined mode: for every patch, the a11y notes section must cite at least one pro-max rule by name when applicable (color-not-only, touch-target-size, aria-live, error-summary, etc.).

Step 4: Return path

Report to the caller:

  • Path to ux-brief.md
  • Mode used (solo / combined)
  • Skill availability summary
  • Any ambiguity detected in complexity inference (so user can override with explicit frontmatter)

Output

File: .claude/plans/YYYY-MM-DD-{feature}/ux-brief.md

Filename convention: same YYYY-MM-DD-{feature} stem as the spec, in a directory (not flat) so the brief lives beside the plan and the design-review.md artifact:

.claude/plans/
├── 2026-04-19-compare-products-redesign/
│   ├── spec.md              (moved from .claude/plans/specs/ when directory is created)
│   ├── plan.md              (written by architect)
│   ├── ux-brief.md          (written by ux-brief, THIS skill)
│   └── design-review.md     (written by design-review, later)

If the spec is at .claude/plans/specs/YYYY-MM-DD-{feature}-design.md, leave it there — don't migrate existing layouts. The new per-feature directory pattern is opt-in and only used for newly created briefs.

Fallbacks

MissingBehavior
frontend-design skillAbort skill. Architect logs warning, proceeds with no UX brief. Impl agents lose design-layer context but plan still executes.
ui-ux-pro-max skill (combined mode requested)Silent degrade to solo. Brief includes note: > Pro-max unavailable — consider manual a11y audit of the implemented UI.
No .claude/aesthetic-direction.mdCaller (architect/craft) should invoke aesthetic-direction skill first. If called without it, skip gracefully and log: "Aesthetic direction missing. Run craft-skills:aesthetic-direction or add UI-design context to CLAUDE.md."
Spec file missingFail with clear message — this skill requires a written spec. Direct caller to architect/craft.

Keep looking

Skills are one crate of 627,801. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.