网站导航

最新为 AI 智能体提供 MCP 服务器

由标记驱动的 CSS 编排语言 为开发者与 AI 智能体而设计。

开始使用
npm create @master/css@2.0.0

设计系统

使用统一的类词汇构建现代界面。

主题、令牌、广色域颜色、布局和动态效果均可用类编写,生成的 CSS 也保持可预测。

定义主题令牌

相同的标记,适配明暗主题。

模式切换改变的是令牌值,而不是类名。拖动分隔线,查看当前使用的值。

令牌,统一定义。

在 @theme 中统一定义颜色、间距、圆角和排版,供工具类、组件和模式共同读取。

@theme {  --font-family-sans: "Inter";  --spacing-md: 1rem;   /* p-md */  --spacing-lg: 1.5rem; /* p-lg */  --radius-xl: 0.75rem; /* r-xl */  /* bg-surface-base */  --color-surface-base: light-dark(    var(--color-zinc-0),    var(--color-zinc-95)  );}

布局与动态效果,一起编写。

在需要样式的标记旁,直接编写网格跨距、响应式布局、动画和视图过渡。

点击照片预览过渡效果。

原生 CSS 层叠层

工具类所在的层比组件更靠后,因此标记中的类无需 !important 即可优先应用。

广色域颜色

采用一致分级的 P3 调色板,从深色基调到超出 sRGB 范围的明亮强调色。

编辑器

类字符串再密集,也能清晰阅读。

语言服务根据项目清单补全类,在悬停时显示其 CSS,并在代码中直接标示颜色。

使用方向键浏览文件。

<article class="grid gap-lg p-xl b-solid b(1) b-line-divider r-2xl bg-surface-raised shadow-sm">
<header class="flex items-center justify-between gap-md">
<h3 class="text-lg font-medium fg-text-strong">Usage alerts</h3>
<a class="text-sm font-medium fg-blue-60 fg-blue-70:hover@sm" href="/settings/alerts">Manage</a>
</header>
<p class="text-sm">Email the team before a project reaches its monthly limit.</p>
<ul class="grid gap-xs p-md r-lg bg-surface-base grid-cols(2)@md">
<li class="flex items-center justify-between gap-sm text-sm">
Builds
<span class="px-xs r-md text-xs font-semibold bg-blue-60/.1 (color:#4f46e5)">80%</span>
</li>
<li class="flex items-center justify-between gap-sm text-sm">
Bandwidth
<span class="px-xs r-md text-xs font-semibold bg-surface-raised fg-text-muted">42%</span>
</li>
</ul>
</article>
fg-blue-70:hover@sm CSS
@layer theme {  :root,  :host {    --color-blue-70: oklch(46.26% .3057 266.7)  }}@layer utilities {  @media (width >= 52.125rem) {    .fg-blue-70\:hover\@sm:hover {      color: var(--color-blue-70)    }  }}
令牌 --color-blue-70
自动补全30
fg-text-amber
fg-text-beryl
fg-text-blue
fg-text-body
fg-text-brown
fg-text-crimson
fg-text-cyan
fg-text-disabled

:

渲染

一套语法,适配各种交付方式。

默认交付静态 CSS,也可将其预渲染到 HTML 中,或在浏览器内生成。类的写法保持不变。

比较渲染模式
index.html模板
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>静态渲染</title>
<link rel="stylesheet" href="/base.css">
<link rel="stylesheet" href="">
</head>
<body>
<article class="demo p-lg r-xl
bg-amber-10 shadow-sm">
<h1>静态渲染</h1>
…
</article>
<script src="/app.js"></script>
</body>
</html>
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>渐进式渲染</title>
<link rel="stylesheet" href="/base.css">
<style id=""
data-master-css-hydration-manifest="…">
/* … */
</style>
</head>
<body>
<article class="demo p-lg r-xl
bg-amber-10 shadow-sm">
<h1>渐进式渲染</h1>
…
</article>
<script src="/app.js"></script>
</body>
</html>
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>运行时渲染</title>
<link rel="stylesheet" href="/base.css">
<script type="module" src="/main.js"></script>
<style id="">
/* CSSOM ↓ */
</style>
</head>
<body>
<article class="demo p-lg r-xl
bg-amber-10 shadow-sm">
<h1>运行时渲染</h1>
…
</article>
<script src="/app.js"></script>
</body>
</html>
CSSCSSOMCSSOM
/* Shared styles … */
@layer utilities {
.bg-amber-10 {
background-color: var(--color-amber-10);
}
.r-xl { border-radius: var(--radius-xl); }
.shadow-sm { box-shadow: var(--shadow-sm); }
.p-lg { padding: var(--spacing-lg); }
}
/* Shared styles … */
@layer utilities {
.bg-amber-10 {
background-color: var(--color-amber-10);
}
.r-xl { border-radius: var(--radius-xl); }
.shadow-sm { box-shadow: var(--shadow-sm); }
.p-lg { padding: var(--spacing-lg); }
}
/* Shared styles … */
@layer utilities {
.bg-amber-10 {
background-color: var(--color-amber-10);
}
.r-xl { border-radius: var(--radius-xl); }
.shadow-sm { box-shadow: var(--shadow-sm); }
.p-lg { padding: var(--spacing-lg); }
}
预览实时

