Awesome-omni-skill frontend
Defines frontend standards for Next.js App Router, React 19, React Query, shadcn/ui. Use when building components, pages, hooks, or frontend state management.
install
source · Clone the upstream repo
git clone https://github.com/diegosouzapw/awesome-omni-skill
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/diegosouzapw/awesome-omni-skill "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/development/frontend-marcusvbda" ~/.claude/skills/diegosouzapw-awesome-omni-skill-frontend && rm -rf "$T"
manifest:
skills/development/frontend-marcusvbda/SKILL.mdsource content
Frontend Architecture & UX
Stack
- Next.js App Router
- React 19
- React Query (the only remote state manager)
- shadcn/ui + Tailwind CSS
Core Architecture Rules
Rendering Model
- Server Components by default
- Client Components only for interactivity
- No Client Component by convenience
- Client Components must be explicitly justified
Client Component Boundaries
Client Components must not:
- Import Server Components
- Access environment variables
- Perform direct data fetching
- Contain business or domain logic
Client Components may only:
- Handle user interaction
- Manage local UI state
- Consume hooks
- Render presentation logic
Layered Responsibilities
-
UI Components
- Pure presentation
- No business rules
- No data normalization
-
Hooks
- Compose UI state
- Integrate React Query
- No business decisions
-
Domain / Services
- Business rules
- Decision making
- Data validation
-
API Layer
- HTTP adaptation
- Contract enforcement
- Error translation
Data & State Management
- React Query is the only remote state manager
- No direct data mutations without React Query
- No fetch calls outside the API layer
React Query Rules
- Every query must have a stable
queryKey - Mutable objects are forbidden in
queryKey - All mutations must explicitly invalidate or update cache
is disabled by defaultrefetchOnWindowFocus- Errors must always be handled explicitly
- Silent failures are forbidden
UX Best Practices
Accessibility
- Accessibility first
- ARIA roles where applicable
- Full keyboard navigation support
- Respect
prefers-reduced-motion
Visual Consistency
- Clear visual hierarchy
- Consistent spacing and typography
- Design tokens must be respected
- Avoid layout shifts (CLS)
States Handling
Every async interaction must define:
- Loading state (prefer skeletons over spinners)
- Error state (user-friendly, not technical)
- Empty state (intentional, not accidental)
Technical errors must never be shown directly to users.
Performance Rules
- Minimize client-side JavaScript
- Memoize only when measured or clearly justified
- Defensive memoization is forbidden
- Avoid unnecessary re-renders
- Lazy-load non-critical components only
- Dynamic imports must not affect critical rendering paths
Developer Experience (DX)
- Reusable components over duplication
- Clear, explicit naming
- Prefer composition over configuration
- Avoid deep prop drilling
Props Discipline
- More than 5 props requires design reconsideration
- Boolean explosion is forbidden (
,isA
,isB
)isC - Prefer explicit components over conditional flags
Non-Negotiables
- No business logic in UI
- No direct backend calls from components
- No architectural shortcuts
- Predictability over flexibility
Architectural violations are treated as bugs.