mcpField
C
core-components

core-components

github.com/sickn33デザイン・UI48.7k546 回インストール今日更新
リポジトリ

core-components について

core-componentsは、プロジェクトの実際のコンポーネントAPIとデザイントークンを使って画面を構築するためのデザインシステムスキルです。基本コンポーネントやレイアウトを扱い、アクセシビリティとAPIの捏造防止を重視します。

主な機能

  1. 01実際のコンポーネント出力とトークンを先に確認
  2. 02間隔・色・タイポグラフィのトークンを使用
  3. 03基本コンポーネントとレイアウトを網羅
  4. 04アクセシビリティとネイティブ動作を維持
  5. 05架空のAPIやハードコード値を回避

活用シーン

  1. 01プロジェクトのデザインシステムに沿った画面構築
  2. 02フォーム・リスト・画面レイアウトの統一
  3. 03既存コンポーネントのアクセシブルな再利用

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/sickn33/agentic-awesome-skills --skill core-components

インストール後、Claude Code で/core-componentsを入力して読み込まれたか確認します。

詳細

コアコンポーネント

デザインシステムの概要

実際のプロジェクトのコンポーネントエクスポート、トークン定義、フレームワークを最初に確認してください。以下の名前、$ トークン、props は、ローカルライブラリを想定した例であり、ここには同梱されていません。実際にドキュメント化されている API を使用し、アクセシビリティとネイティブの動作を維持してください。また、コンポーネント、コアインポート、variantStyles を勝手に作成しないでください。適切な場合は、妥当なネイティブコンポーネントをこの例に合わせるためだけに置き換えるのではなく、プロジェクトのプリミティブを再利用してください。

デザイントークン

値をハードコードしないでください。必ずデザイントークンを使用してください。

スペーシングトークン
// CORRECT - Use tokens
<Box padding="$4" marginBottom="$2" />

// WRONG - Hard-coded values
<Box padding={16} marginBottom={8} />
トークン値
$14px
$28px
$312px
$416px
$624px
$832px
カラートークン
// CORRECT - Semantic tokens
<Text color="$textPrimary" />
<Box backgroundColor="$backgroundSecondary" />

// WRONG - Hard-coded colors
<Text color="#333333" />
<Box backgroundColor="rgb(245, 245, 245)" />
セマンティックトークン用途
$textPrimaryメインテキスト
$textSecondary補助テキスト
$textTertiary無効状態/ヒントのテキスト
$primary500ブランド/アクセントカラー
$statusErrorエラー状態
$statusSuccess成功状態
タイポグラフィトークン
<Text fontSize="$lg" fontWeight="$semibold" />
トークンサイズ
$xs12px
$sm14px
$md16px
$lg18px
$xl20px
$2xl24px

コアコンポーネント

Box

トークンをサポートする基本レイアウトコンポーネント:

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

横方向および縦方向のフレックスレイアウト:

<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

トークンをサポートするタイポグラフィ:

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

バリアントを備えたインタラクティブなボタン:

<Button
  onPress={handlePress}
  variant="solid"
  size="md"
  isLoading={loading}
  isDisabled={disabled}
>
  Click Me
</Button>
バリアント用途
solid主なアクション
outline副次的なアクション
ghost三次的/控えめなアクション
linkインラインアクション
Input

バリデーション機能を備えたフォーム入力:

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

コンテンツコンテナ:

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

レイアウトパターン

画面レイアウト
const MyScreen = () => (
  <Screen>
    <ScreenHeader title="Page Title" />
    <ScreenContent padding="$4">
      {/* Content */}
    </ScreenContent>
  </Screen>
);
フォームレイアウト
<VStack gap="$4" padding="$4">
  <Input label="Name" {...nameProps} />
  <Input label="Email" {...emailProps} />
  <Button isLoading={loading}>Submit</Button>
</VStack>
リスト項目のレイアウト
<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>

アンチパターン

// 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">

コンポーネントの Props パターン

コンポーネントを作成するときは、トークンベースの 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>
);

他のスキルとの連携

  • react-ui-patterns:UI の状態にコアコンポーネントを使用します
  • testing-patterns:テストではコアコンポーネントをモックします
  • storybook:コンポーネントのバリアントをドキュメント化します

使用する場面

このスキルは、概要で説明されているワークフローまたはアクションを実行する場合に適用できます。

制限事項

  • このスキルは、タスクが上記の説明範囲に明確に該当する場合にのみ使用してください。
  • 出力を、環境固有の検証、テスト、または専門家によるレビューの代わりとして扱わないでください。
  • 必要な入力、権限、安全上の境界、または成功基準が不足している場合は、作業を中止して確認を求めてください。

コメント