Structured guidance for frontend development
90
Quality
90%
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
Apply this skill when building or refactoring interfaces with Chakra UI (v2 or v3): layout, forms, feedback components, theming, or provider setup.
ChakraProvider, theme prop, useToast, useColorMode, and component props like colorScheme, size, variant.Provider with value (system), namespaced components (e.g. Dialog.Root, Dialog.Content), toaster API, and often next-themes for color mode. Theme is built with createSystem and tokens use { value: ... }.When editing existing code, match the version already in the project.
p, px, py, m, maxW, minH, bg, borderRadius, etc.direction, align, justify, wrap, gap (or gridGap in v2).spacing. Use Stack (column), HStack, VStack; props: spacing, align, direction.templateColumns, templateRows, gap, columnGap, rowGap.align="center" and justify="center").columns (and minChildWidth for responsive columns).Prefer Stack/HStack/VStack for linear layouts; use Flex when you need specific flex behavior; use Grid/SimpleGrid for grid layouts.
Button with colorScheme, variant (solid, outline, ghost, link), size (sm, md, lg), leftIcon/rightIcon, isLoading, isDisabled.FormControl with FormLabel, FormErrorMessage, FormHelperText. Use Input, InputGroup, InputLeftAddon for addons. isInvalid, isRequired on FormControl.Text for paragraphs; use as="span", as="p" when semantics matter. Props: fontSize, fontWeight, color, noOfLines (truncation).as="h1" … as="h6". Use size for visual scale.Badge with colorScheme, variant (solid, outline, subtle).Alert, AlertIcon, AlertTitle, AlertDescription; use status (success, error, warning, info).Modal, ModalOverlay, ModalContent, ModalHeader, ModalBody, ModalFooter, ModalCloseButton. v3: Dialog.Root, Dialog.Trigger, Dialog.Backdrop, Dialog.Content, etc.useToast() and toast(). v3: toaster API (e.g. toast.success, toast.error).bg="gray.100", color="blue.600", borderRadius="md", shadow="sm".bg="background", color="text") keep light/dark consistent when using color mode.theme in extendTheme() and pass to ChakraProvider. v3: extend via createSystem(defaultConfig, { theme: { tokens: { ... } } }).p={[2, 4, 6]}, display={{ base: "block", md: "flex" }}.isDisabled={isLoading}, colorScheme={isError ? "red" : "blue"}.Modal, Menu, Tabs) so focus and ARIA are handled.aria-* and role when building custom interactive elements; pair with focusVisible styling.FormControl does this when used correctly).<Stack spacing={4}>
<Heading size="md">Form</Heading>
<FormControl isInvalid={!!errors.name} isRequired>
<FormLabel>Name</FormLabel>
<Input
placeholder="Name"
value={name}
onChange={(e) => setName(e.target.value)}
/>
<FormErrorMessage>{errors.name}</FormErrorMessage>
</FormControl>
<HStack spacing={2} justify="flex-end">
<Button variant="ghost" onClick={onCancel}>Cancel</Button>
<Button colorScheme="blue" isLoading={isSubmitting} type="submit">
Submit
</Button>
</HStack>
</Stack>FormControl/labels for form fields (hurts accessibility and consistency).div + custom CSS) when Chakra layout primitives would suffice.