<< All versions

Skill v1.0.2

currentAutomated scan100/100
sickn33/agentic-awesome-skills/code-showcase-core-components

~4 modified

──Details
PublishedNovember 15, 2026 at 12:37 PM
Content Hashsha256:94474ae2926c2886...
Git SHA560b762c309d
Bump Typepatch
Compare with v1.0.1
──Files
Files (1 file, 7.1 KB)
SKILL.md7.1 KBactive
SKILL.md · 295 lines · 7.1 KB

name: code-showcase-core-components description: "Apply the ChrisWiles code-showcase component and token conventions when the target project actually uses that API; examples require local adaptation." risk: none source: https://github.com/ChrisWiles/claude-code-showcase/tree/main/.claude/skills/core-components source_repo: ChrisWiles/claude-code-showcase source_type: community date_added: 2026-07-01 license: MIT license_source: https://github.com/ChrisWiles/claude-code-showcase/blob/main/README.md#license metadata: version: "1.0.2"


Core Components

When to Use

Use when maintaining a project that follows the ChrisWiles showcase component conventions. For a different or unknown library, start with core-components and map its examples to the actual project API; do not install both expecting additional components.

This entry describes the upstream project's component API/token names, not a bundled component library or universal React Native API. Verify actual exports, tokens and props in the target repository before using snippets. CardProps/variantStyles, handlers and imported components are illustrative dependencies; token use alone does not prove contrast, labeling or behavior.

Design System Overview

Reuse verified project primitives when they provide the required semantics and behavior. Native components remain appropriate when no equivalent primitive exists; token use alone does not establish accessibility.

Design Tokens

Prefer the project's existing semantic tokens. If no token expresses the requirement, document the exception or propose a scoped token addition; do not invent token names or change the whole design system.

Spacing Tokens

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

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

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

Core Components

Box

Base layout component with token support:

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

HStack / VStack

Horizontal and vertical flex layouts:

tsx
<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:

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

Button

Interactive button with variants:

tsx
<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:

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

Card

Content container:

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

Layout Patterns

Screen Layout

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

Form Layout

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

List Item Layout

tsx
<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

tsx
// WRONG - Hard-coded values
<View style={{ padding: 16, backgroundColor: '#fff' }}>
// CORRECT - Design tokens
<Box padding="$4" backgroundColor="$backgroundPrimary">
// Native components: valid when the project has no equivalent primitive
import { View, Text } from 'react-native';
// Project primitives: use only if these exports exist and preserve behavior
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:

tsx
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
  • Existing project Storybook, if configured: document component variants; no storybook skill or setup is bundled here.

Worked example: adapt a settings form

Given a request to add an email field to an existing settings screen:

  1. Inspect the screen, component exports, token definitions and an existing validated field.
  2. Reuse the actual input API and semantic spacing/color tokens. The onChangeText and $4 examples above apply only if the project defines them.
  3. Preserve the visible label, error association, keyboard focus and submit behavior. Check light/dark contrast using the rendered result.
  4. Return the changed file paths, the existing components reused and the checks actually run. If the project has no such library, state that prerequisite instead of fabricating components/core imports.

Limitations

  • Use this skill only when the task clearly matches its upstream source and local project context.
  • Verify commands, generated code, dependencies, credentials, and external service behavior before applying changes.
  • Do not treat examples as a substitute for environment-specific tests, security review, or user approval for destructive or costly actions.
← v1.0.1All versions