component-organization について
component-organizationは、フロントエンドのファイルを種類別に整理し、関連ファイルをサブディレクトリにまとめるためのリファレンススキルです。プロジェクトの拡大に伴い、コンポーネント、フック、ビジネスロジック、共有型を見つけやすくします。
主な機能
- 01種類別のファイル整理
- 02関連ファイルのサブディレクトリ分け
- 03コンポーネント、フック、ロジック、型の配置指針
- 04ファイル分割やグループ化の判断基準
- 05修正提案に基づくスキルの改善
活用シーン
- 01フロントエンドのディレクトリ構成の設計
- 02共有 UI コンポーネントの配置先の決定
- 03再利用可能なフックとコンポーネントコードの分離
- 04フロントエンドの成長に合わせた構成の見直し
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ loxosceles-dev/ dev-skills --skill component-organizationインストール後、Claude Code で/component-organizationを入力して読み込まれたか確認します。
詳細
フロントエンドコンポーネントの構成
これは参考パターンです。 このアプローチを参考にし、状況に合わせて応用してください。文章をそのままコピーしないでください。
問題:フロントエンドプロジェクトが大きくなると、ディレクトリが整理されず、関連ファイルを見つけにくくなり、共有コードの置き場所も明確でなくなります。
解決策:種類(コンポーネント、フック、ライブラリ、型)ごとに整理し、各種類の中で関連項目をまとめるサブディレクトリを作成します。
パターン
frontend/
├── app/ # Framework routing (Next.js app dir, Nuxt pages, etc.)
│ ├── layout.tsx
│ └── page.tsx
├── components/ # All components
│ ├── ui/ # Base primitives (Button, Input, Modal)
│ ├── UserProfile.tsx
│ ├── DashboardChart.tsx
│ └── PostCard.tsx
├── hooks/ # Custom hooks
│ ├── use-auth.ts
│ ├── use-dashboard.ts
│ └── use-debounce.ts
├── lib/ # Utilities, services, business logic
│ ├── api/ # API client, fetch helpers
│ ├── auth/ # Auth context, cookie handling
│ └── utils/ # Pure helper functions
├── queries/ # Data fetching (GraphQL queries, API calls)
├── types/ # Shared type definitions
│ ├── user.ts
│ └── post.ts
└── public/ # Static assets
主なルール:
- コンポーネントは
components/に配置し、関連するものはサブディレクトリ(例:ui/)にまとめます - フックは
hooks/に配置し、1ファイルにつき1つのフックを定義します - ビジネスロジックは
lib/に配置し、ドメイン別のサブディレクトリにまとめます - ファイル間で共有する型は
types/に配置します - 基本UIプリミティブ(ボタン、入力欄、モーダル)は
components/ui/に配置します
このパターンを使う理由
メリット:
- 予測しやすい:どこを見ればよいかが明確です。すべてのフックは
hooks/に、すべてのコンポーネントはcomponents/にあります - 再利用性:複数の機能で使われるコンポーネントを見つけやすく、共有も簡単です
- スケーラビリティ:新しいフックやコンポーネントを追加する際の置き場所が明確です
- コンポーネントライブラリに自然に適合:共有UIキットの構成方法と一致します
種類ごとのサブディレクトリを使う場合:
components/ui/— どこでも再利用される基本プリミティブlib/auth/— 1つのドメインに複数のファイルがある場合(コンテキスト+ユーティリティ+型)lib/api/— APIクライアント、インターセプター、ヘルパー
分割するタイミング
components/に新しいファイルを作成:UIを再利用する場合、または親コンポーネントが約200行を超える場合hooks/に新しいファイルを作成:ステートフルなロジックを再利用する場合、またはコンポーネントが煩雑になる場合lib/に新しいサブディレクトリを作成:あるドメインに関連ファイルが2つ以上ある場合(サービス+ユーティリティ、コンテキスト+ヘルパー)components/ui/に移動:ビジネスロジックを持たない、純粋なプレゼンテーション用コンポーネントの場合
段階的な改善
開発者が、このスキルで防げるはずの振る舞いを修正した場合は、今後同じ修正が必要にならないよう、このスキルに加える具体的な修正案を提案してください。
コメント
Markdown 対応