Scan complete class names in your source.Write the matching rules to app.css.Load the stylesheet before the page is painted.Reuse the rule already shipped in app.css.

Read the classes in the server-rendered HTML.Embed the first-load CSS in the page.Paint with the CSS that came with the HTML.Start the deferred engine for an uncovered class.

Read the page’s classes in the browser.Start the runtime and create a stylesheet.Generate and apply the rules in the browser.Insert the new rule into the browser stylesheet.

CSS 大小

使用真实文档页面测量。

比较各页面加载的 CSS,包括未压缩和 Brotli 压缩后的大小。Master CSS 只添加页面用到的工具类,其余是各站点自身的样式。

查看基准测试详情

每个文档页面的 CSS · 2026-11-04

  1. Master CSS
    110.4 kB
  2. Angular
    151.8 kB 1.4×
  3. Vue.js
    186.3 kB 1.7×
  4. Material UI
    277.4 kB 2.5×
  5. Bootstrap
    294 kB 2.7×
  6. Next.js
    479.9 kB 4.3×
  7. Tailwind CSS
    657.7 kB 6.0×
0200400600800 kB

静态检查

根据项目检查类。

编辑器中的 ESLint、脚本中的 CLI 和智能体使用的 MCP 服务器,依据相同的规则检查并修复类。

查看全部检查规则
button.html ESLint 就绪
<button class="inline-flex (color:12px)">
Save changes
</button>

@master/css/no-invalid-classes 1:28

CLI @master/css-cli 就绪
$ npx @master/css-cli lint --format stylish1:28error@master/css/no-invalid-classes
MCP 服务器 @master/css-mcp 就绪
→ mastercss_lint_content button.html"ruleId": "no-invalid-classes","severity": "error","loc": { "start": { "line": 1, "column": 28 } }

AI 智能体

让智能体自行检查更改。

MCP 服务器向编程智能体提供项目清单与检查规则,使其能够检查自己的编辑,并以差异形式交付修复。

配置 MCP 服务器
会话@master/css-mcp
plan-card.html
  1. Style the plan card with our spacing and color tokens.

  2. I will look up the spacing tokens in the project manifest first.

  3. mastercss_manifest_query 12 个令牌
    { "kind": "token", "namespace": "spacing" } spacing-4xs … spacing-5xl
  4. 编辑plan-card.html+3 −3
  5. mastercss_inspect_class matched
    { "className": "bg-surface-raised" } background-color: var(--color-surface-raised)
  6. mastercss_lint_project 4 个问题
    { "patterns": ["plan-card.html"] } 4 个警告,其中 4 个可修复
  7. mastercss_preview_fixes 1 file changed
    { "patterns": ["plan-card.html"] } confirmToken "Vq3zK8…Ug6J"
  8. The fix sorts the classes and removes mt-md, which mt-sm overrides. Apply it?

  9. Apply it.

  10. mastercss_apply_preview 已应用
    { "confirmToken": "Vq3zK8…Ug6J" } 哈希匹配,文件已写入
  11. mastercss_lint_project 未发现问题
    { "patterns": ["plan-card.html"] } 0 个问题
  12. Applied. plan-card.html passes lint with no problems.

1<article class="grid gap-md p-lg r-xl bg-surface-raised">
2 <h3 class="mt-sm text-xl font-medium">Pro plan</h3>
3 <p class="text-sm fg-text-muted">Unlimited projects</p>
4</article>
输出 mastercss_lint_project

未发现问题

plan-card.html
哈希匹配,文件已写入sha256 4e0a1aab…c9c0

工作流

适配你的框架与构建工具。

同一份项目清单驱动每个集成、monorepo 应用和路由的 CSS;比较快照即可查看更改的影响范围。

按框架安装

框架集成

所有框架集成和 CLI 都加载同一份项目清单,使构建与编辑器的结果保持一致。

index.css

理解 monorepo 项目

每个文件遵循离它最近的项目,因此同一个类可以在不同应用中解析为不同结果。

index.css

路由级样式

路由样式表可以使用共用令牌、混入和自定义媒体,而无需复制全局规则。

index.css
.hero { display: grid; gap: var(--spacing-5xl); @media (--md) { grid-auto-flow: column; }}
pricing.css
.plan { padding: var(--spacing-lg); @apply --raised; @media (--md) { padding: var(--spacing-5xl); }}
blog.css
.post { max-width: 42rem; padding: var(--spacing-lg); @media (--md) { @apply --raised; }}
--spacing-5xl--spacing-lg--raised--md

追踪更改

修改令牌并比较快照,查看受影响的类、文件和输出。

从一串类名开始, 逐步构建完整的设计系统。

开始使用
npm create @master/css@2.0.0