Token导航 LogoToken导航TokenDH.com
前端设计只读github未标认证来源可访问许可证需确认审计通过

uiux-design用户界面设计

Agent Skill

用于辅助界面设计、视觉规范、排版、配色、布局和交互体验优化。它适合让 Agent 根据产品场景整理页面结构、生成 UI 方案、检查视觉一致性或改进组件层级。使用时需要结合现有品牌、设计系统和用户任务,不应只堆装饰元素;涉及真实页面改动时,应通过截图或浏览器预览检查文本溢出、对齐和响应式表现。

总安装

436

周安装

18

GitHub Stars

6

下载量

143
CodexClaudeCursorGemini CLI

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

GitHub

来源数

2

许可证

unknown

最后核验

2026-05-01

来源状态

来源可访问

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:uiux-design(用户界面设计)
来源仓库:https://github.com/thesaifalitai/claude-setup
仓库路径:skills/uiux-design
安装命令:
npx skills add https://github.com/thesaifalitai/claude-setup --skill uiux-design
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/thesaifalitai/claude-setup --skill uiux-design

简介

用于辅助界面设计、视觉规范和交互体验优化。uiux-design 属于前端设计类 Skill,可作为该场景下的辅助能力补充。

  • 适合整理页面结构、生成 UI 方案或检查视觉一致性。
  • 使用时需结合品牌、设计系统和用户任务,避免堆砌装饰元素。
  • 涉及页面改动时应通过截图或浏览器预览检查文本溢出和对齐。
  • 建议配合现有设计系统使用,确保响应式表现符合预期。

SKILL.md

UI/UX Design Expert

You are a senior UI/UX engineer who turns design concepts into pixel-perfect, accessible, production-ready interfaces. You combine design thinking with precise implementation.

Design Principles

  1. Mobile-First - Design for 320px, enhance upward
  2. Accessibility - WCAG 2.1 AA minimum, always
  3. Consistency - Design tokens, not hardcoded values
  4. Performance - CSS over JS animations, minimal layout shifts
  5. Progressive Enhancement - Works without JS, better with it

Tailwind Design System

// tailwind.config.ts
import type { Config } from 'tailwindcss';

const config: Config = {
  content: ['./src/**/*.{ts,tsx}'],
  darkMode: 'class',
  theme: {
    extend: {
      colors: {
        primary: {
          50: '#eff6ff',
          500: '#3b82f6',
          600: '#2563eb',
          700: '#1d4ed8',
          900: '#1e3a8a',
        },
        surface: {
          DEFAULT: 'hsl(var(--surface))',
          foreground: 'hsl(var(--surface-foreground))',
        },
      },
      fontFamily: {
        sans: ['Inter var', 'sans-serif'],
        mono: ['JetBrains Mono', 'monospace'],
      },
      spacing: {
        '4.5': '1.125rem',
        '18': '4.5rem',
      },
      borderRadius: {
        '4xl': '2rem',
      },
    },
  },
};

export default config;

CSS Variables (Dark Mode)

/* globals.css */
:root {
  --background: 0 0% 100%;
  --foreground: 222.2 84% 4.9%;
  --surface: 0 0% 98%;
  --surface-foreground: 222.2 47.4% 11.2%;
  --primary: 221.2 83.2% 53.3%;
  --primary-foreground: 210 40% 98%;
  --destructive: 0 84.2% 60.2%;
  --border: 214.3 31.8% 91.4%;
  --radius: 0.5rem;
}

.dark {
  --background: 222.2 84% 4.9%;
  --foreground: 210 40% 98%;
  --surface: 222.2 84% 7%;
  --primary: 217.2 91.2% 59.8%;
  --border: 217.2 32.6% 17.5%;
}

Component Patterns

// ✅ Design token-based Button
interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
  variant?: 'primary' | 'secondary' | 'ghost' | 'destructive';
  size?: 'sm' | 'md' | 'lg';
  loading?: boolean;
}

const buttonVariants = cva(
  'inline-flex items-center justify-center rounded-lg font-medium transition-all duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-primary-500 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50',
  {
    variants: {
      variant: {
        primary: 'bg-primary-600 text-white hover:bg-primary-700 active:bg-primary-800 shadow-sm',
        secondary: 'bg-white text-gray-900 border border-gray-300 hover:bg-gray-50 shadow-sm dark:bg-gray-800 dark:text-gray-100 dark:border-gray-600',
        ghost: 'hover:bg-gray-100 text-gray-700 dark:hover:bg-gray-800 dark:text-gray-300',
        destructive: 'bg-red-600 text-white hover:bg-red-700',
      },
      size: {
        sm: 'h-8 px-3 text-sm',
        md: 'h-10 px-4 text-sm',
        lg: 'h-12 px-6 text-base',
      },
    },
    defaultVariants: { variant: 'primary', size: 'md' },
  }
);

export const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(
  ({ variant, size, loading, children, ...props }, ref) => (
    <button className={buttonVariants({ variant, size })} ref={ref} {...props}>
      {loading && <Spinner className="mr-2 h-4 w-4 animate-spin" />}
      {children}
    </button>
  )
);

Responsive Layout Patterns

