web-rules について
React 19、Next.js 16 App Router、Tailwind CSS 4で画面を構築する開発者向けの厳格なルール集です。6つの設計カテゴリを扱い、各ルールに不適切な例と適切な例を示します。
主な機能
- 016カテゴリの画面設計ルール
- 02不適切な例と適切なコード例
- 03フォームとエラー状態の指針
- 04キーボード操作とアクセシビリティ
- 05ダークモードと余白の規則
活用シーン
- 01新しいルートやコンポーネントの実装
- 02デザインやアクセシビリティの回帰確認
- 03フォーム、権限、設定フローの設計
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ pproenca/ dot-skills --skill web-rulesインストール後、Claude Code で/web-rulesを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
metadata.jsonassets/templates/_template.mdreferences/_sections.mdacc-color-contrast.mdacc-color-independent.mdacc-focus-management.mdacc-labels.mdacc-reduce-motion.mdacc-relative-units.mdacc-responsive-layout.mdacc-text-scaling.mdfeed-empty-states.mdfeed-error-states.mdfeed-loading-states.mdfeed-success-confirmation.mdfeed-toasts.mdinter-drag-drop.mdinter-keyboard-navigation.mdinter-microinteractions.mdinter-pointer-patterns.mdinter-revalidation.mdinter-row-actions.mdinter-search.mdinter-touch-targets.mdnav-app-router.mdnav-page-actions.mdnav-primary.mdux-data-entry.mdux-destructive-confirmation.mdux-modality.md詳細
React 19 + Next.js 16 + Tailwind CSS のベストプラクティス
React 19、Next.js 16 App Router、Tailwind CSS 4 で構築するウェブアプリ向けの、厳格なルールをまとめた包括的なリファレンスです。6 つのカテゴリにわたる 34 のルールが含まれています。各ルールは、定量化された効果、誤った例、正しい例とともに、必ず/決してという指示形式で記載されています。
スタックの前提条件
すべてのガイダンスは、以下を前提としています。
- React 19。デフォルトではサーバーコンポーネントを使用し、インタラクティブ性が必要な場合にのみクライアントコンポーネントを使用します(先頭に
'use client'を記述) - Next.js 16 App Router。
app/ディレクトリ、layout.tsx、page.tsx、loading.tsx、error.tsx、not-found.tsx、並列ルート、インターセプトルートを使用します - Server Actions を変更処理に使用します(
'use server')。データ取得にuseEffectを使うことは決してありません - Tailwind CSS 4。
@themeディレクティブ、dark:バリアント、コンテナクエリ、標準の 4pt 間隔スケールを使用します - アイコンシステムには lucide-react を使用します
- CSS-in-JS は使用しません(styled-components、emotion は使用しません)。Tailwind ユーティリティクラスのみを使い、条件付きクラスには
clsxとtailwind-mergeのcn()を使用します - ダイアログ、ポップオーバー、ドロップダウン、ツールチップ、トーストには shadcn/ui プリミティブ(Radix ベース)を優先します
適用する場面
以下の場合に、これらのルールを参照してください。
- ユーザー向けのルート、レイアウト、コンポーネントを構築するとき
- デザイン、UX、アクセシビリティのリグレッションについて PR をレビューするとき
- 表示形式(ダイアログ、ポップオーバー、全画面ページ)を選ぶとき
- Server Actions と
useFormState/useOptimisticを使ってフォームを実装するとき - ローディングおよびエラーバウンダリを設定するとき
- オンボーディング、権限、設定のフローを設計するとき
- ダークモード、フォーカス管理、キーボード操作が一貫して機能することを確認するとき
優先度別ルールカテゴリ
| 優先度 | カテゴリ | 影響 | プレフィックス |
|---|---|---|---|
| 1 | ナビゲーション | CRITICAL | nav- |
| 2 | インタラクションデザイン | CRITICAL | inter- |
| 3 | アクセシビリティ | CRITICAL | acc- |
| 4 | ユーザーフィードバック | HIGH | feed- |
| 5 | UX パターン | HIGH | ux- |
| 6 | ビジュアルデザイン | HIGH | vis- |
クイックリファレンス
1. ナビゲーション(CRITICAL)
nav-primary- 上部ナビゲーション(3~7 セクション)またはサイドバーを使用します。デスクトップでハンバーガーメニューのみを使うことは決してありませんnav-app-router- App Router のレイアウト、並列ルート、<Link>を使って、すべての内部ナビゲーションを実装しますnav-page-actions- 主要なアクションはページヘッダーに配置します。スクロールしないと見つからない場所に置くことは決してありません
2. インタラクションデザイン(CRITICAL)
inter-touch-targets- タッチターゲットは最小 44×44 px にします(WCAG 2.5.5)inter-pointer-patterns- 標準的なホバー/クリック/長押しのパターンを使用します。新しいパターンを独自に考案することは決してありませんinter-microinteractions- インタラクションを視覚的なフィードバックで必ず 100ms 以内に確認できるようにしますinter-keyboard-navigation- すべてのインタラクティブ要素にキーボードで到達し、操作できるようにしますinter-drag-drop- ドラッグ操作を提供する場合は、キーボードでアクセスできる代替手段を用意しますinter-revalidation- 変更処理の後にrevalidatePath/revalidateTagを使用します。クライアントの更新に頼ることは決してありませんinter-row-actions- リストごとに 1 種類の「行アクション」パターン(ケバブメニュー、ホバーアクション、スワイプのいずれか)を使用しますinter-search- 検索入力を 200~300ms デバウンスし、クエリを URL に反映します
3. アクセシビリティ(重大)
acc-labels- すべてのインタラクティブ要素に、アクセシブルな名前を設定しますacc-text-scaling- ブラウザーのズームを200%にしても、すべてのテキストが拡大され、横スクロールが発生しないようにしますacc-color-contrast- WCAG AA:本文テキストは4.5:1、大きなテキスト/UIは3:1のコントラスト比を確保しますacc-reduce-motion-prefers-reduced-motion: reduceを尊重しますacc-color-independent- 意味を伝える際に、色だけに頼らないでくださいacc-focus-management- 常に視認できるフォーカスリングを表示し、モーダル内にフォーカスを閉じ込めますacc-relative-units- テキストと間隔にはremを使用し、テキストサイズをpxで固定しないでくださいacc-responsive-layout- すべてのレイアウトが、横スクロールなしで幅320 pxに対応するようにします
4. ユーザーフィードバック(高)
feed-loading-states- 最終レイアウトに合ったスケルトンを使い、必ずloading.tsxまたは<Suspense>を使用しますfeed-error-states- すべてのルートセグメントに、再試行アクションを備えたerror.tsxを用意しますfeed-toasts- トーストは、ブロックを伴わないアクションの確認にのみ使用しますfeed-success-confirmation- 破壊的または取り消せないアクションには、明示的で視認できるフィードバックを必ず表示しますfeed-empty-states- 空の状態では、その理由を説明し、次のアクションを提示します
5. UXパターン(高)
ux-onboarding- オンボーディングは3画面以内にし、必ずスキップ可能にしますux-permissions- ブラウザーの権限はページ読み込み時ではなく、必要な場面でリクエストしますux-modality- コンテンツの重要度に応じてダイアログ/ポップオーバー/全画面ページを選び、モーダルを重ねないでくださいux-destructive-confirmation- 破壊的なアクションには、入力による確認、または取り消し可能な猶予期間が必要ですux-data-entry- Server Actionsとプログレッシブエンハンスメントを使用し、入力中に送信を無効化しないでくださいux-undo- 日常的な操作では、確認より取り消しを優先しますux-settings- 設定は変更時に自動保存し、保存ボタンを必須にしないでください
6. ビジュアルデザイン(高)
vis-dark-mode- CSSカスタムプロパティとdark:バリアントを使用し、text-black/bg-whiteをハードコードしないでくださいvis-icon-system- lucide-reactを使い、標準サイズには1.5pxの線幅とsize-4/size-5を使用しますvis-spacing- Tailwind 4のptスケールとコンテナクエリを使用し、場当たり的なpxマージンは使わないでください
使用方法
詳しい説明とコード例については、各リファレンスファイルを参照してください。
- セクションの定義 - カテゴリー構成と影響度
- ルールのテンプレート - 新しいルールを追加するためのテンプレート
リファレンスファイル
| ファイル | 説明 |
|---|---|
| references/_sections.md | カテゴリーの定義と順序 |
| assets/templates/_template.md | 新しいルール用のテンプレート |
コメント
Markdown 対応