본문으로 건너뛰기
cccskills
무료GitHub에 공개

core-components

Build screens, forms, and lists with shared UI components and design tokens, named values for spacing, colors, and typography. Provides patterns for consistent layouts, button variants, validation messages, and reusable component properties.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

원문원문 설명 보기

Core component library and design system patterns. Use when building UI, using design tokens, or working with the component library.

설치 방법 보기

이럴 때 유용합니다

  • Building screens with shared UI components
  • Replacing fixed colors and spacing with design tokens
  • Creating consistent forms and list layouts
  • Defining reusable component properties

포함된 파일(1)

  • SKILL.md4.7 KB

SKILL.md(원문)

설치하기 전에 에이전트에게 전달되는 지시 내용을 확인할 수 있습니다.

Core Components

Design System Overview

Use components from your core library instead of raw platform components. This ensures consistent styling and behavior.

Design Tokens

NEVER hard-code values. Always use design tokens.

Spacing Tokens

// CORRECT - Use tokens
<Box padding="$4" marginBottom="$2" />

// WRONG - Hard-coded values
<Box padding={16} marginBottom={8} />
TokenValue
$14px
$28px
$312px
$416px
$624px
$832px

Color Tokens

// CORRECT - Semantic tokens
<Text color="$textPrimary" />
<Box backgroundColor="$backgroundSecondary" />

// WRONG - Hard-coded colors
<Text color="#333333" />
<Box backgroundColor="rgb(245, 245, 245)" />
Semantic TokenUse For
$textPrimaryMain text
$textSecondarySupporting text
$textTertiaryDisabled/hint text
$primary500Brand/accent color
$statusErrorError states
$statusSuccessSuccess states

Typography Tokens

<Text fontSize="$lg" fontWeight="$semibold" />
TokenSize
$xs12px
$sm14px
$md16px
$lg18px
$xl20px
$2xl24px

Core Components

Box

Base layout component with token support:

<Box
  padding="$4"
  backgroundColor="$backgroundPrimary"
  borderRadius="$lg"
>
  {children}
</Box>

HStack / VStack

Horizontal and vertical flex layouts:

<HStack gap="$3" alignItems="center">
  <Icon name="user" />
  <Text>Username</Text>
</HStack>

<VStack gap="$4" padding="$4">
  <Heading>Title</Heading>
  <Text>Content</Text>
</VStack>

Text

Typography with token support:

<Text
  fontSize="$lg"
  fontWeight="$semibold"
  color="$textPrimary"
>
  Hello World
</Text>

Button

Interactive button with variants:

<Button
  onPress={handlePress}
  variant="solid"
  size="md"
  isLoading={loading}
  isDisabled={disabled}
>
  Click Me
</Button>
VariantUse For
solidPrimary actions
outlineSecondary actions
ghostTertiary/subtle actions
linkInline actions

Input

Form input with validation:

<Input
  value={value}
  onChangeText={setValue}
  placeholder="Enter text"
  error={touched ? errors.field : undefined}
  label="Field Name"
/>

Card

Content container:

<Card padding="$4" gap="$3">
  <CardHeader>
    <Heading size="sm">Card Title</Heading>
  </CardHeader>
  <CardBody>
    <Text>Card content</Text>
  </CardBody>
</Card>

Layout Patterns

Screen Layout

const MyScreen = () => (
  <Screen>
    <ScreenHeader title="Page Title" />
    <ScreenContent padding="$4">
      {/* Content */}
    </ScreenContent>
  </Screen>
);

Form Layout

<VStack gap="$4" padding="$4">
  <Input label="Name" {...nameProps} />
  <Input label="Email" {...emailProps} />
  <Button isLoading={loading}>Submit</Button>
</VStack>

List Item Layout

<HStack
  padding="$4"
  gap="$3"
  alignItems="center"
  borderBottomWidth={1}
  borderColor="$borderLight"
>
  <Avatar source={{ uri: imageUrl }} size="md" />
  <VStack flex={1}>
    <Text fontWeight="$semibold">{title}</Text>
    <Text color="$textSecondary" fontSize="$sm">{subtitle}</Text>
  </VStack>
  <Icon name="chevron-right" color="$textTertiary" />
