FR

frontend-dev

Standardized frontend development patterns for the Atomic CRM system using React and shadcn/ui.

Install

mkdir -p .claude/skills/frontend-dev && curl -L -o skill.zip "https://agentskills.codes/api/skills/download/4867" && unzip -o skill.zip -d .claude/skills/frontend-dev && rm skill.zip

Installs to .claude/skills/frontend-dev

Activation

This is the description your AI agent reads to decide when to run this skill — the better it matches your request, the more reliably it fires.

Coding practices for frontend development in Atomic CRM. Use when creating or modifying React components, forms, list pages, detail views, filters, data fetching, or responsive layouts.
185 chars✓ has a “when” trigger
Intermediate

Key capabilities

  • Create or modify React components, forms, list pages, or detail views
  • Add or change filters, data fetching, or responsive layouts
  • Register a new resource or reorganize an existing resource folder
  • Import form inputs from @/components/admin/
  • Use ra-core hooks for standard CRUD operations
  • Split form fields into semantic sub-components

How it works

This skill defines conventions for frontend development in Atomic CRM, covering component architecture, resource organization, data fetching with ra-core, and form handling. It specifies where to import components and how to manage data and forms.

Inputs & outputs

You give it
A request to create or modify a frontend feature in Atomic CRM
You get back
React components, forms, or pages adhering to Atomic CRM conventions

When to use frontend-dev

  • Creating new React components for CRM modules
  • Implementing form fields for contacts and leads
  • Fetching data for CRM detail views and lists

About this skill

Frontend Development

Reference for the conventions a frontend change must follow. This is a reference skill, not a step sequence — read the relevant section before writing code, then verify against the checklist at the end. The frontend uses ra-core (react-admin headless) for data fetching, routing, and CRUD logic, with shadcn-admin-kit and shadcn/ui for the UI layer.

When to Use

  • Creating or modifying React components, forms, list pages, or detail views.
  • Adding or changing filters, data fetching, or responsive (mobile/desktop) layouts.
  • Registering a new resource or reorganizing an existing resource folder.

Not for backend/schema work — see Skill({skill: "backend-dev"}). Not for theming/colors — see Skill({skill: "shadcn-customization"}).

Component architecture

  • Import form inputs (TextInput, SelectInput, ReferenceInput, etc.) from @/components/admin/, not from shadcn/ui directly. The admin layer wraps shadcn with ra-core integration (labels, validation, data binding).
  • Import pure UI components (Card, Button, Badge, Sheet, etc.) from @/components/ui/.
  • Domain configuration (deal stages, note statuses, task types, company sectors) comes from useConfigurationContext(), never hardcoded.

Resource (CRUD) conventions

Each resource follows this file structure (e.g. contacts/):

  • ContactList.tsx — list page (desktop + mobile variants)
  • ContactShow.tsx — detail view
  • ContactEdit.tsx / ContactCreate.tsx — form pages
  • ContactInputs.tsx — shared form fields reused between create and edit
  • index.tsx — exports { list, show, edit, create, recordRepresentation }

Resources are registered in root/CRM.tsx via <Resource name="contacts" {...contacts} />.

Data fetching

  • For standard CRUD, use ra-core hooks: useListContext(), useShowContext(), useGetList(), useGetOne(), useGetIdentity().
  • When a query or mutation isn't covered by ra-core hooks, add a custom dataProvider method and call it via useQuery/useMutation with useDataProvider<CrmDataProvider>() (e.g. dataProvider.getActivityLog() in ActivityLog.tsx, dataProvider.salesCreate() in SalesCreate.tsx).

Forms

  • Forms use Form from ra-core + FormToolbar for submit/cancel actions.
  • Ra-core's Form uses React Hook Form under the hood. Use useFormContext() for imperative operations (setValue, reset, getValues).
  • Top-level resource forms use full-page CreateBase/EditBase with Card (e.g. contacts), or Dialog (e.g. deals).
  • On mobile, inline/sub-resource forms use CreateSheet/EditSheet from misc/ (e.g. notes, tasks).
  • Split form fields into semantic sub-components (e.g. ContactIdentityInputs, ContactPositionInputs).

