frontend-tailwind-best-practices
コンポーネントのスタイリングやレイアウト構築、CSSクラスの管理など、フロントエンド開発でTailwind CSSを使用する際のパターンとコーディング規約を提供します。Tailwindのクラス記述やデザインの一貫性を保ちたいときに活用してください。
description の原文を見る
Tailwind CSS patterns and conventions for frontend apps. Use when writing component styles, layouts, or working with CSS classes.
SKILL.md 本文
Tailwind CSS ベストプラクティス
フロントエンドアプリケーション向けのスタイリングパターンと規約です。レイアウトユーティリティ、アフォーダンス、カラースキーム、レスポンシブデザイン、className処理を網羅した10のルールが含まれています。
適用する場合
以下の場面で参照してください:
- Tailwindを使用したコンポーネントスタイリング
- レイアウト作成(スタック、グリッド、センタリング)
- レスポンシブデザインの実装
- カラースキームの操作
- classNameプロップのマージ
ルール一覧
レイアウトユーティリティ (重要)
layout-stack-utilities - @rules/layout-stack-utilities.md
flexクラスの代わりにカスタムスタックユーティリティを使用します。
// 悪い例
<div className="flex flex-col gap-4">
<div className="flex flex-row gap-4">
// 良い例
<div className="v-stack gap-4">
<div className="h-stack gap-4">
利用可能なユーティリティ:
v-stack- 垂直スタック(flexコラム)h-stack- 水平スタック(flexロー)v-stack-reverse- 逆順の垂直スタックh-stack-reverse- 逆順の水平スタックz-stack- 重なるスタック(グリッドベース、子要素を互いに重ねてセンタリング)center- コンテンツを水平・垂直にセンタリングspacer- 利用可能なスペースを埋める柔軟なスペーサーcircle- アスペクト比1/1の完全な円形
layout-prefer-gaps - @rules/layout-prefer-gaps.md
子要素のマージンの代わりに親要素にgap-*を使用します。
// 悪い例
<div>
<Item className="mb-4" />
<Item className="mb-4" />
</div>
// 良い例
<div className="flex flex-col gap-4">
<Item />
<Item />
</div>
layout-responsive-stacks - @rules/layout-responsive-stacks.md
ブレークポイントでレイアウト方向を切り替えます。
// モバイル: 垂直、デスクトップ: 水平
<div className="v-stack lg:h-stack gap-4">
<main className="grow">...</main>
<aside className="shrink-0 lg:w-80">...</aside>
</div>
// モバイル: 水平、デスクトップ: 垂直
<div className="h-stack md:v-stack">
カラースキーム (重要)
color-schemes - @rules/color-schemes.md
カスタムdarkバリアントを備えたクラスベースのカラースキームを使用します。
<button className="rounded-full bg-gray-900 px-4 py-2 text-white dark:bg-gray-100 dark:text-gray-900">
Toggle
</button>
className処理 (重要)
classname-cn-utility - @rules/classname-cn-utility.md
コンポーネント内でclassNameをマージする際には常にcn()を使用します。
import { cn } from "~/lib/cn";
function Button({ className, variant }: Props) {
return (
<button
className={cn(
"base-classes",
{
"variant-primary": variant === "primary",
"variant-secondary": variant === "secondary",
},
className, // 外部のclassNameは常に最後
)}
/>
);
}
classname-prop-types - @rules/classname-prop-types.md
classNameプロップに適切な型を使用します。
import type { ClassName, ClassNameRecord } from "~/lib/cn";
// 単一要素
type Props = {
className?: ClassName;
};
// 複数要素
type Props = {
className?: ClassNameRecord<"root" | "label" | "input">;
};
// 使用例
<Input className={{ root: "w-full", label: "font-bold" }} />;
アフォーダンス (高)
affordance-classes - @rules/affordance-classes.md
要素に依存しないビジュアルパターンを定義し、ユーティリティと組み合わせます。
<label className="ui-button" htmlFor="document-upload">
Choose file
</label>
レスポンシブデザイン (中)
responsive-breakpoints - @rules/responsive-breakpoints.md
Tailwindのデフォルトと共にレスポンシブプレフィックスを使用します。
// 標準ブレークポイント (min-width)
<div className="px-4 md:px-8 lg:px-12">
// 標準ブレークポイントで表示/非表示を切り替え
<div className="hidden md:block">デスクトップのみ</div>
<div className="md:hidden">モバイルのみ</div>
responsive-text - @rules/responsive-text.md
テキストをレスポンシブにスケーリングします。
// レスポンシブなフォントサイズ
<h1 className="text-2xl md:text-3xl lg:text-4xl">
// テキストに合わせたレスポンシブ行の高さ
<p className="text-sm leading-5 md:text-base md:leading-6">
responsive-capabilities - @rules/responsive-capabilities.md
デバイスラベルではなく入力機能(ポインタ/ホバー)に基づいて設計します。
<button className="h-10 w-10 pointer-coarse:h-12 pointer-coarse:w-12">
<Icon />
</button>
アンチパターン
| しないこと | すること |
|---|---|
flex flex-col | v-stack |
flex flex-row | h-stack |
flex items-center justify-center | center |
bg-gray-100 | bg-neutral-100 |
bg-[#hex] | デザイントークンを使用 |
cn()なしのclassName="..." | cn("...", className) |
レスポンシブ用のインラインstyle | Tailwindプレフィックス |
主要ファイル
| ファイル | 用途 |
|---|---|
tailwind.config.js | 設定、カスタムユーティリティ、色 |
app/styles/global.css | カラースキームのCSS変数 |
app/styles/tailwind.css | 追加ユーティリティ |
app/utils/cn.ts | classNameマージユーティリティ |
ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- sergiodxa
- ライセンス
- MIT
- 最終更新
- 不明
Source: https://github.com/sergiodxa/agent-skills / ライセンス: MIT
関連スキル
doubt-driven-development
重要な判断はすべて、本番環境への展開前に新しい視点から対抗的レビューを実施します。速度より正確性が重要な場合、不慣れなコードを扱う場合、本番環境・セキュリティに関わるロジック・取り消し不可の操作など影響度が高い場合、または後でバグを修正するよりも今検証する方が効率的な場合に活用してください。
apprun-skills
TypeScriptを使用したAppRunアプリケーションのMVU設計に関する総合的なガイダンスが得られます。コンポーネントパターン、イベントハンドリング、状態管理(非同期ジェネレータを含む)、パラメータと保護機能を備えたルーティング・ナビゲーション、vistestを使用したテストに対応しています。AppRunコンポーネントの設計・レビュー、ルートの配線、状態フローの管理、AppRunテストの作成時に活用してください。
desloppify
コードベースのヘルスチェックと技術負債の追跡ツールです。コード品質、技術負債、デッドコード、大規模ファイル、ゴッドクラス、重複関数、コードスメル、命名規則の問題、インポートサイクル、結合度の問題についてユーザーが質問した場合に使用してください。また、ヘルススコアの確認、次の改善項目の提案、クリーンアップ計画の作成をリクエストされた際にも対応します。29言語に対応しています。
debugging-and-error-recovery
テストが失敗したり、ビルドが壊れたり、動作が期待と異なったり、予期しないエラーが発生したりした場合に、体系的な根本原因デバッグをガイドします。推測ではなく、根本原因を見つけて修正するための体系的なアプローチが必要な場合に使用してください。
test-driven-development
テスト駆動開発により実装を進めます。ロジックの実装、バグの修正、動作の変更など、あらゆる場面で活用できます。コードが正常に動作することを証明する必要がある場合、バグ報告を受けた場合、既存機能を修正する予定がある場合に使用してください。
incremental-implementation
変更を段階的に実施します。複数のファイルに影響する機能や変更を実装する場合に使用してください。大量のコードを一度に書こうとしている場合や、タスクが一度では完結できないほど大きい場合に活用します。