frontend-design
12
总安装量
9
周安装量
#26949
全站排名
安装命令
npx skills add https://github.com/wade56754/ai_ad_spend02 --skill frontend-design
Agent 安装分布
claude-code
6
codex
5
gemini-cli
5
opencode
5
antigravity
4
windsurf
4
Skill 文档
Frontend Design Skill – å端设计æå¯¼
1. Purpose
æä¾å端 UI/UX 设计æå¯¼ï¼ç¡®ä¿è®¾è®¡ç³»ç»ä¸è´æ§ãç»ä»¶å¯å¤ç¨æ§åç¨æ·ä½éªè´¨éã
æ ¸å¿èè´£:
- UI ç»ä»¶è®¾è®¡åç»æè§å
- 设计系ç»ä¸è´æ§å®¡æ¥
- ååºå¼è®¾è®¡åå¸å±ä¼å
- å¯è®¿é®æ§ (a11y) æ£æ¥
- CSS/Tailwind æä½³å®è·µ
2. Design Principles
2.1 è®¾è®¡ç³»ç»æ ¸å¿åå
| åå | æè¿° | æ£æ¥ç¹ |
|---|---|---|
| ä¸è´æ§ | ç»ä¸çè§è§è¯è¨åäº¤äºæ¨¡å¼ | é¢è²ãé´è·ãåä½ãåè§ |
| 屿¬¡æ | æ¸ æ°çä¿¡æ¯å±çº§åè§è§éç¹ | æ é¢å¤§å°ãé¢è²å¯¹æ¯ã空é´åå¸ |
| å¯é¢æµ | ç¨æ·å¯é¢æç交äºè¡ä¸º | æé®åé¦ãå è½½ç¶æãé误æç¤º |
| å¯è®¿é® | 符å WCAG 2.1 AA æ å | 对æ¯åº¦ãé®ç导èªãå±å¹é è¯»å¨ |
2.2 é¢è²ç³»ç»
/* 主è²è° - åçè² */
--primary: hsl(222, 47%, 11%); /* æ·±è */
--primary-foreground: hsl(0, 0%, 100%);
/* è¯ä¹è² */
--success: hsl(142, 71%, 45%); /* ç»¿è² - æå */
--warning: hsl(38, 92%, 50%); /* æ©è² - è¦å */
--destructive: hsl(0, 84%, 60%); /* çº¢è² - å±é©/é误 */
/* 䏿§è² */
--muted: hsl(210, 40%, 96%);
--muted-foreground: hsl(215, 16%, 47%);
2.3 é´è·ç³»ç»
/* Tailwind é´è·è§è */
spacing-1: 0.25rem (4px) /* ç´§åå
ç´ é´è· */
spacing-2: 0.5rem (8px) /* å°é´è· */
spacing-4: 1rem (16px) /* æ åé´è· */
spacing-6: 1.5rem (24px) /* å¡çå
è¾¹è· */
spacing-8: 2rem (32px) /* åºåé´è· */
2.4 åä½å±çº§
| çº§å« | Tailwind Class | 使ç¨åºæ¯ |
|---|---|---|
| H1 | text-2xl font-bold |
页颿 é¢ |
| H2 | text-xl font-semibold |
åºåæ é¢ |
| H3 | text-lg font-medium |
å¡çæ é¢ |
| Body | text-sm |
æ£æ |
| Caption | text-xs text-muted-foreground |
è¾ å©è¯´æ |
3. Component Patterns
3.1 页é¢å¸å±æ¨¡å¼
// æ å页é¢ç»æ
<div className="space-y-6">
{/* 页é¢å¤´é¨ */}
<div className="flex items-center justify-between">
<h1 className="text-2xl font-bold">页颿 é¢</h1>
<Button>主æä½</Button>
</div>
{/* çéåºå */}
<Card>
<CardHeader>
<CardTitle className="text-lg">ç鿡件</CardTitle>
</CardHeader>
<CardContent>
{/* çéç»ä»¶ */}
</CardContent>
</Card>
{/* å
容åºå */}
<Card>
<CardContent className="pt-6">
{/* 主ä½å
容 */}
</CardContent>
</Card>
</div>
3.2 å¡çç»ä»¶æ¨¡å¼
// æ°æ®å¡ç
<Card>
<CardHeader className="pb-2">
<CardTitle className="text-sm font-medium text-muted-foreground">
æ é¢
</CardTitle>
</CardHeader>
<CardContent>
<div className="text-2xl font-bold">æ°å¼</div>
<p className="text-xs text-muted-foreground">
è¾
å©è¯´æ
</p>
</CardContent>
</Card>
// KPI ææ å¡
<div className="grid gap-4 md:grid-cols-2 lg:grid-cols-4">
<MetricCard title="æ»æ¶å
¥" value="Â¥125,000" change="+12.5%" />
<MetricCard title="æ»ææ¬" value="Â¥98,000" change="-5.2%" />
<MetricCard title="æ¯å©" value="Â¥27,000" />
<MetricCard title="CPL" value="Â¥45.5" />
</div>
3.3 è¡¨æ ¼ç»ä»¶æ¨¡å¼
// ä½¿ç¨ DataTable ç»ä»¶
import { DataTable } from "@/components/ui/data-table/DataTable";
const columns = [
{ accessorKey: "id", header: "ID" },
{ accessorKey: "name", header: "åç§°" },
{
accessorKey: "status",
header: "ç¶æ",
cell: ({ row }) => (
<StatusBadge status={row.original.status} />
),
},
{
id: "actions",
cell: ({ row }) => (
<DropdownMenu>
{/* æä½èå */}
</DropdownMenu>
),
},
];
<DataTable columns={columns} data={data} />
3.4 表åç»ä»¶æ¨¡å¼
// ä½¿ç¨ react-hook-form + zod
import { useForm } from "react-hook-form";
import { zodResolver } from "@hookform/resolvers/zod";
import { z } from "zod";
const schema = z.object({
name: z.string().min(1, "åç§°ä¸è½ä¸ºç©º"),
amount: z.number().positive("éé¢å¿
é¡»å¤§äº 0"),
});
function MyForm() {
const form = useForm({
resolver: zodResolver(schema),
defaultValues: { name: "", amount: 0 },
});
return (
<Form {...form}>
<form onSubmit={form.handleSubmit(onSubmit)} className="space-y-4">
<FormField
control={form.control}
name="name"
render={({ field }) => (
<FormItem>
<FormLabel>åç§°</FormLabel>
<FormControl>
<Input {...field} />
</FormControl>
<FormMessage />
</FormItem>
)}
/>
<Button type="submit">æäº¤</Button>
</form>
</Form>
);
}
4. State Display Patterns
4.1 ç¶ææ ç¾ (StatusBadge)
// ç¶æé¢è²æ å° - 对é½è®¾è®¡ç³»ç»
const statusVariants = {
// æ¥æ¥ç¶æ
raw_submitted: { label: "å·²æäº¤", variant: "outline" },
trend_ok: { label: "è¶å¿æ£å¸¸", variant: "secondary" },
final_confirmed: { label: "已确认", variant: "default" },
// å
å¼ç¶æ
pending: { label: "å¾
å¤ç", variant: "outline" },
approved: { label: "å·²æ¹å", variant: "default" },
rejected: { label: "å·²æç»", variant: "destructive" },
// è´¦æ·ç¶æ
active: { label: "æ´»è·", variant: "default" },
suspended: { label: "æå", variant: "warning" },
dead: { label: "æ»å·", variant: "destructive" },
};
4.2 å è½½åéè¯¯ç¶æ
// ä½¿ç¨ DataStateManager ç»ä»¶
import { DataStateManager } from "@/components/ui/data-state-manager";
<DataStateManager
isLoading={isLoading}
error={error}
isEmpty={!data?.length}
loadingComponent={<TableSkeleton rows={5} />}
errorComponent={<ErrorMessage message={error?.message} />}
emptyComponent={<EmptyState message="ææ æ°æ®" />}
>
<DataTable columns={columns} data={data} />
</DataStateManager>
5. Responsive Design
5.1 æç¹ç³»ç»
| æç¹ | 尺寸 | éç¨è®¾å¤ |
|---|---|---|
sm |
640px | ææºæ¨ªå± |
md |
768px | å¹³æ¿ç«å± |
lg |
1024px | å¹³æ¿æ¨ªå±/å°ç¬è®°æ¬ |
xl |
1280px | æ¡é¢ |
2xl |
1536px | 大屿¡é¢ |
5.2 ååºå¼å¸å±æ¨¡å¼
// ç½æ ¼å¸å±
<div className="grid gap-4 md:grid-cols-2 lg:grid-cols-4">
{/* å¡çç»ä»¶ */}
</div>
// ä¾§è¾¹æ å¸å±
<div className="flex flex-col lg:flex-row gap-6">
<aside className="w-full lg:w-64 shrink-0">
{/* ä¾§è¾¹æ */}
</aside>
<main className="flex-1">
{/* 主å
容 */}
</main>
</div>
// éè/æ¾ç¤º
<Button className="hidden md:inline-flex">æ¡é¢æé®</Button>
<Button className="md:hidden">ç§»å¨æé®</Button>
6. Accessibility Checklist
6.1 åºç¡è¦æ±
- ææäº¤äºå ç´ å¯éè¿é®ç访é®
- ç¦ç¹é¡ºåºåçä¸å¯è§
- é¢è²å¯¹æ¯åº¦ >= 4.5:1 (æ£æ) / 3:1 (å¤§ææ¬)
- 表åå ç´ æå ³èç label
- å¾çæ alt 屿§
6.2 ARIA 使ç¨
// å è½½ç¶æ
<div aria-busy={isLoading} aria-live="polite">
{isLoading ? <Spinner /> : <Content />}
</div>
// å¯¹è¯æ¡
<Dialog>
<DialogContent aria-labelledby="dialog-title" aria-describedby="dialog-desc">
<DialogTitle id="dialog-title">æ é¢</DialogTitle>
<DialogDescription id="dialog-desc">æè¿°</DialogDescription>
</DialogContent>
</Dialog>
// æé®
<Button aria-label="å é¤é¡¹ç®">
<TrashIcon />
</Button>
7. Design Review Checklist
7.1 è§è§ä¸è´æ§æ£æ¥
| æ£æ¥é¡¹ | éªè¯æ¹æ³ | ä¼å 级 |
|---|---|---|
| é¢è²ä½¿ç¨ | å¯¹ç §é¢è²ç³»ç»åé | P0 |
| é´è·ä¸è´ | ä½¿ç¨ Tailwind æ åé´è· | P0 |
| åä½å±çº§ | å¯¹ç §åä½è§è | P0 |
| åè§ä¸è´ | ç»ä¸ä½¿ç¨ rounded-md |
P1 |
| é´å½±ä¸è´ | Card ä½¿ç¨ shadow-sm |
P1 |
7.2 交äºè®¾è®¡æ£æ¥
| æ£æ¥é¡¹ | éªè¯æ¹æ³ | ä¼å 级 |
|---|---|---|
| æé®åé¦ | hover/active/disabled ç¶æ | P0 |
| å è½½ç¶æ | ææç¡®çå è½½æç¤º | P0 |
| é误æç¤º | ç¨æ·å好çéè¯¯ä¿¡æ¯ | P0 |
| æååé¦ | Toast æç¶ææ´æ° | P1 |
7.3 ç»ä»¶å¤ç¨æ£æ¥
| æ£æ¥é¡¹ | éªè¯æ¹æ³ | ä¼å 级 |
|---|---|---|
| ä½¿ç¨æ³¨åç»ä»¶ | å¯¹ç § COMPONENT_REGISTRY.md | P0 |
| é¿å éå¤é è½®å | æ£æ¥ç°æç»ä»¶åº | P0 |
| Props æ¥å£ä¸è´ | ä½¿ç¨æ åå Props | P1 |
8. Anti-Patterns (ç¦æ¢æ¨¡å¼)
8.1 æ ·å¼ç¦æ¢
// â å
èæ ·å¼
<div style={{ color: "red", marginTop: 20 }}>
// â
Tailwind ç±»
<div className="text-destructive mt-5">
// â 硬ç¼ç é¢è²å¼
<div className="bg-[#ff0000]">
// â
使ç¨è¯ä¹ååé
<div className="bg-destructive">
// â éæ³æ°å
<div className="w-[347px] h-[89px]">
// â
ä½¿ç¨æ å尺寸
<div className="w-80 h-24">
8.2 ç»ä»¶ç¦æ¢
// â æåè¡¨æ ¼
<table>
<thead>...</thead>
<tbody>...</tbody>
</table>
// â
ä½¿ç¨ DataTable
<DataTable columns={columns} data={data} />
// â èªå®ä¹ Loading
<div className="spinner animate-spin">...</div>
// â
ä½¿ç¨ Skeleton æ Loader
<Skeleton className="h-8 w-full" />
// â æå Modal
<div className="fixed inset-0 z-50">...</div>
// â
ä½¿ç¨ Dialog
<Dialog>
<DialogContent>...</DialogContent>
</Dialog>
9. Prompt Template
<SYSTEM>
ä½ æ¯"å端设计 Agent"ï¼è´è´£ UI/UX 设计å³çåç»ä»¶ç»æè§åã
å¿
é¡»éµå®çè§åï¼
1. éµå¾ª UI_DESIGN_SYSTEM.md 设计è§è
2. ä½¿ç¨ COMPONENT_REGISTRY.md ä¸ç注åç»ä»¶
3. ä¼å
ä½¿ç¨ shadcn/ui å Tailwind CSS
4. ç¡®ä¿ååºå¼è®¾è®¡åå¯è®¿é®æ§
5. ä¿æè®¾è®¡ç³»ç»ä¸è´æ§
ææ¯æ ï¼
- React 18+ / Next.js 14+
- Tailwind CSS
- shadcn/ui ç»ä»¶åº
- TypeScript
</SYSTEM>
<CONTEXT>
<DOC name="UI_DESIGN_SYSTEM">
{{UI_DESIGN_SYSTEM}}
</DOC>
<DOC name="COMPONENT_REGISTRY">
{{COMPONENT_REGISTRY}}
</DOC>
</CONTEXT>
<TASK>
{{TASK}}
</TASK>
<THINKING_CHAIN>
1. **éæ±åæ**
- çè§£è®¾è®¡ç®æ åç¨æ·åºæ¯
- è¯å«éè¦çç»ä»¶åå¸å±
2. **è®¾è®¡ç³»ç»æ£æ¥**
- 对ç
§é¢è²ãé´è·ãåä½è§è
- 确认å¯ç¨çç»ä»¶
3. **ç»ä»¶è§å**
- éæ©åéçç»ä»¶
- è§åç»ä»¶å±æ¬¡åæ°æ®æµ
4. **ååºå¼èè**
- ç¡®å®æç¹çç¥
- è§åä¸åå±å¹å¸å±
5. **å¯è®¿é®æ§æ£æ¥**
- ç¡®ä¿é®çå¯è®¿é®
- æ·»å å¿
è¦ç ARIA 屿§
6. **è¾åºè®¾è®¡æ¹æ¡**
- æä¾ä»£ç 示ä¾
- 说æè®¾è®¡å³ç
</THINKING_CHAIN>
10. Version History
| çæ¬ | æ¥æ | åæ´ |
|---|---|---|
| v1.0 | 2026-01-02 | åå§çæ¬ |
ææ¡£æ§å¶: Owner: wade | Baseline: UI_DESIGN_SYSTEM.md, COMPONENT_REGISTRY.md