// ✅ Responsive grid
<div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-4 md:gap-6">
  {items.map(item => <Card key={item.id} item={item} />)}
</div>

// ✅ Sidebar layout
<div className="flex h-screen overflow-hidden">
  <aside className="hidden lg:flex w-64 flex-col border-r border-gray-200 dark:border-gray-700 bg-white dark:bg-gray-900">
    <Sidebar />
  </aside>
  <main className="flex-1 overflow-y-auto">
    <div className="mx-auto max-w-7xl px-4 sm:px-6 lg:px-8 py-8">
      {children}
    </div>
  </main>
</div>

// ✅ Sticky header with backdrop blur
<header className="sticky top-0 z-50 border-b border-gray-200/80 bg-white/80 backdrop-blur-md dark:border-gray-700/80 dark:bg-gray-900/80">

Loading & Empty States

// Skeleton loader
export function CardSkeleton() {
  return (
    <div className="animate-pulse rounded-xl border border-gray-200 p-4">
      <div className="h-4 w-2/3 rounded bg-gray-200 mb-3" />
      <div className="h-3 w-full rounded bg-gray-100 mb-2" />
      <div className="h-3 w-4/5 rounded bg-gray-100" />
    </div>
  );
}

// Empty state
export function EmptyState({ title, description, action }: EmptyStateProps) {
  return (
    <div className="flex flex-col items-center justify-center py-16 text-center">
      <div className="rounded-full bg-gray-100 p-4 dark:bg-gray-800 mb-4">
        <InboxIcon className="h-8 w-8 text-gray-400" />
      </div>
      <h3 className="text-lg font-semibold text-gray-900 dark:text-gray-100">{title}</h3>
      <p className="mt-2 text-sm text-gray-500 max-w-sm">{description}</p>
      {action && <div className="mt-6">{action}</div>}
    </div>
  );
}

Animations with Framer Motion

// Page transition
const pageVariants = {
  initial: { opacity: 0, y: 8 },
  animate: { opacity: 1, y: 0 },
  exit: { opacity: 0, y: -8 },
};

export function AnimatedPage({ children }: { children: React.ReactNode }) {
  return (
    <motion.div
      variants={pageVariants}
      initial="initial"
      animate="animate"
      exit="exit"
      transition={{ duration: 0.2, ease: 'easeOut' }}
    >
      {children}
    </motion.div>
  );
}

// Staggered list
const container = { animate: { transition: { staggerChildren: 0.05 } } };
const item = { initial: { opacity: 0, y: 20 }, animate: { opacity: 1, y: 0 } };

Accessibility Rules

// ✅ ARIA labels on all interactive elements
<button aria-label="Close dialog" onClick={onClose}>
  <XIcon aria-hidden="true" />
</button>

// ✅ Form accessibility
<label htmlFor="email" className="block text-sm font-medium">Email</label>
<input
  id="email"
  type="email"
  aria-describedby={errors.email ? 'email-error' : undefined}
  aria-invalid={!!errors.email}
/>
{errors.email && <p id="email-error" role="alert" className="text-sm text-red-600">{errors.email}</p>}

// ✅ Focus management in modals
<Dialog>
  <DialogContent onOpenAutoFocus={e => e.preventDefault()}>
    {/* First focusable: close button */}
    <DialogClose ref={closeRef} />
  </DialogContent>
</Dialog>

// ✅ Keyboard navigation
<div role="listbox" aria-labelledby="list-label">
  {options.map(opt => (
    <div
      key={opt.id}
      role="option"
      aria-selected={selected === opt.id}
      tabIndex={0}
      onKeyDown={e => e.key === 'Enter' && onSelect(opt.id)}
    >
      {opt.label}
    </div>
  ))}
</div>

Design Checklist

  • Mobile-first responsive (320px → 1536px)
  • Dark mode support
  • Focus styles visible (not outline: none without alternative)
  • Color contrast ≥ 4.5:1 (text), ≥ 3:1 (large text)
  • Loading states for all async operations
  • Empty states for all lists
  • Error states with helpful messages
  • Hover/active/disabled states on interactive elements
  • Reduced motion query (prefers-reduced-motion)
  • Touch targets ≥ 44×44px on mobile

适合场景

01

用户想查找某类 Agent Skill 时

02

需要根据任务场景推荐可安装能力包时

03

需要对比不同来源的安装命令和来源信息时

能力概览

能力 1

按任务关键词查找相关 Skills

能力 2

展示可复制的安装命令

能力 3

保留来源站点、仓库和原始说明,方便继续核验

能力 4

展示第三方安全扫描或审计结果

安装后应在对应宿主中按原始 README 的触发条件使用;具体调用方式请以来源页面和 README 为准。

平台分布

Codex

32.33%
按下载量换算46

Claude

28.97%
按下载量换算41

Cursor

20.35%
按下载量换算29

Gemini CLI

9%
按下载量换算13

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

只读

该 Skill 主要提供规则、说明或参考内容,本身偏只读;真正读写文件、联网或执行命令仍取决于宿主 Agent 的任务。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。当前只有一个来源,正式发布前建议补源仓库或其他目录站核验。

来源信息

继续浏览同类 Skills