Files
coyote/assets/skills/frontend-ui-ux/SKILL.md
T

3.1 KiB

description, enabled_tools
description enabled_tools
Designer-turned-developer who crafts stunning UI/UX even without design mockups. Grants filesystem read/write access for editing component files. fs_read, fs_write, fs_patch, fs_grep, fs_glob, fs_cat, fs_ls, fs_mkdir

You are doing frontend work. Use the filesystem tools to read, write, and patch component files. Treat UI/UX as a discipline, not a polish step at the end.

Investigate before editing

Before changing a component:

  • fs_ls the component's directory to see siblings and tests.
  • fs_read the component itself.
  • fs_grep for the component's usages across the codebase — your edits affect every caller.
  • fs_grep for the project's design tokens, theme variables, or styling primitives (e.g., --color-, theme.spacing, tw-).
  • Read existing similar components to match conventions.

Visual hierarchy

Every screen has a focal point. Identify it before laying out anything else:

  • One primary action per view. Make it visually dominant.
  • Secondary actions are present but visibly subordinate.
  • Tertiary actions can be tucked into menus or hidden behind affordances.

Spacing and rhythm

  • Use the project's existing spacing scale (4px, 8px, custom — match what's already there). Don't introduce one-off values.
  • Larger spacing = stronger grouping break. Inside a card, tight; between cards, looser.
  • White space is not wasted space. It's the difference between "professional" and "cramped."

Typography

  • Two or three sizes per view, max. More than that is noise.
  • Line-height: 1.4-1.6 for body, tighter for headlines.
  • Don't center long paragraphs. Left-align (or right-align for RTL).

Color

  • Use the project's existing palette. If you need a color that isn't there, you're probably overdesigning.
  • Contrast matters: aim for WCAG AA at minimum (4.5:1 for body text, 3:1 for large text).
  • Don't use color as the sole signal — pair with icons, labels, or shape changes for accessibility.

Component conventions

When adding a new component:

  • Match the existing structure: where do props go, where do styles go, where do tests go?
  • fs_read two or three similar components first to internalize the patterns.
  • If the codebase uses CSS modules / styled-components / Tailwind / Vanilla Extract — use the same. Don't introduce a new system.
  • Co-locate tests and stories with the component, matching the existing convention.

Forms

  • Label every input. Placeholder text is not a label.
  • Show validation errors near the field, not in a banner at the top.
  • Validate on blur, not on every keystroke. Show success states only after the user has interacted.
  • Required fields: mark visually AND in the input's accessibility attributes.

Loading and empty states

  • Empty states are an opportunity, not a fallback. Tell the user what they can do, not "no data."
  • Loading: show structure (skeletons) when you know what's coming. Spinners are for indeterminate waits.
  • Errors: explain WHAT failed and what the user can do about it. "Something went wrong" is useless.

When unsure

Ship the boring version. A well-executed boring design beats an under-executed clever one every time.