Design Constraint Validator

io.github.CseperkePapp由 GitHub 账号 CseperkePapp 发布v2.3.0更新于 Oct 24, 2026

Validate design tokens for accessibility, scales, and design-system constraint consistency.

已验证STDIO仅桌面开发者工具媒体与设计

概览

AI 生成的概览

一个本地 MCP 服务器,让助手按无障碍、比例和阈值约束校验设计令牌,并解释校验结果。

可以做什么
校验设计令牌(内联或来自文件),检查 WCAG 对比度、阈值、顺序与跨轴约束,可输出汇总表,违规时以非零状态退出。解释单个令牌的来源、别名、依赖项与被依赖项及别名链。导出令牌依赖图的节点与边。列出给定输入下生效的约束。把违规转换为通俗文字说明及机器可读事实。为违规计算一个经过验证的满足值,但不写入任何内容。
适用场景
适合在设计系统或令牌集上工作时使用,让助手检查对比度、字体与间距层级以及策略阈值,并解释某个令牌为何不通过。它关注值之间的关系,而不是 JSON 结构本身。
运行要求
作为本地进程通过 stdio 运行,从 npm 包 design-constraint-validator 安装;需要 Node.js 18 或更高版本并支持 ESM。未声明认证、环境变量或请求头。它从工作目录读取令牌 JSON 和可选的配置文件(如 dcv.config.json)。
安装前请注意
六个工具均被描述为只读并返回 JSON,建议不会被自动应用,令牌的修改需由你自行完成。内置的 WCAG 与阈值默认值针对随附示例的令牌 id,校验自己的令牌名称时应将其禁用。npm 上单独的 dcv 命令名属于无关的包,一次性运行请使用完整包名。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Design Constraint Validator,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

Design Constraint Validator (DCV)

Mathematical constraint validator for design systems — ensuring consistency, accessibility, and logical coherence.

[npm version] [npm downloads] [CI] [SBOM] [Supply Chain Security] [License: MIT] [Node]

Design Constraint Validator (DCV) validates design constraints across token sets and styles:

  • ✅ Accessibility: WCAG text contrast, perceptual lightness floor/ceilings
  • ✅ Order & Monotonicity: increasing typography scales, spacing hierarchies
  • ✅ Thresholds & Policies: min/max ranges, cross-axis guards (size × weight × contrast)
  • ✅ Graph Intelligence: Hasse/poset graph export; "why" explanations with implicated edges

This is not a schema linter; it's a reasoning validator for values and relationships.

[DCV at a glance — one engine with three entry points (CLI, Library API, MCP server) over a shared validation core that flattens tokens, builds the engine, loads constraints, runs plugins, and reports errors/warnings.]

[DCV validation pipeline — token files → flatten & resolve → build engine → load constraints → run plugins → report results; CLI, API, and MCP all use the same flow.]


Installation

bash
# Local (recommended)npm i -D design-constraint-validator
# One-off run, no install (the bin name `dcv` belongs to an unrelated package)npx design-constraint-validator --help

After a local install, the shorter dcv bin is available (e.g. npx dcv --help).

Requirements: Node.js ≥ 18.x (ESM)


Quick Start

DCV validates your tokens against your constraints. From an empty directory:

bash
# 1. Your design tokens (DTCG-style "$value")cat > tokens.json <<'JSON'{  "color": {    "text": { "$value": "#888888" },    "bg":   { "$value": "#999999" }  }}JSON
# 2. Your constraints — auto-discovered as dcv.config.json in the cwdcat > dcv.config.json <<'JSON'{  "constraints": {    "enableBuiltInWcagDefaults": false,    "enableBuiltInThreshold": false,    "wcag": [      { "foreground": "color.text", "background": "color.bg", "ratio": 4.5, "description": "Body text on background" }    ]  }}JSON
# 3. Validate (positional path or --tokens; exits non-zero on violations)npx design-constraint-validator validate tokens.json --summary table
# Explain one token (the tokenId is required)npx design-constraint-validator why color.text --tokens tokens.json --format table
# Export the dependency graphnpx design-constraint-validator graph --tokens tokens.json --format mermaid > graph.mmd

These one-offs use the full package name because the bare dcv bin name on npm belongs to an unrelated package. After npm i -D design-constraint-validator, use the shorter npx dcv ….

Example output (validate):

text
validate: 1 error(s), 0 warning(s)ERROR wcag-contrast  color.text|color.bg @ Body text on background — Contrast 1.24:1 < 4.5:1scope   rules  warnings  errors------  -----  --------  ------global  1      0         1

Exit code is 1 when violations are found, 0 when clean (use --fail-on off to always exit 0). The built-in WCAG/threshold defaults target the bundled example token ids, so disable them (as above) when validating your own token names.


Programmatic API

ts
import { validate } from 'design-constraint-validator';
// Synchronous. Point at files, or pass `tokens` / `constraints` inline.const result = validate({  tokensPath: './tokens.json',  configPath: './dcv.config.json', // omit to auto-discover dcv.config.json in the cwd});
if (!result.ok) {  for (const v of result.violations) {    console.log(`[${v.ruleId}] ${v.message}`);  }  process.exitCode = 1;}

See API Reference for complete programmatic usage.


Use from AI agents (MCP)

DCV ships a second binary, dcv-mcp, that exposes the validator over MCP stdio for agent clients. Add it to a Claude Desktop or generic MCP client config like this:

json
{  "mcpServers": {    "dcv": {      "command": "npx",      "args": ["-y", "--package", "design-constraint-validator", "dcv-mcp"]    }  }}