</HStack>

Anti-Patterns

// WRONG - Hard-coded values
<View style={{ padding: 16, backgroundColor: '#fff' }}>

// CORRECT - Design tokens
<Box padding="$4" backgroundColor="$backgroundPrimary">


// WRONG - Raw platform components
import { View, Text } from 'react-native';

// CORRECT - Core components
import { Box, Text } from 'components/core';


// WRONG - Inline styles
<Text style={{ fontSize: 18, fontWeight: '600' }}>

// CORRECT - Token props
<Text fontSize="$lg" fontWeight="$semibold">

Component Props Pattern

When creating components, use token-based props:

interface CardProps {
  padding?: '$2' | '$4' | '$6';
  variant?: 'elevated' | 'outlined' | 'filled';
  children: React.ReactNode;
}

const Card = ({ padding = '$4', variant = 'elevated', children }: CardProps) => (
  <Box
    padding={padding}
    backgroundColor="$backgroundPrimary"
    borderRadius="$lg"
    {...variantStyles[variant]}
  >
    {children}
  </Box>
);

Integration with Other Skills

  • react-ui-patterns: Use core components for UI states
  • testing-patterns: Mock core components in tests
  • storybook: Document component variants

리뷰

아직 리뷰가 없습니다. 사용해 본 소감을 남겨 주세요.

댓글

로그인 없이 쓸 수 있습니다. 사용 후기, 질문, 작동하지 않은 환경 등을 편하게 남겨 주세요.

아직 댓글이 없습니다. 첫 댓글을 남겨 보세요.

보내면 바로 공개됩니다. 이메일 주소나 전화번호 같은 개인 정보는 쓰지 마세요. URL은 2개까지입니다.

0 / 1,000자

이 양식은 reCAPTCHA로 보호되며 Google 개인정보처리방침 및 서비스 약관이 적용됩니다.

같은 저장소의 스킬

Build forms with Formik and yup, a library for defining input validation rules. Apply field errors, submission feedback, edit detection, and step-specific validation to login screens, editing forms, and forms split across multiple steps.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Building login and registration forms
  • Adding conditional input validation
  • Editing existing records with change detection
ChrisWiles/claude-code-showcase6.1천2026년 1월 7일 업데이트

Build GraphQL data queries and updates with separate operation files and generated types and hooks, reusable functions for React. Follow Apollo Client patterns for error messages, loading feedback, cache updates, and reusable field selections.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Building a GraphQL list view
  • Adding data creation or update forms
  • Generating types and hooks from operation files
ChrisWiles/claude-code-showcase6.1천2026년 1월 7일 업데이트

Build React interfaces that clearly handle loading, errors, empty results, and submissions. Use examples and checklists to keep existing data visible during refetching, offer retry actions, and disable buttons while asynchronous operations are running.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Keeping existing data visible during refetching
  • Adding visible errors and retry actions
  • Showing guidance when lists or search results are empty
ChrisWiles/claude-code-showcase6.1천2026년 1월 7일 업데이트

Investigate bugs and failing tests through four stages: finding the root cause, comparing working patterns, testing a hypothesis, and implementing a fix. Uses reproduction steps, diagnostic evidence, and regression tests to check the result.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Tracing the cause of a failing test
  • Following runtime errors back to invalid data
  • Finding the change that broke working code
ChrisWiles/claude-code-showcase6.1천2026년 1월 7일 업데이트

Write Jest unit tests for component behavior and user interactions. Includes reusable test data builders, mock replacements for dependencies, and test-driven development, where a failing test guides implementation before the code is cleaned up.

한국어 요약은 준비 중입니다. 영어 요약을 표시하고 있습니다.

  • Testing component rendering and form interactions
  • Creating reusable test data with selective overrides
  • Replacing modules and GraphQL hooks in tests
ChrisWiles/claude-code-showcase6.1천2026년 1월 7일 업데이트

ChrisWiles의 스킬 모두 보기

이 스킬의 문제 신고