AgentSkillsCN

component-organization

在 React 功能页面中强制实行“每个文件仅包含一个组件”的规范。当您新建页面、重构 page.tsx 文件,或在单个文件中混杂多个组件时,可使用此功能。

SKILL.md
--- frontmatter
name: component-organization
description: Enforces single-component-per-file pattern for React feature pages. Use when creating new pages, refactoring page.tsx files, or when components are mixed in a single file.

Component Organization

When creating React components for a feature page, never put multiple component functions in a single page.tsx file.

Pattern

Instead of this (BAD):

code
features/analytics/
  page.tsx  <- Contains Page + SummaryCard + DailyActivityChart + etc.

Do this (GOOD):

code
features/analytics/
  page.tsx           <- Only imports and composes components
  components/
    summary-card.tsx
    daily-activity-chart.tsx
    hourly-activity-chart.tsx
    tokens-chart.tsx
    model-usage-card.tsx

Implementation

  1. page.tsx should only contain:

    • Imports from ./components/
    • The main Page function that composes the imported components
    • Data fetching/loader logic if needed
  2. components/ folder should contain:

    • One component per file
    • File names in kebab-case matching the component name
    • Each file exports a single named component

Example

page.tsx:

tsx
import { SummaryCard } from './components/summary-card'
import { DailyActivityChart } from './components/daily-activity-chart'

export function Page() {
  return (
    <div>
      <SummaryCard />
      <DailyActivityChart />
    </div>
  )
}

components/summary-card.tsx:

tsx
export function SummaryCard({ title, value, icon }: SummaryCardProps) {
  return (...)
}

When to Apply

  • Creating a new feature page with 2+ custom components
  • Refactoring an existing page with inline components
  • The page.tsx file exceeds ~100 lines