The server exposes six read-only, JSON-returning tools:

  • validate - validate inline tokens or a tokensPath against inline constraints or a config file.
  • why - explain provenance, aliases, dependencies, dependents, and alias chain for one token id.
  • graph - return token dependency nodes and edges.
  • list-constraints - enumerate the active constraints (WCAG pairs, thresholds, order/lightness scales, cross-axis) for the given input.
  • explain - turn a violation into plain-English text plus machine-readable facts.
  • suggest-fix - compute a verified satisfying value for a violation (WCAG color, threshold/monotonic boundary) without writing anything.

The three derivation tools (list-constraints, explain, suggest-fix) stay read-only — they return suggestions; applying them is up to you (dcv set / dcv patch). See AI Guide for the full agent loop.

Tool failures are returned as structured JSON: { "ok": false, "error": { "code": "...", "message": "..." } }.


Documentation

For Everyone

For Users

For Developers

Additional Resources


Why Constraints, Not Conventions?

Conventional linters catch schema issues ("has a value, has a type"). DCV enforces relationships that matter to users and brand integrity:

  • Legible contrast under all themes and states
  • Proper hierarchical spacing/typography (monotonic scales)
  • Coherent cross-axis behavior (e.g., weight increases with size where needed)
  • Policy conformance (AA/AAA, internal thresholds)

This transforms tokens from "bags of numbers" into a formal design system.

[What DCV checks — five plugin families: WCAG contrast, monotonic order, lightness ordering, thresholds, and cross-axis rules; every plugin returns a structured issue (rule, level, message, involved tokens, metadata).]


Comparison: Schema Linters vs DCV

FeatureSchema LintersDCV
ValidatesJSON structure, typesMathematical relationships, accessibility
CatchesMissing fields, wrong typesContrast violations, hierarchy breaks
PurposeFormat complianceDesign system integrity
ExamplesDTCG schema validatorWCAG checks, monotonic scales

[Mathematical Integrity for Design Systems — the DCV engine: the three core constraint types (accessibility & contrast, monotonic & lightness ordering, thresholds & cross-axis rules), one engine with three interfaces (CLI, library API, MCP server), and the difference between schema linters (format compliance) and DCV (mathematical relationships / design-system integrity).]

DCV is not affiliated with Anima's design-tokens-validator (schema-focused).


Input Formats

DCV accepts token JSON (flat or nested) and optional policy JSON. Adapters normalize common ecosystems:

  • Style Dictionary - See examples/style-dictionary/
  • Tokens Studio JSON - See examples/tokens-studio/
  • DTCG (Design Tokens Community Group) — reads the 2025.10 stable spec (structured sRGB colors, structured dimensions, {alias} references, $extensions passthrough; non-sRGB spaces warn rather than mis-calculate; composite types out of scope). See examples/dtcg/

Full adapter documentation: Adapters


DCV & DecisionThemes

DCV is the standalone validation engine — use it for any token system.

DecisionThemes (coming 2026) is a complete design system framework built on DCV:

  • 5-axis decision model (Tone, Emphasis, Size, Density, Shape)
  • VT/DT pipeline (Value Themes + Decision Themes → deterministic CSS configs)
  • Studio UI + Hub marketplace for sharing Decision Systems

DCV powers DecisionThemes' validation layer — but works perfectly standalone. Preview: www.decisionthemes.com


Method & Prior Art

The Design Constraint Validator engine is based on a theming and validation method published as defensive prior art.

To understand the underlying architecture (Decision Themes / Value Themes, deterministic compute, post-compute validation and receipts):

These documents keep the method openly implementable and prevent patent lock-up.


Security & Supply Chain

SBOM (Software Bill of Materials)

DCV generates CycloneDX-compliant SBOMs for supply chain transparency:

  • CI Builds: SBOM artifacts on every CI run (90-day retention)
  • Version tags: SBOM artifacts for release tags
  • GitHub Releases: SBOM files (JSON + XML) attached when a GitHub Release is created
  • Manual: Run npx @cyclonedx/cyclonedx-npm in project root

Download:


Roadmap

  • Plugin API for custom constraints
  • VS Code diagnostics (inline explain)
  • Cross-axis packs (typography × weight × contrast)
  • Signed / attestable receipts — dcv validate --receipt already emits environment + input content hashes today; cryptographic signing is the roadmap part
  • UI graph explorer (node inspector, violations focus)

Philosophy

Constraints, not conventions.

Design systems need mathematical guarantees. This validator:

  1. Enforces relationships - Typography hierarchies, color progressions
  2. Validates accessibility - WCAG contrast with alpha compositing
  3. Explains violations - Provenance tracing shows why rules fail
  4. Scales with complexity - Incremental validation of 1000s of tokens

Related Projects

This is the core validation engine. For a complete decision-driven design system with a 5-axis framework (Tone, Emphasis, Size, Density, Shape) and theme configurator UI, see DecisionThemes (coming soon).


Contributing

Contributions welcome! See CONTRIBUTING.md


License

MIT © Cseperke Papp

来源:README.md,提交 be0a35f

工具

0
SourceWeft 尚未在沙箱中启动过该软件包,因此其工具未知。

版本历史

1
  1. v2.3.0最新Sep 16, 2026

评分

已满足适用检查项的 50%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分

    请保持端点能够响应 MCP 握手;SourceWeft 每 30 天探测一次。

  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具15 分

    请让服务器在无凭据时响应 tools/list,或发布可在沙箱中无凭据启动的软件包。

  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分