Skill: Create UI Component

SkillDev tools

Step-by-step workflow for creating accessible, tested UI components. Use when the user asks to create a new UI component.

Available today. Use it from your connected AI after setup.

Connect ahel once, and every AI you use reads what you have installed.

Then ask your AI: use the Skill: Create UI Component skill

What this skill tells your AI

The instructions your AI receives, as published by girijashankarj/cursor-handbook in .cursor/skills/frontend/component-creation/SKILL.md and read by ahel’s review.

Trigger

When the user asks to create a new UI component.

Prerequisites

  • Project uses React (or Vue; adjust steps)
  • src/components/ or equivalent exists
  • Testing framework configured (Jest, Vitest, etc.)
  • Styling approach known (Tailwind, CSS Modules, etc.)

Steps

Step 1: Define Component

  • Name the component (PascalCase)
  • Define its purpose and responsibilities
  • Identify parent and child components
  • List props and their types
  • Identify state requirements

Step 2: Create Component Directory

src/components/{category}/{ComponentName}/
├── {ComponentName}.tsx       # Component implementation
├── {ComponentName}.test.tsx  # Unit tests
├── {ComponentName}.stories.tsx # Storybook story (optional)
└── index.ts                  # Public export

Step 3: Define Props Interface

  • Create TypeScript interface for props
  • Add JSDoc documentation for complex props
  • Set default values where appropriate
  • Mark optional props with ?

Step 4: Implement Component

  • Use functional component with hooks
  • Destructure props in function signature
  • Implement rendering logic
  • Add error boundary if needed
  • Handle loading, error, and empty states

Step 5: Add Accessibility

  • Semantic HTML elements used
  • ARIA attributes where needed
  • Keyboard navigation works
  • Focus management for modals/popups
  • Color contrast meets WCAG 2.1 AA

Step 6: Add Styling

  • Follow project styling approach
  • Responsive across breakpoints
  • Dark mode support
  • Design token usage (no magic numbers)
  • No inline styles (except dynamic values)

Step 7: Write Tests

  • Renders correctly with default props
  • Renders correctly with all prop combinations
  • User interactions work (click, type, etc.)
  • Accessibility tests pass
  • Error states handled

Step 8: Create Export

  • Export component from index.ts
  • Export props interface

Completion Checklist

  • Component renders with default props
  • Props interface exported
  • Tests pass
  • Accessibility: keyboard nav, ARIA, contrast
  • No lint/type errors

If Step Fails

  • Step 2 (directory): Match existing structure in src/components/ (ui/, features/, layout/)
  • Step 5 (a11y): Use aria-label on icon buttons; role only when semantic HTML insufficient
  • Step 7 (tests): Run single file: npm test -- ComponentName.test.tsx. Fix type errors first with {{CONFIG.testing.typeCheckCommand}}

Example

Step 1: OrderSummary — displays order total and item count. Props: items, taxRate. Step 4: Functional component, useMemo for total calculation, loading/empty states.

Signals

GitHub stars
30
Forks
3
Last commit
Aug 2026
Advanced
Catalog kind
skill
Gateway key
component-creation
Source
github.com/girijashankarj/cursor-handbook