📦plugin87 / ux-ui-agent-skills
← 返回首页
Turn Claude into a senior design architect: DTCG tokens, 52 components, WCAG 2.2 AA-AAA, 138 design systems, any-framework code, and 50 objective gates that fail the build instead of faking success.
⚖️ MIT#accessibility#ai-agents#claude#claude-code#claude-skills🌐 plugin87.github.io📅 创建于 2026-03-16🔄 更新于 2026-10-27
🔗 GitHub JavaScript

📄 仓库 README

在 GitHub 查看 ↗
来自 GitHub 仓库自述文件 · 版权归原作者所有
# UX/UI Agent Skills *aka **XIAS*** ### Design-system doctrine for coding agents, and **52 gates** that check what they build instead of taking their word for it. Instructions, design tokens, 26 runnable skills and 2,144 design systems (2,087 of them measured from the live site) that make a coding agent design to a senior standard, in **any framework** and against **any design system**. Then the gates measure what it built.
XIAS: design-system doctrine for coding agents. 52 objective gates, 34 of which open a real browser: WCAG contrast in every state, axe roles and landmarks, keyboard, target size, reduced motion, no horizontal overflow at 280, token by intent, screen economy. 2,144 design systems, 52 component specs, 26 runnable skills, 14 DTCG token files, 16 framework adapters. Claude Code, Codex, Cursor, Copilot, Gemini CLI, Antigravity, Aider, MCP.

plugin87/ux-ui-agent-skills | Trendshift

