frontend-agent
SKILL.md
Frontend Agent - UI/UX Specialist
When to use
- Building user interfaces and components
- Client-side logic and state management
- Styling and responsive design
- Form validation and user interactions
- Integrating with backend APIs
When NOT to use
- Backend API implementation -> use Backend Agent
- Native mobile development -> use Mobile Agent
Core Rules
- Component Reuse: Use
shadcn/uicomponents first. Extend viacvavariants or composition. Avoid custom CSS. - Design Fidelity: Code must map 1:1 to Design Tokens. Resolve discrepancies before implementation.
- Rendering Strategy: Default to Server Components for performance. Use Client Components only for interactivity and API integration.
- Accessibility: Semantic HTML, ARIA labels, keyboard navigation, and screen reader compatibility are mandatory.
- Tool First: Check for existing solutions and tools before coding.
1. Tooling & Performance
- Metrics: Target First Contentful Paint (FCP) < 1s.
- Optimization: Use
next/dynamicfor heavy components,next/imagefor media, and parallel routes. - Responsive Breakpoints: 320px, 768px, 1024px, 1440px
- Shadcn Workflow:
- Search:
shadcn_search_items_in_registries - Review:
shadcn_get_item_examples_from_registries - Install:
shadcn_get_add_command_for_items
- Search:
2. Architecture (FSD-lite)
- Root (
src/): Shared logic (components, lib, types). Hoist common code here. - Feature (
src/features/*/): Feature-specific logic. No cross-feature imports. Unidirectional flow only.
Feature Directory Structure
src/features/[feature]/
├── components/ # Feature UI components
│ └── skeleton/ # Loading skeleton components
├── types/ # Feature-specific type definitions
└── utils/ # Feature-specific utilities & helpers
Placement Rules
components/: React components only. One component per file.types/: TypeScript interfaces and type definitions.utils/: All feature-specific logic (formatters, validators, helpers). Requires >90% test coverage for custom logic.
Note: Feature level does NOT have
lib/folder. Useutils/for all utilities.lib/exists only at rootsrc/lib/level.
3. Libraries
| Category | Library |
|---|---|
| Date | luxon |
| Styling | TailwindCSS v4 + shadcn/ui |
| Hooks | ahooks (Pre-made hooks preferred) |
| Utils | es-toolkit (First choice) |
| State (URL) | jotai-location |
| State (Server) | TanStack Query |
| State (Client) | Jotai (Minimize use) |
| Forms | @tanstack/react-form + zod |
4. Standards
- Utilities: Check
es-toolkitfirst. If implementing custom logic, >90% Unit Test Coverage is MANDATORY. - Design Tokens: Source of Truth is
packages/design-tokens(OKLCH). Never hardcode colors. - i18n: Source of Truth is
packages/i18n. Never hardcode strings.
5. Component Strategy
Server vs Client Components
- Server Components: Layouts, Marketing pages, SEO metadata (
generateMetadata,sitemap) - Client Components: Interactive features and
useQueryhooks
Structure
- One Component Per File
Naming Conventions
| Type | Convention |
|---|---|
| Files | kebab-case.tsx (Name MUST indicate purpose) |
| Components/Types/Interfaces | PascalCase |
| Functions/Vars/Hooks | camelCase |
| Constants | SCREAMING_SNAKE_CASE |
Imports
- Order: Standard > 3rd Party > Local
- Absolute
@/is MANDATORY (No relative paths like../../) - MUST use
import typefor interfaces/types
Skeletons
- Must be placed in
src/features/[feature]/components/skeleton/
6. UI Implementation (Shadcn/UI)
- Usage: Prefer strict shadcn primitives (
Card,Sheet,Typography,Table) overdivor generic classes. - Responsiveness: Use
Drawer(Mobile) vsDialog(Desktop) viauseResponsive. - Customization Rule: Treat
components/ui/*as read-only. Do not modify directly.- Correct: Create a wrapper (e.g.,
components/common/ProductButton.tsx) or usecvacomposition. - Incorrect: Editing
components/ui/button.tsx.
- Correct: Create a wrapper (e.g.,
7. Designer Collaboration
- Sync: Map code variables to Figma layer names.
- UX: Ensure key actions are visible "Above the Fold".
How to Execute
Follow resources/execution-protocol.md step by step.
See resources/examples.md for input/output examples.
Before submitting, run resources/checklist.md.
Serena Memory (CLI Mode)
See ../_shared/memory-protocol.md.
Review Checklist
- A11y: Interactive elements have
aria-label. Semantic headings (h1-h6). - Mobile: Functionality verified on mobile viewports.
- Performance: No CLS, fast load.
- Resilience: Error Boundaries and Loading Skeletons implemented.
- Tests: Logic covered by Vitest where complex.
- Quality: Typecheck and Lint pass.
References
- Execution steps:
resources/execution-protocol.md - Code examples:
resources/examples.md - Code snippets:
resources/snippets.md - Checklist:
resources/checklist.md - Error recovery:
resources/error-playbook.md - Tech stack:
resources/tech-stack.md - Component template:
resources/component-template.tsx - Tailwind rules:
resources/tailwind-rules.md - Context loading:
../_shared/context-loading.md - Reasoning templates:
../_shared/reasoning-templates.md - Clarification:
../_shared/clarification-protocol.md - Context budget:
../_shared/context-budget.md - Lessons learned:
../_shared/lessons-learned.md
[!IMPORTANT] Treat
components/ui/*as read-only. Create wrappers for customization.