feature-arch について
Reactチームやコーディングエージェント向けの機能単位アーキテクチャガイドです。優先度付きルールと、機能境界、インポート、状態の所有者、移行手順を扱うプロジェクト別の設計ブループリントを提供します。
主な機能
- 018カテゴリにわたる43のルール
- 02プロジェクト別の設計ブループリント
- 03機能境界とインポート方針
- 04状態とデータの所有者の計画
- 05ファイル単位の移行計画
活用シーン
- 01Reactアプリの目標構成の計画
- 02機能APIとインポート境界の定義
- 03アーキテクチャ違反のレビュー
- 04段階的な構成移行の準備
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ pproenca/ dot-skills --skill feature-archインストール後、Claude Code で/feature-archを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
AGENTS.mdmetadata.jsonREADME.mdassets/templates/_template.mdfeature-arch-target.md.templatereferences/_blueprint-process.md_sections.mdbound-event-based-communication.mdbound-feature-isolation.mdbound-feature-scoped-routing.mdbound-feature-size.mdbound-interface-contracts.mdbound-minimize-shared-state.mdfcomp-colocate-styles.mdfcomp-composition-over-props.mdfcomp-container-presentational.mdfcomp-error-boundaries.mdfcomp-props-as-data-boundary.mdfcomp-single-responsibility.mdfquery-avoid-n-plus-one.mdfquery-colocate-with-feature.mdfquery-feature-scoped-keys.mdfquery-parallel-fetching.mdfquery-server-component-fetching.mdfquery-single-responsibility.mdfstate-context-sparingly.mdfstate-feature-scoped-stores.mdfstate-lift-minimally.mdfstate-reset-on-unmount.mdfstate-server-state-separation.md詳細
フィーチャーベースアーキテクチャのベストプラクティス
React アプリケーションをフィーチャー単位で整理し、独立したチームによるスケーラブルな開発を可能にするための包括的なアーキテクチャガイドです。影響度に応じて、重大(ディレクトリー構造、インポート)から段階的(命名規則)まで優先順位付けされた、8 カテゴリーにわたる 43 のルールを収録しています。実際のプロジェクトで実行すると、このスキルはすべての判断の根拠をこれらのルールに置いた、プロジェクト固有のブループリントを作成します。
主な成果物:ターゲットアーキテクチャのブループリント
実際のプロジェクトでエージェントがこのスキルを実行すると、成果物として単一の
Markdown ファイルが docs/architecture/FEATURE-ARCH-TARGET.md(または
リポジトリーに既存のドキュメント保存先)に保存されます。ブループリントには次の内容が含まれます。
- プロジェクトのコンテキスト — フレームワーク、状態管理ライブラリー、ルーティングモデル、現在の構成。
- 特定されたフィーチャー — ユーザーに確認したうえで、ルート、ドキュメント、openspec、コードのまとまりを情報源として特定します。
- ターゲットディレクトリーツリー — 疑似ツリーではなく、実際のパスを記載します。
- フィーチャーごとの公開 API — 各
index.tsで名前付きエクスポートされるものを正確に記載します。 - インポート境界マトリックス — フィーチャー間の関係を示す N×N の表(
allowed/forbidden/via app/via events)。 - 状態とデータの所有権 — フィーチャーごとのサーバー状態とクライアント状態の所有者。
- フィーチャー間通信の方針 — コンポジション、イベント、または共有スライスと、その根拠。
- 番号付きの移行計画 — ファイル単位の移動/作成/削除手順と、S/M/L の工数見積もり。
- 人間向けの準拠チェックリスト — コードレビューと「完了の定義」に使用します。
- 未解決の質問 — 移行前に人間による判断が必要な事項。
各セクションでは、判断の根拠となる以下の具体的なルールを参照するため、 ブループリントは独立した別の基準ではなく、このスキルの投影として維持されます。
エージェントによるブループリントの生成方法
references/_blueprint-process.md の手順に従ってください。概要:
- コンテキストを収集します(package.json、src/ ツリー、README、CLAUDE.md、openspec/)。
- ルート、ドキュメント、コードのまとまりから候補となるフィーチャーを特定します。
AskUserQuestionを使って、フィーチャーの一覧をユーザーに確認します。- 明示的な判断を記録します(レイヤーモデル、通信の仕組み、状態/ルーティングの所有者)。
- assets/templates/feature-arch-target.md.template を埋めます。すべての
{{placeholder}}をプロジェクトの具体的な値に置き換えてください。 - 引き継ぎを行います。パスを表示し、フィーチャー数と手順数を要約し、主なリスクを 3 件挙げ、次のアクションを提案します。同じターン内で移行手順の実行を開始しないでください。
非常に小規模なプロジェクト(ソースファイルが約 10 個未満)では、代わりに 1 ページの基本構造を作成し、2~3 個目のフィーチャーができた後に完全なブループリントを作成する必要がある旨を記載してください。
適用する場面
次の場合に、これらのガイドラインを参照してください。
- プロジェクトでフィーチャーベースのアーキテクチャの目標が求められている場合(ブループリントを生成する)。
- 新しいフィーチャーやモジュールを作成する場合。
- プロジェクトのディレクトリー構造を整理する場合。
- インポートのルールと境界を設定する場合。
- データ取得パターンを実装する場合。
- 複数のフィーチャーからコンポーネントを構成する場合。
- アーキテクチャ違反についてコードをレビューする場合。
優先度別のルールカテゴリー
| 優先度 | カテゴリー | 影響度 | 接頭辞 |
|---|---|---|---|
| 1 | ディレクトリー構造 | CRITICAL | struct- |
| 2 | インポートと依存関係 | CRITICAL | import- |
| 3 | モジュール境界 | HIGH | bound- |
| 4 | データ取得 | HIGH | fquery- |
| 5 | コンポーネント構成 | MEDIUM-HIGH | fcomp- |
| 6 | 状態管理 | MEDIUM | fstate- |
| 7 | テスト戦略 | MEDIUM | test- |
| 8 | 命名規則 | LOW | name- |
クイックリファレンス
1. ディレクトリ構成(最重要)
struct-feature-folders- 技術的な種類ではなく、機能ごとに整理しますstruct-feature-self-contained- 機能を自己完結させますstruct-shared-layer- 真に汎用的なコードに限り、共有レイヤーを使用しますstruct-flat-hierarchy- ディレクトリ階層をフラットに保ちますstruct-optional-segments- 必要なセグメントのみを含めますstruct-app-layer- アプリケーションレイヤーと機能を分離しますstruct-domain-folders- 大規模な場合は、機能をドメインごとにまとめます
2. インポートと依存関係(最重要)
import-unidirectional-flow- インポートの流れを一方向にしますimport-no-cross-feature- 機能をまたぐインポートを禁止しますimport-public-api- パブリック API 経由でのみエクスポートしますimport-avoid-barrel-files- 深い階層にあるバレルファイルからの再エクスポートを避けますimport-path-aliases- 一貫性のあるパスエイリアスを使用しますimport-type-only- 型には型専用インポートを使用します
3. モジュール境界(高)
bound-feature-isolation- 機能の分離を徹底しますbound-interface-contracts- 明示的なインターフェース契約を定義しますbound-feature-scoped-routing- ルーティングの範囲を機能の関心事に限定しますbound-minimize-shared-state- 機能間で共有する状態を最小限にしますbound-event-based-communication- 機能間の通信にイベントを使用しますbound-feature-size- 機能のサイズを適切に保ちます
4. データ取得(高)
fquery-single-responsibility- クエリ関数の役割を単一に保ちますfquery-colocate-with-feature- データ取得処理を機能と同じ場所に配置しますfquery-parallel-fetching- 独立したデータは並列で取得しますfquery-avoid-n-plus-one- N+1 クエリパターンを避けますfquery-feature-scoped-keys- 機能単位のクエリキーを使用しますfquery-server-component-fetching- サーバーコンポーネントのレベルでデータを取得します
5. コンポーネントの構成(中〜高)
fcomp-single-responsibility- コンポーネントにも単一責任の原則を適用しますfcomp-composition-over-props- Props のバケツリレーよりもコンポジションを優先しますfcomp-container-presentational- コンテナとプレゼンテーションの関心事を分離しますfcomp-props-as-data-boundary- Props を機能の境界として使用しますfcomp-colocate-styles- スタイルをコンポーネントと同じ場所に配置しますfcomp-error-boundaries- 機能レベルのエラーバウンダリーを使用します
6. 状態管理(中)
fstate-feature-scoped-stores- ストアの範囲を機能単位に限定しますfstate-server-state-separation- サーバー状態とクライアント状態を分離しますfstate-lift-minimally- 必要な範囲に限って状態を持ち上げますfstate-context-sparingly- 機能の状態には Context を控えめに使用しますfstate-reset-on-unmount- アンマウント時に機能の状態をリセットします
7. テスト戦略(中)
test-colocate-with-feature- テストを機能と同じ場所に配置しますtest-feature-isolation- 機能を分離してテストしますtest-shared-utilities- 機能固有のテストユーティリティを作成しますtest-integration-at-app-layer- アプリケーションレイヤーで統合テストを作成します
8. 命名規則(低)
name-feature-naming- ドメイン駆動の機能名を使用しますname-file-conventions- 一貫性のあるファイル命名規則を使用しますname-descriptive-exports- 内容がわかるエクスポート名を使用します
使用方法
詳細な説明とコード例については、各リファレンスファイルを読んでください。
- ブループリントのプロセス - プロジェクト固有の目標アーキテクチャを導き出す方法
- ブループリントのテンプレート - エージェントが最終状態のドキュメントを作成するために記入するテンプレート
- セクションの定義 - カテゴリ構成と影響レベル
- ルールのテンプレート - 新しいルールを追加するためのテンプレート
- 個別のルール:
references/{prefix}-{slug}.md
関連スキル
- 機能の計画については、
feature-specスキルを参照してください - データ取得については、
tanstack-queryスキルを参照してください - React コンポーネントのパターンについては、
react-19スキルを参照してください
コンパイル済みの完全版ドキュメント
すべてのルールを展開した完全なガイド:AGENTS.md