Agent Skills by ALSEL
Anthropic Claudeソフトウェア開発⭐ リポ 0品質スコア 50/100

react-refactor

Reactアプリケーションのアーキテクチャリファクタリングに関するガイドで、コンポーネント設計、状態管理の構造、hookのパターン、コンポーネントの分割、結合度と凝集度、データフロー、リファクタリングの安全性をカバーします。Reactコードベースのリファクタリング、PRのアーキテクチャレビュー、肥大化したコンポーネントの分解、モジュール境界の改善を行う際に使用してください。なお、React 19のAPI利用はreactスキル、パフォーマンス最適化はreact-optimiseスキルが対象であり、本スキルの範囲外です。

description の原文を見る

Architectural refactoring guide for React applications covering component architecture, state architecture, hook patterns, component decomposition, coupling and cohesion, data flow, and refactoring safety. Use when refactoring React codebases, reviewing PRs for architectural issues, decomposing oversized components, or improving module boundaries. Does NOT cover React 19 API usage (see react skill) or performance optimization (see react-optimise skill).

SKILL.md 本文

React リファクタリングのベストプラクティス

React アプリケーションのアーキテクチャリファクタリングガイド。7つのカテゴリにわたる40個のルールを含み、クリティカル(コンポーネントとステート設計)からインクリメンタル(リファクタリング安全性)まで、影響度でまとめています。

適用するべき場合

  • 既存の React コードベースのリファクタリング、または大規模な再構築の計画
  • PR レビューでアーキテクチャ上の問題とコード臭を検出する際
  • 過度に大きなコンポーネントを小さく焦点を絞ったユニットに分解する
  • コンポーネントロジックから再利用可能なカスタムフックを抽出する
  • React コードのテスト可能性を向上させる
  • 機能モジュール間の結合度を低減する

ルールカテゴリ

カテゴリ影響度ルール数主なトピック
Component ArchitectureCRITICAL8Compound components、headless パターン、合成による設計、クライアント境界
State ArchitectureCRITICAL7状態の共存、ステートマシン、URL ステート、導出値
Hook PatternsHIGH6単一責任、命名規則、依存関係の安定性、合成
Component DecompositionHIGH6スクロールテスト、変更理由による抽出、ビュー/ロジック分離
Coupling & CohesionMEDIUM4依存性注入、循環依存、安定したインポート、バレル不使用
Data & Side EffectsMEDIUM4サーバーファースト取得、TanStack Query、エラー境界
Refactoring SafetyLOW-MEDIUM5特性テスト、動作テスト、統合テスト

クイックリファレンス

クリティカルパターン — まずこれらを正しく実装する:

  • props の爆発を避けるために compound components を使用
  • 状態をそれを使用するコンポーネントと同じ場所に配置
  • 複雑な UI ワークフローに state machines を使用
  • コンテナロジックをプレゼンテーショナルコンポーネントから分離

よくある間違い — これらのアンチパターンを避ける:

  • 1 つのコンポーネントだけが読む場合に App に state を上げる
  • 頻繁に変更される値に context を使用する
  • fetch + 変換 + キャッシュをすべて行うモノリシックなカスタムフック
  • 実装の詳細ではなく動作をテストする

