← スキル一覧に戻る

frontend-ui
by stephanofer
⭐ 0🍴 0📅 2026年1月18日
SKILL.md
name: frontend-ui description: > Frontend UI-specific patterns. For generic patterns, see: typescript, react-19, nextjs-15, tailwind-4. Trigger: When working inside src/react-app. license: Apache-2.0 allowed-tools: Read, Edit, Write, Glob, Grep, Bash, WebFetch, WebSearch, Task
Related Generic Skills
typescript- Const types, flat interfacesreact-19- No useMemo/useCallback, compilertailwind-4- cn() utility, styling ruleszod-4- Schema validationzustand-5- State managementmotion- Animations
CRITICAL: Mobile First
- ALWAYS: Use Mobile First approach for responsive design. then desktop styles.
Tech Stack (Versions)
React 19.2.3 | Tailwind 4.1.18 | shadcn/ui
Zod 4.3.5 | React Hook Form 7.71.0 | Zustand 5.0.10" | Recharts 3.6.0 | React Router 7.12.0 | Motion 12.26.2 | TanStack Query 5.90.16 | TanStack Table 8.21.3 |
DECISION TREES
Component Placement
New feature UI? → components/ui + Tailwind
Code Location
Types → types/{domain}.ts
Utils → lib/
Hooks → {feature}/hooks.ts
shadcn components → components/ui/
pages (React Router) → pages/
Styling Decision
Tailwind class exists? → className
Dynamic value? → style prop
Conditional styles? → cn()
Static only? → className (no cn())
Recharts/library? → CHART_COLORS constant + var()
ANIMATIONS
- Use
motionfor all animations. - Prefer simple animations (opacity, translate, scale).
PROJECT STRUCTURE
react-app/
├── main.tsx/ # React app entry point
├── components/ui/ # Shared UI components (shadcn)
├── pages/ # React Router pages
├── types/ # Shared types
├── hooks/ # Shared hooks
├── lib/ # Utilities
├── store/ # Zustand state
└── styles/ # Global CSS
Form + Validation Pattern
"use client";
import { useForm } from "react-hook-form";
import { zodResolver } from "@hookform/resolvers/zod";
import { z } from "zod";
const schema = z.object({
email: z.email(), // Zod 4 syntax
name: z.string().min(1),
});
type FormData = z.infer<typeof schema>;
export function MyForm() {
const { register, handleSubmit, formState: { errors } } = useForm<FormData>({
resolver: zodResolver(schema),
});
const onSubmit = async (data: FormData) => {
await serverAction(data);
};
return (
<form onSubmit={handleSubmit(onSubmit)}>
<input {...register("email")} />
{errors.email && <span>{errors.email.message}</span>}
<button type="submit">Submit</button>
</form>
);
}
スコア
総合スコア
50/100
リポジトリの品質指標に基づく評価
✓SKILL.md
SKILL.mdファイルが含まれている
+20
○LICENSE
ライセンスが設定されている
0/10
○説明文
100文字以上の説明がある
0/10
○人気
GitHub Stars 100以上
0/15
○最近の活動
3ヶ月以内に更新がある
0/10
○フォーク
10回以上フォークされている
0/5
✓Issue管理
オープンIssueが50未満
+5
✓言語
プログラミング言語が設定されている
+5
○タグ
1つ以上のタグが設定されている
0/5
レビュー
💬
レビュー機能は近日公開予定です