mcpField
F
feature-sliced-design

feature-sliced-design

github.com/fandhe-ai開発4138 回インストール3 日前に更新
リポジトリ

feature-sliced-design について

feature-sliced-designは、Feature-Sliced Designによるフロントエンド構成を解説するスキル兼ガイドです。レイヤーの責務、依存方向、スライスの境界、Public APIに加え、ルールやサンプル、ツールの参照先を示します。

主な機能

  1. 01標準的なレイヤーとスライス構成
  2. 02レイヤー間の一方向依存
  3. 03スライスのPublic API規約
  4. 04目的に基づくセグメント命名
  5. 05ガイド、サンプル、ルールへの案内
  6. 06CLIとアーキテクチャチェックの案内

活用シーン

  1. 01フロントエンドのディレクトリ構成の計画
  2. 02インポート方向とスライス境界の確認
  3. 03スライスの公開エクスポートの定義
  4. 04サンプルやアーキテクチャ検査ツールの検索

インストール

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

$npx skills add https://github.com/fandhe-ai/agent-reference-skills --skill feature-sliced-design

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

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
import-rules.md
layers.md
public-api.md
README.md
slice-groups.md
slices-segments.md
rules/
layer-dependency.md
public-api-enforcement.md
README.md
segment-naming.md
slice-isolation.md
samples/
composition-in-pages.md
cross-entity-import.md
layer-imports.md
nextjs-app-router.md
project-structure.md
react-query-integration.md
README.md
slice-groups.md
slice-public-api.md
scripts/
generate.md
install.md
lint.md
README.md

詳細

プロジェクトの README より

Feature-Sliced Design ガイドライン

ディレクトリ構成

skills/feature-sliced-design/
  SKILL.md
  references/
    README.md
    import-rules.md
    layers.md
    public-api.md
    slice-groups.md
    slices-segments.md
  samples/
    README.md
    project-structure.md
    slice-public-api.md
    layer-imports.md
    cross-entity-import.md
    slice-groups.md
    composition-in-pages.md
    nextjs-app-router.md
    react-query-integration.md
  scripts/
    README.md
    install.md
    generate.md
    lint.md
  rules/
    README.md
    layer-dependency.md
    public-api-enforcement.md
    slice-isolation.md
    segment-naming.md

探索手順

タスクからカテゴリを引き、カテゴリの README.md で目的のページを特定する:

  1. 下記マッピング表でタスクに対応するカテゴリを探す
  2. そのカテゴリの README.md を参照して目的のページを特定する
  3. 該当ページの .md を Read して詳細を確認する

タスク → カテゴリ マッピング

タスクカテゴリ参照 README
レイヤー構成・責務を知りたいreferencesreferences/README.md
インポートルール・依存方向を確認したいreferencesreferences/README.md
Public API パターンを理解したいreferencesreferences/README.md
スライス・セグメントの定義を知りたいreferencesreferences/README.md
スライスグループ(関連スライスのまとめ方)を知りたいreferencesreferences/README.md
典型的な FSD プロジェクト構成の例を見たいsamplessamples/README.md
Next.js / React Query との組み合わせ例を見たいsamplessamples/README.md
@x 記法・クロスエンティティ依存の実例を見たいsamplessamples/README.md
pages での合成パターン(同一レイヤー間依存の回避)を知りたいsamplessamples/README.md
ツールチェーンのインストール・CLI コマンドを知りたいscriptsscripts/README.md
steiger でアーキテクチャ準拠チェックを実行したいscriptsscripts/README.md
@feature-sliced/cli でコード生成したいscriptsscripts/README.md
レイヤー依存方向のルールを自動適用したいrulesrules/README.md
Public API 経由のみ許可するルールを確認したいrulesrules/README.md
スライス分離・セグメント命名規約を確認したいrulesrules/README.md

コア概念の詳細は references/<topic>.md、チェックルールは rules/<rule>.md を参照。

必須ルール

  • コードは標準レイヤーに分割する: app, pages, widgets, features, entities, shared(processes は deprecated)。全レイヤーは必須ではなく、最低限 shared / pages / app。widgets は公式が非推奨
  • インポートは下位レイヤーへの一方向のみ許可。同一レイヤー内のスライス間インポートは禁止
  • 各スライスは index.ts で Public API を定義する。外部からは Public API 経由でのみインポートする
  • export * は使用しない。公開するものを明示的に列挙する
  • セグメント名は「目的」で命名する(ui, model, api)。「本質」で命名しない(components, hooks, types)
  • app と shared にスライスは持たない。セグメントのみで構成する

レイヤー構成(上位 → 下位)

app        — ルーティング、プロバイダー、グローバル設定(スライスなし)
pages      — 画面単位のスライス
widgets    — 複数ページで再利用される大規模 UI ブロック(公式は非推奨)
features   — ビジネス価値をもたらすユーザーインタラクション
entities   — ビジネスエンティティ(User, Product 等)
shared     — 汎用的な再利用可能コード(スライスなし)

標準セグメント

セグメント内容
uiUI コンポーネント、フォーマッタ、スタイル
apiバックエンド連携、リクエスト関数、レスポンス型
modelデータスキーマ、ストア、ビジネスロジック
libスライスローカルのユーティリティ
config設定定数、フィーチャーフラグ

ディレクトリ構造例

src/
├── app/
│   ├── routes/
│   ├── store/
│   └── styles/
├── pages/
│   └── feed/
│       ├── ui/
│       ├── api/
│       └── index.ts
├── widgets/
│   └── header/
│       ├── ui/
│       └── index.ts
├── features/
│   └── search-articles/
│       ├── ui/
│       ├── model/
│       └── index.ts
├── entities/
│   └── user/
│       ├── ui/
│       ├── model/
│       ├── api/
│       └── index.ts
└── shared/
    ├── ui/
    ├── api/
    ├── lib/
    └── config/

よくある間違い

  1. セグメント名に components/, hooks/, types/ を使う → ui/, model/, lib/ を使用する
  2. export * でまとめてエクスポートする → 明示的に export { Name } from で列挙する
  3. 同一レイヤーのスライスを直接インポートする → 上位レイヤーで合成するか、@x 記法を使用する(@x は entities レイヤー限定)
  4. 再利用されないコードを features や widgets に早期移動する → まず pages に置き、複数ページで再利用されるアクションになったら features へ昇格する
  5. shared にビジネスロジックを置く → ビジネスロジックは entities 以上に配置する
  6. 独自レイヤーを追加する → 標準レイヤーのみ使用する
  7. Public API なしでスライスを作成する → 必ず index.ts を先に定義する
  8. 型定義を types/ フォルダにまとめる → ドメインごとに model/ セグメント内に配置する

コメント