目次

  1. Component ArchitectureCRITICAL
    • 1.1 インターフェースセグリゲーションをコンポーネント Props に適用 — CRITICAL(不要なリレンダリングの30~50%を防止)
    • 1.2 型ではなく機能でファイルを共存させる — CRITICAL(ディレクトリ間のナビゲーションを70%削減)
    • 1.3 Render Props をカスタムフックに変換 — CRITICAL(ネストを2~4レベル削除)
    • 1.4 ロジック再利用のためにヘッドレスコンポーネントを抽出 — CRITICAL(再利用シナリオが5倍増加)
    • 1.5 Props の爆発より合成を優先 — CRITICAL(prop 数を50~70%削減)
    • 1.6 コンテナロジックをプレゼンテーショナルコンポーネントから分離 — CRITICAL(独立したテストを可能にする)
    • 1.7 暗黙的なステート共有に compound components を使用 — CRITICAL(API サーフェスを60%削減)
    • 1.8 クライアント境界をリーフコンポーネントに移動 — HIGH(60~80%をサーバーレンダリングに保つ)
  2. State ArchitectureCRITICAL
    • 2.1 状態をそれを使用するコンポーネントと共存させる — CRITICAL(props の受け渡しを60%削減)
    • 2.2 ステート同期ではなく導出値を使用 — CRITICAL(ダブルレンダリングサイクルを削除)
    • 2.3 複数のコンポーネントが読む場合のみ state を上げる — CRITICAL(不要な親のリレンダリングを削除)
    • 2.4 ほとんど変更されない値にのみ context を使用 — CRITICAL(リレンダリングが5~50倍削減)
    • 2.5 複雑な UI ワークフローに state machines を使用 — CRITICAL(有効な状態が2^nからNに削減)
    • 2.6 共有可能なビューのための URL パラメータをステートとして使用 — CRITICAL(ディープリンクと共有を可能にする)
    • 2.7 複数フィールドの状態遷移に useReducer を使用 — CRITICAL(不可能な状態を削除)
  3. Hook PatternsHIGH
    • 3.1 カスタムフックのオブジェクトと配列の依存関係を避ける — HIGH(毎フレームのエフェクト再実行を防止)
    • 3.2 フックをネストするのではなく合成 — HIGH(依存関係グラフを平坦化)
    • 3.3 動作が命名可能な場合はロジックをカスタムフックに抽出 — HIGH(コンポーネントが40~60%短縮)
    • 3.4 発見性のためにカスタムフックの命名規則に従う — HIGH(ナビゲーション時間を40%削減)
    • 3.5 カスタムフックを単一責任に保つ — HIGH(テストが3倍簡単)
    • 3.6 Ref とコールバックでフック依存関係を安定させる — HIGH(無限ループを防止)
  4. Component DecompositionHIGH
    • 4.1 スクロールテストを適用して過度に大きなコンポーネントを特定 — HIGH(コードレビューが3倍高速化)
    • 4.2 半端な措置なしでコンポーネント抽出を完了 — HIGH(独立したテストと再利用を可能にする)
    • 4.3 独立した変更理由によってコンポーネントを抽出 — HIGH(変更ごとにタッチするファイルが70%削減)
    • 4.4 コンポーネント本体から純粋関数を抽出 — HIGH(ユニットテストが10倍高速)
    • 4.5 インライン化してから再抽出する前に早すぎる抽象化を削除 — HIGH(コードが40~60%簡潔に)
    • 4.6 ビュー層をビジネスロジックから分離 — HIGH(テストスイートが5倍高速)
  5. Coupling & CohesionMEDIUM
    • 5.1 中間モジュールで循環依存を破棄 — MEDIUM(インポート時に未定義のバグを削除)
    • 5.2 安定した公開 API サーフェスのみからインポート — MEDIUM(内部リファクタリングを可能にする)
    • 5.3 クリーンな依存関係のためにバレルフリーの機能モジュールを使用 — MEDIUM(200~800ms のビルド短縮)
    • 5.4 外部サービスに依存性注入を使用 — MEDIUM(テストセットアップが3倍高速)
  6. Data & Side EffectsMEDIUM
    • 6.1 デフォルトではサーバーでデータを取得 — MEDIUM(クライアント JS を30~60%削減)
    • 6.2 データ取得粒度でエラー境界を配置 — MEDIUM(エラーを影響受けたセクションに隔離)
    • 6.3 アクション共存化のために Context Module パターンを使用 — MEDIUM(データ変更を一元化)
    • 6.4 クライアント側サーバーステートに TanStack Query を使用 — MEDIUM(取得定型コードの80%を削除)
  7. Refactoring SafetyLOW-MEDIUM
    • 7.1 リファクタリング済みコンポーネントのスナップショットテストを避ける — LOW-MEDIUM(偽のテスト失敗を削除)
    • 7.2 テスト可能性を向上させるために純粋関数を抽出 — LOW-MEDIUM(テスト実行が10倍高速)
    • 7.3 コンポーネント検証に統合テストを優先 — LOW-MEDIUM(バグを40%多く検出)
    • 7.4 実装詳細ではなくコンポーネント動作をテスト — LOW-MEDIUM(テスト更新が5倍削減)
    • 7.5 リファクタリング前に特性テストを記述 — LOW-MEDIUM(意図しない変更の90%を検出)

参考資料

  1. https://react.dev
  2. https://react.dev/learn/thinking-in-react
  3. https://kentcdodds.com/blog/application-state-management-with-react
  4. https://testing-library.com/docs/guiding-principles
  5. https://patterns.dev

関連スキル

  • React 19 API のベストプラクティスについては react スキルを参照
  • アプリケーション性能最適化については react-optimise スキルを参照
  • クライアント側フォームハンドリングについては react-hook-form スキルを参照

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
pproenca
リポジトリ
pproenca/dot-skills
ライセンス
MIT
最終更新
不明

Source: https://github.com/pproenca/dot-skills / ライセンス: MIT

関連スキル

汎用ソフトウェア開発⭐ リポ 39,967

doubt-driven-development

重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 1,175

apprun-skills

TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。

by yysun
OpenAIソフトウェア開発⭐ リポ 797

desloppify

コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。

by Git-on-my-level
汎用ソフトウェア開発⭐ リポ 39,967

debugging-and-error-recovery

テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 39,967

test-driven-development

テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。

by addyosmani
汎用ソフトウェア開発⭐ リポ 39,967

incremental-implementation

変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。

by addyosmani
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: pproenca · pproenca/dot-skills · ライセンス: MIT