Filters

  • Use ToggleFilterButton / ActiveFilterButton components for filter UI.
  • Filters apply immediately, no "apply" button.

Responsive design

  • Major pages have desktop and mobile variants. Use useIsMobile() to branch.
  • Desktop: 2-column grid layouts. Mobile: single column with MobileHeader/MobileContent.
  • Mobile lists use InfiniteListBase for scroll pagination.

Red Flags

  • Importing TextInput/SelectInput/etc. directly from @/components/ui/ instead of @/components/admin/.
  • Hardcoding deal stages, note statuses, task types, or sectors instead of reading useConfigurationContext().
  • A new resource folder missing one of the standard files, or not registered in root/CRM.tsx.
  • A bespoke fetch/axios call where a ra-core hook or a dataProvider method belongs.
  • A new top-level page with only a desktop layout and no useIsMobile() branch.
  • A form field component growing past the typical size instead of being split into semantic sub-components.

Verification

  • Inputs imported from @/components/admin/, pure UI from @/components/ui/.
  • Domain options come from useConfigurationContext() — nothing hardcoded.
  • New resources follow the file structure and are registered in root/CRM.tsx.
  • Data access uses ra-core hooks, or a dataProvider method via react-query.
  • Pages touching major UI have both desktop and mobile variants.
  • If the change touches UI/forms/filters/interactions, an e2e test exists (see Skill({skill: "e2e-conventions"})).

When not to use it

  • When performing backend or schema work
  • When working on theming or colors

Limitations

  • This skill is not for backend or schema work.
  • This skill is not for theming or colors.
  • Domain configuration must come from useConfigurationContext(), not hardcoded.

How it compares

This skill provides specific architectural and coding standards for Atomic CRM frontend development, guiding developers to build features consistently within the existing framework rather than using generic React development practices.

Compared to similar skills

frontend-dev side by side with the closest alternatives in the catalog.

SkillInstallsUpdatedSafetyDifficulty
frontend-dev (this skill)16moNo flagsIntermediate
zustand1132moNo flagsIntermediate
web-artifacts-builder493moReviewIntermediate
landing-page-guide-v2488moReviewIntermediate

Try saying

Example prompts that trigger this skill in your AI assistant.

You might also like

zustand

lobehub

Zustand state management guide. Use when working with store code (src/store/**), implementing actions, managing state, or creating slices. Triggers on Zustand store development, state management questions, or action implementation.

113434

web-artifacts-builder

anthropics

Suite of tools for creating elaborate, multi-component claude.ai HTML artifacts using modern frontend web technologies (React, Tailwind CSS, shadcn/ui). Use for complex artifacts requiring state management, routing, or shadcn/ui components - not for simple single-file HTML/JSX artifacts.

49162

landing-page-guide-v2

bear2u

Create distinctive, high-converting landing pages that combine proven conversion elements with exceptional design quality. Build beautiful, memorable landing pages using Next.js 14+ and ShadCN UI that avoid generic AI aesthetics while following the 11 essential elements framework.

48105

react

lobehub

React component development guide. Use when working with React components (.tsx files), creating UI, using @lobehub/ui components, implementing routing, or building frontend features. Triggers on React component creation, modification, layout implementation, or navigation tasks.

3480

frontend-prompt-generator

gharam1234

Generate structured prompts for frontend development tasks following established patterns. Use when the user requests prompts for wireframes, UI implementation, data binding, or routing functionality in React/Next.js projects with specific formatting requirements (Cursor rules, file paths, test-driven development).

679

react-dev

davila7

This skill should be used when building React components with TypeScript, typing hooks, handling events, or when React TypeScript, React 19, Server Components are mentioned. Covers type-safe patterns for React 18-19 including generic components, proper event typing, and routing integration (TanStack Router, React Router).

732

Search skills

Search the agent skills registry