[![Version](https://img.shields.io/badge/version-3.0.0-6366f1?style=for-the-badge)](https://github.com/plugin87/ux-ui-agent-skills/releases) [![License: MIT](https://img.shields.io/badge/license-MIT-22c55e?style=for-the-badge)](#license) [![WCAG 2.2 AA→AAA](https://img.shields.io/badge/WCAG-2.2_AA→AAA-a855f7?style=for-the-badge)](#-accessibility-standards)
[![npm](https://img.shields.io/npm/v/ux-ui-agent-skills?style=flat-square&logo=npm&logoColor=white&color=cb3837)](https://www.npmjs.com/package/ux-ui-agent-skills) [![npm downloads](https://img.shields.io/npm/dt/ux-ui-agent-skills?style=flat-square&logo=npm&logoColor=white&color=cb3837)](https://www.npmjs.com/package/ux-ui-agent-skills) ![Tokens](https://img.shields.io/badge/Design_Tokens-DTCG-fbbf24?style=flat-square) ![Skills](https://img.shields.io/badge/runnable_skills-26-14b8a6?style=flat-square) ![Gates](https://img.shields.io/badge/objective_gates-52-16a34a?style=flat-square) [![Live demo](https://img.shields.io/badge/live_demo-open-0ea5e9?style=flat-square)](https://plugin87.github.io/ux-ui-agent-skills/) ![Design Systems](https://img.shields.io/badge/design_systems-2144-f97316?style=flat-square) ![Frameworks](https://img.shields.io/badge/frameworks-any-8b5cf6?style=flat-square) ![Adapters](https://img.shields.io/badge/framework_adapters-16-22d3ee?style=flat-square) ![React 19](https://img.shields.io/badge/React-19-60a5fa?style=flat-square&logo=react) ![Next.js 15](https://img.shields.io/badge/Next.js-15-000000?style=flat-square&logo=nextdotjs) ![SwiftUI 6](https://img.shields.io/badge/SwiftUI-6-f472b6?style=flat-square&logo=swift) ![Tailwind v4](https://img.shields.io/badge/Tailwind-v4-38bdf8?style=flat-square&logo=tailwindcss)

Current release v3.0.0 · Changelog · No build tools, dependencies, or runtime: a pure instruction and knowledge layer for AI agents.


The output, rendered

Not a mockup. These are screenshots of the files in examples/, taken by node scripts/screenshot_docs.mjs from the same HTML the 52 gates measure, so what you see below is what the gate run passed, in both themes.

Click through them yourself: plugin87.github.io/ux-ui-agent-skills. There are 56 live pages (twenty whole-product screens, five websites from a product launch to a Thai public service page, every component harness, both reference screens and an iPhone Duo simulator), with a theme toggle. No install, no clone.

Atlas revenue console in light theme: sidebar navigation, a hero net-recurring-revenue figure at 2.48 million with a weekly bar chart, retention and churn cards, a donut of revenue by plan, an account ranking, regional sparklines, a sortable renewals table and an activity feed

The same Atlas console in dark theme, rendered from the same token theme with no per-page palette

Meridian Terminal: a trading desk screen with a market ticker, candlestick chart with volume and moving average, order book with depth bars, cumulative depth curve, time and sales tape, watchlist sparklines, stacked area allocation, waterfall attribution, bubble chart and a correlation matrix

Meridian Terminal is the density test: ten chart types on one screen: candlestick, volume, moving average, depth, order book, tape, sparklines, stacked area, waterfall, bubble and a correlation matrix. Every one of them is inline SVG drawn from the same tokens, with no chart library. Open it live. Build one yourself with /data-dashboard.

Atlas is one HTML file in examples/showcase/, built only from the kit's tokens and rules: the hero figure leads at 3x the body size, the three breakdowns are deliberately three different shapes rather than three identical cards, the range tabs move the numbers, and the table headers really sort. Open it live.

Reference app in light theme: an Analytics screen led by one hero revenue metric, three smaller stats beneath it, a settings form, and a red Delete account action The same Analytics screen in dark theme, rendered from the same token theme with no per-page palette
Button harness in light theme showing primary, disabled, loading, secondary, danger and toggle states side by side The same button states in dark theme, with the destructive action still wearing the danger variant

One theme, two modes, no per-page palette. The destructive action wears the danger variant in both. Loading keeps full strength and swaps in a spinner instead of borrowing the disabled dimming. Every one of those is a rule in CLAUDE.md that a gate or a critic enforces.


What the gates actually catch

Left: the same dashboard written the way a model writes it when nothing stops it: the indigo-to-purple gradient, four equal cards with no focal point, emoji as icons, one radius and one shadow everywhere, grey-on-white body text, and a blue Delete Account. Right: the reference app in this repo.

A generated-looking analytics dashboard: purple gradient header with emoji, four identical stat cards, grey low-contrast labels, tiny icon buttons, and a blue Delete Account button
Statistical defaults
The same dashboard built to the kit's rules: one hero revenue metric leading, three smaller stats, a settings panel, and a red Delete account action
Built to the rules

The difference is not a matter of opinion, and that is the point. The page on the left is tests/fixtures/bad/slop-screen.html; here is what the gates say about it:

Gate Verdict on the left-hand page
REAL-render WCAG x <h1> "Analytics Dashboard" 1.00:1 (need 3): white text on a gradient has no measurable background
State-aware WCAG x default "Save Changes" 1.00:1 (need 4.5) [rgb(255,255,255) on rgb(255,255,255)]: 6 states below AA
Target size (2.5.8) x button.icon-btn is 15.3x16 (min 24x24)
Responsive x @280px overflow +820px (widest: div.card)
axe-core SERIOUS target-size
Slop tells HIGH: hardcoded indigo-purple gradient, single radius, one flat shadow, #000 on #fff
Taste audit HIGH: biggest heading 24px vs 14px body = 1.7x, not a display scale
Token by intent x "Delete Account" is destructive but filled with rgb(99, 102, 241) (hue 239deg, not a danger colour)
No emoji x slop-screen.html:55: emoji/pictograph: a chart glyph in the <h1>
No hardcoded values FAIL: 63 hardcoded value(s)

Ten gates reject it, none of them on a matter of taste. The right-hand page passes all 52.

The last row is there because building this comparison broke a gate open. lint_intent originally read that blue Delete Account as fine: it resolved "primary" and "danger" from the page's own CSS variables, and a page with no tokens resolved neither, so it skipped the page and reported zero intent-bearing controls. An untokenised page is precisely where intent gets picked by convenience, so the gate no longer looks away: a destructive label filled with a saturated colour outside the danger hue range is wrong-intent with or without a theme. Re-checked against every example in both themes afterwards: no false positives.

tests/meta/browser-gates.test.mjs pins every claim in this table, so it cannot rot.


It was run blind, and it came back as rework

Two subagents were handed a brief and a project scaffolded by ux-ui-skills new, which installs the kit and ships no example screens, and nothing else. No hints, no warning that anything would be scored, no access to the conversation that built the kit. They met CLAUDE.md and .claude/rules/ the way a new user's agent does.

Both scored 14/14 on an independent run of evals/run.mjs, scored here rather than self-reported. The rules transfer across a cold start.

And the two runs cost the kit seven defects that four in-session runs never hit, because a familiar run keeps reaching for a finished demo theme instead of the template a real user

📈 近 7 天 Star 趋势

每日新增 Star(柱)与累计 Star(线)· 数据来自 GitHub

🏆 排名变化趋势

在各榜单中的排名历史(数字越小越靠前)

📋 历史上榜记录

每次快照的详细数据
日期 榜单 排名 周期新增 总 STAR